{"version":3,"file":"plugin.mjs","sources":["../../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js","../../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/index.js","../../../node_modules/.pnpm/@tediousjs+connection-string@0.5.0/node_modules/@tediousjs/connection-string/lib/parser/connection-string.js","../../../node_modules/.pnpm/@tediousjs+connection-string@0.5.0/node_modules/@tediousjs/connection-string/lib/parser/sql-connection-string.js","../../../node_modules/.pnpm/@tediousjs+connection-string@0.5.0/node_modules/@tediousjs/connection-string/lib/builder/index.js","../../../node_modules/.pnpm/@tediousjs+connection-string@0.5.0/node_modules/@tediousjs/connection-string/lib/index.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/TimeoutError.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/PromiseInspection.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/utils.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/PendingOperation.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/Resource.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/Pool.js","../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/tarn.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/utils.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/mssql-error.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/connection-error.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/datatypes.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/table.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/shared.js","../../../node_modules/.pnpm/rfdc@1.3.1/node_modules/rfdc/index.js","../../../node_modules/.pnpm/rfdc@1.3.1/node_modules/rfdc/default.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/prepared-statement-error.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/request-error.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/transaction-error.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/error/index.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/base/connection-pool.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/global-connection.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/base/prepared-statement.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/base/request.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/isolationlevel.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/base/transaction.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/base/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/tracking-buffer/writable-tracking-buffer.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/token.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/bulk-load.js","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/cache/serializer/Serializer.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/Constants.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/AuthErrorCodes.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/AuthError.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/ClientAuthErrorCodes.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/ClientAuthError.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/crypto/ICrypto.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/logger/Logger.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/packageMetadata.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/AuthorityOptions.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/account/AuthToken.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/TimeUtils.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/cache/utils/CacheHelpers.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/ClientConfigurationErrorCodes.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/ClientConfigurationError.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/StringUtils.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/request/ScopeSet.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/account/ClientInfo.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/account/AccountInfo.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/AuthorityType.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/account/TokenClaims.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/ProtocolMode.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/UrlUtils.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/url/UrlString.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/AuthorityMetadata.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/cache/CacheManager.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/config/ClientConfiguration.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/ServerError.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/network/ThrottlingUtils.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/network/NetworkManager.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/account/CcsCredential.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/constants/AADServerParamKeys.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/request/RequestValidator.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/FunctionWrappers.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/RegionDiscovery.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/Authority.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/authority/AuthorityFactory.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/client/BaseClient.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthErrorCodes.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/utils/ProtocolUtils.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/response/ResponseHandler.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/client/RefreshTokenClient.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/client/SilentFlowClient.mjs","../../../node_modules/.pnpm/@azure+msal-common@14.6.1/node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/cache/serializer/Deserializer.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/utils/Constants.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/utils/NetworkUtils.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/network/HttpClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/config/Configuration.mjs","../../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","../../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","../../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/crypto/GuidGenerator.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/utils/EncodingUtils.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/crypto/HashUtils.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/crypto/PkceGenerator.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/crypto/CryptoProvider.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/cache/NodeStorage.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/cache/TokenCache.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/packageMetadata.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/error/NodeAuthError.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/UsernamePasswordClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/ClientApplication.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/network/LoopbackClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/DeviceCodeClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/PublicClientApplication.mjs","../../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../../../node_modules/.pnpm/jws@3.2.2/node_modules/jws/lib/data-stream.js","../../../node_modules/.pnpm/buffer-equal-constant-time@1.0.1/node_modules/buffer-equal-constant-time/index.js","../../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","../../../node_modules/.pnpm/ecdsa-sig-formatter@1.0.11/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","../../../node_modules/.pnpm/jwa@1.4.1/node_modules/jwa/index.js","../../../node_modules/.pnpm/jws@3.2.2/node_modules/jws/lib/tostring.js","../../../node_modules/.pnpm/jws@3.2.2/node_modules/jws/lib/sign-stream.js","../../../node_modules/.pnpm/jws@3.2.2/node_modules/jws/lib/verify-stream.js","../../../node_modules/.pnpm/jws@3.2.2/node_modules/jws/index.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/decode.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/JsonWebTokenError.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/NotBeforeError.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/TokenExpiredError.js","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/timespan.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/internal/constants.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/internal/debug.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/internal/re.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/internal/parse-options.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/internal/identifiers.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/classes/semver.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/parse.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/valid.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/clean.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/inc.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/diff.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/major.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/minor.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/patch.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/prerelease.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/compare.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/rcompare.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/compare-loose.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/compare-build.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/sort.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/rsort.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/gt.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/lt.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/eq.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/neq.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/gte.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/lte.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/cmp.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/coerce.js","../../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/iterator.js","../../../node_modules/.pnpm/yallist@4.0.0/node_modules/yallist/yallist.js","../../../node_modules/.pnpm/lru-cache@6.0.0/node_modules/lru-cache/index.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/classes/range.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/classes/comparator.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/functions/satisfies.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/to-comparators.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/max-satisfying.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/min-satisfying.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/min-version.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/valid.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/outside.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/gtr.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/ltr.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/intersects.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/simplify.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/ranges/subset.js","../../../node_modules/.pnpm/semver@7.6.0/node_modules/semver/index.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/lib/psSupported.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/verify.js","../../../node_modules/.pnpm/lodash.includes@4.3.0/node_modules/lodash.includes/index.js","../../../node_modules/.pnpm/lodash.isboolean@3.0.3/node_modules/lodash.isboolean/index.js","../../../node_modules/.pnpm/lodash.isinteger@4.0.4/node_modules/lodash.isinteger/index.js","../../../node_modules/.pnpm/lodash.isnumber@3.0.3/node_modules/lodash.isnumber/index.js","../../../node_modules/.pnpm/lodash.isplainobject@4.0.6/node_modules/lodash.isplainobject/index.js","../../../node_modules/.pnpm/lodash.isstring@4.0.1/node_modules/lodash.isstring/index.js","../../../node_modules/.pnpm/lodash.once@4.1.1/node_modules/lodash.once/index.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/sign.js","../../../node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/index.js","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/ClientAssertion.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/ClientCredentialClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/OnBehalfOfClient.mjs","../../../node_modules/.pnpm/@azure+msal-node@2.6.2/node_modules/@azure/msal-node/dist/client/ConfidentialClientApplication.mjs","../../../node_modules/.pnpm/@azure+logger@1.0.4/node_modules/@azure/logger/dist-esm/src/log.js","../../../node_modules/.pnpm/@azure+logger@1.0.4/node_modules/@azure/logger/dist-esm/src/debug.js","../../../node_modules/.pnpm/@azure+logger@1.0.4/node_modules/@azure/logger/dist-esm/src/index.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/errors.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/logging.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/constants.js","../../../node_modules/.pnpm/@azure+abort-controller@1.1.0/node_modules/@azure/abort-controller/dist-esm/src/AbortSignal.js","../../../node_modules/.pnpm/@azure+abort-controller@1.1.0/node_modules/@azure/abort-controller/dist-esm/src/AbortController.js","../../../node_modules/.pnpm/@azure+abort-controller@2.0.0/node_modules/@azure/abort-controller/dist-esm/src/AbortError.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/createAbortablePromise.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/delay.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/random.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/object.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/error.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/uuidUtils.native.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/uuidUtils.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/checkEnvironment.js","../../../node_modules/.pnpm/@azure+core-util@1.7.0/node_modules/@azure/core-util/dist-esm/bytesEncoding.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/utils.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/processMultiTenantRequest.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/tenantIdUtils.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/interfaces.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/utils.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/serializer.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/pipeline.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/log.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/sanitizer.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/logPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/redirectPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/userAgentPlatform.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/constants.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/userAgent.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/userAgentPolicy.js","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/typeGuards.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/file.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/concat.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/multipartPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/decompressResponsePolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/helpers.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/retryStrategies/throttlingRetryStrategy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/retryStrategies/exponentialRetryStrategy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/retryPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/defaultRetryPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/httpHeaders.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/formDataPolicy.js","../../../node_modules/.pnpm/agent-base@6.0.2/node_modules/agent-base/dist/src/promisify.js","../../../node_modules/.pnpm/agent-base@6.0.2/node_modules/agent-base/dist/src/index.js","../../../node_modules/.pnpm/https-proxy-agent@5.0.1/node_modules/https-proxy-agent/dist/parse-proxy-response.js","../../../node_modules/.pnpm/https-proxy-agent@5.0.1/node_modules/https-proxy-agent/dist/agent.js","../../../node_modules/.pnpm/https-proxy-agent@5.0.1/node_modules/https-proxy-agent/dist/index.js","../../../node_modules/.pnpm/@tootallnate+once@2.0.0/node_modules/@tootallnate/once/dist/index.js","../../../node_modules/.pnpm/http-proxy-agent@5.0.0/node_modules/http-proxy-agent/dist/agent.js","../../../node_modules/.pnpm/http-proxy-agent@5.0.0/node_modules/http-proxy-agent/dist/index.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/proxyPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/setClientRequestIdPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/tlsPolicy.js","../../../node_modules/.pnpm/@azure+core-tracing@1.0.1/node_modules/@azure/core-tracing/dist-esm/src/tracingContext.js","../../../node_modules/.pnpm/@azure+core-tracing@1.0.1/node_modules/@azure/core-tracing/dist-esm/src/instrumenter.js","../../../node_modules/.pnpm/@azure+core-tracing@1.0.1/node_modules/@azure/core-tracing/dist-esm/src/tracingClient.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/inspect.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/restError.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/tracingPolicy.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/createPipelineFromOptions.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/nodeHttpClient.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/defaultHttpClient.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/pipelineRequest.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/util/tokenCycler.js","../../../node_modules/.pnpm/@azure+core-rest-pipeline@1.14.0/node_modules/@azure/core-rest-pipeline/dist-esm/src/policies/bearerTokenAuthenticationPolicy.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/operationHelpers.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/deserializationPolicy.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/interfaceHelpers.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/serializationPolicy.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/pipeline.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/httpClientCache.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/urlHelpers.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/log.js","../../../node_modules/.pnpm/@azure+core-client@1.8.0/node_modules/@azure/core-client/dist-esm/src/serviceClient.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/identityTokenEndpoint.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/tracing.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/constants.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/utils.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/client/identityClient.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/regionalAuthority.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalNodeCommon.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/visualStudioCodeCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/plugins/consumer.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2017.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/cloudShellMsi.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/imdsMsi.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/arcMsi.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClientAssertion.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/clientAssertionCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/workloadIdentityCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/tokenExchangeMsi.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/fabricMsi.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/appServiceMsi2019.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/managedIdentityCredential/index.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/scopeUtils.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/azureCliCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/util/processUtils.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/azurePowerShellCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/chainedTokenCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClientCertificate.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/clientCertificateCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalClientSecret.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/clientSecretCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalUsernamePassword.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/usernamePasswordCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/environmentCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/azureDeveloperCliCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/defaultAzureCredential.js","../../../node_modules/.pnpm/is-docker@2.2.1/node_modules/is-docker/index.js","../../../node_modules/.pnpm/is-wsl@2.2.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/define-lazy-prop@2.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/open@8.4.2/node_modules/open/index.js","../../../node_modules/.pnpm/stoppable@1.1.0/node_modules/stoppable/lib/stoppable.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalOpenBrowser.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/interactiveBrowserCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalDeviceCode.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/deviceCodeCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalAuthorizationCode.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/authorizationCodeCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/msal/nodeFlows/msalOnBehalfOf.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/credentials/onBehalfOfCredential.js","../../../node_modules/.pnpm/@azure+identity@3.4.2/node_modules/@azure/identity/dist-esm/src/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/debug.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/errors/abort-error.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/sender.js","../../../node_modules/.pnpm/node-abort-controller@3.1.1/node_modules/node-abort-controller/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/errors/timeout-error.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/utils/with-timeout.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/instance-lookup.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/transient-error-lookup.js","../../../node_modules/.pnpm/sprintf-js@1.1.3/node_modules/sprintf-js/src/sprintf.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/packet.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/prelogin-payload.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/tds-versions.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/login7-payload.js","../../../node_modules/.pnpm/js-md4@0.3.2/node_modules/js-md4/src/md4.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/ntlm-payload.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/errors.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/always-encrypted/types.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/request.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/all-headers.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/rpcrequest-payload.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/sqlbatch-payload.js","../../../node_modules/.pnpm/native-duplexpair@1.0.0/node_modules/native-duplexpair/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/message.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/ours/primordials.js","../../../node_modules/.pnpm/event-target-shim@5.0.1/node_modules/event-target-shim/dist/event-target-shim.mjs","../../../node_modules/.pnpm/abort-controller@3.0.0/node_modules/abort-controller/dist/abort-controller.mjs","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/ours/util.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/ours/errors.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/validators.js","../../../node_modules/.pnpm/process@0.11.10/node_modules/process/index.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/utils.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/destroy.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/legacy.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/add-abort-signal.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/state.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/from.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/readable.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/writable.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/duplexify.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/duplex.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/transform.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/passthrough.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/pipeline.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/compose.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/internal/streams/operators.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/stream/promises.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/stream.js","../../../node_modules/.pnpm/readable-stream@4.5.2/node_modules/readable-stream/lib/ours/index.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js","../../../node_modules/.pnpm/bl@6.0.10/node_modules/bl/BufferList.js","../../../node_modules/.pnpm/bl@6.0.10/node_modules/bl/bl.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/incoming-message-stream.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/outgoing-message-stream.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/message-io.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/collation.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/null.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/intn.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/tinyint.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/bitn.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/bit.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/smallint.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/int.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/datetimen.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/smalldatetime.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/floatn.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/real.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/moneyn.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/money.js","../../../node_modules/.pnpm/@js-joda+core@5.6.1/node_modules/@js-joda/core/dist/js-joda.esm.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/datetime.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/float.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/decimaln.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/decimal.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/numericn.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/numeric.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/smallmoney.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/bigint.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/image.js","../../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/lib/bom-handling.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/internal.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/utf32.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/utf16.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/utf7.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/sbcs-codec.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/sbcs-data.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/sbcs-data-generated.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/dbcs-codec.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/dbcs-data.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/encodings/index.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/lib/streams.js","../../../node_modules/.pnpm/iconv-lite@0.6.3/node_modules/iconv-lite/lib/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/text.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/guid-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/uniqueidentifier.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/ntext.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/varbinary.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/varchar.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/binary.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/char.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/nvarchar.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/nchar.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/xml.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/time.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/date.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/datetime2.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/datetimeoffset.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/udt.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/tvp.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-types/sql-variant.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/data-type.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/helpers.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/metadata-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/colmetadata-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/done-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/env-change-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/infoerror-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/fedauth-info-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/feature-ext-ack-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/loginack-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/order-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/returnstatus-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/value-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/returnvalue-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/row-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/nbcrow-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/sspi-token-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/stream-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/token-stream-parser.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/transaction.js","../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js","../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js","../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js","../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js","../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js","../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js","../../../node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js","../../../node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/index.js","../../../node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js","../../../node_modules/.pnpm/hasown@2.0.0/node_modules/hasown/index.js","../../../node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js","../../../node_modules/.pnpm/has-property-descriptors@1.0.1/node_modules/has-property-descriptors/index.js","../../../node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js","../../../node_modules/.pnpm/define-data-property@1.1.2/node_modules/define-data-property/index.js","../../../node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js","../../../node_modules/.pnpm/functions-have-names@1.2.3/node_modules/functions-have-names/index.js","../../../node_modules/.pnpm/set-function-name@2.0.1/node_modules/set-function-name/index.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsPropertyKey.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/5/Type.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/Type.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isNaN.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isFinite.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isInteger.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isMatchRecord.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/assertRecord.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsAccessorDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsDataDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isPrimitive.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsExtensible.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/ToBoolean.js","../../../node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsCallable.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/ToPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/SameValue.js","../../../node_modules/.pnpm/set-function-length@1.2.0/node_modules/set-function-length/index.js","../../../node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/index.js","../../../node_modules/.pnpm/call-bind@1.0.6/node_modules/call-bind/callBound.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/IsArray.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/DefineOwnProperty.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isFullyPopulatedPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/fromPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/FromPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsGenericDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/ValidateAndApplyPropertyDescriptor.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/OrdinaryDefineOwnProperty.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CreateDataProperty.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CreateDataPropertyOrThrow.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CreateMethodProperty.js","../../../node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/util.inspect.js","../../../node_modules/.pnpm/object-inspect@1.13.1/node_modules/object-inspect/index.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isLeadingSurrogate.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/isTrailingSurrogate.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/UTF16SurrogatePairToCodePoint.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CodePointAt.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/maxSafeInteger.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/AdvanceStringIndex.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CreateIterResultObject.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/Get.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IteratorComplete.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IteratorValue.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/PromiseResolve.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/AsyncFromSyncIteratorContinuation.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IsArray.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/Call.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/GetV.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/GetMethod.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IteratorNext.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/forEach.js","../../../node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js","../../../node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/OrdinaryObjectCreate.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/CreateAsyncFromSyncIterator.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/GetIteratorFromMethod.js","../../../node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js","../../../node_modules/.pnpm/is-string@1.0.7/node_modules/is-string/index.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/getIteratorMethod.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/GetIterator.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IteratorStep.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/IteratorToList.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/setProto.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/helpers/getProto.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/OrdinaryGetPrototypeOf.js","../../../node_modules/.pnpm/es-abstract@1.22.3/node_modules/es-abstract/2023/OrdinarySetPrototypeOf.js","../../../node_modules/.pnpm/es-aggregate-error@1.0.12/node_modules/es-aggregate-error/implementation.js","../../../node_modules/.pnpm/es-aggregate-error@1.0.12/node_modules/es-aggregate-error/polyfill.js","../../../node_modules/.pnpm/globalthis@1.0.3/node_modules/globalthis/implementation.js","../../../node_modules/.pnpm/globalthis@1.0.3/node_modules/globalthis/polyfill.js","../../../node_modules/.pnpm/globalthis@1.0.3/node_modules/globalthis/shim.js","../../../node_modules/.pnpm/globalthis@1.0.3/node_modules/globalthis/index.js","../../../node_modules/.pnpm/es-aggregate-error@1.0.12/node_modules/es-aggregate-error/shim.js","../../../node_modules/.pnpm/es-aggregate-error@1.0.12/node_modules/es-aggregate-error/index.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/connector.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/library.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/ntlm.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/bulk-load-payload.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/special-stored-procedure.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/token/handler.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/connection.js","../../../node_modules/.pnpm/tedious@16.6.1/node_modules/tedious/lib/tedious.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/tedious/connection-pool.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/tedious/transaction.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/udt.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/tedious/request.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/lib/tedious/index.js","../../../node_modules/.pnpm/mssql@10.0.2/node_modules/mssql/index.js","../out/main.js"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar CollectionMode;\n(function (CollectionMode) {\n    CollectionMode[CollectionMode[\"key\"] = 0] = \"key\";\n    CollectionMode[CollectionMode[\"value\"] = 1] = \"value\";\n})(CollectionMode || (CollectionMode = {}));\nconst CONFIG = Object.freeze({\n    key: {\n        terminator: '=',\n        quotes: {},\n    },\n    value: {\n        terminator: ';',\n        quotes: {\n            '\"': '\"',\n            \"'\": \"'\",\n            '{': '}',\n        },\n    },\n});\nfunction connectionStringParser(connectionString, parserConfig = CONFIG) {\n    const parsed = {};\n    let collectionMode = CollectionMode.key;\n    let started = false;\n    let finished = false;\n    let quoted = false;\n    let quote = '';\n    let buffer = '';\n    let currentKey = '';\n    let pointer = 0;\n    function start() {\n        started = true;\n    }\n    function finish() {\n        finished = true;\n    }\n    function reset() {\n        started = false;\n        finished = false;\n        quoted = false;\n        quote = '';\n        buffer = '';\n    }\n    function config() {\n        return collectionMode === CollectionMode.key ? parserConfig.key : parserConfig.value;\n    }\n    function isTerminator(char) {\n        return config().terminator === char;\n    }\n    function isStartQuote(char) {\n        return Object.keys(config().quotes).some((val) => char === val);\n    }\n    function isEndQuote(char) {\n        return quoted && char === config().quotes[quote];\n    }\n    function push(char) {\n        buffer += char;\n    }\n    function collect() {\n        if (!quoted) {\n            buffer = buffer.trim();\n        }\n        switch (collectionMode) {\n            case CollectionMode.key:\n                currentKey = buffer.toLowerCase();\n                collectionMode = CollectionMode.value;\n                break;\n            case CollectionMode.value:\n                collectionMode = CollectionMode.key;\n                parsed[currentKey] = buffer;\n                currentKey = '';\n                break;\n        }\n        reset();\n    }\n    while (pointer < connectionString.length) {\n        const current = connectionString.charAt(pointer);\n        if (!finished) {\n            if (!started) {\n                if (current.trim()) {\n                    start();\n                    if (isStartQuote(current)) {\n                        quoted = true;\n                        quote = current;\n                    }\n                    else {\n                        push(current);\n                    }\n                }\n            }\n            else {\n                if (quoted && isEndQuote(current)) {\n                    const next = connectionString.charAt(pointer + 1);\n                    if (current === next) {\n                        push(current);\n                        pointer++;\n                    }\n                    else {\n                        finish();\n                    }\n                }\n                else if (!quoted && isTerminator(current)) {\n                    const next = connectionString.charAt(pointer + 1);\n                    if (current === next) {\n                        push(current);\n                        pointer++;\n                    }\n                    else {\n                        collect();\n                    }\n                }\n                else {\n                    push(current);\n                }\n            }\n        }\n        else if (isTerminator(current)) {\n            collect();\n        }\n        else if (current.trim()) {\n            throw new Error('Malformed connection string');\n        }\n        pointer++;\n    }\n    if (quoted && !finished) {\n        throw new Error('Connection string terminated unexpectedly');\n    }\n    else {\n        collect();\n    }\n    return parsed;\n}\nexports.default = connectionStringParser;\n//# sourceMappingURL=connection-string.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SCHEMA = exports.SchemaTypes = void 0;\nconst connection_string_1 = __importDefault(require(\"./connection-string\"));\nvar SchemaTypes;\n(function (SchemaTypes) {\n    SchemaTypes[SchemaTypes[\"BOOL\"] = 0] = \"BOOL\";\n    SchemaTypes[SchemaTypes[\"STRING\"] = 1] = \"STRING\";\n    SchemaTypes[SchemaTypes[\"NUMBER\"] = 2] = \"NUMBER\";\n})(SchemaTypes = exports.SchemaTypes || (exports.SchemaTypes = {}));\n// schema for MSSQL connection strings (https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring)\nexports.SCHEMA = {\n    'Application Name': {\n        type: SchemaTypes.STRING,\n        aliases: ['App'],\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n    'ApplicationIntent': {\n        type: SchemaTypes.STRING,\n        allowedValues: ['ReadOnly', 'ReadWrite'],\n        default: 'ReadWrite',\n    },\n    'Asynchronous Processing': {\n        type: SchemaTypes.BOOL,\n        default: false,\n        aliases: ['Async'],\n    },\n    'AttachDBFilename': {\n        type: SchemaTypes.STRING,\n        aliases: ['Extended Properties', 'Initial File Name'],\n    },\n    'Authentication': {\n        type: SchemaTypes.STRING,\n        allowedValues: ['Active Directory Integrated', 'Active Directory Password', 'Sql Password'],\n    },\n    'Column Encryption Setting': {\n        type: SchemaTypes.STRING,\n    },\n    'Connection Timeout': {\n        type: SchemaTypes.NUMBER,\n        aliases: ['Connect Timeout', 'Timeout'],\n        default: 15,\n    },\n    'Connection Lifetime': {\n        type: SchemaTypes.NUMBER,\n        aliases: ['Load Balance Timeout'],\n        default: 0,\n    },\n    'ConnectRetryCount': {\n        type: SchemaTypes.NUMBER,\n        default: 1,\n        validator(val) {\n            return val > 0 && val <= 255;\n        },\n    },\n    'ConnectRetryInterval': {\n        type: SchemaTypes.NUMBER,\n        default: 10,\n    },\n    'Context Connection': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Current Language': {\n        aliases: ['Language'],\n        type: SchemaTypes.STRING,\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n    'Data Source': {\n        aliases: ['Addr', 'Address', 'Server', 'Network Address'],\n        type: SchemaTypes.STRING,\n    },\n    'Encrypt': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Enlist': {\n        type: SchemaTypes.BOOL,\n        default: true,\n    },\n    'Failover Partner': {\n        type: SchemaTypes.STRING,\n    },\n    'Initial Catalog': {\n        type: SchemaTypes.STRING,\n        aliases: ['Database'],\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n    'Integrated Security': {\n        type: SchemaTypes.BOOL,\n        aliases: ['Trusted_Connection'],\n        coerce(val) {\n            return val === 'sspi' || null;\n        },\n    },\n    'Max Pool Size': {\n        type: SchemaTypes.NUMBER,\n        default: 100,\n        validator(val) {\n            return val >= 1;\n        },\n    },\n    'Min Pool Size': {\n        type: SchemaTypes.NUMBER,\n        default: 0,\n        validator(val) {\n            return val >= 0;\n        },\n    },\n    'MultipleActiveResultSets': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'MultiSubnetFailover': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Network Library': {\n        type: SchemaTypes.STRING,\n        aliases: ['Network', 'Net'],\n        allowedValues: ['dbnmpntw', 'dbmsrpcn', 'dbmsadsn', 'dbmsgnet', 'dbmslpcn', 'dbmsspxn', 'dbmssocn', 'Dbmsvinn'],\n    },\n    'Packet Size': {\n        type: SchemaTypes.NUMBER,\n        default: 8000,\n        validator(val) {\n            return val >= 512 && val <= 32768;\n        },\n    },\n    'Password': {\n        type: SchemaTypes.STRING,\n        aliases: ['PWD'],\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n    'Persist Security Info': {\n        type: SchemaTypes.BOOL,\n        aliases: ['PersistSecurityInfo'],\n        default: false,\n    },\n    'PoolBlockingPeriod': {\n        type: SchemaTypes.NUMBER,\n        default: 0,\n        coerce(val) {\n            if (typeof val !== 'string') {\n                return null;\n            }\n            switch (val.toLowerCase()) {\n                case 'alwaysblock':\n                    return 1;\n                case 'auto':\n                    return 0;\n                case 'neverblock':\n                    return 2;\n            }\n            return null;\n        },\n    },\n    'Pooling': {\n        type: SchemaTypes.BOOL,\n        default: true,\n    },\n    'Replication': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Transaction Binding': {\n        type: SchemaTypes.STRING,\n        allowedValues: ['Implicit Unbind', 'Explicit Unbind'],\n        default: 'Implicit Unbind',\n    },\n    'TransparentNetworkIPResolution': {\n        type: SchemaTypes.BOOL,\n        default: true,\n    },\n    'TrustServerCertificate': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Type System Version': {\n        type: SchemaTypes.STRING,\n        allowedValues: ['SQL Server 2012', 'SQL Server 2008', 'SQL Server 2005', 'Latest'],\n    },\n    'User ID': {\n        type: SchemaTypes.STRING,\n        aliases: ['UID'],\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n    'User Instance': {\n        type: SchemaTypes.BOOL,\n        default: false,\n    },\n    'Workstation ID': {\n        type: SchemaTypes.STRING,\n        aliases: ['WSID'],\n        validator(val) {\n            return typeof val === 'string' && val.length <= 128;\n        },\n    },\n};\nfunction guessType(value) {\n    if (value.trim() === '') {\n        return SchemaTypes.STRING;\n    }\n    const asNum = parseInt(value, 10);\n    if (!Number.isNaN(asNum) && asNum.toString() === value) {\n        return SchemaTypes.NUMBER;\n    }\n    if (['true', 'false', 'yes', 'no'].includes(value.toLowerCase())) {\n        return SchemaTypes.BOOL;\n    }\n    return SchemaTypes.STRING;\n}\nfunction coerce(value, type, coercer) {\n    if (coercer) {\n        const coerced = coercer(value);\n        if (coerced !== null) {\n            return coerced;\n        }\n    }\n    switch (type) {\n        case SchemaTypes.BOOL:\n            if (['true', 'yes', '1'].includes(value.toLowerCase())) {\n                return true;\n            }\n            if (['false', 'no', '0'].includes(value.toLowerCase())) {\n                return false;\n            }\n            return value;\n        case SchemaTypes.NUMBER:\n            return parseInt(value, 10);\n    }\n    return value;\n}\nfunction validate(value, allowedValues, validator) {\n    let valid = true;\n    if (validator) {\n        valid = validator(value);\n    }\n    if (valid) {\n        valid = (allowedValues === null || allowedValues === void 0 ? void 0 : allowedValues.includes(value)) || false;\n    }\n    return valid;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction parseSqlConnectionString(connectionString, canonicalProps = false, allowUnknown = false, strict = false, schema = exports.SCHEMA) {\n    const flattenedSchema = Object.entries(schema).reduce((flattened, [key, item]) => {\n        var _a;\n        Object.assign(flattened, {\n            [key.toLowerCase()]: item,\n        });\n        return ((_a = item.aliases) === null || _a === void 0 ? void 0 : _a.reduce((accum, alias) => {\n            return Object.assign(accum, {\n                [alias.toLowerCase()]: {\n                    ...item,\n                    canonical: key.toLowerCase(),\n                },\n            });\n        }, flattened)) || flattened;\n    }, {});\n    return Object.entries((0, connection_string_1.default)(connectionString)).reduce((config, [prop, value]) => {\n        if (!Object.prototype.hasOwnProperty.call(flattenedSchema, prop)) {\n            return Object.assign(config, {\n                [prop]: coerce(value, guessType(value)),\n            });\n        }\n        let coercedValue = coerce(value, flattenedSchema[prop].type, flattenedSchema[prop].coerce);\n        if (strict && !validate(coercedValue, flattenedSchema[prop].allowedValues, flattenedSchema[prop].validator)) {\n            coercedValue = flattenedSchema[prop].default;\n        }\n        const propName = canonicalProps ? flattenedSchema[prop].canonical || prop : prop;\n        return Object.assign(config, {\n            [propName]: coercedValue,\n        });\n    }, {});\n}\nexports.default = parseSqlConnectionString;\n//# sourceMappingURL=sql-connection-string.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildConnectionString = void 0;\nfunction isQuoted(val) {\n    if (val[0] !== '{') {\n        return false;\n    }\n    for (let i = 1; i < val.length; i++) {\n        if (val[i] === '}') {\n            if (i + 1 === val.length) {\n                // if last char, then it's quoted properly\n                return true;\n            }\n            else if (val[i + 1] !== '}') {\n                // the next char is no a `}` so there is no valid escaping here\n                return false;\n            }\n            else {\n                // we are seeing an escaped `}`, so skip ahead\n                i++;\n            }\n        }\n    }\n    return false;\n}\nfunction needsQuotes(val) {\n    var _a;\n    return !isQuoted(val) && !!((_a = val.match(/\\[|]|{|}|\\|\\(|\\)|,|;|\\?|\\*|=|!|@/)) === null || _a === void 0 ? void 0 : _a.length);\n}\nfunction encodeTuple(key, value) {\n    if (value === null || value === undefined) {\n        return [key, ''];\n    }\n    switch (typeof value) {\n        case 'boolean':\n            return [key, value ? 'Yes' : 'No'];\n        default: {\n            const strVal = value.toString();\n            if (needsQuotes(strVal)) {\n                return [key, `{${strVal.replace(/}/g, '}}')}}`];\n            }\n            return [key, strVal];\n        }\n    }\n}\nfunction buildConnectionString(data) {\n    return Object.entries(data).map(([key, value]) => {\n        return encodeTuple(key.trim(), value).join('=');\n    }).join(';');\n}\nexports.buildConnectionString = buildConnectionString;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseSqlConnectionString = exports.parseConnectionString = void 0;\nconst connection_string_1 = __importDefault(require(\"./parser/connection-string\"));\nexports.parseConnectionString = connection_string_1.default;\nconst sql_connection_string_1 = __importDefault(require(\"./parser/sql-connection-string\"));\nexports.parseSqlConnectionString = sql_connection_string_1.default;\n__exportStar(require(\"./builder\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass TimeoutError extends Error {\r\n}\r\nexports.TimeoutError = TimeoutError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass PromiseInspection {\r\n    constructor(args) {\r\n        this._value = args.value;\r\n        this._error = args.error;\r\n    }\r\n    value() {\r\n        return this._value;\r\n    }\r\n    reason() {\r\n        return this._error;\r\n    }\r\n    isRejected() {\r\n        return !!this._error;\r\n    }\r\n    isFulfilled() {\r\n        return !!this._value;\r\n    }\r\n}\r\nexports.PromiseInspection = PromiseInspection;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst PromiseInspection_1 = require(\"./PromiseInspection\");\r\nfunction defer() {\r\n    let resolve = null;\r\n    let reject = null;\r\n    const promise = new Promise((resolver, rejecter) => {\r\n        resolve = resolver;\r\n        reject = rejecter;\r\n    });\r\n    return {\r\n        promise,\r\n        resolve,\r\n        reject\r\n    };\r\n}\r\nexports.defer = defer;\r\nfunction now() {\r\n    return Date.now();\r\n}\r\nexports.now = now;\r\nfunction duration(t1, t2) {\r\n    return Math.abs(t2 - t1);\r\n}\r\nexports.duration = duration;\r\nfunction checkOptionalTime(time) {\r\n    if (typeof time === 'undefined') {\r\n        return true;\r\n    }\r\n    return checkRequiredTime(time);\r\n}\r\nexports.checkOptionalTime = checkOptionalTime;\r\nfunction checkRequiredTime(time) {\r\n    return typeof time === 'number' && time === Math.round(time) && time > 0;\r\n}\r\nexports.checkRequiredTime = checkRequiredTime;\r\nfunction delay(millis) {\r\n    return new Promise(resolve => setTimeout(resolve, millis));\r\n}\r\nexports.delay = delay;\r\nfunction reflect(promise) {\r\n    return promise\r\n        .then(value => {\r\n        return new PromiseInspection_1.PromiseInspection({ value });\r\n    })\r\n        .catch(error => {\r\n        return new PromiseInspection_1.PromiseInspection({ error });\r\n    });\r\n}\r\nexports.reflect = reflect;\r\nfunction tryPromise(cb) {\r\n    try {\r\n        const result = cb();\r\n        return Promise.resolve(result);\r\n    }\r\n    catch (err) {\r\n        return Promise.reject(err);\r\n    }\r\n}\r\nexports.tryPromise = tryPromise;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst TimeoutError_1 = require(\"./TimeoutError\");\r\nconst utils_1 = require(\"./utils\");\r\nclass PendingOperation {\r\n    constructor(timeoutMillis) {\r\n        this.timeoutMillis = timeoutMillis;\r\n        this.deferred = utils_1.defer();\r\n        this.possibleTimeoutCause = null;\r\n        this.isRejected = false;\r\n        this.promise = timeout(this.deferred.promise, timeoutMillis).catch(err => {\r\n            if (err instanceof TimeoutError_1.TimeoutError) {\r\n                if (this.possibleTimeoutCause) {\r\n                    err = new TimeoutError_1.TimeoutError(this.possibleTimeoutCause.message);\r\n                }\r\n                else {\r\n                    err = new TimeoutError_1.TimeoutError('operation timed out for an unknown reason');\r\n                }\r\n            }\r\n            this.isRejected = true;\r\n            return Promise.reject(err);\r\n        });\r\n    }\r\n    abort() {\r\n        this.reject(new Error('aborted'));\r\n    }\r\n    reject(err) {\r\n        this.deferred.reject(err);\r\n    }\r\n    resolve(value) {\r\n        this.deferred.resolve(value);\r\n    }\r\n}\r\nexports.PendingOperation = PendingOperation;\r\nfunction timeout(promise, time) {\r\n    return new Promise((resolve, reject) => {\r\n        const timeoutHandle = setTimeout(() => reject(new TimeoutError_1.TimeoutError()), time);\r\n        promise\r\n            .then(result => {\r\n            clearTimeout(timeoutHandle);\r\n            resolve(result);\r\n        })\r\n            .catch(err => {\r\n            clearTimeout(timeoutHandle);\r\n            reject(err);\r\n        });\r\n    });\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\nclass Resource {\r\n    constructor(resource) {\r\n        this.resource = resource;\r\n        this.resource = resource;\r\n        this.timestamp = utils_1.now();\r\n        this.deferred = utils_1.defer();\r\n    }\r\n    get promise() {\r\n        return this.deferred.promise;\r\n    }\r\n    resolve() {\r\n        this.deferred.resolve(undefined);\r\n        return new Resource(this.resource);\r\n    }\r\n}\r\nexports.Resource = Resource;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst PendingOperation_1 = require(\"./PendingOperation\");\r\nconst Resource_1 = require(\"./Resource\");\r\nconst utils_1 = require(\"./utils\");\r\nconst events_1 = require(\"events\");\r\nconst timers_1 = require(\"timers\");\r\nclass Pool {\r\n    constructor(opt) {\r\n        this.destroyed = false;\r\n        this.emitter = new events_1.EventEmitter();\r\n        opt = opt || {};\r\n        if (!opt.create) {\r\n            throw new Error('Tarn: opt.create function most be provided');\r\n        }\r\n        if (!opt.destroy) {\r\n            throw new Error('Tarn: opt.destroy function most be provided');\r\n        }\r\n        if (typeof opt.min !== 'number' || opt.min < 0 || opt.min !== Math.round(opt.min)) {\r\n            throw new Error('Tarn: opt.min must be an integer >= 0');\r\n        }\r\n        if (typeof opt.max !== 'number' || opt.max <= 0 || opt.max !== Math.round(opt.max)) {\r\n            throw new Error('Tarn: opt.max must be an integer > 0');\r\n        }\r\n        if (opt.min > opt.max) {\r\n            throw new Error('Tarn: opt.max is smaller than opt.min');\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.acquireTimeoutMillis)) {\r\n            throw new Error('Tarn: invalid opt.acquireTimeoutMillis ' + JSON.stringify(opt.acquireTimeoutMillis));\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.createTimeoutMillis)) {\r\n            throw new Error('Tarn: invalid opt.createTimeoutMillis ' + JSON.stringify(opt.createTimeoutMillis));\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.destroyTimeoutMillis)) {\r\n            throw new Error('Tarn: invalid opt.destroyTimeoutMillis ' + JSON.stringify(opt.destroyTimeoutMillis));\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.idleTimeoutMillis)) {\r\n            throw new Error('Tarn: invalid opt.idleTimeoutMillis ' + JSON.stringify(opt.idleTimeoutMillis));\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.reapIntervalMillis)) {\r\n            throw new Error('Tarn: invalid opt.reapIntervalMillis ' + JSON.stringify(opt.reapIntervalMillis));\r\n        }\r\n        if (!utils_1.checkOptionalTime(opt.createRetryIntervalMillis)) {\r\n            throw new Error('Tarn: invalid opt.createRetryIntervalMillis ' +\r\n                JSON.stringify(opt.createRetryIntervalMillis));\r\n        }\r\n        const allowedKeys = {\r\n            create: true,\r\n            validate: true,\r\n            destroy: true,\r\n            log: true,\r\n            min: true,\r\n            max: true,\r\n            acquireTimeoutMillis: true,\r\n            createTimeoutMillis: true,\r\n            destroyTimeoutMillis: true,\r\n            idleTimeoutMillis: true,\r\n            reapIntervalMillis: true,\r\n            createRetryIntervalMillis: true,\r\n            propagateCreateError: true\r\n        };\r\n        for (const key of Object.keys(opt)) {\r\n            if (!allowedKeys[key]) {\r\n                throw new Error(`Tarn: unsupported option opt.${key}`);\r\n            }\r\n        }\r\n        this.creator = opt.create;\r\n        this.destroyer = opt.destroy;\r\n        this.validate = typeof opt.validate === 'function' ? opt.validate : () => true;\r\n        this.log = opt.log || (() => { });\r\n        this.acquireTimeoutMillis = opt.acquireTimeoutMillis || 30000;\r\n        this.createTimeoutMillis = opt.createTimeoutMillis || 30000;\r\n        this.destroyTimeoutMillis = opt.destroyTimeoutMillis || 5000;\r\n        this.idleTimeoutMillis = opt.idleTimeoutMillis || 30000;\r\n        this.reapIntervalMillis = opt.reapIntervalMillis || 1000;\r\n        this.createRetryIntervalMillis = opt.createRetryIntervalMillis || 200;\r\n        this.propagateCreateError = !!opt.propagateCreateError;\r\n        this.min = opt.min;\r\n        this.max = opt.max;\r\n        // All the resources, which are either already acquired or which are\r\n        // considered for being passed to acquire in async validation phase.\r\n        this.used = [];\r\n        // All the resources, which are either just created and free or returned\r\n        // back to pool after using.\r\n        this.free = [];\r\n        this.pendingCreates = [];\r\n        this.pendingAcquires = [];\r\n        this.pendingDestroys = [];\r\n        // When acquire is pending, but also still in validation phase\r\n        this.pendingValidations = [];\r\n        this.destroyed = false;\r\n        this.interval = null;\r\n        this.eventId = 1;\r\n    }\r\n    numUsed() {\r\n        return this.used.length;\r\n    }\r\n    numFree() {\r\n        return this.free.length;\r\n    }\r\n    numPendingAcquires() {\r\n        return this.pendingAcquires.length;\r\n    }\r\n    numPendingValidations() {\r\n        return this.pendingValidations.length;\r\n    }\r\n    numPendingCreates() {\r\n        return this.pendingCreates.length;\r\n    }\r\n    acquire() {\r\n        const eventId = this.eventId++;\r\n        this._executeEventHandlers('acquireRequest', eventId);\r\n        const pendingAcquire = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis);\r\n        this.pendingAcquires.push(pendingAcquire);\r\n        // If the acquire fails for whatever reason\r\n        // remove it from the pending queue.\r\n        pendingAcquire.promise = pendingAcquire.promise\r\n            .then(resource => {\r\n            this._executeEventHandlers('acquireSuccess', eventId, resource);\r\n            return resource;\r\n        })\r\n            .catch(err => {\r\n            this._executeEventHandlers('acquireFail', eventId, err);\r\n            remove(this.pendingAcquires, pendingAcquire);\r\n            return Promise.reject(err);\r\n        });\r\n        this._tryAcquireOrCreate();\r\n        return pendingAcquire;\r\n    }\r\n    release(resource) {\r\n        this._executeEventHandlers('release', resource);\r\n        for (let i = 0, l = this.used.length; i < l; ++i) {\r\n            const used = this.used[i];\r\n            if (used.resource === resource) {\r\n                this.used.splice(i, 1);\r\n                this.free.push(used.resolve());\r\n                this._tryAcquireOrCreate();\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    isEmpty() {\r\n        return ([\r\n            this.numFree(),\r\n            this.numUsed(),\r\n            this.numPendingAcquires(),\r\n            this.numPendingValidations(),\r\n            this.numPendingCreates()\r\n        ].reduce((total, value) => total + value) === 0);\r\n    }\r\n    /**\r\n     * Reaping cycle.\r\n     */\r\n    check() {\r\n        const timestamp = utils_1.now();\r\n        const newFree = [];\r\n        const minKeep = this.min - this.used.length;\r\n        const maxDestroy = this.free.length - minKeep;\r\n        let numDestroyed = 0;\r\n        this.free.forEach(free => {\r\n            if (utils_1.duration(timestamp, free.timestamp) >= this.idleTimeoutMillis &&\r\n                numDestroyed < maxDestroy) {\r\n                numDestroyed++;\r\n                this._destroy(free.resource);\r\n            }\r\n            else {\r\n                newFree.push(free);\r\n            }\r\n        });\r\n        this.free = newFree;\r\n        // Pool is completely empty, stop reaping.\r\n        // Next .acquire will start reaping interval again.\r\n        if (this.isEmpty()) {\r\n            this._stopReaping();\r\n        }\r\n    }\r\n    destroy() {\r\n        const eventId = this.eventId++;\r\n        this._executeEventHandlers('poolDestroyRequest', eventId);\r\n        this._stopReaping();\r\n        this.destroyed = true;\r\n        // First wait for all the pending creates get ready.\r\n        return utils_1.reflect(Promise.all(this.pendingCreates.map(create => utils_1.reflect(create.promise)))\r\n            .then(() => {\r\n            // eslint-disable-next-line\r\n            return new Promise((resolve, reject) => {\r\n                // poll every 100ms and wait that all validations are ready\r\n                if (this.numPendingValidations() === 0) {\r\n                    resolve();\r\n                    return;\r\n                }\r\n                const interval = setInterval(() => {\r\n                    if (this.numPendingValidations() === 0) {\r\n                        timers_1.clearInterval(interval);\r\n                        resolve();\r\n                    }\r\n                }, 100);\r\n            });\r\n        })\r\n            .then(() => {\r\n            // Wait for all the used resources to be freed.\r\n            return Promise.all(this.used.map(used => utils_1.reflect(used.promise)));\r\n        })\r\n            .then(() => {\r\n            // Abort all pending acquires.\r\n            return Promise.all(this.pendingAcquires.map(acquire => {\r\n                acquire.abort();\r\n                return utils_1.reflect(acquire.promise);\r\n            }));\r\n        })\r\n            .then(() => {\r\n            // Now we can destroy all the freed resources.\r\n            return Promise.all(this.free.map(free => utils_1.reflect(this._destroy(free.resource))));\r\n        })\r\n            .then(() => {\r\n            // Also wait rest of the pending destroys to finish\r\n            return Promise.all(this.pendingDestroys.map(pd => pd.promise));\r\n        })\r\n            .then(() => {\r\n            this.free = [];\r\n            this.pendingAcquires = [];\r\n        })).then(res => {\r\n            this._executeEventHandlers('poolDestroySuccess', eventId);\r\n            this.emitter.removeAllListeners();\r\n            return res;\r\n        });\r\n    }\r\n    on(event, listener) {\r\n        this.emitter.on(event, listener);\r\n    }\r\n    removeListener(event, listener) {\r\n        this.emitter.removeListener(event, listener);\r\n    }\r\n    removeAllListeners(event) {\r\n        this.emitter.removeAllListeners(event);\r\n    }\r\n    /**\r\n     * The most important method that is called always when resources\r\n     * are created / destroyed / acquired / released. In other words\r\n     * every time when resources are moved from used to free or vice\r\n     * versa.\r\n     *\r\n     * Either assigns free resources to pendingAcquires or creates new\r\n     * resources if there is room for it in the pool.\r\n     */\r\n    _tryAcquireOrCreate() {\r\n        if (this.destroyed) {\r\n            return;\r\n        }\r\n        if (this._hasFreeResources()) {\r\n            this._doAcquire();\r\n        }\r\n        else if (this._shouldCreateMoreResources()) {\r\n            this._doCreate();\r\n        }\r\n    }\r\n    _hasFreeResources() {\r\n        return this.free.length > 0;\r\n    }\r\n    _doAcquire() {\r\n        // Acquire as many pending acquires as possible concurrently\r\n        while (this._canAcquire()) {\r\n            // To allow async validation, we actually need to move free resource\r\n            // and pending acquire temporary from their respective arrays and depending\r\n            // on validation result to either leave the free resource to used resources array\r\n            // or destroy the free resource if validation did fail.\r\n            const pendingAcquire = this.pendingAcquires.shift();\r\n            const free = this.free.pop();\r\n            if (free === undefined || pendingAcquire === undefined) {\r\n                const errMessage = 'this.free was empty while trying to acquire resource';\r\n                this.log(`Tarn: ${errMessage}`, 'warn');\r\n                throw new Error(`Internal error, should never happen. ${errMessage}`);\r\n            }\r\n            // Make sure that pendingAcquire that is being validated is not lost and\r\n            // can be freed when pool is destroyed.\r\n            this.pendingValidations.push(pendingAcquire);\r\n            // Must be added here pre-emptively to prevent logic that decides\r\n            // if new resources are created will keep on working correctly.\r\n            this.used.push(free);\r\n            // if acquire fails also pending validation, must be aborted so that pre reserved\r\n            // resource will be returned to free resources immediately\r\n            const abortAbleValidation = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis);\r\n            // eslint-disable-next-line\r\n            pendingAcquire.promise.catch(err => {\r\n                abortAbleValidation.abort();\r\n            });\r\n            abortAbleValidation.promise\r\n                .catch(err => {\r\n                // There's nothing we can do here but log the error. This would otherwise\r\n                // leak out as an unhandled exception.\r\n                this.log('Tarn: resource validator threw an exception ' + err.stack, 'warn');\r\n                return false;\r\n            })\r\n                .then(validationSuccess => {\r\n                try {\r\n                    if (validationSuccess && !pendingAcquire.isRejected) {\r\n                        // At least one active resource exist, start reaping.\r\n                        this._startReaping();\r\n                        pendingAcquire.resolve(free.resource);\r\n                    }\r\n                    else {\r\n                        remove(this.used, free);\r\n                        // Only destroy the resource if the validation has failed\r\n                        if (!validationSuccess) {\r\n                            this._destroy(free.resource);\r\n                            // Since we destroyed an invalid resource and were not able to fulfill\r\n                            // all the pending acquires, we may need to create new ones or at\r\n                            // least run this acquire loop again to verify it. But not immediately\r\n                            // to prevent starving event loop.\r\n                            setTimeout(() => {\r\n                                this._tryAcquireOrCreate();\r\n                            }, 0);\r\n                        }\r\n                        else {\r\n                            this.free.push(free);\r\n                        }\r\n                        // is acquire was canceled, failed or timed out already\r\n                        // no need to return it to pending queries\r\n                        if (!pendingAcquire.isRejected) {\r\n                            this.pendingAcquires.unshift(pendingAcquire);\r\n                        }\r\n                    }\r\n                }\r\n                finally {\r\n                    remove(this.pendingValidations, pendingAcquire);\r\n                }\r\n            });\r\n            // try to validate\r\n            this._validateResource(free.resource)\r\n                .then(validationSuccess => {\r\n                abortAbleValidation.resolve(validationSuccess);\r\n            })\r\n                .catch(err => {\r\n                abortAbleValidation.reject(err);\r\n            });\r\n        }\r\n    }\r\n    _canAcquire() {\r\n        return this.free.length > 0 && this.pendingAcquires.length > 0;\r\n    }\r\n    _validateResource(resource) {\r\n        try {\r\n            return Promise.resolve(this.validate(resource));\r\n        }\r\n        catch (err) {\r\n            // prevent leaking of sync exception\r\n            return Promise.reject(err);\r\n        }\r\n    }\r\n    _shouldCreateMoreResources() {\r\n        return (this.used.length + this.pendingCreates.length < this.max &&\r\n            this.pendingCreates.length < this.pendingAcquires.length);\r\n    }\r\n    _doCreate() {\r\n        const pendingAcquiresBeforeCreate = this.pendingAcquires.slice();\r\n        const pendingCreate = this._create();\r\n        pendingCreate.promise\r\n            .then(() => {\r\n            // Not returned on purpose.\r\n            this._tryAcquireOrCreate();\r\n            return null;\r\n        })\r\n            .catch(err => {\r\n            if (this.propagateCreateError && this.pendingAcquires.length !== 0) {\r\n                // If propagateCreateError is true, we don't retry the create\r\n                // but reject the first pending acquire immediately. Intentionally\r\n                // use `this.pendingAcquires` instead of `pendingAcquiresBeforeCreate`\r\n                // in case some acquires in pendingAcquiresBeforeCreate have already\r\n                // been resolved.\r\n                this.pendingAcquires[0].reject(err);\r\n            }\r\n            // Save the create error to all pending acquires so that we can use it\r\n            // as the error to reject the acquire if it times out.\r\n            pendingAcquiresBeforeCreate.forEach(pendingAcquire => {\r\n                pendingAcquire.possibleTimeoutCause = err;\r\n            });\r\n            // Not returned on purpose.\r\n            utils_1.delay(this.createRetryIntervalMillis).then(() => this._tryAcquireOrCreate());\r\n        });\r\n    }\r\n    _create() {\r\n        const eventId = this.eventId++;\r\n        this._executeEventHandlers('createRequest', eventId);\r\n        const pendingCreate = new PendingOperation_1.PendingOperation(this.createTimeoutMillis);\r\n        // If an error occurs (likely a create timeout) remove this creation from\r\n        // the list of pending creations so we try to create a new one.\r\n        pendingCreate.promise = pendingCreate.promise.catch(err => {\r\n            if (remove(this.pendingCreates, pendingCreate)) {\r\n                // TODO: figure out more consistent way for different error handlers in next rewrite\r\n                this._executeEventHandlers('createFail', eventId, err);\r\n            }\r\n            throw err;\r\n        });\r\n        this.pendingCreates.push(pendingCreate);\r\n        callbackOrPromise(this.creator)\r\n            .then(resource => {\r\n            if (pendingCreate.isRejected) {\r\n                this.destroyer(resource);\r\n                return null;\r\n            }\r\n            remove(this.pendingCreates, pendingCreate);\r\n            this.free.push(new Resource_1.Resource(resource));\r\n            // Not returned on purpose.\r\n            pendingCreate.resolve(resource);\r\n            this._executeEventHandlers('createSuccess', eventId, resource);\r\n            return null;\r\n        })\r\n            .catch(err => {\r\n            if (pendingCreate.isRejected) {\r\n                return null;\r\n            }\r\n            if (remove(this.pendingCreates, pendingCreate)) {\r\n                this._executeEventHandlers('createFail', eventId, err);\r\n            }\r\n            // Not returned on purpose.\r\n            pendingCreate.reject(err);\r\n            return null;\r\n        });\r\n        return pendingCreate;\r\n    }\r\n    _destroy(resource) {\r\n        const eventId = this.eventId++;\r\n        this._executeEventHandlers('destroyRequest', eventId, resource);\r\n        // this.destroyer can be both synchronous and asynchronous.\r\n        // so we wrap it to promise to get all exceptions through same pipeline\r\n        const pendingDestroy = new PendingOperation_1.PendingOperation(this.destroyTimeoutMillis);\r\n        const retVal = Promise.resolve().then(() => this.destroyer(resource));\r\n        retVal\r\n            .then(() => {\r\n            pendingDestroy.resolve(resource);\r\n        })\r\n            .catch((err) => {\r\n            pendingDestroy.reject(err);\r\n        });\r\n        this.pendingDestroys.push(pendingDestroy);\r\n        // In case of an error there's nothing we can do here but log it.\r\n        return pendingDestroy.promise\r\n            .then(res => {\r\n            this._executeEventHandlers('destroySuccess', eventId, resource);\r\n            return res;\r\n        })\r\n            .catch(err => this._logDestroyerError(eventId, resource, err))\r\n            .then(res => {\r\n            const index = this.pendingDestroys.findIndex(pd => pd === pendingDestroy);\r\n            this.pendingDestroys.splice(index, 1);\r\n            return res;\r\n        });\r\n    }\r\n    _logDestroyerError(eventId, resource, err) {\r\n        this._executeEventHandlers('destroyFail', eventId, resource, err);\r\n        this.log('Tarn: resource destroyer threw an exception ' + err.stack, 'warn');\r\n    }\r\n    _startReaping() {\r\n        if (!this.interval) {\r\n            this._executeEventHandlers('startReaping');\r\n            this.interval = setInterval(() => this.check(), this.reapIntervalMillis);\r\n        }\r\n    }\r\n    _stopReaping() {\r\n        if (this.interval !== null) {\r\n            this._executeEventHandlers('stopReaping');\r\n            timers_1.clearInterval(this.interval);\r\n        }\r\n        this.interval = null;\r\n    }\r\n    _executeEventHandlers(eventName, ...args) {\r\n        const listeners = this.emitter.listeners(eventName);\r\n        // just calling .emit() would stop running rest of the listeners if one them fails\r\n        listeners.forEach(listener => {\r\n            try {\r\n                listener(...args);\r\n            }\r\n            catch (err) {\r\n                // There's nothing we can do here but log the error. This would otherwise\r\n                // leak out as an unhandled exception.\r\n                this.log(`Tarn: event handler \"${eventName}\" threw an exception ${err.stack}`, 'warn');\r\n            }\r\n        });\r\n    }\r\n}\r\nexports.Pool = Pool;\r\nfunction remove(arr, item) {\r\n    const idx = arr.indexOf(item);\r\n    if (idx === -1) {\r\n        return false;\r\n    }\r\n    else {\r\n        arr.splice(idx, 1);\r\n        return true;\r\n    }\r\n}\r\nfunction callbackOrPromise(func) {\r\n    return new Promise((resolve, reject) => {\r\n        const callback = (err, resource) => {\r\n            if (err) {\r\n                reject(err);\r\n            }\r\n            else {\r\n                resolve(resource);\r\n            }\r\n        };\r\n        utils_1.tryPromise(() => func(callback))\r\n            .then(res => {\r\n            // If the result is falsy, we assume that the callback will\r\n            // be called instead of interpreting the falsy value as a\r\n            // result value.\r\n            if (res) {\r\n                resolve(res);\r\n            }\r\n        })\r\n            .catch(err => {\r\n            reject(err);\r\n        });\r\n    });\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst Pool_1 = require(\"./Pool\");\r\nexports.Pool = Pool_1.Pool;\r\nconst TimeoutError_1 = require(\"./TimeoutError\");\r\nexports.TimeoutError = TimeoutError_1.TimeoutError;\r\nmodule.exports = {\r\n    Pool: Pool_1.Pool,\r\n    TimeoutError: TimeoutError_1.TimeoutError\r\n};\r\n","const IDS = new WeakMap()\nconst INCREMENT = {\n  Connection: 1,\n  ConnectionPool: 1,\n  Request: 1,\n  Transaction: 1,\n  PreparedStatement: 1\n}\n\nmodule.exports = {\n  objectHasProperty: (object, property) => Object.prototype.hasOwnProperty.call(object, property),\n  INCREMENT,\n  IDS: {\n    get: IDS.get.bind(IDS),\n    add: (object, type, id) => {\n      if (id) return IDS.set(object, id)\n      IDS.set(object, INCREMENT[type]++)\n    }\n  }\n}\n","'use strict'\n\nclass MSSQLError extends Error {\n  /**\n   * Creates a new ConnectionError.\n   *\n   * @param {String} message Error message.\n   * @param {String} [code] Error code.\n   */\n\n  constructor (message, code) {\n    if (message instanceof Error) {\n      super(message.message)\n      this.code = message.code || code\n\n      Error.captureStackTrace(this, this.constructor)\n      Object.defineProperty(this, 'originalError', { enumerable: true, value: message })\n    } else {\n      super(message)\n      this.code = code\n    }\n\n    this.name = 'MSSQLError'\n  }\n}\n\nmodule.exports = MSSQLError\n","'use strict'\n\nconst MSSQLError = require('./mssql-error')\n\n/**\n * Class ConnectionError.\n */\n\nclass ConnectionError extends MSSQLError {\n  /**\n   * Creates a new ConnectionError.\n   *\n   * @param {String} message Error message.\n   * @param {String} [code] Error code.\n   */\n\n  constructor (message, code) {\n    super(message, code)\n\n    this.name = 'ConnectionError'\n  }\n}\n\nmodule.exports = ConnectionError\n","'use strict'\nconst objectHasProperty = require('./utils').objectHasProperty\nconst inspect = Symbol.for('nodejs.util.inspect.custom')\n\nconst TYPES = {\n  VarChar (length) {\n    return { type: TYPES.VarChar, length }\n  },\n  NVarChar (length) {\n    return { type: TYPES.NVarChar, length }\n  },\n  Text () {\n    return { type: TYPES.Text }\n  },\n  Int () {\n    return { type: TYPES.Int }\n  },\n  BigInt () {\n    return { type: TYPES.BigInt }\n  },\n  TinyInt () {\n    return { type: TYPES.TinyInt }\n  },\n  SmallInt () {\n    return { type: TYPES.SmallInt }\n  },\n  Bit () {\n    return { type: TYPES.Bit }\n  },\n  Float () {\n    return { type: TYPES.Float }\n  },\n  Numeric (precision, scale) {\n    return { type: TYPES.Numeric, precision, scale }\n  },\n  Decimal (precision, scale) {\n    return { type: TYPES.Decimal, precision, scale }\n  },\n  Real () {\n    return { type: TYPES.Real }\n  },\n  Date () {\n    return { type: TYPES.Date }\n  },\n  DateTime () {\n    return { type: TYPES.DateTime }\n  },\n  DateTime2 (scale) {\n    return { type: TYPES.DateTime2, scale }\n  },\n  DateTimeOffset (scale) {\n    return { type: TYPES.DateTimeOffset, scale }\n  },\n  SmallDateTime () {\n    return { type: TYPES.SmallDateTime }\n  },\n  Time (scale) {\n    return { type: TYPES.Time, scale }\n  },\n  UniqueIdentifier () {\n    return { type: TYPES.UniqueIdentifier }\n  },\n  SmallMoney () {\n    return { type: TYPES.SmallMoney }\n  },\n  Money () {\n    return { type: TYPES.Money }\n  },\n  Binary (length) {\n    return { type: TYPES.Binary, length }\n  },\n  VarBinary (length) {\n    return { type: TYPES.VarBinary, length }\n  },\n  Image () {\n    return { type: TYPES.Image }\n  },\n  Xml () {\n    return { type: TYPES.Xml }\n  },\n  Char (length) {\n    return { type: TYPES.Char, length }\n  },\n  NChar (length) {\n    return { type: TYPES.NChar, length }\n  },\n  NText () {\n    return { type: TYPES.NText }\n  },\n  TVP (tvpType) {\n    return { type: TYPES.TVP, tvpType }\n  },\n  UDT () {\n    return { type: TYPES.UDT }\n  },\n  Geography () {\n    return { type: TYPES.Geography }\n  },\n  Geometry () {\n    return { type: TYPES.Geometry }\n  },\n  Variant () {\n    return { type: TYPES.Variant }\n  }\n}\n\nmodule.exports.TYPES = TYPES\nmodule.exports.DECLARATIONS = {}\n\nconst zero = function (value, length) {\n  if (length == null) length = 2\n\n  value = String(value)\n  if (value.length < length) {\n    for (let i = 1; i <= length - value.length; i++) {\n      value = `0${value}`\n    }\n  }\n  return value\n}\n\nfor (const key in TYPES) {\n  if (objectHasProperty(TYPES, key)) {\n    const value = TYPES[key]\n    value.declaration = key.toLowerCase()\n    module.exports.DECLARATIONS[value.declaration] = value;\n\n    ((key, value) => {\n      value[inspect] = () => `[sql.${key}]`\n    })(key, value)\n  }\n}\n\nmodule.exports.declare = (type, options) => {\n  switch (type) {\n    case TYPES.VarChar: case TYPES.VarBinary:\n      return `${type.declaration} (${options.length > 8000 ? 'MAX' : (options.length == null ? 'MAX' : options.length)})`\n    case TYPES.NVarChar:\n      return `${type.declaration} (${options.length > 4000 ? 'MAX' : (options.length == null ? 'MAX' : options.length)})`\n    case TYPES.Char: case TYPES.NChar: case TYPES.Binary:\n      return `${type.declaration} (${options.length == null ? 1 : options.length})`\n    case TYPES.Decimal: case TYPES.Numeric:\n      return `${type.declaration} (${options.precision == null ? 18 : options.precision}, ${options.scale == null ? 0 : options.scale})`\n    case TYPES.Time: case TYPES.DateTime2: case TYPES.DateTimeOffset:\n      return `${type.declaration} (${options.scale == null ? 7 : options.scale})`\n    case TYPES.TVP:\n      return `${options.tvpType} readonly`\n    default:\n      return type.declaration\n  }\n}\n\nmodule.exports.cast = (value, type, options) => {\n  if (value == null) {\n    return null\n  }\n\n  switch (typeof value) {\n    case 'string':\n      return `N'${value.replace(/'/g, '\\'\\'')}'`\n\n    case 'number':\n      return value\n\n    case 'boolean':\n      return value ? 1 : 0\n\n    case 'object':\n      if (value instanceof Date) {\n        let ns = value.getUTCMilliseconds() / 1000\n        if (value.nanosecondDelta != null) {\n          ns += value.nanosecondDelta\n        }\n        const scale = options.scale == null ? 7 : options.scale\n\n        if (scale > 0) {\n          ns = String(ns).substr(1, scale + 1)\n        } else {\n          ns = ''\n        }\n\n        return `N'${value.getUTCFullYear()}-${zero(value.getUTCMonth() + 1)}-${zero(value.getUTCDate())} ${zero(value.getUTCHours())}:${zero(value.getUTCMinutes())}:${zero(value.getUTCSeconds())}${ns}'`\n      } else if (Buffer.isBuffer(value)) {\n        return `0x${value.toString('hex')}`\n      }\n\n      return null\n\n    default:\n      return null\n  }\n}\n","'use strict'\n\nconst TYPES = require('./datatypes').TYPES\nconst declareType = require('./datatypes').declare\nconst objectHasProperty = require('./utils').objectHasProperty\n\nconst MAX = 65535 // (1 << 16) - 1\nconst JSON_COLUMN_ID = 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B'\n\nfunction Table (name) {\n  if (name) {\n    const parsed = Table.parseName(name)\n    this.name = parsed.name\n    this.schema = parsed.schema\n    this.database = parsed.database\n    this.path = (this.database ? `[${this.database}].` : '') + (this.schema ? `[${this.schema}].` : '') + `[${this.name}]`\n    this.temporary = this.name.charAt(0) === '#'\n  }\n\n  this.columns = []\n  this.rows = []\n\n  Object.defineProperty(this.columns, 'add', {\n    value (name, column, options) {\n      if (column == null) {\n        throw new Error('Column data type is not defined.')\n      }\n      if (column instanceof Function) {\n        column = column()\n      }\n\n      options = options || {}\n      column.name = name;\n\n      ['nullable', 'primary', 'identity', 'readOnly', 'length'].forEach(prop => {\n        if (objectHasProperty(options, prop)) {\n          column[prop] = options[prop]\n        }\n      })\n\n      return this.push(column)\n    }\n  })\n\n  Object.defineProperty(this.rows, 'add', {\n    value () {\n      return this.push(Array.prototype.slice.call(arguments))\n    }\n  }\n  )\n\n  Object.defineProperty(this.rows, 'clear', {\n    value () {\n      return this.splice(0, this.length)\n    }\n  }\n  )\n}\n\n/*\n@private\n*/\n\nTable.prototype._makeBulk = function _makeBulk () {\n  for (let i = 0; i < this.columns.length; i++) {\n    const col = this.columns[i]\n    switch (col.type) {\n      case TYPES.Date:\n      case TYPES.DateTime:\n      case TYPES.DateTime2:\n        for (let j = 0; j < this.rows.length; j++) {\n          const dateValue = this.rows[j][i]\n          if (typeof dateValue === 'string' || typeof dateValue === 'number') {\n            const date = new Date(dateValue)\n            if (isNaN(date.getDate())) {\n              throw new TypeError('Invalid date value passed to bulk rows')\n            }\n            this.rows[j][i] = date\n          }\n        }\n        break\n\n      case TYPES.Xml:\n        col.type = TYPES.NVarChar(MAX).type\n        break\n\n      case TYPES.UDT:\n      case TYPES.Geography:\n      case TYPES.Geometry:\n        col.type = TYPES.VarBinary(MAX).type\n        break\n\n      default:\n        break\n    }\n  }\n\n  return this\n}\n\nTable.prototype.declare = function declare () {\n  const pkey = this.columns.filter(col => col.primary === true).map(col => `[${col.name}]`)\n  const cols = this.columns.map(col => {\n    const def = [`[${col.name}] ${declareType(col.type, col)}`]\n\n    if (col.nullable === true) {\n      def.push('null')\n    } else if (col.nullable === false) {\n      def.push('not null')\n    }\n\n    if (col.primary === true && pkey.length === 1) {\n      def.push('primary key')\n    }\n\n    return def.join(' ')\n  })\n\n  const constraint = pkey.length > 1 ? `, constraint [PK_${this.temporary ? this.name.substr(1) : this.name}] primary key (${pkey.join(', ')})` : ''\n  return `create table ${this.path} (${cols.join(', ')}${constraint})`\n}\n\nTable.fromRecordset = function fromRecordset (recordset, name) {\n  const t = new this(name)\n\n  for (const colName in recordset.columns) {\n    if (objectHasProperty(recordset.columns, colName)) {\n      const col = recordset.columns[colName]\n\n      t.columns.add(colName, {\n        type: col.type,\n        length: col.length,\n        scale: col.scale,\n        precision: col.precision\n      }, {\n        nullable: col.nullable,\n        identity: col.identity,\n        readOnly: col.readOnly\n      })\n    }\n  }\n\n  if (t.columns.length === 1 && t.columns[0].name === JSON_COLUMN_ID) {\n    for (let i = 0; i < recordset.length; i++) {\n      t.rows.add(JSON.stringify(recordset[i]))\n    }\n  } else {\n    for (let i = 0; i < recordset.length; i++) {\n      t.rows.add.apply(t.rows, t.columns.map(col => recordset[i][col.name]))\n    }\n  }\n\n  return t\n}\n\nTable.parseName = function parseName (name) {\n  const length = name.length\n  let cursor = -1\n  let buffer = ''\n  let escaped = false\n  const path = []\n\n  while (++cursor < length) {\n    const char = name.charAt(cursor)\n    if (char === '[') {\n      if (escaped) {\n        buffer += char\n      } else {\n        escaped = true\n      }\n    } else if (char === ']') {\n      if (escaped) {\n        escaped = false\n      } else {\n        throw new Error('Invalid table name.')\n      }\n    } else if (char === '.') {\n      if (escaped) {\n        buffer += char\n      } else {\n        path.push(buffer)\n        buffer = ''\n      }\n    } else {\n      buffer += char\n    }\n  }\n\n  if (buffer) {\n    path.push(buffer)\n  }\n\n  switch (path.length) {\n    case 1:\n      return {\n        name: path[0],\n        schema: null,\n        database: null\n      }\n\n    case 2:\n      return {\n        name: path[1],\n        schema: path[0],\n        database: null\n      }\n\n    case 3:\n      return {\n        name: path[2],\n        schema: path[1],\n        database: path[0]\n      }\n\n    default:\n      throw new Error('Invalid table name.')\n  }\n}\n\nmodule.exports = Table\n","'use strict'\n\nconst TYPES = require('./datatypes').TYPES\nconst Table = require('./table')\n\nlet PromiseLibrary = Promise\nconst driver = {}\nconst map = []\n\n/**\n * Register you own type map.\n *\n * @path module.exports.map\n * @param {*} jstype JS data type.\n * @param {*} sqltype SQL data type.\n */\n\nmap.register = function (jstype, sqltype) {\n  for (let index = 0; index < this.length; index++) {\n    const item = this[index]\n    if (item.js === jstype) {\n      this.splice(index, 1)\n      break\n    }\n  }\n\n  this.push({\n    js: jstype,\n    sql: sqltype\n  })\n\n  return null\n}\n\nmap.register(String, TYPES.NVarChar)\nmap.register(Number, TYPES.Int)\nmap.register(Boolean, TYPES.Bit)\nmap.register(Date, TYPES.DateTime)\nmap.register(Buffer, TYPES.VarBinary)\nmap.register(Table, TYPES.TVP)\n\n/**\n * @ignore\n */\n\nconst getTypeByValue = function (value) {\n  if ((value === null) || (value === undefined)) { return TYPES.NVarChar }\n\n  switch (typeof value) {\n    case 'string':\n      for (const item of Array.from(map)) {\n        if (item.js === String) {\n          return item.sql\n        }\n      }\n\n      return TYPES.NVarChar\n\n    case 'number':\n    case 'bigint':\n      if (value % 1 === 0) {\n        if (value < -2147483648 || value > 2147483647) {\n          return TYPES.BigInt\n        } else {\n          return TYPES.Int\n        }\n      } else {\n        return TYPES.Float\n      }\n\n    case 'boolean':\n      for (const item of Array.from(map)) {\n        if (item.js === Boolean) {\n          return item.sql\n        }\n      }\n\n      return TYPES.Bit\n\n    case 'object':\n      for (const item of Array.from(map)) {\n        if (value instanceof item.js) {\n          return item.sql\n        }\n      }\n\n      return TYPES.NVarChar\n\n    default:\n      return TYPES.NVarChar\n  }\n}\n\nmodule.exports = {\n  driver,\n  getTypeByValue,\n  map\n}\n\nObject.defineProperty(module.exports, 'Promise', {\n  get: () => {\n    return PromiseLibrary\n  },\n  set: (value) => {\n    PromiseLibrary = value\n  }\n})\n\nObject.defineProperty(module.exports, 'valueHandler', {\n  enumerable: true,\n  value: new Map(),\n  writable: false,\n  configurable: false\n})\n","'use strict'\nmodule.exports = rfdc\n\nfunction copyBuffer (cur) {\n  if (cur instanceof Buffer) {\n    return Buffer.from(cur)\n  }\n\n  return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length)\n}\n\nfunction rfdc (opts) {\n  opts = opts || {}\n\n  if (opts.circles) return rfdcCircles(opts)\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    var keys = Object.keys(a)\n    var a2 = new Array(keys.length)\n    for (var i = 0; i < keys.length; i++) {\n      var k = keys[i]\n      var cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur instanceof Date) {\n        a2[k] = new Date(cur)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        a2[k] = fn(cur)\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (o instanceof Date) return new Date(o)\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n    if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n    var o2 = {}\n    for (var k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      var cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur instanceof Date) {\n        o2[k] = new Date(cur)\n      } else if (cur instanceof Map) {\n        o2[k] = new Map(cloneArray(Array.from(cur), clone))\n      } else if (cur instanceof Set) {\n        o2[k] = new Set(cloneArray(Array.from(cur), clone))\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = clone(cur)\n      }\n    }\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (o instanceof Date) return new Date(o)\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n    if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n    var o2 = {}\n    for (var k in o) {\n      var cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur instanceof Date) {\n        o2[k] = new Date(cur)\n      } else if (cur instanceof Map) {\n        o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n      } else if (cur instanceof Set) {\n        o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        o2[k] = cloneProto(cur)\n      }\n    }\n    return o2\n  }\n}\n\nfunction rfdcCircles (opts) {\n  var refs = []\n  var refsNew = []\n\n  return opts.proto ? cloneProto : clone\n\n  function cloneArray (a, fn) {\n    var keys = Object.keys(a)\n    var a2 = new Array(keys.length)\n    for (var i = 0; i < keys.length; i++) {\n      var k = keys[i]\n      var cur = a[k]\n      if (typeof cur !== 'object' || cur === null) {\n        a2[k] = cur\n      } else if (cur instanceof Date) {\n        a2[k] = new Date(cur)\n      } else if (ArrayBuffer.isView(cur)) {\n        a2[k] = copyBuffer(cur)\n      } else {\n        var index = refs.indexOf(cur)\n        if (index !== -1) {\n          a2[k] = refsNew[index]\n        } else {\n          a2[k] = fn(cur)\n        }\n      }\n    }\n    return a2\n  }\n\n  function clone (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (o instanceof Date) return new Date(o)\n    if (Array.isArray(o)) return cloneArray(o, clone)\n    if (o instanceof Map) return new Map(cloneArray(Array.from(o), clone))\n    if (o instanceof Set) return new Set(cloneArray(Array.from(o), clone))\n    var o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (var k in o) {\n      if (Object.hasOwnProperty.call(o, k) === false) continue\n      var cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur instanceof Date) {\n        o2[k] = new Date(cur)\n      } else if (cur instanceof Map) {\n        o2[k] = new Map(cloneArray(Array.from(cur), clone))\n      } else if (cur instanceof Set) {\n        o2[k] = new Set(cloneArray(Array.from(cur), clone))\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        var i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = clone(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n\n  function cloneProto (o) {\n    if (typeof o !== 'object' || o === null) return o\n    if (o instanceof Date) return new Date(o)\n    if (Array.isArray(o)) return cloneArray(o, cloneProto)\n    if (o instanceof Map) return new Map(cloneArray(Array.from(o), cloneProto))\n    if (o instanceof Set) return new Set(cloneArray(Array.from(o), cloneProto))\n    var o2 = {}\n    refs.push(o)\n    refsNew.push(o2)\n    for (var k in o) {\n      var cur = o[k]\n      if (typeof cur !== 'object' || cur === null) {\n        o2[k] = cur\n      } else if (cur instanceof Date) {\n        o2[k] = new Date(cur)\n      } else if (cur instanceof Map) {\n        o2[k] = new Map(cloneArray(Array.from(cur), cloneProto))\n      } else if (cur instanceof Set) {\n        o2[k] = new Set(cloneArray(Array.from(cur), cloneProto))\n      } else if (ArrayBuffer.isView(cur)) {\n        o2[k] = copyBuffer(cur)\n      } else {\n        var i = refs.indexOf(cur)\n        if (i !== -1) {\n          o2[k] = refsNew[i]\n        } else {\n          o2[k] = cloneProto(cur)\n        }\n      }\n    }\n    refs.pop()\n    refsNew.pop()\n    return o2\n  }\n}\n","'use strict'\n\nmodule.exports = require('./index.js')()\n","'use strict'\n\nconst MSSQLError = require('./mssql-error')\n\n/**\n * Class PreparedStatementError.\n */\n\nclass PreparedStatementError extends MSSQLError {\n  /**\n   * Creates a new PreparedStatementError.\n   *\n   * @param {String} message Error message.\n   * @param {String} [code] Error code.\n   */\n\n  constructor (message, code) {\n    super(message, code)\n\n    this.name = 'PreparedStatementError'\n  }\n}\n\nmodule.exports = PreparedStatementError\n","'use strict'\n\nconst MSSQLError = require('./mssql-error')\n\n/**\n * Class RequestError.\n *\n * @property {String} number Error number.\n * @property {Number} lineNumber Line number.\n * @property {String} state Error state.\n * @property {String} class Error class.\n * @property {String} serverName Server name.\n * @property {String} procName Procedure name.\n */\n\nclass RequestError extends MSSQLError {\n  /**\n   * Creates a new RequestError.\n   *\n   * @param {String} message Error message.\n   * @param {String} [code] Error code.\n   */\n\n  constructor (message, code) {\n    super(message, code)\n    if (message instanceof Error) {\n      if (message.info) {\n        this.number = message.info.number || message.code // err.code is returned by msnodesql driver\n        this.lineNumber = message.info.lineNumber\n        this.state = message.info.state || message.sqlstate // err.sqlstate is returned by msnodesql driver\n        this.class = message.info.class\n        this.serverName = message.info.serverName\n        this.procName = message.info.procName\n      } else {\n        // Use err attributes returned by msnodesql driver\n        this.number = message.code\n        this.lineNumber = message.lineNumber\n        this.state = message.sqlstate\n        this.class = message.severity\n        this.serverName = message.serverName\n        this.procName = message.procName\n      }\n    }\n\n    this.name = 'RequestError'\n    const parsedMessage = (/^\\[Microsoft\\]\\[SQL Server Native Client 11\\.0\\](?:\\[SQL Server\\])?([\\s\\S]*)$/).exec(this.message)\n    if (parsedMessage) {\n      this.message = parsedMessage[1]\n    }\n  }\n}\n\nmodule.exports = RequestError\n","'use strict'\n\nconst MSSQLError = require('./mssql-error')\n\n/**\n * Class TransactionError.\n */\n\nclass TransactionError extends MSSQLError {\n  /**\n   * Creates a new TransactionError.\n   *\n   * @param {String} message Error message.\n   * @param {String} [code] Error code.\n   */\n\n  constructor (message, code) {\n    super(message, code)\n\n    this.name = 'TransactionError'\n  }\n}\n\nmodule.exports = TransactionError\n","'use strict'\n\nconst ConnectionError = require('./connection-error')\nconst MSSQLError = require('./mssql-error')\nconst PreparedStatementError = require('./prepared-statement-error')\nconst RequestError = require('./request-error')\nconst TransactionError = require('./transaction-error')\n\nmodule.exports = {\n  ConnectionError,\n  MSSQLError,\n  PreparedStatementError,\n  RequestError,\n  TransactionError\n}\n","'use strict'\n\nconst { EventEmitter } = require('node:events')\nconst debug = require('debug')('mssql:base')\nconst { parseSqlConnectionString } = require('@tediousjs/connection-string')\nconst tarn = require('tarn')\nconst { IDS } = require('../utils')\nconst ConnectionError = require('../error/connection-error')\nconst shared = require('../shared')\nconst clone = require('rfdc/default')\nconst { MSSQLError } = require('../error')\n\n/**\n * Class ConnectionPool.\n *\n * Internally, each `Connection` instance is a separate pool of TDS connections. Once you create a new `Request`/`Transaction`/`Prepared Statement`, a new TDS connection is acquired from the pool and reserved for desired action. Once the action is complete, connection is released back to the pool.\n *\n * @property {Boolean} connected If true, connection is established.\n * @property {Boolean} connecting If true, connection is being established.\n *\n * @fires ConnectionPool#connect\n * @fires ConnectionPool#close\n */\n\nclass ConnectionPool extends EventEmitter {\n  /**\n   * Create new Connection.\n   *\n   * @param {Object|String} config Connection configuration object or connection string.\n   * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred.\n   */\n\n  constructor (config, callback) {\n    super()\n\n    IDS.add(this, 'ConnectionPool')\n    debug('pool(%d): created', IDS.get(this))\n\n    this._connectStack = []\n    this._closeStack = []\n\n    this._connected = false\n    this._connecting = false\n    this._healthy = false\n\n    if (typeof config === 'string') {\n      try {\n        this.config = this.constructor.parseConnectionString(config)\n      } catch (ex) {\n        if (typeof callback === 'function') {\n          return setImmediate(callback, ex)\n        }\n        throw ex\n      }\n    } else {\n      this.config = clone(config)\n    }\n\n    // set defaults\n    this.config.port = this.config.port || 1433\n    this.config.options = this.config.options || {}\n    this.config.stream = this.config.stream || false\n    this.config.parseJSON = this.config.parseJSON || false\n    this.config.arrayRowMode = this.config.arrayRowMode || false\n    this.config.validateConnection = 'validateConnection' in this.config ? this.config.validateConnection : true\n\n    const namedServer = /^(.*)\\\\(.*)$/.exec(this.config.server)\n    if (namedServer) {\n      this.config.server = namedServer[1]\n      this.config.options.instanceName = namedServer[2]\n    }\n\n    if (typeof this.config.options.useColumnNames !== 'undefined' && this.config.options.useColumnNames !== true) {\n      const ex = new MSSQLError('Invalid options `useColumnNames`, use `arrayRowMode` instead')\n      if (typeof callback === 'function') {\n        return setImmediate(callback, ex)\n      }\n      throw ex\n    }\n\n    if (typeof callback === 'function') {\n      this.connect(callback)\n    }\n  }\n\n  get connected () {\n    return this._connected\n  }\n\n  get connecting () {\n    return this._connecting\n  }\n\n  get healthy () {\n    return this._healthy\n  }\n\n  static parseConnectionString (connectionString) {\n    return this._parseConnectionString(connectionString)\n  }\n\n  static _parseAuthenticationType (type, entries) {\n    switch (type.toLowerCase()) {\n      case 'active directory integrated':\n        if (entries.includes('token')) {\n          return 'azure-active-directory-access-token'\n        } else if (['client id', 'client secret', 'tenant id'].every(entry => entries.includes(entry))) {\n          return 'azure-active-directory-service-principal-secret'\n        } else if (['client id', 'msi endpoint', 'msi secret'].every(entry => entries.includes(entry))) {\n          return 'azure-active-directory-msi-app-service'\n        } else if (['client id', 'msi endpoint'].every(entry => entries.includes(entry))) {\n          return 'azure-active-directory-msi-vm'\n        }\n        return 'azure-active-directory-default'\n      case 'active directory password':\n        return 'azure-active-directory-password'\n      case 'ntlm':\n        return 'ntlm'\n      default:\n        return 'default'\n    }\n  }\n\n  static _parseConnectionString (connectionString) {\n    const parsed = parseSqlConnectionString(connectionString, true, true)\n    return Object.entries(parsed).reduce((config, [key, value]) => {\n      switch (key) {\n        case 'application name':\n          break\n        case 'applicationintent':\n          Object.assign(config.options, {\n            readOnlyIntent: value === 'readonly'\n          })\n          break\n        case 'asynchronous processing':\n          break\n        case 'attachdbfilename':\n          break\n        case 'authentication':\n          Object.assign(config, {\n            authentication_type: this._parseAuthenticationType(value, Object.keys(parsed))\n          })\n          break\n        case 'column encryption setting':\n          break\n        case 'connection timeout':\n          Object.assign(config, {\n            connectionTimeout: value * 1000\n          })\n          break\n        case 'connection lifetime':\n          break\n        case 'connectretrycount':\n          break\n        case 'connectretryinterval':\n          Object.assign(config.options, {\n            connectionRetryInterval: value * 1000\n          })\n          break\n        case 'context connection':\n          break\n        case 'client id':\n          Object.assign(config, {\n            clientId: value\n          })\n          break\n        case 'client secret':\n          Object.assign(config, {\n            clientSecret: value\n          })\n          break\n        case 'current language':\n          Object.assign(config.options, {\n            language: value\n          })\n          break\n        case 'data source':\n        {\n          let server = value\n          let instanceName\n          let port = 1433\n          if (/^np:/i.test(server)) {\n            throw new Error('Connection via Named Pipes is not supported.')\n          }\n          if (/^tcp:/i.test(server)) {\n            server = server.substr(4)\n          }\n          const namedServerParts = /^(.*)\\\\(.*)$/.exec(server)\n          if (namedServerParts) {\n            server = namedServerParts[1].trim()\n            instanceName = namedServerParts[2].trim()\n          }\n          const serverParts = /^(.*),(.*)$/.exec(server)\n          if (serverParts) {\n            server = serverParts[1].trim()\n            port = parseInt(serverParts[2].trim(), 10)\n          } else {\n            const instanceParts = /^(.*),(.*)$/.exec(instanceName)\n            if (instanceParts) {\n              instanceName = instanceParts[1].trim()\n              port = parseInt(instanceParts[2].trim(), 10)\n            }\n          }\n          if (server === '.' || server === '(.)' || server.toLowerCase() === '(localdb)' || server.toLowerCase() === '(local)') {\n            server = 'localhost'\n          }\n          Object.assign(config, {\n            port,\n            server\n          })\n          if (instanceName) {\n            Object.assign(config.options, {\n              instanceName\n            })\n          }\n          break\n        }\n        case 'encrypt':\n          Object.assign(config.options, {\n            encrypt: !!value\n          })\n          break\n        case 'enlist':\n          break\n        case 'failover partner':\n          break\n        case 'initial catalog':\n          Object.assign(config, {\n            database: value\n          })\n          break\n        case 'integrated security':\n          break\n        case 'max pool size':\n          Object.assign(config.pool, {\n            max: value\n          })\n          break\n        case 'min pool size':\n          Object.assign(config.pool, {\n            min: value\n          })\n          break\n        case 'msi endpoint':\n          Object.assign(config, {\n            msiEndpoint: value\n          })\n          break\n        case 'msi secret':\n          Object.assign(config, {\n            msiSecret: value\n          })\n          break\n        case 'multipleactiveresultsets':\n          break\n        case 'multisubnetfailover':\n          Object.assign(config.options, {\n            multiSubnetFailover: value\n          })\n          break\n        case 'network library':\n          break\n        case 'packet size':\n          Object.assign(config.options, {\n            packetSize: value\n          })\n          break\n        case 'password':\n          Object.assign(config, {\n            password: value\n          })\n          break\n        case 'persist security info':\n          break\n        case 'poolblockingperiod':\n          break\n        case 'pooling':\n          break\n        case 'replication':\n          break\n        case 'tenant id':\n          Object.assign(config, {\n            tenantId: value\n          })\n          break\n        case 'token':\n          Object.assign(config, {\n            token: value\n          })\n          break\n        case 'transaction binding':\n          Object.assign(config.options, {\n            enableImplicitTransactions: value.toLowerCase() === 'implicit unbind'\n          })\n          break\n        case 'transparentnetworkipresolution':\n          break\n        case 'trustservercertificate':\n          Object.assign(config.options, {\n            trustServerCertificate: value\n          })\n          break\n        case 'type system version':\n          break\n        case 'user id': {\n          let user = value\n          let domain\n          const domainUser = /^(.*)\\\\(.*)$/.exec(user)\n          if (domainUser) {\n            domain = domainUser[1]\n            user = domainUser[2]\n          }\n          if (domain) {\n            Object.assign(config, {\n              domain\n            })\n          }\n          if (user) {\n            Object.assign(config, {\n              user\n            })\n          }\n          break\n        }\n        case 'user instance':\n          break\n        case 'workstation id':\n          Object.assign(config.options, {\n            workstationId: value\n          })\n          break\n        case 'request timeout':\n          Object.assign(config, {\n            requestTimeout: parseInt(value, 10)\n          })\n          break\n        case 'stream':\n          Object.assign(config, {\n            stream: !!value\n          })\n          break\n        case 'useutc':\n          Object.assign(config.options, {\n            useUTC: !!value\n          })\n          break\n        case 'parsejson':\n          Object.assign(config, {\n            parseJSON: !!value\n          })\n          break\n      }\n      return config\n    }, { options: {}, pool: {} })\n  }\n\n  /**\n   * Acquire connection from this connection pool.\n   *\n   * @param {ConnectionPool|Transaction|PreparedStatement} requester Requester.\n   * @param {acquireCallback} [callback] A callback which is called after connection has been acquired, or an error has occurred. If omited, method returns Promise.\n   * @return {ConnectionPool|Promise}\n   */\n\n  acquire (requester, callback) {\n    const acquirePromise = shared.Promise.resolve(this._acquire()).catch(err => {\n      this.emit('error', err)\n      throw err\n    })\n    if (typeof callback === 'function') {\n      acquirePromise.then(connection => callback(null, connection, this.config)).catch(callback)\n      return this\n    }\n\n    return acquirePromise\n  }\n\n  _acquire () {\n    if (!this.pool) {\n      return shared.Promise.reject(new ConnectionError('Connection not yet open.', 'ENOTOPEN'))\n    } else if (this.pool.destroyed) {\n      return shared.Promise.reject(new ConnectionError('Connection is closing', 'ENOTOPEN'))\n    }\n\n    return this.pool.acquire().promise\n  }\n\n  /**\n   * Release connection back to the pool.\n   *\n   * @param {Connection} connection Previously acquired connection.\n   * @return {ConnectionPool}\n   */\n\n  release (connection) {\n    debug('connection(%d): released', IDS.get(connection))\n\n    if (this.pool) {\n      this.pool.release(connection)\n    }\n    return this\n  }\n\n  /**\n   * Creates a new connection pool with one active connection. This one initial connection serves as a probe to find out whether the configuration is valid.\n   *\n   * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise.\n   * @return {ConnectionPool|Promise}\n   */\n\n  connect (callback) {\n    if (typeof callback === 'function') {\n      this._connect(callback)\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      return this._connect(err => {\n        if (err) return reject(err)\n        resolve(this)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {basicCallback} callback\n   */\n\n  _connect (callback) {\n    if (this._connected) {\n      debug('pool(%d): already connected, executing connect callback immediately', IDS.get(this))\n      return setImmediate(callback, null, this)\n    }\n\n    this._connectStack.push(callback)\n\n    if (this._connecting) {\n      return\n    }\n\n    this._connecting = true\n    debug('pool(%d): connecting', IDS.get(this))\n\n    // create one test connection to check if everything is ok\n    this._poolCreate().then((connection) => {\n      debug('pool(%d): connected', IDS.get(this))\n      this._healthy = true\n\n      return this._poolDestroy(connection).then(() => {\n        // prepare pool\n        this.pool = new tarn.Pool(\n          Object.assign({\n            create: () => this._poolCreate()\n              .then(connection => {\n                this._healthy = true\n                return connection\n              })\n              .catch(err => {\n                if (this.pool.numUsed() + this.pool.numFree() <= 0) {\n                  this._healthy = false\n                }\n                throw err\n              }),\n            validate: this._poolValidate.bind(this),\n            destroy: this._poolDestroy.bind(this),\n            max: 10,\n            min: 0,\n            idleTimeoutMillis: 30000,\n            propagateCreateError: true\n          }, this.config.pool)\n        )\n\n        this._connecting = false\n        this._connected = true\n      })\n    }).then(() => {\n      this._connectStack.forEach((cb) => {\n        setImmediate(cb, null, this)\n      })\n    }).catch(err => {\n      this._connecting = false\n      this._connectStack.forEach((cb) => {\n        setImmediate(cb, err)\n      })\n    }).then(() => {\n      this._connectStack = []\n    })\n  }\n\n  get size () {\n    return this.pool.numFree() + this.pool.numUsed() + this.pool.numPendingCreates()\n  }\n\n  get available () {\n    return this.pool.numFree()\n  }\n\n  get pending () {\n    return this.pool.numPendingAcquires()\n  }\n\n  get borrowed () {\n    return this.pool.numUsed()\n  }\n\n  /**\n   * Close all active connections in the pool.\n   *\n   * @param {basicCallback} [callback] A callback which is called after connection has closed, or an error has occurred. If omited, method returns Promise.\n   * @return {ConnectionPool|Promise}\n   */\n\n  close (callback) {\n    if (typeof callback === 'function') {\n      this._close(callback)\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._close(err => {\n        if (err) return reject(err)\n        resolve(this)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {basicCallback} callback\n   */\n\n  _close (callback) {\n    // we don't allow pools in a connecting state to be closed because it means there are far too many\n    // edge cases to deal with\n    if (this._connecting) {\n      debug('pool(%d): close called while connecting', IDS.get(this))\n      setImmediate(callback, new ConnectionError('Cannot close a pool while it is connecting'))\n    }\n\n    if (!this.pool) {\n      debug('pool(%d): already closed, executing close callback immediately', IDS.get(this))\n      return setImmediate(callback, null)\n    }\n\n    this._closeStack.push(callback)\n\n    if (this.pool.destroyed) return\n\n    this._connecting = this._connected = this._healthy = false\n\n    this.pool.destroy().then(() => {\n      debug('pool(%d): pool closed, removing pool reference and executing close callbacks', IDS.get(this))\n      this.pool = null\n      this._closeStack.forEach(cb => {\n        setImmediate(cb, null)\n      })\n    }).catch(err => {\n      this.pool = null\n      this._closeStack.forEach(cb => {\n        setImmediate(cb, err)\n      })\n    }).then(() => {\n      this._closeStack = []\n    })\n  }\n\n  /**\n   * Returns new request using this connection.\n   *\n   * @return {Request}\n   */\n\n  request () {\n    return new shared.driver.Request(this)\n  }\n\n  /**\n   * Returns new transaction using this connection.\n   *\n   * @return {Transaction}\n   */\n\n  transaction () {\n    return new shared.driver.Transaction(this)\n  }\n\n  /**\n   * Creates a new query using this connection from a tagged template string.\n   *\n   * @variation 1\n   * @param {Array} strings Array of string literals.\n   * @param {...*} keys Values.\n   * @return {Request}\n   */\n\n  /**\n   * Execute the SQL command.\n   *\n   * @variation 2\n   * @param {String} command T-SQL command to be executed.\n   * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  query () {\n    if (typeof arguments[0] === 'string') { return new shared.driver.Request(this).query(arguments[0], arguments[1]) }\n\n    const values = Array.prototype.slice.call(arguments)\n    const strings = values.shift()\n\n    return new shared.driver.Request(this)._template(strings, values, 'query')\n  }\n\n  /**\n   * Creates a new batch using this connection from a tagged template string.\n   *\n   * @variation 1\n   * @param {Array} strings Array of string literals.\n   * @param {...*} keys Values.\n   * @return {Request}\n   */\n\n  /**\n   * Execute the SQL command.\n   *\n   * @variation 2\n   * @param {String} command T-SQL command to be executed.\n   * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  batch () {\n    if (typeof arguments[0] === 'string') { return new shared.driver.Request(this).batch(arguments[0], arguments[1]) }\n\n    const values = Array.prototype.slice.call(arguments)\n    const strings = values.shift()\n\n    return new shared.driver.Request(this)._template(strings, values, 'batch')\n  }\n}\n\nmodule.exports = ConnectionPool\n","'use strict'\n\nconst shared = require('./shared')\n\nlet globalConnection = null\nconst globalConnectionHandlers = {}\n\n/**\n * Open global connection pool.\n *\n * @param {Object|String} config Connection configuration object or connection string.\n * @param {basicCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise.\n * @return {Promise.<ConnectionPool>}\n */\n\nfunction connect (config, callback) {\n  if (!globalConnection) {\n    globalConnection = new shared.driver.ConnectionPool(config)\n\n    for (const event in globalConnectionHandlers) {\n      for (let i = 0, l = globalConnectionHandlers[event].length; i < l; i++) {\n        globalConnection.on(event, globalConnectionHandlers[event][i])\n      }\n    }\n\n    const ogClose = globalConnection.close\n\n    const globalClose = function (callback) {\n      // remove event handlers from the global connection\n      for (const event in globalConnectionHandlers) {\n        for (let i = 0, l = globalConnectionHandlers[event].length; i < l; i++) {\n          this.removeListener(event, globalConnectionHandlers[event][i])\n        }\n      }\n\n      // attach error handler to prevent process crash in case of error\n      this.on('error', err => {\n        if (globalConnectionHandlers.error) {\n          for (let i = 0, l = globalConnectionHandlers.error.length; i < l; i++) {\n            globalConnectionHandlers.error[i].call(this, err)\n          }\n        }\n      })\n\n      globalConnection = null\n      return ogClose.call(this, callback)\n    }\n\n    globalConnection.close = globalClose.bind(globalConnection)\n  }\n  if (typeof callback === 'function') {\n    return globalConnection.connect((err, connection) => {\n      if (err) {\n        globalConnection = null\n      }\n      callback(err, connection)\n    })\n  }\n  return globalConnection.connect().catch((err) => {\n    globalConnection = null\n    return shared.Promise.reject(err)\n  })\n}\n\n/**\n * Close all active connections in the global pool.\n *\n * @param {basicCallback} [callback] A callback which is called after connection has closed, or an error has occurred. If omited, method returns Promise.\n * @return {ConnectionPool|Promise}\n */\n\nfunction close (callback) {\n  if (globalConnection) {\n    const gc = globalConnection\n    globalConnection = null\n    return gc.close(callback)\n  }\n\n  if (typeof callback === 'function') {\n    setImmediate(callback)\n    return null\n  }\n\n  return new shared.Promise((resolve) => {\n    resolve(globalConnection)\n  })\n}\n\n/**\n * Attach event handler to global connection pool.\n *\n * @param {String} event Event name.\n * @param {Function} handler Event handler.\n * @return {ConnectionPool}\n */\n\nfunction on (event, handler) {\n  if (!globalConnectionHandlers[event]) globalConnectionHandlers[event] = []\n  globalConnectionHandlers[event].push(handler)\n\n  if (globalConnection) globalConnection.on(event, handler)\n  return globalConnection\n}\n\n/**\n * Detach event handler from global connection.\n *\n * @param {String} event Event name.\n * @param {Function} handler Event handler.\n * @return {ConnectionPool}\n */\n\nfunction removeListener (event, handler) {\n  if (!globalConnectionHandlers[event]) return globalConnection\n  const index = globalConnectionHandlers[event].indexOf(handler)\n  if (index === -1) return globalConnection\n  globalConnectionHandlers[event].splice(index, 1)\n  if (globalConnectionHandlers[event].length === 0) globalConnectionHandlers[event] = undefined\n\n  if (globalConnection) globalConnection.removeListener(event, handler)\n  return globalConnection\n}\n\n/**\n * Creates a new query using global connection from a tagged template string.\n *\n * @variation 1\n * @param {Array|String} strings Array of string literals or sql command.\n * @param {...*} keys Values.\n * @return {Request}\n */\n\n/**\n * Execute the SQL command.\n *\n * @variation 2\n * @param {String} command T-SQL command to be executed.\n * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n * @return {Request|Promise}\n */\n\nfunction query () {\n  if (typeof arguments[0] === 'string') { return new shared.driver.Request().query(arguments[0], arguments[1]) }\n\n  const values = Array.prototype.slice.call(arguments)\n  const strings = values.shift()\n\n  return new shared.driver.Request()._template(strings, values, 'query')\n}\n\n/**\n * Creates a new batch using global connection from a tagged template string.\n *\n * @variation 1\n * @param {Array} strings Array of string literals.\n * @param {...*} keys Values.\n * @return {Request}\n */\n\n/**\n * Execute the SQL command.\n *\n * @variation 2\n * @param {String} command T-SQL command to be executed.\n * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n * @return {Request|Promise}\n */\n\nfunction batch () {\n  if (typeof arguments[0] === 'string') { return new shared.driver.Request().batch(arguments[0], arguments[1]) }\n\n  const values = Array.prototype.slice.call(arguments)\n  const strings = values.shift()\n\n  return new shared.driver.Request()._template(strings, values, 'batch')\n}\n\nmodule.exports = {\n  batch,\n  close,\n  connect,\n  off: removeListener,\n  on,\n  query,\n  removeListener\n}\n\nObject.defineProperty(module.exports, 'pool', {\n  get: () => {\n    return globalConnection\n  },\n  set: () => {}\n})\n","'use strict'\n\nconst debug = require('debug')('mssql:base')\nconst { EventEmitter } = require('node:events')\nconst { IDS, objectHasProperty } = require('../utils')\nconst globalConnection = require('../global-connection')\nconst { TransactionError, PreparedStatementError } = require('../error')\nconst shared = require('../shared')\nconst { TYPES, declare } = require('../datatypes')\n\n/**\n * Class PreparedStatement.\n *\n * IMPORTANT: Rememeber that each prepared statement means one reserved connection from the pool. Don't forget to unprepare a prepared statement!\n *\n * @property {String} statement Prepared SQL statement.\n */\n\nclass PreparedStatement extends EventEmitter {\n  /**\n   * Creates a new Prepared Statement.\n   *\n   * @param {ConnectionPool|Transaction} [holder]\n   */\n\n  constructor (parent) {\n    super()\n\n    IDS.add(this, 'PreparedStatement')\n    debug('ps(%d): created', IDS.get(this))\n\n    this.parent = parent || globalConnection.pool\n    this._handle = 0\n    this.prepared = false\n    this.parameters = {}\n  }\n\n  get config () {\n    return this.parent.config\n  }\n\n  get connected () {\n    return this.parent.connected\n  }\n\n  /**\n   * Acquire connection from connection pool.\n   *\n   * @param {Request} request Request.\n   * @param {ConnectionPool~acquireCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise.\n   * @return {PreparedStatement|Promise}\n   */\n\n  acquire (request, callback) {\n    if (!this._acquiredConnection) {\n      setImmediate(callback, new PreparedStatementError('Statement is not prepared. Call prepare() first.', 'ENOTPREPARED'))\n      return this\n    }\n\n    if (this._activeRequest) {\n      setImmediate(callback, new TransactionError(\"Can't acquire connection for the request. There is another request in progress.\", 'EREQINPROG'))\n      return this\n    }\n\n    this._activeRequest = request\n    setImmediate(callback, null, this._acquiredConnection, this._acquiredConfig)\n    return this\n  }\n\n  /**\n   * Release connection back to the pool.\n   *\n   * @param {Connection} connection Previously acquired connection.\n   * @return {PreparedStatement}\n   */\n\n  release (connection) {\n    if (connection === this._acquiredConnection) {\n      this._activeRequest = null\n    }\n\n    return this\n  }\n\n  /**\n   * Add an input parameter to the prepared statement.\n   *\n   * @param {String} name Name of the input parameter without @ char.\n   * @param {*} type SQL data type of input parameter.\n   * @return {PreparedStatement}\n   */\n\n  input (name, type) {\n    if (/--| |\\/\\*|\\*\\/|'/.test(name)) {\n      throw new PreparedStatementError(`SQL injection warning for param '${name}'`, 'EINJECT')\n    }\n\n    if (arguments.length < 2) {\n      throw new PreparedStatementError('Invalid number of arguments. 2 arguments expected.', 'EARGS')\n    }\n\n    if (type instanceof Function) {\n      type = type()\n    }\n\n    if (objectHasProperty(this.parameters, name)) {\n      throw new PreparedStatementError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM')\n    }\n\n    this.parameters[name] = {\n      name,\n      type: type.type,\n      io: 1,\n      length: type.length,\n      scale: type.scale,\n      precision: type.precision,\n      tvpType: type.tvpType\n    }\n\n    return this\n  }\n\n  /**\n   * Replace an input parameter on the request.\n   *\n   * @param {String} name Name of the input parameter without @ char.\n   * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type.\n   * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values.\n   * @return {Request}\n   */\n\n  replaceInput (name, type, value) {\n    delete this.parameters[name]\n\n    return this.input(name, type, value)\n  }\n\n  /**\n   * Add an output parameter to the prepared statement.\n   *\n   * @param {String} name Name of the output parameter without @ char.\n   * @param {*} type SQL data type of output parameter.\n   * @return {PreparedStatement}\n   */\n\n  output (name, type) {\n    if (/--| |\\/\\*|\\*\\/|'/.test(name)) {\n      throw new PreparedStatementError(`SQL injection warning for param '${name}'`, 'EINJECT')\n    }\n\n    if (arguments.length < 2) {\n      throw new PreparedStatementError('Invalid number of arguments. 2 arguments expected.', 'EARGS')\n    }\n\n    if (type instanceof Function) type = type()\n\n    if (objectHasProperty(this.parameters, name)) {\n      throw new PreparedStatementError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM')\n    }\n\n    this.parameters[name] = {\n      name,\n      type: type.type,\n      io: 2,\n      length: type.length,\n      scale: type.scale,\n      precision: type.precision\n    }\n\n    return this\n  }\n\n  /**\n   * Replace an output parameter on the request.\n   *\n   * @param {String} name Name of the output parameter without @ char.\n   * @param {*} type SQL data type of output parameter.\n   * @return {PreparedStatement}\n   */\n\n  replaceOutput (name, type) {\n    delete this.parameters[name]\n\n    return this.output(name, type)\n  }\n\n  /**\n   * Prepare a statement.\n   *\n   * @param {String} statement SQL statement to prepare.\n   * @param {basicCallback} [callback] A callback which is called after preparation has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {PreparedStatement|Promise}\n   */\n\n  prepare (statement, callback) {\n    if (typeof callback === 'function') {\n      this._prepare(statement, callback)\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._prepare(statement, err => {\n        if (err) return reject(err)\n        resolve(this)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {String} statement\n   * @param {basicCallback} callback\n   */\n\n  _prepare (statement, callback) {\n    debug('ps(%d): prepare', IDS.get(this))\n\n    if (typeof statement === 'function') {\n      callback = statement\n      statement = undefined\n    }\n\n    if (this.prepared) {\n      return setImmediate(callback, new PreparedStatementError('Statement is already prepared.', 'EALREADYPREPARED'))\n    }\n\n    this.statement = statement || this.statement\n\n    this.parent.acquire(this, (err, connection, config) => {\n      if (err) return callback(err)\n\n      this._acquiredConnection = connection\n      this._acquiredConfig = config\n\n      const req = new shared.driver.Request(this)\n      req.stream = false\n      req.output('handle', TYPES.Int)\n      req.input('params', TYPES.NVarChar, ((() => {\n        const result = []\n        for (const name in this.parameters) {\n          if (!objectHasProperty(this.parameters, name)) {\n            continue\n          }\n          const param = this.parameters[name]\n          result.push(`@${name} ${declare(param.type, param)}${param.io === 2 ? ' output' : ''}`)\n        }\n        return result\n      })()).join(','))\n      req.input('stmt', TYPES.NVarChar, this.statement)\n      req.execute('sp_prepare', (err, result) => {\n        if (err) {\n          this.parent.release(this._acquiredConnection)\n          this._acquiredConnection = null\n          this._acquiredConfig = null\n\n          return callback(err)\n        }\n\n        debug('ps(%d): prepared', IDS.get(this))\n\n        this._handle = result.output.handle\n        this.prepared = true\n\n        callback(null)\n      })\n    })\n  }\n\n  /**\n   * Execute a prepared statement.\n   *\n   * @param {Object} values An object whose names correspond to the names of parameters that were added to the prepared statement before it was prepared.\n   * @param {basicCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  execute (values, callback) {\n    if (this.stream || (typeof callback === 'function')) {\n      return this._execute(values, callback)\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._execute(values, (err, recordset) => {\n        if (err) return reject(err)\n        resolve(recordset)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {Object} values\n   * @param {basicCallback} callback\n   */\n\n  _execute (values, callback) {\n    const req = new shared.driver.Request(this)\n    req.stream = this.stream\n    req.arrayRowMode = this.arrayRowMode\n    req.input('handle', TYPES.Int, this._handle)\n\n    // copy parameters with new values\n    for (const name in this.parameters) {\n      if (!objectHasProperty(this.parameters, name)) {\n        continue\n      }\n      const param = this.parameters[name]\n      req.parameters[name] = {\n        name,\n        type: param.type,\n        io: param.io,\n        value: values[name],\n        length: param.length,\n        scale: param.scale,\n        precision: param.precision\n      }\n    }\n\n    req.execute('sp_execute', (err, result) => {\n      if (err) return callback(err)\n\n      callback(null, result)\n    })\n\n    return req\n  }\n\n  /**\n   * Unprepare a prepared statement.\n   *\n   * @param {basicCallback} [callback] A callback which is called after unpreparation has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {PreparedStatement|Promise}\n   */\n\n  unprepare (callback) {\n    if (typeof callback === 'function') {\n      this._unprepare(callback)\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._unprepare(err => {\n        if (err) return reject(err)\n        resolve()\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {basicCallback} callback\n   */\n\n  _unprepare (callback) {\n    debug('ps(%d): unprepare', IDS.get(this))\n\n    if (!this.prepared) {\n      return setImmediate(callback, new PreparedStatementError('Statement is not prepared. Call prepare() first.', 'ENOTPREPARED'))\n    }\n\n    if (this._activeRequest) {\n      return setImmediate(callback, new TransactionError(\"Can't unprepare the statement. There is a request in progress.\", 'EREQINPROG'))\n    }\n\n    const req = new shared.driver.Request(this)\n    req.stream = false\n    req.input('handle', TYPES.Int, this._handle)\n    req.execute('sp_unprepare', err => {\n      if (err) return callback(err)\n\n      this.parent.release(this._acquiredConnection)\n      this._acquiredConnection = null\n      this._acquiredConfig = null\n      this._handle = 0\n      this.prepared = false\n\n      debug('ps(%d): unprepared', IDS.get(this))\n\n      return callback(null)\n    })\n  }\n}\n\nmodule.exports = PreparedStatement\n","'use strict'\n\nconst debug = require('debug')('mssql:base')\nconst { EventEmitter } = require('node:events')\nconst { Readable } = require('node:stream')\nconst { IDS, objectHasProperty } = require('../utils')\nconst globalConnection = require('../global-connection')\nconst { RequestError, ConnectionError } = require('../error')\nconst { TYPES } = require('../datatypes')\nconst shared = require('../shared')\n\n/**\n * Class Request.\n *\n * @property {Transaction} transaction Reference to transaction when request was created in transaction.\n * @property {*} parameters Collection of input and output parameters.\n * @property {Boolean} canceled `true` if request was canceled.\n *\n * @fires Request#recordset\n * @fires Request#row\n * @fires Request#done\n * @fires Request#error\n */\n\nclass Request extends EventEmitter {\n  /**\n   * Create new Request.\n   *\n   * @param {Connection|ConnectionPool|Transaction|PreparedStatement} parent If omitted, global connection is used instead.\n   */\n\n  constructor (parent) {\n    super()\n\n    IDS.add(this, 'Request')\n    debug('request(%d): created', IDS.get(this))\n\n    this.canceled = false\n    this._paused = false\n    this.parent = parent || globalConnection.pool\n    this.parameters = {}\n    this.stream = null\n    this.arrayRowMode = null\n  }\n\n  get paused () {\n    return this._paused\n  }\n\n  /**\n   * Generate sql string and set input parameters from tagged template string.\n   *\n   * @param {Template literal} template\n   * @return {String}\n   */\n  template () {\n    const values = Array.prototype.slice.call(arguments)\n    const strings = values.shift()\n    return this._template(strings, values)\n  }\n\n  /**\n   * Fetch request from tagged template string.\n   *\n   * @private\n   * @param {Array} strings\n   * @param {Array} values\n   * @param {String} [method] If provided, method is automatically called with serialized command on this object.\n   * @return {Request}\n   */\n\n  _template (strings, values, method) {\n    const command = [strings[0]]\n\n    for (let index = 0; index < values.length; index++) {\n      const value = values[index]\n      // if value is an array, prepare each items as it's own comma separated parameter\n      if (Array.isArray(value)) {\n        for (let parameterIndex = 0; parameterIndex < value.length; parameterIndex++) {\n          this.input(`param${index + 1}_${parameterIndex}`, value[parameterIndex])\n          command.push(`@param${index + 1}_${parameterIndex}`)\n          if (parameterIndex < value.length - 1) {\n            command.push(', ')\n          }\n        }\n        command.push(strings[index + 1])\n      } else {\n        this.input(`param${index + 1}`, value)\n        command.push(`@param${index + 1}`, strings[index + 1])\n      }\n    }\n\n    if (method) {\n      return this[method](command.join(''))\n    } else {\n      return command.join('')\n    }\n  }\n\n  /**\n   * Add an input parameter to the request.\n   *\n   * @param {String} name Name of the input parameter without @ char.\n   * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type.\n   * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values.\n   * @return {Request}\n   */\n\n  input (name, type, value) {\n    if (/--| |\\/\\*|\\*\\/|'/.test(name)) {\n      throw new RequestError(`SQL injection warning for param '${name}'`, 'EINJECT')\n    }\n\n    if (arguments.length < 2) {\n      throw new RequestError('Invalid number of arguments. At least 2 arguments expected.', 'EARGS')\n    } else if (arguments.length === 2) {\n      value = type\n      type = shared.getTypeByValue(value)\n    }\n\n    // support for custom data types\n    if (value && typeof value.valueOf === 'function' && !(value instanceof Date)) value = value.valueOf()\n\n    if (value === undefined) value = null // undefined to null\n    if (typeof value === 'number' && isNaN(value)) value = null // NaN to null\n    if (type instanceof Function) type = type()\n\n    if (objectHasProperty(this.parameters, name)) {\n      throw new RequestError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM')\n    }\n\n    this.parameters[name] = {\n      name,\n      type: type.type,\n      io: 1,\n      value,\n      length: type.length,\n      scale: type.scale,\n      precision: type.precision,\n      tvpType: type.tvpType\n    }\n\n    return this\n  }\n\n  /**\n   * Replace an input parameter on the request.\n   *\n   * @param {String} name Name of the input parameter without @ char.\n   * @param {*} [type] SQL data type of input parameter. If you omit type, module automaticaly decide which SQL data type should be used based on JS data type.\n   * @param {*} value Input parameter value. `undefined` and `NaN` values are automatically converted to `null` values.\n   * @return {Request}\n   */\n\n  replaceInput (name, type, value) {\n    delete this.parameters[name]\n\n    return this.input(name, type, value)\n  }\n\n  /**\n   * Add an output parameter to the request.\n   *\n   * @param {String} name Name of the output parameter without @ char.\n   * @param {*} type SQL data type of output parameter.\n   * @param {*} [value] Output parameter value initial value. `undefined` and `NaN` values are automatically converted to `null` values. Optional.\n   * @return {Request}\n   */\n\n  output (name, type, value) {\n    if (!type) { type = TYPES.NVarChar }\n\n    if (/--| |\\/\\*|\\*\\/|'/.test(name)) {\n      throw new RequestError(`SQL injection warning for param '${name}'`, 'EINJECT')\n    }\n\n    if ((type === TYPES.Text) || (type === TYPES.NText) || (type === TYPES.Image)) {\n      throw new RequestError('Deprecated types (Text, NText, Image) are not supported as OUTPUT parameters.', 'EDEPRECATED')\n    }\n\n    // support for custom data types\n    if (value && typeof value.valueOf === 'function' && !(value instanceof Date)) value = value.valueOf()\n\n    if (value === undefined) value = null // undefined to null\n    if (typeof value === 'number' && isNaN(value)) value = null // NaN to null\n    if (type instanceof Function) type = type()\n\n    if (objectHasProperty(this.parameters, name)) {\n      throw new RequestError(`The parameter name ${name} has already been declared. Parameter names must be unique`, 'EDUPEPARAM')\n    }\n\n    this.parameters[name] = {\n      name,\n      type: type.type,\n      io: 2,\n      value,\n      length: type.length,\n      scale: type.scale,\n      precision: type.precision\n    }\n\n    return this\n  }\n\n  /**\n   * Replace an output parameter on the request.\n   *\n   * @param {String} name Name of the output parameter without @ char.\n   * @param {*} type SQL data type of output parameter.\n   * @param {*} [value] Output parameter value initial value. `undefined` and `NaN` values are automatically converted to `null` values. Optional.\n   * @return {Request}\n   */\n\n  replaceOutput (name, type, value) {\n    delete this.parameters[name]\n\n    return this.output(name, type, value)\n  }\n\n  /**\n   * Execute the SQL batch.\n   *\n   * @param {String} batch T-SQL batch to be executed.\n   * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  batch (batch, callback) {\n    if (this.stream === null && this.parent) this.stream = this.parent.config.stream\n    if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode\n    this.rowsAffected = 0\n\n    if (typeof callback === 'function') {\n      this._batch(batch, (err, recordsets, output, rowsAffected) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected\n          })\n        }\n\n        if (err) return callback(err)\n        callback(null, {\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected\n        })\n      })\n      return this\n    }\n\n    // Check is method was called as tagged template\n    if (typeof batch === 'object') {\n      const values = Array.prototype.slice.call(arguments)\n      const strings = values.shift()\n      batch = this._template(strings, values)\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._batch(batch, (err, recordsets, output, rowsAffected) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected\n          })\n        }\n\n        if (err) return reject(err)\n        resolve({\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected\n        })\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {String} batch\n   * @param {Request~requestCallback} callback\n   */\n\n  _batch (batch, callback) {\n    if (!this.parent) {\n      return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN'))\n    }\n\n    if (!this.parent.connected) {\n      return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED'))\n    }\n\n    this.canceled = false\n    setImmediate(callback)\n  }\n\n  /**\n   * Bulk load.\n   *\n   * @param {Table} table SQL table.\n   * @param {object} [options] Options to be passed to the underlying driver (tedious only).\n   * @param {Request~bulkCallback} [callback] A callback which is called after bulk load has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  bulk (table, options, callback) {\n    if (typeof options === 'function') {\n      callback = options\n      options = {}\n    } else if (typeof options === 'undefined') {\n      options = {}\n    }\n\n    if (this.stream === null && this.parent) this.stream = this.parent.config.stream\n    if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode\n\n    if (this.stream || typeof callback === 'function') {\n      this._bulk(table, options, (err, rowsAffected) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          return this.emit('done', {\n            rowsAffected\n          })\n        }\n\n        if (err) return callback(err)\n        callback(null, {\n          rowsAffected\n        })\n      })\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._bulk(table, options, (err, rowsAffected) => {\n        if (err) return reject(err)\n        resolve({\n          rowsAffected\n        })\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {Table} table\n   * @param {object} options\n   * @param {Request~bulkCallback} callback\n   */\n\n  _bulk (table, options, callback) {\n    if (!this.parent) {\n      return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN'))\n    }\n\n    if (!this.parent.connected) {\n      return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED'))\n    }\n\n    this.canceled = false\n    setImmediate(callback)\n  }\n\n  /**\n   * Wrap original request in a Readable stream that supports back pressure and return.\n   * It also sets request to `stream` mode and pulls all rows from all recordsets to a given stream.\n   *\n   * @param {Object} streamOptions - optional options to configure the readable stream with like highWaterMark\n   * @return {Stream}\n   */\n  toReadableStream (streamOptions = {}) {\n    this.stream = true\n    this.pause()\n    const readableStream = new Readable({\n      ...streamOptions,\n      objectMode: true,\n      read: (/* size */) => {\n        this.resume()\n      }\n    })\n    this.on('row', (row) => {\n      if (!readableStream.push(row)) {\n        this.pause()\n      }\n    })\n    this.on('error', (error) => {\n      readableStream.emit('error', error)\n    })\n    this.on('done', () => {\n      readableStream.push(null)\n    })\n    return readableStream\n  }\n\n  /**\n   * Wrap original request in a Readable stream that supports back pressure and pipe to the Writable stream.\n   * It also sets request to `stream` mode and pulls all rows from all recordsets to a given stream.\n   *\n   * @param {Stream} stream Stream to pipe data into.\n   * @return {Stream}\n   */\n  pipe (writableStream) {\n    const readableStream = this.toReadableStream()\n    return readableStream.pipe(writableStream)\n  }\n\n  /**\n   * Execute the SQL command.\n   *\n   * @param {String} command T-SQL command to be executed.\n   * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  query (command, callback) {\n    if (this.stream === null && this.parent) this.stream = this.parent.config.stream\n    if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode\n    this.rowsAffected = 0\n\n    if (typeof callback === 'function') {\n      this._query(command, (err, recordsets, output, rowsAffected, columns) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected\n          })\n        }\n\n        if (err) return callback(err)\n        const result = {\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected\n        }\n        if (this.arrayRowMode) result.columns = columns\n        callback(null, result)\n      })\n      return this\n    }\n\n    // Check is method was called as tagged template\n    if (typeof command === 'object') {\n      const values = Array.prototype.slice.call(arguments)\n      const strings = values.shift()\n      command = this._template(strings, values)\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._query(command, (err, recordsets, output, rowsAffected, columns) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected\n          })\n        }\n\n        if (err) return reject(err)\n        const result = {\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected\n        }\n        if (this.arrayRowMode) result.columns = columns\n        resolve(result)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {String} command\n   * @param {Request~bulkCallback} callback\n   */\n\n  _query (command, callback) {\n    if (!this.parent) {\n      return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN'))\n    }\n\n    if (!this.parent.connected) {\n      return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED'))\n    }\n\n    this.canceled = false\n    setImmediate(callback)\n  }\n\n  /**\n   * Call a stored procedure.\n   *\n   * @param {String} procedure Name of the stored procedure to be executed.\n   * @param {Request~requestCallback} [callback] A callback which is called after execution has completed, or an error has occurred. If omited, method returns Promise.\n   * @return {Request|Promise}\n   */\n\n  execute (command, callback) {\n    if (this.stream === null && this.parent) this.stream = this.parent.config.stream\n    if (this.arrayRowMode === null && this.parent) this.arrayRowMode = this.parent.config.arrayRowMode\n    this.rowsAffected = 0\n\n    if (typeof callback === 'function') {\n      this._execute(command, (err, recordsets, output, returnValue, rowsAffected, columns) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected,\n            returnValue\n          })\n        }\n\n        if (err) return callback(err)\n        const result = {\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected,\n          returnValue\n        }\n        if (this.arrayRowMode) result.columns = columns\n        callback(null, result)\n      })\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._execute(command, (err, recordsets, output, returnValue, rowsAffected, columns) => {\n        if (this.stream) {\n          if (err) this.emit('error', err)\n          err = null\n\n          this.emit('done', {\n            output,\n            rowsAffected,\n            returnValue\n          })\n        }\n\n        if (err) return reject(err)\n        const result = {\n          recordsets,\n          recordset: recordsets && recordsets[0],\n          output,\n          rowsAffected,\n          returnValue\n        }\n        if (this.arrayRowMode) result.columns = columns\n        resolve(result)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {String} procedure\n   * @param {Request~bulkCallback} callback\n   */\n\n  _execute (procedure, callback) {\n    if (!this.parent) {\n      return setImmediate(callback, new RequestError('No connection is specified for that request.', 'ENOCONN'))\n    }\n\n    if (!this.parent.connected) {\n      return setImmediate(callback, new ConnectionError('Connection is closed.', 'ECONNCLOSED'))\n    }\n\n    this.canceled = false\n    setImmediate(callback)\n  }\n\n  /**\n   * Cancel currently executed request.\n   *\n   * @return {Boolean}\n   */\n\n  cancel () {\n    this._cancel()\n    return true\n  }\n\n  /**\n   * @private\n   */\n\n  _cancel () {\n    this.canceled = true\n  }\n\n  pause () {\n    if (this.stream) {\n      this._pause()\n      return true\n    }\n    return false\n  }\n\n  _pause () {\n    this._paused = true\n  }\n\n  resume () {\n    if (this.stream) {\n      this._resume()\n      return true\n    }\n    return false\n  }\n\n  _resume () {\n    this._paused = false\n  }\n\n  _setCurrentRequest (request) {\n    this._currentRequest = request\n    if (this._paused) {\n      this.pause()\n    }\n    return this\n  }\n}\n\nmodule.exports = Request\n","'use strict'\n\nmodule.exports = {\n  READ_UNCOMMITTED: 0x01,\n  READ_COMMITTED: 0x02,\n  REPEATABLE_READ: 0x03,\n  SERIALIZABLE: 0x04,\n  SNAPSHOT: 0x05\n}\n","'use strict'\n\nconst debug = require('debug')('mssql:base')\nconst { EventEmitter } = require('node:events')\nconst { IDS } = require('../utils')\nconst globalConnection = require('../global-connection')\nconst { TransactionError } = require('../error')\nconst shared = require('../shared')\nconst ISOLATION_LEVEL = require('../isolationlevel')\n\n/**\n * Class Transaction.\n *\n * @property {Number} isolationLevel Controls the locking and row versioning behavior of TSQL statements issued by a connection. READ_COMMITTED by default.\n * @property {String} name Transaction name. Empty string by default.\n *\n * @fires Transaction#begin\n * @fires Transaction#commit\n * @fires Transaction#rollback\n */\n\nclass Transaction extends EventEmitter {\n  /**\n   * Create new Transaction.\n   *\n   * @param {Connection} [parent] If ommited, global connection is used instead.\n   */\n\n  constructor (parent) {\n    super()\n\n    IDS.add(this, 'Transaction')\n    debug('transaction(%d): created', IDS.get(this))\n\n    this.parent = parent || globalConnection.pool\n    this.isolationLevel = Transaction.defaultIsolationLevel\n    this.name = ''\n  }\n\n  get config () {\n    return this.parent.config\n  }\n\n  get connected () {\n    return this.parent.connected\n  }\n\n  /**\n   * Acquire connection from connection pool.\n   *\n   * @param {Request} request Request.\n   * @param {ConnectionPool~acquireCallback} [callback] A callback which is called after connection has established, or an error has occurred. If omited, method returns Promise.\n   * @return {Transaction|Promise}\n   */\n\n  acquire (request, callback) {\n    if (!this._acquiredConnection) {\n      setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN'))\n      return this\n    }\n\n    if (this._activeRequest) {\n      setImmediate(callback, new TransactionError(\"Can't acquire connection for the request. There is another request in progress.\", 'EREQINPROG'))\n      return this\n    }\n\n    this._activeRequest = request\n    setImmediate(callback, null, this._acquiredConnection, this._acquiredConfig)\n    return this\n  }\n\n  /**\n   * Release connection back to the pool.\n   *\n   * @param {Connection} connection Previously acquired connection.\n   * @return {Transaction}\n   */\n\n  release (connection) {\n    if (connection === this._acquiredConnection) {\n      this._activeRequest = null\n    }\n\n    return this\n  }\n\n  /**\n   * Begin a transaction.\n   *\n   * @param {Number} [isolationLevel] Controls the locking and row versioning behavior of TSQL statements issued by a connection.\n   * @param {basicCallback} [callback] A callback which is called after transaction has began, or an error has occurred. If omited, method returns Promise.\n   * @return {Transaction|Promise}\n   */\n\n  begin (isolationLevel, callback) {\n    if (isolationLevel instanceof Function) {\n      callback = isolationLevel\n      isolationLevel = undefined\n    }\n\n    if (typeof callback === 'function') {\n      this._begin(isolationLevel, err => {\n        if (!err) {\n          this.emit('begin')\n        }\n        callback(err)\n      })\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._begin(isolationLevel, err => {\n        if (err) return reject(err)\n        this.emit('begin')\n        resolve(this)\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {Number} [isolationLevel]\n   * @param {basicCallback} [callback]\n   * @return {Transaction}\n   */\n\n  _begin (isolationLevel, callback) {\n    if (this._acquiredConnection) {\n      return setImmediate(callback, new TransactionError('Transaction has already begun.', 'EALREADYBEGUN'))\n    }\n\n    this._aborted = false\n    this._rollbackRequested = false\n    if (isolationLevel) {\n      if (Object.keys(ISOLATION_LEVEL).some(key => {\n        return ISOLATION_LEVEL[key] === isolationLevel\n      })) {\n        this.isolationLevel = isolationLevel\n      } else {\n        throw new TransactionError('Invalid isolation level.')\n      }\n    }\n\n    setImmediate(callback)\n  }\n\n  /**\n   * Commit a transaction.\n   *\n   * @param {basicCallback} [callback] A callback which is called after transaction has commited, or an error has occurred. If omited, method returns Promise.\n   * @return {Transaction|Promise}\n   */\n\n  commit (callback) {\n    if (typeof callback === 'function') {\n      this._commit(err => {\n        if (!err) {\n          this.emit('commit')\n        }\n        callback(err)\n      })\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      this._commit(err => {\n        if (err) return reject(err)\n        this.emit('commit')\n        resolve()\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {basicCallback} [callback]\n   * @return {Transaction}\n   */\n\n  _commit (callback) {\n    if (this._aborted) {\n      return setImmediate(callback, new TransactionError('Transaction has been aborted.', 'EABORT'))\n    }\n\n    if (!this._acquiredConnection) {\n      return setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN'))\n    }\n\n    if (this._activeRequest) {\n      return setImmediate(callback, new TransactionError(\"Can't commit transaction. There is a request in progress.\", 'EREQINPROG'))\n    }\n\n    setImmediate(callback)\n  }\n\n  /**\n   * Returns new request using this transaction.\n   *\n   * @return {Request}\n   */\n\n  request () {\n    return new shared.driver.Request(this)\n  }\n\n  /**\n   * Rollback a transaction.\n   *\n   * @param {basicCallback} [callback] A callback which is called after transaction has rolled back, or an error has occurred. If omited, method returns Promise.\n   * @return {Transaction|Promise}\n   */\n\n  rollback (callback) {\n    if (typeof callback === 'function') {\n      this._rollback(err => {\n        if (!err) {\n          this.emit('rollback', this._aborted)\n        }\n        callback(err)\n      })\n      return this\n    }\n\n    return new shared.Promise((resolve, reject) => {\n      return this._rollback(err => {\n        if (err) return reject(err)\n        this.emit('rollback', this._aborted)\n        resolve()\n      })\n    })\n  }\n\n  /**\n   * @private\n   * @param {basicCallback} [callback]\n   * @return {Transaction}\n   */\n\n  _rollback (callback) {\n    if (this._aborted) {\n      return setImmediate(callback, new TransactionError('Transaction has been aborted.', 'EABORT'))\n    }\n\n    if (!this._acquiredConnection) {\n      return setImmediate(callback, new TransactionError('Transaction has not begun. Call begin() first.', 'ENOTBEGUN'))\n    }\n\n    if (this._activeRequest) {\n      return setImmediate(callback, new TransactionError(\"Can't rollback transaction. There is a request in progress.\", 'EREQINPROG'))\n    }\n\n    this._rollbackRequested = true\n\n    setImmediate(callback)\n  }\n}\n\n/**\n * Default isolation level used for any transactions that don't explicitly specify an isolation level.\n *\n * @type {number}\n */\nTransaction.defaultIsolationLevel = ISOLATION_LEVEL.READ_COMMITTED\n\nmodule.exports = Transaction\n","'use strict'\n\nconst ConnectionPool = require('./connection-pool')\nconst PreparedStatement = require('./prepared-statement')\nconst Request = require('./request')\nconst Transaction = require('./transaction')\nconst { ConnectionError, TransactionError, RequestError, PreparedStatementError, MSSQLError } = require('../error')\nconst shared = require('../shared')\nconst Table = require('../table')\nconst ISOLATION_LEVEL = require('../isolationlevel')\nconst { TYPES } = require('../datatypes')\nconst { connect, close, on, off, removeListener, query, batch } = require('../global-connection')\n\nmodule.exports = {\n  ConnectionPool,\n  Transaction,\n  Request,\n  PreparedStatement,\n  ConnectionError,\n  TransactionError,\n  RequestError,\n  PreparedStatementError,\n  MSSQLError,\n  driver: shared.driver,\n  exports: {\n    ConnectionError,\n    TransactionError,\n    RequestError,\n    PreparedStatementError,\n    MSSQLError,\n    Table,\n    ISOLATION_LEVEL,\n    TYPES,\n    MAX: 65535, // (1 << 16) - 1\n    map: shared.map,\n    getTypeByValue: shared.getTypeByValue,\n    connect,\n    close,\n    on,\n    removeListener,\n    off,\n    query,\n    batch\n  }\n}\n\nObject.defineProperty(module.exports, 'Promise', {\n  enumerable: true,\n  get: () => {\n    return shared.Promise\n  },\n  set: (value) => {\n    shared.Promise = value\n  }\n})\n\nObject.defineProperty(module.exports, 'valueHandler', {\n  enumerable: true,\n  value: shared.valueHandler,\n  writable: false,\n  configurable: false\n})\n\nfor (const key in TYPES) {\n  const value = TYPES[key]\n  module.exports.exports[key] = value\n  module.exports.exports[key.toUpperCase()] = value\n}\n\n/**\n * @callback Request~requestCallback\n * @param {Error} err Error on error, otherwise null.\n * @param {Object} [result] Request result.\n */\n\n/**\n * @callback Request~bulkCallback\n * @param {Error} err Error on error, otherwise null.\n * @param {Number} [rowsAffected] Number of affected rows.\n */\n\n/**\n * @callback basicCallback\n * @param {Error} err Error on error, otherwise null.\n * @param {Connection} [connection] Acquired connection.\n */\n\n/**\n * @callback acquireCallback\n * @param {Error} err Error on error, otherwise null.\n * @param {Connection} [connection] Acquired connection.\n * @param {Object} [config] Connection config\n */\n\n/**\n * Dispatched after connection has established.\n * @event ConnectionPool#connect\n */\n\n/**\n * Dispatched after connection has closed a pool (by calling close).\n * @event ConnectionPool#close\n */\n\n/**\n * Dispatched when transaction begin.\n * @event Transaction#begin\n */\n\n/**\n * Dispatched on successful commit.\n * @event Transaction#commit\n */\n\n/**\n * Dispatched on successful rollback.\n * @event Transaction#rollback\n */\n\n/**\n * Dispatched when metadata for new recordset are parsed.\n * @event Request#recordset\n */\n\n/**\n * Dispatched when new row is parsed.\n * @event Request#row\n */\n\n/**\n * Dispatched when request is complete.\n * @event Request#done\n */\n\n/**\n * Dispatched on error.\n * @event Request#error\n */\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst ZERO_LENGTH_BUFFER = Buffer.alloc(0);\n/**\n  A Buffer-like class that tracks position.\n\n  As values are written, the position advances by the size of the written data.\n  When writing, automatically allocates new buffers if there's not enough space.\n */\nclass WritableTrackingBuffer {\n  constructor(initialSize, encoding, doubleSizeGrowth) {\n    this.initialSize = initialSize;\n    this.encoding = encoding || 'ucs2';\n    this.doubleSizeGrowth = doubleSizeGrowth || false;\n    this.buffer = Buffer.alloc(this.initialSize, 0);\n    this.compositeBuffer = ZERO_LENGTH_BUFFER;\n    this.position = 0;\n  }\n  get data() {\n    this.newBuffer(0);\n    return this.compositeBuffer;\n  }\n  copyFrom(buffer) {\n    const length = buffer.length;\n    this.makeRoomFor(length);\n    buffer.copy(this.buffer, this.position);\n    this.position += length;\n  }\n  makeRoomFor(requiredLength) {\n    if (this.buffer.length - this.position < requiredLength) {\n      if (this.doubleSizeGrowth) {\n        let size = Math.max(128, this.buffer.length * 2);\n        while (size < requiredLength) {\n          size *= 2;\n        }\n        this.newBuffer(size);\n      } else {\n        this.newBuffer(requiredLength);\n      }\n    }\n  }\n  newBuffer(size) {\n    const buffer = this.buffer.slice(0, this.position);\n    this.compositeBuffer = Buffer.concat([this.compositeBuffer, buffer]);\n    this.buffer = size === 0 ? ZERO_LENGTH_BUFFER : Buffer.alloc(size, 0);\n    this.position = 0;\n  }\n  writeUInt8(value) {\n    const length = 1;\n    this.makeRoomFor(length);\n    this.buffer.writeUInt8(value, this.position);\n    this.position += length;\n  }\n  writeUInt16LE(value) {\n    const length = 2;\n    this.makeRoomFor(length);\n    this.buffer.writeUInt16LE(value, this.position);\n    this.position += length;\n  }\n  writeUShort(value) {\n    this.writeUInt16LE(value);\n  }\n  writeUInt16BE(value) {\n    const length = 2;\n    this.makeRoomFor(length);\n    this.buffer.writeUInt16BE(value, this.position);\n    this.position += length;\n  }\n  writeUInt24LE(value) {\n    const length = 3;\n    this.makeRoomFor(length);\n    this.buffer[this.position + 2] = value >>> 16 & 0xff;\n    this.buffer[this.position + 1] = value >>> 8 & 0xff;\n    this.buffer[this.position] = value & 0xff;\n    this.position += length;\n  }\n  writeUInt32LE(value) {\n    const length = 4;\n    this.makeRoomFor(length);\n    this.buffer.writeUInt32LE(value, this.position);\n    this.position += length;\n  }\n  writeBigInt64LE(value) {\n    const length = 8;\n    this.makeRoomFor(length);\n    this.buffer.writeBigInt64LE(value, this.position);\n    this.position += length;\n  }\n  writeInt64LE(value) {\n    this.writeBigInt64LE(BigInt(value));\n  }\n  writeUInt64LE(value) {\n    this.writeBigUInt64LE(BigInt(value));\n  }\n  writeBigUInt64LE(value) {\n    const length = 8;\n    this.makeRoomFor(length);\n    this.buffer.writeBigUInt64LE(value, this.position);\n    this.position += length;\n  }\n  writeUInt32BE(value) {\n    const length = 4;\n    this.makeRoomFor(length);\n    this.buffer.writeUInt32BE(value, this.position);\n    this.position += length;\n  }\n  writeUInt40LE(value) {\n    // inspired by https://github.com/dpw/node-buffer-more-ints\n    this.writeInt32LE(value & -1);\n    this.writeUInt8(Math.floor(value * SHIFT_RIGHT_32));\n  }\n  writeInt8(value) {\n    const length = 1;\n    this.makeRoomFor(length);\n    this.buffer.writeInt8(value, this.position);\n    this.position += length;\n  }\n  writeInt16LE(value) {\n    const length = 2;\n    this.makeRoomFor(length);\n    this.buffer.writeInt16LE(value, this.position);\n    this.position += length;\n  }\n  writeInt16BE(value) {\n    const length = 2;\n    this.makeRoomFor(length);\n    this.buffer.writeInt16BE(value, this.position);\n    this.position += length;\n  }\n  writeInt32LE(value) {\n    const length = 4;\n    this.makeRoomFor(length);\n    this.buffer.writeInt32LE(value, this.position);\n    this.position += length;\n  }\n  writeInt32BE(value) {\n    const length = 4;\n    this.makeRoomFor(length);\n    this.buffer.writeInt32BE(value, this.position);\n    this.position += length;\n  }\n  writeFloatLE(value) {\n    const length = 4;\n    this.makeRoomFor(length);\n    this.buffer.writeFloatLE(value, this.position);\n    this.position += length;\n  }\n  writeDoubleLE(value) {\n    const length = 8;\n    this.makeRoomFor(length);\n    this.buffer.writeDoubleLE(value, this.position);\n    this.position += length;\n  }\n  writeString(value, encoding) {\n    if (encoding == null) {\n      encoding = this.encoding;\n    }\n    const length = Buffer.byteLength(value, encoding);\n    this.makeRoomFor(length);\n\n    // $FlowFixMe https://github.com/facebook/flow/pull/5398\n    this.buffer.write(value, this.position, encoding);\n    this.position += length;\n  }\n  writeBVarchar(value, encoding) {\n    this.writeUInt8(value.length);\n    this.writeString(value, encoding);\n  }\n  writeUsVarchar(value, encoding) {\n    this.writeUInt16LE(value.length);\n    this.writeString(value, encoding);\n  }\n\n  // TODO: Figure out what types are passed in other than `Buffer`\n  writeUsVarbyte(value, encoding) {\n    if (encoding == null) {\n      encoding = this.encoding;\n    }\n    let length;\n    if (value instanceof Buffer) {\n      length = value.length;\n    } else {\n      value = value.toString();\n      length = Buffer.byteLength(value, encoding);\n    }\n    this.writeUInt16LE(length);\n    if (value instanceof Buffer) {\n      this.writeBuffer(value);\n    } else {\n      this.makeRoomFor(length);\n      // $FlowFixMe https://github.com/facebook/flow/pull/5398\n      this.buffer.write(value, this.position, encoding);\n      this.position += length;\n    }\n  }\n  writePLPBody(value, encoding) {\n    if (encoding == null) {\n      encoding = this.encoding;\n    }\n    let length;\n    if (value instanceof Buffer) {\n      length = value.length;\n    } else {\n      value = value.toString();\n      length = Buffer.byteLength(value, encoding);\n    }\n\n    // Length of all chunks.\n    // this.writeUInt64LE(length);\n    // unknown seems to work better here - might revisit later.\n    this.writeBuffer(UNKNOWN_PLP_LEN);\n\n    // In the UNKNOWN_PLP_LEN case, the data is represented as a series of zero or more chunks.\n    if (length > 0) {\n      // One chunk.\n      this.writeUInt32LE(length);\n      if (value instanceof Buffer) {\n        this.writeBuffer(value);\n      } else {\n        this.makeRoomFor(length);\n        this.buffer.write(value, this.position, encoding);\n        this.position += length;\n      }\n    }\n\n    // PLP_TERMINATOR (no more chunks).\n    this.writeUInt32LE(0);\n  }\n  writeBuffer(value) {\n    const length = value.length;\n    this.makeRoomFor(length);\n    value.copy(this.buffer, this.position);\n    this.position += length;\n  }\n  writeMoney(value) {\n    this.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32));\n    this.writeInt32LE(value & -1);\n  }\n}\nvar _default = WritableTrackingBuffer;\nexports.default = _default;\nmodule.exports = WritableTrackingBuffer;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTSElGVF9MRUZUXzMyIiwiU0hJRlRfUklHSFRfMzIiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiWkVST19MRU5HVEhfQlVGRkVSIiwiYWxsb2MiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpbml0aWFsU2l6ZSIsImVuY29kaW5nIiwiZG91YmxlU2l6ZUdyb3d0aCIsImJ1ZmZlciIsImNvbXBvc2l0ZUJ1ZmZlciIsInBvc2l0aW9uIiwiZGF0YSIsIm5ld0J1ZmZlciIsImNvcHlGcm9tIiwibGVuZ3RoIiwibWFrZVJvb21Gb3IiLCJjb3B5IiwicmVxdWlyZWRMZW5ndGgiLCJzaXplIiwiTWF0aCIsIm1heCIsInNsaWNlIiwiY29uY2F0Iiwid3JpdGVVSW50OCIsInZhbHVlIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVVNob3J0Iiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVJbnQ2NExFIiwiQmlnSW50Iiwid3JpdGVVSW50NjRMRSIsIndyaXRlQmlnVUludDY0TEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVVSW50NDBMRSIsIndyaXRlSW50MzJMRSIsImZsb29yIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlU3RyaW5nIiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwid3JpdGVCVmFyY2hhciIsIndyaXRlVXNWYXJjaGFyIiwid3JpdGVVc1ZhcmJ5dGUiLCJ0b1N0cmluZyIsIndyaXRlQnVmZmVyIiwid3JpdGVQTFBCb2R5Iiwid3JpdGVNb25leSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTSElGVF9MRUZUXzMyID0gKDEgPDwgMTYpICogKDEgPDwgMTYpO1xuY29uc3QgU0hJRlRfUklHSFRfMzIgPSAxIC8gU0hJRlRfTEVGVF8zMjtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBaRVJPX0xFTkdUSF9CVUZGRVIgPSBCdWZmZXIuYWxsb2MoMCk7XG5cbmV4cG9ydCB0eXBlIEVuY29kaW5nID0gJ3V0ZjgnIHwgJ3VjczInIHwgJ2FzY2lpJztcblxuLyoqXG4gIEEgQnVmZmVyLWxpa2UgY2xhc3MgdGhhdCB0cmFja3MgcG9zaXRpb24uXG5cbiAgQXMgdmFsdWVzIGFyZSB3cml0dGVuLCB0aGUgcG9zaXRpb24gYWR2YW5jZXMgYnkgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gZGF0YS5cbiAgV2hlbiB3cml0aW5nLCBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBuZXcgYnVmZmVycyBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UuXG4gKi9cbmNsYXNzIFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIge1xuICBkZWNsYXJlIGluaXRpYWxTaXplOiBudW1iZXI7XG4gIGRlY2xhcmUgZW5jb2Rpbmc6IEVuY29kaW5nO1xuICBkZWNsYXJlIGRvdWJsZVNpemVHcm93dGg6IGJvb2xlYW47XG5cbiAgZGVjbGFyZSBidWZmZXI6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBjb21wb3NpdGVCdWZmZXI6IEJ1ZmZlcjtcblxuICBkZWNsYXJlIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaW5pdGlhbFNpemU6IG51bWJlciwgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwsIGRvdWJsZVNpemVHcm93dGg/OiBib29sZWFuKSB7XG4gICAgdGhpcy5pbml0aWFsU2l6ZSA9IGluaXRpYWxTaXplO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndWNzMic7XG4gICAgdGhpcy5kb3VibGVTaXplR3Jvd3RoID0gZG91YmxlU2l6ZUdyb3d0aCB8fCBmYWxzZTtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyh0aGlzLmluaXRpYWxTaXplLCAwKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IFpFUk9fTEVOR1RIX0JVRkZFUjtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHRoaXMubmV3QnVmZmVyKDApO1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZUJ1ZmZlcjtcbiAgfVxuXG4gIGNvcHlGcm9tKGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgbWFrZVJvb21Gb3IocmVxdWlyZWRMZW5ndGg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvc2l0aW9uIDwgcmVxdWlyZWRMZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmRvdWJsZVNpemVHcm93dGgpIHtcbiAgICAgICAgbGV0IHNpemUgPSBNYXRoLm1heCgxMjgsIHRoaXMuYnVmZmVyLmxlbmd0aCAqIDIpO1xuICAgICAgICB3aGlsZSAoc2l6ZSA8IHJlcXVpcmVkTGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSAqPSAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmV3QnVmZmVyKHNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXdCdWZmZXIocmVxdWlyZWRMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5ld0J1ZmZlcihzaXplOiBudW1iZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLmNvbXBvc2l0ZUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY29tcG9zaXRlQnVmZmVyLCBidWZmZXJdKTtcbiAgICB0aGlzLmJ1ZmZlciA9IChzaXplID09PSAwKSA/IFpFUk9fTEVOR1RIX0JVRkZFUiA6IEJ1ZmZlci5hbGxvYyhzaXplLCAwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIHdyaXRlVUludDgodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDE7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MTZMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMjtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVTaG9ydCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZVVJbnQxNkxFKHZhbHVlKTtcbiAgfVxuXG4gIHdyaXRlVUludDE2QkUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IGxlbmd0aCA9IDI7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gMztcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIDJdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyAxXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICAgIHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dID0gdmFsdWUgJiAweGZmO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVVSW50MzJMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gNDtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJpZ0ludDY0TEUodmFsdWU6IGJpZ2ludCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IDg7XG4gICAgdGhpcy5tYWtlUm9vbUZvcihsZW5ndGgpO1xuICAgIHRoaXMuYnVmZmVyLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUludDY0TEUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVCaWdJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVVSW50NjRMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy53cml0ZUJpZ1VJbnQ2NExFKEJpZ0ludCh2YWx1ZSkpO1xuICB9XG5cbiAgd3JpdGVCaWdVSW50NjRMRSh2YWx1ZTogYmlnaW50KSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQzMkJFKHZhbHVlLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlVUludDQwTEUodmFsdWU6IG51bWJlcikge1xuICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kcHcvbm9kZS1idWZmZXItbW9yZS1pbnRzXG4gICAgdGhpcy53cml0ZUludDMyTEUodmFsdWUgJiAtMSk7XG4gICAgdGhpcy53cml0ZVVJbnQ4KE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICB9XG5cbiAgd3JpdGVJbnQ4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAxO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDgodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQxNkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSAyO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDE2QkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkxFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVJbnQzMkJFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUludDMyQkUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVGbG9hdExFKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBsZW5ndGggPSA0O1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB0aGlzLmJ1ZmZlci53cml0ZUZsb2F0TEUodmFsdWUsIHRoaXMucG9zaXRpb24pO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICB9XG5cbiAgd3JpdGVEb3VibGVMRSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gODtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG4gICAgdGhpcy5idWZmZXIud3JpdGVEb3VibGVMRSh2YWx1ZSwgdGhpcy5wb3NpdGlvbik7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZVN0cmluZyh2YWx1ZTogc3RyaW5nLCBlbmNvZGluZz86IEVuY29kaW5nIHwgbnVsbCkge1xuICAgIGlmIChlbmNvZGluZyA9PSBudWxsKSB7XG4gICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsIGVuY29kaW5nKTtcbiAgICB0aGlzLm1ha2VSb29tRm9yKGxlbmd0aCk7XG5cbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L3B1bGwvNTM5OFxuICAgIHRoaXMuYnVmZmVyLndyaXRlKHZhbHVlLCB0aGlzLnBvc2l0aW9uLCBlbmNvZGluZyk7XG4gICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gIH1cblxuICB3cml0ZUJWYXJjaGFyKHZhbHVlOiBzdHJpbmcsIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgdGhpcy53cml0ZVVJbnQ4KHZhbHVlLmxlbmd0aCk7XG4gICAgdGhpcy53cml0ZVN0cmluZyh2YWx1ZSwgZW5jb2RpbmcpO1xuICB9XG5cbiAgd3JpdGVVc1ZhcmNoYXIodmFsdWU6IHN0cmluZywgZW5jb2Rpbmc/OiBFbmNvZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoKTtcbiAgICB0aGlzLndyaXRlU3RyaW5nKHZhbHVlLCBlbmNvZGluZyk7XG4gIH1cblxuICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoYXQgdHlwZXMgYXJlIHBhc3NlZCBpbiBvdGhlciB0aGFuIGBCdWZmZXJgXG4gIHdyaXRlVXNWYXJieXRlKHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cbiAgICB0aGlzLndyaXRlVUludDE2TEUobGVuZ3RoKTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgdGhpcy53cml0ZUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvcHVsbC81Mzk4XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZSh2YWx1ZSwgdGhpcy5wb3NpdGlvbiwgZW5jb2RpbmcpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVQTFBCb2R5KHZhbHVlOiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcgfCBudWxsKSB7XG4gICAgaWYgKGVuY29kaW5nID09IG51bGwpIHtcbiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZztcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgZW5jb2RpbmcpO1xuICAgIH1cblxuICAgIC8vIExlbmd0aCBvZiBhbGwgY2h1bmtzLlxuICAgIC8vIHRoaXMud3JpdGVVSW50NjRMRShsZW5ndGgpO1xuICAgIC8vIHVua25vd24gc2VlbXMgdG8gd29yayBiZXR0ZXIgaGVyZSAtIG1pZ2h0IHJldmlzaXQgbGF0ZXIuXG4gICAgdGhpcy53cml0ZUJ1ZmZlcihVTktOT1dOX1BMUF9MRU4pO1xuXG4gICAgLy8gSW4gdGhlIFVOS05PV05fUExQX0xFTiBjYXNlLCB0aGUgZGF0YSBpcyByZXByZXNlbnRlZCBhcyBhIHNlcmllcyBvZiB6ZXJvIG9yIG1vcmUgY2h1bmtzLlxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAvLyBPbmUgY2h1bmsuXG4gICAgICB0aGlzLndyaXRlVUludDMyTEUobGVuZ3RoKTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICB0aGlzLndyaXRlQnVmZmVyKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICAgICAgdGhpcy5idWZmZXIud3JpdGUodmFsdWUsIHRoaXMucG9zaXRpb24sIGVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUExQX1RFUk1JTkFUT1IgKG5vIG1vcmUgY2h1bmtzKS5cbiAgICB0aGlzLndyaXRlVUludDMyTEUoMCk7XG4gIH1cblxuICB3cml0ZUJ1ZmZlcih2YWx1ZTogQnVmZmVyKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgIHRoaXMubWFrZVJvb21Gb3IobGVuZ3RoKTtcbiAgICB2YWx1ZS5jb3B5KHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgfVxuXG4gIHdyaXRlTW9uZXkodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMikpO1xuICAgIHRoaXMud3JpdGVJbnQzMkxFKHZhbHVlICYgLTEpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU1BLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUs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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Token = exports.TYPE = exports.SSPIToken = exports.RowToken = exports.RoutingEnvChangeToken = exports.RollbackTransactionEnvChangeToken = exports.ReturnValueToken = exports.ReturnStatusToken = exports.ResetConnectionEnvChangeToken = exports.PacketSizeEnvChangeToken = exports.OrderToken = exports.NBCRowToken = exports.LoginAckToken = exports.LanguageEnvChangeToken = exports.InfoMessageToken = exports.FedAuthInfoToken = exports.FeatureExtAckToken = exports.ErrorMessageToken = exports.DoneToken = exports.DoneProcToken = exports.DoneInProcToken = exports.DatabaseMirroringPartnerEnvChangeToken = exports.DatabaseEnvChangeToken = exports.CommitTransactionEnvChangeToken = exports.CollationChangeToken = exports.ColMetadataToken = exports.CharsetEnvChangeToken = exports.BeginTransactionEnvChangeToken = void 0;\nconst TYPE = {\n  ALTMETADATA: 0x88,\n  ALTROW: 0xD3,\n  COLMETADATA: 0x81,\n  COLINFO: 0xA5,\n  DONE: 0xFD,\n  DONEPROC: 0xFE,\n  DONEINPROC: 0xFF,\n  ENVCHANGE: 0xE3,\n  ERROR: 0xAA,\n  FEATUREEXTACK: 0xAE,\n  FEDAUTHINFO: 0xEE,\n  INFO: 0xAB,\n  LOGINACK: 0xAD,\n  NBCROW: 0xD2,\n  OFFSET: 0x78,\n  ORDER: 0xA9,\n  RETURNSTATUS: 0x79,\n  RETURNVALUE: 0xAC,\n  ROW: 0xD1,\n  SSPI: 0xED,\n  TABNAME: 0xA4\n};\nexports.TYPE = TYPE;\nclass Token {\n  constructor(name, handlerName) {\n    this.name = name;\n    this.handlerName = handlerName;\n  }\n}\nexports.Token = Token;\nclass ColMetadataToken extends Token {\n  constructor(columns) {\n    super('COLMETADATA', 'onColMetadata');\n    this.columns = columns;\n  }\n}\nexports.ColMetadataToken = ColMetadataToken;\nclass DoneToken extends Token {\n  constructor({\n    more,\n    sqlError,\n    attention,\n    serverError,\n    rowCount,\n    curCmd\n  }) {\n    super('DONE', 'onDone');\n    this.more = more;\n    this.sqlError = sqlError;\n    this.attention = attention;\n    this.serverError = serverError;\n    this.rowCount = rowCount;\n    this.curCmd = curCmd;\n  }\n}\nexports.DoneToken = DoneToken;\nclass DoneInProcToken extends Token {\n  constructor({\n    more,\n    sqlError,\n    attention,\n    serverError,\n    rowCount,\n    curCmd\n  }) {\n    super('DONEINPROC', 'onDoneInProc');\n    this.more = more;\n    this.sqlError = sqlError;\n    this.attention = attention;\n    this.serverError = serverError;\n    this.rowCount = rowCount;\n    this.curCmd = curCmd;\n  }\n}\nexports.DoneInProcToken = DoneInProcToken;\nclass DoneProcToken extends Token {\n  constructor({\n    more,\n    sqlError,\n    attention,\n    serverError,\n    rowCount,\n    curCmd\n  }) {\n    super('DONEPROC', 'onDoneProc');\n    this.more = more;\n    this.sqlError = sqlError;\n    this.attention = attention;\n    this.serverError = serverError;\n    this.rowCount = rowCount;\n    this.curCmd = curCmd;\n  }\n}\nexports.DoneProcToken = DoneProcToken;\nclass DatabaseEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onDatabaseChange');\n    this.type = 'DATABASE';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.DatabaseEnvChangeToken = DatabaseEnvChangeToken;\nclass LanguageEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onLanguageChange');\n    this.type = 'LANGUAGE';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.LanguageEnvChangeToken = LanguageEnvChangeToken;\nclass CharsetEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onCharsetChange');\n    this.type = 'CHARSET';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.CharsetEnvChangeToken = CharsetEnvChangeToken;\nclass PacketSizeEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onPacketSizeChange');\n    this.type = 'PACKET_SIZE';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.PacketSizeEnvChangeToken = PacketSizeEnvChangeToken;\nclass BeginTransactionEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onBeginTransaction');\n    this.type = 'BEGIN_TXN';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.BeginTransactionEnvChangeToken = BeginTransactionEnvChangeToken;\nclass CommitTransactionEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onCommitTransaction');\n    this.type = 'COMMIT_TXN';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.CommitTransactionEnvChangeToken = CommitTransactionEnvChangeToken;\nclass RollbackTransactionEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onRollbackTransaction');\n    this.type = 'ROLLBACK_TXN';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.RollbackTransactionEnvChangeToken = RollbackTransactionEnvChangeToken;\nclass DatabaseMirroringPartnerEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onDatabaseMirroringPartner');\n    this.type = 'DATABASE_MIRRORING_PARTNER';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.DatabaseMirroringPartnerEnvChangeToken = DatabaseMirroringPartnerEnvChangeToken;\nclass ResetConnectionEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onResetConnection');\n    this.type = 'RESET_CONNECTION';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.ResetConnectionEnvChangeToken = ResetConnectionEnvChangeToken;\nclass CollationChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onSqlCollationChange');\n    this.type = 'SQL_COLLATION';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.CollationChangeToken = CollationChangeToken;\nclass RoutingEnvChangeToken extends Token {\n  constructor(newValue, oldValue) {\n    super('ENVCHANGE', 'onRoutingChange');\n    this.type = 'ROUTING_CHANGE';\n    this.newValue = newValue;\n    this.oldValue = oldValue;\n  }\n}\nexports.RoutingEnvChangeToken = RoutingEnvChangeToken;\nclass FeatureExtAckToken extends Token {\n  /** Value of UTF8_SUPPORT acknowledgement.\n   *\n   * undefined when UTF8_SUPPORT not included in token. */\n\n  constructor(fedAuth, utf8Support) {\n    super('FEATUREEXTACK', 'onFeatureExtAck');\n    this.fedAuth = fedAuth;\n    this.utf8Support = utf8Support;\n  }\n}\nexports.FeatureExtAckToken = FeatureExtAckToken;\nclass FedAuthInfoToken extends Token {\n  constructor(spn, stsurl) {\n    super('FEDAUTHINFO', 'onFedAuthInfo');\n    this.spn = spn;\n    this.stsurl = stsurl;\n  }\n}\nexports.FedAuthInfoToken = FedAuthInfoToken;\nclass InfoMessageToken extends Token {\n  constructor({\n    number,\n    state,\n    class: clazz,\n    message,\n    serverName,\n    procName,\n    lineNumber\n  }) {\n    super('INFO', 'onInfoMessage');\n    this.number = number;\n    this.state = state;\n    this.class = clazz;\n    this.message = message;\n    this.serverName = serverName;\n    this.procName = procName;\n    this.lineNumber = lineNumber;\n  }\n}\nexports.InfoMessageToken = InfoMessageToken;\nclass ErrorMessageToken extends Token {\n  constructor({\n    number,\n    state,\n    class: clazz,\n    message,\n    serverName,\n    procName,\n    lineNumber\n  }) {\n    super('ERROR', 'onErrorMessage');\n    this.number = number;\n    this.state = state;\n    this.class = clazz;\n    this.message = message;\n    this.serverName = serverName;\n    this.procName = procName;\n    this.lineNumber = lineNumber;\n  }\n}\nexports.ErrorMessageToken = ErrorMessageToken;\nclass LoginAckToken extends Token {\n  constructor({\n    interface: interfaze,\n    tdsVersion,\n    progName,\n    progVersion\n  }) {\n    super('LOGINACK', 'onLoginAck');\n    this.interface = interfaze;\n    this.tdsVersion = tdsVersion;\n    this.progName = progName;\n    this.progVersion = progVersion;\n  }\n}\nexports.LoginAckToken = LoginAckToken;\nclass NBCRowToken extends Token {\n  constructor(columns) {\n    super('NBCROW', 'onRow');\n    this.columns = columns;\n  }\n}\nexports.NBCRowToken = NBCRowToken;\nclass OrderToken extends Token {\n  constructor(orderColumns) {\n    super('ORDER', 'onOrder');\n    this.orderColumns = orderColumns;\n  }\n}\nexports.OrderToken = OrderToken;\nclass ReturnStatusToken extends Token {\n  constructor(value) {\n    super('RETURNSTATUS', 'onReturnStatus');\n    this.value = value;\n  }\n}\nexports.ReturnStatusToken = ReturnStatusToken;\nclass ReturnValueToken extends Token {\n  constructor({\n    paramOrdinal,\n    paramName,\n    metadata,\n    value\n  }) {\n    super('RETURNVALUE', 'onReturnValue');\n    this.paramOrdinal = paramOrdinal;\n    this.paramName = paramName;\n    this.metadata = metadata;\n    this.value = value;\n  }\n}\nexports.ReturnValueToken = ReturnValueToken;\nclass RowToken extends Token {\n  constructor(columns) {\n    super('ROW', 'onRow');\n    this.columns = columns;\n  }\n}\nexports.RowToken = RowToken;\nclass SSPIToken extends Token {\n  constructor(ntlmpacket, ntlmpacketBuffer) {\n    super('SSPICHALLENGE', 'onSSPI');\n    this.ntlmpacket = ntlmpacket;\n    this.ntlmpacketBuffer = ntlmpacketBuffer;\n  }\n}\nexports.SSPIToken = SSPIToken;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiQUxUTUVUQURBVEEiLCJBTFRST1ciLCJDT0xNRVRBREFUQSIsIkNPTElORk8iLCJET05FIiwiRE9ORVBST0MiLCJET05FSU5QUk9DIiwiRU5WQ0hBTkdFIiwiRVJST1IiLCJGRUFUVVJFRVhUQUNLIiwiRkVEQVVUSElORk8iLCJJTkZPIiwiTE9HSU5BQ0siLCJOQkNST1ciLCJPRkZTRVQiLCJPUkRFUiIsIlJFVFVSTlNUQVRVUyIsIlJFVFVSTlZBTFVFIiwiUk9XIiwiU1NQSSIsIlRBQk5BTUUiLCJleHBvcnRzIiwiVG9rZW4iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJoYW5kbGVyTmFtZSIsIkNvbE1ldGFkYXRhVG9rZW4iLCJjb2x1bW5zIiwiRG9uZVRva2VuIiwibW9yZSIsInNxbEVycm9yIiwiYXR0ZW50aW9uIiwic2VydmVyRXJyb3IiLCJyb3dDb3VudCIsImN1ckNtZCIsIkRvbmVJblByb2NUb2tlbiIsIkRvbmVQcm9jVG9rZW4iLCJEYXRhYmFzZUVudkNoYW5nZVRva2VuIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsInR5cGUiLCJMYW5ndWFnZUVudkNoYW5nZVRva2VuIiwiQ2hhcnNldEVudkNoYW5nZVRva2VuIiwiUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIkRhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuIiwiUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4iLCJDb2xsYXRpb25DaGFuZ2VUb2tlbiIsIlJvdXRpbmdFbnZDaGFuZ2VUb2tlbiIsIkZlYXR1cmVFeHRBY2tUb2tlbiIsImZlZEF1dGgiLCJ1dGY4U3VwcG9ydCIsIkZlZEF1dGhJbmZvVG9rZW4iLCJzcG4iLCJzdHN1cmwiLCJJbmZvTWVzc2FnZVRva2VuIiwibnVtYmVyIiwic3RhdGUiLCJjbGFzcyIsImNsYXp6IiwibWVzc2FnZSIsInNlcnZlck5hbWUiLCJwcm9jTmFtZSIsImxpbmVOdW1iZXIiLCJFcnJvck1lc3NhZ2VUb2tlbiIsIkxvZ2luQWNrVG9rZW4iLCJpbnRlcmZhY2UiLCJpbnRlcmZhemUiLCJ0ZHNWZXJzaW9uIiwicHJvZ05hbWUiLCJwcm9nVmVyc2lvbiIsIk5CQ1Jvd1Rva2VuIiwiT3JkZXJUb2tlbiIsIm9yZGVyQ29sdW1ucyIsIlJldHVyblN0YXR1c1Rva2VuIiwidmFsdWUiLCJSZXR1cm5WYWx1ZVRva2VuIiwicGFyYW1PcmRpbmFsIiwicGFyYW1OYW1lIiwibWV0YWRhdGEiLCJSb3dUb2tlbiIsIlNTUElUb2tlbiIsIm50bG1wYWNrZXQiLCJudGxtcGFja2V0QnVmZmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3Rva2VuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5pbXBvcnQgeyB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgQ29sdW1uTWV0YWRhdGEgfSBmcm9tICcuL2NvbG1ldGFkYXRhLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBUb2tlbkhhbmRsZXIgfSBmcm9tICcuL2hhbmRsZXInO1xuXG5leHBvcnQgY29uc3QgVFlQRSA9IHtcbiAgQUxUTUVUQURBVEE6IDB4ODgsXG4gIEFMVFJPVzogMHhEMyxcbiAgQ09MTUVUQURBVEE6IDB4ODEsXG4gIENPTElORk86IDB4QTUsXG4gIERPTkU6IDB4RkQsXG4gIERPTkVQUk9DOiAweEZFLFxuICBET05FSU5QUk9DOiAweEZGLFxuICBFTlZDSEFOR0U6IDB4RTMsXG4gIEVSUk9SOiAweEFBLFxuICBGRUFUVVJFRVhUQUNLOiAweEFFLFxuICBGRURBVVRISU5GTzogMHhFRSxcbiAgSU5GTzogMHhBQixcbiAgTE9HSU5BQ0s6IDB4QUQsXG4gIE5CQ1JPVzogMHhEMixcbiAgT0ZGU0VUOiAweDc4LFxuICBPUkRFUjogMHhBOSxcbiAgUkVUVVJOU1RBVFVTOiAweDc5LFxuICBSRVRVUk5WQUxVRTogMHhBQyxcbiAgUk9XOiAweEQxLFxuICBTU1BJOiAweEVELFxuICBUQUJOQU1FOiAweEE0XG59O1xuXG50eXBlIEhhbmRsZXJOYW1lID0ga2V5b2YgVG9rZW5IYW5kbGVyO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZToga2V5b2YgVG9rZW5IYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaGFuZGxlck5hbWU6IEhhbmRsZXJOYW1lKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmhhbmRsZXJOYW1lID0gaGFuZGxlck5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbE1ldGFkYXRhVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0NPTE1FVEFEQVRBJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ29sTWV0YWRhdGEnO1xuXG4gIGRlY2xhcmUgY29sdW1uczogQ29sdW1uTWV0YWRhdGFbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5zOiBDb2x1bW5NZXRhZGF0YVtdKSB7XG4gICAgc3VwZXIoJ0NPTE1FVEFEQVRBJywgJ29uQ29sTWV0YWRhdGEnKTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmUnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORScsICdvbkRvbmUnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVJblByb2NUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRE9ORUlOUFJPQyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkRvbmVJblByb2MnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORUlOUFJPQycsICdvbkRvbmVJblByb2MnKTtcblxuICAgIHRoaXMubW9yZSA9IG1vcmU7XG4gICAgdGhpcy5zcWxFcnJvciA9IHNxbEVycm9yO1xuICAgIHRoaXMuYXR0ZW50aW9uID0gYXR0ZW50aW9uO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSBzZXJ2ZXJFcnJvcjtcbiAgICB0aGlzLnJvd0NvdW50ID0gcm93Q291bnQ7XG4gICAgdGhpcy5jdXJDbWQgPSBjdXJDbWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvbmVQcm9jVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0RPTkVQUk9DJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRG9uZVByb2MnO1xuXG4gIGRlY2xhcmUgbW9yZTogYm9vbGVhbjtcbiAgZGVjbGFyZSBzcWxFcnJvcjogYm9vbGVhbjtcbiAgZGVjbGFyZSBhdHRlbnRpb246IGJvb2xlYW47XG4gIGRlY2xhcmUgc2VydmVyRXJyb3I6IGJvb2xlYW47XG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjdXJDbWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG1vcmUsIHNxbEVycm9yLCBhdHRlbnRpb24sIHNlcnZlckVycm9yLCByb3dDb3VudCwgY3VyQ21kIH06IHsgbW9yZTogYm9vbGVhbiwgc3FsRXJyb3I6IGJvb2xlYW4sIGF0dGVudGlvbjogYm9vbGVhbiwgc2VydmVyRXJyb3I6IGJvb2xlYW4sIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGN1ckNtZDogbnVtYmVyIH0pIHtcbiAgICBzdXBlcignRE9ORVBST0MnLCAnb25Eb25lUHJvYycpO1xuXG4gICAgdGhpcy5tb3JlID0gbW9yZTtcbiAgICB0aGlzLnNxbEVycm9yID0gc3FsRXJyb3I7XG4gICAgdGhpcy5hdHRlbnRpb24gPSBhdHRlbnRpb247XG4gICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHNlcnZlckVycm9yO1xuICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICB0aGlzLmN1ckNtZCA9IGN1ckNtZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VDaGFuZ2UnO1xuXG4gIGRlY2xhcmUgdHlwZTogJ0RBVEFCQVNFJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogc3RyaW5nO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25EYXRhYmFzZUNoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0RBVEFCQVNFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZUVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25MYW5ndWFnZUNoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnTEFOR1VBR0UnO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBzdHJpbmc7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogc3RyaW5nLCBvbGRWYWx1ZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkxhbmd1YWdlQ2hhbmdlJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnTEFOR1VBR0UnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uQ2hhcnNldENoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnQ0hBUlNFVCc7XG4gIGRlY2xhcmUgbmV3VmFsdWU6IHN0cmluZztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uQ2hhcnNldENoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NIQVJTRVQnO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUGFja2V0U2l6ZUNoYW5nZSc7XG5cbiAgZGVjbGFyZSB0eXBlOiAnUEFDS0VUX1NJWkUnO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBudW1iZXI7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogbnVtYmVyLCBvbGRWYWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblBhY2tldFNpemVDaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdQQUNLRVRfU0laRSc7XG4gICAgdGhpcy5uZXdWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMub2xkVmFsdWUgPSBvbGRWYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25CZWdpblRyYW5zYWN0aW9uJztcblxuICBkZWNsYXJlIHR5cGU6ICdCRUdJTl9UWE4nO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBCdWZmZXI7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvbkJlZ2luVHJhbnNhY3Rpb24nKTtcblxuICAgIHRoaXMudHlwZSA9ICdCRUdJTl9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkNvbW1pdFRyYW5zYWN0aW9uJztcblxuICBkZWNsYXJlIHR5cGU6ICdDT01NSVRfVFhOJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogQnVmZmVyO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Db21taXRUcmFuc2FjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ0NPTU1JVF9UWE4nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm9sbGJhY2tUcmFuc2FjdGlvbic7XG5cbiAgZGVjbGFyZSB0eXBlOiAnUk9MTEJBQ0tfVFhOJztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogQnVmZmVyO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IEJ1ZmZlciwgb2xkVmFsdWU6IEJ1ZmZlcikge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25Sb2xsYmFja1RyYW5zYWN0aW9uJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnUk9MTEJBQ0tfVFhOJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJztcblxuICBkZWNsYXJlIHR5cGU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUic7XG4gIGRlY2xhcmUgb2xkVmFsdWU6IHN0cmluZztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5ld1ZhbHVlOiBzdHJpbmcsIG9sZFZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyJyk7XG5cbiAgICB0aGlzLnR5cGUgPSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFTlZDSEFOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25SZXNldENvbm5lY3Rpb24nO1xuXG4gIGRlY2xhcmUgdHlwZTogJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICBkZWNsYXJlIG9sZFZhbHVlOiBCdWZmZXI7XG4gIGRlY2xhcmUgbmV3VmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogQnVmZmVyLCBvbGRWYWx1ZTogQnVmZmVyKSB7XG4gICAgc3VwZXIoJ0VOVkNIQU5HRScsICdvblJlc2V0Q29ubmVjdGlvbicpO1xuXG4gICAgdGhpcy50eXBlID0gJ1JFU0VUX0NPTk5FQ1RJT04nO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW52Q2hhbmdlVG9rZW4gPVxuICBEYXRhYmFzZUVudkNoYW5nZVRva2VuIHxcbiAgTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbiB8XG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbiB8XG4gIFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiB8XG4gIEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiB8XG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBSb2xsYmFja1RyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4gfFxuICBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiB8XG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIHxcbiAgUm91dGluZ0VudkNoYW5nZVRva2VuIHxcbiAgQ29sbGF0aW9uQ2hhbmdlVG9rZW47XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXRpb25DaGFuZ2VUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRU5WQ0hBTkdFJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uU3FsQ29sbGF0aW9uQ2hhbmdlJztcblxuICBkZWNsYXJlIHR5cGU6ICdTUUxfQ09MTEFUSU9OJztcbiAgZGVjbGFyZSBvbGRWYWx1ZTogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIG5ld1ZhbHVlOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IobmV3VmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZCwgb2xkVmFsdWU6IENvbGxhdGlvbiB8IHVuZGVmaW5lZCkge1xuICAgIHN1cGVyKCdFTlZDSEFOR0UnLCAnb25TcWxDb2xsYXRpb25DaGFuZ2UnKTtcblxuICAgIHRoaXMudHlwZSA9ICdTUUxfQ09MTEFUSU9OJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb3V0aW5nRW52Q2hhbmdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0VOVkNIQU5HRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdXRpbmdDaGFuZ2UnO1xuXG4gIGRlY2xhcmUgdHlwZTogJ1JPVVRJTkdfQ0hBTkdFJztcbiAgZGVjbGFyZSBuZXdWYWx1ZTogeyBwcm90b2NvbDogbnVtYmVyLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogc3RyaW5nIH07XG4gIGRlY2xhcmUgb2xkVmFsdWU6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3RvcihuZXdWYWx1ZTogeyBwcm90b2NvbDogbnVtYmVyLCBwb3J0OiBudW1iZXIsIHNlcnZlcjogc3RyaW5nIH0sIG9sZFZhbHVlOiBCdWZmZXIpIHtcbiAgICBzdXBlcignRU5WQ0hBTkdFJywgJ29uUm91dGluZ0NoYW5nZScpO1xuXG4gICAgdGhpcy50eXBlID0gJ1JPVVRJTkdfQ0hBTkdFJztcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGZWF0dXJlRXh0QWNrVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0ZFQVRVUkVFWFRBQ0snO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25GZWF0dXJlRXh0QWNrJztcblxuICBkZWNsYXJlIGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICAvKiogVmFsdWUgb2YgVVRGOF9TVVBQT1JUIGFja25vd2xlZGdlbWVudC5cbiAgICpcbiAgICogdW5kZWZpbmVkIHdoZW4gVVRGOF9TVVBQT1JUIG5vdCBpbmNsdWRlZCBpbiB0b2tlbi4gKi9cbiAgZGVjbGFyZSB1dGY4U3VwcG9ydDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihmZWRBdXRoOiBCdWZmZXIgfCB1bmRlZmluZWQsIHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIoJ0ZFQVRVUkVFWFRBQ0snLCAnb25GZWF0dXJlRXh0QWNrJyk7XG5cbiAgICB0aGlzLmZlZEF1dGggPSBmZWRBdXRoO1xuICAgIHRoaXMudXRmOFN1cHBvcnQgPSB1dGY4U3VwcG9ydDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmVkQXV0aEluZm9Ub2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnRkVEQVVUSElORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25GZWRBdXRoSW5mbyc7XG5cbiAgZGVjbGFyZSBzcG46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihzcG46IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RzdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlcignRkVEQVVUSElORk8nLCAnb25GZWRBdXRoSW5mbycpO1xuXG4gICAgdGhpcy5zcG4gPSBzcG47XG4gICAgdGhpcy5zdHN1cmwgPSBzdHN1cmw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluZm9NZXNzYWdlVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ0lORk8nO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25JbmZvTWVzc2FnZSc7XG5cbiAgZGVjbGFyZSBudW1iZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBzdGF0ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsYXNzOiBudW1iZXI7XG4gIGRlY2xhcmUgbWVzc2FnZTogc3RyaW5nO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9jTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGxpbmVOdW1iZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG51bWJlciwgc3RhdGUsIGNsYXNzOiBjbGF6eiwgbWVzc2FnZSwgc2VydmVyTmFtZSwgcHJvY05hbWUsIGxpbmVOdW1iZXIgfTogeyBudW1iZXI6IG51bWJlciwgc3RhdGU6IG51bWJlciwgY2xhc3M6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBzZXJ2ZXJOYW1lOiBzdHJpbmcsIHByb2NOYW1lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoJ0lORk8nLCAnb25JbmZvTWVzc2FnZScpO1xuXG4gICAgdGhpcy5udW1iZXIgPSBudW1iZXI7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuY2xhc3MgPSBjbGF6ejtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc2VydmVyTmFtZSA9IHNlcnZlck5hbWU7XG4gICAgdGhpcy5wcm9jTmFtZSA9IHByb2NOYW1lO1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTWVzc2FnZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdFUlJPUic7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvbkVycm9yTWVzc2FnZSc7XG5cbiAgZGVjbGFyZSBudW1iZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBzdGF0ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsYXNzOiBudW1iZXI7XG4gIGRlY2xhcmUgbWVzc2FnZTogc3RyaW5nO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9jTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGxpbmVOdW1iZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IG51bWJlciwgc3RhdGUsIGNsYXNzOiBjbGF6eiwgbWVzc2FnZSwgc2VydmVyTmFtZSwgcHJvY05hbWUsIGxpbmVOdW1iZXIgfTogeyBudW1iZXI6IG51bWJlciwgc3RhdGU6IG51bWJlciwgY2xhc3M6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCBzZXJ2ZXJOYW1lOiBzdHJpbmcsIHByb2NOYW1lOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoJ0VSUk9SJywgJ29uRXJyb3JNZXNzYWdlJyk7XG5cbiAgICB0aGlzLm51bWJlciA9IG51bWJlcjtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jbGFzcyA9IGNsYXp6O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zZXJ2ZXJOYW1lID0gc2VydmVyTmFtZTtcbiAgICB0aGlzLnByb2NOYW1lID0gcHJvY05hbWU7XG4gICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9naW5BY2tUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnTE9HSU5BQ0snO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25Mb2dpbkFjayc7XG5cbiAgZGVjbGFyZSBpbnRlcmZhY2U6IHN0cmluZztcbiAgZGVjbGFyZSB0ZHNWZXJzaW9uOiBzdHJpbmc7XG4gIGRlY2xhcmUgcHJvZ05hbWU6IHN0cmluZztcbiAgZGVjbGFyZSBwcm9nVmVyc2lvbjogeyBtYWpvcjogbnVtYmVyLCBtaW5vcjogbnVtYmVyLCBidWlsZE51bUhpOiBudW1iZXIsIGJ1aWxkTnVtTG93OiBudW1iZXIgfTtcblxuICBjb25zdHJ1Y3Rvcih7IGludGVyZmFjZTogaW50ZXJmYXplLCB0ZHNWZXJzaW9uLCBwcm9nTmFtZSwgcHJvZ1ZlcnNpb24gfTogeyBpbnRlcmZhY2U6IExvZ2luQWNrVG9rZW5bJ2ludGVyZmFjZSddLCB0ZHNWZXJzaW9uOiBMb2dpbkFja1Rva2VuWyd0ZHNWZXJzaW9uJ10sIHByb2dOYW1lOiBMb2dpbkFja1Rva2VuWydwcm9nTmFtZSddLCBwcm9nVmVyc2lvbjogTG9naW5BY2tUb2tlblsncHJvZ1ZlcnNpb24nXSB9KSB7XG4gICAgc3VwZXIoJ0xPR0lOQUNLJywgJ29uTG9naW5BY2snKTtcblxuICAgIHRoaXMuaW50ZXJmYWNlID0gaW50ZXJmYXplO1xuICAgIHRoaXMudGRzVmVyc2lvbiA9IHRkc1ZlcnNpb247XG4gICAgdGhpcy5wcm9nTmFtZSA9IHByb2dOYW1lO1xuICAgIHRoaXMucHJvZ1ZlcnNpb24gPSBwcm9nVmVyc2lvbjtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ05CQ1JPVyc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJvdyc7XG5cbiAgZGVjbGFyZSBjb2x1bW5zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29sdW1uczogYW55KSB7XG4gICAgc3VwZXIoJ05CQ1JPVycsICdvblJvdycpO1xuXG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1ucztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JkZXJUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnT1JERVInO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25PcmRlcic7XG5cbiAgZGVjbGFyZSBvcmRlckNvbHVtbnM6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKG9yZGVyQ29sdW1uczogbnVtYmVyW10pIHtcbiAgICBzdXBlcignT1JERVInLCAnb25PcmRlcicpO1xuXG4gICAgdGhpcy5vcmRlckNvbHVtbnMgPSBvcmRlckNvbHVtbnM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJldHVyblN0YXR1c1Rva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdSRVRVUk5TVEFUVVMnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25SZXR1cm5TdGF0dXMnO1xuXG4gIGRlY2xhcmUgdmFsdWU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIoJ1JFVFVSTlNUQVRVUycsICdvblJldHVyblN0YXR1cycpO1xuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5WYWx1ZVRva2VuIGV4dGVuZHMgVG9rZW4ge1xuICBkZWNsYXJlIG5hbWU6ICdSRVRVUk5WQUxVRSc7XG4gIGRlY2xhcmUgaGFuZGxlck5hbWU6ICdvblJldHVyblZhbHVlJztcblxuICBkZWNsYXJlIHBhcmFtT3JkaW5hbDogbnVtYmVyO1xuICBkZWNsYXJlIHBhcmFtTmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBNZXRhZGF0YTtcbiAgZGVjbGFyZSB2YWx1ZTogdW5rbm93bjtcblxuICBjb25zdHJ1Y3Rvcih7IHBhcmFtT3JkaW5hbCwgcGFyYW1OYW1lLCBtZXRhZGF0YSwgdmFsdWUgfTogeyBwYXJhbU9yZGluYWw6IG51bWJlciwgcGFyYW1OYW1lOiBzdHJpbmcsIG1ldGFkYXRhOiBNZXRhZGF0YSwgdmFsdWU6IHVua25vd24gfSkge1xuICAgIHN1cGVyKCdSRVRVUk5WQUxVRScsICdvblJldHVyblZhbHVlJyk7XG5cbiAgICB0aGlzLnBhcmFtT3JkaW5hbCA9IHBhcmFtT3JkaW5hbDtcbiAgICB0aGlzLnBhcmFtTmFtZSA9IHBhcmFtTmFtZTtcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSb3dUb2tlbiBleHRlbmRzIFRva2VuIHtcbiAgZGVjbGFyZSBuYW1lOiAnUk9XJztcbiAgZGVjbGFyZSBoYW5kbGVyTmFtZTogJ29uUm93JztcblxuICBkZWNsYXJlIGNvbHVtbnM6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5zOiBhbnkpIHtcbiAgICBzdXBlcignUk9XJywgJ29uUm93Jyk7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTU1BJVG9rZW4gZXh0ZW5kcyBUb2tlbiB7XG4gIGRlY2xhcmUgbmFtZTogJ1NTUElDSEFMTEVOR0UnO1xuICBkZWNsYXJlIGhhbmRsZXJOYW1lOiAnb25TU1BJJztcblxuICBkZWNsYXJlIG50bG1wYWNrZXQ6IGFueTtcbiAgZGVjbGFyZSBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobnRsbXBhY2tldDogYW55LCBudGxtcGFja2V0QnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcignU1NQSUNIQUxMRU5HRScsICdvblNTUEknKTtcblxuICAgIHRoaXMubnRsbXBhY2tldCA9IG50bG1wYWNrZXQ7XG4gICAgdGhpcy5udGxtcGFja2V0QnVmZmVyID0gbnRsbXBhY2tldEJ1ZmZlcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLTyxNQUFNQSxJQUFJLEdBQUc7RUFDbEJDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxX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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _events = require(\"events\");\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nvar _stream = require(\"stream\");\nvar _token = require(\"./token/token\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * @private\n */\nconst FLAGS = {\n  nullable: 1 << 0,\n  caseSen: 1 << 1,\n  updateableReadWrite: 1 << 2,\n  updateableUnknown: 1 << 3,\n  identity: 1 << 4,\n  computed: 1 << 5,\n  // introduced in TDS 7.2\n  fixedLenCLRType: 1 << 8,\n  // introduced in TDS 7.2\n  sparseColumnSet: 1 << 10,\n  // introduced in TDS 7.3.B\n  hidden: 1 << 13,\n  // introduced in TDS 7.2\n  key: 1 << 14,\n  // introduced in TDS 7.2\n  nullableUnknown: 1 << 15 // introduced in TDS 7.2\n};\n\n/**\n * @private\n */\nconst DONE_STATUS = {\n  FINAL: 0x00,\n  MORE: 0x1,\n  ERROR: 0x2,\n  INXACT: 0x4,\n  COUNT: 0x10,\n  ATTN: 0x20,\n  SRVERROR: 0x100\n};\n\n/**\n * @private\n */\n\nconst rowTokenBuffer = Buffer.from([_token.TYPE.ROW]);\nconst textPointerAndTimestampBuffer = Buffer.from([\n// TextPointer length\n0x10,\n// TextPointer\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// Timestamp\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\nconst textPointerNullBuffer = Buffer.from([0x00]);\n\n// A transform that converts rows to packets.\nclass RowTransform extends _stream.Transform {\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n  constructor(bulkLoad) {\n    super({\n      writableObjectMode: true\n    });\n    this.bulkLoad = bulkLoad;\n    this.mainOptions = bulkLoad.options;\n    this.columns = bulkLoad.columns;\n    this.columnMetadataWritten = false;\n  }\n\n  /**\n   * @private\n   */\n  _transform(row, _encoding, callback) {\n    if (!this.columnMetadataWritten) {\n      this.push(this.bulkLoad.getColMetaData());\n      this.columnMetadataWritten = true;\n    }\n    this.push(rowTokenBuffer);\n    for (let i = 0; i < this.columns.length; i++) {\n      const c = this.columns[i];\n      let value = Array.isArray(row) ? row[i] : row[c.objName];\n      if (!this.bulkLoad.firstRowWritten) {\n        try {\n          value = c.type.validate(value, c.collation);\n        } catch (error) {\n          return callback(error);\n        }\n      }\n      const parameter = {\n        length: c.length,\n        scale: c.scale,\n        precision: c.precision,\n        value: value\n      };\n      if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') {\n        if (value == null) {\n          this.push(textPointerNullBuffer);\n          continue;\n        }\n        this.push(textPointerAndTimestampBuffer);\n      }\n      this.push(c.type.generateParameterLength(parameter, this.mainOptions));\n      for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) {\n        this.push(chunk);\n      }\n    }\n    process.nextTick(callback);\n  }\n\n  /**\n   * @private\n   */\n  _flush(callback) {\n    this.push(this.bulkLoad.createDoneToken());\n    process.nextTick(callback);\n  }\n}\n\n/**\n * A BulkLoad instance is used to perform a bulk insert.\n *\n * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.\n *\n * Example of BulkLoad Usages:\n *\n * ```js\n * // optional BulkLoad options\n * const options = { keepNulls: true };\n *\n * // instantiate - provide the table where you'll be inserting to, options and a callback\n * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {\n *   console.log('inserted %d rows', rowCount);\n * });\n *\n * // setup your columns - always indicate whether the column is nullable\n * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });\n * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });\n *\n * // execute\n * connection.execBulkLoad(bulkLoad, [\n *   { myInt: 7, myString: 'hello' },\n *   { myInt: 23, myString: 'world' }\n * ]);\n * ```\n */\nclass BulkLoad extends _events.EventEmitter {\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n  constructor(table, collation, connectionOptions, {\n    checkConstraints = false,\n    fireTriggers = false,\n    keepNulls = false,\n    lockTable = false,\n    order = {}\n  }, callback) {\n    if (typeof checkConstraints !== 'boolean') {\n      throw new TypeError('The \"options.checkConstraints\" property must be of type boolean.');\n    }\n    if (typeof fireTriggers !== 'boolean') {\n      throw new TypeError('The \"options.fireTriggers\" property must be of type boolean.');\n    }\n    if (typeof keepNulls !== 'boolean') {\n      throw new TypeError('The \"options.keepNulls\" property must be of type boolean.');\n    }\n    if (typeof lockTable !== 'boolean') {\n      throw new TypeError('The \"options.lockTable\" property must be of type boolean.');\n    }\n    if (typeof order !== 'object' || order === null) {\n      throw new TypeError('The \"options.order\" property must be of type object.');\n    }\n    for (const [column, direction] of Object.entries(order)) {\n      if (direction !== 'ASC' && direction !== 'DESC') {\n        throw new TypeError('The value of the \"' + column + '\" key in the \"options.order\" object must be either \"ASC\" or \"DESC\".');\n      }\n    }\n    super();\n    this.error = undefined;\n    this.canceled = false;\n    this.executionStarted = false;\n    this.collation = collation;\n    this.table = table;\n    this.options = connectionOptions;\n    this.callback = callback;\n    this.columns = [];\n    this.columnsByName = {};\n    this.firstRowWritten = false;\n    this.streamingMode = false;\n    this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define\n\n    this.bulkOptions = {\n      checkConstraints,\n      fireTriggers,\n      keepNulls,\n      lockTable,\n      order\n    };\n  }\n\n  /**\n   * Adds a column to the bulk load.\n   *\n   * The column definitions should match the table you are trying to insert into.\n   * Attempting to call addColumn after the first row has been added will throw an exception.\n   *\n   * ```js\n   * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });\n   * ```\n   *\n   * @param name The name of the column.\n   * @param type One of the supported `data types`.\n   * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false.\n   * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n   * @param nullable Indicates whether the column accepts NULL values.\n   * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.\n   * @param precision For Numeric, Decimal.\n   * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n  */\n  addColumn(name, type, {\n    output = false,\n    length,\n    precision,\n    scale,\n    objName = name,\n    nullable = true\n  }) {\n    if (this.firstRowWritten) {\n      throw new Error('Columns cannot be added to bulk insert after the first row has been written.');\n    }\n    if (this.executionStarted) {\n      throw new Error('Columns cannot be added to bulk insert after execution has started.');\n    }\n    const column = {\n      type: type,\n      name: name,\n      value: null,\n      output: output,\n      length: length,\n      precision: precision,\n      scale: scale,\n      objName: objName,\n      nullable: nullable,\n      collation: this.collation\n    };\n    if ((type.id & 0x30) === 0x20) {\n      if (column.length == null && type.resolveLength) {\n        column.length = type.resolveLength(column);\n      }\n    }\n    if (type.resolvePrecision && column.precision == null) {\n      column.precision = type.resolvePrecision(column);\n    }\n    if (type.resolveScale && column.scale == null) {\n      column.scale = type.resolveScale(column);\n    }\n    this.columns.push(column);\n    this.columnsByName[name] = column;\n  }\n\n  /**\n   * @private\n   */\n  getOptionsSql() {\n    const addOptions = [];\n    if (this.bulkOptions.checkConstraints) {\n      addOptions.push('CHECK_CONSTRAINTS');\n    }\n    if (this.bulkOptions.fireTriggers) {\n      addOptions.push('FIRE_TRIGGERS');\n    }\n    if (this.bulkOptions.keepNulls) {\n      addOptions.push('KEEP_NULLS');\n    }\n    if (this.bulkOptions.lockTable) {\n      addOptions.push('TABLOCK');\n    }\n    if (this.bulkOptions.order) {\n      const orderColumns = [];\n      for (const [column, direction] of Object.entries(this.bulkOptions.order)) {\n        orderColumns.push(`${column} ${direction}`);\n      }\n      if (orderColumns.length) {\n        addOptions.push(`ORDER (${orderColumns.join(', ')})`);\n      }\n    }\n    if (addOptions.length > 0) {\n      return ` WITH (${addOptions.join(',')})`;\n    } else {\n      return '';\n    }\n  }\n\n  /**\n   * @private\n   */\n  getBulkInsertSql() {\n    let sql = 'insert bulk ' + this.table + '(';\n    for (let i = 0, len = this.columns.length; i < len; i++) {\n      const c = this.columns[i];\n      if (i !== 0) {\n        sql += ', ';\n      }\n      sql += '[' + c.name + '] ' + c.type.declaration(c);\n    }\n    sql += ')';\n    sql += this.getOptionsSql();\n    return sql;\n  }\n\n  /**\n   * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object.\n   * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`).\n   *\n   * ```js\n   * var sql = bulkLoad.getTableCreationSql();\n   * ```\n   *\n   * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load,\n   * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]\n   */\n  getTableCreationSql() {\n    let sql = 'CREATE TABLE ' + this.table + '(\\n';\n    for (let i = 0, len = this.columns.length; i < len; i++) {\n      const c = this.columns[i];\n      if (i !== 0) {\n        sql += ',\\n';\n      }\n      sql += '[' + c.name + '] ' + c.type.declaration(c);\n      if (c.nullable !== undefined) {\n        sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');\n      }\n    }\n    sql += '\\n)';\n    return sql;\n  }\n\n  /**\n   * @private\n   */\n  getColMetaData() {\n    const tBuf = new _writableTrackingBuffer.default(100, null, true);\n    // TokenType\n    tBuf.writeUInt8(_token.TYPE.COLMETADATA);\n    // Count\n    tBuf.writeUInt16LE(this.columns.length);\n    for (let j = 0, len = this.columns.length; j < len; j++) {\n      const c = this.columns[j];\n      // UserType\n      if (this.options.tdsVersion < '7_2') {\n        tBuf.writeUInt16LE(0);\n      } else {\n        tBuf.writeUInt32LE(0);\n      }\n\n      // Flags\n      let flags = FLAGS.updateableReadWrite;\n      if (c.nullable) {\n        flags |= FLAGS.nullable;\n      } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') {\n        flags |= FLAGS.nullableUnknown;\n      }\n      tBuf.writeUInt16LE(flags);\n\n      // TYPE_INFO\n      tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options));\n\n      // TableName\n      if (c.type.hasTableName) {\n        tBuf.writeUsVarchar(this.table, 'ucs2');\n      }\n\n      // ColName\n      tBuf.writeBVarchar(c.name, 'ucs2');\n    }\n    return tBuf.data;\n  }\n\n  /**\n   * Sets a timeout for this bulk load.\n   *\n   * ```js\n   * bulkLoad.setTimeout(timeout);\n   * ```\n   *\n   * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout.\n   *   When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.\n   */\n  setTimeout(timeout) {\n    this.timeout = timeout;\n  }\n\n  /**\n   * @private\n   */\n  createDoneToken() {\n    // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here\n    const tBuf = new _writableTrackingBuffer.default(this.options.tdsVersion < '7_2' ? 9 : 13);\n    tBuf.writeUInt8(_token.TYPE.DONE);\n    const status = DONE_STATUS.FINAL;\n    tBuf.writeUInt16LE(status);\n    tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)\n    tBuf.writeUInt32LE(0); // row count - doesn't really matter\n    if (this.options.tdsVersion >= '7_2') {\n      tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2\n    }\n\n    return tBuf.data;\n  }\n\n  /**\n   * @private\n   */\n  cancel() {\n    if (this.canceled) {\n      return;\n    }\n    this.canceled = true;\n    this.emit('cancel');\n  }\n}\nvar _default = BulkLoad;\nexports.default = _default;\nmodule.exports = BulkLoad;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zdHJlYW0iLCJfdG9rZW4iLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkZMQUdTIiwibnVsbGFibGUiLCJjYXNlU2VuIiwidXBkYXRlYWJsZVJlYWRXcml0ZSIsInVwZGF0ZWFibGVVbmtub3duIiwiaWRlbnRpdHkiLCJjb21wdXRlZCIsImZpeGVkTGVuQ0xSVHlwZSIsInNwYXJzZUNvbHVtblNldCIsImhpZGRlbiIsImtleSIsIm51bGxhYmxlVW5rbm93biIsIkRPTkVfU1RBVFVTIiwiRklOQUwiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInJvd1Rva2VuQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIlRPS0VOX1RZUEUiLCJST1ciLCJ0ZXh0UG9pbnRlckFuZFRpbWVzdGFtcEJ1ZmZlciIsInRleHRQb2ludGVyTnVsbEJ1ZmZlciIsIlJvd1RyYW5zZm9ybSIsIlRyYW5zZm9ybSIsImNvbnN0cnVjdG9yIiwiYnVsa0xvYWQiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJtYWluT3B0aW9ucyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiY29sdW1uTWV0YWRhdGFXcml0dGVuIiwiX3RyYW5zZm9ybSIsInJvdyIsIl9lbmNvZGluZyIsImNhbGxiYWNrIiwicHVzaCIsImdldENvbE1ldGFEYXRhIiwiaSIsImxlbmd0aCIsImMiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm9iak5hbWUiLCJmaXJzdFJvd1dyaXR0ZW4iLCJ0eXBlIiwidmFsaWRhdGUiLCJjb2xsYXRpb24iLCJlcnJvciIsInBhcmFtZXRlciIsInNjYWxlIiwicHJlY2lzaW9uIiwibmFtZSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiY2h1bmsiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJfZmx1c2giLCJjcmVhdGVEb25lVG9rZW4iLCJCdWxrTG9hZCIsIkV2ZW50RW1pdHRlciIsInRhYmxlIiwiY29ubmVjdGlvbk9wdGlvbnMiLCJjaGVja0NvbnN0cmFpbnRzIiwiZmlyZVRyaWdnZXJzIiwia2VlcE51bGxzIiwibG9ja1RhYmxlIiwib3JkZXIiLCJUeXBlRXJyb3IiLCJjb2x1bW4iLCJkaXJlY3Rpb24iLCJPYmplY3QiLCJlbnRyaWVzIiwidW5kZWZpbmVkIiwiY2FuY2VsZWQiLCJleGVjdXRpb25TdGFydGVkIiwiY29sdW1uc0J5TmFtZSIsInN0cmVhbWluZ01vZGUiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsImJ1bGtPcHRpb25zIiwiYWRkQ29sdW1uIiwib3V0cHV0IiwiRXJyb3IiLCJpZCIsInJlc29sdmVMZW5ndGgiLCJyZXNvbHZlUHJlY2lzaW9uIiwicmVzb2x2ZVNjYWxlIiwiZ2V0T3B0aW9uc1NxbCIsImFkZE9wdGlvbnMiLCJvcmRlckNvbHVtbnMiLCJqb2luIiwiZ2V0QnVsa0luc2VydFNxbCIsInNxbCIsImxlbiIsImRlY2xhcmF0aW9uIiwiZ2V0VGFibGVDcmVhdGlvblNxbCIsInRCdWYiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwid3JpdGVVSW50OCIsIkNPTE1FVEFEQVRBIiwid3JpdGVVSW50MTZMRSIsImoiLCJ0ZHNWZXJzaW9uIiwid3JpdGVVSW50MzJMRSIsImZsYWdzIiwid3JpdGVCdWZmZXIiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiaGFzVGFibGVOYW1lIiwid3JpdGVVc1ZhcmNoYXIiLCJ3cml0ZUJWYXJjaGFyIiwiZGF0YSIsInNldFRpbWVvdXQiLCJ0aW1lb3V0IiwiRE9ORSIsInN0YXR1cyIsImNhbmNlbCIsImVtaXQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvYnVsay1sb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0IENvbm5lY3Rpb24sIHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuaW1wb3J0IHsgVHJhbnNmb3JtIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFRZUEUgYXMgVE9LRU5fVFlQRSB9IGZyb20gJy4vdG9rZW4vdG9rZW4nO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlLCB0eXBlIFBhcmFtZXRlciB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4vY29sbGF0aW9uJztcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBGTEFHUyA9IHtcbiAgbnVsbGFibGU6IDEgPDwgMCxcbiAgY2FzZVNlbjogMSA8PCAxLFxuICB1cGRhdGVhYmxlUmVhZFdyaXRlOiAxIDw8IDIsXG4gIHVwZGF0ZWFibGVVbmtub3duOiAxIDw8IDMsXG4gIGlkZW50aXR5OiAxIDw8IDQsXG4gIGNvbXB1dGVkOiAxIDw8IDUsIC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxuICBmaXhlZExlbkNMUlR5cGU6IDEgPDwgOCwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4yXG4gIHNwYXJzZUNvbHVtblNldDogMSA8PCAxMCwgLy8gaW50cm9kdWNlZCBpbiBURFMgNy4zLkJcbiAgaGlkZGVuOiAxIDw8IDEzLCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAga2V5OiAxIDw8IDE0LCAvLyBpbnRyb2R1Y2VkIGluIFREUyA3LjJcbiAgbnVsbGFibGVVbmtub3duOiAxIDw8IDE1IC8vIGludHJvZHVjZWQgaW4gVERTIDcuMlxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBET05FX1NUQVRVUyA9IHtcbiAgRklOQUw6IDB4MDAsXG4gIE1PUkU6IDB4MSxcbiAgRVJST1I6IDB4MixcbiAgSU5YQUNUOiAweDQsXG4gIENPVU5UOiAweDEwLFxuICBBVFROOiAweDIwLFxuICBTUlZFUlJPUjogMHgxMDBcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuaW50ZXJmYWNlIEludGVybmFsT3B0aW9ucyB7XG4gIGNoZWNrQ29uc3RyYWludHM6IGJvb2xlYW47XG4gIGZpcmVUcmlnZ2VyczogYm9vbGVhbjtcbiAga2VlcE51bGxzOiBib29sZWFuO1xuICBsb2NrVGFibGU6IGJvb2xlYW47XG4gIG9yZGVyOiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiAnQVNDJyB8ICdERVNDJyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKipcbiAgICogSG9ub3JzIGNvbnN0cmFpbnRzIGR1cmluZyBidWxrIGxvYWQsIHVzaW5nIFQtU1FMXG4gICAqIFtDSEVDS19DT05TVFJBSU5UU10oaHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczE4NjI0Nyh2PXNxbC4xMDUpLmFzcHgpLlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYClcbiAgICovXG4gIGNoZWNrQ29uc3RyYWludHM/OiBJbnRlcm5hbE9wdGlvbnNbJ2NoZWNrQ29uc3RyYWludHMnXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSG9ub3JzIGluc2VydCB0cmlnZ2VycyBkdXJpbmcgYnVsayBsb2FkLCB1c2luZyB0aGUgVC1TUUwgW0ZJUkVfVFJJR0dFUlNdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODc2NDAodj1zcWwuMTA1KS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBmaXJlVHJpZ2dlcnM/OiBJbnRlcm5hbE9wdGlvbnNbJ2ZpcmVUcmlnZ2VycyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBIb25vcnMgbnVsbCB2YWx1ZSBwYXNzZWQsIGlnbm9yZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHNldCBvbiB0YWJsZSwgdXNpbmcgVC1TUUwgW0tFRVBfTlVMTFNdKGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODc4ODcodj1zcWwuMTIwKS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBrZWVwTnVsbHM/OiBJbnRlcm5hbE9wdGlvbnNbJ2tlZXBOdWxscyddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBQbGFjZXMgYSBidWxrIHVwZGF0ZShCVSkgbG9jayBvbiB0YWJsZSB3aGlsZSBwZXJmb3JtaW5nIGJ1bGsgbG9hZCwgdXNpbmcgVC1TUUwgW1RBQkxPQ0tdKGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODA4NzYodj1zcWwuMTA1KS5hc3B4KS4gKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBsb2NrVGFibGU/OiBJbnRlcm5hbE9wdGlvbnNbJ2xvY2tUYWJsZSddIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG9yZGVyaW5nIG9mIHRoZSBkYXRhIHRvIHBvc3NpYmx5IGluY3JlYXNlIGJ1bGsgaW5zZXJ0IHBlcmZvcm1hbmNlLCB1c2luZyBULVNRTCBbT1JERVJdKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3NxbC9zcWwtc2VydmVyLTIwMDgtcjIvbXMxNzc0Njgodj1zcWwuMTA1KSkuIChkZWZhdWx0OiBge31gKVxuICAgKi9cbiAgb3JkZXI/OiBJbnRlcm5hbE9wdGlvbnNbJ29yZGVyJ10gfCB1bmRlZmluZWQ7XG59XG5cblxuZXhwb3J0IHR5cGUgQ2FsbGJhY2sgPVxuICAvKipcbiAgICogQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgW1tCdWxrTG9hZF1dIGZpbmlzaGVzIGV4ZWN1dGluZy5cbiAgICpcbiAgICogQHBhcmFtIHJvd0NvdW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbnNlcnRlZFxuICAgKi9cbiAgKGVycjogRXJyb3IgfCB1bmRlZmluZWQgfCBudWxsLCByb3dDb3VudD86IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIENvbHVtbiBleHRlbmRzIFBhcmFtZXRlciB7XG4gIG9iak5hbWU6IHN0cmluZztcbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG59XG5cbmludGVyZmFjZSBDb2x1bW5PcHRpb25zIHtcbiAgb3V0cHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICovXG4gIGxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogRm9yIE51bWVyaWMsIERlY2ltYWwuXG4gICAqL1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZvciBOdW1lcmljLCBEZWNpbWFsLCBUaW1lLCBEYXRlVGltZTIsIERhdGVUaW1lT2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4gaXMgZGlmZmVyZW50IGZyb20gdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGZvdW5kIG9uIGByb3dPYmpgIGFyZ3VtZW50cyBwYXNzZWQgdG8gW1thZGRSb3ddXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKi9cbiAgb2JqTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbHVtbiBhY2NlcHRzIE5VTEwgdmFsdWVzLlxuICAgKi9cbiAgbnVsbGFibGU/OiBib29sZWFuO1xufVxuXG5jb25zdCByb3dUb2tlbkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFsgVE9LRU5fVFlQRS5ST1cgXSk7XG5jb25zdCB0ZXh0UG9pbnRlckFuZFRpbWVzdGFtcEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFtcbiAgLy8gVGV4dFBvaW50ZXIgbGVuZ3RoXG4gIDB4MTAsXG5cbiAgLy8gVGV4dFBvaW50ZXJcbiAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCxcblxuICAvLyBUaW1lc3RhbXBcbiAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMFxuXSk7XG5jb25zdCB0ZXh0UG9pbnRlck51bGxCdWZmZXIgPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG4vLyBBIHRyYW5zZm9ybSB0aGF0IGNvbnZlcnRzIHJvd3MgdG8gcGFja2V0cy5cbmNsYXNzIFJvd1RyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb2x1bW5NZXRhZGF0YVdyaXR0ZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBidWxrTG9hZDogQnVsa0xvYWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBtYWluT3B0aW9uczogQnVsa0xvYWRbJ29wdGlvbnMnXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNvbHVtbnM6IEJ1bGtMb2FkWydjb2x1bW5zJ107XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuYnVsa0xvYWQgPSBidWxrTG9hZDtcbiAgICB0aGlzLm1haW5PcHRpb25zID0gYnVsa0xvYWQub3B0aW9ucztcbiAgICB0aGlzLmNvbHVtbnMgPSBidWxrTG9hZC5jb2x1bW5zO1xuXG4gICAgdGhpcy5jb2x1bW5NZXRhZGF0YVdyaXR0ZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RyYW5zZm9ybShyb3c6IEFycmF5PHVua25vd24+IHwgeyBbY29sTmFtZTogc3RyaW5nXTogdW5rbm93biB9LCBfZW5jb2Rpbmc6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbikge1xuICAgICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuZ2V0Q29sTWV0YURhdGEoKSk7XG4gICAgICB0aGlzLmNvbHVtbk1ldGFkYXRhV3JpdHRlbiA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHJvd1Rva2VuQnVmZmVyKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb2x1bW5zW2ldO1xuICAgICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheShyb3cpID8gcm93W2ldIDogcm93W2Mub2JqTmFtZV07XG5cbiAgICAgIGlmICghdGhpcy5idWxrTG9hZC5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YWx1ZSA9IGMudHlwZS52YWxpZGF0ZSh2YWx1ZSwgYy5jb2xsYXRpb24pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSB7XG4gICAgICAgIGxlbmd0aDogYy5sZW5ndGgsXG4gICAgICAgIHNjYWxlOiBjLnNjYWxlLFxuICAgICAgICBwcmVjaXNpb246IGMucHJlY2lzaW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIGlmIChjLnR5cGUubmFtZSA9PT0gJ1RleHQnIHx8IGMudHlwZS5uYW1lID09PSAnSW1hZ2UnIHx8IGMudHlwZS5uYW1lID09PSAnTlRleHQnKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKHRleHRQb2ludGVyTnVsbEJ1ZmZlcik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnB1c2godGV4dFBvaW50ZXJBbmRUaW1lc3RhbXBCdWZmZXIpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnB1c2goYy50eXBlLmdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpO1xuICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgdGhpcy5tYWluT3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5wdXNoKGNodW5rKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2ZsdXNoKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuYnVsa0xvYWQuY3JlYXRlRG9uZVRva2VuKCkpO1xuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIEJ1bGtMb2FkIGluc3RhbmNlIGlzIHVzZWQgdG8gcGVyZm9ybSBhIGJ1bGsgaW5zZXJ0LlxuICpcbiAqIFVzZSBbW0Nvbm5lY3Rpb24ubmV3QnVsa0xvYWRdXSB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2UsIGFuZCBbW0Nvbm5lY3Rpb24uZXhlY0J1bGtMb2FkXV0gdG8gZXhlY3V0ZSBpdC5cbiAqXG4gKiBFeGFtcGxlIG9mIEJ1bGtMb2FkIFVzYWdlczpcbiAqXG4gKiBgYGBqc1xuICogLy8gb3B0aW9uYWwgQnVsa0xvYWQgb3B0aW9uc1xuICogY29uc3Qgb3B0aW9ucyA9IHsga2VlcE51bGxzOiB0cnVlIH07XG4gKlxuICogLy8gaW5zdGFudGlhdGUgLSBwcm92aWRlIHRoZSB0YWJsZSB3aGVyZSB5b3UnbGwgYmUgaW5zZXJ0aW5nIHRvLCBvcHRpb25zIGFuZCBhIGNhbGxiYWNrXG4gKiBjb25zdCBidWxrTG9hZCA9IGNvbm5lY3Rpb24ubmV3QnVsa0xvYWQoJ015VGFibGUnLCBvcHRpb25zLCAoZXJyb3IsIHJvd0NvdW50KSA9PiB7XG4gKiAgIGNvbnNvbGUubG9nKCdpbnNlcnRlZCAlZCByb3dzJywgcm93Q291bnQpO1xuICogfSk7XG4gKlxuICogLy8gc2V0dXAgeW91ciBjb2x1bW5zIC0gYWx3YXlzIGluZGljYXRlIHdoZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZVxuICogYnVsa0xvYWQuYWRkQ29sdW1uKCdteUludCcsIFRZUEVTLkludCwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gKiBidWxrTG9hZC5hZGRDb2x1bW4oJ215U3RyaW5nJywgVFlQRVMuTlZhckNoYXIsIHsgbGVuZ3RoOiA1MCwgbnVsbGFibGU6IHRydWUgfSk7XG4gKlxuICogLy8gZXhlY3V0ZVxuICogY29ubmVjdGlvbi5leGVjQnVsa0xvYWQoYnVsa0xvYWQsIFtcbiAqICAgeyBteUludDogNywgbXlTdHJpbmc6ICdoZWxsbycgfSxcbiAqICAgeyBteUludDogMjMsIG15U3RyaW5nOiAnd29ybGQnIH1cbiAqIF0pO1xuICogYGBgXG4gKi9cbmNsYXNzIEJ1bGtMb2FkIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNhbmNlbGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgZXhlY3V0aW9uU3RhcnRlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHN0cmVhbWluZ01vZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0YWJsZTogc3RyaW5nO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBvcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY2FsbGJhY2s6IENhbGxiYWNrO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb2x1bW5zOiBBcnJheTxDb2x1bW4+O1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY29sdW1uc0J5TmFtZTogeyBbbmFtZTogc3RyaW5nXTogQ29sdW1uIH07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGZpcnN0Um93V3JpdHRlbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvd1RvUGFja2V0VHJhbnNmb3JtOiBSb3dUcmFuc2Zvcm07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGJ1bGtPcHRpb25zOiBJbnRlcm5hbE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByb3dzOiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcnN0OiBBcnJheTxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgcm93Q291bnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFibGU6IHN0cmluZywgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQsIGNvbm5lY3Rpb25PcHRpb25zOiBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zLCB7XG4gICAgY2hlY2tDb25zdHJhaW50cyA9IGZhbHNlLFxuICAgIGZpcmVUcmlnZ2VycyA9IGZhbHNlLFxuICAgIGtlZXBOdWxscyA9IGZhbHNlLFxuICAgIGxvY2tUYWJsZSA9IGZhbHNlLFxuICAgIG9yZGVyID0ge30sXG4gIH06IE9wdGlvbnMsIGNhbGxiYWNrOiBDYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2hlY2tDb25zdHJhaW50cyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmNoZWNrQ29uc3RyYWludHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpcmVUcmlnZ2VycyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJvcHRpb25zLmZpcmVUcmlnZ2Vyc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Yga2VlcE51bGxzICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9wdGlvbnMua2VlcE51bGxzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBsb2NrVGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5sb2NrVGFibGVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9yZGVyICE9PSAnb2JqZWN0JyB8fCBvcmRlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3B0aW9ucy5vcmRlclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbY29sdW1uLCBkaXJlY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG9yZGVyKSkge1xuICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gJ0FTQycgJiYgZGlyZWN0aW9uICE9PSAnREVTQycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIG9mIHRoZSBcIicgKyBjb2x1bW4gKyAnXCIga2V5IGluIHRoZSBcIm9wdGlvbnMub3JkZXJcIiBvYmplY3QgbXVzdCBiZSBlaXRoZXIgXCJBU0NcIiBvciBcIkRFU0NcIi4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNhbmNlbGVkID0gZmFsc2U7XG4gICAgdGhpcy5leGVjdXRpb25TdGFydGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbGxhdGlvbiA9IGNvbGxhdGlvbjtcblxuICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBjb25uZWN0aW9uT3B0aW9ucztcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy5jb2x1bW5zQnlOYW1lID0ge307XG4gICAgdGhpcy5maXJzdFJvd1dyaXR0ZW4gPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbWluZ01vZGUgPSBmYWxzZTtcblxuICAgIHRoaXMucm93VG9QYWNrZXRUcmFuc2Zvcm0gPSBuZXcgUm93VHJhbnNmb3JtKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5cbiAgICB0aGlzLmJ1bGtPcHRpb25zID0geyBjaGVja0NvbnN0cmFpbnRzLCBmaXJlVHJpZ2dlcnMsIGtlZXBOdWxscywgbG9ja1RhYmxlLCBvcmRlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb2x1bW4gdG8gdGhlIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogVGhlIGNvbHVtbiBkZWZpbml0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHRhYmxlIHlvdSBhcmUgdHJ5aW5nIHRvIGluc2VydCBpbnRvLlxuICAgKiBBdHRlbXB0aW5nIHRvIGNhbGwgYWRkQ29sdW1uIGFmdGVyIHRoZSBmaXJzdCByb3cgaGFzIGJlZW4gYWRkZWQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignTXlJbnRDb2x1bW4nLCBUWVBFUy5JbnQsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbi5cbiAgICogQHBhcmFtIHR5cGUgT25lIG9mIHRoZSBzdXBwb3J0ZWQgYGRhdGEgdHlwZXNgLlxuICAgKiBAcGFyYW0gX19uYW1lZFBhcmFtZXRlcnMgQWRkaXRpb25hbCBjb2x1bW4gdHlwZSBpbmZvcm1hdGlvbi4gQXQgYSBtaW5pbXVtLCBgbnVsbGFibGVgIG11c3QgYmUgc2V0IHRvIHRydWUgb3IgZmFsc2UuXG4gICAqIEBwYXJhbSBsZW5ndGggRm9yIFZhckNoYXIsIE5WYXJDaGFyLCBWYXJCaW5hcnkuIFVzZSBsZW5ndGggYXMgYEluZmluaXR5YCBmb3IgVmFyQ2hhcihtYXgpLCBOVmFyQ2hhcihtYXgpIGFuZCBWYXJCaW5hcnkobWF4KS5cbiAgICogQHBhcmFtIG51bGxhYmxlIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gYWNjZXB0cyBOVUxMIHZhbHVlcy5cbiAgICogQHBhcmFtIG9iak5hbWUgSWYgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgZm91bmQgb24gYHJvd09iamAgYXJndW1lbnRzIHBhc3NlZCB0byBbW2FkZFJvd11dIG9yIFtbQ29ubmVjdGlvbi5leGVjQnVsa0xvYWRdXSwgdGhlbiB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIEZvciBOdW1lcmljLCBEZWNpbWFsLlxuICAgKiBAcGFyYW0gc2NhbGUgRm9yIE51bWVyaWMsIERlY2ltYWwsIFRpbWUsIERhdGVUaW1lMiwgRGF0ZVRpbWVPZmZzZXQuXG4gICovXG4gIGFkZENvbHVtbihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB7IG91dHB1dCA9IGZhbHNlLCBsZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUsIG9iak5hbWUgPSBuYW1lLCBudWxsYWJsZSA9IHRydWUgfTogQ29sdW1uT3B0aW9ucykge1xuICAgIGlmICh0aGlzLmZpcnN0Um93V3JpdHRlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIGNhbm5vdCBiZSBhZGRlZCB0byBidWxrIGluc2VydCBhZnRlciB0aGUgZmlyc3Qgcm93IGhhcyBiZWVuIHdyaXR0ZW4uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblN0YXJ0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1ucyBjYW5ub3QgYmUgYWRkZWQgdG8gYnVsayBpbnNlcnQgYWZ0ZXIgZXhlY3V0aW9uIGhhcyBzdGFydGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG91dHB1dDogb3V0cHV0LFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIG9iak5hbWU6IG9iak5hbWUsXG4gICAgICBudWxsYWJsZTogbnVsbGFibGUsXG4gICAgICBjb2xsYXRpb246IHRoaXMuY29sbGF0aW9uXG4gICAgfTtcblxuICAgIGlmICgodHlwZS5pZCAmIDB4MzApID09PSAweDIwKSB7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCA9PSBudWxsICYmIHR5cGUucmVzb2x2ZUxlbmd0aCkge1xuICAgICAgICBjb2x1bW4ubGVuZ3RoID0gdHlwZS5yZXNvbHZlTGVuZ3RoKGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUucmVzb2x2ZVByZWNpc2lvbiAmJiBjb2x1bW4ucHJlY2lzaW9uID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5wcmVjaXNpb24gPSB0eXBlLnJlc29sdmVQcmVjaXNpb24oY29sdW1uKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5yZXNvbHZlU2NhbGUgJiYgY29sdW1uLnNjYWxlID09IG51bGwpIHtcbiAgICAgIGNvbHVtbi5zY2FsZSA9IHR5cGUucmVzb2x2ZVNjYWxlKGNvbHVtbik7XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcblxuICAgIHRoaXMuY29sdW1uc0J5TmFtZVtuYW1lXSA9IGNvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0T3B0aW9uc1NxbCgpIHtcbiAgICBjb25zdCBhZGRPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5jaGVja0NvbnN0cmFpbnRzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0NIRUNLX0NPTlNUUkFJTlRTJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMuZmlyZVRyaWdnZXJzKSB7XG4gICAgICBhZGRPcHRpb25zLnB1c2goJ0ZJUkVfVFJJR0dFUlMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5idWxrT3B0aW9ucy5rZWVwTnVsbHMpIHtcbiAgICAgIGFkZE9wdGlvbnMucHVzaCgnS0VFUF9OVUxMUycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJ1bGtPcHRpb25zLmxvY2tUYWJsZSkge1xuICAgICAgYWRkT3B0aW9ucy5wdXNoKCdUQUJMT0NLJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYnVsa09wdGlvbnMub3JkZXIpIHtcbiAgICAgIGNvbnN0IG9yZGVyQ29sdW1ucyA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIGRpcmVjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5idWxrT3B0aW9ucy5vcmRlcikpIHtcbiAgICAgICAgb3JkZXJDb2x1bW5zLnB1c2goYCR7Y29sdW1ufSAke2RpcmVjdGlvbn1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgYWRkT3B0aW9ucy5wdXNoKGBPUkRFUiAoJHtvcmRlckNvbHVtbnMuam9pbignLCAnKX0pYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAgV0lUSCAoJHthZGRPcHRpb25zLmpvaW4oJywnKX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0QnVsa0luc2VydFNxbCgpIHtcbiAgICBsZXQgc3FsID0gJ2luc2VydCBidWxrICcgKyB0aGlzLnRhYmxlICsgJygnO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgIH1cbiAgICAgIHNxbCArPSAnWycgKyBjLm5hbWUgKyAnXSAnICsgKGMudHlwZS5kZWNsYXJhdGlvbihjKSk7XG4gICAgfVxuICAgIHNxbCArPSAnKSc7XG5cbiAgICBzcWwgKz0gdGhpcy5nZXRPcHRpb25zU3FsKCk7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHNpbXBseSBhIGhlbHBlciB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBgQ1JFQVRFIFRBQkxFIFNRTGAgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBjb2x1bW5zIGFkZGVkIHRvIHRoZSBidWxrTG9hZCBvYmplY3QuXG4gICAqIFRoaXMgbWF5IGJlIHBhcnRpY3VsYXJseSBoYW5keSB3aGVuIHlvdSB3YW50IHRvIGluc2VydCBpbnRvIGEgdGVtcG9yYXJ5IHRhYmxlIChhIHRhYmxlIHdoaWNoIHN0YXJ0cyB3aXRoIGAjYCkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHZhciBzcWwgPSBidWxrTG9hZC5nZXRUYWJsZUNyZWF0aW9uU3FsKCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBBIHNpZGUgbm90ZSBvbiBidWxrIGluc2VydGluZyBpbnRvIHRlbXBvcmFyeSB0YWJsZXM6IGlmIHlvdSB3YW50IHRvIGFjY2VzcyBhIGxvY2FsIHRlbXBvcmFyeSB0YWJsZSBhZnRlciBleGVjdXRpbmcgdGhlIGJ1bGsgbG9hZCxcbiAgICogeW91J2xsIG5lZWQgdG8gdXNlIHRoZSBzYW1lIGNvbm5lY3Rpb24gYW5kIGV4ZWN1dGUgeW91ciByZXF1ZXN0cyB1c2luZyBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0gaW5zdGVhZCBvZiBbW0Nvbm5lY3Rpb24uZXhlY1NxbF1dXG4gICAqL1xuICBnZXRUYWJsZUNyZWF0aW9uU3FsKCkge1xuICAgIGxldCBzcWwgPSAnQ1JFQVRFIFRBQkxFICcgKyB0aGlzLnRhYmxlICsgJyhcXG4nO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICBzcWwgKz0gJyxcXG4nO1xuICAgICAgfVxuICAgICAgc3FsICs9ICdbJyArIGMubmFtZSArICddICcgKyAoYy50eXBlLmRlY2xhcmF0aW9uKGMpKTtcbiAgICAgIGlmIChjLm51bGxhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3FsICs9ICcgJyArIChjLm51bGxhYmxlID8gJ05VTEwnIDogJ05PVCBOVUxMJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHNxbCArPSAnXFxuKSc7XG4gICAgcmV0dXJuIHNxbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0Q29sTWV0YURhdGEoKSB7XG4gICAgY29uc3QgdEJ1ZiA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgbnVsbCwgdHJ1ZSk7XG4gICAgLy8gVG9rZW5UeXBlXG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuQ09MTUVUQURBVEEpO1xuICAgIC8vIENvdW50XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHRoaXMuY29sdW1ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaiA9IDAsIGxlbiA9IHRoaXMuY29sdW1ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29sdW1uc1tqXTtcbiAgICAgIC8vIFVzZXJUeXBlXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgICB0QnVmLndyaXRlVUludDE2TEUoMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0QnVmLndyaXRlVUludDMyTEUoMCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZsYWdzXG4gICAgICBsZXQgZmxhZ3MgPSBGTEFHUy51cGRhdGVhYmxlUmVhZFdyaXRlO1xuICAgICAgaWYgKGMubnVsbGFibGUpIHtcbiAgICAgICAgZmxhZ3MgfD0gRkxBR1MubnVsbGFibGU7XG4gICAgICB9IGVsc2UgaWYgKGMubnVsbGFibGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMudGRzVmVyc2lvbiA+PSAnN18yJykge1xuICAgICAgICBmbGFncyB8PSBGTEFHUy5udWxsYWJsZVVua25vd247XG4gICAgICB9XG4gICAgICB0QnVmLndyaXRlVUludDE2TEUoZmxhZ3MpO1xuXG4gICAgICAvLyBUWVBFX0lORk9cbiAgICAgIHRCdWYud3JpdGVCdWZmZXIoYy50eXBlLmdlbmVyYXRlVHlwZUluZm8oYywgdGhpcy5vcHRpb25zKSk7XG5cbiAgICAgIC8vIFRhYmxlTmFtZVxuICAgICAgaWYgKGMudHlwZS5oYXNUYWJsZU5hbWUpIHtcbiAgICAgICAgdEJ1Zi53cml0ZVVzVmFyY2hhcih0aGlzLnRhYmxlLCAndWNzMicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDb2xOYW1lXG4gICAgICB0QnVmLndyaXRlQlZhcmNoYXIoYy5uYW1lLCAndWNzMicpO1xuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0aW1lb3V0IGZvciB0aGlzIGJ1bGsgbG9hZC5cbiAgICpcbiAgICogYGBganNcbiAgICogYnVsa0xvYWQuc2V0VGltZW91dCh0aW1lb3V0KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB0aW1lb3V0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgYnVsayBsb2FkIGlzIGNvbnNpZGVyZWQgZmFpbGVkLCBvciAwIGZvciBubyB0aW1lb3V0LlxuICAgKiAgIFdoZW4gbm8gdGltZW91dCBpcyBzZXQgZm9yIHRoZSBidWxrIGxvYWQsIHRoZSBbW0Nvbm5lY3Rpb25PcHRpb25zLnJlcXVlc3RUaW1lb3V0XV0gb2YgdGhlIENvbm5lY3Rpb24gaXMgdXNlZC5cbiAgICovXG4gIHNldFRpbWVvdXQodGltZW91dD86IG51bWJlcikge1xuICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZURvbmVUb2tlbigpIHtcbiAgICAvLyBJdCBtaWdodCBiZSBuaWNlIHRvIG1ha2UgRG9uZVRva2VuIGEgY2xhc3MgaWYgYW55dGhpbmcgbmVlZHMgdG8gY3JlYXRlIHRoZW0sIGJ1dCBmb3Igbm93LCBqdXN0IGRvIGl0IGhlcmVcbiAgICBjb25zdCB0QnVmID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IDkgOiAxMyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQ4KFRPS0VOX1RZUEUuRE9ORSk7XG4gICAgY29uc3Qgc3RhdHVzID0gRE9ORV9TVEFUVVMuRklOQUw7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKHN0YXR1cyk7XG4gICAgdEJ1Zi53cml0ZVVJbnQxNkxFKDApOyAvLyBDdXJDbWQgKFREUyBpZ25vcmVzIHRoaXMpXG4gICAgdEJ1Zi53cml0ZVVJbnQzMkxFKDApOyAvLyByb3cgY291bnQgLSBkb2Vzbid0IHJlYWxseSBtYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRpb25zLnRkc1ZlcnNpb24gPj0gJzdfMicpIHtcbiAgICAgIHRCdWYud3JpdGVVSW50MzJMRSgwKTsgLy8gcm93IGNvdW50IGlzIDY0IGJpdHMgaW4gPj0gVERTIDcuMlxuICAgIH1cbiAgICByZXR1cm4gdEJ1Zi5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1bGtMb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBCdWxrTG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFtRCxTQUFBRSx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUtuRDtBQUNBO0FBQ0E7QUFDQSxNQUFNRyxLQUFLLEdBQUc7RUFDWkMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ2hCQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDZkMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDM0JDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ3pCQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDaEJDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztFQUFFO0VBQ2xCQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFBRTtFQUN6QkMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFO0VBQUU7RUFDMUJDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRTtFQUFFO0VBQ2pCQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUU7RUFBRTtFQUNkQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLFdBQVcsR0FBRztFQUNsQkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsSUFBSSxFQUFFLEdBQUc7RUFDVEMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsTUFBTSxFQUFFLEdBQUc7RUFD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","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass Serializer {\n    /**\n     * serialize the JSON blob\n     * @param data\n     */\n    static serializeJSONBlob(data) {\n        return JSON.stringify(data);\n    }\n    /**\n     * Serialize Accounts\n     * @param accCache\n     */\n    static serializeAccounts(accCache) {\n        const accounts = {};\n        Object.keys(accCache).map(function (key) {\n            const accountEntity = accCache[key];\n            accounts[key] = {\n                home_account_id: accountEntity.homeAccountId,\n                environment: accountEntity.environment,\n                realm: accountEntity.realm,\n                local_account_id: accountEntity.localAccountId,\n                username: accountEntity.username,\n                authority_type: accountEntity.authorityType,\n                name: accountEntity.name,\n                client_info: accountEntity.clientInfo,\n                last_modification_time: accountEntity.lastModificationTime,\n                last_modification_app: accountEntity.lastModificationApp,\n                tenantProfiles: accountEntity.tenantProfiles?.map((tenantProfile) => {\n                    return JSON.stringify(tenantProfile);\n                }),\n            };\n        });\n        return accounts;\n    }\n    /**\n     * Serialize IdTokens\n     * @param idTCache\n     */\n    static serializeIdTokens(idTCache) {\n        const idTokens = {};\n        Object.keys(idTCache).map(function (key) {\n            const idTEntity = idTCache[key];\n            idTokens[key] = {\n                home_account_id: idTEntity.homeAccountId,\n                environment: idTEntity.environment,\n                credential_type: idTEntity.credentialType,\n                client_id: idTEntity.clientId,\n                secret: idTEntity.secret,\n                realm: idTEntity.realm,\n            };\n        });\n        return idTokens;\n    }\n    /**\n     * Serializes AccessTokens\n     * @param atCache\n     */\n    static serializeAccessTokens(atCache) {\n        const accessTokens = {};\n        Object.keys(atCache).map(function (key) {\n            const atEntity = atCache[key];\n            accessTokens[key] = {\n                home_account_id: atEntity.homeAccountId,\n                environment: atEntity.environment,\n                credential_type: atEntity.credentialType,\n                client_id: atEntity.clientId,\n                secret: atEntity.secret,\n                realm: atEntity.realm,\n                target: atEntity.target,\n                cached_at: atEntity.cachedAt,\n                expires_on: atEntity.expiresOn,\n                extended_expires_on: atEntity.extendedExpiresOn,\n                refresh_on: atEntity.refreshOn,\n                key_id: atEntity.keyId,\n                token_type: atEntity.tokenType,\n                requestedClaims: atEntity.requestedClaims,\n                requestedClaimsHash: atEntity.requestedClaimsHash,\n                userAssertionHash: atEntity.userAssertionHash,\n            };\n        });\n        return accessTokens;\n    }\n    /**\n     * Serialize refreshTokens\n     * @param rtCache\n     */\n    static serializeRefreshTokens(rtCache) {\n        const refreshTokens = {};\n        Object.keys(rtCache).map(function (key) {\n            const rtEntity = rtCache[key];\n            refreshTokens[key] = {\n                home_account_id: rtEntity.homeAccountId,\n                environment: rtEntity.environment,\n                credential_type: rtEntity.credentialType,\n                client_id: rtEntity.clientId,\n                secret: rtEntity.secret,\n                family_id: rtEntity.familyId,\n                target: rtEntity.target,\n                realm: rtEntity.realm,\n            };\n        });\n        return refreshTokens;\n    }\n    /**\n     * Serialize amdtCache\n     * @param amdtCache\n     */\n    static serializeAppMetadata(amdtCache) {\n        const appMetadata = {};\n        Object.keys(amdtCache).map(function (key) {\n            const amdtEntity = amdtCache[key];\n            appMetadata[key] = {\n                client_id: amdtEntity.clientId,\n                environment: amdtEntity.environment,\n                family_id: amdtEntity.familyId,\n            };\n        });\n        return appMetadata;\n    }\n    /**\n     * Serialize the cache\n     * @param jsonContent\n     */\n    static serializeAllCache(inMemCache) {\n        return {\n            Account: this.serializeAccounts(inMemCache.accounts),\n            IdToken: this.serializeIdTokens(inMemCache.idTokens),\n            AccessToken: this.serializeAccessTokens(inMemCache.accessTokens),\n            RefreshToken: this.serializeRefreshTokens(inMemCache.refreshTokens),\n            AppMetadata: this.serializeAppMetadata(inMemCache.appMetadata),\n        };\n    }\n}\n\nexport { Serializer };\n//# sourceMappingURL=Serializer.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst Constants = {\n    LIBRARY_NAME: \"MSAL.JS\",\n    SKU: \"msal.js.common\",\n    // Prefix for all library cache entries\n    CACHE_PREFIX: \"msal\",\n    // default authority\n    DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n    DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n    DEFAULT_COMMON_TENANT: \"common\",\n    // ADFS String\n    ADFS: \"adfs\",\n    DSTS: \"dstsv2\",\n    // Default AAD Instance Discovery Endpoint\n    AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n    // CIAM URL\n    CIAM_AUTH_URL: \".ciamlogin.com\",\n    AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\n    // Resource delimiter - used for certain cache entries\n    RESOURCE_DELIM: \"|\",\n    // Placeholder for non-existent account ids/objects\n    NO_ACCOUNT: \"NO_ACCOUNT\",\n    // Claims\n    CLAIMS: \"claims\",\n    // Consumer UTID\n    CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n    // Default scopes\n    OPENID_SCOPE: \"openid\",\n    PROFILE_SCOPE: \"profile\",\n    OFFLINE_ACCESS_SCOPE: \"offline_access\",\n    EMAIL_SCOPE: \"email\",\n    // Default response type for authorization code flow\n    CODE_RESPONSE_TYPE: \"code\",\n    CODE_GRANT_TYPE: \"authorization_code\",\n    RT_GRANT_TYPE: \"refresh_token\",\n    FRAGMENT_RESPONSE_MODE: \"fragment\",\n    S256_CODE_CHALLENGE_METHOD: \"S256\",\n    URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n    AUTHORIZATION_PENDING: \"authorization_pending\",\n    NOT_DEFINED: \"not_defined\",\n    EMPTY_STRING: \"\",\n    NOT_APPLICABLE: \"N/A\",\n    FORWARD_SLASH: \"/\",\n    IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n    IMDS_VERSION: \"2020-06-01\",\n    IMDS_TIMEOUT: 2000,\n    AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n    REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n    KNOWN_PUBLIC_CLOUDS: [\n        \"login.microsoftonline.com\",\n        \"login.windows.net\",\n        \"login.microsoft.com\",\n        \"sts.windows.net\",\n    ],\n    TOKEN_RESPONSE_TYPE: \"token\",\n    ID_TOKEN_RESPONSE_TYPE: \"id_token\",\n    SHR_NONCE_VALIDITY: 240,\n    INVALID_INSTANCE: \"invalid_instance\",\n};\nconst HttpStatus = {\n    SUCCESS_RANGE_START: 200,\n    SUCCESS_RANGE_END: 299,\n    REDIRECT: 302,\n    CLIENT_ERROR_RANGE_START: 400,\n    CLIENT_ERROR_RANGE_END: 499,\n    SERVER_ERROR_RANGE_START: 500,\n    SERVER_ERROR_RANGE_END: 599,\n};\nconst OIDC_DEFAULT_SCOPES = [\n    Constants.OPENID_SCOPE,\n    Constants.PROFILE_SCOPE,\n    Constants.OFFLINE_ACCESS_SCOPE,\n];\nconst OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\n/**\n * Request header names\n */\nconst HeaderNames = {\n    CONTENT_TYPE: \"Content-Type\",\n    RETRY_AFTER: \"Retry-After\",\n    CCS_HEADER: \"X-AnchorMailbox\",\n    WWWAuthenticate: \"WWW-Authenticate\",\n    AuthenticationInfo: \"Authentication-Info\",\n    X_MS_REQUEST_ID: \"x-ms-request-id\",\n    X_MS_HTTP_VERSION: \"x-ms-httpver\",\n};\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nconst PersistentCacheKeys = {\n    ID_TOKEN: \"idtoken\",\n    CLIENT_INFO: \"client.info\",\n    ADAL_ID_TOKEN: \"adal.idtoken\",\n    ERROR: \"error\",\n    ERROR_DESC: \"error.description\",\n    ACTIVE_ACCOUNT: \"active-account\",\n    ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\n};\n/**\n * String constants related to AAD Authority\n */\nconst AADAuthorityConstants = {\n    COMMON: \"common\",\n    ORGANIZATIONS: \"organizations\",\n    CONSUMERS: \"consumers\",\n};\n/**\n * Claims request keys\n */\nconst ClaimsRequestKeys = {\n    ACCESS_TOKEN: \"access_token\",\n    XMS_CC: \"xms_cc\",\n};\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nconst PromptValue = {\n    LOGIN: \"login\",\n    SELECT_ACCOUNT: \"select_account\",\n    CONSENT: \"consent\",\n    NONE: \"none\",\n    CREATE: \"create\",\n    NO_SESSION: \"no_session\",\n};\n/**\n * allowed values for codeVerifier\n */\nconst CodeChallengeMethodValues = {\n    PLAIN: \"plain\",\n    S256: \"S256\",\n};\n/**\n * allowed values for server response type\n */\nconst ServerResponseType = {\n    QUERY: \"query\",\n    FRAGMENT: \"fragment\",\n};\n/**\n * allowed values for response_mode\n */\nconst ResponseMode = {\n    ...ServerResponseType,\n    FORM_POST: \"form_post\",\n};\n/**\n * allowed grant_type\n */\nconst GrantType = {\n    IMPLICIT_GRANT: \"implicit\",\n    AUTHORIZATION_CODE_GRANT: \"authorization_code\",\n    CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\n    RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\n    REFRESH_TOKEN_GRANT: \"refresh_token\",\n    DEVICE_CODE_GRANT: \"device_code\",\n    JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n};\n/**\n * Account types in Cache\n */\nconst CacheAccountType = {\n    MSSTS_ACCOUNT_TYPE: \"MSSTS\",\n    ADFS_ACCOUNT_TYPE: \"ADFS\",\n    MSAV1_ACCOUNT_TYPE: \"MSA\",\n    GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\n};\n/**\n * Separators used in cache\n */\nconst Separators = {\n    CACHE_KEY_SEPARATOR: \"-\",\n    CLIENT_INFO_SEPARATOR: \".\",\n};\n/**\n * Credential Type stored in the cache\n */\nconst CredentialType = {\n    ID_TOKEN: \"IdToken\",\n    ACCESS_TOKEN: \"AccessToken\",\n    ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\n    REFRESH_TOKEN: \"RefreshToken\",\n};\n/**\n * Combine all cache types\n */\nconst CacheType = {\n    ADFS: 1001,\n    MSA: 1002,\n    MSSTS: 1003,\n    GENERIC: 1004,\n    ACCESS_TOKEN: 2001,\n    REFRESH_TOKEN: 2002,\n    ID_TOKEN: 2003,\n    APP_METADATA: 3001,\n    UNDEFINED: 9999,\n};\n/**\n * More Cache related constants\n */\nconst APP_METADATA = \"appmetadata\";\nconst CLIENT_INFO = \"client_info\";\nconst THE_FAMILY_ID = \"1\";\nconst AUTHORITY_METADATA_CONSTANTS = {\n    CACHE_KEY: \"authority-metadata\",\n    REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\n};\nconst AuthorityMetadataSource = {\n    CONFIG: \"config\",\n    CACHE: \"cache\",\n    NETWORK: \"network\",\n    HARDCODED_VALUES: \"hardcoded_values\",\n};\nconst SERVER_TELEM_CONSTANTS = {\n    SCHEMA_VERSION: 5,\n    MAX_CUR_HEADER_BYTES: 80,\n    MAX_LAST_HEADER_BYTES: 330,\n    MAX_CACHED_ERRORS: 50,\n    CACHE_KEY: \"server-telemetry\",\n    CATEGORY_SEPARATOR: \"|\",\n    VALUE_SEPARATOR: \",\",\n    OVERFLOW_TRUE: \"1\",\n    OVERFLOW_FALSE: \"0\",\n    UNKNOWN_ERROR: \"unknown_error\",\n};\n/**\n * Type of the authentication request\n */\nconst AuthenticationScheme = {\n    BEARER: \"Bearer\",\n    POP: \"pop\",\n    SSH: \"ssh-cert\",\n};\n/**\n * Constants related to throttling\n */\nconst ThrottlingConstants = {\n    // Default time to throttle RequestThumbprint in seconds\n    DEFAULT_THROTTLE_TIME_SECONDS: 60,\n    // Default maximum time to throttle in seconds, overrides what the server sends back\n    DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n    // Prefix for storing throttling entries\n    THROTTLING_PREFIX: \"throttling\",\n    // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n    X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\n};\nconst Errors = {\n    INVALID_GRANT_ERROR: \"invalid_grant\",\n    CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n/**\n * Password grant parameters\n */\nconst PasswordGrantConstants = {\n    username: \"username\",\n    password: \"password\",\n};\n/**\n * Response codes\n */\nconst ResponseCodes = {\n    httpSuccess: 200,\n    httpBadRequest: 400,\n};\n/**\n * Region Discovery Sources\n */\nconst RegionDiscoverySources = {\n    FAILED_AUTO_DETECTION: \"1\",\n    INTERNAL_CACHE: \"2\",\n    ENVIRONMENT_VARIABLE: \"3\",\n    IMDS: \"4\",\n};\n/**\n * Region Discovery Outcomes\n */\nconst RegionDiscoveryOutcomes = {\n    CONFIGURED_MATCHES_DETECTED: \"1\",\n    CONFIGURED_NO_AUTO_DETECTION: \"2\",\n    CONFIGURED_NOT_DETECTED: \"3\",\n    AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\n    AUTO_DETECTION_REQUESTED_FAILED: \"5\",\n};\n/**\n * Specifies the reason for fetching the access token from the identity provider\n */\nconst CacheOutcome = {\n    // When a token is found in the cache or the cache is not supposed to be hit when making the request\n    NOT_APPLICABLE: \"0\",\n    // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\n    FORCE_REFRESH_OR_CLAIMS: \"1\",\n    // When the token request goes to the identity provider because no cached access token exists\n    NO_CACHED_ACCESS_TOKEN: \"2\",\n    // When the token request goes to the identity provider because cached access token expired\n    CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\n    // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\n    PROACTIVELY_REFRESHED: \"4\",\n};\nconst JsonWebTokenTypes = {\n    Jwt: \"JWT\",\n    Jwk: \"JWK\",\n    Pop: \"pop\",\n};\nconst ONE_DAY_IN_MS = 86400000;\n\nexport { AADAuthorityConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, Errors, GrantType, HeaderNames, HttpStatus, JsonWebTokenTypes, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, ONE_DAY_IN_MS, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, Separators, ServerResponseType, THE_FAMILY_ID, ThrottlingConstants };\n//# sourceMappingURL=Constants.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nconst unexpectedError = \"unexpected_error\";\nconst postRequestFailed = \"post_request_failed\";\n\nexport { postRequestFailed, unexpectedError };\n//# sourceMappingURL=AuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { unexpectedError, postRequestFailed } from './AuthErrorCodes.mjs';\nimport * as AuthErrorCodes from './AuthErrorCodes.mjs';\nexport { AuthErrorCodes };\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst AuthErrorMessages = {\n    [unexpectedError]: \"Unexpected error in authentication.\",\n    [postRequestFailed]: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\n};\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use AuthErrorCodes instead\n */\nconst AuthErrorMessage = {\n    unexpectedError: {\n        code: unexpectedError,\n        desc: AuthErrorMessages[unexpectedError],\n    },\n    postRequestFailed: {\n        code: postRequestFailed,\n        desc: AuthErrorMessages[postRequestFailed],\n    },\n};\n/**\n * General error class thrown by the MSAL.js library.\n */\nclass AuthError extends Error {\n    constructor(errorCode, errorMessage, suberror) {\n        const errorString = errorMessage\n            ? `${errorCode}: ${errorMessage}`\n            : errorCode;\n        super(errorString);\n        Object.setPrototypeOf(this, AuthError.prototype);\n        this.errorCode = errorCode || Constants.EMPTY_STRING;\n        this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n        this.subError = suberror || Constants.EMPTY_STRING;\n        this.name = \"AuthError\";\n    }\n    setCorrelationId(correlationId) {\n        this.correlationId = correlationId;\n    }\n}\nfunction createAuthError(code, additionalMessage) {\n    return new AuthError(code, additionalMessage\n        ? `${AuthErrorMessages[code]} ${additionalMessage}`\n        : AuthErrorMessages[code]);\n}\n\nexport { AuthError, AuthErrorMessage, AuthErrorMessages, createAuthError };\n//# sourceMappingURL=AuthError.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst clientInfoDecodingError = \"client_info_decoding_error\";\nconst clientInfoEmptyError = \"client_info_empty_error\";\nconst tokenParsingError = \"token_parsing_error\";\nconst nullOrEmptyToken = \"null_or_empty_token\";\nconst endpointResolutionError = \"endpoints_resolution_error\";\nconst networkError = \"network_error\";\nconst openIdConfigError = \"openid_config_error\";\nconst hashNotDeserialized = \"hash_not_deserialized\";\nconst invalidState = \"invalid_state\";\nconst stateMismatch = \"state_mismatch\";\nconst stateNotFound = \"state_not_found\";\nconst nonceMismatch = \"nonce_mismatch\";\nconst authTimeNotFound = \"auth_time_not_found\";\nconst maxAgeTranspired = \"max_age_transpired\";\nconst multipleMatchingTokens = \"multiple_matching_tokens\";\nconst multipleMatchingAccounts = \"multiple_matching_accounts\";\nconst multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\nconst requestCannotBeMade = \"request_cannot_be_made\";\nconst cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\nconst cannotAppendScopeSet = \"cannot_append_scopeset\";\nconst emptyInputScopeSet = \"empty_input_scopeset\";\nconst deviceCodePollingCancelled = \"device_code_polling_cancelled\";\nconst deviceCodeExpired = \"device_code_expired\";\nconst deviceCodeUnknownError = \"device_code_unknown_error\";\nconst noAccountInSilentRequest = \"no_account_in_silent_request\";\nconst invalidCacheRecord = \"invalid_cache_record\";\nconst invalidCacheEnvironment = \"invalid_cache_environment\";\nconst noAccountFound = \"no_account_found\";\nconst noCryptoObject = \"no_crypto_object\";\nconst unexpectedCredentialType = \"unexpected_credential_type\";\nconst invalidAssertion = \"invalid_assertion\";\nconst invalidClientCredential = \"invalid_client_credential\";\nconst tokenRefreshRequired = \"token_refresh_required\";\nconst userTimeoutReached = \"user_timeout_reached\";\nconst tokenClaimsCnfRequiredForSignedJwt = \"token_claims_cnf_required_for_signedjwt\";\nconst authorizationCodeMissingFromServerResponse = \"authorization_code_missing_from_server_response\";\nconst bindingKeyNotRemoved = \"binding_key_not_removed\";\nconst endSessionEndpointNotSupported = \"end_session_endpoint_not_supported\";\nconst keyIdMissing = \"key_id_missing\";\nconst noNetworkConnectivity = \"no_network_connectivity\";\nconst userCanceled = \"user_canceled\";\nconst missingTenantIdError = \"missing_tenant_id_error\";\nconst methodNotImplemented = \"method_not_implemented\";\nconst nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n\nexport { authTimeNotFound, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, cannotAppendScopeSet, cannotRemoveEmptyScope, clientInfoDecodingError, clientInfoEmptyError, deviceCodeExpired, deviceCodePollingCancelled, deviceCodeUnknownError, emptyInputScopeSet, endSessionEndpointNotSupported, endpointResolutionError, hashNotDeserialized, invalidAssertion, invalidCacheEnvironment, invalidCacheRecord, invalidClientCredential, invalidState, keyIdMissing, maxAgeTranspired, methodNotImplemented, missingTenantIdError, multipleMatchingAccounts, multipleMatchingAppMetadata, multipleMatchingTokens, nestedAppAuthBridgeDisabled, networkError, noAccountFound, noAccountInSilentRequest, noCryptoObject, noNetworkConnectivity, nonceMismatch, nullOrEmptyToken, openIdConfigError, requestCannotBeMade, stateMismatch, stateNotFound, tokenClaimsCnfRequiredForSignedJwt, tokenParsingError, tokenRefreshRequired, unexpectedCredentialType, userCanceled, userTimeoutReached };\n//# sourceMappingURL=ClientAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { clientInfoDecodingError, clientInfoEmptyError, tokenParsingError, nullOrEmptyToken, endpointResolutionError, networkError, openIdConfigError, hashNotDeserialized, invalidState, stateMismatch, stateNotFound, nonceMismatch, authTimeNotFound, maxAgeTranspired, multipleMatchingTokens, multipleMatchingAccounts, multipleMatchingAppMetadata, requestCannotBeMade, cannotRemoveEmptyScope, cannotAppendScopeSet, emptyInputScopeSet, deviceCodePollingCancelled, deviceCodeExpired, deviceCodeUnknownError, noAccountInSilentRequest, invalidCacheRecord, invalidCacheEnvironment, noAccountFound, noCryptoObject, unexpectedCredentialType, invalidAssertion, invalidClientCredential, tokenRefreshRequired, userTimeoutReached, tokenClaimsCnfRequiredForSignedJwt, authorizationCodeMissingFromServerResponse, bindingKeyNotRemoved, endSessionEndpointNotSupported, keyIdMissing, noNetworkConnectivity, userCanceled, missingTenantIdError, nestedAppAuthBridgeDisabled, methodNotImplemented } from './ClientAuthErrorCodes.mjs';\nimport * as ClientAuthErrorCodes from './ClientAuthErrorCodes.mjs';\nexport { ClientAuthErrorCodes };\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nconst ClientAuthErrorMessages = {\n    [clientInfoDecodingError]: \"The client info could not be parsed/decoded correctly\",\n    [clientInfoEmptyError]: \"The client info was empty\",\n    [tokenParsingError]: \"Token cannot be parsed\",\n    [nullOrEmptyToken]: \"The token is null or empty\",\n    [endpointResolutionError]: \"Endpoints cannot be resolved\",\n    [networkError]: \"Network request failed\",\n    [openIdConfigError]: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\n    [hashNotDeserialized]: \"The hash parameters could not be deserialized\",\n    [invalidState]: \"State was not the expected format\",\n    [stateMismatch]: \"State mismatch error\",\n    [stateNotFound]: \"State not found\",\n    [nonceMismatch]: \"Nonce mismatch error\",\n    [authTimeNotFound]: \"Max Age was requested and the ID token is missing the auth_time variable.\" +\n        \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\n        \" See https://aka.ms/msaljs/optional-claims for more information.\",\n    [maxAgeTranspired]: \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\n    [multipleMatchingTokens]: \"The cache contains multiple tokens satisfying the requirements. \" +\n        \"Call AcquireToken again providing more requirements such as authority or account.\",\n    [multipleMatchingAccounts]: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\n    [multipleMatchingAppMetadata]: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\n    [requestCannotBeMade]: \"Token request cannot be made without authorization code or refresh token.\",\n    [cannotRemoveEmptyScope]: \"Cannot remove null or empty scope from ScopeSet\",\n    [cannotAppendScopeSet]: \"Cannot append ScopeSet\",\n    [emptyInputScopeSet]: \"Empty input ScopeSet cannot be processed\",\n    [deviceCodePollingCancelled]: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\n    [deviceCodeExpired]: \"Device code is expired.\",\n    [deviceCodeUnknownError]: \"Device code stopped polling for unknown reasons.\",\n    [noAccountInSilentRequest]: \"Please pass an account object, silent flow is not supported without account information\",\n    [invalidCacheRecord]: \"Cache record object was null or undefined.\",\n    [invalidCacheEnvironment]: \"Invalid environment when attempting to create cache entry\",\n    [noAccountFound]: \"No account found in cache for given key.\",\n    [noCryptoObject]: \"No crypto object detected.\",\n    [unexpectedCredentialType]: \"Unexpected credential type.\",\n    [invalidAssertion]: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\n    [invalidClientCredential]: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\n    [tokenRefreshRequired]: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\n    [userTimeoutReached]: \"User defined timeout for device code polling reached\",\n    [tokenClaimsCnfRequiredForSignedJwt]: \"Cannot generate a POP jwt if the token_claims are not populated\",\n    [authorizationCodeMissingFromServerResponse]: \"Server response does not contain an authorization code to proceed\",\n    [bindingKeyNotRemoved]: \"Could not remove the credential's binding key from storage.\",\n    [endSessionEndpointNotSupported]: \"The provided authority does not support logout\",\n    [keyIdMissing]: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\n    [noNetworkConnectivity]: \"No network connectivity. Check your internet connection.\",\n    [userCanceled]: \"User cancelled the flow.\",\n    [missingTenantIdError]: \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\n    [methodNotImplemented]: \"This method has not been implemented\",\n    [nestedAppAuthBridgeDisabled]: \"The nested app auth bridge is disabled\",\n};\n/**\n * String constants used by error codes and messages.\n * @deprecated Use ClientAuthErrorCodes instead\n */\nconst ClientAuthErrorMessage = {\n    clientInfoDecodingError: {\n        code: clientInfoDecodingError,\n        desc: ClientAuthErrorMessages[clientInfoDecodingError],\n    },\n    clientInfoEmptyError: {\n        code: clientInfoEmptyError,\n        desc: ClientAuthErrorMessages[clientInfoEmptyError],\n    },\n    tokenParsingError: {\n        code: tokenParsingError,\n        desc: ClientAuthErrorMessages[tokenParsingError],\n    },\n    nullOrEmptyToken: {\n        code: nullOrEmptyToken,\n        desc: ClientAuthErrorMessages[nullOrEmptyToken],\n    },\n    endpointResolutionError: {\n        code: endpointResolutionError,\n        desc: ClientAuthErrorMessages[endpointResolutionError],\n    },\n    networkError: {\n        code: networkError,\n        desc: ClientAuthErrorMessages[networkError],\n    },\n    unableToGetOpenidConfigError: {\n        code: openIdConfigError,\n        desc: ClientAuthErrorMessages[openIdConfigError],\n    },\n    hashNotDeserialized: {\n        code: hashNotDeserialized,\n        desc: ClientAuthErrorMessages[hashNotDeserialized],\n    },\n    invalidStateError: {\n        code: invalidState,\n        desc: ClientAuthErrorMessages[invalidState],\n    },\n    stateMismatchError: {\n        code: stateMismatch,\n        desc: ClientAuthErrorMessages[stateMismatch],\n    },\n    stateNotFoundError: {\n        code: stateNotFound,\n        desc: ClientAuthErrorMessages[stateNotFound],\n    },\n    nonceMismatchError: {\n        code: nonceMismatch,\n        desc: ClientAuthErrorMessages[nonceMismatch],\n    },\n    authTimeNotFoundError: {\n        code: authTimeNotFound,\n        desc: ClientAuthErrorMessages[authTimeNotFound],\n    },\n    maxAgeTranspired: {\n        code: maxAgeTranspired,\n        desc: ClientAuthErrorMessages[maxAgeTranspired],\n    },\n    multipleMatchingTokens: {\n        code: multipleMatchingTokens,\n        desc: ClientAuthErrorMessages[multipleMatchingTokens],\n    },\n    multipleMatchingAccounts: {\n        code: multipleMatchingAccounts,\n        desc: ClientAuthErrorMessages[multipleMatchingAccounts],\n    },\n    multipleMatchingAppMetadata: {\n        code: multipleMatchingAppMetadata,\n        desc: ClientAuthErrorMessages[multipleMatchingAppMetadata],\n    },\n    tokenRequestCannotBeMade: {\n        code: requestCannotBeMade,\n        desc: ClientAuthErrorMessages[requestCannotBeMade],\n    },\n    removeEmptyScopeError: {\n        code: cannotRemoveEmptyScope,\n        desc: ClientAuthErrorMessages[cannotRemoveEmptyScope],\n    },\n    appendScopeSetError: {\n        code: cannotAppendScopeSet,\n        desc: ClientAuthErrorMessages[cannotAppendScopeSet],\n    },\n    emptyInputScopeSetError: {\n        code: emptyInputScopeSet,\n        desc: ClientAuthErrorMessages[emptyInputScopeSet],\n    },\n    DeviceCodePollingCancelled: {\n        code: deviceCodePollingCancelled,\n        desc: ClientAuthErrorMessages[deviceCodePollingCancelled],\n    },\n    DeviceCodeExpired: {\n        code: deviceCodeExpired,\n        desc: ClientAuthErrorMessages[deviceCodeExpired],\n    },\n    DeviceCodeUnknownError: {\n        code: deviceCodeUnknownError,\n        desc: ClientAuthErrorMessages[deviceCodeUnknownError],\n    },\n    NoAccountInSilentRequest: {\n        code: noAccountInSilentRequest,\n        desc: ClientAuthErrorMessages[noAccountInSilentRequest],\n    },\n    invalidCacheRecord: {\n        code: invalidCacheRecord,\n        desc: ClientAuthErrorMessages[invalidCacheRecord],\n    },\n    invalidCacheEnvironment: {\n        code: invalidCacheEnvironment,\n        desc: ClientAuthErrorMessages[invalidCacheEnvironment],\n    },\n    noAccountFound: {\n        code: noAccountFound,\n        desc: ClientAuthErrorMessages[noAccountFound],\n    },\n    noCryptoObj: {\n        code: noCryptoObject,\n        desc: ClientAuthErrorMessages[noCryptoObject],\n    },\n    unexpectedCredentialType: {\n        code: unexpectedCredentialType,\n        desc: ClientAuthErrorMessages[unexpectedCredentialType],\n    },\n    invalidAssertion: {\n        code: invalidAssertion,\n        desc: ClientAuthErrorMessages[invalidAssertion],\n    },\n    invalidClientCredential: {\n        code: invalidClientCredential,\n        desc: ClientAuthErrorMessages[invalidClientCredential],\n    },\n    tokenRefreshRequired: {\n        code: tokenRefreshRequired,\n        desc: ClientAuthErrorMessages[tokenRefreshRequired],\n    },\n    userTimeoutReached: {\n        code: userTimeoutReached,\n        desc: ClientAuthErrorMessages[userTimeoutReached],\n    },\n    tokenClaimsRequired: {\n        code: tokenClaimsCnfRequiredForSignedJwt,\n        desc: ClientAuthErrorMessages[tokenClaimsCnfRequiredForSignedJwt],\n    },\n    noAuthorizationCodeFromServer: {\n        code: authorizationCodeMissingFromServerResponse,\n        desc: ClientAuthErrorMessages[authorizationCodeMissingFromServerResponse],\n    },\n    bindingKeyNotRemovedError: {\n        code: bindingKeyNotRemoved,\n        desc: ClientAuthErrorMessages[bindingKeyNotRemoved],\n    },\n    logoutNotSupported: {\n        code: endSessionEndpointNotSupported,\n        desc: ClientAuthErrorMessages[endSessionEndpointNotSupported],\n    },\n    keyIdMissing: {\n        code: keyIdMissing,\n        desc: ClientAuthErrorMessages[keyIdMissing],\n    },\n    noNetworkConnectivity: {\n        code: noNetworkConnectivity,\n        desc: ClientAuthErrorMessages[noNetworkConnectivity],\n    },\n    userCanceledError: {\n        code: userCanceled,\n        desc: ClientAuthErrorMessages[userCanceled],\n    },\n    missingTenantIdError: {\n        code: missingTenantIdError,\n        desc: ClientAuthErrorMessages[missingTenantIdError],\n    },\n    nestedAppAuthBridgeDisabled: {\n        code: nestedAppAuthBridgeDisabled,\n        desc: ClientAuthErrorMessages[nestedAppAuthBridgeDisabled],\n    },\n};\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nclass ClientAuthError extends AuthError {\n    constructor(errorCode, additionalMessage) {\n        super(errorCode, additionalMessage\n            ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\n            : ClientAuthErrorMessages[errorCode]);\n        this.name = \"ClientAuthError\";\n        Object.setPrototypeOf(this, ClientAuthError.prototype);\n    }\n}\nfunction createClientAuthError(errorCode, additionalMessage) {\n    return new ClientAuthError(errorCode, additionalMessage);\n}\n\nexport { ClientAuthError, ClientAuthErrorMessage, ClientAuthErrorMessages, createClientAuthError };\n//# sourceMappingURL=ClientAuthError.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst DEFAULT_CRYPTO_IMPLEMENTATION = {\n    createNewGuid: () => {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    base64Decode: () => {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    base64Encode: () => {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async getPublicKeyThumbprint() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async removeTokenBindingKey() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async clearKeystore() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async signJwt() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async hashString() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n//# sourceMappingURL=ICrypto.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Log message level.\n */\nvar LogLevel;\n(function (LogLevel) {\n    LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\n    LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\n    LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n    LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n    LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nclass Logger {\n    constructor(loggerOptions, packageName, packageVersion) {\n        // Current log level, defaults to info.\n        this.level = LogLevel.Info;\n        const defaultLoggerCallback = () => {\n            return;\n        };\n        const setLoggerOptions = loggerOptions || Logger.createDefaultLoggerOptions();\n        this.localCallback =\n            setLoggerOptions.loggerCallback || defaultLoggerCallback;\n        this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\n        this.level =\n            typeof setLoggerOptions.logLevel === \"number\"\n                ? setLoggerOptions.logLevel\n                : LogLevel.Info;\n        this.correlationId =\n            setLoggerOptions.correlationId || Constants.EMPTY_STRING;\n        this.packageName = packageName || Constants.EMPTY_STRING;\n        this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n    }\n    static createDefaultLoggerOptions() {\n        return {\n            loggerCallback: () => {\n                // allow users to not set loggerCallback\n            },\n            piiLoggingEnabled: false,\n            logLevel: LogLevel.Info,\n        };\n    }\n    /**\n     * Create new Logger with existing configurations.\n     */\n    clone(packageName, packageVersion, correlationId) {\n        return new Logger({\n            loggerCallback: this.localCallback,\n            piiLoggingEnabled: this.piiLoggingEnabled,\n            logLevel: this.level,\n            correlationId: correlationId || this.correlationId,\n        }, packageName, packageVersion);\n    }\n    /**\n     * Log message with required options.\n     */\n    logMessage(logMessage, options) {\n        if (options.logLevel > this.level ||\n            (!this.piiLoggingEnabled && options.containsPii)) {\n            return;\n        }\n        const timestamp = new Date().toUTCString();\n        // Add correlationId to logs if set, correlationId provided on log messages take precedence\n        const logHeader = `[${timestamp}] : [${options.correlationId || this.correlationId || \"\"}]`;\n        const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\n        // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n        this.executeCallback(options.logLevel, log, options.containsPii || false);\n    }\n    /**\n     * Execute callback with message.\n     */\n    executeCallback(level, message, containsPii) {\n        if (this.localCallback) {\n            this.localCallback(level, message, containsPii);\n        }\n    }\n    /**\n     * Logs error messages.\n     */\n    error(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Error,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs error messages with PII.\n     */\n    errorPii(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Error,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs warning messages.\n     */\n    warning(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Warning,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs warning messages with PII.\n     */\n    warningPii(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Warning,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs info messages.\n     */\n    info(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Info,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs info messages with PII.\n     */\n    infoPii(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Info,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs verbose messages.\n     */\n    verbose(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Verbose,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs verbose messages with PII.\n     */\n    verbosePii(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Verbose,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs trace messages.\n     */\n    trace(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Trace,\n            containsPii: false,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Logs trace messages with PII.\n     */\n    tracePii(message, correlationId) {\n        this.logMessage(message, {\n            logLevel: LogLevel.Trace,\n            containsPii: true,\n            correlationId: correlationId || Constants.EMPTY_STRING,\n        });\n    }\n    /**\n     * Returns whether PII Logging is enabled or not.\n     */\n    isPiiLoggingEnabled() {\n        return this.piiLoggingEnabled || false;\n    }\n}\n\nexport { LogLevel, Logger };\n//# sourceMappingURL=Logger.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/* eslint-disable header/header */\nconst name = \"@azure/msal-common\";\nconst version = \"14.6.1\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst AzureCloudInstance = {\n    // AzureCloudInstance is not specified.\n    None: \"none\",\n    // Microsoft Azure public cloud\n    AzurePublic: \"https://login.microsoftonline.com\",\n    // Microsoft PPE\n    AzurePpe: \"https://login.windows-ppe.net\",\n    // Microsoft Chinese national/regional cloud\n    AzureChina: \"https://login.chinacloudapi.cn\",\n    // Microsoft German national/regional cloud (\"Black Forest\")\n    AzureGermany: \"https://login.microsoftonline.de\",\n    // US Government cloud\n    AzureUsGovernment: \"https://login.microsoftonline.us\",\n};\n\nexport { AzureCloudInstance };\n//# sourceMappingURL=AuthorityOptions.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { tokenParsingError, nullOrEmptyToken, maxAgeTranspired } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\nfunction extractTokenClaims(encodedToken, base64Decode) {\n    const jswPayload = getJWSPayload(encodedToken);\n    // token will be decoded to get the username\n    try {\n        // base64Decode() should throw an error if there is an issue\n        const base64Decoded = base64Decode(jswPayload);\n        return JSON.parse(base64Decoded);\n    }\n    catch (err) {\n        throw createClientAuthError(tokenParsingError);\n    }\n}\n/**\n * decode a JWT\n *\n * @param authToken\n */\nfunction getJWSPayload(authToken) {\n    if (!authToken) {\n        throw createClientAuthError(nullOrEmptyToken);\n    }\n    const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n    const matches = tokenPartsRegex.exec(authToken);\n    if (!matches || matches.length < 4) {\n        throw createClientAuthError(tokenParsingError);\n    }\n    /**\n     * const crackedToken = {\n     *  header: matches[1],\n     *  JWSPayload: matches[2],\n     *  JWSSig: matches[3],\n     * };\n     */\n    return matches[2];\n}\n/**\n * Determine if the token's max_age has transpired\n */\nfunction checkMaxAge(authTime, maxAge) {\n    /*\n     * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n     * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\n     * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\n     */\n    const fiveMinuteSkew = 300000; // five minutes in milliseconds\n    if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\n        throw createClientAuthError(maxAgeTranspired);\n    }\n}\n\nexport { checkMaxAge, extractTokenClaims, getJWSPayload };\n//# sourceMappingURL=AuthToken.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Utility class which exposes functions for managing date and time operations.\n */\nclass TimeUtils {\n    /**\n     * return the current time in Unix time (seconds).\n     */\n    static nowSeconds() {\n        // Date.getTime() returns in milliseconds.\n        return Math.round(new Date().getTime() / 1000.0);\n    }\n    /**\n     * check if a token is expired based on given UTC time in seconds.\n     * @param expiresOn\n     */\n    static isTokenExpired(expiresOn, offset) {\n        // check for access token expiry\n        const expirationSec = Number(expiresOn) || 0;\n        const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\n        // If current time + offset is greater than token expiration time, then token is expired.\n        return offsetCurrentTimeSec > expirationSec;\n    }\n    /**\n     * If the current time is earlier than the time that a token was cached at, we must discard the token\n     * i.e. The system clock was turned back after acquiring the cached token\n     * @param cachedAt\n     * @param offset\n     */\n    static wasClockTurnedBack(cachedAt) {\n        const cachedAtSec = Number(cachedAt);\n        return cachedAtSec > TimeUtils.nowSeconds();\n    }\n    /**\n     * Waits for t number of milliseconds\n     * @param t number\n     * @param value T\n     */\n    static delay(t, value) {\n        return new Promise((resolve) => setTimeout(() => resolve(value), t));\n    }\n}\n\nexport { TimeUtils };\n//# sourceMappingURL=TimeUtils.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { extractTokenClaims } from '../../account/AuthToken.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANTS, ThrottlingConstants, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.mjs';\nimport { TimeUtils } from '../../utils/TimeUtils.mjs';\nimport { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Cache Key: <home_account_id>-<environment>-<credential_type>-<client_id or familyId>-<realm>-<scopes>-<claims hash>-<scheme>\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\n * @param credentialEntity\n * @returns\n */\nfunction generateCredentialKey(credentialEntity) {\n    const credentialKey = [\n        generateAccountId(credentialEntity),\n        generateCredentialId(credentialEntity),\n        generateTarget(credentialEntity),\n        generateClaimsHash(credentialEntity),\n        generateScheme(credentialEntity),\n    ];\n    return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n/**\n * Create IdTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nfunction createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {\n    const idTokenEntity = {\n        credentialType: CredentialType.ID_TOKEN,\n        homeAccountId: homeAccountId,\n        environment: environment,\n        clientId: clientId,\n        secret: idToken,\n        realm: tenantId,\n    };\n    return idTokenEntity;\n}\n/**\n * Create AccessTokenEntity\n * @param homeAccountId\n * @param environment\n * @param accessToken\n * @param clientId\n * @param tenantId\n * @param scopes\n * @param expiresOn\n * @param extExpiresOn\n */\nfunction createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {\n    const atEntity = {\n        homeAccountId: homeAccountId,\n        credentialType: CredentialType.ACCESS_TOKEN,\n        secret: accessToken,\n        cachedAt: TimeUtils.nowSeconds().toString(),\n        expiresOn: expiresOn.toString(),\n        extendedExpiresOn: extExpiresOn.toString(),\n        environment: environment,\n        clientId: clientId,\n        realm: tenantId,\n        target: scopes,\n        tokenType: tokenType || AuthenticationScheme.BEARER,\n    };\n    if (userAssertionHash) {\n        atEntity.userAssertionHash = userAssertionHash;\n    }\n    if (refreshOn) {\n        atEntity.refreshOn = refreshOn.toString();\n    }\n    if (requestedClaims) {\n        atEntity.requestedClaims = requestedClaims;\n        atEntity.requestedClaimsHash = requestedClaimsHash;\n    }\n    /*\n     * Create Access Token With Auth Scheme instead of regular access token\n     * Cast to lower to handle \"bearer\" from ADFS\n     */\n    if (atEntity.tokenType?.toLowerCase() !==\n        AuthenticationScheme.BEARER.toLowerCase()) {\n        atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n        switch (atEntity.tokenType) {\n            case AuthenticationScheme.POP:\n                // Make sure keyId is present and add it to credential\n                const tokenClaims = extractTokenClaims(accessToken, base64Decode);\n                if (!tokenClaims?.cnf?.kid) {\n                    throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);\n                }\n                atEntity.keyId = tokenClaims.cnf.kid;\n                break;\n            case AuthenticationScheme.SSH:\n                atEntity.keyId = keyId;\n        }\n    }\n    return atEntity;\n}\n/**\n * Create RefreshTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nfunction createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {\n    const rtEntity = {\n        credentialType: CredentialType.REFRESH_TOKEN,\n        homeAccountId: homeAccountId,\n        environment: environment,\n        clientId: clientId,\n        secret: refreshToken,\n    };\n    if (userAssertionHash) {\n        rtEntity.userAssertionHash = userAssertionHash;\n    }\n    if (familyId) {\n        rtEntity.familyId = familyId;\n    }\n    if (expiresOn) {\n        rtEntity.expiresOn = expiresOn.toString();\n    }\n    return rtEntity;\n}\nfunction isCredentialEntity(entity) {\n    return (entity.hasOwnProperty(\"homeAccountId\") &&\n        entity.hasOwnProperty(\"environment\") &&\n        entity.hasOwnProperty(\"credentialType\") &&\n        entity.hasOwnProperty(\"clientId\") &&\n        entity.hasOwnProperty(\"secret\"));\n}\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nfunction isAccessTokenEntity(entity) {\n    if (!entity) {\n        return false;\n    }\n    return (isCredentialEntity(entity) &&\n        entity.hasOwnProperty(\"realm\") &&\n        entity.hasOwnProperty(\"target\") &&\n        (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\n            entity[\"credentialType\"] ===\n                CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\n}\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nfunction isIdTokenEntity(entity) {\n    if (!entity) {\n        return false;\n    }\n    return (isCredentialEntity(entity) &&\n        entity.hasOwnProperty(\"realm\") &&\n        entity[\"credentialType\"] === CredentialType.ID_TOKEN);\n}\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nfunction isRefreshTokenEntity(entity) {\n    if (!entity) {\n        return false;\n    }\n    return (isCredentialEntity(entity) &&\n        entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\n}\n/**\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n */\nfunction generateAccountId(credentialEntity) {\n    const accountId = [\n        credentialEntity.homeAccountId,\n        credentialEntity.environment,\n    ];\n    return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n/**\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\n */\nfunction generateCredentialId(credentialEntity) {\n    const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\n        ? credentialEntity.familyId || credentialEntity.clientId\n        : credentialEntity.clientId;\n    const credentialId = [\n        credentialEntity.credentialType,\n        clientOrFamilyId,\n        credentialEntity.realm || \"\",\n    ];\n    return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n/**\n * Generate target key component as per schema: <target>\n */\nfunction generateTarget(credentialEntity) {\n    return (credentialEntity.target || \"\").toLowerCase();\n}\n/**\n * Generate requested claims key component as per schema: <requestedClaims>\n */\nfunction generateClaimsHash(credentialEntity) {\n    return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\n}\n/**\n * Generate scheme key componenet as per schema: <scheme>\n */\nfunction generateScheme(credentialEntity) {\n    /*\n     * PoP Tokens and SSH certs include scheme in cache key\n     * Cast to lowercase to handle \"bearer\" from ADFS\n     */\n    return credentialEntity.tokenType &&\n        credentialEntity.tokenType.toLowerCase() !==\n            AuthenticationScheme.BEARER.toLowerCase()\n        ? credentialEntity.tokenType.toLowerCase()\n        : \"\";\n}\n/**\n * validates if a given cache entry is \"Telemetry\", parses <key,value>\n * @param key\n * @param entity\n */\nfunction isServerTelemetryEntity(key, entity) {\n    const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n    let validateEntity = true;\n    if (entity) {\n        validateEntity =\n            entity.hasOwnProperty(\"failedRequests\") &&\n                entity.hasOwnProperty(\"errors\") &&\n                entity.hasOwnProperty(\"cacheHits\");\n    }\n    return validateKey && validateEntity;\n}\n/**\n * validates if a given cache entry is \"Throttling\", parses <key,value>\n * @param key\n * @param entity\n */\nfunction isThrottlingEntity(key, entity) {\n    let validateKey = false;\n    if (key) {\n        validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n    }\n    let validateEntity = true;\n    if (entity) {\n        validateEntity = entity.hasOwnProperty(\"throttleTime\");\n    }\n    return validateKey && validateEntity;\n}\n/**\n * Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>\n */\nfunction generateAppMetadataKey({ environment, clientId, }) {\n    const appMetaDataKeyArray = [\n        APP_METADATA,\n        environment,\n        clientId,\n    ];\n    return appMetaDataKeyArray\n        .join(Separators.CACHE_KEY_SEPARATOR)\n        .toLowerCase();\n}\n/*\n * Validates an entity: checks for all expected params\n * @param entity\n */\nfunction isAppMetadataEntity(key, entity) {\n    if (!entity) {\n        return false;\n    }\n    return (key.indexOf(APP_METADATA) === 0 &&\n        entity.hasOwnProperty(\"clientId\") &&\n        entity.hasOwnProperty(\"environment\"));\n}\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nfunction isAuthorityMetadataEntity(key, entity) {\n    if (!entity) {\n        return false;\n    }\n    return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n        entity.hasOwnProperty(\"aliases\") &&\n        entity.hasOwnProperty(\"preferred_cache\") &&\n        entity.hasOwnProperty(\"preferred_network\") &&\n        entity.hasOwnProperty(\"canonical_authority\") &&\n        entity.hasOwnProperty(\"authorization_endpoint\") &&\n        entity.hasOwnProperty(\"token_endpoint\") &&\n        entity.hasOwnProperty(\"issuer\") &&\n        entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n        entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n        entity.hasOwnProperty(\"expiresAt\") &&\n        entity.hasOwnProperty(\"jwks_uri\"));\n}\n/**\n * Reset the exiresAt value\n */\nfunction generateAuthorityMetadataExpiresAt() {\n    return (TimeUtils.nowSeconds() +\n        AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS);\n}\nfunction updateAuthorityEndpointMetadata(authorityMetadata, updatedValues, fromNetwork) {\n    authorityMetadata.authorization_endpoint =\n        updatedValues.authorization_endpoint;\n    authorityMetadata.token_endpoint = updatedValues.token_endpoint;\n    authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\n    authorityMetadata.issuer = updatedValues.issuer;\n    authorityMetadata.endpointsFromNetwork = fromNetwork;\n    authorityMetadata.jwks_uri = updatedValues.jwks_uri;\n}\nfunction updateCloudDiscoveryMetadata(authorityMetadata, updatedValues, fromNetwork) {\n    authorityMetadata.aliases = updatedValues.aliases;\n    authorityMetadata.preferred_cache = updatedValues.preferred_cache;\n    authorityMetadata.preferred_network = updatedValues.preferred_network;\n    authorityMetadata.aliasesFromNetwork = fromNetwork;\n}\n/**\n * Returns whether or not the data needs to be refreshed\n */\nfunction isAuthorityMetadataExpired(metadata) {\n    return metadata.expiresAt <= TimeUtils.nowSeconds();\n}\n\nexport { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateAppMetadataKey, generateAuthorityMetadataExpiresAt, generateCredentialKey, isAccessTokenEntity, isAppMetadataEntity, isAuthorityMetadataEntity, isAuthorityMetadataExpired, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity, isThrottlingEntity, updateAuthorityEndpointMetadata, updateCloudDiscoveryMetadata };\n//# sourceMappingURL=CacheHelpers.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst redirectUriEmpty = \"redirect_uri_empty\";\nconst claimsRequestParsingError = \"claims_request_parsing_error\";\nconst authorityUriInsecure = \"authority_uri_insecure\";\nconst urlParseError = \"url_parse_error\";\nconst urlEmptyError = \"empty_url_error\";\nconst emptyInputScopesError = \"empty_input_scopes_error\";\nconst invalidPromptValue = \"invalid_prompt_value\";\nconst invalidClaims = \"invalid_claims\";\nconst tokenRequestEmpty = \"token_request_empty\";\nconst logoutRequestEmpty = \"logout_request_empty\";\nconst invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\nconst pkceParamsMissing = \"pkce_params_missing\";\nconst invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\nconst invalidAuthorityMetadata = \"invalid_authority_metadata\";\nconst untrustedAuthority = \"untrusted_authority\";\nconst missingSshJwk = \"missing_ssh_jwk\";\nconst missingSshKid = \"missing_ssh_kid\";\nconst missingNonceAuthenticationHeader = \"missing_nonce_authentication_header\";\nconst invalidAuthenticationHeader = \"invalid_authentication_header\";\nconst cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\nconst cannotAllowNativeBroker = \"cannot_allow_native_broker\";\nconst authorityMismatch = \"authority_mismatch\";\n\nexport { authorityMismatch, authorityUriInsecure, cannotAllowNativeBroker, cannotSetOIDCOptions, claimsRequestParsingError, emptyInputScopesError, invalidAuthenticationHeader, invalidAuthorityMetadata, invalidClaims, invalidCloudDiscoveryMetadata, invalidCodeChallengeMethod, invalidPromptValue, logoutRequestEmpty, missingNonceAuthenticationHeader, missingSshJwk, missingSshKid, pkceParamsMissing, redirectUriEmpty, tokenRequestEmpty, untrustedAuthority, urlEmptyError, urlParseError };\n//# sourceMappingURL=ClientConfigurationErrorCodes.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\nimport { redirectUriEmpty, claimsRequestParsingError, authorityUriInsecure, urlParseError, urlEmptyError, emptyInputScopesError, invalidPromptValue, invalidClaims, tokenRequestEmpty, logoutRequestEmpty, invalidCodeChallengeMethod, pkceParamsMissing, invalidCloudDiscoveryMetadata, invalidAuthorityMetadata, untrustedAuthority, missingSshJwk, missingSshKid, missingNonceAuthenticationHeader, invalidAuthenticationHeader, cannotSetOIDCOptions, cannotAllowNativeBroker, authorityMismatch } from './ClientConfigurationErrorCodes.mjs';\nimport * as ClientConfigurationErrorCodes from './ClientConfigurationErrorCodes.mjs';\nexport { ClientConfigurationErrorCodes };\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst ClientConfigurationErrorMessages = {\n    [redirectUriEmpty]: \"A redirect URI is required for all calls, and none has been set.\",\n    [claimsRequestParsingError]: \"Could not parse the given claims request object.\",\n    [authorityUriInsecure]: \"Authority URIs must use https.  Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\n    [urlParseError]: \"URL could not be parsed into appropriate segments.\",\n    [urlEmptyError]: \"URL was empty or null.\",\n    [emptyInputScopesError]: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\n    [invalidPromptValue]: \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n    [invalidClaims]: \"Given claims parameter must be a stringified JSON object.\",\n    [tokenRequestEmpty]: \"Token request was empty and not found in cache.\",\n    [logoutRequestEmpty]: \"The logout request was null or undefined.\",\n    [invalidCodeChallengeMethod]: 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\n    [pkceParamsMissing]: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\n    [invalidCloudDiscoveryMetadata]: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\n    [invalidAuthorityMetadata]: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\n    [untrustedAuthority]: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\n    [missingSshJwk]: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\n    [missingSshKid]: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\n    [missingNonceAuthenticationHeader]: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\n    [invalidAuthenticationHeader]: \"Invalid authentication header provided\",\n    [cannotSetOIDCOptions]: \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\n    [cannotAllowNativeBroker]: \"Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.\",\n    [authorityMismatch]: \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\n};\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use ClientConfigurationErrorCodes instead\n */\nconst ClientConfigurationErrorMessage = {\n    redirectUriNotSet: {\n        code: redirectUriEmpty,\n        desc: ClientConfigurationErrorMessages[redirectUriEmpty],\n    },\n    claimsRequestParsingError: {\n        code: claimsRequestParsingError,\n        desc: ClientConfigurationErrorMessages[claimsRequestParsingError],\n    },\n    authorityUriInsecure: {\n        code: authorityUriInsecure,\n        desc: ClientConfigurationErrorMessages[authorityUriInsecure],\n    },\n    urlParseError: {\n        code: urlParseError,\n        desc: ClientConfigurationErrorMessages[urlParseError],\n    },\n    urlEmptyError: {\n        code: urlEmptyError,\n        desc: ClientConfigurationErrorMessages[urlEmptyError],\n    },\n    emptyScopesError: {\n        code: emptyInputScopesError,\n        desc: ClientConfigurationErrorMessages[emptyInputScopesError],\n    },\n    invalidPrompt: {\n        code: invalidPromptValue,\n        desc: ClientConfigurationErrorMessages[invalidPromptValue],\n    },\n    invalidClaimsRequest: {\n        code: invalidClaims,\n        desc: ClientConfigurationErrorMessages[invalidClaims],\n    },\n    tokenRequestEmptyError: {\n        code: tokenRequestEmpty,\n        desc: ClientConfigurationErrorMessages[tokenRequestEmpty],\n    },\n    logoutRequestEmptyError: {\n        code: logoutRequestEmpty,\n        desc: ClientConfigurationErrorMessages[logoutRequestEmpty],\n    },\n    invalidCodeChallengeMethod: {\n        code: invalidCodeChallengeMethod,\n        desc: ClientConfigurationErrorMessages[invalidCodeChallengeMethod],\n    },\n    invalidCodeChallengeParams: {\n        code: pkceParamsMissing,\n        desc: ClientConfigurationErrorMessages[pkceParamsMissing],\n    },\n    invalidCloudDiscoveryMetadata: {\n        code: invalidCloudDiscoveryMetadata,\n        desc: ClientConfigurationErrorMessages[invalidCloudDiscoveryMetadata],\n    },\n    invalidAuthorityMetadata: {\n        code: invalidAuthorityMetadata,\n        desc: ClientConfigurationErrorMessages[invalidAuthorityMetadata],\n    },\n    untrustedAuthority: {\n        code: untrustedAuthority,\n        desc: ClientConfigurationErrorMessages[untrustedAuthority],\n    },\n    missingSshJwk: {\n        code: missingSshJwk,\n        desc: ClientConfigurationErrorMessages[missingSshJwk],\n    },\n    missingSshKid: {\n        code: missingSshKid,\n        desc: ClientConfigurationErrorMessages[missingSshKid],\n    },\n    missingNonceAuthenticationHeader: {\n        code: missingNonceAuthenticationHeader,\n        desc: ClientConfigurationErrorMessages[missingNonceAuthenticationHeader],\n    },\n    invalidAuthenticationHeader: {\n        code: invalidAuthenticationHeader,\n        desc: ClientConfigurationErrorMessages[invalidAuthenticationHeader],\n    },\n    cannotSetOIDCOptions: {\n        code: cannotSetOIDCOptions,\n        desc: ClientConfigurationErrorMessages[cannotSetOIDCOptions],\n    },\n    cannotAllowNativeBroker: {\n        code: cannotAllowNativeBroker,\n        desc: ClientConfigurationErrorMessages[cannotAllowNativeBroker],\n    },\n    authorityMismatch: {\n        code: authorityMismatch,\n        desc: ClientConfigurationErrorMessages[authorityMismatch],\n    },\n};\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nclass ClientConfigurationError extends AuthError {\n    constructor(errorCode) {\n        super(errorCode, ClientConfigurationErrorMessages[errorCode]);\n        this.name = \"ClientConfigurationError\";\n        Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n    }\n}\nfunction createClientConfigurationError(errorCode) {\n    return new ClientConfigurationError(errorCode);\n}\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage, ClientConfigurationErrorMessages, createClientConfigurationError };\n//# sourceMappingURL=ClientConfigurationError.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * @hidden\n */\nclass StringUtils {\n    /**\n     * Check if stringified object is empty\n     * @param strObj\n     */\n    static isEmptyObj(strObj) {\n        if (strObj) {\n            try {\n                const obj = JSON.parse(strObj);\n                return Object.keys(obj).length === 0;\n            }\n            catch (e) { }\n        }\n        return true;\n    }\n    static startsWith(str, search) {\n        return str.indexOf(search) === 0;\n    }\n    static endsWith(str, search) {\n        return (str.length >= search.length &&\n            str.lastIndexOf(search) === str.length - search.length);\n    }\n    /**\n     * Parses string into an object.\n     *\n     * @param query\n     */\n    static queryStringToObject(query) {\n        const obj = {};\n        const params = query.split(\"&\");\n        const decode = (s) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n        params.forEach((pair) => {\n            if (pair.trim()) {\n                const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n                if (key && value) {\n                    obj[decode(key)] = decode(value);\n                }\n            }\n        });\n        return obj;\n    }\n    /**\n     * Trims entries in an array.\n     *\n     * @param arr\n     */\n    static trimArrayEntries(arr) {\n        return arr.map((entry) => entry.trim());\n    }\n    /**\n     * Removes empty strings from array\n     * @param arr\n     */\n    static removeEmptyStringsFromArray(arr) {\n        return arr.filter((entry) => {\n            return !!entry;\n        });\n    }\n    /**\n     * Attempts to parse a string into JSON\n     * @param str\n     */\n    static jsonParseHelper(str) {\n        try {\n            return JSON.parse(str);\n        }\n        catch (e) {\n            return null;\n        }\n    }\n    /**\n     * Tests if a given string matches a given pattern, with support for wildcards and queries.\n     * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n     * @param input String to match against\n     */\n    static matchPattern(pattern, input) {\n        /**\n         * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n         * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n         */\n        // eslint-disable-next-line security/detect-non-literal-regexp\n        const regex = new RegExp(pattern\n            .replace(/\\\\/g, \"\\\\\\\\\")\n            .replace(/\\*/g, \"[^ ]*\")\n            .replace(/\\?/g, \"\\\\?\"));\n        return regex.test(input);\n    }\n}\n\nexport { StringUtils };\n//# sourceMappingURL=StringUtils.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, OIDC_SCOPES } from '../utils/Constants.mjs';\nimport { emptyInputScopesError } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { cannotAppendScopeSet, cannotRemoveEmptyScope, emptyInputScopeSet } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nclass ScopeSet {\n    constructor(inputScopes) {\n        // Filter empty string and null/undefined array items\n        const scopeArr = inputScopes\n            ? StringUtils.trimArrayEntries([...inputScopes])\n            : [];\n        const filteredInput = scopeArr\n            ? StringUtils.removeEmptyStringsFromArray(scopeArr)\n            : [];\n        // Validate and filter scopes (validate function throws if validation fails)\n        this.validateInputScopes(filteredInput);\n        this.scopes = new Set(); // Iterator in constructor not supported by IE11\n        filteredInput.forEach((scope) => this.scopes.add(scope));\n    }\n    /**\n     * Factory method to create ScopeSet from space-delimited string\n     * @param inputScopeString\n     * @param appClientId\n     * @param scopesRequired\n     */\n    static fromString(inputScopeString) {\n        const scopeString = inputScopeString || Constants.EMPTY_STRING;\n        const inputScopes = scopeString.split(\" \");\n        return new ScopeSet(inputScopes);\n    }\n    /**\n     * Creates the set of scopes to search for in cache lookups\n     * @param inputScopeString\n     * @returns\n     */\n    static createSearchScopes(inputScopeString) {\n        const scopeSet = new ScopeSet(inputScopeString);\n        if (!scopeSet.containsOnlyOIDCScopes()) {\n            scopeSet.removeOIDCScopes();\n        }\n        else {\n            scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n        }\n        return scopeSet;\n    }\n    /**\n     * Used to validate the scopes input parameter requested  by the developer.\n     * @param {Array<string>} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\n     * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\n     */\n    validateInputScopes(inputScopes) {\n        // Check if scopes are required but not given or is an empty array\n        if (!inputScopes || inputScopes.length < 1) {\n            throw createClientConfigurationError(emptyInputScopesError);\n        }\n    }\n    /**\n     * Check if a given scope is present in this set of scopes.\n     * @param scope\n     */\n    containsScope(scope) {\n        const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n        const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n        // compare lowercase scopes\n        return scope\n            ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\n            : false;\n    }\n    /**\n     * Check if a set of scopes is present in this set of scopes.\n     * @param scopeSet\n     */\n    containsScopeSet(scopeSet) {\n        if (!scopeSet || scopeSet.scopes.size <= 0) {\n            return false;\n        }\n        return (this.scopes.size >= scopeSet.scopes.size &&\n            scopeSet.asArray().every((scope) => this.containsScope(scope)));\n    }\n    /**\n     * Check if set of scopes contains only the defaults\n     */\n    containsOnlyOIDCScopes() {\n        let defaultScopeCount = 0;\n        OIDC_SCOPES.forEach((defaultScope) => {\n            if (this.containsScope(defaultScope)) {\n                defaultScopeCount += 1;\n            }\n        });\n        return this.scopes.size === defaultScopeCount;\n    }\n    /**\n     * Appends single scope if passed\n     * @param newScope\n     */\n    appendScope(newScope) {\n        if (newScope) {\n            this.scopes.add(newScope.trim());\n        }\n    }\n    /**\n     * Appends multiple scopes if passed\n     * @param newScopes\n     */\n    appendScopes(newScopes) {\n        try {\n            newScopes.forEach((newScope) => this.appendScope(newScope));\n        }\n        catch (e) {\n            throw createClientAuthError(cannotAppendScopeSet);\n        }\n    }\n    /**\n     * Removes element from set of scopes.\n     * @param scope\n     */\n    removeScope(scope) {\n        if (!scope) {\n            throw createClientAuthError(cannotRemoveEmptyScope);\n        }\n        this.scopes.delete(scope.trim());\n    }\n    /**\n     * Removes default scopes from set of scopes\n     * Primarily used to prevent cache misses if the default scopes are not returned from the server\n     */\n    removeOIDCScopes() {\n        OIDC_SCOPES.forEach((defaultScope) => {\n            this.scopes.delete(defaultScope);\n        });\n    }\n    /**\n     * Combines an array of scopes with the current set of scopes.\n     * @param otherScopes\n     */\n    unionScopeSets(otherScopes) {\n        if (!otherScopes) {\n            throw createClientAuthError(emptyInputScopeSet);\n        }\n        const unionScopes = new Set(); // Iterator in constructor not supported in IE11\n        otherScopes.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\n        this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\n        return unionScopes;\n    }\n    /**\n     * Check if scopes intersect between this set and another.\n     * @param otherScopes\n     */\n    intersectingScopeSets(otherScopes) {\n        if (!otherScopes) {\n            throw createClientAuthError(emptyInputScopeSet);\n        }\n        // Do not allow OIDC scopes to be the only intersecting scopes\n        if (!otherScopes.containsOnlyOIDCScopes()) {\n            otherScopes.removeOIDCScopes();\n        }\n        const unionScopes = this.unionScopeSets(otherScopes);\n        const sizeOtherScopes = otherScopes.getScopeCount();\n        const sizeThisScopes = this.getScopeCount();\n        const sizeUnionScopes = unionScopes.size;\n        return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\n    }\n    /**\n     * Returns size of set of scopes.\n     */\n    getScopeCount() {\n        return this.scopes.size;\n    }\n    /**\n     * Returns the scopes as an array of string values\n     */\n    asArray() {\n        const array = [];\n        this.scopes.forEach((val) => array.push(val));\n        return array;\n    }\n    /**\n     * Prints scopes into a space-delimited string\n     */\n    printScopes() {\n        if (this.scopes) {\n            const scopeArr = this.asArray();\n            return scopeArr.join(\" \");\n        }\n        return Constants.EMPTY_STRING;\n    }\n    /**\n     * Prints scopes into a space-delimited lower-case string (used for caching)\n     */\n    printScopesLowerCase() {\n        return this.printScopes().toLowerCase();\n    }\n}\n\nexport { ScopeSet };\n//# sourceMappingURL=ScopeSet.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Separators, Constants } from '../utils/Constants.mjs';\nimport { clientInfoEmptyError, clientInfoDecodingError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nfunction buildClientInfo(rawClientInfo, base64Decode) {\n    if (!rawClientInfo) {\n        throw createClientAuthError(clientInfoEmptyError);\n    }\n    try {\n        const decodedClientInfo = base64Decode(rawClientInfo);\n        return JSON.parse(decodedClientInfo);\n    }\n    catch (e) {\n        throw createClientAuthError(clientInfoDecodingError);\n    }\n}\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId\n */\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\n    if (!homeAccountId) {\n        throw createClientAuthError(clientInfoDecodingError);\n    }\n    const clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\n    return {\n        uid: clientInfoParts[0],\n        utid: clientInfoParts.length < 2\n            ? Constants.EMPTY_STRING\n            : clientInfoParts[1],\n    };\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n//# sourceMappingURL=ClientInfo.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Returns true if tenantId matches the utid portion of homeAccountId\n * @param tenantId\n * @param homeAccountId\n * @returns\n */\nfunction tenantIdMatchesHomeTenant(tenantId, homeAccountId) {\n    return (!!tenantId &&\n        !!homeAccountId &&\n        tenantId === homeAccountId.split(\".\")[1]);\n}\nfunction buildTenantProfileFromIdTokenClaims(homeAccountId, idTokenClaims) {\n    const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\n    /**\n     * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\n     * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\n     * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\n     * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\n     */\n    const tenantId = tid || tfp || acr || \"\";\n    return {\n        tenantId: tenantId,\n        localAccountId: oid || sub || \"\",\n        name: name,\n        isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\n    };\n}\n/**\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\n * @param baseAccountInfo\n * @param idTokenClaims\n * @returns\n */\nfunction updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenClaims) {\n    let updatedAccountInfo = baseAccountInfo;\n    // Tenant Profile overrides passed in account info\n    if (tenantProfile) {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\n        updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\n    }\n    // ID token claims override passed in account info and tenant profile\n    if (idTokenClaims) {\n        // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { isHomeTenant, ...claimsSourcedTenantProfile } = buildTenantProfileFromIdTokenClaims(baseAccountInfo.homeAccountId, idTokenClaims);\n        updatedAccountInfo = {\n            ...updatedAccountInfo,\n            ...claimsSourcedTenantProfile,\n            idTokenClaims: idTokenClaims,\n        };\n        return updatedAccountInfo;\n    }\n    return updatedAccountInfo;\n}\n\nexport { buildTenantProfileFromIdTokenClaims, tenantIdMatchesHomeTenant, updateAccountTenantProfileData };\n//# sourceMappingURL=AccountInfo.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Authority types supported by MSAL.\n */\nconst AuthorityType = {\n    Default: 0,\n    Adfs: 1,\n    Dsts: 2,\n    Ciam: 3,\n};\n\nexport { AuthorityType };\n//# sourceMappingURL=AuthorityType.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\n * Downcased to match the realm case-insensitive comparison requirements\n * @param idTokenClaims\n * @returns\n */\nfunction getTenantIdFromIdTokenClaims(idTokenClaims) {\n    if (idTokenClaims) {\n        const tenantId = idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\n        return tenantId || null;\n    }\n    return null;\n}\n\nexport { getTenantIdFromIdTokenClaims };\n//# sourceMappingURL=TokenClaims.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Protocol modes supported by MSAL.\n */\nconst ProtocolMode = {\n    AAD: \"AAD\",\n    OIDC: \"OIDC\",\n};\n\nexport { ProtocolMode };\n//# sourceMappingURL=ProtocolMode.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Separators, CacheAccountType } from '../../utils/Constants.mjs';\nimport { buildClientInfo } from '../../account/ClientInfo.mjs';\nimport { buildTenantProfileFromIdTokenClaims } from '../../account/AccountInfo.mjs';\nimport { createClientAuthError } from '../../error/ClientAuthError.mjs';\nimport { AuthorityType } from '../../authority/AuthorityType.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../../account/TokenClaims.mjs';\nimport { ProtocolMode } from '../../authority/ProtocolMode.mjs';\nimport { invalidCacheEnvironment } from '../../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: <home_account_id>-<environment>-<realm*>\n *\n * Value Schema:\n * {\n *      homeAccountId: home account identifier for the auth scheme,\n *      environment: entity that issued the token, represented as a full host\n *      realm: Full tenant or organizational identifier that the account belongs to\n *      localAccountId: Original tenant-specific accountID, usually used for legacy cases\n *      username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n *      authorityType: Accounts authority type as a string\n *      name: Full name for the account, including given name and family name,\n *      lastModificationTime: last time this entity was modified in the cache\n *      lastModificationApp:\n *      nativeAccountId: Account identifier on the native device\n *      tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\n * }\n * @internal\n */\nclass AccountEntity {\n    /**\n     * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n     */\n    generateAccountId() {\n        const accountId = [this.homeAccountId, this.environment];\n        return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n    /**\n     * Generate Account Cache Key as per the schema: <home_account_id>-<environment>-<realm*>\n     */\n    generateAccountKey() {\n        return AccountEntity.generateAccountCacheKey({\n            homeAccountId: this.homeAccountId,\n            environment: this.environment,\n            tenantId: this.realm,\n            username: this.username,\n            localAccountId: this.localAccountId,\n        });\n    }\n    /**\n     * Returns the AccountInfo interface for this account.\n     */\n    getAccountInfo() {\n        return {\n            homeAccountId: this.homeAccountId,\n            environment: this.environment,\n            tenantId: this.realm,\n            username: this.username,\n            localAccountId: this.localAccountId,\n            name: this.name,\n            nativeAccountId: this.nativeAccountId,\n            authorityType: this.authorityType,\n            // Deserialize tenant profiles array into a Map\n            tenantProfiles: new Map((this.tenantProfiles || []).map((tenantProfile) => {\n                return [tenantProfile.tenantId, tenantProfile];\n            })),\n        };\n    }\n    /**\n     * Returns true if the account entity is in single tenant format (outdated), false otherwise\n     */\n    isSingleTenant() {\n        return !this.tenantProfiles;\n    }\n    /**\n     * Generates account key from interface\n     * @param accountInterface\n     */\n    static generateAccountCacheKey(accountInterface) {\n        const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\n        const accountKey = [\n            accountInterface.homeAccountId,\n            accountInterface.environment || \"\",\n            homeTenantId || accountInterface.tenantId || \"\",\n        ];\n        return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n    }\n    /**\n     * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n     * @param accountDetails\n     */\n    static createAccount(accountDetails, authority, base64Decode) {\n        const account = new AccountEntity();\n        if (authority.authorityType === AuthorityType.Adfs) {\n            account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\n        }\n        else if (authority.protocolMode === ProtocolMode.AAD) {\n            account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n        }\n        else {\n            account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\n        }\n        let clientInfo;\n        if (accountDetails.clientInfo && base64Decode) {\n            clientInfo = buildClientInfo(accountDetails.clientInfo, base64Decode);\n        }\n        account.clientInfo = accountDetails.clientInfo;\n        account.homeAccountId = accountDetails.homeAccountId;\n        account.nativeAccountId = accountDetails.nativeAccountId;\n        const env = accountDetails.environment ||\n            (authority && authority.getPreferredCache());\n        if (!env) {\n            throw createClientAuthError(invalidCacheEnvironment);\n        }\n        account.environment = env;\n        // non AAD scenarios can have empty realm\n        account.realm =\n            clientInfo?.utid ||\n                getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\n                \"\";\n        // How do you account for MSA CID here?\n        account.localAccountId =\n            clientInfo?.uid ||\n                accountDetails.idTokenClaims.oid ||\n                accountDetails.idTokenClaims.sub ||\n                \"\";\n        /*\n         * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\n         * In most cases it will contain a single email. This field should not be relied upon if a custom\n         * policy is configured to return more than 1 email.\n         */\n        const preferredUsername = accountDetails.idTokenClaims.preferred_username ||\n            accountDetails.idTokenClaims.upn;\n        const email = accountDetails.idTokenClaims.emails\n            ? accountDetails.idTokenClaims.emails[0]\n            : null;\n        account.username = preferredUsername || email || \"\";\n        account.name = accountDetails.idTokenClaims.name;\n        account.cloudGraphHostName = accountDetails.cloudGraphHostName;\n        account.msGraphHost = accountDetails.msGraphHost;\n        if (accountDetails.tenantProfiles) {\n            account.tenantProfiles = accountDetails.tenantProfiles;\n        }\n        else {\n            const tenantProfiles = [];\n            if (accountDetails.idTokenClaims) {\n                const tenantProfile = buildTenantProfileFromIdTokenClaims(accountDetails.homeAccountId, accountDetails.idTokenClaims);\n                tenantProfiles.push(tenantProfile);\n            }\n            account.tenantProfiles = tenantProfiles;\n        }\n        return account;\n    }\n    /**\n     * Creates an AccountEntity object from AccountInfo\n     * @param accountInfo\n     * @param cloudGraphHostName\n     * @param msGraphHost\n     * @returns\n     */\n    static createFromAccountInfo(accountInfo, cloudGraphHostName, msGraphHost) {\n        const account = new AccountEntity();\n        account.authorityType =\n            accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\n        account.homeAccountId = accountInfo.homeAccountId;\n        account.localAccountId = accountInfo.localAccountId;\n        account.nativeAccountId = accountInfo.nativeAccountId;\n        account.realm = accountInfo.tenantId;\n        account.environment = accountInfo.environment;\n        account.username = accountInfo.username;\n        account.name = accountInfo.name;\n        account.cloudGraphHostName = cloudGraphHostName;\n        account.msGraphHost = msGraphHost;\n        // Serialize tenant profiles map into an array\n        account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);\n        return account;\n    }\n    /**\n     * Generate HomeAccountId from server response\n     * @param serverClientInfo\n     * @param authType\n     */\n    static generateHomeAccountId(serverClientInfo, authType, logger, cryptoObj, idTokenClaims) {\n        // since ADFS/DSTS do not have tid and does not set client_info\n        if (!(authType === AuthorityType.Adfs ||\n            authType === AuthorityType.Dsts)) {\n            // for cases where there is clientInfo\n            if (serverClientInfo) {\n                try {\n                    const clientInfo = buildClientInfo(serverClientInfo, cryptoObj.base64Decode);\n                    if (clientInfo.uid && clientInfo.utid) {\n                        return `${clientInfo.uid}.${clientInfo.utid}`;\n                    }\n                }\n                catch (e) { }\n            }\n            logger.warning(\"No client info in response\");\n        }\n        // default to \"sub\" claim\n        return idTokenClaims?.sub || \"\";\n    }\n    /**\n     * Validates an entity: checks for all expected params\n     * @param entity\n     */\n    static isAccountEntity(entity) {\n        if (!entity) {\n            return false;\n        }\n        return (entity.hasOwnProperty(\"homeAccountId\") &&\n            entity.hasOwnProperty(\"environment\") &&\n            entity.hasOwnProperty(\"realm\") &&\n            entity.hasOwnProperty(\"localAccountId\") &&\n            entity.hasOwnProperty(\"username\") &&\n            entity.hasOwnProperty(\"authorityType\"));\n    }\n    /**\n     * Helper function to determine whether 2 accountInfo objects represent the same account\n     * @param accountA\n     * @param accountB\n     * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n     */\n    static accountInfoIsEqual(accountA, accountB, compareClaims) {\n        if (!accountA || !accountB) {\n            return false;\n        }\n        let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n        if (compareClaims) {\n            const accountAClaims = (accountA.idTokenClaims ||\n                {});\n            const accountBClaims = (accountB.idTokenClaims ||\n                {});\n            // issued at timestamp and nonce are expected to change each time a new id token is acquired\n            claimsMatch =\n                accountAClaims.iat === accountBClaims.iat &&\n                    accountAClaims.nonce === accountBClaims.nonce;\n        }\n        return (accountA.homeAccountId === accountB.homeAccountId &&\n            accountA.localAccountId === accountB.localAccountId &&\n            accountA.username === accountB.username &&\n            accountA.tenantId === accountB.tenantId &&\n            accountA.environment === accountB.environment &&\n            accountA.nativeAccountId === accountB.nativeAccountId &&\n            claimsMatch);\n    }\n}\n\nexport { AccountEntity };\n//# sourceMappingURL=AccountEntity.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\n * @param hashString\n */\nfunction stripLeadingHashOrQuery(responseString) {\n    if (responseString.startsWith(\"#/\")) {\n        return responseString.substring(2);\n    }\n    else if (responseString.startsWith(\"#\") ||\n        responseString.startsWith(\"?\")) {\n        return responseString.substring(1);\n    }\n    return responseString;\n}\n/**\n * Returns URL hash as server auth code response object.\n */\nfunction getDeserializedResponse(responseString) {\n    // Check if given hash is empty\n    if (!responseString || responseString.indexOf(\"=\") < 0) {\n        return null;\n    }\n    try {\n        // Strip the # or ? symbol if present\n        const normalizedResponse = stripLeadingHashOrQuery(responseString);\n        // If # symbol was not present, above will return empty string, so give original hash value\n        const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));\n        // Check for known response properties\n        if (deserializedHash.code ||\n            deserializedHash.error ||\n            deserializedHash.error_description ||\n            deserializedHash.state) {\n            return deserializedHash;\n        }\n    }\n    catch (e) {\n        throw createClientAuthError(hashNotDeserialized);\n    }\n    return null;\n}\n\nexport { getDeserializedResponse, stripLeadingHashOrQuery };\n//# sourceMappingURL=UrlUtils.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.mjs';\nimport { getDeserializedResponse } from '../utils/UrlUtils.mjs';\nimport { urlEmptyError, urlParseError, authorityUriInsecure } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Url object class which can perform various transformations on url strings.\n */\nclass UrlString {\n    get urlString() {\n        return this._urlString;\n    }\n    constructor(url) {\n        this._urlString = url;\n        if (!this._urlString) {\n            // Throws error if url is empty\n            throw createClientConfigurationError(urlEmptyError);\n        }\n        if (!url.includes(\"#\")) {\n            this._urlString = UrlString.canonicalizeUri(url);\n        }\n    }\n    /**\n     * Ensure urls are lower case and end with a / character.\n     * @param url\n     */\n    static canonicalizeUri(url) {\n        if (url) {\n            let lowerCaseUrl = url.toLowerCase();\n            if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n                lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n            }\n            else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n                lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n            }\n            if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n                lowerCaseUrl += \"/\";\n            }\n            return lowerCaseUrl;\n        }\n        return url;\n    }\n    /**\n     * Throws if urlString passed is not a valid authority URI string.\n     */\n    validateAsUri() {\n        // Attempts to parse url for uri components\n        let components;\n        try {\n            components = this.getUrlComponents();\n        }\n        catch (e) {\n            throw createClientConfigurationError(urlParseError);\n        }\n        // Throw error if URI or path segments are not parseable.\n        if (!components.HostNameAndPort || !components.PathSegments) {\n            throw createClientConfigurationError(urlParseError);\n        }\n        // Throw error if uri is insecure.\n        if (!components.Protocol ||\n            components.Protocol.toLowerCase() !== \"https:\") {\n            throw createClientConfigurationError(authorityUriInsecure);\n        }\n    }\n    /**\n     * Given a url and a query string return the url with provided query string appended\n     * @param url\n     * @param queryString\n     */\n    static appendQueryString(url, queryString) {\n        if (!queryString) {\n            return url;\n        }\n        return url.indexOf(\"?\") < 0\n            ? `${url}?${queryString}`\n            : `${url}&${queryString}`;\n    }\n    /**\n     * Returns a url with the hash removed\n     * @param url\n     */\n    static removeHashFromUrl(url) {\n        return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n    }\n    /**\n     * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n     * @param href The url\n     * @param tenantId The tenant id to replace\n     */\n    replaceTenantPath(tenantId) {\n        const urlObject = this.getUrlComponents();\n        const pathArray = urlObject.PathSegments;\n        if (tenantId &&\n            pathArray.length !== 0 &&\n            (pathArray[0] === AADAuthorityConstants.COMMON ||\n                pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)) {\n            pathArray[0] = tenantId;\n        }\n        return UrlString.constructAuthorityUriFromObject(urlObject);\n    }\n    /**\n     * Parses out the components from a url string.\n     * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n     */\n    getUrlComponents() {\n        // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n        const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\n        // If url string does not match regEx, we throw an error\n        const match = this.urlString.match(regEx);\n        if (!match) {\n            throw createClientConfigurationError(urlParseError);\n        }\n        // Url component object\n        const urlComponents = {\n            Protocol: match[1],\n            HostNameAndPort: match[4],\n            AbsolutePath: match[5],\n            QueryString: match[7],\n        };\n        let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n        pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n        urlComponents.PathSegments = pathSegments;\n        if (urlComponents.QueryString &&\n            urlComponents.QueryString.endsWith(\"/\")) {\n            urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\n        }\n        return urlComponents;\n    }\n    static getDomainFromUrl(url) {\n        const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n        const match = url.match(regEx);\n        if (!match) {\n            throw createClientConfigurationError(urlParseError);\n        }\n        return match[2];\n    }\n    static getAbsoluteUrl(relativeUrl, baseUrl) {\n        if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n            const url = new UrlString(baseUrl);\n            const baseComponents = url.getUrlComponents();\n            return (baseComponents.Protocol +\n                \"//\" +\n                baseComponents.HostNameAndPort +\n                relativeUrl);\n        }\n        return relativeUrl;\n    }\n    static constructAuthorityUriFromObject(urlObject) {\n        return new UrlString(urlObject.Protocol +\n            \"//\" +\n            urlObject.HostNameAndPort +\n            \"/\" +\n            urlObject.PathSegments.join(\"/\"));\n    }\n    /**\n     * Check if the hash of the URL string contains known properties\n     * @deprecated This API will be removed in a future version\n     */\n    static hashContainsKnownProperties(response) {\n        return !!getDeserializedResponse(response);\n    }\n}\n\nexport { UrlString };\n//# sourceMappingURL=UrlString.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { AuthorityMetadataSource } from '../utils/Constants.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst rawMetdataJSON = {\n    endpointMetadata: {\n        \"login.microsoftonline.com\": {\n            token_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\n            jwks_uri: \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\n            issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\n            authorization_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\n            end_session_endpoint: \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\n        },\n        \"login.chinacloudapi.cn\": {\n            token_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\n            jwks_uri: \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\n            issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\n            authorization_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\n            end_session_endpoint: \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\n        },\n        \"login.microsoftonline.us\": {\n            token_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\n            jwks_uri: \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\n            issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\n            authorization_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\n            end_session_endpoint: \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\n        },\n    },\n    instanceDiscoveryMetadata: {\n        tenant_discovery_endpoint: \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\n        metadata: [\n            {\n                preferred_network: \"login.microsoftonline.com\",\n                preferred_cache: \"login.windows.net\",\n                aliases: [\n                    \"login.microsoftonline.com\",\n                    \"login.windows.net\",\n                    \"login.microsoft.com\",\n                    \"sts.windows.net\",\n                ],\n            },\n            {\n                preferred_network: \"login.partner.microsoftonline.cn\",\n                preferred_cache: \"login.partner.microsoftonline.cn\",\n                aliases: [\n                    \"login.partner.microsoftonline.cn\",\n                    \"login.chinacloudapi.cn\",\n                ],\n            },\n            {\n                preferred_network: \"login.microsoftonline.de\",\n                preferred_cache: \"login.microsoftonline.de\",\n                aliases: [\"login.microsoftonline.de\"],\n            },\n            {\n                preferred_network: \"login.microsoftonline.us\",\n                preferred_cache: \"login.microsoftonline.us\",\n                aliases: [\n                    \"login.microsoftonline.us\",\n                    \"login.usgovcloudapi.net\",\n                ],\n            },\n            {\n                preferred_network: \"login-us.microsoftonline.com\",\n                preferred_cache: \"login-us.microsoftonline.com\",\n                aliases: [\"login-us.microsoftonline.com\"],\n            },\n        ],\n    },\n};\nconst EndpointMetadata = rawMetdataJSON.endpointMetadata;\nconst InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\nconst InstanceDiscoveryMetadataAliases = new Set();\nInstanceDiscoveryMetadata.metadata.forEach((metadataEntry) => {\n    metadataEntry.aliases.forEach((alias) => {\n        InstanceDiscoveryMetadataAliases.add(alias);\n    });\n});\n/**\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\n * @param staticAuthorityOptions\n * @param logger\n * @returns\n */\nfunction getAliasesFromStaticSources(staticAuthorityOptions, logger) {\n    let staticAliases;\n    const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\n    if (canonicalAuthority) {\n        const authorityHost = new UrlString(canonicalAuthority).getUrlComponents().HostNameAndPort;\n        staticAliases =\n            getAliasesFromMetadata(authorityHost, staticAuthorityOptions.cloudDiscoveryMetadata?.metadata, AuthorityMetadataSource.CONFIG, logger) ||\n                getAliasesFromMetadata(authorityHost, InstanceDiscoveryMetadata.metadata, AuthorityMetadataSource.HARDCODED_VALUES, logger) ||\n                staticAuthorityOptions.knownAuthorities;\n    }\n    return staticAliases || [];\n}\n/**\n * Returns aliases for from the raw cloud discovery metadata passed in\n * @param authorityHost\n * @param rawCloudDiscoveryMetadata\n * @returns\n */\nfunction getAliasesFromMetadata(authorityHost, cloudDiscoveryMetadata, source, logger) {\n    logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\n    if (authorityHost && cloudDiscoveryMetadata) {\n        const metadata = getCloudDiscoveryMetadataFromNetworkResponse(cloudDiscoveryMetadata, authorityHost);\n        if (metadata) {\n            logger?.trace(`getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`);\n            return metadata.aliases;\n        }\n        else {\n            logger?.trace(`getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`);\n        }\n    }\n    return null;\n}\n/**\n * Get cloud discovery metadata for common authorities\n */\nfunction getCloudDiscoveryMetadataFromHardcodedValues(authorityHost) {\n    const metadata = getCloudDiscoveryMetadataFromNetworkResponse(InstanceDiscoveryMetadata.metadata, authorityHost);\n    return metadata;\n}\n/**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\nfunction getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {\n    for (let i = 0; i < response.length; i++) {\n        const metadata = response[i];\n        if (metadata.aliases.includes(authorityHost)) {\n            return metadata;\n        }\n    }\n    return null;\n}\n\nexport { EndpointMetadata, InstanceDiscoveryMetadata, InstanceDiscoveryMetadataAliases, getAliasesFromMetadata, getAliasesFromStaticSources, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, rawMetdataJSON };\n//# sourceMappingURL=AuthorityMetadata.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Separators, CredentialType, AuthenticationScheme, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.mjs';\nimport { generateCredentialKey } from './utils/CacheHelpers.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from './entities/AccountEntity.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { updateAccountTenantProfileData, tenantIdMatchesHomeTenant } from '../account/AccountInfo.mjs';\nimport { extractTokenClaims } from '../account/AuthToken.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { getAliasesFromStaticSources } from '../authority/AuthorityMetadata.mjs';\nimport { invalidCacheRecord, bindingKeyNotRemoved, multipleMatchingAppMetadata, methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n * @internal\n */\nclass CacheManager {\n    constructor(clientId, cryptoImpl, logger, staticAuthorityOptions) {\n        this.clientId = clientId;\n        this.cryptoImpl = cryptoImpl;\n        this.commonLogger = logger.clone(name, version);\n        this.staticAuthorityOptions = staticAuthorityOptions;\n    }\n    /**\n     * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n     * @param accountFilter - (Optional) filter to narrow down the accounts returned\n     * @returns Array of AccountInfo objects in cache\n     */\n    getAllAccounts(accountFilter) {\n        return this.buildTenantProfiles(this.getAccountsFilteredBy(accountFilter || {}), accountFilter);\n    }\n    /**\n     * Gets first tenanted AccountInfo object found based on provided filters\n     */\n    getAccountInfoFilteredBy(accountFilter) {\n        const allAccounts = this.getAllAccounts(accountFilter);\n        if (allAccounts.length > 1) {\n            // If one or more accounts are found, prioritize accounts that have an ID token\n            const sortedAccounts = allAccounts.sort((account) => {\n                return account.idTokenClaims ? -1 : 1;\n            });\n            return sortedAccounts[0];\n        }\n        else if (allAccounts.length === 1) {\n            // If only one account is found, return it regardless of whether a matching ID token was found\n            return allAccounts[0];\n        }\n        else {\n            return null;\n        }\n    }\n    /**\n     * Returns a single matching\n     * @param accountFilter\n     * @returns\n     */\n    getBaseAccountInfo(accountFilter) {\n        const accountEntities = this.getAccountsFilteredBy(accountFilter);\n        if (accountEntities.length > 0) {\n            return accountEntities[0].getAccountInfo();\n        }\n        else {\n            return null;\n        }\n    }\n    /**\n     * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\n     * and builds the account info objects from the matching ID token's claims\n     * @param cachedAccounts\n     * @param accountFilter\n     * @returns Array of AccountInfo objects that match account and tenant profile filters\n     */\n    buildTenantProfiles(cachedAccounts, accountFilter) {\n        return cachedAccounts.flatMap((accountEntity) => {\n            return this.getAccountInfoForTenantProfiles(accountEntity, accountFilter);\n        });\n    }\n    getAccountInfoForTenantProfiles(accountEntity, accountFilter) {\n        return this.getTenantProfilesFromAccountEntity(accountEntity, accountFilter?.tenantId, accountFilter);\n    }\n    getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter) {\n        let tenantedAccountInfo = null;\n        let idTokenClaims;\n        if (tenantProfileFilter) {\n            if (!this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter)) {\n                return null;\n            }\n        }\n        const idToken = this.getIdToken(accountInfo, tokenKeys, tenantProfile.tenantId);\n        if (idToken) {\n            idTokenClaims = extractTokenClaims(idToken.secret, this.cryptoImpl.base64Decode);\n            if (!this.idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter)) {\n                // ID token sourced claims don't match so this tenant profile is not a match\n                return null;\n            }\n        }\n        // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\n        tenantedAccountInfo = updateAccountTenantProfileData(accountInfo, tenantProfile, idTokenClaims);\n        return tenantedAccountInfo;\n    }\n    getTenantProfilesFromAccountEntity(accountEntity, targetTenantId, tenantProfileFilter) {\n        const accountInfo = accountEntity.getAccountInfo();\n        let searchTenantProfiles = accountInfo.tenantProfiles || new Map();\n        const tokenKeys = this.getTokenKeys();\n        // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\n        if (targetTenantId) {\n            const tenantProfile = searchTenantProfiles.get(targetTenantId);\n            if (tenantProfile) {\n                // Reduce search field to just this tenant profile\n                searchTenantProfiles = new Map([\n                    [targetTenantId, tenantProfile],\n                ]);\n            }\n            else {\n                // No tenant profile for search tenant ID, return empty array\n                return [];\n            }\n        }\n        const matchingTenantProfiles = [];\n        searchTenantProfiles.forEach((tenantProfile) => {\n            const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(accountInfo, tokenKeys, tenantProfile, tenantProfileFilter);\n            if (tenantedAccountInfo) {\n                matchingTenantProfiles.push(tenantedAccountInfo);\n            }\n        });\n        return matchingTenantProfiles;\n    }\n    tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter) {\n        if (!!tenantProfileFilter.localAccountId &&\n            !this.matchLocalAccountIdFromTenantProfile(tenantProfile, tenantProfileFilter.localAccountId)) {\n            return false;\n        }\n        if (!!tenantProfileFilter.name &&\n            !(tenantProfile.name === tenantProfileFilter.name)) {\n            return false;\n        }\n        if (tenantProfileFilter.isHomeTenant !== undefined &&\n            !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)) {\n            return false;\n        }\n        return true;\n    }\n    idTokenClaimsMatchTenantProfileFilter(idTokenClaims, tenantProfileFilter) {\n        // Tenant Profile filtering\n        if (tenantProfileFilter) {\n            if (!!tenantProfileFilter.localAccountId &&\n                !this.matchLocalAccountIdFromTokenClaims(idTokenClaims, tenantProfileFilter.localAccountId)) {\n                return false;\n            }\n            if (!!tenantProfileFilter.loginHint &&\n                !this.matchLoginHintFromTokenClaims(idTokenClaims, tenantProfileFilter.loginHint)) {\n                return false;\n            }\n            if (!!tenantProfileFilter.username &&\n                !this.matchUsername(idTokenClaims.preferred_username, tenantProfileFilter.username)) {\n                return false;\n            }\n            if (!!tenantProfileFilter.name &&\n                !this.matchName(idTokenClaims, tenantProfileFilter.name)) {\n                return false;\n            }\n            if (!!tenantProfileFilter.sid &&\n                !this.matchSid(idTokenClaims, tenantProfileFilter.sid)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * saves a cache record\n     * @param cacheRecord\n     */\n    async saveCacheRecord(cacheRecord, storeInCache) {\n        if (!cacheRecord) {\n            throw createClientAuthError(invalidCacheRecord);\n        }\n        if (!!cacheRecord.account) {\n            this.setAccount(cacheRecord.account);\n        }\n        if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\n            this.setIdTokenCredential(cacheRecord.idToken);\n        }\n        if (!!cacheRecord.accessToken && storeInCache?.accessToken !== false) {\n            await this.saveAccessToken(cacheRecord.accessToken);\n        }\n        if (!!cacheRecord.refreshToken &&\n            storeInCache?.refreshToken !== false) {\n            this.setRefreshTokenCredential(cacheRecord.refreshToken);\n        }\n        if (!!cacheRecord.appMetadata) {\n            this.setAppMetadata(cacheRecord.appMetadata);\n        }\n    }\n    /**\n     * saves access token credential\n     * @param credential\n     */\n    async saveAccessToken(credential) {\n        const accessTokenFilter = {\n            clientId: credential.clientId,\n            credentialType: credential.credentialType,\n            environment: credential.environment,\n            homeAccountId: credential.homeAccountId,\n            realm: credential.realm,\n            tokenType: credential.tokenType,\n            requestedClaimsHash: credential.requestedClaimsHash,\n        };\n        const tokenKeys = this.getTokenKeys();\n        const currentScopes = ScopeSet.fromString(credential.target);\n        const removedAccessTokens = [];\n        tokenKeys.accessToken.forEach((key) => {\n            if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\n                return;\n            }\n            const tokenEntity = this.getAccessTokenCredential(key);\n            if (tokenEntity &&\n                this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\n                const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n                if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n                    removedAccessTokens.push(this.removeAccessToken(key));\n                }\n            }\n        });\n        await Promise.all(removedAccessTokens);\n        this.setAccessTokenCredential(credential);\n    }\n    /**\n     * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\n     * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n     * @param accountFilter - An object containing Account properties to filter by\n     */\n    getAccountsFilteredBy(accountFilter) {\n        const allAccountKeys = this.getAccountKeys();\n        const matchingAccounts = [];\n        allAccountKeys.forEach((cacheKey) => {\n            if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\n                // Don't parse value if the key doesn't match the account filters\n                return;\n            }\n            const entity = this.getAccount(cacheKey, this.commonLogger);\n            // Match base account fields\n            if (!entity) {\n                return;\n            }\n            if (!!accountFilter.homeAccountId &&\n                !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\n                return;\n            }\n            if (!!accountFilter.username &&\n                !this.matchUsername(entity.username, accountFilter.username)) {\n                return;\n            }\n            if (!!accountFilter.environment &&\n                !this.matchEnvironment(entity, accountFilter.environment)) {\n                return;\n            }\n            if (!!accountFilter.realm &&\n                !this.matchRealm(entity, accountFilter.realm)) {\n                return;\n            }\n            if (!!accountFilter.nativeAccountId &&\n                !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\n                return;\n            }\n            if (!!accountFilter.authorityType &&\n                !this.matchAuthorityType(entity, accountFilter.authorityType)) {\n                return;\n            }\n            // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\n            const tenantProfileFilter = {\n                localAccountId: accountFilter?.localAccountId,\n                name: accountFilter?.name,\n            };\n            const matchingTenantProfiles = entity.tenantProfiles?.filter((tenantProfile) => {\n                return this.tenantProfileMatchesFilter(tenantProfile, tenantProfileFilter);\n            });\n            if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\n                // No tenant profile for this account matches filter, don't add to list of matching accounts\n                return;\n            }\n            matchingAccounts.push(entity);\n        });\n        return matchingAccounts;\n    }\n    /**\n     * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\n     * @param key\n     * @param homeAccountId\n     * @param tenantId\n     * @returns\n     */\n    isAccountKey(key, homeAccountId, tenantId) {\n        if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\n            // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\n            return false;\n        }\n        if (homeAccountId &&\n            !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\n            return false;\n        }\n        if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\n            return false;\n        }\n        // Do not check environment as aliasing can cause false negatives\n        return true;\n    }\n    /**\n     * Returns true if the given key matches our credential key schema.\n     * @param key\n     */\n    isCredentialKey(key) {\n        if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\n            // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\n            return false;\n        }\n        const lowerCaseKey = key.toLowerCase();\n        // Credential keys must indicate what credential type they represent\n        if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\n            -1 &&\n            lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\n                -1 &&\n            lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\n            lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\n                -1) {\n            return false;\n        }\n        if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\n            -1) {\n            // Refresh tokens must contain the client id or family id\n            const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\n            const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\n            if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\n                lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\n                return false;\n            }\n        }\n        else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\n            // Tokens must contain the clientId\n            return false;\n        }\n        return true;\n    }\n    /**\n     * Returns whether or not the given credential entity matches the filter\n     * @param entity\n     * @param filter\n     * @returns\n     */\n    credentialMatchesFilter(entity, filter) {\n        if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\n            return false;\n        }\n        if (!!filter.userAssertionHash &&\n            !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\n            return false;\n        }\n        /*\n         * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n         * because we don't want a client_credential request to return a cached token that has a homeAccountId\n         */\n        if (typeof filter.homeAccountId === \"string\" &&\n            !this.matchHomeAccountId(entity, filter.homeAccountId)) {\n            return false;\n        }\n        if (!!filter.environment &&\n            !this.matchEnvironment(entity, filter.environment)) {\n            return false;\n        }\n        if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\n            return false;\n        }\n        if (!!filter.credentialType &&\n            !this.matchCredentialType(entity, filter.credentialType)) {\n            return false;\n        }\n        if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\n            return false;\n        }\n        /*\n         * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n         * Resource specific refresh tokens case will be added when the support is deemed necessary\n         */\n        if (!!filter.target && !this.matchTarget(entity, filter.target)) {\n            return false;\n        }\n        // If request OR cached entity has requested Claims Hash, check if they match\n        if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\n            // Don't match if either is undefined or they are different\n            if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\n                return false;\n            }\n        }\n        // Access Token with Auth Scheme specific matching\n        if (entity.credentialType ===\n            CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n            if (!!filter.tokenType &&\n                !this.matchTokenType(entity, filter.tokenType)) {\n                return false;\n            }\n            // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n            if (filter.tokenType === AuthenticationScheme.SSH) {\n                if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    /**\n     * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n     * @param filter\n     */\n    getAppMetadataFilteredBy(filter) {\n        return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\n    }\n    /**\n     * Support function to help match appMetadata\n     * @param environment\n     * @param clientId\n     */\n    getAppMetadataFilteredByInternal(environment, clientId) {\n        const allCacheKeys = this.getKeys();\n        const matchingAppMetadata = {};\n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-appMetadata type cache entities\n            if (!this.isAppMetadata(cacheKey)) {\n                return;\n            }\n            // Attempt retrieval\n            const entity = this.getAppMetadata(cacheKey);\n            if (!entity) {\n                return;\n            }\n            if (!!environment && !this.matchEnvironment(entity, environment)) {\n                return;\n            }\n            if (!!clientId && !this.matchClientId(entity, clientId)) {\n                return;\n            }\n            matchingAppMetadata[cacheKey] = entity;\n        });\n        return matchingAppMetadata;\n    }\n    /**\n     * retrieve authorityMetadata that contains a matching alias\n     * @param filter\n     */\n    getAuthorityMetadataByAlias(host) {\n        const allCacheKeys = this.getAuthorityMetadataKeys();\n        let matchedEntity = null;\n        allCacheKeys.forEach((cacheKey) => {\n            // don't parse any non-authorityMetadata type cache entities\n            if (!this.isAuthorityMetadata(cacheKey) ||\n                cacheKey.indexOf(this.clientId) === -1) {\n                return;\n            }\n            // Attempt retrieval\n            const entity = this.getAuthorityMetadata(cacheKey);\n            if (!entity) {\n                return;\n            }\n            if (entity.aliases.indexOf(host) === -1) {\n                return;\n            }\n            matchedEntity = entity;\n        });\n        return matchedEntity;\n    }\n    /**\n     * Removes all accounts and related tokens from cache.\n     */\n    async removeAllAccounts() {\n        const allAccountKeys = this.getAccountKeys();\n        const removedAccounts = [];\n        allAccountKeys.forEach((cacheKey) => {\n            removedAccounts.push(this.removeAccount(cacheKey));\n        });\n        await Promise.all(removedAccounts);\n    }\n    /**\n     * Removes the account and related tokens for a given account key\n     * @param account\n     */\n    async removeAccount(accountKey) {\n        const account = this.getAccount(accountKey, this.commonLogger);\n        if (!account) {\n            return;\n        }\n        await this.removeAccountContext(account);\n        this.removeItem(accountKey);\n    }\n    /**\n     * Removes credentials associated with the provided account\n     * @param account\n     */\n    async removeAccountContext(account) {\n        const allTokenKeys = this.getTokenKeys();\n        const accountId = account.generateAccountId();\n        const removedCredentials = [];\n        allTokenKeys.idToken.forEach((key) => {\n            if (key.indexOf(accountId) === 0) {\n                this.removeIdToken(key);\n            }\n        });\n        allTokenKeys.accessToken.forEach((key) => {\n            if (key.indexOf(accountId) === 0) {\n                removedCredentials.push(this.removeAccessToken(key));\n            }\n        });\n        allTokenKeys.refreshToken.forEach((key) => {\n            if (key.indexOf(accountId) === 0) {\n                this.removeRefreshToken(key);\n            }\n        });\n        await Promise.all(removedCredentials);\n    }\n    /**\n     * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the\n     * cache into a condensed multi-tenant account object with tenant profiles.\n     * @param accountKey\n     * @param accountEntity\n     * @param logger\n     * @returns\n     */\n    updateOutdatedCachedAccount(accountKey, accountEntity, logger) {\n        // Only update if account entity is defined and has no tenantProfiles object (is outdated)\n        if (accountEntity && accountEntity.isSingleTenant()) {\n            this.commonLogger?.verbose(\"updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity\");\n            // Get keys of all accounts belonging to user\n            const matchingAccountKeys = this.getAccountKeys().filter((key) => {\n                return key.startsWith(accountEntity.homeAccountId);\n            });\n            // Get all account entities belonging to user\n            const accountsToMerge = [];\n            matchingAccountKeys.forEach((key) => {\n                const account = this.getCachedAccountEntity(key);\n                if (account) {\n                    accountsToMerge.push(account);\n                }\n            });\n            // Set base account to home account if available, any account if not\n            const baseAccount = accountsToMerge.find((account) => {\n                return tenantIdMatchesHomeTenant(account.realm, account.homeAccountId);\n            }) || accountsToMerge[0];\n            // Populate tenant profiles built from each account entity belonging to the user\n            baseAccount.tenantProfiles = accountsToMerge.map((account) => {\n                return {\n                    tenantId: account.realm,\n                    localAccountId: account.localAccountId,\n                    name: account.name,\n                    isHomeTenant: tenantIdMatchesHomeTenant(account.realm, account.homeAccountId),\n                };\n            });\n            const updatedAccount = CacheManager.toObject(new AccountEntity(), {\n                ...baseAccount,\n            });\n            const newAccountKey = updatedAccount.generateAccountKey();\n            // Clear cache of legacy account objects that have been collpsed into tenant profiles\n            matchingAccountKeys.forEach((key) => {\n                if (key !== newAccountKey) {\n                    this.removeOutdatedAccount(accountKey);\n                }\n            });\n            // Cache updated account object\n            this.setAccount(updatedAccount);\n            logger?.verbose(\"Updated an outdated account entity in the cache\");\n            return updatedAccount;\n        }\n        // No update is necessary\n        return accountEntity;\n    }\n    /**\n     * returns a boolean if the given credential is removed\n     * @param credential\n     */\n    async removeAccessToken(key) {\n        const credential = this.getAccessTokenCredential(key);\n        if (!credential) {\n            return;\n        }\n        // Remove Token Binding Key from key store for PoP Tokens Credentials\n        if (credential.credentialType.toLowerCase() ===\n            CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n            if (credential.tokenType === AuthenticationScheme.POP) {\n                const accessTokenWithAuthSchemeEntity = credential;\n                const kid = accessTokenWithAuthSchemeEntity.keyId;\n                if (kid) {\n                    try {\n                        await this.cryptoImpl.removeTokenBindingKey(kid);\n                    }\n                    catch (error) {\n                        throw createClientAuthError(bindingKeyNotRemoved);\n                    }\n                }\n            }\n        }\n        return this.removeItem(key);\n    }\n    /**\n     * Removes all app metadata objects from cache.\n     */\n    removeAppMetadata() {\n        const allCacheKeys = this.getKeys();\n        allCacheKeys.forEach((cacheKey) => {\n            if (this.isAppMetadata(cacheKey)) {\n                this.removeItem(cacheKey);\n            }\n        });\n        return true;\n    }\n    /**\n     * Retrieve AccountEntity from cache\n     * @param account\n     */\n    readAccountFromCache(account) {\n        const accountKey = AccountEntity.generateAccountCacheKey(account);\n        return this.getAccount(accountKey, this.commonLogger);\n    }\n    /**\n     * Retrieve IdTokenEntity from cache\n     * @param account {AccountInfo}\n     * @param tokenKeys {?TokenKeys}\n     * @param targetRealm {?string}\n     * @param performanceClient {?IPerformanceClient}\n     * @param correlationId {?string}\n     */\n    getIdToken(account, tokenKeys, targetRealm, performanceClient, correlationId) {\n        this.commonLogger.trace(\"CacheManager - getIdToken called\");\n        const idTokenFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: CredentialType.ID_TOKEN,\n            clientId: this.clientId,\n            realm: targetRealm,\n        };\n        const idTokenMap = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\n        const numIdTokens = idTokenMap.size;\n        if (numIdTokens < 1) {\n            this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\n            return null;\n        }\n        else if (numIdTokens > 1) {\n            let tokensToBeRemoved = idTokenMap;\n            // Multiple tenant profiles and no tenant specified, pick home account\n            if (!targetRealm) {\n                const homeIdTokenMap = new Map();\n                idTokenMap.forEach((idToken, key) => {\n                    if (idToken.realm === account.tenantId) {\n                        homeIdTokenMap.set(key, idToken);\n                    }\n                });\n                const numHomeIdTokens = homeIdTokenMap.size;\n                if (numHomeIdTokens < 1) {\n                    this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\");\n                    return idTokenMap.values().next().value;\n                }\n                else if (numHomeIdTokens === 1) {\n                    this.commonLogger.info(\"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\");\n                    return homeIdTokenMap.values().next().value;\n                }\n                else {\n                    // Multiple ID tokens for home tenant profile, remove all and return null\n                    tokensToBeRemoved = homeIdTokenMap;\n                }\n            }\n            // Multiple tokens for a single tenant profile, remove all and return null\n            this.commonLogger.info(\"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\");\n            tokensToBeRemoved.forEach((idToken, key) => {\n                this.removeIdToken(key);\n            });\n            if (performanceClient && correlationId) {\n                performanceClient.addFields({ multiMatchedID: idTokenMap.size }, correlationId);\n            }\n            return null;\n        }\n        this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\n        return idTokenMap.values().next().value;\n    }\n    /**\n     * Gets all idTokens matching the given filter\n     * @param filter\n     * @returns\n     */\n    getIdTokensByFilter(filter, tokenKeys) {\n        const idTokenKeys = (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\n        const idTokens = new Map();\n        idTokenKeys.forEach((key) => {\n            if (!this.idTokenKeyMatchesFilter(key, {\n                clientId: this.clientId,\n                ...filter,\n            })) {\n                return;\n            }\n            const idToken = this.getIdTokenCredential(key);\n            if (idToken && this.credentialMatchesFilter(idToken, filter)) {\n                idTokens.set(key, idToken);\n            }\n        });\n        return idTokens;\n    }\n    /**\n     * Validate the cache key against filter before retrieving and parsing cache value\n     * @param key\n     * @param filter\n     * @returns\n     */\n    idTokenKeyMatchesFilter(inputKey, filter) {\n        const key = inputKey.toLowerCase();\n        if (filter.clientId &&\n            key.indexOf(filter.clientId.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.homeAccountId &&\n            key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n            return false;\n        }\n        return true;\n    }\n    /**\n     * Removes idToken from the cache\n     * @param key\n     */\n    removeIdToken(key) {\n        this.removeItem(key);\n    }\n    /**\n     * Removes refresh token from the cache\n     * @param key\n     */\n    removeRefreshToken(key) {\n        this.removeItem(key);\n    }\n    /**\n     * Retrieve AccessTokenEntity from cache\n     * @param account {AccountInfo}\n     * @param request {BaseAuthRequest}\n     * @param tokenKeys {?TokenKeys}\n     * @param performanceClient {?IPerformanceClient}\n     * @param correlationId {?string}\n     */\n    getAccessToken(account, request, tokenKeys, targetRealm, performanceClient, correlationId) {\n        this.commonLogger.trace(\"CacheManager - getAccessToken called\");\n        const scopes = ScopeSet.createSearchScopes(request.scopes);\n        const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n        /*\n         * Distinguish between Bearer and PoP/SSH token cache types\n         * Cast to lowercase to handle \"bearer\" from ADFS\n         */\n        const credentialType = authScheme &&\n            authScheme.toLowerCase() !==\n                AuthenticationScheme.BEARER.toLowerCase()\n            ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n            : CredentialType.ACCESS_TOKEN;\n        const accessTokenFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: credentialType,\n            clientId: this.clientId,\n            realm: targetRealm || account.tenantId,\n            target: scopes,\n            tokenType: authScheme,\n            keyId: request.sshKid,\n            requestedClaimsHash: request.requestedClaimsHash,\n        };\n        const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||\n            this.getTokenKeys().accessToken;\n        const accessTokens = [];\n        accessTokenKeys.forEach((key) => {\n            // Validate key\n            if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\n                const accessToken = this.getAccessTokenCredential(key);\n                // Validate value\n                if (accessToken &&\n                    this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\n                    accessTokens.push(accessToken);\n                }\n            }\n        });\n        const numAccessTokens = accessTokens.length;\n        if (numAccessTokens < 1) {\n            this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\n            return null;\n        }\n        else if (numAccessTokens > 1) {\n            this.commonLogger.info(\"CacheManager:getAccessToken - Multiple access tokens found, clearing them\");\n            accessTokens.forEach((accessToken) => {\n                void this.removeAccessToken(generateCredentialKey(accessToken));\n            });\n            if (performanceClient && correlationId) {\n                performanceClient.addFields({ multiMatchedAT: accessTokens.length }, correlationId);\n            }\n            return null;\n        }\n        this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\n        return accessTokens[0];\n    }\n    /**\n     * Validate the cache key against filter before retrieving and parsing cache value\n     * @param key\n     * @param filter\n     * @param keyMustContainAllScopes\n     * @returns\n     */\n    accessTokenKeyMatchesFilter(inputKey, filter, keyMustContainAllScopes) {\n        const key = inputKey.toLowerCase();\n        if (filter.clientId &&\n            key.indexOf(filter.clientId.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.homeAccountId &&\n            key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.requestedClaimsHash &&\n            key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.target) {\n            const scopes = filter.target.asArray();\n            for (let i = 0; i < scopes.length; i++) {\n                if (keyMustContainAllScopes &&\n                    !key.includes(scopes[i].toLowerCase())) {\n                    // When performing a cache lookup a missing scope would be a cache miss\n                    return false;\n                }\n                else if (!keyMustContainAllScopes &&\n                    key.includes(scopes[i].toLowerCase())) {\n                    // When performing a cache write, any token with a subset of requested scopes should be replaced\n                    return true;\n                }\n            }\n        }\n        return true;\n    }\n    /**\n     * Gets all access tokens matching the filter\n     * @param filter\n     * @returns\n     */\n    getAccessTokensByFilter(filter) {\n        const tokenKeys = this.getTokenKeys();\n        const accessTokens = [];\n        tokenKeys.accessToken.forEach((key) => {\n            if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\n                return;\n            }\n            const accessToken = this.getAccessTokenCredential(key);\n            if (accessToken &&\n                this.credentialMatchesFilter(accessToken, filter)) {\n                accessTokens.push(accessToken);\n            }\n        });\n        return accessTokens;\n    }\n    /**\n     * Helper to retrieve the appropriate refresh token from cache\n     * @param account {AccountInfo}\n     * @param familyRT {boolean}\n     * @param tokenKeys {?TokenKeys}\n     * @param performanceClient {?IPerformanceClient}\n     * @param correlationId {?string}\n     */\n    getRefreshToken(account, familyRT, tokenKeys, performanceClient, correlationId) {\n        this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\n        const id = familyRT ? THE_FAMILY_ID : undefined;\n        const refreshTokenFilter = {\n            homeAccountId: account.homeAccountId,\n            environment: account.environment,\n            credentialType: CredentialType.REFRESH_TOKEN,\n            clientId: this.clientId,\n            familyId: id,\n        };\n        const refreshTokenKeys = (tokenKeys && tokenKeys.refreshToken) ||\n            this.getTokenKeys().refreshToken;\n        const refreshTokens = [];\n        refreshTokenKeys.forEach((key) => {\n            // Validate key\n            if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\n                const refreshToken = this.getRefreshTokenCredential(key);\n                // Validate value\n                if (refreshToken &&\n                    this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\n                    refreshTokens.push(refreshToken);\n                }\n            }\n        });\n        const numRefreshTokens = refreshTokens.length;\n        if (numRefreshTokens < 1) {\n            this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\n            return null;\n        }\n        // address the else case after remove functions address environment aliases\n        if (numRefreshTokens > 1 && performanceClient && correlationId) {\n            performanceClient.addFields({ multiMatchedRT: numRefreshTokens }, correlationId);\n        }\n        this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\n        return refreshTokens[0];\n    }\n    /**\n     * Validate the cache key against filter before retrieving and parsing cache value\n     * @param key\n     * @param filter\n     */\n    refreshTokenKeyMatchesFilter(inputKey, filter) {\n        const key = inputKey.toLowerCase();\n        if (filter.familyId &&\n            key.indexOf(filter.familyId.toLowerCase()) === -1) {\n            return false;\n        }\n        // If familyId is used, clientId is not in the key\n        if (!filter.familyId &&\n            filter.clientId &&\n            key.indexOf(filter.clientId.toLowerCase()) === -1) {\n            return false;\n        }\n        if (filter.homeAccountId &&\n            key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n            return false;\n        }\n        return true;\n    }\n    /**\n     * Retrieve AppMetadataEntity from cache\n     */\n    readAppMetadataFromCache(environment) {\n        const appMetadataFilter = {\n            environment,\n            clientId: this.clientId,\n        };\n        const appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\n        const appMetadataEntries = Object.keys(appMetadata).map((key) => appMetadata[key]);\n        const numAppMetadata = appMetadataEntries.length;\n        if (numAppMetadata < 1) {\n            return null;\n        }\n        else if (numAppMetadata > 1) {\n            throw createClientAuthError(multipleMatchingAppMetadata);\n        }\n        return appMetadataEntries[0];\n    }\n    /**\n     * Return the family_id value associated  with FOCI\n     * @param environment\n     * @param clientId\n     */\n    isAppMetadataFOCI(environment) {\n        const appMetadata = this.readAppMetadataFromCache(environment);\n        return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n    }\n    /**\n     * helper to match account ids\n     * @param value\n     * @param homeAccountId\n     */\n    matchHomeAccountId(entity, homeAccountId) {\n        return !!(typeof entity.homeAccountId === \"string\" &&\n            homeAccountId === entity.homeAccountId);\n    }\n    /**\n     * helper to match account ids\n     * @param entity\n     * @param localAccountId\n     * @returns\n     */\n    matchLocalAccountIdFromTokenClaims(tokenClaims, localAccountId) {\n        const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\n        return localAccountId === idTokenLocalAccountId;\n    }\n    matchLocalAccountIdFromTenantProfile(tenantProfile, localAccountId) {\n        return tenantProfile.localAccountId === localAccountId;\n    }\n    /**\n     * helper to match names\n     * @param entity\n     * @param name\n     * @returns true if the downcased name properties are present and match in the filter and the entity\n     */\n    matchName(claims, name) {\n        return !!(name.toLowerCase() === claims.name?.toLowerCase());\n    }\n    /**\n     * helper to match usernames\n     * @param entity\n     * @param username\n     * @returns\n     */\n    matchUsername(cachedUsername, filterUsername) {\n        return !!(cachedUsername &&\n            typeof cachedUsername === \"string\" &&\n            filterUsername?.toLowerCase() === cachedUsername.toLowerCase());\n    }\n    /**\n     * helper to match assertion\n     * @param value\n     * @param oboAssertion\n     */\n    matchUserAssertionHash(entity, userAssertionHash) {\n        return !!(entity.userAssertionHash &&\n            userAssertionHash === entity.userAssertionHash);\n    }\n    /**\n     * helper to match environment\n     * @param value\n     * @param environment\n     */\n    matchEnvironment(entity, environment) {\n        // Check static authority options first for cases where authority metadata has not been resolved and cached yet\n        if (this.staticAuthorityOptions) {\n            const staticAliases = getAliasesFromStaticSources(this.staticAuthorityOptions, this.commonLogger);\n            if (staticAliases.includes(environment) &&\n                staticAliases.includes(entity.environment)) {\n                return true;\n            }\n        }\n        // Query metadata cache if no static authority configuration has aliases that match enviroment\n        const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n        if (cloudMetadata &&\n            cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n            return true;\n        }\n        return false;\n    }\n    /**\n     * helper to match credential type\n     * @param entity\n     * @param credentialType\n     */\n    matchCredentialType(entity, credentialType) {\n        return (entity.credentialType &&\n            credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n    }\n    /**\n     * helper to match client ids\n     * @param entity\n     * @param clientId\n     */\n    matchClientId(entity, clientId) {\n        return !!(entity.clientId && clientId === entity.clientId);\n    }\n    /**\n     * helper to match family ids\n     * @param entity\n     * @param familyId\n     */\n    matchFamilyId(entity, familyId) {\n        return !!(entity.familyId && familyId === entity.familyId);\n    }\n    /**\n     * helper to match realm\n     * @param entity\n     * @param realm\n     */\n    matchRealm(entity, realm) {\n        return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\n    }\n    /**\n     * helper to match nativeAccountId\n     * @param entity\n     * @param nativeAccountId\n     * @returns boolean indicating the match result\n     */\n    matchNativeAccountId(entity, nativeAccountId) {\n        return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\n    }\n    /**\n     * helper to match loginHint which can be either:\n     * 1. login_hint ID token claim\n     * 2. username in cached account object\n     * 3. upn in ID token claims\n     * @param entity\n     * @param loginHint\n     * @returns\n     */\n    matchLoginHintFromTokenClaims(tokenClaims, loginHint) {\n        if (tokenClaims.login_hint === loginHint) {\n            return true;\n        }\n        if (tokenClaims.preferred_username === loginHint) {\n            return true;\n        }\n        if (tokenClaims.upn === loginHint) {\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Helper to match sid\n     * @param entity\n     * @param sid\n     * @returns true if the sid claim is present and matches the filter\n     */\n    matchSid(idTokenClaims, sid) {\n        return idTokenClaims.sid === sid;\n    }\n    matchAuthorityType(entity, authorityType) {\n        return !!(entity.authorityType &&\n            authorityType.toLowerCase() === entity.authorityType.toLowerCase());\n    }\n    /**\n     * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n     * @param entity\n     * @param target\n     */\n    matchTarget(entity, target) {\n        const isNotAccessTokenCredential = entity.credentialType !== CredentialType.ACCESS_TOKEN &&\n            entity.credentialType !==\n                CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n        if (isNotAccessTokenCredential || !entity.target) {\n            return false;\n        }\n        const entityScopeSet = ScopeSet.fromString(entity.target);\n        return entityScopeSet.containsScopeSet(target);\n    }\n    /**\n     * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n     * @param entity\n     * @param tokenType\n     */\n    matchTokenType(entity, tokenType) {\n        return !!(entity.tokenType && entity.tokenType === tokenType);\n    }\n    /**\n     * Returns true if the credential's keyId matches the one in the request, false otherwise\n     * @param entity\n     * @param tokenType\n     */\n    matchKeyId(entity, keyId) {\n        return !!(entity.keyId && entity.keyId === keyId);\n    }\n    /**\n     * returns if a given cache entity is of the type appmetadata\n     * @param key\n     */\n    isAppMetadata(key) {\n        return key.indexOf(APP_METADATA) !== -1;\n    }\n    /**\n     * returns if a given cache entity is of the type authoritymetadata\n     * @param key\n     */\n    isAuthorityMetadata(key) {\n        return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n    }\n    /**\n     * returns cache key used for cloud instance metadata\n     */\n    generateAuthorityMetadataCacheKey(authority) {\n        return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n    }\n    /**\n     * Helper to convert serialized data to object\n     * @param obj\n     * @param json\n     */\n    static toObject(obj, json) {\n        for (const propertyName in json) {\n            obj[propertyName] = json[propertyName];\n        }\n        return obj;\n    }\n}\n/** @internal */\nclass DefaultStorageClass extends CacheManager {\n    setAccount() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAccount() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getCachedAccountEntity() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setIdTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getIdTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setAccessTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAccessTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setRefreshTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getRefreshTokenCredential() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setAppMetadata() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAppMetadata() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setServerTelemetry() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getServerTelemetry() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setAuthorityMetadata() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAuthorityMetadata() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAuthorityMetadataKeys() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    setThrottlingCache() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getThrottlingCache() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    removeItem() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    containsKey() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getKeys() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getAccountKeys() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    getTokenKeys() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    async clear() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    updateCredentialCacheKey() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n    removeOutdatedAccount() {\n        throw createClientAuthError(methodNotImplemented);\n    }\n}\n\nexport { CacheManager, DefaultStorageClass };\n//# sourceMappingURL=CacheManager.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.mjs';\nimport { Logger, LogLevel } from '../logger/Logger.mjs';\nimport { Constants } from '../utils/Constants.mjs';\nimport { version } from '../packageMetadata.mjs';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.mjs';\nimport { DefaultStorageClass } from '../cache/CacheManager.mjs';\nimport { ProtocolMode } from '../authority/ProtocolMode.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { methodNotImplemented } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n// Token renewal offset default in seconds\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\nconst DEFAULT_SYSTEM_OPTIONS = {\n    tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n    preventCorsPreflight: false,\n};\nconst DEFAULT_LOGGER_IMPLEMENTATION = {\n    loggerCallback: () => {\n        // allow users to not set loggerCallback\n    },\n    piiLoggingEnabled: false,\n    logLevel: LogLevel.Info,\n    correlationId: Constants.EMPTY_STRING,\n};\nconst DEFAULT_CACHE_OPTIONS = {\n    claimsBasedCachingEnabled: false,\n};\nconst DEFAULT_NETWORK_IMPLEMENTATION = {\n    async sendGetRequestAsync() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n    async sendPostRequestAsync() {\n        throw createClientAuthError(methodNotImplemented);\n    },\n};\nconst DEFAULT_LIBRARY_INFO = {\n    sku: Constants.SKU,\n    version: version,\n    cpu: Constants.EMPTY_STRING,\n    os: Constants.EMPTY_STRING,\n};\nconst DEFAULT_CLIENT_CREDENTIALS = {\n    clientSecret: Constants.EMPTY_STRING,\n    clientAssertion: undefined,\n};\nconst DEFAULT_AZURE_CLOUD_OPTIONS = {\n    azureCloudInstance: AzureCloudInstance.None,\n    tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\n};\nconst DEFAULT_TELEMETRY_OPTIONS = {\n    application: {\n        appName: \"\",\n        appVersion: \"\",\n    },\n};\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nfunction buildClientConfiguration({ authOptions: userAuthOptions, systemOptions: userSystemOptions, loggerOptions: userLoggerOption, cacheOptions: userCacheOptions, storageInterface: storageImplementation, networkInterface: networkImplementation, cryptoInterface: cryptoImplementation, clientCredentials: clientCredentials, libraryInfo: libraryInfo, telemetry: telemetry, serverTelemetryManager: serverTelemetryManager, persistencePlugin: persistencePlugin, serializableCache: serializableCache, }) {\n    const loggerOptions = {\n        ...DEFAULT_LOGGER_IMPLEMENTATION,\n        ...userLoggerOption,\n    };\n    return {\n        authOptions: buildAuthOptions(userAuthOptions),\n        systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n        loggerOptions: loggerOptions,\n        cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\n        storageInterface: storageImplementation ||\n            new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION, new Logger(loggerOptions)),\n        networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n        cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n        clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n        libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n        telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n        serverTelemetryManager: serverTelemetryManager || null,\n        persistencePlugin: persistencePlugin || null,\n        serializableCache: serializableCache || null,\n    };\n}\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions) {\n    return {\n        clientCapabilities: [],\n        azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n        skipAuthorityMetadataCache: false,\n        ...authOptions,\n    };\n}\n/**\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\n * @param ClientConfiguration\n */\nfunction isOidcProtocolMode(config) {\n    return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration, isOidcProtocolMode };\n//# sourceMappingURL=ClientConfiguration.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { AuthError } from './AuthError.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nclass ServerError extends AuthError {\n    constructor(errorCode, errorMessage, subError) {\n        super(errorCode, errorMessage, subError);\n        this.name = \"ServerError\";\n        Object.setPrototypeOf(this, ServerError.prototype);\n    }\n}\n\nexport { ServerError };\n//# sourceMappingURL=ServerError.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { ThrottlingConstants, Constants, HeaderNames } from '../utils/Constants.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass ThrottlingUtils {\n    /**\n     * Prepares a RequestThumbprint to be stored as a key.\n     * @param thumbprint\n     */\n    static generateThrottlingStorageKey(thumbprint) {\n        return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\n    }\n    /**\n     * Performs necessary throttling checks before a network request.\n     * @param cacheManager\n     * @param thumbprint\n     */\n    static preProcess(cacheManager, thumbprint) {\n        const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n        const value = cacheManager.getThrottlingCache(key);\n        if (value) {\n            if (value.throttleTime < Date.now()) {\n                cacheManager.removeItem(key);\n                return;\n            }\n            throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\n        }\n    }\n    /**\n     * Performs necessary throttling checks after a network request.\n     * @param cacheManager\n     * @param thumbprint\n     * @param response\n     */\n    static postProcess(cacheManager, thumbprint, response) {\n        if (ThrottlingUtils.checkResponseStatus(response) ||\n            ThrottlingUtils.checkResponseForRetryAfter(response)) {\n            const thumbprintValue = {\n                throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\n                error: response.body.error,\n                errorCodes: response.body.error_codes,\n                errorMessage: response.body.error_description,\n                subError: response.body.suberror,\n            };\n            cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\n        }\n    }\n    /**\n     * Checks a NetworkResponse object's status codes against 429 or 5xx\n     * @param response\n     */\n    static checkResponseStatus(response) {\n        return (response.status === 429 ||\n            (response.status >= 500 && response.status < 600));\n    }\n    /**\n     * Checks a NetworkResponse object's RetryAfter header\n     * @param response\n     */\n    static checkResponseForRetryAfter(response) {\n        if (response.headers) {\n            return (response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\n                (response.status < 200 || response.status >= 300));\n        }\n        return false;\n    }\n    /**\n     * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n     * @param throttleTime\n     */\n    static calculateThrottleTime(throttleTime) {\n        const time = throttleTime <= 0 ? 0 : throttleTime;\n        const currentSeconds = Date.now() / 1000;\n        return Math.floor(Math.min(currentSeconds +\n            (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds +\n            ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\n    }\n    static removeThrottle(cacheManager, clientId, request, homeAccountIdentifier) {\n        const thumbprint = {\n            clientId: clientId,\n            authority: request.authority,\n            scopes: request.scopes,\n            homeAccountIdentifier: homeAccountIdentifier,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        const key = this.generateThrottlingStorageKey(thumbprint);\n        cacheManager.removeItem(key);\n    }\n}\n\nexport { ThrottlingUtils };\n//# sourceMappingURL=ThrottlingUtils.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { ThrottlingUtils } from './ThrottlingUtils.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { networkError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass NetworkManager {\n    constructor(networkClient, cacheManager) {\n        this.networkClient = networkClient;\n        this.cacheManager = cacheManager;\n    }\n    /**\n     * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n     * @param thumbprint\n     * @param tokenEndpoint\n     * @param options\n     */\n    async sendPostRequest(thumbprint, tokenEndpoint, options) {\n        ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\n        let response;\n        try {\n            response = await this.networkClient.sendPostRequestAsync(tokenEndpoint, options);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                throw e;\n            }\n            else {\n                throw createClientAuthError(networkError);\n            }\n        }\n        ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\n        return response;\n    }\n}\n\nexport { NetworkManager };\n//# sourceMappingURL=NetworkManager.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst CcsCredentialType = {\n    HOME_ACCOUNT_ID: \"home_account_id\",\n    UPN: \"UPN\",\n};\n\nexport { CcsCredentialType };\n//# sourceMappingURL=CcsCredential.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst CLIENT_ID = \"client_id\";\nconst REDIRECT_URI = \"redirect_uri\";\nconst RESPONSE_TYPE = \"response_type\";\nconst RESPONSE_MODE = \"response_mode\";\nconst GRANT_TYPE = \"grant_type\";\nconst CLAIMS = \"claims\";\nconst SCOPE = \"scope\";\nconst ERROR = \"error\";\nconst ERROR_DESCRIPTION = \"error_description\";\nconst ACCESS_TOKEN = \"access_token\";\nconst ID_TOKEN = \"id_token\";\nconst REFRESH_TOKEN = \"refresh_token\";\nconst EXPIRES_IN = \"expires_in\";\nconst REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\nconst STATE = \"state\";\nconst NONCE = \"nonce\";\nconst PROMPT = \"prompt\";\nconst SESSION_STATE = \"session_state\";\nconst CLIENT_INFO = \"client_info\";\nconst CODE = \"code\";\nconst CODE_CHALLENGE = \"code_challenge\";\nconst CODE_CHALLENGE_METHOD = \"code_challenge_method\";\nconst CODE_VERIFIER = \"code_verifier\";\nconst CLIENT_REQUEST_ID = \"client-request-id\";\nconst X_CLIENT_SKU = \"x-client-SKU\";\nconst X_CLIENT_VER = \"x-client-VER\";\nconst X_CLIENT_OS = \"x-client-OS\";\nconst X_CLIENT_CPU = \"x-client-CPU\";\nconst X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\nconst X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\nconst X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\nconst X_APP_NAME = \"x-app-name\";\nconst X_APP_VER = \"x-app-ver\";\nconst POST_LOGOUT_URI = \"post_logout_redirect_uri\";\nconst ID_TOKEN_HINT = \"id_token_hint\";\nconst DEVICE_CODE = \"device_code\";\nconst CLIENT_SECRET = \"client_secret\";\nconst CLIENT_ASSERTION = \"client_assertion\";\nconst CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\nconst TOKEN_TYPE = \"token_type\";\nconst REQ_CNF = \"req_cnf\";\nconst OBO_ASSERTION = \"assertion\";\nconst REQUESTED_TOKEN_USE = \"requested_token_use\";\nconst ON_BEHALF_OF = \"on_behalf_of\";\nconst FOCI = \"foci\";\nconst CCS_HEADER = \"X-AnchorMailbox\";\nconst RETURN_SPA_CODE = \"return_spa_code\";\nconst NATIVE_BROKER = \"nativebroker\";\nconst LOGOUT_HINT = \"logout_hint\";\nconst SID = \"sid\";\nconst LOGIN_HINT = \"login_hint\";\nconst DOMAIN_HINT = \"domain_hint\";\n\nexport { ACCESS_TOKEN, CCS_HEADER, CLAIMS, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_INFO, CLIENT_REQUEST_ID, CLIENT_SECRET, CODE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, DEVICE_CODE, DOMAIN_HINT, ERROR, ERROR_DESCRIPTION, EXPIRES_IN, FOCI, GRANT_TYPE, ID_TOKEN, ID_TOKEN_HINT, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, ON_BEHALF_OF, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REFRESH_TOKEN_EXPIRES_IN, REQUESTED_TOKEN_USE, REQ_CNF, RESPONSE_MODE, RESPONSE_TYPE, RETURN_SPA_CODE, SCOPE, SESSION_STATE, SID, STATE, TOKEN_TYPE, X_APP_NAME, X_APP_VER, X_CLIENT_CPU, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_CLIENT_OS, X_CLIENT_SKU, X_CLIENT_VER, X_MS_LIB_CAPABILITY };\n//# sourceMappingURL=AADServerParamKeys.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.mjs';\nimport { redirectUriEmpty, invalidPromptValue, invalidClaims, pkceParamsMissing, invalidCodeChallengeMethod } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Validates server consumable params from the \"request\" objects\n */\nclass RequestValidator {\n    /**\n     * Utility to check if the `redirectUri` in the request is a non-null value\n     * @param redirectUri\n     */\n    static validateRedirectUri(redirectUri) {\n        if (!redirectUri) {\n            throw createClientConfigurationError(redirectUriEmpty);\n        }\n    }\n    /**\n     * Utility to validate prompt sent by the user in the request\n     * @param prompt\n     */\n    static validatePrompt(prompt) {\n        const promptValues = [];\n        for (const value in PromptValue) {\n            promptValues.push(PromptValue[value]);\n        }\n        if (promptValues.indexOf(prompt) < 0) {\n            throw createClientConfigurationError(invalidPromptValue);\n        }\n    }\n    static validateClaims(claims) {\n        try {\n            JSON.parse(claims);\n        }\n        catch (e) {\n            throw createClientConfigurationError(invalidClaims);\n        }\n    }\n    /**\n     * Utility to validate code_challenge and code_challenge_method\n     * @param codeChallenge\n     * @param codeChallengeMethod\n     */\n    static validateCodeChallengeParams(codeChallenge, codeChallengeMethod) {\n        if (!codeChallenge || !codeChallengeMethod) {\n            throw createClientConfigurationError(pkceParamsMissing);\n        }\n        else {\n            this.validateCodeChallengeMethod(codeChallengeMethod);\n        }\n    }\n    /**\n     * Utility to validate code_challenge_method\n     * @param codeChallengeMethod\n     */\n    static validateCodeChallengeMethod(codeChallengeMethod) {\n        if ([\n            CodeChallengeMethodValues.PLAIN,\n            CodeChallengeMethodValues.S256,\n        ].indexOf(codeChallengeMethod) < 0) {\n            throw createClientConfigurationError(invalidCodeChallengeMethod);\n        }\n    }\n    /**\n     * Removes unnecessary, duplicate, and empty string query parameters from extraQueryParameters\n     * @param request\n     */\n    static sanitizeEQParams(eQParams, queryParams) {\n        if (!eQParams) {\n            return {};\n        }\n        // Remove any query parameters already included in SSO params\n        queryParams.forEach((_value, key) => {\n            if (eQParams[key]) {\n                delete eQParams[key];\n            }\n        });\n        // remove empty string parameters\n        return Object.fromEntries(Object.entries(eQParams).filter((kv) => kv[1] !== \"\"));\n    }\n}\n\nexport { RequestValidator };\n//# sourceMappingURL=RequestValidator.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';\nimport { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT } from '../constants/AADServerParamKeys.mjs';\nimport { ScopeSet } from './ScopeSet.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from './RequestValidator.mjs';\nimport { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass RequestParameterBuilder {\n    constructor() {\n        this.parameters = new Map();\n    }\n    /**\n     * add response_type = code\n     */\n    addResponseTypeCode() {\n        this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\n    }\n    /**\n     * add response_type = token id_token\n     */\n    addResponseTypeForTokenAndIdToken() {\n        this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));\n    }\n    /**\n     * add response_mode. defaults to query.\n     * @param responseMode\n     */\n    addResponseMode(responseMode) {\n        this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));\n    }\n    /**\n     * Add flag to indicate STS should attempt to use WAM if available\n     */\n    addNativeBroker() {\n        this.parameters.set(NATIVE_BROKER, encodeURIComponent(\"1\"));\n    }\n    /**\n     * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n     * @param scopeSet\n     * @param addOidcScopes\n     */\n    addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {\n        // Always add openid to the scopes when adding OIDC scopes\n        if (addOidcScopes &&\n            !defaultScopes.includes(\"openid\") &&\n            !scopes.includes(\"openid\")) {\n            defaultScopes.push(\"openid\");\n        }\n        const requestScopes = addOidcScopes\n            ? [...(scopes || []), ...defaultScopes]\n            : scopes || [];\n        const scopeSet = new ScopeSet(requestScopes);\n        this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes()));\n    }\n    /**\n     * add clientId\n     * @param clientId\n     */\n    addClientId(clientId) {\n        this.parameters.set(CLIENT_ID, encodeURIComponent(clientId));\n    }\n    /**\n     * add redirect_uri\n     * @param redirectUri\n     */\n    addRedirectUri(redirectUri) {\n        RequestValidator.validateRedirectUri(redirectUri);\n        this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri));\n    }\n    /**\n     * add post logout redirectUri\n     * @param redirectUri\n     */\n    addPostLogoutRedirectUri(redirectUri) {\n        RequestValidator.validateRedirectUri(redirectUri);\n        this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri));\n    }\n    /**\n     * add id_token_hint to logout request\n     * @param idTokenHint\n     */\n    addIdTokenHint(idTokenHint) {\n        this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\n    }\n    /**\n     * add domain_hint\n     * @param domainHint\n     */\n    addDomainHint(domainHint) {\n        this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint));\n    }\n    /**\n     * add login_hint\n     * @param loginHint\n     */\n    addLoginHint(loginHint) {\n        this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint));\n    }\n    /**\n     * Adds the CCS (Cache Credential Service) query parameter for login_hint\n     * @param loginHint\n     */\n    addCcsUpn(loginHint) {\n        this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\n    }\n    /**\n     * Adds the CCS (Cache Credential Service) query parameter for account object\n     * @param loginHint\n     */\n    addCcsOid(clientInfo) {\n        this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\n    }\n    /**\n     * add sid\n     * @param sid\n     */\n    addSid(sid) {\n        this.parameters.set(SID, encodeURIComponent(sid));\n    }\n    /**\n     * add claims\n     * @param claims\n     */\n    addClaims(claims, clientCapabilities) {\n        const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\n        RequestValidator.validateClaims(mergedClaims);\n        this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims));\n    }\n    /**\n     * add correlationId\n     * @param correlationId\n     */\n    addCorrelationId(correlationId) {\n        this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\n    }\n    /**\n     * add library info query params\n     * @param libraryInfo\n     */\n    addLibraryInfo(libraryInfo) {\n        // Telemetry Info\n        this.parameters.set(X_CLIENT_SKU, libraryInfo.sku);\n        this.parameters.set(X_CLIENT_VER, libraryInfo.version);\n        if (libraryInfo.os) {\n            this.parameters.set(X_CLIENT_OS, libraryInfo.os);\n        }\n        if (libraryInfo.cpu) {\n            this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu);\n        }\n    }\n    /**\n     * Add client telemetry parameters\n     * @param appTelemetry\n     */\n    addApplicationTelemetry(appTelemetry) {\n        if (appTelemetry?.appName) {\n            this.parameters.set(X_APP_NAME, appTelemetry.appName);\n        }\n        if (appTelemetry?.appVersion) {\n            this.parameters.set(X_APP_VER, appTelemetry.appVersion);\n        }\n    }\n    /**\n     * add prompt\n     * @param prompt\n     */\n    addPrompt(prompt) {\n        RequestValidator.validatePrompt(prompt);\n        this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt));\n    }\n    /**\n     * add state\n     * @param state\n     */\n    addState(state) {\n        if (state) {\n            this.parameters.set(STATE, encodeURIComponent(state));\n        }\n    }\n    /**\n     * add nonce\n     * @param nonce\n     */\n    addNonce(nonce) {\n        this.parameters.set(NONCE, encodeURIComponent(nonce));\n    }\n    /**\n     * add code_challenge and code_challenge_method\n     * - throw if either of them are not passed\n     * @param codeChallenge\n     * @param codeChallengeMethod\n     */\n    addCodeChallengeParams(codeChallenge, codeChallengeMethod) {\n        RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\n        if (codeChallenge && codeChallengeMethod) {\n            this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge));\n            this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\n        }\n        else {\n            throw createClientConfigurationError(pkceParamsMissing);\n        }\n    }\n    /**\n     * add the `authorization_code` passed by the user to exchange for a token\n     * @param code\n     */\n    addAuthorizationCode(code) {\n        this.parameters.set(CODE, encodeURIComponent(code));\n    }\n    /**\n     * add the `authorization_code` passed by the user to exchange for a token\n     * @param code\n     */\n    addDeviceCode(code) {\n        this.parameters.set(DEVICE_CODE, encodeURIComponent(code));\n    }\n    /**\n     * add the `refreshToken` passed by the user\n     * @param refreshToken\n     */\n    addRefreshToken(refreshToken) {\n        this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken));\n    }\n    /**\n     * add the `code_verifier` passed by the user to exchange for a token\n     * @param codeVerifier\n     */\n    addCodeVerifier(codeVerifier) {\n        this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier));\n    }\n    /**\n     * add client_secret\n     * @param clientSecret\n     */\n    addClientSecret(clientSecret) {\n        this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret));\n    }\n    /**\n     * add clientAssertion for confidential client flows\n     * @param clientAssertion\n     */\n    addClientAssertion(clientAssertion) {\n        if (clientAssertion) {\n            this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\n        }\n    }\n    /**\n     * add clientAssertionType for confidential client flows\n     * @param clientAssertionType\n     */\n    addClientAssertionType(clientAssertionType) {\n        if (clientAssertionType) {\n            this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\n        }\n    }\n    /**\n     * add OBO assertion for confidential client flows\n     * @param clientAssertion\n     */\n    addOboAssertion(oboAssertion) {\n        this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion));\n    }\n    /**\n     * add grant type\n     * @param grantType\n     */\n    addRequestTokenUse(tokenUse) {\n        this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\n    }\n    /**\n     * add grant type\n     * @param grantType\n     */\n    addGrantType(grantType) {\n        this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType));\n    }\n    /**\n     * add client info\n     *\n     */\n    addClientInfo() {\n        this.parameters.set(CLIENT_INFO, \"1\");\n    }\n    /**\n     * add extraQueryParams\n     * @param eQParams\n     */\n    addExtraQueryParameters(eQParams) {\n        const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);\n        Object.keys(sanitizedEQParams).forEach((key) => {\n            this.parameters.set(key, eQParams[key]);\n        });\n    }\n    addClientCapabilitiesToClaims(claims, clientCapabilities) {\n        let mergedClaims;\n        // Parse provided claims into JSON object or initialize empty object\n        if (!claims) {\n            mergedClaims = {};\n        }\n        else {\n            try {\n                mergedClaims = JSON.parse(claims);\n            }\n            catch (e) {\n                throw createClientConfigurationError(invalidClaims);\n            }\n        }\n        if (clientCapabilities && clientCapabilities.length > 0) {\n            if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\n                // Add access_token key to claims object\n                mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n            }\n            // Add xms_cc claim with provided clientCapabilities to access_token key\n            mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\n                values: clientCapabilities,\n            };\n        }\n        return JSON.stringify(mergedClaims);\n    }\n    /**\n     * adds `username` for Password Grant flow\n     * @param username\n     */\n    addUsername(username) {\n        this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\n    }\n    /**\n     * adds `password` for Password Grant flow\n     * @param password\n     */\n    addPassword(password) {\n        this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\n    }\n    /**\n     * add pop_jwk to query params\n     * @param cnfString\n     */\n    addPopToken(cnfString) {\n        if (cnfString) {\n            this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);\n            this.parameters.set(REQ_CNF, encodeURIComponent(cnfString));\n        }\n    }\n    /**\n     * add SSH JWK and key ID to query params\n     */\n    addSshJwk(sshJwkString) {\n        if (sshJwkString) {\n            this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);\n            this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString));\n        }\n    }\n    /**\n     * add server telemetry fields\n     * @param serverTelemetryManager\n     */\n    addServerTelemetry(serverTelemetryManager) {\n        this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\n        this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\n    }\n    /**\n     * Adds parameter that indicates to the server that throttling is supported\n     */\n    addThrottling() {\n        this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\n    }\n    /**\n     * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n     */\n    addLogoutHint(logoutHint) {\n        this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint));\n    }\n    /**\n     * Utility to create a URL from the params map\n     */\n    createQueryString() {\n        const queryParameterArray = new Array();\n        this.parameters.forEach((value, key) => {\n            queryParameterArray.push(`${key}=${value}`);\n        });\n        return queryParameterArray.join(\"&\");\n    }\n}\n\nexport { RequestParameterBuilder };\n//# sourceMappingURL=RequestParameterBuilder.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nfunction isOpenIdConfigResponse(response) {\n    return (response.hasOwnProperty(\"authorization_endpoint\") &&\n        response.hasOwnProperty(\"token_endpoint\") &&\n        response.hasOwnProperty(\"issuer\") &&\n        response.hasOwnProperty(\"jwks_uri\"));\n}\n\nexport { isOpenIdConfigResponse };\n//# sourceMappingURL=OpenIdConfigResponse.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nfunction isCloudInstanceDiscoveryResponse(response) {\n    return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n        response.hasOwnProperty(\"metadata\"));\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryResponse.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nfunction isCloudInstanceDiscoveryErrorResponse(response) {\n    return (response.hasOwnProperty(\"error\") &&\n        response.hasOwnProperty(\"error_description\"));\n}\n\nexport { isCloudInstanceDiscoveryErrorResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryErrorResponse.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nconst PerformanceEvents = {\n    /**\n     * acquireTokenByCode API (msal-browser and msal-node).\n     * Used to acquire tokens by trading an authorization code against the token endpoint.\n     */\n    AcquireTokenByCode: \"acquireTokenByCode\",\n    /**\n     * acquireTokenByRefreshToken API (msal-browser and msal-node).\n     * Used to renew an access token using a refresh token against the token endpoint.\n     */\n    AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\n    /**\n     * acquireTokenSilent API (msal-browser and msal-node).\n     * Used to silently acquire a new access token (from the cache or the network).\n     */\n    AcquireTokenSilent: \"acquireTokenSilent\",\n    /**\n     * acquireTokenSilentAsync (msal-browser).\n     * Internal API for acquireTokenSilent.\n     */\n    AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\n    /**\n     * acquireTokenPopup (msal-browser).\n     * Used to acquire a new access token interactively through pop ups\n     */\n    AcquireTokenPopup: \"acquireTokenPopup\",\n    /**\n     * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n     * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n     */\n    CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\n    /**\n     * signJwt API in CryptoOpts class (msal-browser).\n     * Used to signed a pop token.\n     */\n    CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\n    /**\n     * acquireToken API in the SilentCacheClient class (msal-browser).\n     * Used to read access tokens from the cache.\n     */\n    SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\n    /**\n     * acquireToken API in the SilentIframeClient class (msal-browser).\n     * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n     */\n    SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\n    /**\n     * acquireToken API in SilentRereshClient (msal-browser).\n     * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n     */\n    SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\n    /**\n     * ssoSilent API (msal-browser).\n     * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n     */\n    SsoSilent: \"ssoSilent\",\n    /**\n     * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n     * Used to load authority metadata for a request.\n     */\n    StandardInteractionClientGetDiscoveredAuthority: \"standardInteractionClientGetDiscoveredAuthority\",\n    /**\n     * acquireToken APIs in msal-browser.\n     * Used to make an /authorize endpoint call with native brokering enabled.\n     */\n    FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\n    /**\n     * acquireToken API in NativeInteractionClient class (msal-browser).\n     * Used to acquire a token from Native component when native brokering is enabled.\n     */\n    NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\n    /**\n     * Time spent creating default headers for requests to token endpoint\n     */\n    BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\n    /**\n     * Time spent sending/waiting for the response of a request to the token endpoint\n     */\n    RefreshTokenClientExecutePostToTokenEndpoint: \"refreshTokenClientExecutePostToTokenEndpoint\",\n    AuthorizationCodeClientExecutePostToTokenEndpoint: \"authorizationCodeClientExecutePostToTokenEndpoint\",\n    /**\n     * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n     */\n    BrokerHandhshake: \"brokerHandshake\",\n    /**\n     * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n     */\n    AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\n    /**\n     * Time taken for token acquisition by broker\n     */\n    AcquireTokenByBroker: \"acquireTokenByBroker\",\n    /**\n     * Time spent on the network for refresh token acquisition\n     */\n    RefreshTokenClientExecuteTokenRequest: \"refreshTokenClientExecuteTokenRequest\",\n    /**\n     * Time taken for acquiring refresh token , records RT size\n     */\n    RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\n    /**\n     * Time taken for acquiring cached refresh token\n     */\n    RefreshTokenClientAcquireTokenWithCachedRefreshToken: \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\n    /**\n     * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\n     */\n    RefreshTokenClientAcquireTokenByRefreshToken: \"refreshTokenClientAcquireTokenByRefreshToken\",\n    /**\n     * Helper function to create token request body in RefreshTokenClient (msal-common).\n     */\n    RefreshTokenClientCreateTokenRequestBody: \"refreshTokenClientCreateTokenRequestBody\",\n    /**\n     * acquireTokenFromCache (msal-browser).\n     * Internal API for acquiring token from cache\n     */\n    AcquireTokenFromCache: \"acquireTokenFromCache\",\n    SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\n    SilentFlowClientGenerateResultFromCacheRecord: \"silentFlowClientGenerateResultFromCacheRecord\",\n    /**\n     * acquireTokenBySilentIframe (msal-browser).\n     * Internal API for acquiring token by silent Iframe\n     */\n    AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\n    /**\n     * Internal API for initializing base request in BaseInteractionClient (msal-browser)\n     */\n    InitializeBaseRequest: \"initializeBaseRequest\",\n    /**\n     * Internal API for initializing silent request in SilentCacheClient (msal-browser)\n     */\n    InitializeSilentRequest: \"initializeSilentRequest\",\n    InitializeClientApplication: \"initializeClientApplication\",\n    /**\n     * Helper function in SilentIframeClient class (msal-browser).\n     */\n    SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\n    /**\n     * SilentHandler\n     */\n    SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\n    SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\n    SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\n    SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\n    /**\n     * Helper functions in StandardInteractionClient class (msal-browser)\n     */\n    StandardInteractionClientCreateAuthCodeClient: \"standardInteractionClientCreateAuthCodeClient\",\n    StandardInteractionClientGetClientConfiguration: \"standardInteractionClientGetClientConfiguration\",\n    StandardInteractionClientInitializeAuthorizationRequest: \"standardInteractionClientInitializeAuthorizationRequest\",\n    StandardInteractionClientInitializeAuthorizationCodeRequest: \"standardInteractionClientInitializeAuthorizationCodeRequest\",\n    /**\n     * getAuthCodeUrl API (msal-browser and msal-node).\n     */\n    GetAuthCodeUrl: \"getAuthCodeUrl\",\n    /**\n     * Functions from InteractionHandler (msal-browser)\n     */\n    HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\n    HandleCodeResponse: \"handleCodeResponse\",\n    UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\n    /**\n     * APIs in Authorization Code Client (msal-common)\n     */\n    AuthClientAcquireToken: \"authClientAcquireToken\",\n    AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\n    AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\n    AuthClientCreateQueryString: \"authClientCreateQueryString\",\n    /**\n     * Generate functions in PopTokenGenerator (msal-common)\n     */\n    PopTokenGenerateCnf: \"popTokenGenerateCnf\",\n    PopTokenGenerateKid: \"popTokenGenerateKid\",\n    /**\n     * handleServerTokenResponse API in ResponseHandler (msal-common)\n     */\n    HandleServerTokenResponse: \"handleServerTokenResponse\",\n    DeserializeResponse: \"deserializeResponse\",\n    /**\n     * Authority functions\n     */\n    AuthorityFactoryCreateDiscoveredInstance: \"authorityFactoryCreateDiscoveredInstance\",\n    AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\n    AuthorityResolveEndpointsFromLocalSources: \"authorityResolveEndpointsFromLocalSources\",\n    AuthorityGetCloudDiscoveryMetadataFromNetwork: \"authorityGetCloudDiscoveryMetadataFromNetwork\",\n    AuthorityUpdateCloudDiscoveryMetadata: \"authorityUpdateCloudDiscoveryMetadata\",\n    AuthorityGetEndpointMetadataFromNetwork: \"authorityGetEndpointMetadataFromNetwork\",\n    AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\n    AuthorityUpdateMetadataWithRegionalInformation: \"authorityUpdateMetadataWithRegionalInformation\",\n    /**\n     * Region Discovery functions\n     */\n    RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\n    RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\n    RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\n    AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\n    GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\n    GetCloudDiscoveryMetadataFromNetworkMeasurement: \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\n    HandleRedirectPromiseMeasurement: \"handleRedirectPromiseMeasurement\",\n    UpdateCloudDiscoveryMetadataMeasurement: \"updateCloudDiscoveryMetadataMeasurement\",\n    UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\n    NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\n    NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\n    RemoveHiddenIframe: \"removeHiddenIframe\",\n    /**\n     * Cache operations\n     */\n    ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\n    CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\n    /**\n     * Crypto Operations\n     */\n    GeneratePkceCodes: \"generatePkceCodes\",\n    GenerateCodeVerifier: \"generateCodeVerifier\",\n    GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\n    Sha256Digest: \"sha256Digest\",\n    GetRandomValues: \"getRandomValues\",\n};\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nconst PerformanceEventStatus = {\n    NotStarted: 0,\n    InProgress: 1,\n    Completed: 2,\n};\nconst IntFields = new Set([\n    \"accessTokenSize\",\n    \"durationMs\",\n    \"idTokenSize\",\n    \"matsSilentStatus\",\n    \"matsHttpStatus\",\n    \"refreshTokenSize\",\n    \"queuedTimeMs\",\n    \"startTimeMs\",\n    \"status\",\n    \"multiMatchedAT\",\n    \"multiMatchedID\",\n    \"multiMatchedRT\",\n]);\n\nexport { IntFields, PerformanceEventStatus, PerformanceEvents };\n//# sourceMappingURL=PerformanceEvent.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Wraps a function with a performance measurement.\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst invoke = (callback, eventName, logger, telemetryClient, correlationId) => {\n    return (...args) => {\n        logger.trace(`Executing function ${eventName}`);\n        const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\n        try {\n            const result = callback(...args);\n            inProgressEvent?.end({\n                success: true,\n            });\n            logger.trace(`Returning result from ${eventName}`);\n            return result;\n        }\n        catch (e) {\n            logger.trace(`Error occurred in ${eventName}`);\n            try {\n                logger.trace(JSON.stringify(e));\n            }\n            catch (e) {\n                logger.trace(\"Unable to print error message.\");\n            }\n            inProgressEvent?.end({\n                success: false,\n            });\n            throw e;\n        }\n    };\n};\n/**\n * Wraps an async function with a performance measurement.\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst invokeAsync = (callback, eventName, logger, telemetryClient, correlationId) => {\n    return (...args) => {\n        logger.trace(`Executing function ${eventName}`);\n        const inProgressEvent = telemetryClient?.startMeasurement(eventName, correlationId);\n        telemetryClient?.setPreQueueTime(eventName, correlationId);\n        return callback(...args)\n            .then((response) => {\n            logger.trace(`Returning result from ${eventName}`);\n            inProgressEvent?.end({\n                success: true,\n            });\n            return response;\n        })\n            .catch((e) => {\n            logger.trace(`Error occurred in ${eventName}`);\n            try {\n                logger.trace(JSON.stringify(e));\n            }\n            catch (e) {\n                logger.trace(\"Unable to print error message.\");\n            }\n            inProgressEvent?.end({\n                success: false,\n            });\n            throw e;\n        });\n    };\n};\n\nexport { invoke, invokeAsync };\n//# sourceMappingURL=FunctionWrappers.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants, ResponseCodes, RegionDiscoverySources } from '../utils/Constants.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass RegionDiscovery {\n    constructor(networkInterface, logger, performanceClient, correlationId) {\n        this.networkInterface = networkInterface;\n        this.logger = logger;\n        this.performanceClient = performanceClient;\n        this.correlationId = correlationId;\n    }\n    /**\n     * Detect the region from the application's environment.\n     *\n     * @returns Promise<string | null>\n     */\n    async detectRegion(environmentRegion, regionDiscoveryMetadata) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryDetectRegion, this.correlationId);\n        // Initialize auto detected region with the region from the envrionment\n        let autodetectedRegionName = environmentRegion;\n        // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\n        if (!autodetectedRegionName) {\n            const options = RegionDiscovery.IMDS_OPTIONS;\n            try {\n                const localIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(Constants.IMDS_VERSION, options);\n                if (localIMDSVersionResponse.status ===\n                    ResponseCodes.httpSuccess) {\n                    autodetectedRegionName = localIMDSVersionResponse.body;\n                    regionDiscoveryMetadata.region_source =\n                        RegionDiscoverySources.IMDS;\n                }\n                // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\n                if (localIMDSVersionResponse.status ===\n                    ResponseCodes.httpBadRequest) {\n                    const currentIMDSVersion = await invokeAsync(this.getCurrentVersion.bind(this), PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.logger, this.performanceClient, this.correlationId)(options);\n                    if (!currentIMDSVersion) {\n                        regionDiscoveryMetadata.region_source =\n                            RegionDiscoverySources.FAILED_AUTO_DETECTION;\n                        return null;\n                    }\n                    const currentIMDSVersionResponse = await invokeAsync(this.getRegionFromIMDS.bind(this), PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.logger, this.performanceClient, this.correlationId)(currentIMDSVersion, options);\n                    if (currentIMDSVersionResponse.status ===\n                        ResponseCodes.httpSuccess) {\n                        autodetectedRegionName =\n                            currentIMDSVersionResponse.body;\n                        regionDiscoveryMetadata.region_source =\n                            RegionDiscoverySources.IMDS;\n                    }\n                }\n            }\n            catch (e) {\n                regionDiscoveryMetadata.region_source =\n                    RegionDiscoverySources.FAILED_AUTO_DETECTION;\n                return null;\n            }\n        }\n        else {\n            regionDiscoveryMetadata.region_source =\n                RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n        }\n        // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n        if (!autodetectedRegionName) {\n            regionDiscoveryMetadata.region_source =\n                RegionDiscoverySources.FAILED_AUTO_DETECTION;\n        }\n        return autodetectedRegionName || null;\n    }\n    /**\n     * Make the call to the IMDS endpoint\n     *\n     * @param imdsEndpointUrl\n     * @returns Promise<NetworkResponse<string>>\n     */\n    async getRegionFromIMDS(version, options) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetRegionFromIMDS, this.correlationId);\n        return this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\n    }\n    /**\n     * Get the most recent version of the IMDS endpoint available\n     *\n     * @returns Promise<string | null>\n     */\n    async getCurrentVersion(options) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RegionDiscoveryGetCurrentVersion, this.correlationId);\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync(`${Constants.IMDS_ENDPOINT}?format=json`, options);\n            // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n            if (response.status === ResponseCodes.httpBadRequest &&\n                response.body &&\n                response.body[\"newest-versions\"] &&\n                response.body[\"newest-versions\"].length > 0) {\n                return response.body[\"newest-versions\"][0];\n            }\n            return null;\n        }\n        catch (e) {\n            return null;\n        }\n    }\n}\n// Options for the IMDS endpoint request\nRegionDiscovery.IMDS_OPTIONS = {\n    headers: {\n        Metadata: \"true\",\n    },\n};\n\nexport { RegionDiscovery };\n//# sourceMappingURL=RegionDiscovery.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { AuthorityType } from './AuthorityType.mjs';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes, AADAuthorityConstants } from '../utils/Constants.mjs';\nimport { EndpointMetadata, getCloudDiscoveryMetadataFromHardcodedValues, getCloudDiscoveryMetadataFromNetworkResponse, InstanceDiscoveryMetadataAliases } from './AuthorityMetadata.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { ProtocolMode } from './ProtocolMode.mjs';\nimport { AzureCloudInstance } from './AuthorityOptions.mjs';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.mjs';\nimport { isCloudInstanceDiscoveryErrorResponse } from './CloudInstanceDiscoveryErrorResponse.mjs';\nimport { RegionDiscovery } from './RegionDiscovery.mjs';\nimport { AuthError } from '../error/AuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { generateAuthorityMetadataExpiresAt, updateAuthorityEndpointMetadata, isAuthorityMetadataExpired, updateCloudDiscoveryMetadata } from '../cache/utils/CacheHelpers.mjs';\nimport { endpointResolutionError, endSessionEndpointNotSupported, openIdConfigError } from '../error/ClientAuthErrorCodes.mjs';\nimport { invalidAuthorityMetadata, untrustedAuthority, invalidCloudDiscoveryMetadata } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n * @internal\n */\nclass Authority {\n    constructor(authority, networkInterface, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\n        this.canonicalAuthority = authority;\n        this._canonicalAuthority.validateAsUri();\n        this.networkInterface = networkInterface;\n        this.cacheManager = cacheManager;\n        this.authorityOptions = authorityOptions;\n        this.regionDiscoveryMetadata = {\n            region_used: undefined,\n            region_source: undefined,\n            region_outcome: undefined,\n        };\n        this.logger = logger;\n        this.performanceClient = performanceClient;\n        this.correlationId = correlationId;\n        this.regionDiscovery = new RegionDiscovery(networkInterface, this.logger, this.performanceClient, this.correlationId);\n    }\n    /**\n     * Get {@link AuthorityType}\n     * @param authorityUri {@link IUri}\n     * @private\n     */\n    getAuthorityType(authorityUri) {\n        // CIAM auth url pattern is being standardized as: <tenant>.ciamlogin.com\n        if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\n            return AuthorityType.Ciam;\n        }\n        const pathSegments = authorityUri.PathSegments;\n        if (pathSegments.length) {\n            switch (pathSegments[0].toLowerCase()) {\n                case Constants.ADFS:\n                    return AuthorityType.Adfs;\n                case Constants.DSTS:\n                    return AuthorityType.Dsts;\n            }\n        }\n        return AuthorityType.Default;\n    }\n    // See above for AuthorityType\n    get authorityType() {\n        return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\n    }\n    /**\n     * ProtocolMode enum representing the way endpoints are constructed.\n     */\n    get protocolMode() {\n        return this.authorityOptions.protocolMode;\n    }\n    /**\n     * Returns authorityOptions which can be used to reinstantiate a new authority instance\n     */\n    get options() {\n        return this.authorityOptions;\n    }\n    /**\n     * A URL that is the authority set by the developer\n     */\n    get canonicalAuthority() {\n        return this._canonicalAuthority.urlString;\n    }\n    /**\n     * Sets canonical authority.\n     */\n    set canonicalAuthority(url) {\n        this._canonicalAuthority = new UrlString(url);\n        this._canonicalAuthority.validateAsUri();\n        this._canonicalAuthorityUrlComponents = null;\n    }\n    /**\n     * Get authority components.\n     */\n    get canonicalAuthorityUrlComponents() {\n        if (!this._canonicalAuthorityUrlComponents) {\n            this._canonicalAuthorityUrlComponents =\n                this._canonicalAuthority.getUrlComponents();\n        }\n        return this._canonicalAuthorityUrlComponents;\n    }\n    /**\n     * Get hostname and port i.e. login.microsoftonline.com\n     */\n    get hostnameAndPort() {\n        return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n    }\n    /**\n     * Get tenant for authority.\n     */\n    get tenant() {\n        return this.canonicalAuthorityUrlComponents.PathSegments[0];\n    }\n    /**\n     * OAuth /authorize endpoint for requests\n     */\n    get authorizationEndpoint() {\n        if (this.discoveryComplete()) {\n            return this.replacePath(this.metadata.authorization_endpoint);\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * OAuth /token endpoint for requests\n     */\n    get tokenEndpoint() {\n        if (this.discoveryComplete()) {\n            return this.replacePath(this.metadata.token_endpoint);\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    get deviceCodeEndpoint() {\n        if (this.discoveryComplete()) {\n            return this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * OAuth logout endpoint for requests\n     */\n    get endSessionEndpoint() {\n        if (this.discoveryComplete()) {\n            // ROPC policies may not have end_session_endpoint set\n            if (!this.metadata.end_session_endpoint) {\n                throw createClientAuthError(endSessionEndpointNotSupported);\n            }\n            return this.replacePath(this.metadata.end_session_endpoint);\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * OAuth issuer for requests\n     */\n    get selfSignedJwtAudience() {\n        if (this.discoveryComplete()) {\n            return this.replacePath(this.metadata.issuer);\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * Jwks_uri for token signing keys\n     */\n    get jwksUri() {\n        if (this.discoveryComplete()) {\n            return this.replacePath(this.metadata.jwks_uri);\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\n     * @param authorityUri {@link IUri}\n     * @private\n     */\n    canReplaceTenant(authorityUri) {\n        return (authorityUri.PathSegments.length === 1 &&\n            !Authority.reservedTenantDomains.has(authorityUri.PathSegments[0]) &&\n            this.getAuthorityType(authorityUri) === AuthorityType.Default &&\n            this.protocolMode === ProtocolMode.AAD);\n    }\n    /**\n     * Replaces tenant in url path with current tenant. Defaults to common.\n     * @param urlString\n     */\n    replaceTenant(urlString) {\n        return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n    }\n    /**\n     * Replaces path such as tenant or policy with the current tenant or policy.\n     * @param urlString\n     */\n    replacePath(urlString) {\n        let endpoint = urlString;\n        const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n        const cachedAuthorityUrlComponents = cachedAuthorityUrl.getUrlComponents();\n        const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\n        const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n        currentAuthorityParts.forEach((currentPart, index) => {\n            let cachedPart = cachedAuthorityParts[index];\n            if (index === 0 &&\n                this.canReplaceTenant(cachedAuthorityUrlComponents)) {\n                const tenantId = new UrlString(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];\n                /**\n                 * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\n                 * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\n                 * always resolved with tenant id by OIDC.\n                 */\n                if (cachedPart !== tenantId) {\n                    this.logger.verbose(`Replacing tenant domain name ${cachedPart} with id ${tenantId}`);\n                    cachedPart = tenantId;\n                }\n            }\n            if (currentPart !== cachedPart) {\n                endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n            }\n        });\n        return this.replaceTenant(endpoint);\n    }\n    /**\n     * The default open id configuration endpoint for any canonical authority.\n     */\n    get defaultOpenIdConfigurationEndpoint() {\n        const canonicalAuthorityHost = this.hostnameAndPort;\n        if (this.canonicalAuthority.endsWith(\"v2.0/\") ||\n            this.authorityType === AuthorityType.Adfs ||\n            (this.protocolMode !== ProtocolMode.AAD &&\n                !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))) {\n            return `${this.canonicalAuthority}.well-known/openid-configuration`;\n        }\n        return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n    }\n    /**\n     * Boolean that returns whethr or not tenant discovery has been completed.\n     */\n    discoveryComplete() {\n        return !!this.metadata;\n    }\n    /**\n     * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n     * and the /authorize, /token and logout endpoints.\n     */\n    async resolveEndpointsAsync() {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityResolveEndpointsAsync, this.correlationId);\n        const metadataEntity = this.getCurrentMetadataEntity();\n        const cloudDiscoverySource = await invokeAsync(this.updateCloudDiscoveryMetadata.bind(this), PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\n        this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n        const endpointSource = await invokeAsync(this.updateEndpointMetadata.bind(this), PerformanceEvents.AuthorityUpdateEndpointMetadata, this.logger, this.performanceClient, this.correlationId)(metadataEntity);\n        this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\n            source: endpointSource,\n        });\n        this.performanceClient?.addFields({\n            cloudDiscoverySource: cloudDiscoverySource,\n            authorityEndpointSource: endpointSource,\n        }, this.correlationId);\n    }\n    /**\n     * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\n     * from the configured canonical authority\n     * @returns\n     */\n    getCurrentMetadataEntity() {\n        let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n        if (!metadataEntity) {\n            metadataEntity = {\n                aliases: [],\n                preferred_cache: this.hostnameAndPort,\n                preferred_network: this.hostnameAndPort,\n                canonical_authority: this.canonicalAuthority,\n                authorization_endpoint: \"\",\n                token_endpoint: \"\",\n                end_session_endpoint: \"\",\n                issuer: \"\",\n                aliasesFromNetwork: false,\n                endpointsFromNetwork: false,\n                expiresAt: generateAuthorityMetadataExpiresAt(),\n                jwks_uri: \"\",\n            };\n        }\n        return metadataEntity;\n    }\n    /**\n     * Updates cached metadata based on metadata source and sets the instance's metadata\n     * property to the same value\n     * @param metadataEntity\n     * @param cloudDiscoverySource\n     * @param endpointMetadataResult\n     */\n    updateCachedMetadata(metadataEntity, cloudDiscoverySource, endpointMetadataResult) {\n        if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\n            endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE) {\n            // Reset the expiration time unless both values came from a successful cache lookup\n            metadataEntity.expiresAt =\n                generateAuthorityMetadataExpiresAt();\n            metadataEntity.canonical_authority = this.canonicalAuthority;\n        }\n        const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n        this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n        this.metadata = metadataEntity;\n    }\n    /**\n     * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n     * @param metadataEntity\n     */\n    async updateEndpointMetadata(metadataEntity) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateEndpointMetadata, this.correlationId);\n        const localMetadata = this.updateEndpointMetadataFromLocalSources(metadataEntity);\n        // Further update may be required for hardcoded metadata if regional metadata is preferred\n        if (localMetadata) {\n            if (localMetadata.source ===\n                AuthorityMetadataSource.HARDCODED_VALUES) {\n                // If the user prefers to use an azure region replace the global endpoints with regional information.\n                if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n                    if (localMetadata.metadata) {\n                        const hardcodedMetadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(localMetadata.metadata);\n                        updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\n                        metadataEntity.canonical_authority =\n                            this.canonicalAuthority;\n                    }\n                }\n            }\n            return localMetadata.source;\n        }\n        // Get metadata from network if local sources aren't available\n        let metadata = await invokeAsync(this.getEndpointMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\n        if (metadata) {\n            // If the user prefers to use an azure region replace the global endpoints with regional information.\n            if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n                metadata = await invokeAsync(this.updateMetadataWithRegionalInformation.bind(this), PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.logger, this.performanceClient, this.correlationId)(metadata);\n            }\n            updateAuthorityEndpointMetadata(metadataEntity, metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        }\n        else {\n            // Metadata could not be obtained from the config, cache, network or hardcoded values\n            throw createClientAuthError(openIdConfigError, this.defaultOpenIdConfigurationEndpoint);\n        }\n    }\n    /**\n     * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\n     * response if the source is hardcoded metadata\n     * @param metadataEntity\n     * @returns\n     */\n    updateEndpointMetadataFromLocalSources(metadataEntity) {\n        this.logger.verbose(\"Attempting to get endpoint metadata from authority configuration\");\n        const configMetadata = this.getEndpointMetadataFromConfig();\n        if (configMetadata) {\n            this.logger.verbose(\"Found endpoint metadata in authority configuration\");\n            updateAuthorityEndpointMetadata(metadataEntity, configMetadata, false);\n            return {\n                source: AuthorityMetadataSource.CONFIG,\n            };\n        }\n        this.logger.verbose(\"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\");\n        // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\n        if (this.authorityOptions.skipAuthorityMetadataCache) {\n            this.logger.verbose(\"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\");\n        }\n        else {\n            const hardcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\n            if (hardcodedMetadata) {\n                updateAuthorityEndpointMetadata(metadataEntity, hardcodedMetadata, false);\n                return {\n                    source: AuthorityMetadataSource.HARDCODED_VALUES,\n                    metadata: hardcodedMetadata,\n                };\n            }\n            else {\n                this.logger.verbose(\"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\");\n            }\n        }\n        // Check cached metadata entity expiration status\n        const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\n        if (this.isAuthoritySameType(metadataEntity) &&\n            metadataEntity.endpointsFromNetwork &&\n            !metadataEntityExpired) {\n            // No need to update\n            this.logger.verbose(\"Found endpoint metadata in the cache.\");\n            return { source: AuthorityMetadataSource.CACHE };\n        }\n        else if (metadataEntityExpired) {\n            this.logger.verbose(\"The metadata entity is expired.\");\n        }\n        return null;\n    }\n    /**\n     * Compares the number of url components after the domain to determine if the cached\n     * authority metadata can be used for the requested authority. Protects against same domain different\n     * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n     * @param metadataEntity\n     */\n    isAuthoritySameType(metadataEntity) {\n        const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n        const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n        return (cachedParts.length ===\n            this.canonicalAuthorityUrlComponents.PathSegments.length);\n    }\n    /**\n     * Parse authorityMetadata config option\n     */\n    getEndpointMetadataFromConfig() {\n        if (this.authorityOptions.authorityMetadata) {\n            try {\n                return JSON.parse(this.authorityOptions.authorityMetadata);\n            }\n            catch (e) {\n                throw createClientConfigurationError(invalidAuthorityMetadata);\n            }\n        }\n        return null;\n    }\n    /**\n     * Gets OAuth endpoints from the given OpenID configuration endpoint.\n     *\n     * @param hasHardcodedMetadata boolean\n     */\n    async getEndpointMetadataFromNetwork() {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork, this.correlationId);\n        const options = {};\n        /*\n         * TODO: Add a timeout if the authority exists in our library's\n         * hardcoded list of metadata\n         */\n        const openIdConfigurationEndpoint = this.defaultOpenIdConfigurationEndpoint;\n        this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`);\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync(openIdConfigurationEndpoint, options);\n            const isValidResponse = isOpenIdConfigResponse(response.body);\n            if (isValidResponse) {\n                return response.body;\n            }\n            else {\n                this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`);\n                return null;\n            }\n        }\n        catch (e) {\n            this.logger.verbose(`Authority.getEndpointMetadataFromNetwork: ${e}`);\n            return null;\n        }\n    }\n    /**\n     * Get OAuth endpoints for common authorities.\n     */\n    getEndpointMetadataFromHardcodedValues() {\n        if (this.hostnameAndPort in EndpointMetadata) {\n            return EndpointMetadata[this.hostnameAndPort];\n        }\n        return null;\n    }\n    /**\n     * Update the retrieved metadata with regional information.\n     * User selected Azure region will be used if configured.\n     */\n    async updateMetadataWithRegionalInformation(metadata) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation, this.correlationId);\n        const userConfiguredAzureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion;\n        if (userConfiguredAzureRegion) {\n            if (userConfiguredAzureRegion !==\n                Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n                this.regionDiscoveryMetadata.region_outcome =\n                    RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n                this.regionDiscoveryMetadata.region_used =\n                    userConfiguredAzureRegion;\n                return Authority.replaceWithRegionalInformation(metadata, userConfiguredAzureRegion);\n            }\n            const autodetectedRegionName = await invokeAsync(this.regionDiscovery.detectRegion.bind(this.regionDiscovery), PerformanceEvents.RegionDiscoveryDetectRegion, this.logger, this.performanceClient, this.correlationId)(this.authorityOptions.azureRegionConfiguration\n                ?.environmentRegion, this.regionDiscoveryMetadata);\n            if (autodetectedRegionName) {\n                this.regionDiscoveryMetadata.region_outcome =\n                    RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\n                this.regionDiscoveryMetadata.region_used =\n                    autodetectedRegionName;\n                return Authority.replaceWithRegionalInformation(metadata, autodetectedRegionName);\n            }\n            this.regionDiscoveryMetadata.region_outcome =\n                RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n        }\n        return metadata;\n    }\n    /**\n     * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\n     * and returns where the information was retrieved from\n     * @param metadataEntity\n     * @returns AuthorityMetadataSource\n     */\n    async updateCloudDiscoveryMetadata(metadataEntity) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata, this.correlationId);\n        const localMetadataSource = this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\n        if (localMetadataSource) {\n            return localMetadataSource;\n        }\n        // Fallback to network as metadata source\n        const metadata = await invokeAsync(this.getCloudDiscoveryMetadataFromNetwork.bind(this), PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.logger, this.performanceClient, this.correlationId)();\n        if (metadata) {\n            updateCloudDiscoveryMetadata(metadataEntity, metadata, true);\n            return AuthorityMetadataSource.NETWORK;\n        }\n        // Metadata could not be obtained from the config, cache, network or hardcoded values\n        throw createClientConfigurationError(untrustedAuthority);\n    }\n    updateCloudDiscoveryMetadataFromLocalSources(metadataEntity) {\n        this.logger.verbose(\"Attempting to get cloud discovery metadata  from authority configuration\");\n        this.logger.verbosePii(`Known Authorities: ${this.authorityOptions.knownAuthorities ||\n            Constants.NOT_APPLICABLE}`);\n        this.logger.verbosePii(`Authority Metadata: ${this.authorityOptions.authorityMetadata ||\n            Constants.NOT_APPLICABLE}`);\n        this.logger.verbosePii(`Canonical Authority: ${metadataEntity.canonical_authority || Constants.NOT_APPLICABLE}`);\n        const metadata = this.getCloudDiscoveryMetadataFromConfig();\n        if (metadata) {\n            this.logger.verbose(\"Found cloud discovery metadata in authority configuration\");\n            updateCloudDiscoveryMetadata(metadataEntity, metadata, false);\n            return AuthorityMetadataSource.CONFIG;\n        }\n        // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\n        this.logger.verbose(\"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\");\n        if (this.options.skipAuthorityMetadataCache) {\n            this.logger.verbose(\"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\");\n        }\n        else {\n            const hardcodedMetadata = getCloudDiscoveryMetadataFromHardcodedValues(this.hostnameAndPort);\n            if (hardcodedMetadata) {\n                this.logger.verbose(\"Found cloud discovery metadata from hardcoded values.\");\n                updateCloudDiscoveryMetadata(metadataEntity, hardcodedMetadata, false);\n                return AuthorityMetadataSource.HARDCODED_VALUES;\n            }\n            this.logger.verbose(\"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\");\n        }\n        const metadataEntityExpired = isAuthorityMetadataExpired(metadataEntity);\n        if (this.isAuthoritySameType(metadataEntity) &&\n            metadataEntity.aliasesFromNetwork &&\n            !metadataEntityExpired) {\n            this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\n            // No need to update\n            return AuthorityMetadataSource.CACHE;\n        }\n        else if (metadataEntityExpired) {\n            this.logger.verbose(\"The metadata entity is expired.\");\n        }\n        return null;\n    }\n    /**\n     * Parse cloudDiscoveryMetadata config or check knownAuthorities\n     */\n    getCloudDiscoveryMetadataFromConfig() {\n        // CIAM does not support cloud discovery metadata\n        if (this.authorityType === AuthorityType.Ciam) {\n            this.logger.verbose(\"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\");\n            return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n        }\n        // Check if network response was provided in config\n        if (this.authorityOptions.cloudDiscoveryMetadata) {\n            this.logger.verbose(\"The cloud discovery metadata has been provided as a network response, in the config.\");\n            try {\n                this.logger.verbose(\"Attempting to parse the cloud discovery metadata.\");\n                const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\n                const metadata = getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\n                this.logger.verbose(\"Parsed the cloud discovery metadata.\");\n                if (metadata) {\n                    this.logger.verbose(\"There is returnable metadata attached to the parsed cloud discovery metadata.\");\n                    return metadata;\n                }\n                else {\n                    this.logger.verbose(\"There is no metadata attached to the parsed cloud discovery metadata.\");\n                }\n            }\n            catch (e) {\n                this.logger.verbose(\"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\");\n                throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\n            }\n        }\n        // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n        if (this.isInKnownAuthorities()) {\n            this.logger.verbose(\"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\");\n            return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n        }\n        return null;\n    }\n    /**\n     * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n     *\n     * @param hasHardcodedMetadata boolean\n     */\n    async getCloudDiscoveryMetadataFromNetwork() {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork, this.correlationId);\n        const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n        const options = {};\n        /*\n         * TODO: Add a timeout if the authority exists in our library's\n         * hardcoded list of metadata\n         */\n        let match = null;\n        try {\n            const response = await this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options);\n            let typedResponseBody;\n            let metadata;\n            if (isCloudInstanceDiscoveryResponse(response.body)) {\n                typedResponseBody =\n                    response.body;\n                metadata = typedResponseBody.metadata;\n                this.logger.verbosePii(`tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`);\n            }\n            else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\n                this.logger.warning(`A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`);\n                typedResponseBody =\n                    response.body;\n                if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\n                    this.logger.error(\"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\");\n                    return null;\n                }\n                this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`);\n                this.logger.warning(`The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`);\n                this.logger.warning(\"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\");\n                metadata = [];\n            }\n            else {\n                this.logger.error(\"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\");\n                return null;\n            }\n            this.logger.verbose(\"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\");\n            match = getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\n        }\n        catch (error) {\n            if (error instanceof AuthError) {\n                this.logger.error(`There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`);\n            }\n            else {\n                const typedError = error;\n                this.logger.error(`A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`);\n            }\n            return null;\n        }\n        // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n        if (!match) {\n            this.logger.warning(\"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\");\n            this.logger.verbose(\"Creating custom Authority for custom domain scenario.\");\n            match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n        }\n        return match;\n    }\n    /**\n     * Helper function to determine if this host is included in the knownAuthorities config option\n     */\n    isInKnownAuthorities() {\n        const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n            return (authority &&\n                UrlString.getDomainFromUrl(authority).toLowerCase() ===\n                    this.hostnameAndPort);\n        });\n        return matches.length > 0;\n    }\n    /**\n     * helper function to populate the authority based on azureCloudOptions\n     * @param authorityString\n     * @param azureCloudOptions\n     */\n    static generateAuthority(authorityString, azureCloudOptions) {\n        let authorityAzureCloudInstance;\n        if (azureCloudOptions &&\n            azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\n            const tenant = azureCloudOptions.tenant\n                ? azureCloudOptions.tenant\n                : Constants.DEFAULT_COMMON_TENANT;\n            authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n        }\n        return authorityAzureCloudInstance\n            ? authorityAzureCloudInstance\n            : authorityString;\n    }\n    /**\n     * Creates cloud discovery metadata object from a given host\n     * @param host\n     */\n    static createCloudDiscoveryMetadataFromHost(host) {\n        return {\n            preferred_network: host,\n            preferred_cache: host,\n            aliases: [host],\n        };\n    }\n    /**\n     * helper function to generate environment from authority object\n     */\n    getPreferredCache() {\n        if (this.discoveryComplete()) {\n            return this.metadata.preferred_cache;\n        }\n        else {\n            throw createClientAuthError(endpointResolutionError);\n        }\n    }\n    /**\n     * Returns whether or not the provided host is an alias of this authority instance\n     * @param host\n     */\n    isAlias(host) {\n        return this.metadata.aliases.indexOf(host) > -1;\n    }\n    /**\n     * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\n     * @param host\n     */\n    isAliasOfKnownMicrosoftAuthority(host) {\n        return InstanceDiscoveryMetadataAliases.has(host);\n    }\n    /**\n     * Checks whether the provided host is that of a public cloud authority\n     *\n     * @param authority string\n     * @returns bool\n     */\n    static isPublicCloudAuthority(host) {\n        return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n    }\n    /**\n     * Rebuild the authority string with the region\n     *\n     * @param host string\n     * @param region string\n     */\n    static buildRegionalAuthorityString(host, region, queryString) {\n        // Create and validate a Url string object with the initial authority string\n        const authorityUrlInstance = new UrlString(host);\n        authorityUrlInstance.validateAsUri();\n        const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n        let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\n        if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n            hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n        }\n        // Include the query string portion of the url\n        const url = UrlString.constructAuthorityUriFromObject({\n            ...authorityUrlInstance.getUrlComponents(),\n            HostNameAndPort: hostNameAndPort,\n        }).urlString;\n        // Add the query string if a query string was provided\n        if (queryString)\n            return `${url}?${queryString}`;\n        return url;\n    }\n    /**\n     * Replace the endpoints in the metadata object with their regional equivalents.\n     *\n     * @param metadata OpenIdConfigResponse\n     * @param azureRegion string\n     */\n    static replaceWithRegionalInformation(metadata, azureRegion) {\n        const regionalMetadata = { ...metadata };\n        regionalMetadata.authorization_endpoint =\n            Authority.buildRegionalAuthorityString(regionalMetadata.authorization_endpoint, azureRegion);\n        regionalMetadata.token_endpoint =\n            Authority.buildRegionalAuthorityString(regionalMetadata.token_endpoint, azureRegion);\n        if (regionalMetadata.end_session_endpoint) {\n            regionalMetadata.end_session_endpoint =\n                Authority.buildRegionalAuthorityString(regionalMetadata.end_session_endpoint, azureRegion);\n        }\n        return regionalMetadata;\n    }\n    /**\n     * Transform CIAM_AUTHORIY as per the below rules:\n     * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\n     *\n     * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\n     * `ciamlogin.com` can also change in the future and we should accommodate the same\n     *\n     * @param authority\n     */\n    static transformCIAMAuthority(authority) {\n        let ciamAuthority = authority;\n        const authorityUrl = new UrlString(authority);\n        const authorityUrlComponents = authorityUrl.getUrlComponents();\n        // check if transformation is needed\n        if (authorityUrlComponents.PathSegments.length === 0 &&\n            authorityUrlComponents.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\n            const tenantIdOrDomain = authorityUrlComponents.HostNameAndPort.split(\".\")[0];\n            ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\n        }\n        return ciamAuthority;\n    }\n}\n// Reserved tenant domain names that will not be replaced with tenant id\nAuthority.reservedTenantDomains = new Set([\n    \"{tenant}\",\n    \"{tenantid}\",\n    AADAuthorityConstants.COMMON,\n    AADAuthorityConstants.CONSUMERS,\n    AADAuthorityConstants.ORGANIZATIONS,\n]);\n/**\n * Extract tenantId from authority\n */\nfunction getTenantFromAuthorityString(authority) {\n    const authorityUrl = new UrlString(authority);\n    const authorityUrlComponents = authorityUrl.getUrlComponents();\n    /**\n     * For credential matching purposes, tenantId is the last path segment of the authority URL:\n     *  AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\n     *  B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\n     *  tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\n     */\n    const tenantId = authorityUrlComponents.PathSegments.slice(-1)[0].toLowerCase();\n    switch (tenantId) {\n        case AADAuthorityConstants.COMMON:\n        case AADAuthorityConstants.ORGANIZATIONS:\n        case AADAuthorityConstants.CONSUMERS:\n            return undefined;\n        default:\n            return tenantId;\n    }\n}\nfunction formatAuthorityUri(authorityUri) {\n    return authorityUri.endsWith(Constants.FORWARD_SLASH)\n        ? authorityUri\n        : `${authorityUri}${Constants.FORWARD_SLASH}`;\n}\nfunction buildStaticAuthorityOptions(authOptions) {\n    const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\n    let cloudDiscoveryMetadata = undefined;\n    if (rawCloudDiscoveryMetadata) {\n        try {\n            cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\n        }\n        catch (e) {\n            throw createClientConfigurationError(invalidCloudDiscoveryMetadata);\n        }\n    }\n    return {\n        canonicalAuthority: authOptions.authority\n            ? formatAuthorityUri(authOptions.authority)\n            : undefined,\n        knownAuthorities: authOptions.knownAuthorities,\n        cloudDiscoveryMetadata: cloudDiscoveryMetadata,\n    };\n}\n\nexport { Authority, buildStaticAuthorityOptions, formatAuthorityUri, getTenantFromAuthorityString };\n//# sourceMappingURL=Authority.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Authority, formatAuthorityUri } from './Authority.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { endpointResolutionError } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n * @internal\n */\nasync function createDiscoveredInstance(authorityUri, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient) {\n    performanceClient?.addQueueMeasurement(PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance, correlationId);\n    const authorityUriFinal = Authority.transformCIAMAuthority(formatAuthorityUri(authorityUri));\n    // Initialize authority and perform discovery endpoint check.\n    const acquireTokenAuthority = new Authority(authorityUriFinal, networkClient, cacheManager, authorityOptions, logger, correlationId, performanceClient);\n    try {\n        await invokeAsync(acquireTokenAuthority.resolveEndpointsAsync.bind(acquireTokenAuthority), PerformanceEvents.AuthorityResolveEndpointsAsync, logger, performanceClient, correlationId)();\n        return acquireTokenAuthority;\n    }\n    catch (e) {\n        throw createClientAuthError(endpointResolutionError);\n    }\n}\n\nexport { createDiscoveredInstance };\n//# sourceMappingURL=AuthorityFactory.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.mjs';\nimport { NetworkManager } from '../network/NetworkManager.mjs';\nimport { Logger } from '../logger/Logger.mjs';\nimport { HeaderNames, Constants } from '../utils/Constants.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { createDiscoveredInstance } from '../authority/AuthorityFactory.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n * @internal\n */\nclass BaseClient {\n    constructor(configuration, performanceClient) {\n        // Set the configuration\n        this.config = buildClientConfiguration(configuration);\n        // Initialize the logger\n        this.logger = new Logger(this.config.loggerOptions, name, version);\n        // Initialize crypto\n        this.cryptoUtils = this.config.cryptoInterface;\n        // Initialize storage interface\n        this.cacheManager = this.config.storageInterface;\n        // Set the network interface\n        this.networkClient = this.config.networkInterface;\n        // Set the NetworkManager\n        this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\n        // Set TelemetryManager\n        this.serverTelemetryManager = this.config.serverTelemetryManager;\n        // set Authority\n        this.authority = this.config.authOptions.authority;\n        // set performance telemetry client\n        this.performanceClient = performanceClient;\n    }\n    /**\n     * Creates default headers for requests to token endpoint\n     */\n    createTokenRequestHeaders(ccsCred) {\n        const headers = {};\n        headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n        if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n            switch (ccsCred.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n                        headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\n                            e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\n                    break;\n            }\n        }\n        return headers;\n    }\n    /**\n     * Http post to token endpoint\n     * @param tokenEndpoint\n     * @param queryString\n     * @param headers\n     * @param thumbprint\n     */\n    async executePostToTokenEndpoint(tokenEndpoint, queryString, headers, thumbprint, correlationId, queuedEvent) {\n        if (queuedEvent) {\n            this.performanceClient?.addQueueMeasurement(queuedEvent, correlationId);\n        }\n        const response = await this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers });\n        this.performanceClient?.addFields({\n            refreshTokenSize: response.body.refresh_token?.length || 0,\n            httpVerToken: response.headers?.[HeaderNames.X_MS_HTTP_VERSION] || \"\",\n        }, correlationId);\n        if (this.config.serverTelemetryManager &&\n            response.status < 500 &&\n            response.status !== 429) {\n            // Telemetry data successfully logged by server, clear Telemetry cache\n            this.config.serverTelemetryManager.clearTelemetryCache();\n        }\n        return response;\n    }\n    /**\n     * Updates the authority object of the client. Endpoint discovery must be completed.\n     * @param updatedAuthority\n     */\n    async updateAuthority(cloudInstanceHostname, correlationId) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.UpdateTokenEndpointAuthority, correlationId);\n        const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\n        const cloudInstanceAuthority = await createDiscoveredInstance(cloudInstanceAuthorityUri, this.networkClient, this.cacheManager, this.authority.options, this.logger, correlationId, this.performanceClient);\n        this.authority = cloudInstanceAuthority;\n    }\n    /**\n     * Creates query string for the /token request\n     * @param request\n     */\n    createTokenQueryParameters(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        if (request.tokenQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n        }\n        return parameterBuilder.createQueryString();\n    }\n}\n\nexport { BaseClient };\n//# sourceMappingURL=BaseClient.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n// Codes defined by MSAL\nconst noTokensFound = \"no_tokens_found\";\nconst nativeAccountUnavailable = \"native_account_unavailable\";\nconst refreshTokenExpired = \"refresh_token_expired\";\n// Codes potentially returned by server\nconst interactionRequired = \"interaction_required\";\nconst consentRequired = \"consent_required\";\nconst loginRequired = \"login_required\";\nconst badToken = \"bad_token\";\n\nexport { badToken, consentRequired, interactionRequired, loginRequired, nativeAccountUnavailable, noTokensFound, refreshTokenExpired };\n//# sourceMappingURL=InteractionRequiredAuthErrorCodes.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants } from '../utils/Constants.mjs';\nimport { AuthError } from './AuthError.mjs';\nimport { noTokensFound, nativeAccountUnavailable, badToken, refreshTokenExpired, interactionRequired, consentRequired, loginRequired } from './InteractionRequiredAuthErrorCodes.mjs';\nimport * as InteractionRequiredAuthErrorCodes from './InteractionRequiredAuthErrorCodes.mjs';\nexport { InteractionRequiredAuthErrorCodes };\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nconst InteractionRequiredServerErrorMessage = [\n    interactionRequired,\n    consentRequired,\n    loginRequired,\n    badToken,\n];\nconst InteractionRequiredAuthSubErrorMessage = [\n    \"message_only\",\n    \"additional_action\",\n    \"basic_action\",\n    \"user_password_expired\",\n    \"consent_required\",\n    \"bad_token\",\n];\nconst InteractionRequiredAuthErrorMessages = {\n    [noTokensFound]: \"No refresh token found in the cache. Please sign-in.\",\n    [nativeAccountUnavailable]: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\n    [refreshTokenExpired]: \"Refresh token has expired.\",\n    [badToken]: \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\n};\n/**\n * Interaction required errors defined by the SDK\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\n */\nconst InteractionRequiredAuthErrorMessage = {\n    noTokensFoundError: {\n        code: noTokensFound,\n        desc: InteractionRequiredAuthErrorMessages[noTokensFound],\n    },\n    native_account_unavailable: {\n        code: nativeAccountUnavailable,\n        desc: InteractionRequiredAuthErrorMessages[nativeAccountUnavailable],\n    },\n    bad_token: {\n        code: badToken,\n        desc: InteractionRequiredAuthErrorMessages[badToken],\n    },\n};\n/**\n * Error thrown when user interaction is required.\n */\nclass InteractionRequiredAuthError extends AuthError {\n    constructor(errorCode, errorMessage, subError, timestamp, traceId, correlationId, claims) {\n        super(errorCode, errorMessage, subError);\n        Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n        this.timestamp = timestamp || Constants.EMPTY_STRING;\n        this.traceId = traceId || Constants.EMPTY_STRING;\n        this.correlationId = correlationId || Constants.EMPTY_STRING;\n        this.claims = claims || Constants.EMPTY_STRING;\n        this.name = \"InteractionRequiredAuthError\";\n    }\n}\n/**\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\n * @param errorCode\n * @param errorString\n * @param subError\n */\nfunction isInteractionRequiredError(errorCode, errorString, subError) {\n    const isInteractionRequiredErrorCode = !!errorCode &&\n        InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n    const isInteractionRequiredSubError = !!subError &&\n        InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n    const isInteractionRequiredErrorDesc = !!errorString &&\n        InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n            return errorString.indexOf(irErrorCode) > -1;\n        });\n    return (isInteractionRequiredErrorCode ||\n        isInteractionRequiredErrorDesc ||\n        isInteractionRequiredSubError);\n}\n/**\n * Creates an InteractionRequiredAuthError\n */\nfunction createInteractionRequiredAuthError(errorCode) {\n    return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);\n}\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage, createInteractionRequiredAuthError, isInteractionRequiredError };\n//# sourceMappingURL=InteractionRequiredAuthError.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass CacheRecord {\n    constructor(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\n        this.account = accountEntity || null;\n        this.idToken = idTokenEntity || null;\n        this.accessToken = accessTokenEntity || null;\n        this.refreshToken = refreshTokenEntity || null;\n        this.appMetadata = appMetadataEntity || null;\n    }\n}\n\nexport { CacheRecord };\n//# sourceMappingURL=CacheRecord.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { Constants } from './Constants.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { noCryptoObject, invalidState } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nclass ProtocolUtils {\n    /**\n     * Appends user state with random guid, or returns random guid.\n     * @param userState\n     * @param randomGuid\n     */\n    static setRequestState(cryptoObj, userState, meta) {\n        const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\n        return userState\n            ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\n            : libraryState;\n    }\n    /**\n     * Generates the state value used by the common library.\n     * @param randomGuid\n     * @param cryptoObj\n     */\n    static generateLibraryState(cryptoObj, meta) {\n        if (!cryptoObj) {\n            throw createClientAuthError(noCryptoObject);\n        }\n        // Create a state object containing a unique id and the timestamp of the request creation\n        const stateObj = {\n            id: cryptoObj.createNewGuid(),\n        };\n        if (meta) {\n            stateObj.meta = meta;\n        }\n        const stateString = JSON.stringify(stateObj);\n        return cryptoObj.base64Encode(stateString);\n    }\n    /**\n     * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n     * @param state\n     * @param cryptoObj\n     */\n    static parseRequestState(cryptoObj, state) {\n        if (!cryptoObj) {\n            throw createClientAuthError(noCryptoObject);\n        }\n        if (!state) {\n            throw createClientAuthError(invalidState);\n        }\n        try {\n            // Split the state between library state and user passed state and decode them separately\n            const splitState = state.split(Constants.RESOURCE_DELIM);\n            const libraryState = splitState[0];\n            const userState = splitState.length > 1\n                ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\n                : Constants.EMPTY_STRING;\n            const libraryStateString = cryptoObj.base64Decode(libraryState);\n            const libraryStateObj = JSON.parse(libraryStateString);\n            return {\n                userRequestState: userState || Constants.EMPTY_STRING,\n                libraryState: libraryStateObj,\n            };\n        }\n        catch (e) {\n            throw createClientAuthError(invalidState);\n        }\n    }\n}\n\nexport { ProtocolUtils };\n//# sourceMappingURL=ProtocolUtils.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { TimeUtils } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst KeyLocation = {\n    SW: \"sw\",\n    UHW: \"uhw\",\n};\n/** @internal */\nclass PopTokenGenerator {\n    constructor(cryptoUtils, performanceClient) {\n        this.cryptoUtils = cryptoUtils;\n        this.performanceClient = performanceClient;\n    }\n    /**\n     * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n     * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n     * @param request\n     * @returns\n     */\n    async generateCnf(request, logger) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateCnf, request.correlationId);\n        const reqCnf = await invokeAsync(this.generateKid.bind(this), PerformanceEvents.PopTokenGenerateCnf, logger, this.performanceClient, request.correlationId)(request);\n        const reqCnfString = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\n        return {\n            kid: reqCnf.kid,\n            reqCnfString,\n            reqCnfHash: await this.cryptoUtils.hashString(reqCnfString),\n        };\n    }\n    /**\n     * Generates key_id for a SHR token request\n     * @param request\n     * @returns\n     */\n    async generateKid(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.PopTokenGenerateKid, request.correlationId);\n        const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\n        return {\n            kid: kidThumbprint,\n            xms_ksl: KeyLocation.SW,\n        };\n    }\n    /**\n     * Signs the POP access_token with the local generated key-pair\n     * @param accessToken\n     * @param request\n     * @returns\n     */\n    async signPopToken(accessToken, keyId, request) {\n        return this.signPayload(accessToken, keyId, request);\n    }\n    /**\n     * Utility function to generate the signed JWT for an access_token\n     * @param payload\n     * @param kid\n     * @param request\n     * @param claims\n     * @returns\n     */\n    async signPayload(payload, keyId, request, claims) {\n        // Deconstruct request to extract SHR parameters\n        const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, shrOptions, } = request;\n        const resourceUrlString = resourceRequestUri\n            ? new UrlString(resourceRequestUri)\n            : undefined;\n        const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n        return this.cryptoUtils.signJwt({\n            at: payload,\n            ts: TimeUtils.nowSeconds(),\n            m: resourceRequestMethod?.toUpperCase(),\n            u: resourceUrlComponents?.HostNameAndPort,\n            nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n            p: resourceUrlComponents?.AbsolutePath,\n            q: resourceUrlComponents?.QueryString\n                ? [[], resourceUrlComponents.QueryString]\n                : undefined,\n            client_claims: shrClaims || undefined,\n            ...claims,\n        }, keyId, shrOptions, request.correlationId);\n    }\n}\n\nexport { PopTokenGenerator };\n//# sourceMappingURL=PopTokenGenerator.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */ class TokenCacheContext {\n    constructor(tokenCache, hasChanged) {\n        this.cache = tokenCache;\n        this.hasChanged = hasChanged;\n    }\n    /**\n     * boolean which indicates the changes in cache\n     */\n    get cacheHasChanged() {\n        return this.hasChanged;\n    }\n    /**\n     * function to retrieve the token cache\n     */\n    get tokenCache() {\n        return this.cache;\n    }\n}\n\nexport { TokenCacheContext };\n//# sourceMappingURL=TokenCacheContext.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { ScopeSet } from '../request/ScopeSet.mjs';\nimport { AccountEntity } from '../cache/entities/AccountEntity.mjs';\nimport { isInteractionRequiredError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { CacheRecord } from '../cache/entities/CacheRecord.mjs';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.mjs';\nimport { HttpStatus, Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { getTenantIdFromIdTokenClaims } from '../account/TokenClaims.mjs';\nimport { updateAccountTenantProfileData, buildTenantProfileFromIdTokenClaims } from '../account/AccountInfo.mjs';\nimport { createAccessTokenEntity, createRefreshTokenEntity, createIdTokenEntity } from '../cache/utils/CacheHelpers.mjs';\nimport { stateNotFound, invalidState, stateMismatch, nonceMismatch, authTimeNotFound, invalidCacheEnvironment, keyIdMissing } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Class that handles response parsing.\n * @internal\n */\nclass ResponseHandler {\n    constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {\n        this.clientId = clientId;\n        this.cacheStorage = cacheStorage;\n        this.cryptoObj = cryptoObj;\n        this.logger = logger;\n        this.serializableCache = serializableCache;\n        this.persistencePlugin = persistencePlugin;\n        this.performanceClient = performanceClient;\n    }\n    /**\n     * Function which validates server authorization code response.\n     * @param serverResponseHash\n     * @param requestState\n     * @param cryptoObj\n     */\n    validateServerAuthorizationCodeResponse(serverResponse, requestState) {\n        if (!serverResponse.state || !requestState) {\n            throw serverResponse.state\n                ? createClientAuthError(stateNotFound, \"Cached State\")\n                : createClientAuthError(stateNotFound, \"Server State\");\n        }\n        let decodedServerResponseState;\n        let decodedRequestState;\n        try {\n            decodedServerResponseState = decodeURIComponent(serverResponse.state);\n        }\n        catch (e) {\n            throw createClientAuthError(invalidState, serverResponse.state);\n        }\n        try {\n            decodedRequestState = decodeURIComponent(requestState);\n        }\n        catch (e) {\n            throw createClientAuthError(invalidState, serverResponse.state);\n        }\n        if (decodedServerResponseState !== decodedRequestState) {\n            throw createClientAuthError(stateMismatch);\n        }\n        // Check for error\n        if (serverResponse.error ||\n            serverResponse.error_description ||\n            serverResponse.suberror) {\n            if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\n                throw new InteractionRequiredAuthError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || \"\", serverResponse.trace_id || \"\", serverResponse.correlation_id || \"\", serverResponse.claims || \"\");\n            }\n            throw new ServerError(serverResponse.error || \"\", serverResponse.error_description, serverResponse.suberror);\n        }\n    }\n    /**\n     * Function which validates server authorization token response.\n     * @param serverResponse\n     * @param refreshAccessToken\n     */\n    validateTokenResponse(serverResponse, refreshAccessToken) {\n        // Check for error\n        if (serverResponse.error ||\n            serverResponse.error_description ||\n            serverResponse.suberror) {\n            const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\n            const serverError = new ServerError(serverResponse.error, errString, serverResponse.suberror);\n            // check if 500 error\n            if (refreshAccessToken &&\n                serverResponse.status &&\n                serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\n                serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END) {\n                this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`);\n                // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n                return;\n                // check if 400 error\n            }\n            else if (refreshAccessToken &&\n                serverResponse.status &&\n                serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\n                serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END) {\n                this.logger.warning(`executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`);\n                // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n                return;\n            }\n            if (isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\n                throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING);\n            }\n            throw serverError;\n        }\n    }\n    /**\n     * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n     * @param serverTokenResponse\n     * @param authority\n     */\n    async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);\n        // create an idToken object (not entity)\n        let idTokenClaims;\n        if (serverTokenResponse.id_token) {\n            idTokenClaims = extractTokenClaims(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj.base64Decode);\n            // token nonce check (TODO: Add a warning if no nonce is given?)\n            if (authCodePayload && authCodePayload.nonce) {\n                if (idTokenClaims.nonce !== authCodePayload.nonce) {\n                    throw createClientAuthError(nonceMismatch);\n                }\n            }\n            // token max_age check\n            if (request.maxAge || request.maxAge === 0) {\n                const authTime = idTokenClaims.auth_time;\n                if (!authTime) {\n                    throw createClientAuthError(authTimeNotFound);\n                }\n                checkMaxAge(authTime, request.maxAge);\n            }\n        }\n        // generate homeAccountId\n        this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);\n        // save the response tokens\n        let requestStateObj;\n        if (!!authCodePayload && !!authCodePayload.state) {\n            requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\n        }\n        // Add keyId from request to serverTokenResponse if defined\n        serverTokenResponse.key_id =\n            serverTokenResponse.key_id || request.sshKid || undefined;\n        const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload);\n        let cacheContext;\n        try {\n            if (this.persistencePlugin && this.serializableCache) {\n                this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\n                cacheContext = new TokenCacheContext(this.serializableCache, true);\n                await this.persistencePlugin.beforeCacheAccess(cacheContext);\n            }\n            /*\n             * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n             * If not present, we should return null, as it's the case that another application called removeAccount in between\n             * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\n             * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n             */\n            if (handlingRefreshTokenResponse &&\n                !forceCacheRefreshTokenResponse &&\n                cacheRecord.account) {\n                const key = cacheRecord.account.generateAccountKey();\n                const account = this.cacheStorage.getAccount(key, this.logger);\n                if (!account) {\n                    this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\n                    return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);\n                }\n            }\n            await this.cacheStorage.saveCacheRecord(cacheRecord, request.storeInCache);\n        }\n        finally {\n            if (this.persistencePlugin &&\n                this.serializableCache &&\n                cacheContext) {\n                this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\n                await this.persistencePlugin.afterCacheAccess(cacheContext);\n            }\n        }\n        return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, serverTokenResponse, serverRequestId);\n    }\n    /**\n     * Generates CacheRecord\n     * @param serverTokenResponse\n     * @param idTokenObj\n     * @param authority\n     */\n    generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenClaims, userAssertionHash, authCodePayload) {\n        const env = authority.getPreferredCache();\n        if (!env) {\n            throw createClientAuthError(invalidCacheEnvironment);\n        }\n        const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\n        // IdToken: non AAD scenarios can have empty realm\n        let cachedIdToken;\n        let cachedAccount;\n        if (serverTokenResponse.id_token && !!idTokenClaims) {\n            cachedIdToken = createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token, this.clientId, claimsTenantId || \"\");\n            cachedAccount = buildAccountToCache(this.cacheStorage, authority, this.homeAccountIdentifier, idTokenClaims, this.cryptoObj.base64Decode, serverTokenResponse.client_info, env, claimsTenantId, authCodePayload, undefined, // nativeAccountId\n            this.logger);\n        }\n        // AccessToken\n        let cachedAccessToken = null;\n        if (serverTokenResponse.access_token) {\n            // If scopes not returned in server response, use request scopes\n            const responseScopes = serverTokenResponse.scope\n                ? ScopeSet.fromString(serverTokenResponse.scope)\n                : new ScopeSet(request.scopes || []);\n            /*\n             * Use timestamp calculated before request\n             * Server may return timestamps as strings, parse to numbers if so.\n             */\n            const expiresIn = (typeof serverTokenResponse.expires_in === \"string\"\n                ? parseInt(serverTokenResponse.expires_in, 10)\n                : serverTokenResponse.expires_in) || 0;\n            const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\"\n                ? parseInt(serverTokenResponse.ext_expires_in, 10)\n                : serverTokenResponse.ext_expires_in) || 0;\n            const refreshIn = (typeof serverTokenResponse.refresh_in === \"string\"\n                ? parseInt(serverTokenResponse.refresh_in, 10)\n                : serverTokenResponse.refresh_in) || undefined;\n            const tokenExpirationSeconds = reqTimestamp + expiresIn;\n            const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\n            const refreshOnSeconds = refreshIn && refreshIn > 0\n                ? reqTimestamp + refreshIn\n                : undefined;\n            // non AAD scenarios can have empty realm\n            cachedAccessToken = createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token, this.clientId, claimsTenantId || authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj.base64Decode, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\n        }\n        // refreshToken\n        let cachedRefreshToken = null;\n        if (serverTokenResponse.refresh_token) {\n            let rtExpiresOn;\n            if (serverTokenResponse.refresh_token_expires_in) {\n                const rtExpiresIn = typeof serverTokenResponse.refresh_token_expires_in ===\n                    \"string\"\n                    ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)\n                    : serverTokenResponse.refresh_token_expires_in;\n                rtExpiresOn = reqTimestamp + rtExpiresIn;\n            }\n            cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);\n        }\n        // appMetadata\n        let cachedAppMetadata = null;\n        if (serverTokenResponse.foci) {\n            cachedAppMetadata = {\n                clientId: this.clientId,\n                environment: env,\n                familyId: serverTokenResponse.foci,\n            };\n        }\n        return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\n    }\n    /**\n     * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n     *\n     * Optionally takes a state string that is set as-is in the response.\n     *\n     * @param cacheRecord\n     * @param idTokenObj\n     * @param fromTokenCache\n     * @param stateString\n     */\n    static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenClaims, requestState, serverTokenResponse, requestId) {\n        let accessToken = Constants.EMPTY_STRING;\n        let responseScopes = [];\n        let expiresOn = null;\n        let extExpiresOn;\n        let refreshOn;\n        let familyId = Constants.EMPTY_STRING;\n        if (cacheRecord.accessToken) {\n            if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\n                const popTokenGenerator = new PopTokenGenerator(cryptoObj);\n                const { secret, keyId } = cacheRecord.accessToken;\n                if (!keyId) {\n                    throw createClientAuthError(keyIdMissing);\n                }\n                accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\n            }\n            else {\n                accessToken = cacheRecord.accessToken.secret;\n            }\n            responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\n            expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\n            extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\n            if (cacheRecord.accessToken.refreshOn) {\n                refreshOn = new Date(Number(cacheRecord.accessToken.refreshOn) * 1000);\n            }\n        }\n        if (cacheRecord.appMetadata) {\n            familyId =\n                cacheRecord.appMetadata.familyId === THE_FAMILY_ID\n                    ? THE_FAMILY_ID\n                    : \"\";\n        }\n        const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\n        const tid = idTokenClaims?.tid || \"\";\n        // for hybrid + native bridge enablement, send back the native account Id\n        if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\n            cacheRecord.account.nativeAccountId =\n                serverTokenResponse?.spa_accountid;\n        }\n        const accountInfo = cacheRecord.account\n            ? updateAccountTenantProfileData(cacheRecord.account.getAccountInfo(), undefined, // tenantProfile optional\n            idTokenClaims)\n            : null;\n        return {\n            authority: authority.canonicalAuthority,\n            uniqueId: uid,\n            tenantId: tid,\n            scopes: responseScopes,\n            account: accountInfo,\n            idToken: cacheRecord?.idToken?.secret || \"\",\n            idTokenClaims: idTokenClaims || {},\n            accessToken: accessToken,\n            fromCache: fromTokenCache,\n            expiresOn: expiresOn,\n            extExpiresOn: extExpiresOn,\n            refreshOn: refreshOn,\n            correlationId: request.correlationId,\n            requestId: requestId || Constants.EMPTY_STRING,\n            familyId: familyId,\n            tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n            state: requestState\n                ? requestState.userRequestState\n                : Constants.EMPTY_STRING,\n            cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||\n                Constants.EMPTY_STRING,\n            msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n            code: serverTokenResponse?.spa_code,\n            fromNativeBroker: false,\n        };\n    }\n}\nfunction buildAccountToCache(cacheStorage, authority, homeAccountId, idTokenClaims, base64Decode, clientInfo, environment, claimsTenantId, authCodePayload, nativeAccountId, logger) {\n    logger?.verbose(\"setCachedAccount called\");\n    // Check if base account is already cached\n    const accountKeys = cacheStorage.getAccountKeys();\n    const baseAccountKey = accountKeys.find((accountKey) => {\n        return accountKey.startsWith(homeAccountId);\n    });\n    let cachedAccount = null;\n    if (baseAccountKey) {\n        cachedAccount = cacheStorage.getAccount(baseAccountKey, logger);\n    }\n    const baseAccount = cachedAccount ||\n        AccountEntity.createAccount({\n            homeAccountId,\n            idTokenClaims,\n            clientInfo,\n            environment,\n            cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\n            msGraphHost: authCodePayload?.msgraph_host,\n            nativeAccountId: nativeAccountId,\n        }, authority, base64Decode);\n    const tenantProfiles = baseAccount.tenantProfiles || [];\n    if (claimsTenantId &&\n        !tenantProfiles.find((tenantProfile) => {\n            return tenantProfile.tenantId === claimsTenantId;\n        })) {\n        const newTenantProfile = buildTenantProfileFromIdTokenClaims(homeAccountId, idTokenClaims);\n        tenantProfiles.push(newTenantProfile);\n    }\n    baseAccount.tenantProfiles = tenantProfiles;\n    return baseAccount;\n}\n\nexport { ResponseHandler, buildAccountToCache };\n//# sourceMappingURL=ResponseHandler.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { Separators, GrantType, AuthenticationScheme, PromptValue, HeaderNames } from '../utils/Constants.mjs';\nimport { CLIENT_ID, RETURN_SPA_CODE } from '../constants/AADServerParamKeys.mjs';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { TimeUtils } from '../utils/TimeUtils.mjs';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { RequestValidator } from '../request/RequestValidator.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { requestCannotBeMade, authorizationCodeMissingFromServerResponse } from '../error/ClientAuthErrorCodes.mjs';\nimport { logoutRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Oauth2.0 Authorization Code client\n * @internal\n */\nclass AuthorizationCodeClient extends BaseClient {\n    constructor(configuration, performanceClient) {\n        super(configuration, performanceClient);\n        // Flag to indicate if client is for hybrid spa auth code redemption\n        this.includeRedirectUri = true;\n        this.oidcDefaultScopes =\n            this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\n    }\n    /**\n     * Creates the URL of the authorization request letting the user input credentials and consent to the\n     * application. The URL target the /authorize endpoint of the authority configured in the\n     * application object.\n     *\n     * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n     * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n     * acquireToken(AuthorizationCodeRequest)\n     * @param request\n     */\n    async getAuthCodeUrl(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.GetAuthCodeUrl, request.correlationId);\n        const queryString = await invokeAsync(this.createAuthCodeUrlQueryString.bind(this), PerformanceEvents.AuthClientCreateQueryString, this.logger, this.performanceClient, request.correlationId)(request);\n        return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\n    }\n    /**\n     * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n     * authorization_code_grant\n     * @param request\n     */\n    async acquireToken(request, authCodePayload) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);\n        if (!request.code) {\n            throw createClientAuthError(requestCannotBeMade);\n        }\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.AuthClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(this.authority, request);\n        // Retrieve requestId from response headers\n        const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);\n        // Validate response. This function throws a server error if an error is returned by the server.\n        responseHandler.validateTokenResponse(response.body);\n        return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);\n    }\n    /**\n     * Handles the hash fragment response from public client code request. Returns a code response used by\n     * the client to exchange for a token in acquireToken.\n     * @param hashFragment\n     */\n    handleFragmentResponse(serverParams, cachedState) {\n        // Handle responses.\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\n        // Get code response\n        responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState);\n        // throw when there is no auth code in the response\n        if (!serverParams.code) {\n            throw createClientAuthError(authorizationCodeMissingFromServerResponse);\n        }\n        return serverParams;\n    }\n    /**\n     * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n     * Default behaviour is to redirect the user to `window.location.href`.\n     * @param authorityUri\n     */\n    getLogoutUri(logoutRequest) {\n        // Throw error if logoutRequest is null/undefined\n        if (!logoutRequest) {\n            throw createClientConfigurationError(logoutRequestEmpty);\n        }\n        const queryString = this.createLogoutUrlQueryString(logoutRequest);\n        // Construct logout URI\n        return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\n    }\n    /**\n     * Executes POST request to token endpoint\n     * @param authority\n     * @param request\n     */\n    async executeTokenRequest(authority, request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientExecuteTokenRequest, request.correlationId);\n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.AuthClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\n        let ccsCredential = undefined;\n        if (request.clientInfo) {\n            try {\n                const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\n                ccsCredential = {\n                    credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n                    type: CcsCredentialType.HOME_ACCOUNT_ID,\n                };\n            }\n            catch (e) {\n                this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n            }\n        }\n        const headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\n        const thumbprint = {\n            clientId: request.tokenBodyParameters?.clientId ||\n                this.config.authOptions.clientId,\n            authority: authority.canonicalAuthority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint);\n    }\n    /**\n     * Generates a map for all the params to be sent to the service\n     * @param request\n     */\n    async createTokenRequestBody(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateTokenRequestBody, request.correlationId);\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(request.tokenBodyParameters?.[CLIENT_ID] ||\n            this.config.authOptions.clientId);\n        /*\n         * For hybrid spa flow, there will be a code but no verifier\n         * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n         */\n        if (!this.includeRedirectUri) {\n            // Just validate\n            RequestValidator.validateRedirectUri(request.redirectUri);\n        }\n        else {\n            // Validate and include redirect uri\n            parameterBuilder.addRedirectUri(request.redirectUri);\n        }\n        // Add scope array, parameter builder will add default scopes and dedupe\n        parameterBuilder.addScopes(request.scopes, true, this.oidcDefaultScopes);\n        // add code: user set, not validated\n        parameterBuilder.addAuthorizationCode(request.code);\n        // Add library metadata\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n        // add code_verifier if passed\n        if (request.codeVerifier) {\n            parameterBuilder.addCodeVerifier(request.codeVerifier);\n        }\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.clientAssertion;\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n        parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\n        parameterBuilder.addClientInfo();\n        if (request.authenticationScheme === AuthenticationScheme.POP) {\n            const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\n            const reqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\n            // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n            parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n        }\n        else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n            if (request.sshJwk) {\n                parameterBuilder.addSshJwk(request.sshJwk);\n            }\n            else {\n                throw createClientConfigurationError(missingSshJwk);\n            }\n        }\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n        if (!StringUtils.isEmptyObj(request.claims) ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        let ccsCred = undefined;\n        if (request.clientInfo) {\n            try {\n                const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils.base64Decode);\n                ccsCred = {\n                    credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n                    type: CcsCredentialType.HOME_ACCOUNT_ID,\n                };\n            }\n            catch (e) {\n                this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n            }\n        }\n        else {\n            ccsCred = request.ccsCredential;\n        }\n        // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n        if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n            switch (ccsCred.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\n                            e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    parameterBuilder.addCcsUpn(ccsCred.credential);\n                    break;\n            }\n        }\n        if (request.tokenBodyParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\n        }\n        // Add hybrid spa parameters if not already provided\n        if (request.enableSpaAuthorizationCode &&\n            (!request.tokenBodyParameters ||\n                !request.tokenBodyParameters[RETURN_SPA_CODE])) {\n            parameterBuilder.addExtraQueryParameters({\n                [RETURN_SPA_CODE]: \"1\",\n            });\n        }\n        return parameterBuilder.createQueryString();\n    }\n    /**\n     * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\n     * @param request\n     */\n    async createAuthCodeUrlQueryString(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientCreateQueryString, request.correlationId);\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(request.extraQueryParameters?.[CLIENT_ID] ||\n            this.config.authOptions.clientId);\n        const requestScopes = [\n            ...(request.scopes || []),\n            ...(request.extraScopesToConsent || []),\n        ];\n        parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes);\n        // validate the redirectUri (to be a non null value)\n        parameterBuilder.addRedirectUri(request.redirectUri);\n        // generate the correlationId if not set by the user and add\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n        // add response_mode. If not passed in it defaults to query.\n        parameterBuilder.addResponseMode(request.responseMode);\n        // add response_type = code\n        parameterBuilder.addResponseTypeCode();\n        // add library info parameters\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        if (!isOidcProtocolMode(this.config)) {\n            parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        }\n        // add client_info=1\n        parameterBuilder.addClientInfo();\n        if (request.codeChallenge && request.codeChallengeMethod) {\n            parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\n        }\n        if (request.prompt) {\n            parameterBuilder.addPrompt(request.prompt);\n        }\n        if (request.domainHint) {\n            parameterBuilder.addDomainHint(request.domainHint);\n        }\n        // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\n        if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n            // AAD will throw if prompt=select_account is passed with an account hint\n            if (request.sid && request.prompt === PromptValue.NONE) {\n                // SessionID is only used in silent calls\n                this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\n                parameterBuilder.addSid(request.sid);\n            }\n            else if (request.account) {\n                const accountSid = this.extractAccountSid(request.account);\n                const accountLoginHintClaim = this.extractLoginHint(request.account);\n                // If login_hint claim is present, use it over sid/username\n                if (accountLoginHintClaim) {\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\n                    parameterBuilder.addLoginHint(accountLoginHintClaim);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n                    }\n                }\n                else if (accountSid && request.prompt === PromptValue.NONE) {\n                    /*\n                     * If account and loginHint are provided, we will check account first for sid before adding loginHint\n                     * SessionId is only used in silent calls\n                     */\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\n                    parameterBuilder.addSid(accountSid);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n                    }\n                }\n                else if (request.loginHint) {\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\n                    parameterBuilder.addLoginHint(request.loginHint);\n                    parameterBuilder.addCcsUpn(request.loginHint);\n                }\n                else if (request.account.username) {\n                    // Fallback to account username if provided\n                    this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\n                    parameterBuilder.addLoginHint(request.account.username);\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n                    }\n                }\n            }\n            else if (request.loginHint) {\n                this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\n                parameterBuilder.addLoginHint(request.loginHint);\n                parameterBuilder.addCcsUpn(request.loginHint);\n            }\n        }\n        else {\n            this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\n        }\n        if (request.nonce) {\n            parameterBuilder.addNonce(request.nonce);\n        }\n        if (request.state) {\n            parameterBuilder.addState(request.state);\n        }\n        if (request.claims ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n        if (request.nativeBroker) {\n            // signal ests that this is a WAM call\n            parameterBuilder.addNativeBroker();\n            // pass the req_cnf for POP\n            if (request.authenticationScheme === AuthenticationScheme.POP) {\n                const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n                // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n                const reqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\n                parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\n            }\n        }\n        return parameterBuilder.createQueryString();\n    }\n    /**\n     * This API validates the `EndSessionRequest` and creates a URL\n     * @param request\n     */\n    createLogoutUrlQueryString(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        if (request.postLogoutRedirectUri) {\n            parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\n        }\n        if (request.correlationId) {\n            parameterBuilder.addCorrelationId(request.correlationId);\n        }\n        if (request.idTokenHint) {\n            parameterBuilder.addIdTokenHint(request.idTokenHint);\n        }\n        if (request.state) {\n            parameterBuilder.addState(request.state);\n        }\n        if (request.logoutHint) {\n            parameterBuilder.addLogoutHint(request.logoutHint);\n        }\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n        return parameterBuilder.createQueryString();\n    }\n    /**\n     * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n     * @param account\n     */\n    extractAccountSid(account) {\n        return account.idTokenClaims?.sid || null;\n    }\n    extractLoginHint(account) {\n        return account.idTokenClaims?.login_hint || null;\n    }\n}\n\nexport { AuthorizationCodeClient };\n//# sourceMappingURL=AuthorizationCodeClient.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { isOidcProtocolMode } from '../config/ClientConfiguration.mjs';\nimport { BaseClient } from './BaseClient.mjs';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.mjs';\nimport { GrantType, AuthenticationScheme, HeaderNames, Errors } from '../utils/Constants.mjs';\nimport { CLIENT_ID } from '../constants/AADServerParamKeys.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';\nimport { createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ServerError } from '../error/ServerError.mjs';\nimport { TimeUtils } from '../utils/TimeUtils.mjs';\nimport { UrlString } from '../url/UrlString.mjs';\nimport { CcsCredentialType } from '../account/CcsCredential.mjs';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.mjs';\nimport { createInteractionRequiredAuthError, InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync, invoke } from '../utils/FunctionWrappers.mjs';\nimport { generateCredentialKey } from '../cache/utils/CacheHelpers.mjs';\nimport { tokenRequestEmpty, missingSshJwk } from '../error/ClientConfigurationErrorCodes.mjs';\nimport { noAccountInSilentRequest } from '../error/ClientAuthErrorCodes.mjs';\nimport { noTokensFound, refreshTokenExpired, badToken } from '../error/InteractionRequiredAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\n/**\n * OAuth2.0 refresh token client\n * @internal\n */\nclass RefreshTokenClient extends BaseClient {\n    constructor(configuration, performanceClient) {\n        super(configuration, performanceClient);\n    }\n    async acquireToken(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);\n        // Retrieve requestId from response headers\n        const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\n        responseHandler.validateTokenResponse(response.body);\n        return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);\n    }\n    /**\n     * Gets cached refresh token and attaches to request, then calls acquireToken API\n     * @param request\n     */\n    async acquireTokenByRefreshToken(request) {\n        // Cannot renew token if no request object is given.\n        if (!request) {\n            throw createClientConfigurationError(tokenRequestEmpty);\n        }\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);\n        // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n        if (!request.account) {\n            throw createClientAuthError(noAccountInSilentRequest);\n        }\n        // try checking if FOCI is enabled for the given application\n        const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment);\n        // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n        if (isFOCI) {\n            try {\n                return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);\n            }\n            catch (e) {\n                const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&\n                    e.errorCode ===\n                        noTokensFound;\n                const clientMismatchErrorWithFamilyRT = e instanceof ServerError &&\n                    e.errorCode === Errors.INVALID_GRANT_ERROR &&\n                    e.subError === Errors.CLIENT_MISMATCH_ERROR;\n                // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n                if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n                    return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\n                    // throw in all other cases\n                }\n                else {\n                    throw e;\n                }\n            }\n        }\n        // fall back to application refresh token acquisition\n        return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);\n    }\n    /**\n     * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n     * @param request\n     */\n    async acquireTokenWithCachedRefreshToken(request, foci) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);\n        // fetches family RT or application RT based on FOCI value\n        const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, undefined, this.performanceClient, request.correlationId);\n        if (!refreshToken) {\n            throw createInteractionRequiredAuthError(noTokensFound);\n        }\n        if (refreshToken.expiresOn &&\n            TimeUtils.isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||\n                DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {\n            throw createInteractionRequiredAuthError(refreshTokenExpired);\n        }\n        // attach cached RT size to the current measurement\n        const refreshTokenRequest = {\n            ...request,\n            refreshToken: refreshToken.secret,\n            authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\n            ccsCredential: {\n                credential: request.account.homeAccountId,\n                type: CcsCredentialType.HOME_ACCOUNT_ID,\n            },\n        };\n        try {\n            return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);\n        }\n        catch (e) {\n            if (e instanceof InteractionRequiredAuthError &&\n                e.subError === badToken) {\n                // Remove bad refresh token from cache\n                this.logger.verbose(\"acquireTokenWithRefreshToken: bad refresh token, removing from cache\");\n                const badRefreshTokenKey = generateCredentialKey(refreshToken);\n                this.cacheManager.removeRefreshToken(badRefreshTokenKey);\n            }\n            throw e;\n        }\n    }\n    /**\n     * Constructs the network message and makes a NW call to the underlying secure token service\n     * @param request\n     * @param authority\n     */\n    async executeTokenRequest(request, authority) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId);\n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        const requestBody = await invokeAsync(this.createTokenRequestBody.bind(this), PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, this.logger, this.performanceClient, request.correlationId)(request);\n        const headers = this.createTokenRequestHeaders(request.ccsCredential);\n        const thumbprint = {\n            clientId: request.tokenBodyParameters?.clientId ||\n                this.config.authOptions.clientId,\n            authority: authority.canonicalAuthority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        return invokeAsync(this.executePostToTokenEndpoint.bind(this), PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint, this.logger, this.performanceClient, request.correlationId)(endpoint, requestBody, headers, thumbprint, request.correlationId, PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint);\n    }\n    /**\n     * Helper function to create the token request body\n     * @param request\n     */\n    async createTokenRequestBody(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientCreateTokenRequestBody, request.correlationId);\n        const correlationId = request.correlationId;\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(request.tokenBodyParameters?.[CLIENT_ID] ||\n            this.config.authOptions.clientId);\n        if (request.redirectUri) {\n            parameterBuilder.addRedirectUri(request.redirectUri);\n        }\n        parameterBuilder.addScopes(request.scopes, true, this.config.authOptions.authority.options.OIDCOptions?.defaultScopes);\n        parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\n        parameterBuilder.addClientInfo();\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n        parameterBuilder.addCorrelationId(correlationId);\n        parameterBuilder.addRefreshToken(request.refreshToken);\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.clientAssertion;\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n        if (request.authenticationScheme === AuthenticationScheme.POP) {\n            const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils, this.performanceClient);\n            const reqCnfData = await invokeAsync(popTokenGenerator.generateCnf.bind(popTokenGenerator), PerformanceEvents.PopTokenGenerateCnf, this.logger, this.performanceClient, request.correlationId)(request, this.logger);\n            // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n            parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n        }\n        else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n            if (request.sshJwk) {\n                parameterBuilder.addSshJwk(request.sshJwk);\n            }\n            else {\n                throw createClientConfigurationError(missingSshJwk);\n            }\n        }\n        if (!StringUtils.isEmptyObj(request.claims) ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        if (this.config.systemOptions.preventCorsPreflight &&\n            request.ccsCredential) {\n            switch (request.ccsCredential.type) {\n                case CcsCredentialType.HOME_ACCOUNT_ID:\n                    try {\n                        const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\n                        parameterBuilder.addCcsOid(clientInfo);\n                    }\n                    catch (e) {\n                        this.logger.verbose(\"Could not parse home account ID for CCS Header: \" +\n                            e);\n                    }\n                    break;\n                case CcsCredentialType.UPN:\n                    parameterBuilder.addCcsUpn(request.ccsCredential.credential);\n                    break;\n            }\n        }\n        if (request.tokenBodyParameters) {\n            parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\n        }\n        return parameterBuilder.createQueryString();\n    }\n}\n\nexport { RefreshTokenClient };\n//# sourceMappingURL=RefreshTokenClient.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { BaseClient } from './BaseClient.mjs';\nimport { TimeUtils } from '../utils/TimeUtils.mjs';\nimport { RefreshTokenClient } from './RefreshTokenClient.mjs';\nimport { ClientAuthError, createClientAuthError } from '../error/ClientAuthError.mjs';\nimport { ResponseHandler } from '../response/ResponseHandler.mjs';\nimport { CacheOutcome } from '../utils/Constants.mjs';\nimport { StringUtils } from '../utils/StringUtils.mjs';\nimport { extractTokenClaims, checkMaxAge } from '../account/AuthToken.mjs';\nimport { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.mjs';\nimport { invokeAsync } from '../utils/FunctionWrappers.mjs';\nimport { getTenantFromAuthorityString } from '../authority/Authority.mjs';\nimport { tokenRefreshRequired, noAccountInSilentRequest, authTimeNotFound } from '../error/ClientAuthErrorCodes.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass SilentFlowClient extends BaseClient {\n    constructor(configuration, performanceClient) {\n        super(configuration, performanceClient);\n    }\n    /**\n     * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\n     * the given token and returns the renewed token\n     * @param request\n     */\n    async acquireToken(request) {\n        try {\n            const [authResponse, cacheOutcome] = await this.acquireCachedToken(request);\n            // if the token is not expired but must be refreshed; get a new one in the background\n            if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n                this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\n                // refresh the access token in the background\n                const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\n                refreshTokenClient\n                    .acquireTokenByRefreshToken(request)\n                    .catch(() => {\n                    // do nothing, this is running in the background and no action is to be taken upon success or failure\n                });\n            }\n            // return the cached token\n            return authResponse;\n        }\n        catch (e) {\n            if (e instanceof ClientAuthError &&\n                e.errorCode === tokenRefreshRequired) {\n                const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\n                return refreshTokenClient.acquireTokenByRefreshToken(request);\n            }\n            else {\n                throw e;\n            }\n        }\n    }\n    /**\n     * Retrieves token from cache or throws an error if it must be refreshed.\n     * @param request\n     */\n    async acquireCachedToken(request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientAcquireCachedToken, request.correlationId);\n        let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\n        if (request.forceRefresh ||\n            (!this.config.cacheOptions.claimsBasedCachingEnabled &&\n                !StringUtils.isEmptyObj(request.claims))) {\n            // Must refresh due to present force_refresh flag.\n            this.setCacheOutcome(CacheOutcome.FORCE_REFRESH_OR_CLAIMS, request.correlationId);\n            throw createClientAuthError(tokenRefreshRequired);\n        }\n        // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n        if (!request.account) {\n            throw createClientAuthError(noAccountInSilentRequest);\n        }\n        const requestTenantId = request.account.tenantId ||\n            getTenantFromAuthorityString(request.authority);\n        const tokenKeys = this.cacheManager.getTokenKeys();\n        const cachedAccessToken = this.cacheManager.getAccessToken(request.account, request, tokenKeys, requestTenantId, this.performanceClient, request.correlationId);\n        if (!cachedAccessToken) {\n            // must refresh due to non-existent access_token\n            this.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN, request.correlationId);\n            throw createClientAuthError(tokenRefreshRequired);\n        }\n        else if (TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) ||\n            TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\n            // must refresh due to the expires_in value\n            this.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED, request.correlationId);\n            throw createClientAuthError(tokenRefreshRequired);\n        }\n        else if (cachedAccessToken.refreshOn &&\n            TimeUtils.isTokenExpired(cachedAccessToken.refreshOn, 0)) {\n            // must refresh (in the background) due to the refresh_in value\n            lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\n            // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\n        }\n        const environment = request.authority || this.authority.getPreferredCache();\n        const cacheRecord = {\n            account: this.cacheManager.readAccountFromCache(request.account),\n            accessToken: cachedAccessToken,\n            idToken: this.cacheManager.getIdToken(request.account, tokenKeys, requestTenantId, this.performanceClient, request.correlationId),\n            refreshToken: null,\n            appMetadata: this.cacheManager.readAppMetadataFromCache(environment),\n        };\n        this.setCacheOutcome(lastCacheOutcome, request.correlationId);\n        if (this.config.serverTelemetryManager) {\n            this.config.serverTelemetryManager.incrementCacheHits();\n        }\n        return [\n            await invokeAsync(this.generateResultFromCacheRecord.bind(this), PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, this.logger, this.performanceClient, request.correlationId)(cacheRecord, request),\n            lastCacheOutcome,\n        ];\n    }\n    setCacheOutcome(cacheOutcome, correlationId) {\n        this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\n        this.performanceClient?.addFields({\n            cacheOutcome: cacheOutcome,\n        }, correlationId);\n        if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\n            this.logger.info(`Token refresh is required due to cache outcome: ${cacheOutcome}`);\n        }\n    }\n    /**\n     * Helper function to build response object from the CacheRecord\n     * @param cacheRecord\n     */\n    async generateResultFromCacheRecord(cacheRecord, request) {\n        this.performanceClient?.addQueueMeasurement(PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord, request.correlationId);\n        let idTokenClaims;\n        if (cacheRecord.idToken) {\n            idTokenClaims = extractTokenClaims(cacheRecord.idToken.secret, this.config.cryptoInterface.base64Decode);\n        }\n        // token max_age check\n        if (request.maxAge || request.maxAge === 0) {\n            const authTime = idTokenClaims?.auth_time;\n            if (!authTime) {\n                throw createClientAuthError(authTimeNotFound);\n            }\n            checkMaxAge(authTime, request.maxAge);\n        }\n        return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenClaims);\n    }\n}\n\nexport { SilentFlowClient };\n//# sourceMappingURL=SilentFlowClient.mjs.map\n","/*! @azure/msal-common v14.6.1 2024-01-23 */\n'use strict';\nimport { CacheOutcome, Constants, SERVER_TELEM_CONSTANTS, Separators } from '../../utils/Constants.mjs';\nimport { AuthError } from '../../error/AuthError.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/** @internal */\nclass ServerTelemetryManager {\n    constructor(telemetryRequest, cacheManager) {\n        this.cacheOutcome = CacheOutcome.NOT_APPLICABLE;\n        this.cacheManager = cacheManager;\n        this.apiId = telemetryRequest.apiId;\n        this.correlationId = telemetryRequest.correlationId;\n        this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n        this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n        this.telemetryCacheKey =\n            SERVER_TELEM_CONSTANTS.CACHE_KEY +\n                Separators.CACHE_KEY_SEPARATOR +\n                telemetryRequest.clientId;\n    }\n    /**\n     * API to add MSER Telemetry to request\n     */\n    generateCurrentRequestHeaderValue() {\n        const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n        const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const regionDiscoveryFields = this.getRegionDiscoveryFields();\n        const requestWithRegionDiscoveryFields = [\n            request,\n            regionDiscoveryFields,\n        ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        return [\n            SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n            requestWithRegionDiscoveryFields,\n            platformFields,\n        ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n    }\n    /**\n     * API to add MSER Telemetry for the last failed request\n     */\n    generateLastRequestHeaderValue() {\n        const lastRequests = this.getLastRequests();\n        const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n        const failedRequests = lastRequests.failedRequests\n            .slice(0, 2 * maxErrors)\n            .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const errors = lastRequests.errors\n            .slice(0, maxErrors)\n            .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        const errorCount = lastRequests.errors.length;\n        // Indicate whether this header contains all data or partial data\n        const overflow = maxErrors < errorCount\n            ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\n            : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n        const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n        return [\n            SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n            lastRequests.cacheHits,\n            failedRequests,\n            errors,\n            platformFields,\n        ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n    }\n    /**\n     * API to cache token failures for MSER data capture\n     * @param error\n     */\n    cacheFailedRequest(error) {\n        const lastRequests = this.getLastRequests();\n        if (lastRequests.errors.length >=\n            SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\n            // Remove a cached error to make room, first in first out\n            lastRequests.failedRequests.shift(); // apiId\n            lastRequests.failedRequests.shift(); // correlationId\n            lastRequests.errors.shift();\n        }\n        lastRequests.failedRequests.push(this.apiId, this.correlationId);\n        if (error instanceof Error && !!error && error.toString()) {\n            if (error instanceof AuthError) {\n                if (error.subError) {\n                    lastRequests.errors.push(error.subError);\n                }\n                else if (error.errorCode) {\n                    lastRequests.errors.push(error.errorCode);\n                }\n                else {\n                    lastRequests.errors.push(error.toString());\n                }\n            }\n            else {\n                lastRequests.errors.push(error.toString());\n            }\n        }\n        else {\n            lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n        }\n        this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n        return;\n    }\n    /**\n     * Update server telemetry cache entry by incrementing cache hit counter\n     */\n    incrementCacheHits() {\n        const lastRequests = this.getLastRequests();\n        lastRequests.cacheHits += 1;\n        this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n        return lastRequests.cacheHits;\n    }\n    /**\n     * Get the server telemetry entity from cache or initialize a new one\n     */\n    getLastRequests() {\n        const initialValue = {\n            failedRequests: [],\n            errors: [],\n            cacheHits: 0,\n        };\n        const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\n        return lastRequests || initialValue;\n    }\n    /**\n     * Remove server telemetry cache entry\n     */\n    clearTelemetryCache() {\n        const lastRequests = this.getLastRequests();\n        const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n        const errorCount = lastRequests.errors.length;\n        if (numErrorsFlushed === errorCount) {\n            // All errors were sent on last request, clear Telemetry cache\n            this.cacheManager.removeItem(this.telemetryCacheKey);\n        }\n        else {\n            // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n            const serverTelemEntity = {\n                failedRequests: lastRequests.failedRequests.slice(numErrorsFlushed * 2),\n                errors: lastRequests.errors.slice(numErrorsFlushed),\n                cacheHits: 0,\n            };\n            this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\n        }\n    }\n    /**\n     * Returns the maximum number of errors that can be flushed to the server in the next network request\n     * @param serverTelemetryEntity\n     */\n    static maxErrorsToSend(serverTelemetryEntity) {\n        let i;\n        let maxErrors = 0;\n        let dataSize = 0;\n        const errorCount = serverTelemetryEntity.errors.length;\n        for (i = 0; i < errorCount; i++) {\n            // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n            const apiId = serverTelemetryEntity.failedRequests[2 * i] ||\n                Constants.EMPTY_STRING;\n            const correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] ||\n                Constants.EMPTY_STRING;\n            const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n            // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n            dataSize +=\n                apiId.toString().length +\n                    correlationId.toString().length +\n                    errorCode.length +\n                    3;\n            if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n                // Adding this entry to the header would still keep header size below the limit\n                maxErrors += 1;\n            }\n            else {\n                break;\n            }\n        }\n        return maxErrors;\n    }\n    /**\n     * Get the region discovery fields\n     *\n     * @returns string\n     */\n    getRegionDiscoveryFields() {\n        const regionDiscoveryFields = [];\n        regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n        regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n        regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\n        return regionDiscoveryFields.join(\",\");\n    }\n    /**\n     * Update the region discovery metadata\n     *\n     * @param regionDiscoveryMetadata\n     * @returns void\n     */\n    updateRegionDiscoveryMetadata(regionDiscoveryMetadata) {\n        this.regionUsed = regionDiscoveryMetadata.region_used;\n        this.regionSource = regionDiscoveryMetadata.region_source;\n        this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n    }\n    /**\n     * Set cache outcome\n     */\n    setCacheOutcome(cacheOutcome) {\n        this.cacheOutcome = cacheOutcome;\n    }\n}\n\nexport { ServerTelemetryManager };\n//# sourceMappingURL=ServerTelemetryManager.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { AccountEntity, CacheManager } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class deserializes cache entities read from the file into in memory object types defined internally\n */\nclass Deserializer {\n    /**\n     * Parse the JSON blob in memory and deserialize the content\n     * @param cachedJson\n     */\n    static deserializeJSONBlob(jsonFile) {\n        const deserializedCache = !jsonFile ? {} : JSON.parse(jsonFile);\n        return deserializedCache;\n    }\n    /**\n     * Deserializes accounts to AccountEntity objects\n     * @param accounts\n     */\n    static deserializeAccounts(accounts) {\n        const accountObjects = {};\n        if (accounts) {\n            Object.keys(accounts).map(function (key) {\n                const serializedAcc = accounts[key];\n                const mappedAcc = {\n                    homeAccountId: serializedAcc.home_account_id,\n                    environment: serializedAcc.environment,\n                    realm: serializedAcc.realm,\n                    localAccountId: serializedAcc.local_account_id,\n                    username: serializedAcc.username,\n                    authorityType: serializedAcc.authority_type,\n                    name: serializedAcc.name,\n                    clientInfo: serializedAcc.client_info,\n                    lastModificationTime: serializedAcc.last_modification_time,\n                    lastModificationApp: serializedAcc.last_modification_app,\n                    tenantProfiles: serializedAcc.tenantProfiles?.map((serializedTenantProfile) => {\n                        return JSON.parse(serializedTenantProfile);\n                    }),\n                };\n                const account = new AccountEntity();\n                CacheManager.toObject(account, mappedAcc);\n                accountObjects[key] = account;\n            });\n        }\n        return accountObjects;\n    }\n    /**\n     * Deserializes id tokens to IdTokenEntity objects\n     * @param idTokens\n     */\n    static deserializeIdTokens(idTokens) {\n        const idObjects = {};\n        if (idTokens) {\n            Object.keys(idTokens).map(function (key) {\n                const serializedIdT = idTokens[key];\n                const idToken = {\n                    homeAccountId: serializedIdT.home_account_id,\n                    environment: serializedIdT.environment,\n                    credentialType: serializedIdT.credential_type,\n                    clientId: serializedIdT.client_id,\n                    secret: serializedIdT.secret,\n                    realm: serializedIdT.realm,\n                };\n                idObjects[key] = idToken;\n            });\n        }\n        return idObjects;\n    }\n    /**\n     * Deserializes access tokens to AccessTokenEntity objects\n     * @param accessTokens\n     */\n    static deserializeAccessTokens(accessTokens) {\n        const atObjects = {};\n        if (accessTokens) {\n            Object.keys(accessTokens).map(function (key) {\n                const serializedAT = accessTokens[key];\n                const accessToken = {\n                    homeAccountId: serializedAT.home_account_id,\n                    environment: serializedAT.environment,\n                    credentialType: serializedAT.credential_type,\n                    clientId: serializedAT.client_id,\n                    secret: serializedAT.secret,\n                    realm: serializedAT.realm,\n                    target: serializedAT.target,\n                    cachedAt: serializedAT.cached_at,\n                    expiresOn: serializedAT.expires_on,\n                    extendedExpiresOn: serializedAT.extended_expires_on,\n                    refreshOn: serializedAT.refresh_on,\n                    keyId: serializedAT.key_id,\n                    tokenType: serializedAT.token_type,\n                    requestedClaims: serializedAT.requestedClaims,\n                    requestedClaimsHash: serializedAT.requestedClaimsHash,\n                    userAssertionHash: serializedAT.userAssertionHash,\n                };\n                atObjects[key] = accessToken;\n            });\n        }\n        return atObjects;\n    }\n    /**\n     * Deserializes refresh tokens to RefreshTokenEntity objects\n     * @param refreshTokens\n     */\n    static deserializeRefreshTokens(refreshTokens) {\n        const rtObjects = {};\n        if (refreshTokens) {\n            Object.keys(refreshTokens).map(function (key) {\n                const serializedRT = refreshTokens[key];\n                const refreshToken = {\n                    homeAccountId: serializedRT.home_account_id,\n                    environment: serializedRT.environment,\n                    credentialType: serializedRT.credential_type,\n                    clientId: serializedRT.client_id,\n                    secret: serializedRT.secret,\n                    familyId: serializedRT.family_id,\n                    target: serializedRT.target,\n                    realm: serializedRT.realm,\n                };\n                rtObjects[key] = refreshToken;\n            });\n        }\n        return rtObjects;\n    }\n    /**\n     * Deserializes appMetadata to AppMetaData objects\n     * @param appMetadata\n     */\n    static deserializeAppMetadata(appMetadata) {\n        const appMetadataObjects = {};\n        if (appMetadata) {\n            Object.keys(appMetadata).map(function (key) {\n                const serializedAmdt = appMetadata[key];\n                appMetadataObjects[key] = {\n                    clientId: serializedAmdt.client_id,\n                    environment: serializedAmdt.environment,\n                    familyId: serializedAmdt.family_id,\n                };\n            });\n        }\n        return appMetadataObjects;\n    }\n    /**\n     * Deserialize an inMemory Cache\n     * @param jsonCache\n     */\n    static deserializeAllCache(jsonCache) {\n        return {\n            accounts: jsonCache.Account\n                ? this.deserializeAccounts(jsonCache.Account)\n                : {},\n            idTokens: jsonCache.IdToken\n                ? this.deserializeIdTokens(jsonCache.IdToken)\n                : {},\n            accessTokens: jsonCache.AccessToken\n                ? this.deserializeAccessTokens(jsonCache.AccessToken)\n                : {},\n            refreshTokens: jsonCache.RefreshToken\n                ? this.deserializeRefreshTokens(jsonCache.RefreshToken)\n                : {},\n            appMetadata: jsonCache.AppMetadata\n                ? this.deserializeAppMetadata(jsonCache.AppMetadata)\n                : {},\n        };\n    }\n}\n\nexport { Deserializer };\n//# sourceMappingURL=Deserializer.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * http methods\n */\nconst HttpMethod = {\n    GET: \"get\",\n    POST: \"post\",\n};\nconst ProxyStatus = {\n    SUCCESS_RANGE_START: 200,\n    SUCCESS_RANGE_END: 299,\n    SERVER_ERROR: 500,\n};\n/**\n * Constants used for region discovery\n */\nconst REGION_ENVIRONMENT_VARIABLE = \"REGION_NAME\";\n/**\n * Constant used for PKCE\n */\nconst RANDOM_OCTET_SIZE = 32;\n/**\n * Constants used in PKCE\n */\nconst Hash = {\n    SHA256: \"sha256\",\n};\n/**\n * Constants for encoding schemes\n */\nconst CharSet = {\n    CV_CHARSET: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~\",\n};\n/**\n * Constants\n */\nconst Constants = {\n    MSAL_SKU: \"msal.js.node\",\n    JWT_BEARER_ASSERTION_TYPE: \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\",\n    AUTHORIZATION_PENDING: \"authorization_pending\",\n    HTTP_PROTOCOL: \"http://\",\n    LOCALHOST: \"localhost\",\n};\n/**\n * API Codes for Telemetry purposes.\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 600-699 Device Code Flow\n * 800-899 Auth Code Flow\n */\nconst ApiId = {\n    acquireTokenSilent: 62,\n    acquireTokenByUsernamePassword: 371,\n    acquireTokenByDeviceCode: 671,\n    acquireTokenByClientCredential: 771,\n    acquireTokenByCode: 871,\n    acquireTokenByRefreshToken: 872,\n};\n/**\n * JWT  constants\n */\nconst JwtConstants = {\n    ALGORITHM: \"alg\",\n    RSA_256: \"RS256\",\n    X5T: \"x5t\",\n    X5C: \"x5c\",\n    AUDIENCE: \"aud\",\n    EXPIRATION_TIME: \"exp\",\n    ISSUER: \"iss\",\n    SUBJECT: \"sub\",\n    NOT_BEFORE: \"nbf\",\n    JWT_ID: \"jti\",\n};\nconst LOOPBACK_SERVER_CONSTANTS = {\n    INTERVAL_MS: 100,\n    TIMEOUT_MS: 5000,\n};\n\nexport { ApiId, CharSet, Constants, Hash, HttpMethod, JwtConstants, LOOPBACK_SERVER_CONSTANTS, ProxyStatus, RANDOM_OCTET_SIZE, REGION_ENVIRONMENT_VARIABLE };\n//# sourceMappingURL=Constants.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass NetworkUtils {\n    static getNetworkResponse(headers, body, statusCode) {\n        return {\n            headers: headers,\n            body: body,\n            status: statusCode,\n        };\n    }\n    /*\n     * Utility function that converts a URL object into an ordinary options object as expected by the\n     * http.request and https.request APIs.\n     * https://github.com/nodejs/node/blob/main/lib/internal/url.js#L1090\n     */\n    static urlToHttpOptions(url) {\n        const options = {\n            protocol: url.protocol,\n            hostname: url.hostname && url.hostname.startsWith(\"[\")\n                ? url.hostname.slice(1, -1)\n                : url.hostname,\n            hash: url.hash,\n            search: url.search,\n            pathname: url.pathname,\n            path: `${url.pathname || \"\"}${url.search || \"\"}`,\n            href: url.href,\n        };\n        if (url.port !== \"\") {\n            options.port = Number(url.port);\n        }\n        if (url.username || url.password) {\n            options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`;\n        }\n        return options;\n    }\n}\n\nexport { NetworkUtils };\n//# sourceMappingURL=NetworkUtils.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { HttpStatus } from '@azure/msal-common';\nimport { ProxyStatus, Constants, HttpMethod } from '../utils/Constants.mjs';\nimport { NetworkUtils } from '../utils/NetworkUtils.mjs';\nimport http from 'http';\nimport https from 'https';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class implements the API for network requests.\n */\nclass HttpClient {\n    constructor(proxyUrl, customAgentOptions) {\n        this.proxyUrl = proxyUrl || \"\";\n        this.customAgentOptions = customAgentOptions || {};\n    }\n    /**\n     * Http Get request\n     * @param url\n     * @param options\n     */\n    async sendGetRequestAsync(url, options) {\n        if (this.proxyUrl) {\n            return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.GET, options, this.customAgentOptions);\n        }\n        else {\n            return networkRequestViaHttps(url, HttpMethod.GET, options, this.customAgentOptions);\n        }\n    }\n    /**\n     * Http Post request\n     * @param url\n     * @param options\n     */\n    async sendPostRequestAsync(url, options, cancellationToken) {\n        if (this.proxyUrl) {\n            return networkRequestViaProxy(url, this.proxyUrl, HttpMethod.POST, options, this.customAgentOptions, cancellationToken);\n        }\n        else {\n            return networkRequestViaHttps(url, HttpMethod.POST, options, this.customAgentOptions, cancellationToken);\n        }\n    }\n}\nconst networkRequestViaProxy = (destinationUrlString, proxyUrlString, httpMethod, options, agentOptions, timeout) => {\n    const destinationUrl = new URL(destinationUrlString);\n    const proxyUrl = new URL(proxyUrlString);\n    // \"method: connect\" must be used to establish a connection to the proxy\n    const headers = options?.headers || {};\n    const tunnelRequestOptions = {\n        host: proxyUrl.hostname,\n        port: proxyUrl.port,\n        method: \"CONNECT\",\n        path: destinationUrl.hostname,\n        headers: headers,\n    };\n    if (timeout) {\n        tunnelRequestOptions.timeout = timeout;\n    }\n    if (agentOptions && Object.keys(agentOptions).length) {\n        tunnelRequestOptions.agent = new http.Agent(agentOptions);\n    }\n    // compose a request string for the socket\n    let postRequestStringContent = \"\";\n    if (httpMethod === HttpMethod.POST) {\n        const body = options?.body || \"\";\n        postRequestStringContent =\n            \"Content-Type: application/x-www-form-urlencoded\\r\\n\" +\n                `Content-Length: ${body.length}\\r\\n` +\n                `\\r\\n${body}`;\n    }\n    const outgoingRequestString = `${httpMethod.toUpperCase()} ${destinationUrl.href} HTTP/1.1\\r\\n` +\n        `Host: ${destinationUrl.host}\\r\\n` +\n        \"Connection: close\\r\\n\" +\n        postRequestStringContent +\n        \"\\r\\n\";\n    return new Promise((resolve, reject) => {\n        const request = http.request(tunnelRequestOptions);\n        if (tunnelRequestOptions.timeout) {\n            request.on(\"timeout\", () => {\n                request.destroy();\n                reject(new Error(\"Request time out\"));\n            });\n        }\n        request.end();\n        // establish connection to the proxy\n        request.on(\"connect\", (response, socket) => {\n            const proxyStatusCode = response?.statusCode || ProxyStatus.SERVER_ERROR;\n            if (proxyStatusCode < ProxyStatus.SUCCESS_RANGE_START ||\n                proxyStatusCode > ProxyStatus.SUCCESS_RANGE_END) {\n                request.destroy();\n                socket.destroy();\n                reject(new Error(`Error connecting to proxy. Http status code: ${response.statusCode}. Http status message: ${response?.statusMessage || \"Unknown\"}`));\n            }\n            if (tunnelRequestOptions.timeout) {\n                socket.setTimeout(tunnelRequestOptions.timeout);\n                socket.on(\"timeout\", () => {\n                    request.destroy();\n                    socket.destroy();\n                    reject(new Error(\"Request time out\"));\n                });\n            }\n            // make a request over an HTTP tunnel\n            socket.write(outgoingRequestString);\n            const data = [];\n            socket.on(\"data\", (chunk) => {\n                data.push(chunk);\n            });\n            socket.on(\"end\", () => {\n                // combine all received buffer streams into one buffer, and then into a string\n                const dataString = Buffer.concat([...data]).toString();\n                // separate each line into it's own entry in an arry\n                const dataStringArray = dataString.split(\"\\r\\n\");\n                // the first entry will contain the statusCode and statusMessage\n                const httpStatusCode = parseInt(dataStringArray[0].split(\" \")[1]);\n                // remove \"HTTP/1.1\" and the status code to get the status message\n                const statusMessage = dataStringArray[0]\n                    .split(\" \")\n                    .slice(2)\n                    .join(\" \");\n                // the last entry will contain the body\n                const body = dataStringArray[dataStringArray.length - 1];\n                // everything in between the first and last entries are the headers\n                const headersArray = dataStringArray.slice(1, dataStringArray.length - 2);\n                // build an object out of all the headers\n                const entries = new Map();\n                headersArray.forEach((header) => {\n                    /**\n                     * the header might look like \"Content-Length: 1531\", but that is just a string\n                     * it needs to be converted to a key/value pair\n                     * split the string at the first instance of \":\"\n                     * there may be more than one \":\" if the value of the header is supposed to be a JSON object\n                     */\n                    const headerKeyValue = header.split(new RegExp(/:\\s(.*)/s));\n                    const headerKey = headerKeyValue[0];\n                    let headerValue = headerKeyValue[1];\n                    // check if the value of the header is supposed to be a JSON object\n                    try {\n                        const object = JSON.parse(headerValue);\n                        // if it is, then convert it from a string to a JSON object\n                        if (object && typeof object === \"object\") {\n                            headerValue = object;\n                        }\n                    }\n                    catch (e) {\n                        // otherwise, leave it as a string\n                    }\n                    entries.set(headerKey, headerValue);\n                });\n                const headers = Object.fromEntries(entries);\n                const parsedHeaders = headers;\n                const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(httpStatusCode, statusMessage, parsedHeaders, body), httpStatusCode);\n                if ((httpStatusCode < HttpStatus.SUCCESS_RANGE_START ||\n                    httpStatusCode > HttpStatus.SUCCESS_RANGE_END) &&\n                    // do not destroy the request for the device code flow\n                    networkResponse.body[\"error\"] !==\n                        Constants.AUTHORIZATION_PENDING) {\n                    request.destroy();\n                }\n                resolve(networkResponse);\n            });\n            socket.on(\"error\", (chunk) => {\n                request.destroy();\n                socket.destroy();\n                reject(new Error(chunk.toString()));\n            });\n        });\n        request.on(\"error\", (chunk) => {\n            request.destroy();\n            reject(new Error(chunk.toString()));\n        });\n    });\n};\nconst networkRequestViaHttps = (urlString, httpMethod, options, agentOptions, timeout) => {\n    const isPostRequest = httpMethod === HttpMethod.POST;\n    const body = options?.body || \"\";\n    const url = new URL(urlString);\n    const headers = options?.headers || {};\n    const customOptions = {\n        method: httpMethod,\n        headers: headers,\n        ...NetworkUtils.urlToHttpOptions(url),\n    };\n    if (timeout) {\n        customOptions.timeout = timeout;\n    }\n    if (agentOptions && Object.keys(agentOptions).length) {\n        customOptions.agent = new https.Agent(agentOptions);\n    }\n    if (isPostRequest) {\n        // needed for post request to work\n        customOptions.headers = {\n            ...customOptions.headers,\n            \"Content-Length\": body.length,\n        };\n    }\n    return new Promise((resolve, reject) => {\n        const request = https.request(customOptions);\n        if (timeout) {\n            request.on(\"timeout\", () => {\n                request.destroy();\n                reject(new Error(\"Request time out\"));\n            });\n        }\n        if (isPostRequest) {\n            request.write(body);\n        }\n        request.end();\n        request.on(\"response\", (response) => {\n            const headers = response.headers;\n            const statusCode = response.statusCode;\n            const statusMessage = response.statusMessage;\n            const data = [];\n            response.on(\"data\", (chunk) => {\n                data.push(chunk);\n            });\n            response.on(\"end\", () => {\n                // combine all received buffer streams into one buffer, and then into a string\n                const body = Buffer.concat([...data]).toString();\n                const parsedHeaders = headers;\n                const networkResponse = NetworkUtils.getNetworkResponse(parsedHeaders, parseBody(statusCode, statusMessage, parsedHeaders, body), statusCode);\n                if ((statusCode < HttpStatus.SUCCESS_RANGE_START ||\n                    statusCode > HttpStatus.SUCCESS_RANGE_END) &&\n                    // do not destroy the request for the device code flow\n                    networkResponse.body[\"error\"] !==\n                        Constants.AUTHORIZATION_PENDING) {\n                    request.destroy();\n                }\n                resolve(networkResponse);\n            });\n        });\n        request.on(\"error\", (chunk) => {\n            request.destroy();\n            reject(new Error(chunk.toString()));\n        });\n    });\n};\n/**\n * Check if extra parsing is needed on the repsonse from the server\n * @param statusCode {number} the status code of the response from the server\n * @param statusMessage {string | undefined} the status message of the response from the server\n * @param headers {Record<string, string>} the headers of the response from the server\n * @param body {string} the body from the response of the server\n * @returns {Object} JSON parsed body or error object\n */\nconst parseBody = (statusCode, statusMessage, headers, body) => {\n    /*\n     * Informational responses (100 – 199)\n     * Successful responses (200 – 299)\n     * Redirection messages (300 – 399)\n     * Client error responses (400 – 499)\n     * Server error responses (500 – 599)\n     */\n    let parsedBody;\n    try {\n        parsedBody = JSON.parse(body);\n    }\n    catch (error) {\n        let errorType;\n        let errorDescriptionHelper;\n        if (statusCode >= HttpStatus.CLIENT_ERROR_RANGE_START &&\n            statusCode <= HttpStatus.CLIENT_ERROR_RANGE_END) {\n            errorType = \"client_error\";\n            errorDescriptionHelper = \"A client\";\n        }\n        else if (statusCode >= HttpStatus.SERVER_ERROR_RANGE_START &&\n            statusCode <= HttpStatus.SERVER_ERROR_RANGE_END) {\n            errorType = \"server_error\";\n            errorDescriptionHelper = \"A server\";\n        }\n        else {\n            errorType = \"unknown_error\";\n            errorDescriptionHelper = \"An unknown\";\n        }\n        parsedBody = {\n            error: errorType,\n            error_description: `${errorDescriptionHelper} error occured.\\nHttp status code: ${statusCode}\\nHttp status message: ${statusMessage || \"Unknown\"}\\nHeaders: ${JSON.stringify(headers)}`,\n        };\n    }\n    return parsedBody;\n};\n\nexport { HttpClient };\n//# sourceMappingURL=HttpClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common';\nimport { HttpClient } from '../network/HttpClient.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst DEFAULT_AUTH_OPTIONS = {\n    clientId: Constants.EMPTY_STRING,\n    authority: Constants.DEFAULT_AUTHORITY,\n    clientSecret: Constants.EMPTY_STRING,\n    clientAssertion: Constants.EMPTY_STRING,\n    clientCertificate: {\n        thumbprint: Constants.EMPTY_STRING,\n        privateKey: Constants.EMPTY_STRING,\n        x5c: Constants.EMPTY_STRING,\n    },\n    knownAuthorities: [],\n    cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n    authorityMetadata: Constants.EMPTY_STRING,\n    clientCapabilities: [],\n    protocolMode: ProtocolMode.AAD,\n    azureCloudOptions: {\n        azureCloudInstance: AzureCloudInstance.None,\n        tenant: Constants.EMPTY_STRING,\n    },\n    skipAuthorityMetadataCache: false,\n};\nconst DEFAULT_CACHE_OPTIONS = {\n    claimsBasedCachingEnabled: false,\n};\nconst DEFAULT_LOGGER_OPTIONS = {\n    loggerCallback: () => {\n        // allow users to not set logger call back\n    },\n    piiLoggingEnabled: false,\n    logLevel: LogLevel.Info,\n};\nconst DEFAULT_SYSTEM_OPTIONS = {\n    loggerOptions: DEFAULT_LOGGER_OPTIONS,\n    networkClient: new HttpClient(),\n    proxyUrl: Constants.EMPTY_STRING,\n    customAgentOptions: {},\n};\nconst DEFAULT_TELEMETRY_OPTIONS = {\n    application: {\n        appName: Constants.EMPTY_STRING,\n        appVersion: Constants.EMPTY_STRING,\n    },\n};\n/**\n * Sets the default options when not explicitly configured from app developer\n *\n * @param auth - Authentication options\n * @param cache - Cache options\n * @param system - System options\n * @param telemetry - Telemetry options\n *\n * @returns Configuration\n * @internal\n */\nfunction buildAppConfiguration({ auth, broker, cache, system, telemetry, }) {\n    const systemOptions = {\n        ...DEFAULT_SYSTEM_OPTIONS,\n        networkClient: new HttpClient(system?.proxyUrl, system?.customAgentOptions),\n        loggerOptions: system?.loggerOptions || DEFAULT_LOGGER_OPTIONS,\n    };\n    return {\n        auth: { ...DEFAULT_AUTH_OPTIONS, ...auth },\n        broker: { ...broker },\n        cache: { ...DEFAULT_CACHE_OPTIONS, ...cache },\n        system: { ...systemOptions, ...system },\n        telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n    };\n}\n\nexport { buildAppConfiguration };\n//# sourceMappingURL=Configuration.mjs.map\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n    // find the complete implementation of crypto (msCrypto) on IE11.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (var i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { v4 } from 'uuid';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass GuidGenerator {\n    /**\n     *\n     * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or pseudo-random numbers.\n     * uuidv4 generates guids from cryprtographically-string random\n     */\n    generateGuid() {\n        return v4();\n    }\n    /**\n     * verifies if a string is  GUID\n     * @param guid\n     */\n    isGuid(guid) {\n        const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n        return regexGuid.test(guid);\n    }\n}\n\nexport { GuidGenerator };\n//# sourceMappingURL=GuidGenerator.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass EncodingUtils {\n    /**\n     * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\n     * 'base64': Base64 encoding.\n     *\n     * @param str text\n     */\n    static base64Encode(str, encoding) {\n        return Buffer.from(str, encoding).toString(\"base64\");\n    }\n    /**\n     * encode a URL\n     * @param str\n     */\n    static base64EncodeUrl(str, encoding) {\n        return EncodingUtils.base64Encode(str, encoding)\n            .replace(/=/g, Constants.EMPTY_STRING)\n            .replace(/\\+/g, \"-\")\n            .replace(/\\//g, \"_\");\n    }\n    /**\n     * 'utf8': Multibyte encoded Unicode characters. Many web pages and other document formats use UTF-8.\n     * 'base64': Base64 encoding.\n     *\n     * @param base64Str Base64 encoded text\n     */\n    static base64Decode(base64Str) {\n        return Buffer.from(base64Str, \"base64\").toString(\"utf8\");\n    }\n    /**\n     * @param base64Str Base64 encoded Url\n     */\n    static base64DecodeUrl(base64Str) {\n        let str = base64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n        while (str.length % 4) {\n            str += \"=\";\n        }\n        return EncodingUtils.base64Decode(str);\n    }\n}\n\nexport { EncodingUtils };\n//# sourceMappingURL=EncodingUtils.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Hash } from '../utils/Constants.mjs';\nimport crypto from 'crypto';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass HashUtils {\n    /**\n     * generate 'SHA256' hash\n     * @param buffer\n     */\n    sha256(buffer) {\n        return crypto.createHash(Hash.SHA256).update(buffer).digest();\n    }\n}\n\nexport { HashUtils };\n//# sourceMappingURL=HashUtils.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { RANDOM_OCTET_SIZE, CharSet } from '../utils/Constants.mjs';\nimport { EncodingUtils } from '../utils/EncodingUtils.mjs';\nimport { HashUtils } from './HashUtils.mjs';\nimport crypto from 'crypto';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * https://tools.ietf.org/html/rfc7636#page-8\n */\nclass PkceGenerator {\n    constructor() {\n        this.hashUtils = new HashUtils();\n    }\n    /**\n     * generates the codeVerfier and the challenge from the codeVerfier\n     * reference: https://tools.ietf.org/html/rfc7636#section-4.1 and https://tools.ietf.org/html/rfc7636#section-4.2\n     */\n    async generatePkceCodes() {\n        const verifier = this.generateCodeVerifier();\n        const challenge = this.generateCodeChallengeFromVerifier(verifier);\n        return { verifier, challenge };\n    }\n    /**\n     * generates the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.1\n     */\n    generateCodeVerifier() {\n        const charArr = [];\n        const maxNumber = 256 - (256 % CharSet.CV_CHARSET.length);\n        while (charArr.length <= RANDOM_OCTET_SIZE) {\n            const byte = crypto.randomBytes(1)[0];\n            if (byte >= maxNumber) {\n                /*\n                 * Ignore this number to maintain randomness.\n                 * Including it would result in an unequal distribution of characters after doing the modulo\n                 */\n                continue;\n            }\n            const index = byte % CharSet.CV_CHARSET.length;\n            charArr.push(CharSet.CV_CHARSET[index]);\n        }\n        const verifier = charArr.join(Constants.EMPTY_STRING);\n        return EncodingUtils.base64EncodeUrl(verifier);\n    }\n    /**\n     * generate the challenge from the codeVerfier; reference: https://tools.ietf.org/html/rfc7636#section-4.2\n     * @param codeVerifier\n     */\n    generateCodeChallengeFromVerifier(codeVerifier) {\n        return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(codeVerifier).toString(\"base64\"), \"base64\");\n    }\n}\n\nexport { PkceGenerator };\n//# sourceMappingURL=PkceGenerator.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { GuidGenerator } from './GuidGenerator.mjs';\nimport { EncodingUtils } from '../utils/EncodingUtils.mjs';\nimport { PkceGenerator } from './PkceGenerator.mjs';\nimport { HashUtils } from './HashUtils.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class implements MSAL node's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n * @public\n */\nclass CryptoProvider {\n    constructor() {\n        // Browser crypto needs to be validated first before any other classes can be set.\n        this.pkceGenerator = new PkceGenerator();\n        this.guidGenerator = new GuidGenerator();\n        this.hashUtils = new HashUtils();\n    }\n    /**\n     * Creates a new random GUID - used to populate state and nonce.\n     * @returns string (GUID)\n     */\n    createNewGuid() {\n        return this.guidGenerator.generateGuid();\n    }\n    /**\n     * Encodes input string to base64.\n     * @param input - string to be encoded\n     */\n    base64Encode(input) {\n        return EncodingUtils.base64Encode(input);\n    }\n    /**\n     * Decodes input string from base64.\n     * @param input - string to be decoded\n     */\n    base64Decode(input) {\n        return EncodingUtils.base64Decode(input);\n    }\n    /**\n     * Generates PKCE codes used in Authorization Code Flow.\n     */\n    generatePkceCodes() {\n        return this.pkceGenerator.generatePkceCodes();\n    }\n    /**\n     * Generates a keypair, stores it and returns a thumbprint - not yet implemented for node\n     */\n    getPublicKeyThumbprint() {\n        throw new Error(\"Method not implemented.\");\n    }\n    /**\n     * Removes cryptographic keypair from key store matching the keyId passed in\n     * @param kid\n     */\n    removeTokenBindingKey() {\n        throw new Error(\"Method not implemented.\");\n    }\n    /**\n     * Removes all cryptographic keys from Keystore\n     */\n    clearKeystore() {\n        throw new Error(\"Method not implemented.\");\n    }\n    /**\n     * Signs the given object as a jwt payload with private key retrieved by given kid - currently not implemented for node\n     */\n    signJwt() {\n        throw new Error(\"Method not implemented.\");\n    }\n    /**\n     * Returns the SHA-256 hash of an input string\n     */\n    async hashString(plainText) {\n        return EncodingUtils.base64EncodeUrl(this.hashUtils.sha256(plainText).toString(\"base64\"), \"base64\");\n    }\n}\n\nexport { CryptoProvider };\n//# sourceMappingURL=CryptoProvider.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { CacheManager, AccountEntity, CacheHelpers } from '@azure/msal-common';\nimport { Deserializer } from './serializer/Deserializer.mjs';\nimport { Serializer } from './serializer/Serializer.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class implements Storage for node, reading cache from user specified storage location or an  extension library\n * @public\n */\nclass NodeStorage extends CacheManager {\n    constructor(logger, clientId, cryptoImpl, staticAuthorityOptions) {\n        super(clientId, cryptoImpl, logger, staticAuthorityOptions);\n        this.cache = {};\n        this.changeEmitters = [];\n        this.logger = logger;\n    }\n    /**\n     * Queue up callbacks\n     * @param func - a callback function for cache change indication\n     */\n    registerChangeEmitter(func) {\n        this.changeEmitters.push(func);\n    }\n    /**\n     * Invoke the callback when cache changes\n     */\n    emitChange() {\n        this.changeEmitters.forEach((func) => func.call(null));\n    }\n    /**\n     * Converts cacheKVStore to InMemoryCache\n     * @param cache - key value store\n     */\n    cacheToInMemoryCache(cache) {\n        const inMemoryCache = {\n            accounts: {},\n            idTokens: {},\n            accessTokens: {},\n            refreshTokens: {},\n            appMetadata: {},\n        };\n        for (const key in cache) {\n            const value = cache[key];\n            if (typeof value !== \"object\") {\n                continue;\n            }\n            if (value instanceof AccountEntity) {\n                inMemoryCache.accounts[key] = value;\n            }\n            else if (CacheHelpers.isIdTokenEntity(value)) {\n                inMemoryCache.idTokens[key] = value;\n            }\n            else if (CacheHelpers.isAccessTokenEntity(value)) {\n                inMemoryCache.accessTokens[key] = value;\n            }\n            else if (CacheHelpers.isRefreshTokenEntity(value)) {\n                inMemoryCache.refreshTokens[key] = value;\n            }\n            else if (CacheHelpers.isAppMetadataEntity(key, value)) {\n                inMemoryCache.appMetadata[key] = value;\n            }\n            else {\n                continue;\n            }\n        }\n        return inMemoryCache;\n    }\n    /**\n     * converts inMemoryCache to CacheKVStore\n     * @param inMemoryCache - kvstore map for inmemory\n     */\n    inMemoryCacheToCache(inMemoryCache) {\n        // convert in memory cache to a flat Key-Value map\n        let cache = this.getCache();\n        cache = {\n            ...cache,\n            ...inMemoryCache.accounts,\n            ...inMemoryCache.idTokens,\n            ...inMemoryCache.accessTokens,\n            ...inMemoryCache.refreshTokens,\n            ...inMemoryCache.appMetadata,\n        };\n        // convert in memory cache to a flat Key-Value map\n        return cache;\n    }\n    /**\n     * gets the current in memory cache for the client\n     */\n    getInMemoryCache() {\n        this.logger.trace(\"Getting in-memory cache\");\n        // convert the cache key value store to inMemoryCache\n        const inMemoryCache = this.cacheToInMemoryCache(this.getCache());\n        return inMemoryCache;\n    }\n    /**\n     * sets the current in memory cache for the client\n     * @param inMemoryCache - key value map in memory\n     */\n    setInMemoryCache(inMemoryCache) {\n        this.logger.trace(\"Setting in-memory cache\");\n        // convert and append the inMemoryCache to cacheKVStore\n        const cache = this.inMemoryCacheToCache(inMemoryCache);\n        this.setCache(cache);\n        this.emitChange();\n    }\n    /**\n     * get the current cache key-value store\n     */\n    getCache() {\n        this.logger.trace(\"Getting cache key-value store\");\n        return this.cache;\n    }\n    /**\n     * sets the current cache (key value store)\n     * @param cacheMap - key value map\n     */\n    setCache(cache) {\n        this.logger.trace(\"Setting cache key value store\");\n        this.cache = cache;\n        // mark change in cache\n        this.emitChange();\n    }\n    /**\n     * Gets cache item with given key.\n     * @param key - lookup key for the cache entry\n     */\n    getItem(key) {\n        this.logger.tracePii(`Item key: ${key}`);\n        // read cache\n        const cache = this.getCache();\n        return cache[key];\n    }\n    /**\n     * Gets cache item with given key-value\n     * @param key - lookup key for the cache entry\n     * @param value - value of the cache entry\n     */\n    setItem(key, value) {\n        this.logger.tracePii(`Item key: ${key}`);\n        // read cache\n        const cache = this.getCache();\n        cache[key] = value;\n        // write to cache\n        this.setCache(cache);\n    }\n    getAccountKeys() {\n        const inMemoryCache = this.getInMemoryCache();\n        const accountKeys = Object.keys(inMemoryCache.accounts);\n        return accountKeys;\n    }\n    getTokenKeys() {\n        const inMemoryCache = this.getInMemoryCache();\n        const tokenKeys = {\n            idToken: Object.keys(inMemoryCache.idTokens),\n            accessToken: Object.keys(inMemoryCache.accessTokens),\n            refreshToken: Object.keys(inMemoryCache.refreshTokens),\n        };\n        return tokenKeys;\n    }\n    /**\n     * fetch the account entity\n     * @param accountKey - lookup key to fetch cache type AccountEntity\n     */\n    getAccount(accountKey) {\n        const accountEntity = this.getCachedAccountEntity(accountKey);\n        if (accountEntity && AccountEntity.isAccountEntity(accountEntity)) {\n            return this.updateOutdatedCachedAccount(accountKey, accountEntity);\n        }\n        return null;\n    }\n    /**\n     * Reads account from cache, builds it into an account entity and returns it.\n     * @param accountKey\n     * @returns\n     */\n    getCachedAccountEntity(accountKey) {\n        const cachedAccount = this.getItem(accountKey);\n        return cachedAccount\n            ? Object.assign(new AccountEntity(), this.getItem(accountKey))\n            : null;\n    }\n    /**\n     * set account entity\n     * @param account - cache value to be set of type AccountEntity\n     */\n    setAccount(account) {\n        const accountKey = account.generateAccountKey();\n        this.setItem(accountKey, account);\n    }\n    /**\n     * fetch the idToken credential\n     * @param idTokenKey - lookup key to fetch cache type IdTokenEntity\n     */\n    getIdTokenCredential(idTokenKey) {\n        const idToken = this.getItem(idTokenKey);\n        if (CacheHelpers.isIdTokenEntity(idToken)) {\n            return idToken;\n        }\n        return null;\n    }\n    /**\n     * set idToken credential\n     * @param idToken - cache value to be set of type IdTokenEntity\n     */\n    setIdTokenCredential(idToken) {\n        const idTokenKey = CacheHelpers.generateCredentialKey(idToken);\n        this.setItem(idTokenKey, idToken);\n    }\n    /**\n     * fetch the accessToken credential\n     * @param accessTokenKey - lookup key to fetch cache type AccessTokenEntity\n     */\n    getAccessTokenCredential(accessTokenKey) {\n        const accessToken = this.getItem(accessTokenKey);\n        if (CacheHelpers.isAccessTokenEntity(accessToken)) {\n            return accessToken;\n        }\n        return null;\n    }\n    /**\n     * set accessToken credential\n     * @param accessToken -  cache value to be set of type AccessTokenEntity\n     */\n    setAccessTokenCredential(accessToken) {\n        const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken);\n        this.setItem(accessTokenKey, accessToken);\n    }\n    /**\n     * fetch the refreshToken credential\n     * @param refreshTokenKey - lookup key to fetch cache type RefreshTokenEntity\n     */\n    getRefreshTokenCredential(refreshTokenKey) {\n        const refreshToken = this.getItem(refreshTokenKey);\n        if (CacheHelpers.isRefreshTokenEntity(refreshToken)) {\n            return refreshToken;\n        }\n        return null;\n    }\n    /**\n     * set refreshToken credential\n     * @param refreshToken - cache value to be set of type RefreshTokenEntity\n     */\n    setRefreshTokenCredential(refreshToken) {\n        const refreshTokenKey = CacheHelpers.generateCredentialKey(refreshToken);\n        this.setItem(refreshTokenKey, refreshToken);\n    }\n    /**\n     * fetch appMetadata entity from the platform cache\n     * @param appMetadataKey - lookup key to fetch cache type AppMetadataEntity\n     */\n    getAppMetadata(appMetadataKey) {\n        const appMetadata = this.getItem(appMetadataKey);\n        if (CacheHelpers.isAppMetadataEntity(appMetadataKey, appMetadata)) {\n            return appMetadata;\n        }\n        return null;\n    }\n    /**\n     * set appMetadata entity to the platform cache\n     * @param appMetadata - cache value to be set of type AppMetadataEntity\n     */\n    setAppMetadata(appMetadata) {\n        const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata);\n        this.setItem(appMetadataKey, appMetadata);\n    }\n    /**\n     * fetch server telemetry entity from the platform cache\n     * @param serverTelemetrykey - lookup key to fetch cache type ServerTelemetryEntity\n     */\n    getServerTelemetry(serverTelemetrykey) {\n        const serverTelemetryEntity = this.getItem(serverTelemetrykey);\n        if (serverTelemetryEntity &&\n            CacheHelpers.isServerTelemetryEntity(serverTelemetrykey, serverTelemetryEntity)) {\n            return serverTelemetryEntity;\n        }\n        return null;\n    }\n    /**\n     * set server telemetry entity to the platform cache\n     * @param serverTelemetryKey - lookup key to fetch cache type ServerTelemetryEntity\n     * @param serverTelemetry - cache value to be set of type ServerTelemetryEntity\n     */\n    setServerTelemetry(serverTelemetryKey, serverTelemetry) {\n        this.setItem(serverTelemetryKey, serverTelemetry);\n    }\n    /**\n     * fetch authority metadata entity from the platform cache\n     * @param key - lookup key to fetch cache type AuthorityMetadataEntity\n     */\n    getAuthorityMetadata(key) {\n        const authorityMetadataEntity = this.getItem(key);\n        if (authorityMetadataEntity &&\n            CacheHelpers.isAuthorityMetadataEntity(key, authorityMetadataEntity)) {\n            return authorityMetadataEntity;\n        }\n        return null;\n    }\n    /**\n     * Get all authority metadata keys\n     */\n    getAuthorityMetadataKeys() {\n        return this.getKeys().filter((key) => {\n            return this.isAuthorityMetadata(key);\n        });\n    }\n    /**\n     * set authority metadata entity to the platform cache\n     * @param key - lookup key to fetch cache type AuthorityMetadataEntity\n     * @param metadata - cache value to be set of type AuthorityMetadataEntity\n     */\n    setAuthorityMetadata(key, metadata) {\n        this.setItem(key, metadata);\n    }\n    /**\n     * fetch throttling entity from the platform cache\n     * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\n     */\n    getThrottlingCache(throttlingCacheKey) {\n        const throttlingCache = this.getItem(throttlingCacheKey);\n        if (throttlingCache &&\n            CacheHelpers.isThrottlingEntity(throttlingCacheKey, throttlingCache)) {\n            return throttlingCache;\n        }\n        return null;\n    }\n    /**\n     * set throttling entity to the platform cache\n     * @param throttlingCacheKey - lookup key to fetch cache type ThrottlingEntity\n     * @param throttlingCache - cache value to be set of type ThrottlingEntity\n     */\n    setThrottlingCache(throttlingCacheKey, throttlingCache) {\n        this.setItem(throttlingCacheKey, throttlingCache);\n    }\n    /**\n     * Removes the cache item from memory with the given key.\n     * @param key - lookup key to remove a cache entity\n     * @param inMemory - key value map of the cache\n     */\n    removeItem(key) {\n        this.logger.tracePii(`Item key: ${key}`);\n        // read inMemoryCache\n        let result = false;\n        const cache = this.getCache();\n        if (!!cache[key]) {\n            delete cache[key];\n            result = true;\n        }\n        // write to the cache after removal\n        if (result) {\n            this.setCache(cache);\n            this.emitChange();\n        }\n        return result;\n    }\n    /**\n     * Remove account entity from the platform cache if it's outdated\n     * @param accountKey\n     */\n    removeOutdatedAccount(accountKey) {\n        this.removeItem(accountKey);\n    }\n    /**\n     * Checks whether key is in cache.\n     * @param key - look up key for a cache entity\n     */\n    containsKey(key) {\n        return this.getKeys().includes(key);\n    }\n    /**\n     * Gets all keys in window.\n     */\n    getKeys() {\n        this.logger.trace(\"Retrieving all cache keys\");\n        // read cache\n        const cache = this.getCache();\n        return [...Object.keys(cache)];\n    }\n    /**\n     * Clears all cache entries created by MSAL (except tokens).\n     */\n    async clear() {\n        this.logger.trace(\"Clearing cache entries created by MSAL\");\n        // read inMemoryCache\n        const cacheKeys = this.getKeys();\n        // delete each element\n        cacheKeys.forEach((key) => {\n            this.removeItem(key);\n        });\n        this.emitChange();\n    }\n    /**\n     * Initialize in memory cache from an exisiting cache vault\n     * @param cache - blob formatted cache (JSON)\n     */\n    static generateInMemoryCache(cache) {\n        return Deserializer.deserializeAllCache(Deserializer.deserializeJSONBlob(cache));\n    }\n    /**\n     * retrieves the final JSON\n     * @param inMemoryCache - itemised cache read from the JSON\n     */\n    static generateJsonCache(inMemoryCache) {\n        return Serializer.serializeAllCache(inMemoryCache);\n    }\n    /**\n     * Updates a credential's cache key if the current cache key is outdated\n     */\n    updateCredentialCacheKey(currentCacheKey, credential) {\n        const updatedCacheKey = CacheHelpers.generateCredentialKey(credential);\n        if (currentCacheKey !== updatedCacheKey) {\n            const cacheItem = this.getItem(currentCacheKey);\n            if (cacheItem) {\n                this.removeItem(currentCacheKey);\n                this.setItem(updatedCacheKey, cacheItem);\n                this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\n                return updatedCacheKey;\n            }\n            else {\n                this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\n            }\n        }\n        return currentCacheKey;\n    }\n}\n\nexport { NodeStorage };\n//# sourceMappingURL=NodeStorage.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { TokenCacheContext, AccountEntity } from '@azure/msal-common';\nimport { Deserializer } from './serializer/Deserializer.mjs';\nimport { Serializer } from './serializer/Serializer.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nconst defaultSerializedCache = {\n    Account: {},\n    IdToken: {},\n    AccessToken: {},\n    RefreshToken: {},\n    AppMetadata: {},\n};\n/**\n * In-memory token cache manager\n * @public\n */\nclass TokenCache {\n    constructor(storage, logger, cachePlugin) {\n        this.cacheHasChanged = false;\n        this.storage = storage;\n        this.storage.registerChangeEmitter(this.handleChangeEvent.bind(this));\n        if (cachePlugin) {\n            this.persistence = cachePlugin;\n        }\n        this.logger = logger;\n    }\n    /**\n     * Set to true if cache state has changed since last time serialize or writeToPersistence was called\n     */\n    hasChanged() {\n        return this.cacheHasChanged;\n    }\n    /**\n     * Serializes in memory cache to JSON\n     */\n    serialize() {\n        this.logger.trace(\"Serializing in-memory cache\");\n        let finalState = Serializer.serializeAllCache(this.storage.getInMemoryCache());\n        // if cacheSnapshot not null or empty, merge\n        if (this.cacheSnapshot) {\n            this.logger.trace(\"Reading cache snapshot from disk\");\n            finalState = this.mergeState(JSON.parse(this.cacheSnapshot), finalState);\n        }\n        else {\n            this.logger.trace(\"No cache snapshot to merge\");\n        }\n        this.cacheHasChanged = false;\n        return JSON.stringify(finalState);\n    }\n    /**\n     * Deserializes JSON to in-memory cache. JSON should be in MSAL cache schema format\n     * @param cache - blob formatted cache\n     */\n    deserialize(cache) {\n        this.logger.trace(\"Deserializing JSON to in-memory cache\");\n        this.cacheSnapshot = cache;\n        if (this.cacheSnapshot) {\n            this.logger.trace(\"Reading cache snapshot from disk\");\n            const deserializedCache = Deserializer.deserializeAllCache(this.overlayDefaults(JSON.parse(this.cacheSnapshot)));\n            this.storage.setInMemoryCache(deserializedCache);\n        }\n        else {\n            this.logger.trace(\"No cache snapshot to deserialize\");\n        }\n    }\n    /**\n     * Fetches the cache key-value map\n     */\n    getKVStore() {\n        return this.storage.getCache();\n    }\n    /**\n     * API that retrieves all accounts currently in cache to the user\n     */\n    async getAllAccounts() {\n        this.logger.trace(\"getAllAccounts called\");\n        let cacheContext;\n        try {\n            if (this.persistence) {\n                cacheContext = new TokenCacheContext(this, true);\n                await this.persistence.beforeCacheAccess(cacheContext);\n            }\n            return this.storage.getAllAccounts();\n        }\n        finally {\n            if (this.persistence && cacheContext) {\n                await this.persistence.afterCacheAccess(cacheContext);\n            }\n        }\n    }\n    /**\n     * Returns the signed in account matching homeAccountId.\n     * (the account object is created at the time of successful login)\n     * or null when no matching account is found\n     * @param homeAccountId - unique identifier for an account (uid.utid)\n     */\n    async getAccountByHomeId(homeAccountId) {\n        const allAccounts = await this.getAllAccounts();\n        if (homeAccountId && allAccounts && allAccounts.length) {\n            return (allAccounts.filter((accountObj) => accountObj.homeAccountId === homeAccountId)[0] || null);\n        }\n        else {\n            return null;\n        }\n    }\n    /**\n     * Returns the signed in account matching localAccountId.\n     * (the account object is created at the time of successful login)\n     * or null when no matching account is found\n     * @param localAccountId - unique identifier of an account (sub/obj when homeAccountId cannot be populated)\n     */\n    async getAccountByLocalId(localAccountId) {\n        const allAccounts = await this.getAllAccounts();\n        if (localAccountId && allAccounts && allAccounts.length) {\n            return (allAccounts.filter((accountObj) => accountObj.localAccountId === localAccountId)[0] || null);\n        }\n        else {\n            return null;\n        }\n    }\n    /**\n     * API to remove a specific account and the relevant data from cache\n     * @param account - AccountInfo passed by the user\n     */\n    async removeAccount(account) {\n        this.logger.trace(\"removeAccount called\");\n        let cacheContext;\n        try {\n            if (this.persistence) {\n                cacheContext = new TokenCacheContext(this, true);\n                await this.persistence.beforeCacheAccess(cacheContext);\n            }\n            await this.storage.removeAccount(AccountEntity.generateAccountCacheKey(account));\n        }\n        finally {\n            if (this.persistence && cacheContext) {\n                await this.persistence.afterCacheAccess(cacheContext);\n            }\n        }\n    }\n    /**\n     * Called when the cache has changed state.\n     */\n    handleChangeEvent() {\n        this.cacheHasChanged = true;\n    }\n    /**\n     * Merge in memory cache with the cache snapshot.\n     * @param oldState - cache before changes\n     * @param currentState - current cache state in the library\n     */\n    mergeState(oldState, currentState) {\n        this.logger.trace(\"Merging in-memory cache with cache snapshot\");\n        const stateAfterRemoval = this.mergeRemovals(oldState, currentState);\n        return this.mergeUpdates(stateAfterRemoval, currentState);\n    }\n    /**\n     * Deep update of oldState based on newState values\n     * @param oldState - cache before changes\n     * @param newState - updated cache\n     */\n    mergeUpdates(oldState, newState) {\n        Object.keys(newState).forEach((newKey) => {\n            const newValue = newState[newKey];\n            // if oldState does not contain value but newValue does, add it\n            if (!oldState.hasOwnProperty(newKey)) {\n                if (newValue !== null) {\n                    oldState[newKey] = newValue;\n                }\n            }\n            else {\n                // both oldState and newState contain the key, do deep update\n                const newValueNotNull = newValue !== null;\n                const newValueIsObject = typeof newValue === \"object\";\n                const newValueIsNotArray = !Array.isArray(newValue);\n                const oldStateNotUndefinedOrNull = typeof oldState[newKey] !== \"undefined\" &&\n                    oldState[newKey] !== null;\n                if (newValueNotNull &&\n                    newValueIsObject &&\n                    newValueIsNotArray &&\n                    oldStateNotUndefinedOrNull) {\n                    this.mergeUpdates(oldState[newKey], newValue);\n                }\n                else {\n                    oldState[newKey] = newValue;\n                }\n            }\n        });\n        return oldState;\n    }\n    /**\n     * Removes entities in oldState that the were removed from newState. If there are any unknown values in root of\n     * oldState that are not recognized, they are left untouched.\n     * @param oldState - cache before changes\n     * @param newState - updated cache\n     */\n    mergeRemovals(oldState, newState) {\n        this.logger.trace(\"Remove updated entries in cache\");\n        const accounts = oldState.Account\n            ? this.mergeRemovalsDict(oldState.Account, newState.Account)\n            : oldState.Account;\n        const accessTokens = oldState.AccessToken\n            ? this.mergeRemovalsDict(oldState.AccessToken, newState.AccessToken)\n            : oldState.AccessToken;\n        const refreshTokens = oldState.RefreshToken\n            ? this.mergeRemovalsDict(oldState.RefreshToken, newState.RefreshToken)\n            : oldState.RefreshToken;\n        const idTokens = oldState.IdToken\n            ? this.mergeRemovalsDict(oldState.IdToken, newState.IdToken)\n            : oldState.IdToken;\n        const appMetadata = oldState.AppMetadata\n            ? this.mergeRemovalsDict(oldState.AppMetadata, newState.AppMetadata)\n            : oldState.AppMetadata;\n        return {\n            ...oldState,\n            Account: accounts,\n            AccessToken: accessTokens,\n            RefreshToken: refreshTokens,\n            IdToken: idTokens,\n            AppMetadata: appMetadata,\n        };\n    }\n    /**\n     * Helper to merge new cache with the old one\n     * @param oldState - cache before changes\n     * @param newState - updated cache\n     */\n    mergeRemovalsDict(oldState, newState) {\n        const finalState = { ...oldState };\n        Object.keys(oldState).forEach((oldKey) => {\n            if (!newState || !newState.hasOwnProperty(oldKey)) {\n                delete finalState[oldKey];\n            }\n        });\n        return finalState;\n    }\n    /**\n     * Helper to overlay as a part of cache merge\n     * @param passedInCache - cache read from the blob\n     */\n    overlayDefaults(passedInCache) {\n        this.logger.trace(\"Overlaying input cache with the default cache\");\n        return {\n            Account: {\n                ...defaultSerializedCache.Account,\n                ...passedInCache.Account,\n            },\n            IdToken: {\n                ...defaultSerializedCache.IdToken,\n                ...passedInCache.IdToken,\n            },\n            AccessToken: {\n                ...defaultSerializedCache.AccessToken,\n                ...passedInCache.AccessToken,\n            },\n            RefreshToken: {\n                ...defaultSerializedCache.RefreshToken,\n                ...passedInCache.RefreshToken,\n            },\n            AppMetadata: {\n                ...defaultSerializedCache.AppMetadata,\n                ...passedInCache.AppMetadata,\n            },\n        };\n    }\n}\n\nexport { TokenCache };\n//# sourceMappingURL=TokenCache.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\n/* eslint-disable header/header */\nconst name = \"@azure/msal-node\";\nconst version = \"2.6.2\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { AuthError } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * NodeAuthErrorMessage class containing string constants used by error codes and messages.\n */\nconst NodeAuthErrorMessage = {\n    invalidLoopbackAddressType: {\n        code: \"invalid_loopback_server_address_type\",\n        desc: \"Loopback server address is not type string. This is unexpected.\",\n    },\n    unableToLoadRedirectUri: {\n        code: \"unable_to_load_redirectUrl\",\n        desc: \"Loopback server callback was invoked without a url. This is unexpected.\",\n    },\n    noAuthCodeInResponse: {\n        code: \"no_auth_code_in_response\",\n        desc: \"No auth code found in the server response. Please check your network trace to determine what happened.\",\n    },\n    noLoopbackServerExists: {\n        code: \"no_loopback_server_exists\",\n        desc: \"No loopback server exists yet.\",\n    },\n    loopbackServerAlreadyExists: {\n        code: \"loopback_server_already_exists\",\n        desc: \"Loopback server already exists. Cannot create another.\",\n    },\n    loopbackServerTimeout: {\n        code: \"loopback_server_timeout\",\n        desc: \"Timed out waiting for auth code listener to be registered.\",\n    },\n    stateNotFoundError: {\n        code: \"state_not_found\",\n        desc: \"State not found. Please verify that the request originated from msal.\",\n    },\n};\nclass NodeAuthError extends AuthError {\n    constructor(errorCode, errorMessage) {\n        super(errorCode, errorMessage);\n        this.name = \"NodeAuthError\";\n    }\n    /**\n     * Creates an error thrown if loopback server address is of type string.\n     */\n    static createInvalidLoopbackAddressTypeError() {\n        return new NodeAuthError(NodeAuthErrorMessage.invalidLoopbackAddressType.code, `${NodeAuthErrorMessage.invalidLoopbackAddressType.desc}`);\n    }\n    /**\n     * Creates an error thrown if the loopback server is unable to get a url.\n     */\n    static createUnableToLoadRedirectUrlError() {\n        return new NodeAuthError(NodeAuthErrorMessage.unableToLoadRedirectUri.code, `${NodeAuthErrorMessage.unableToLoadRedirectUri.desc}`);\n    }\n    /**\n     * Creates an error thrown if the server response does not contain an auth code.\n     */\n    static createNoAuthCodeInResponseError() {\n        return new NodeAuthError(NodeAuthErrorMessage.noAuthCodeInResponse.code, `${NodeAuthErrorMessage.noAuthCodeInResponse.desc}`);\n    }\n    /**\n     * Creates an error thrown if the loopback server has not been spun up yet.\n     */\n    static createNoLoopbackServerExistsError() {\n        return new NodeAuthError(NodeAuthErrorMessage.noLoopbackServerExists.code, `${NodeAuthErrorMessage.noLoopbackServerExists.desc}`);\n    }\n    /**\n     * Creates an error thrown if a loopback server already exists when attempting to create another one.\n     */\n    static createLoopbackServerAlreadyExistsError() {\n        return new NodeAuthError(NodeAuthErrorMessage.loopbackServerAlreadyExists.code, `${NodeAuthErrorMessage.loopbackServerAlreadyExists.desc}`);\n    }\n    /**\n     * Creates an error thrown if the loopback server times out registering the auth code listener.\n     */\n    static createLoopbackServerTimeoutError() {\n        return new NodeAuthError(NodeAuthErrorMessage.loopbackServerTimeout.code, `${NodeAuthErrorMessage.loopbackServerTimeout.desc}`);\n    }\n    /**\n     * Creates an error thrown when the state is not present.\n     */\n    static createStateNotFoundError() {\n        return new NodeAuthError(NodeAuthErrorMessage.stateNotFoundError.code, NodeAuthErrorMessage.stateNotFoundError.desc);\n    }\n}\n\nexport { NodeAuthError, NodeAuthErrorMessage };\n//# sourceMappingURL=NodeAuthError.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { BaseClient, TimeUtils, ResponseHandler, UrlString, CcsCredentialType, RequestParameterBuilder, GrantType, StringUtils } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Oauth2.0 Password grant client\n * Note: We are only supporting public clients for password grant and for purely testing purposes\n */\nclass UsernamePasswordClient extends BaseClient {\n    constructor(configuration) {\n        super(configuration);\n    }\n    /**\n     * API to acquire a token by passing the username and password to the service in exchage of credentials\n     * password_grant\n     * @param request\n     */\n    async acquireToken(request) {\n        this.logger.info(\"in acquireToken call in username-password client\");\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await this.executeTokenRequest(this.authority, request);\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\n        // Validate response. This function throws a server error if an error is returned by the server.\n        responseHandler.validateTokenResponse(response.body);\n        const tokenResponse = responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request);\n        return tokenResponse;\n    }\n    /**\n     * Executes POST request to token endpoint\n     * @param authority\n     * @param request\n     */\n    async executeTokenRequest(authority, request) {\n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        const requestBody = this.createTokenRequestBody(request);\n        const headers = this.createTokenRequestHeaders({\n            credential: request.username,\n            type: CcsCredentialType.UPN,\n        });\n        const thumbprint = {\n            clientId: this.config.authOptions.clientId,\n            authority: authority.canonicalAuthority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\n    }\n    /**\n     * Generates a map for all the params to be sent to the service\n     * @param request\n     */\n    createTokenRequestBody(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n        parameterBuilder.addUsername(request.username);\n        parameterBuilder.addPassword(request.password);\n        parameterBuilder.addScopes(request.scopes);\n        parameterBuilder.addResponseTypeForTokenAndIdToken();\n        parameterBuilder.addGrantType(GrantType.RESOURCE_OWNER_PASSWORD_GRANT);\n        parameterBuilder.addClientInfo();\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        if (this.serverTelemetryManager) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.clientAssertion;\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n        if (!StringUtils.isEmptyObj(request.claims) ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        if (this.config.systemOptions.preventCorsPreflight &&\n            request.username) {\n            parameterBuilder.addCcsUpn(request.username);\n        }\n        return parameterBuilder.createQueryString();\n    }\n}\n\nexport { UsernamePasswordClient };\n//# sourceMappingURL=UsernamePasswordClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Logger, buildStaticAuthorityOptions, ResponseMode, AuthenticationScheme, AuthorizationCodeClient, AuthError, RefreshTokenClient, SilentFlowClient, createClientAuthError, ClientAuthErrorCodes, Constants as Constants$1, StringUtils, OIDC_DEFAULT_SCOPES, ServerTelemetryManager, Authority, AuthorityFactory } from '@azure/msal-common';\nimport { buildAppConfiguration } from '../config/Configuration.mjs';\nimport { CryptoProvider } from '../crypto/CryptoProvider.mjs';\nimport { NodeStorage } from '../cache/NodeStorage.mjs';\nimport { ApiId, Constants } from '../utils/Constants.mjs';\nimport { TokenCache } from '../cache/TokenCache.mjs';\nimport { name, version } from '../packageMetadata.mjs';\nimport { NodeAuthError } from '../error/NodeAuthError.mjs';\nimport { UsernamePasswordClient } from './UsernamePasswordClient.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Base abstract class for all ClientApplications - public and confidential\n * @public\n */\nclass ClientApplication {\n    /**\n     * Constructor for the ClientApplication\n     */\n    constructor(configuration) {\n        this.config = buildAppConfiguration(configuration);\n        this.cryptoProvider = new CryptoProvider();\n        this.logger = new Logger(this.config.system.loggerOptions, name, version);\n        this.storage = new NodeStorage(this.logger, this.config.auth.clientId, this.cryptoProvider, buildStaticAuthorityOptions(this.config.auth));\n        this.tokenCache = new TokenCache(this.storage, this.logger, this.config.cache.cachePlugin);\n    }\n    /**\n     * Creates the URL of the authorization request, letting the user input credentials and consent to the\n     * application. The URL targets the /authorize endpoint of the authority configured in the\n     * application object.\n     *\n     * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n     * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n     * `acquireTokenByCode(AuthorizationCodeRequest)`.\n     */\n    async getAuthCodeUrl(request) {\n        this.logger.info(\"getAuthCodeUrl called\", request.correlationId);\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n            responseMode: request.responseMode || ResponseMode.QUERY,\n            authenticationScheme: AuthenticationScheme.BEARER,\n        };\n        const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, undefined, undefined, request.azureCloudOptions);\n        const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);\n        this.logger.verbose(\"Auth code client created\", validRequest.correlationId);\n        return authorizationCodeClient.getAuthCodeUrl(validRequest);\n    }\n    /**\n     * Acquires a token by exchanging the Authorization Code received from the first step of OAuth2.0\n     * Authorization Code flow.\n     *\n     * `getAuthCodeUrl(AuthorizationCodeUrlRequest)` can be used to create the URL for the first step of OAuth2.0\n     * Authorization Code flow. Ensure that values for redirectUri and scopes in AuthorizationCodeUrlRequest and\n     * AuthorizationCodeRequest are the same.\n     */\n    async acquireTokenByCode(request, authCodePayLoad) {\n        this.logger.info(\"acquireTokenByCode called\");\n        if (request.state && authCodePayLoad) {\n            this.logger.info(\"acquireTokenByCode - validating state\");\n            this.validateState(request.state, authCodePayLoad.state || \"\");\n            // eslint-disable-next-line no-param-reassign\n            authCodePayLoad = { ...authCodePayLoad, state: \"\" };\n        }\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n            authenticationScheme: AuthenticationScheme.BEARER,\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByCode, validRequest.correlationId);\n        try {\n            const authClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, undefined, request.azureCloudOptions);\n            const authorizationCodeClient = new AuthorizationCodeClient(authClientConfig);\n            this.logger.verbose(\"Auth code client created\", validRequest.correlationId);\n            return await authorizationCodeClient.acquireToken(validRequest, authCodePayLoad);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Acquires a token by exchanging the refresh token provided for a new set of tokens.\n     *\n     * This API is provided only for scenarios where you would like to migrate from ADAL to MSAL. Otherwise, it is\n     * recommended that you use `acquireTokenSilent()` for silent scenarios. When using `acquireTokenSilent()`, MSAL will\n     * handle the caching and refreshing of tokens automatically.\n     */\n    async acquireTokenByRefreshToken(request) {\n        this.logger.info(\"acquireTokenByRefreshToken called\", request.correlationId);\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n            authenticationScheme: AuthenticationScheme.BEARER,\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByRefreshToken, validRequest.correlationId);\n        try {\n            const refreshTokenClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, undefined, request.azureCloudOptions);\n            const refreshTokenClient = new RefreshTokenClient(refreshTokenClientConfig);\n            this.logger.verbose(\"Refresh token client created\", validRequest.correlationId);\n            return await refreshTokenClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Acquires a token silently when a user specifies the account the token is requested for.\n     *\n     * This API expects the user to provide an account object and looks into the cache to retrieve the token if present.\n     * There is also an optional \"forceRefresh\" boolean the user can send to bypass the cache for access_token and id_token.\n     * In case the refresh_token is expired or not found, an error is thrown\n     * and the guidance is for the user to call any interactive token acquisition API (eg: `acquireTokenByCode()`).\n     */\n    async acquireTokenSilent(request) {\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n            forceRefresh: request.forceRefresh || false,\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent, validRequest.correlationId, validRequest.forceRefresh);\n        try {\n            const silentFlowClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, undefined, request.azureCloudOptions);\n            const silentFlowClient = new SilentFlowClient(silentFlowClientConfig);\n            this.logger.verbose(\"Silent flow client created\", validRequest.correlationId);\n            return await silentFlowClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Acquires tokens with password grant by exchanging client applications username and password for credentials\n     *\n     * The latest OAuth 2.0 Security Best Current Practice disallows the password grant entirely.\n     * More details on this recommendation at https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-3.4\n     * Microsoft's documentation and recommendations are at:\n     * https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-authentication-flows#usernamepassword\n     *\n     * @param request - UsenamePasswordRequest\n     */\n    async acquireTokenByUsernamePassword(request) {\n        this.logger.info(\"acquireTokenByUsernamePassword called\", request.correlationId);\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByUsernamePassword, validRequest.correlationId);\n        try {\n            const usernamePasswordClientConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, undefined, request.azureCloudOptions);\n            const usernamePasswordClient = new UsernamePasswordClient(usernamePasswordClientConfig);\n            this.logger.verbose(\"Username password client created\", validRequest.correlationId);\n            return await usernamePasswordClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Gets the token cache for the application.\n     */\n    getTokenCache() {\n        this.logger.info(\"getTokenCache called\");\n        return this.tokenCache;\n    }\n    /**\n     * Validates OIDC state by comparing the user cached state with the state received from the server.\n     *\n     * This API is provided for scenarios where you would use OAuth2.0 state parameter to mitigate against\n     * CSRF attacks.\n     * For more information about state, visit https://datatracker.ietf.org/doc/html/rfc6819#section-3.6.\n     * @param state\n     * @param cachedState\n     */\n    validateState(state, cachedState) {\n        if (!state) {\n            throw NodeAuthError.createStateNotFoundError();\n        }\n        if (state !== cachedState) {\n            throw createClientAuthError(ClientAuthErrorCodes.stateMismatch);\n        }\n    }\n    /**\n     * Returns the logger instance\n     */\n    getLogger() {\n        return this.logger;\n    }\n    /**\n     * Replaces the default logger set in configurations with new Logger with new configurations\n     * @param logger - Logger instance\n     */\n    setLogger(logger) {\n        this.logger = logger;\n    }\n    /**\n     * Builds the common configuration to be passed to the common component based on the platform configurarion\n     * @param authority - user passed authority in configuration\n     * @param serverTelemetryManager - initializes servertelemetry if passed\n     */\n    async buildOauthClientConfiguration(authority, requestCorrelationId, serverTelemetryManager, azureRegionConfiguration, azureCloudOptions) {\n        this.logger.verbose(\"buildOauthClientConfiguration called\", requestCorrelationId);\n        // precedence - azureCloudInstance + tenant >> authority and request  >> config\n        const userAzureCloudOptions = azureCloudOptions\n            ? azureCloudOptions\n            : this.config.auth.azureCloudOptions;\n        // using null assertion operator as we ensure that all config values have default values in buildConfiguration()\n        const discoveredAuthority = await this.createAuthority(authority, requestCorrelationId, azureRegionConfiguration, userAzureCloudOptions);\n        this.logger.info(`Building oauth client configuration with the following authority: ${discoveredAuthority.tokenEndpoint}.`, requestCorrelationId);\n        serverTelemetryManager?.updateRegionDiscoveryMetadata(discoveredAuthority.regionDiscoveryMetadata);\n        const clientConfiguration = {\n            authOptions: {\n                clientId: this.config.auth.clientId,\n                authority: discoveredAuthority,\n                clientCapabilities: this.config.auth.clientCapabilities,\n            },\n            loggerOptions: {\n                logLevel: this.config.system.loggerOptions.logLevel,\n                loggerCallback: this.config.system.loggerOptions.loggerCallback,\n                piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n                correlationId: requestCorrelationId,\n            },\n            cacheOptions: {\n                claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled,\n            },\n            cryptoInterface: this.cryptoProvider,\n            networkInterface: this.config.system.networkClient,\n            storageInterface: this.storage,\n            serverTelemetryManager: serverTelemetryManager,\n            clientCredentials: {\n                clientSecret: this.clientSecret,\n                clientAssertion: this.clientAssertion\n                    ? this.getClientAssertion(discoveredAuthority)\n                    : undefined,\n            },\n            libraryInfo: {\n                sku: Constants.MSAL_SKU,\n                version: version,\n                cpu: process.arch || Constants$1.EMPTY_STRING,\n                os: process.platform || Constants$1.EMPTY_STRING,\n            },\n            telemetry: this.config.telemetry,\n            persistencePlugin: this.config.cache.cachePlugin,\n            serializableCache: this.tokenCache,\n        };\n        return clientConfiguration;\n    }\n    getClientAssertion(authority) {\n        return {\n            assertion: this.clientAssertion.getJwt(this.cryptoProvider, this.config.auth.clientId, authority.tokenEndpoint),\n            assertionType: Constants.JWT_BEARER_ASSERTION_TYPE,\n        };\n    }\n    /**\n     * Generates a request with the default scopes & generates a correlationId.\n     * @param authRequest - BaseAuthRequest for initialization\n     */\n    async initializeBaseRequest(authRequest) {\n        this.logger.verbose(\"initializeRequestScopes called\", authRequest.correlationId);\n        // Default authenticationScheme to Bearer, log that POP isn't supported yet\n        if (authRequest.authenticationScheme &&\n            authRequest.authenticationScheme === AuthenticationScheme.POP) {\n            this.logger.verbose(\"Authentication Scheme 'pop' is not supported yet, setting Authentication Scheme to 'Bearer' for request\", authRequest.correlationId);\n        }\n        authRequest.authenticationScheme = AuthenticationScheme.BEARER;\n        // Set requested claims hash if claims-based caching is enabled and claims were requested\n        if (this.config.cache.claimsBasedCachingEnabled &&\n            authRequest.claims &&\n            // Checks for empty stringified object \"{}\" which doesn't qualify as requested claims\n            !StringUtils.isEmptyObj(authRequest.claims)) {\n            authRequest.requestedClaimsHash =\n                await this.cryptoProvider.hashString(authRequest.claims);\n        }\n        return {\n            ...authRequest,\n            scopes: [\n                ...((authRequest && authRequest.scopes) || []),\n                ...OIDC_DEFAULT_SCOPES,\n            ],\n            correlationId: (authRequest && authRequest.correlationId) ||\n                this.cryptoProvider.createNewGuid(),\n            authority: authRequest.authority || this.config.auth.authority,\n        };\n    }\n    /**\n     * Initializes the server telemetry payload\n     * @param apiId - Id for a specific request\n     * @param correlationId - GUID\n     * @param forceRefresh - boolean to indicate network call\n     */\n    initializeServerTelemetryManager(apiId, correlationId, forceRefresh) {\n        const telemetryPayload = {\n            clientId: this.config.auth.clientId,\n            correlationId: correlationId,\n            apiId: apiId,\n            forceRefresh: forceRefresh || false,\n        };\n        return new ServerTelemetryManager(telemetryPayload, this.storage);\n    }\n    /**\n     * Create authority instance. If authority not passed in request, default to authority set on the application\n     * object. If no authority set in application object, then default to common authority.\n     * @param authorityString - authority from user configuration\n     */\n    async createAuthority(authorityString, requestCorrelationId, azureRegionConfiguration, azureCloudOptions) {\n        this.logger.verbose(\"createAuthority called\", requestCorrelationId);\n        // build authority string based on auth params - azureCloudInstance is prioritized if provided\n        const authorityUrl = Authority.generateAuthority(authorityString, azureCloudOptions);\n        const authorityOptions = {\n            protocolMode: this.config.auth.protocolMode,\n            knownAuthorities: this.config.auth.knownAuthorities,\n            cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n            authorityMetadata: this.config.auth.authorityMetadata,\n            azureRegionConfiguration,\n            skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\n        };\n        return AuthorityFactory.createDiscoveredInstance(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger, requestCorrelationId);\n    }\n    /**\n     * Clear the cache\n     */\n    clearCache() {\n        void this.storage.clear();\n    }\n}\n\nexport { ClientApplication };\n//# sourceMappingURL=ClientApplication.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { Constants, UrlUtils, HttpStatus } from '@azure/msal-common';\nimport http from 'http';\nimport { NodeAuthError } from '../error/NodeAuthError.mjs';\nimport { Constants as Constants$1 } from '../utils/Constants.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nclass LoopbackClient {\n    /**\n     * Spins up a loopback server which returns the server response when the localhost redirectUri is hit\n     * @param successTemplate\n     * @param errorTemplate\n     * @returns\n     */\n    async listenForAuthCode(successTemplate, errorTemplate) {\n        if (this.server) {\n            throw NodeAuthError.createLoopbackServerAlreadyExistsError();\n        }\n        return new Promise((resolve, reject) => {\n            this.server = http.createServer((req, res) => {\n                const url = req.url;\n                if (!url) {\n                    res.end(errorTemplate ||\n                        \"Error occurred loading redirectUrl\");\n                    reject(NodeAuthError.createUnableToLoadRedirectUrlError());\n                    return;\n                }\n                else if (url === Constants.FORWARD_SLASH) {\n                    res.end(successTemplate ||\n                        \"Auth code was successfully acquired. You can close this window now.\");\n                    return;\n                }\n                const redirectUri = this.getRedirectUri();\n                const parsedUrl = new URL(url, redirectUri);\n                const authCodeResponse = UrlUtils.getDeserializedResponse(parsedUrl.search) || {};\n                if (authCodeResponse.code) {\n                    res.writeHead(HttpStatus.REDIRECT, {\n                        location: redirectUri,\n                    }); // Prevent auth code from being saved in the browser history\n                    res.end();\n                }\n                resolve(authCodeResponse);\n            });\n            this.server.listen(0); // Listen on any available port\n        });\n    }\n    /**\n     * Get the port that the loopback server is running on\n     * @returns\n     */\n    getRedirectUri() {\n        if (!this.server || !this.server.listening) {\n            throw NodeAuthError.createNoLoopbackServerExistsError();\n        }\n        const address = this.server.address();\n        if (!address || typeof address === \"string\" || !address.port) {\n            this.closeServer();\n            throw NodeAuthError.createInvalidLoopbackAddressTypeError();\n        }\n        const port = address && address.port;\n        return `${Constants$1.HTTP_PROTOCOL}${Constants$1.LOCALHOST}:${port}`;\n    }\n    /**\n     * Close the loopback server\n     */\n    closeServer() {\n        if (this.server) {\n            // Only stops accepting new connections, server will close once open/idle connections are closed.\n            this.server.close();\n            if (typeof this.server.closeAllConnections === \"function\") {\n                /*\n                 * Close open/idle connections. This API is available in Node versions 18.2 and higher\n                 */\n                this.server.closeAllConnections();\n            }\n            this.server.unref();\n            this.server = undefined;\n        }\n    }\n}\n\nexport { LoopbackClient };\n//# sourceMappingURL=LoopbackClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { BaseClient, TimeUtils, ResponseHandler, UrlString, RequestParameterBuilder, createClientAuthError, ClientAuthErrorCodes, Constants, createAuthError, AuthErrorCodes, GrantType, StringUtils } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * OAuth2.0 Device code client\n */\nclass DeviceCodeClient extends BaseClient {\n    constructor(configuration) {\n        super(configuration);\n    }\n    /**\n     * Gets device code from device code endpoint, calls back to with device code response, and\n     * polls token endpoint to exchange device code for tokens\n     * @param request\n     */\n    async acquireToken(request) {\n        const deviceCodeResponse = await this.getDeviceCode(request);\n        request.deviceCodeCallback(deviceCodeResponse);\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await this.acquireTokenWithDeviceCode(request, deviceCodeResponse);\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\n        // Validate response. This function throws a server error if an error is returned by the server.\n        responseHandler.validateTokenResponse(response);\n        return responseHandler.handleServerTokenResponse(response, this.authority, reqTimestamp, request);\n    }\n    /**\n     * Creates device code request and executes http GET\n     * @param request\n     */\n    async getDeviceCode(request) {\n        const queryParametersString = this.createExtraQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(this.authority.deviceCodeEndpoint, queryParametersString);\n        const queryString = this.createQueryString(request);\n        const headers = this.createTokenRequestHeaders();\n        const thumbprint = {\n            clientId: this.config.authOptions.clientId,\n            authority: request.authority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        return this.executePostRequestToDeviceCodeEndpoint(endpoint, queryString, headers, thumbprint);\n    }\n    /**\n     * Creates query string for the device code request\n     * @param request\n     */\n    createExtraQueryParameters(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n        return parameterBuilder.createQueryString();\n    }\n    /**\n     * Executes POST request to device code endpoint\n     * @param deviceCodeEndpoint\n     * @param queryString\n     * @param headers\n     */\n    async executePostRequestToDeviceCodeEndpoint(deviceCodeEndpoint, queryString, headers, thumbprint) {\n        const { body: { user_code: userCode, device_code: deviceCode, verification_uri: verificationUri, expires_in: expiresIn, interval, message, }, } = await this.networkManager.sendPostRequest(thumbprint, deviceCodeEndpoint, {\n            body: queryString,\n            headers: headers,\n        });\n        return {\n            userCode,\n            deviceCode,\n            verificationUri,\n            expiresIn,\n            interval,\n            message,\n        };\n    }\n    /**\n     * Create device code endpoint query parameters and returns string\n     */\n    createQueryString(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addScopes(request.scopes);\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n        if (request.extraQueryParameters) {\n            parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n        }\n        if (request.claims ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        return parameterBuilder.createQueryString();\n    }\n    /**\n     * Breaks the polling with specific conditions.\n     * @param request CommonDeviceCodeRequest\n     * @param deviceCodeResponse DeviceCodeResponse\n     */\n    continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, userSpecifiedCancelFlag) {\n        if (userSpecifiedCancelFlag) {\n            this.logger.error(\"Token request cancelled by setting DeviceCodeRequest.cancel = true\");\n            throw createClientAuthError(ClientAuthErrorCodes.deviceCodePollingCancelled);\n        }\n        else if (userSpecifiedTimeout &&\n            userSpecifiedTimeout < deviceCodeExpirationTime &&\n            TimeUtils.nowSeconds() > userSpecifiedTimeout) {\n            this.logger.error(`User defined timeout for device code polling reached. The timeout was set for ${userSpecifiedTimeout}`);\n            throw createClientAuthError(ClientAuthErrorCodes.userTimeoutReached);\n        }\n        else if (TimeUtils.nowSeconds() > deviceCodeExpirationTime) {\n            if (userSpecifiedTimeout) {\n                this.logger.verbose(`User specified timeout ignored as the device code has expired before the timeout elapsed. The user specified timeout was set for ${userSpecifiedTimeout}`);\n            }\n            this.logger.error(`Device code expired. Expiration time of device code was ${deviceCodeExpirationTime}`);\n            throw createClientAuthError(ClientAuthErrorCodes.deviceCodeExpired);\n        }\n        return true;\n    }\n    /**\n     * Creates token request with device code response and polls token endpoint at interval set by the device code\n     * response\n     * @param request\n     * @param deviceCodeResponse\n     */\n    async acquireTokenWithDeviceCode(request, deviceCodeResponse) {\n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(this.authority.tokenEndpoint, queryParametersString);\n        const requestBody = this.createTokenRequestBody(request, deviceCodeResponse);\n        const headers = this.createTokenRequestHeaders();\n        const userSpecifiedTimeout = request.timeout\n            ? TimeUtils.nowSeconds() + request.timeout\n            : undefined;\n        const deviceCodeExpirationTime = TimeUtils.nowSeconds() + deviceCodeResponse.expiresIn;\n        const pollingIntervalMilli = deviceCodeResponse.interval * 1000;\n        /*\n         * Poll token endpoint while (device code is not expired AND operation has not been cancelled by\n         * setting CancellationToken.cancel = true). POST request is sent at interval set by pollingIntervalMilli\n         */\n        while (this.continuePolling(deviceCodeExpirationTime, userSpecifiedTimeout, request.cancel)) {\n            const thumbprint = {\n                clientId: this.config.authOptions.clientId,\n                authority: request.authority,\n                scopes: request.scopes,\n                claims: request.claims,\n                authenticationScheme: request.authenticationScheme,\n                resourceRequestMethod: request.resourceRequestMethod,\n                resourceRequestUri: request.resourceRequestUri,\n                shrClaims: request.shrClaims,\n                sshKid: request.sshKid,\n            };\n            const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\n            if (response.body && response.body.error) {\n                // user authorization is pending. Sleep for polling interval and try again\n                if (response.body.error === Constants.AUTHORIZATION_PENDING) {\n                    this.logger.info(\"Authorization pending. Continue polling.\");\n                    await TimeUtils.delay(pollingIntervalMilli);\n                }\n                else {\n                    // for any other error, throw\n                    this.logger.info(\"Unexpected error in polling from the server\");\n                    throw createAuthError(AuthErrorCodes.postRequestFailed, response.body.error);\n                }\n            }\n            else {\n                this.logger.verbose(\"Authorization completed successfully. Polling stopped.\");\n                return response.body;\n            }\n        }\n        /*\n         * The above code should've thrown by this point, but to satisfy TypeScript,\n         * and in the rare case the conditionals in continuePolling() may not catch everything...\n         */\n        this.logger.error(\"Polling stopped for unknown reasons.\");\n        throw createClientAuthError(ClientAuthErrorCodes.deviceCodeUnknownError);\n    }\n    /**\n     * Creates query parameters and converts to string.\n     * @param request\n     * @param deviceCodeResponse\n     */\n    createTokenRequestBody(request, deviceCodeResponse) {\n        const requestParameters = new RequestParameterBuilder();\n        requestParameters.addScopes(request.scopes);\n        requestParameters.addClientId(this.config.authOptions.clientId);\n        requestParameters.addGrantType(GrantType.DEVICE_CODE_GRANT);\n        requestParameters.addDeviceCode(deviceCodeResponse.deviceCode);\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        requestParameters.addCorrelationId(correlationId);\n        requestParameters.addClientInfo();\n        requestParameters.addLibraryInfo(this.config.libraryInfo);\n        requestParameters.addApplicationTelemetry(this.config.telemetry.application);\n        requestParameters.addThrottling();\n        if (this.serverTelemetryManager) {\n            requestParameters.addServerTelemetry(this.serverTelemetryManager);\n        }\n        if (!StringUtils.isEmptyObj(request.claims) ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            requestParameters.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        return requestParameters.createQueryString();\n    }\n}\n\nexport { DeviceCodeClient };\n//# sourceMappingURL=DeviceCodeClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { ApiId, LOOPBACK_SERVER_CONSTANTS, Constants as Constants$1 } from '../utils/Constants.mjs';\nimport { AuthError, OIDC_DEFAULT_SCOPES, ResponseMode, CodeChallengeMethodValues, ServerError, Constants } from '@azure/msal-common';\nimport { ClientApplication } from './ClientApplication.mjs';\nimport { NodeAuthError, NodeAuthErrorMessage } from '../error/NodeAuthError.mjs';\nimport { LoopbackClient } from '../network/LoopbackClient.mjs';\nimport { DeviceCodeClient } from './DeviceCodeClient.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * This class is to be used to acquire tokens for public client applications (desktop, mobile). Public client applications\n * are not trusted to safely store application secrets, and therefore can only request tokens in the name of an user.\n * @public\n */\nclass PublicClientApplication extends ClientApplication {\n    /**\n     * Important attributes in the Configuration object for auth are:\n     * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal.\n     * - authority: the authority URL for your application.\n     *\n     * AAD authorities are of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\n     * - If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n     * - If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n     * - If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n     * - To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n     *\n     * Azure B2C authorities are of the form https://\\{instance\\}/\\{tenant\\}/\\{policy\\}. Each policy is considered\n     * its own authority. You will have to set the all of the knownAuthorities at the time of the client application\n     * construction.\n     *\n     * ADFS authorities are of the form https://\\{instance\\}/adfs.\n     */\n    constructor(configuration) {\n        super(configuration);\n        if (this.config.broker.nativeBrokerPlugin) {\n            if (this.config.broker.nativeBrokerPlugin.isBrokerAvailable) {\n                this.nativeBrokerPlugin = this.config.broker.nativeBrokerPlugin;\n                this.nativeBrokerPlugin.setLogger(this.config.system.loggerOptions);\n            }\n            else {\n                this.logger.warning(\"NativeBroker implementation was provided but the broker is unavailable.\");\n            }\n        }\n    }\n    /**\n     * Acquires a token from the authority using OAuth2.0 device code flow.\n     * This flow is designed for devices that do not have access to a browser or have input constraints.\n     * The authorization server issues a DeviceCode object with a verification code, an end-user code,\n     * and the end-user verification URI. The DeviceCode object is provided through a callback, and the end-user should be\n     * instructed to use another device to navigate to the verification URI to input credentials.\n     * Since the client cannot receive incoming requests, it polls the authorization server repeatedly\n     * until the end-user completes input of credentials.\n     */\n    async acquireTokenByDeviceCode(request) {\n        this.logger.info(\"acquireTokenByDeviceCode called\", request.correlationId);\n        const validRequest = Object.assign(request, await this.initializeBaseRequest(request));\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByDeviceCode, validRequest.correlationId);\n        try {\n            const deviceCodeConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, undefined, request.azureCloudOptions);\n            const deviceCodeClient = new DeviceCodeClient(deviceCodeConfig);\n            this.logger.verbose(\"Device code client created\", validRequest.correlationId);\n            return await deviceCodeClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Acquires a token interactively via the browser by requesting an authorization code then exchanging it for a token.\n     */\n    async acquireTokenInteractive(request) {\n        const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\n        this.logger.trace(\"acquireTokenInteractive called\", correlationId);\n        const { openBrowser, successTemplate, errorTemplate, windowHandle, loopbackClient: customLoopbackClient, ...remainingProperties } = request;\n        if (this.nativeBrokerPlugin) {\n            const brokerRequest = {\n                ...remainingProperties,\n                clientId: this.config.auth.clientId,\n                scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n                redirectUri: `${Constants$1.HTTP_PROTOCOL}${Constants$1.LOCALHOST}`,\n                authority: request.authority || this.config.auth.authority,\n                correlationId: correlationId,\n                extraParameters: {\n                    ...remainingProperties.extraQueryParameters,\n                    ...remainingProperties.tokenQueryParameters,\n                },\n                accountId: remainingProperties.account?.nativeAccountId,\n            };\n            return this.nativeBrokerPlugin.acquireTokenInteractive(brokerRequest, windowHandle);\n        }\n        const { verifier, challenge } = await this.cryptoProvider.generatePkceCodes();\n        const loopbackClient = customLoopbackClient || new LoopbackClient();\n        let authCodeResponse = {};\n        let authCodeListenerError = null;\n        try {\n            const authCodeListener = loopbackClient\n                .listenForAuthCode(successTemplate, errorTemplate)\n                .then((response) => {\n                authCodeResponse = response;\n            })\n                .catch((e) => {\n                // Store the promise instead of throwing so we can control when its thrown\n                authCodeListenerError = e;\n            });\n            // Wait for server to be listening\n            const redirectUri = await this.waitForRedirectUri(loopbackClient);\n            const validRequest = {\n                ...remainingProperties,\n                correlationId: correlationId,\n                scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n                redirectUri: redirectUri,\n                responseMode: ResponseMode.QUERY,\n                codeChallenge: challenge,\n                codeChallengeMethod: CodeChallengeMethodValues.S256,\n            };\n            const authCodeUrl = await this.getAuthCodeUrl(validRequest);\n            await openBrowser(authCodeUrl);\n            await authCodeListener;\n            if (authCodeListenerError) {\n                throw authCodeListenerError;\n            }\n            if (authCodeResponse.error) {\n                throw new ServerError(authCodeResponse.error, authCodeResponse.error_description, authCodeResponse.suberror);\n            }\n            else if (!authCodeResponse.code) {\n                throw NodeAuthError.createNoAuthCodeInResponseError();\n            }\n            const clientInfo = authCodeResponse.client_info;\n            const tokenRequest = {\n                code: authCodeResponse.code,\n                codeVerifier: verifier,\n                clientInfo: clientInfo || Constants.EMPTY_STRING,\n                ...validRequest,\n            };\n            return await this.acquireTokenByCode(tokenRequest); // Await this so the server doesn't close prematurely\n        }\n        finally {\n            loopbackClient.closeServer();\n        }\n    }\n    /**\n     * Returns a token retrieved either from the cache or by exchanging the refresh token for a fresh access token. If brokering is enabled the token request will be serviced by the broker.\n     * @param request\n     * @returns\n     */\n    async acquireTokenSilent(request) {\n        const correlationId = request.correlationId || this.cryptoProvider.createNewGuid();\n        this.logger.trace(\"acquireTokenSilent called\", correlationId);\n        if (this.nativeBrokerPlugin) {\n            const brokerRequest = {\n                ...request,\n                clientId: this.config.auth.clientId,\n                scopes: request.scopes || OIDC_DEFAULT_SCOPES,\n                redirectUri: `${Constants$1.HTTP_PROTOCOL}${Constants$1.LOCALHOST}`,\n                authority: request.authority || this.config.auth.authority,\n                correlationId: correlationId,\n                extraParameters: request.tokenQueryParameters,\n                accountId: request.account.nativeAccountId,\n                forceRefresh: request.forceRefresh || false,\n            };\n            return this.nativeBrokerPlugin.acquireTokenSilent(brokerRequest);\n        }\n        return super.acquireTokenSilent(request);\n    }\n    /**\n     * Removes cache artifacts associated with the given account\n     * @param request\n     * @returns\n     */\n    async signOut(request) {\n        if (this.nativeBrokerPlugin && request.account.nativeAccountId) {\n            const signoutRequest = {\n                clientId: this.config.auth.clientId,\n                accountId: request.account.nativeAccountId,\n                correlationId: request.correlationId ||\n                    this.cryptoProvider.createNewGuid(),\n            };\n            await this.nativeBrokerPlugin.signOut(signoutRequest);\n        }\n        await this.getTokenCache().removeAccount(request.account);\n    }\n    /**\n     * Returns all cached accounts for this application. If brokering is enabled this request will be serviced by the broker.\n     * @returns\n     */\n    async getAllAccounts() {\n        if (this.nativeBrokerPlugin) {\n            const correlationId = this.cryptoProvider.createNewGuid();\n            return this.nativeBrokerPlugin.getAllAccounts(this.config.auth.clientId, correlationId);\n        }\n        return this.getTokenCache().getAllAccounts();\n    }\n    /**\n     * Attempts to retrieve the redirectUri from the loopback server. If the loopback server does not start listening for requests within the timeout this will throw.\n     * @param loopbackClient\n     * @returns\n     */\n    async waitForRedirectUri(loopbackClient) {\n        return new Promise((resolve, reject) => {\n            let ticks = 0;\n            const id = setInterval(() => {\n                if (LOOPBACK_SERVER_CONSTANTS.TIMEOUT_MS /\n                    LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS <\n                    ticks) {\n                    clearInterval(id);\n                    reject(NodeAuthError.createLoopbackServerTimeoutError());\n                    return;\n                }\n                try {\n                    const r = loopbackClient.getRedirectUri();\n                    clearInterval(id);\n                    resolve(r);\n                    return;\n                }\n                catch (e) {\n                    if (e instanceof AuthError &&\n                        e.errorCode ===\n                            NodeAuthErrorMessage.noLoopbackServerExists.code) {\n                        // Loopback server is not listening yet\n                        ticks++;\n                        return;\n                    }\n                    clearInterval(id);\n                    reject(e);\n                    return;\n                }\n            }, LOOPBACK_SERVER_CONSTANTS.INTERVAL_MS);\n        });\n    }\n}\n\nexport { PublicClientApplication };\n//# sourceMappingURL=PublicClientApplication.mjs.map\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n  this.buffer = null;\n  this.writable = true;\n  this.readable = true;\n\n  // No input\n  if (!data) {\n    this.buffer = Buffer.alloc(0);\n    return this;\n  }\n\n  // Stream\n  if (typeof data.pipe === 'function') {\n    this.buffer = Buffer.alloc(0);\n    data.pipe(this);\n    return this;\n  }\n\n  // Buffer or String\n  // or Object (assumedly a passworded key)\n  if (data.length || typeof data === 'object') {\n    this.buffer = data;\n    this.writable = false;\n    process.nextTick(function () {\n      this.emit('end', data);\n      this.readable = false;\n      this.emit('close');\n    }.bind(this));\n    return this;\n  }\n\n  throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n  this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n  this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n  if (data)\n    this.write(data);\n  this.emit('end', data);\n  this.emit('close');\n  this.writable = false;\n  this.readable = false;\n};\n\nmodule.exports = DataStream;\n","/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n  // shortcutting on type is necessary for correctness\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    return false;\n  }\n\n  // buffer sizes should be well-known information, so despite this\n  // shortcutting, it doesn't leak any information about the *contents* of the\n  // buffers.\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  var c = 0;\n  for (var i = 0; i < a.length; i++) {\n    /*jshint bitwise:false */\n    c |= a[i] ^ b[i]; // XOR\n  }\n  return c === 0;\n}\n\nbufferEq.install = function() {\n  Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n    return bufferEq(this, that);\n  };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n  Buffer.prototype.equal = origBufEqual;\n  SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n","'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n","var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n  Supported algorithms are:\\n  \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n  MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n  MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return;\n  }\n\n  if (!supportsKeyObjects) {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key !== 'object') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.type !== 'string') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.asymmetricKeyType !== 'string') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n\n  if (typeof key.export !== 'function') {\n    throw typeError(MSG_INVALID_VERIFIER_KEY);\n  }\n};\n\nfunction checkIsPrivateKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return;\n  }\n\n  if (typeof key === 'object') {\n    return;\n  }\n\n  throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n  if (Buffer.isBuffer(key)) {\n    return;\n  }\n\n  if (typeof key === 'string') {\n    return key;\n  }\n\n  if (!supportsKeyObjects) {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (typeof key !== 'object') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (key.type !== 'secret') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n\n  if (typeof key.export !== 'function') {\n    throw typeError(MSG_INVALID_SECRET);\n  }\n}\n\nfunction fromBase64(base64) {\n  return base64\n    .replace(/=/g, '')\n    .replace(/\\+/g, '-')\n    .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n  base64url = base64url.toString();\n\n  var padding = 4 - base64url.length % 4;\n  if (padding !== 4) {\n    for (var i = 0; i < padding; ++i) {\n      base64url += '=';\n    }\n  }\n\n  return base64url\n    .replace(/\\-/g, '+')\n    .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n  var args = [].slice.call(arguments, 1);\n  var errMsg = util.format.bind(util, template).apply(null, args);\n  return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n  return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n  if (!bufferOrString(thing))\n    thing = JSON.stringify(thing);\n  return thing;\n}\n\nfunction createHmacSigner(bits) {\n  return function sign(thing, secret) {\n    checkIsSecretKey(secret);\n    thing = normalizeInput(thing);\n    var hmac = crypto.createHmac('sha' + bits, secret);\n    var sig = (hmac.update(thing), hmac.digest('base64'))\n    return fromBase64(sig);\n  }\n}\n\nfunction createHmacVerifier(bits) {\n  return function verify(thing, signature, secret) {\n    var computedSig = createHmacSigner(bits)(thing, secret);\n    return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n  }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n    checkIsPrivateKey(privateKey);\n    thing = normalizeInput(thing);\n    // Even though we are specifying \"RSA\" here, this works with ECDSA\n    // keys as well.\n    var signer = crypto.createSign('RSA-SHA' + bits);\n    var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n    return fromBase64(sig);\n  }\n}\n\nfunction createKeyVerifier(bits) {\n  return function verify(thing, signature, publicKey) {\n    checkIsPublicKey(publicKey);\n    thing = normalizeInput(thing);\n    signature = toBase64(signature);\n    var verifier = crypto.createVerify('RSA-SHA' + bits);\n    verifier.update(thing);\n    return verifier.verify(publicKey, signature, 'base64');\n  }\n}\n\nfunction createPSSKeySigner(bits) {\n  return function sign(thing, privateKey) {\n    checkIsPrivateKey(privateKey);\n    thing = normalizeInput(thing);\n    var signer = crypto.createSign('RSA-SHA' + bits);\n    var sig = (signer.update(thing), signer.sign({\n      key: privateKey,\n      padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n      saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n    }, 'base64'));\n    return fromBase64(sig);\n  }\n}\n\nfunction createPSSKeyVerifier(bits) {\n  return function verify(thing, signature, publicKey) {\n    checkIsPublicKey(publicKey);\n    thing = normalizeInput(thing);\n    signature = toBase64(signature);\n    var verifier = crypto.createVerify('RSA-SHA' + bits);\n    verifier.update(thing);\n    return verifier.verify({\n      key: publicKey,\n      padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n      saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n    }, signature, 'base64');\n  }\n}\n\nfunction createECDSASigner(bits) {\n  var inner = createKeySigner(bits);\n  return function sign() {\n    var signature = inner.apply(null, arguments);\n    signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n    return signature;\n  };\n}\n\nfunction createECDSAVerifer(bits) {\n  var inner = createKeyVerifier(bits);\n  return function verify(thing, signature, publicKey) {\n    signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n    var result = inner(thing, signature, publicKey);\n    return result;\n  };\n}\n\nfunction createNoneSigner() {\n  return function sign() {\n    return '';\n  }\n}\n\nfunction createNoneVerifier() {\n  return function verify(thing, signature) {\n    return signature === '';\n  }\n}\n\nmodule.exports = function jwa(algorithm) {\n  var signerFactories = {\n    hs: createHmacSigner,\n    rs: createKeySigner,\n    ps: createPSSKeySigner,\n    es: createECDSASigner,\n    none: createNoneSigner,\n  }\n  var verifierFactories = {\n    hs: createHmacVerifier,\n    rs: createKeyVerifier,\n    ps: createPSSKeyVerifier,\n    es: createECDSAVerifer,\n    none: createNoneVerifier,\n  }\n  var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n  if (!match)\n    throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n  var algo = (match[1] || match[3]).toLowerCase();\n  var bits = match[2];\n\n  return {\n    sign: signerFactories[algo](bits),\n    verify: verifierFactories[algo](bits),\n  }\n};\n","/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n  if (typeof obj === 'string')\n    return obj;\n  if (typeof obj === 'number' || Buffer.isBuffer(obj))\n    return obj.toString();\n  return JSON.stringify(obj);\n};\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n  return Buffer\n    .from(string, encoding)\n    .toString('base64')\n    .replace(/=/g, '')\n    .replace(/\\+/g, '-')\n    .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n  encoding = encoding || 'utf8';\n  var encodedHeader = base64url(toString(header), 'binary');\n  var encodedPayload = base64url(toString(payload), encoding);\n  return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n  var header = opts.header;\n  var payload = opts.payload;\n  var secretOrKey = opts.secret || opts.privateKey;\n  var encoding = opts.encoding;\n  var algo = jwa(header.alg);\n  var securedInput = jwsSecuredInput(header, payload, encoding);\n  var signature = algo.sign(securedInput, secretOrKey);\n  return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n  var secret = opts.secret||opts.privateKey||opts.key;\n  var secretStream = new DataStream(secret);\n  this.readable = true;\n  this.header = opts.header;\n  this.encoding = opts.encoding;\n  this.secret = this.privateKey = this.key = secretStream;\n  this.payload = new DataStream(opts.payload);\n  this.secret.once('close', function () {\n    if (!this.payload.writable && this.readable)\n      this.sign();\n  }.bind(this));\n\n  this.payload.once('close', function () {\n    if (!this.secret.writable && this.readable)\n      this.sign();\n  }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n  try {\n    var signature = jwsSign({\n      header: this.header,\n      payload: this.payload.buffer,\n      secret: this.secret.buffer,\n      encoding: this.encoding\n    });\n    this.emit('done', signature);\n    this.emit('data', signature);\n    this.emit('end');\n    this.readable = false;\n    return signature;\n  } catch (e) {\n    this.readable = false;\n    this.emit('error', e);\n    this.emit('close');\n  }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n  return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n  if (isObject(thing))\n    return thing;\n  try { return JSON.parse(thing); }\n  catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n  var encodedHeader = jwsSig.split('.', 1)[0];\n  return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n  return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n  return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n  encoding = encoding || 'utf8';\n  var payload = jwsSig.split('.')[1];\n  return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n  return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n  if (!algorithm) {\n    var err = new Error(\"Missing algorithm parameter for jws.verify\");\n    err.code = \"MISSING_ALGORITHM\";\n    throw err;\n  }\n  jwsSig = toString(jwsSig);\n  var signature = signatureFromJWS(jwsSig);\n  var securedInput = securedInputFromJWS(jwsSig);\n  var algo = jwa(algorithm);\n  return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n  opts = opts || {};\n  jwsSig = toString(jwsSig);\n\n  if (!isValidJws(jwsSig))\n    return null;\n\n  var header = headerFromJWS(jwsSig);\n\n  if (!header)\n    return null;\n\n  var payload = payloadFromJWS(jwsSig);\n  if (header.typ === 'JWT' || opts.json)\n    payload = JSON.parse(payload, opts.encoding);\n\n  return {\n    header: header,\n    payload: payload,\n    signature: signatureFromJWS(jwsSig)\n  };\n}\n\nfunction VerifyStream(opts) {\n  opts = opts || {};\n  var secretOrKey = opts.secret||opts.publicKey||opts.key;\n  var secretStream = new DataStream(secretOrKey);\n  this.readable = true;\n  this.algorithm = opts.algorithm;\n  this.encoding = opts.encoding;\n  this.secret = this.publicKey = this.key = secretStream;\n  this.signature = new DataStream(opts.signature);\n  this.secret.once('close', function () {\n    if (!this.signature.writable && this.readable)\n      this.verify();\n  }.bind(this));\n\n  this.signature.once('close', function () {\n    if (!this.secret.writable && this.readable)\n      this.verify();\n  }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n  try {\n    var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n    var obj = jwsDecode(this.signature.buffer, this.encoding);\n    this.emit('done', valid, obj);\n    this.emit('data', valid);\n    this.emit('end');\n    this.readable = false;\n    return valid;\n  } catch (e) {\n    this.readable = false;\n    this.emit('error', e);\n    this.emit('close');\n  }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n  'HS256', 'HS384', 'HS512',\n  'RS256', 'RS384', 'RS512',\n  'PS256', 'PS384', 'PS512',\n  'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n  return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n  return new VerifyStream(opts);\n};\n","var jws = require('jws');\n\nmodule.exports = function (jwt, options) {\n  options = options || {};\n  var decoded = jws.decode(jwt, options);\n  if (!decoded) { return null; }\n  var payload = decoded.payload;\n\n  //try parse the payload\n  if(typeof payload === 'string') {\n    try {\n      var obj = JSON.parse(payload);\n      if(obj !== null && typeof obj === 'object') {\n        payload = obj;\n      }\n    } catch (e) { }\n  }\n\n  //return header if `complete` option is enabled.  header includes claims\n  //such as `kid` and `alg` used to select the key within a JWKS needed to\n  //verify the signature\n  if (options.complete === true) {\n    return {\n      header: decoded.header,\n      payload: payload,\n      signature: decoded.signature\n    };\n  }\n  return payload;\n};\n","var JsonWebTokenError = function (message, error) {\n  Error.call(this, message);\n  if(Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  }\n  this.name = 'JsonWebTokenError';\n  this.message = message;\n  if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar NotBeforeError = function (message, date) {\n  JsonWebTokenError.call(this, message);\n  this.name = 'NotBeforeError';\n  this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\n\nvar TokenExpiredError = function (message, expiredAt) {\n  JsonWebTokenError.call(this, message);\n  this.name = 'TokenExpiredError';\n  this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","var ms = require('ms');\n\nmodule.exports = function (time, iat) {\n  var timestamp = iat || Math.floor(Date.now() / 1000);\n\n  if (typeof time === 'string') {\n    var milliseconds = ms(time);\n    if (typeof milliseconds === 'undefined') {\n      return;\n    }\n    return Math.floor(timestamp + milliseconds / 1000);\n  } else if (typeof time === 'number') {\n    return timestamp + time;\n  } else {\n    return;\n  }\n\n};","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n","const debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n","const {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (!identifier && identifierBase === false) {\n          throw new Error('invalid increment argument: identifier is empty')\n        }\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n  if (typeof (options) === 'string') {\n    identifierBase = identifier\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(\n      version instanceof SemVer ? version.version : version,\n      options\n    ).inc(release, identifier, identifierBase).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // Otherwise it can be determined by checking the high version\n\n    if (highVersion.patch) {\n      // anything higher than a patch bump would result in the wrong version\n      return 'patch'\n    }\n\n    if (highVersion.minor) {\n      // anything higher than a minor bump would result in the wrong version\n      return 'minor'\n    }\n\n    // bumping major/minor/patch all have same result\n    return 'major'\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are preleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 0; i < nodes.length; i++) {\n    walker = insert(this, walker, nodes[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.format()\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range\n      .trim()\n      .split(/\\s+/)\n      .join(' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.format()\n  }\n\n  format () {\n    this.range = this.set\n      .map((comps) => comps.join(' ').trim())\n      .join('||')\n      .trim()\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let first = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!first) {\n        first = version\n      }\n    } else {\n      if (prev) {\n        set.push([first, prev])\n      }\n      prev = null\n      first = null\n    }\n  }\n  if (first) {\n    set.push([first, null])\n  }\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max) {\n      ranges.push(min)\n    } else if (!max && min === v[0]) {\n      ranges.push('*')\n    } else if (!max) {\n      ranges.push(`>=${min}`)\n    } else if (min === v[0]) {\n      ranges.push(`<=${max}`)\n    } else {\n      ranges.push(`${min} - ${max}`)\n    }\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = minimumVersionWithPreRelease\n    } else {\n      sub = minimumVersion\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = minimumVersion\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n  parse,\n  valid,\n  clean,\n  inc,\n  diff,\n  major,\n  minor,\n  patch,\n  prerelease,\n  compare,\n  rcompare,\n  compareLoose,\n  compareBuild,\n  sort,\n  rsort,\n  gt,\n  lt,\n  eq,\n  neq,\n  gte,\n  lte,\n  cmp,\n  coerce,\n  Comparator,\n  Range,\n  satisfies,\n  toComparators,\n  maxSatisfying,\n  minSatisfying,\n  minVersion,\n  validRange,\n  outside,\n  gtr,\n  ltr,\n  intersects,\n  simplifyRange,\n  subset,\n  SemVer,\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n  RELEASE_TYPES: constants.RELEASE_TYPES,\n  compareIdentifiers: identifiers.compareIdentifiers,\n  rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=15.7.0');\n","const semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '>=16.9.0');\n","const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported');\nconst RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported');\n\nconst allowedAlgorithmsForKeys = {\n  'ec': ['ES256', 'ES384', 'ES512'],\n  'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],\n  'rsa-pss': ['PS256', 'PS384', 'PS512']\n};\n\nconst allowedCurves = {\n  ES256: 'prime256v1',\n  ES384: 'secp384r1',\n  ES512: 'secp521r1',\n};\n\nmodule.exports = function(algorithm, key) {\n  if (!algorithm || !key) return;\n\n  const keyType = key.asymmetricKeyType;\n  if (!keyType) return;\n\n  const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];\n\n  if (!allowedAlgorithms) {\n    throw new Error(`Unknown key type \"${keyType}\".`);\n  }\n\n  if (!allowedAlgorithms.includes(algorithm)) {\n    throw new Error(`\"alg\" parameter for \"${keyType}\" key type must be one of: ${allowedAlgorithms.join(', ')}.`)\n  }\n\n  /*\n   * Ignore the next block from test coverage because it gets executed\n   * conditionally depending on the Node version. Not ignoring it would\n   * prevent us from reaching the target % of coverage for versions of\n   * Node under 15.7.0.\n   */\n  /* istanbul ignore next */\n  if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {\n    switch (keyType) {\n    case 'ec':\n      const keyCurve = key.asymmetricKeyDetails.namedCurve;\n      const allowedCurve = allowedCurves[algorithm];\n\n      if (keyCurve !== allowedCurve) {\n        throw new Error(`\"alg\" parameter \"${algorithm}\" requires curve \"${allowedCurve}\".`);\n      }\n      break;\n\n    case 'rsa-pss':\n      if (RSA_PSS_KEY_DETAILS_SUPPORTED) {\n        const length = parseInt(algorithm.slice(-3), 10);\n        const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n\n        if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {\n          throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${algorithm}.`);\n        }\n\n        if (saltLength !== undefined && saltLength > length >> 3) {\n          throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${algorithm}.`)\n        }\n      }\n      break;\n    }\n  }\n}\n","var semver = require('semver');\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n","const JsonWebTokenError = require('./lib/JsonWebTokenError');\nconst NotBeforeError = require('./lib/NotBeforeError');\nconst TokenExpiredError = require('./lib/TokenExpiredError');\nconst decode = require('./decode');\nconst timespan = require('./lib/timespan');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst jws = require('jws');\nconst {KeyObject, createSecretKey, createPublicKey} = require(\"crypto\");\n\nconst PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];\nconst RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n  PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n  RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n  if ((typeof options === 'function') && !callback) {\n    callback = options;\n    options = {};\n  }\n\n  if (!options) {\n    options = {};\n  }\n\n  //clone this object since we are going to mutate it.\n  options = Object.assign({}, options);\n\n  let done;\n\n  if (callback) {\n    done = callback;\n  } else {\n    done = function(err, data) {\n      if (err) throw err;\n      return data;\n    };\n  }\n\n  if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n    return done(new JsonWebTokenError('clockTimestamp must be a number'));\n  }\n\n  if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n    return done(new JsonWebTokenError('nonce must be a non-empty string'));\n  }\n\n  if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {\n    return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));\n  }\n\n  const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n  if (!jwtString){\n    return done(new JsonWebTokenError('jwt must be provided'));\n  }\n\n  if (typeof jwtString !== 'string') {\n    return done(new JsonWebTokenError('jwt must be a string'));\n  }\n\n  const parts = jwtString.split('.');\n\n  if (parts.length !== 3){\n    return done(new JsonWebTokenError('jwt malformed'));\n  }\n\n  let decodedToken;\n\n  try {\n    decodedToken = decode(jwtString, { complete: true });\n  } catch(err) {\n    return done(err);\n  }\n\n  if (!decodedToken) {\n    return done(new JsonWebTokenError('invalid token'));\n  }\n\n  const header = decodedToken.header;\n  let getSecret;\n\n  if(typeof secretOrPublicKey === 'function') {\n    if(!callback) {\n      return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n    }\n\n    getSecret = secretOrPublicKey;\n  }\n  else {\n    getSecret = function(header, secretCallback) {\n      return secretCallback(null, secretOrPublicKey);\n    };\n  }\n\n  return getSecret(header, function(err, secretOrPublicKey) {\n    if(err) {\n      return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n    }\n\n    const hasSignature = parts[2].trim() !== '';\n\n    if (!hasSignature && secretOrPublicKey){\n      return done(new JsonWebTokenError('jwt signature is required'));\n    }\n\n    if (hasSignature && !secretOrPublicKey) {\n      return done(new JsonWebTokenError('secret or public key must be provided'));\n    }\n\n    if (!hasSignature && !options.algorithms) {\n      return done(new JsonWebTokenError('please specify \"none\" in \"algorithms\" to verify unsigned tokens'));\n    }\n\n    if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {\n      try {\n        secretOrPublicKey = createPublicKey(secretOrPublicKey);\n      } catch (_) {\n        try {\n          secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);\n        } catch (_) {\n          return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))\n        }\n      }\n    }\n\n    if (!options.algorithms) {\n      if (secretOrPublicKey.type === 'secret') {\n        options.algorithms = HS_ALGS;\n      } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {\n        options.algorithms = RSA_KEY_ALGS\n      } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {\n        options.algorithms = EC_KEY_ALGS\n      } else {\n        options.algorithms = PUB_KEY_ALGS\n      }\n    }\n\n    if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {\n      return done(new JsonWebTokenError('invalid algorithm'));\n    }\n\n    if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {\n      return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))\n    } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {\n      return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))\n    }\n\n    if (!options.allowInvalidAsymmetricKeyTypes) {\n      try {\n        validateAsymmetricKey(header.alg, secretOrPublicKey);\n      } catch (e) {\n        return done(e);\n      }\n    }\n\n    let valid;\n\n    try {\n      valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n    } catch (e) {\n      return done(e);\n    }\n\n    if (!valid) {\n      return done(new JsonWebTokenError('invalid signature'));\n    }\n\n    const payload = decodedToken.payload;\n\n    if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n      if (typeof payload.nbf !== 'number') {\n        return done(new JsonWebTokenError('invalid nbf value'));\n      }\n      if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n        return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n      }\n    }\n\n    if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n      if (typeof payload.exp !== 'number') {\n        return done(new JsonWebTokenError('invalid exp value'));\n      }\n      if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n        return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n      }\n    }\n\n    if (options.audience) {\n      const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n      const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n      const match = target.some(function (targetAudience) {\n        return audiences.some(function (audience) {\n          return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n        });\n      });\n\n      if (!match) {\n        return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n      }\n    }\n\n    if (options.issuer) {\n      const invalid_issuer =\n              (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n              (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n      if (invalid_issuer) {\n        return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n      }\n    }\n\n    if (options.subject) {\n      if (payload.sub !== options.subject) {\n        return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n      }\n    }\n\n    if (options.jwtid) {\n      if (payload.jti !== options.jwtid) {\n        return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n      }\n    }\n\n    if (options.nonce) {\n      if (payload.nonce !== options.nonce) {\n        return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n      }\n    }\n\n    if (options.maxAge) {\n      if (typeof payload.iat !== 'number') {\n        return done(new JsonWebTokenError('iat required when maxAge is specified'));\n      }\n\n      const maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n      if (typeof maxAgeTimestamp === 'undefined') {\n        return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n      }\n      if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n        return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n      }\n    }\n\n    if (options.complete === true) {\n      const signature = decodedToken.signature;\n\n      return done(null, {\n        header: header,\n        payload: payload,\n        signature: signature\n      });\n    }\n\n    return done(null, payload);\n  });\n};\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n  collection = isArrayLike(collection) ? collection : values(collection);\n  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n  var length = collection.length;\n  if (fromIndex < 0) {\n    fromIndex = nativeMax(length + fromIndex, 0);\n  }\n  return isString(collection)\n    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n  return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) ||\n      objectToString.call(value) != objectTag || isHostObject(value)) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return (typeof Ctor == 'function' &&\n    Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n  return typeof value == 'string' ||\n    (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308,\n    NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n  var result;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  n = toInteger(n);\n  return function() {\n    if (--n > 0) {\n      result = func.apply(this, arguments);\n    }\n    if (n <= 1) {\n      func = undefined;\n    }\n    return result;\n  };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n  return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n","const timespan = require('./lib/timespan');\nconst PS_SUPPORTED = require('./lib/psSupported');\nconst validateAsymmetricKey = require('./lib/validateAsymmetricKey');\nconst jws = require('jws');\nconst includes = require('lodash.includes');\nconst isBoolean = require('lodash.isboolean');\nconst isInteger = require('lodash.isinteger');\nconst isNumber = require('lodash.isnumber');\nconst isPlainObject = require('lodash.isplainobject');\nconst isString = require('lodash.isstring');\nconst once = require('lodash.once');\nconst { KeyObject, createSecretKey, createPrivateKey } = require('crypto')\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n  SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n  expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n  notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n  audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n  algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n  header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n  encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n  issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n  subject: { isValid: isString, message: '\"subject\" must be a string' },\n  jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n  noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n  keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n  mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n  allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n  allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n  iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n  exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n  nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n  if (!isPlainObject(object)) {\n    throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n  }\n  Object.keys(object)\n    .forEach(function(key) {\n      const validator = schema[key];\n      if (!validator) {\n        if (!allowUnknown) {\n          throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n        }\n        return;\n      }\n      if (!validator.isValid(object[key])) {\n        throw new Error(validator.message);\n      }\n    });\n}\n\nfunction validateOptions(options) {\n  return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n  return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n  'audience': 'aud',\n  'issuer': 'iss',\n  'subject': 'sub',\n  'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n  'expiresIn',\n  'notBefore',\n  'noTimestamp',\n  'audience',\n  'issuer',\n  'subject',\n  'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n  if (typeof options === 'function') {\n    callback = options;\n    options = {};\n  } else {\n    options = options || {};\n  }\n\n  const isObjectPayload = typeof payload === 'object' &&\n                        !Buffer.isBuffer(payload);\n\n  const header = Object.assign({\n    alg: options.algorithm || 'HS256',\n    typ: isObjectPayload ? 'JWT' : undefined,\n    kid: options.keyid\n  }, options.header);\n\n  function failure(err) {\n    if (callback) {\n      return callback(err);\n    }\n    throw err;\n  }\n\n  if (!secretOrPrivateKey && options.algorithm !== 'none') {\n    return failure(new Error('secretOrPrivateKey must have a value'));\n  }\n\n  if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n    try {\n      secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n    } catch (_) {\n      try {\n        secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n      } catch (_) {\n        return failure(new Error('secretOrPrivateKey is not valid key material'));\n      }\n    }\n  }\n\n  if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n    return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n  } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n    if (secretOrPrivateKey.type !== 'private') {\n      return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n    }\n    if (!options.allowInsecureKeySizes &&\n      !header.alg.startsWith('ES') &&\n      secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n      secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n      return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n    }\n  }\n\n  if (typeof payload === 'undefined') {\n    return failure(new Error('payload is required'));\n  } else if (isObjectPayload) {\n    try {\n      validatePayload(payload);\n    }\n    catch (error) {\n      return failure(error);\n    }\n    if (!options.mutatePayload) {\n      payload = Object.assign({},payload);\n    }\n  } else {\n    const invalid_options = options_for_objects.filter(function (opt) {\n      return typeof options[opt] !== 'undefined';\n    });\n\n    if (invalid_options.length > 0) {\n      return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n    }\n  }\n\n  if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n    return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n  }\n\n  if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n    return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n  }\n\n  try {\n    validateOptions(options);\n  }\n  catch (error) {\n    return failure(error);\n  }\n\n  if (!options.allowInvalidAsymmetricKeyTypes) {\n    try {\n      validateAsymmetricKey(header.alg, secretOrPrivateKey);\n    } catch (error) {\n      return failure(error);\n    }\n  }\n\n  const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n  if (options.noTimestamp) {\n    delete payload.iat;\n  } else if (isObjectPayload) {\n    payload.iat = timestamp;\n  }\n\n  if (typeof options.notBefore !== 'undefined') {\n    try {\n      payload.nbf = timespan(options.notBefore, timestamp);\n    }\n    catch (err) {\n      return failure(err);\n    }\n    if (typeof payload.nbf === 'undefined') {\n      return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n    }\n  }\n\n  if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n    try {\n      payload.exp = timespan(options.expiresIn, timestamp);\n    }\n    catch (err) {\n      return failure(err);\n    }\n    if (typeof payload.exp === 'undefined') {\n      return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n    }\n  }\n\n  Object.keys(options_to_payload).forEach(function (key) {\n    const claim = options_to_payload[key];\n    if (typeof options[key] !== 'undefined') {\n      if (typeof payload[claim] !== 'undefined') {\n        return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n      }\n      payload[claim] = options[key];\n    }\n  });\n\n  const encoding = options.encoding || 'utf8';\n\n  if (typeof callback === 'function') {\n    callback = callback && once(callback);\n\n    jws.createSign({\n      header: header,\n      privateKey: secretOrPrivateKey,\n      payload: payload,\n      encoding: encoding\n    }).once('error', callback)\n      .once('done', function (signature) {\n        // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n        if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n          return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n        }\n        callback(null, signature);\n      });\n  } else {\n    let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n    // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n    if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n      throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n    }\n    return signature\n  }\n};\n","module.exports = {\n  decode: require('./decode'),\n  verify: require('./verify'),\n  sign: require('./sign'),\n  JsonWebTokenError: require('./lib/JsonWebTokenError'),\n  NotBeforeError: require('./lib/NotBeforeError'),\n  TokenExpiredError: require('./lib/TokenExpiredError'),\n};\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport jwt from 'jsonwebtoken';\nimport { createClientAuthError, ClientAuthErrorCodes, TimeUtils, Constants } from '@azure/msal-common';\nimport { EncodingUtils } from '../utils/EncodingUtils.mjs';\nimport { JwtConstants } from '../utils/Constants.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * Client assertion of type jwt-bearer used in confidential client flows\n * @public\n */\nclass ClientAssertion {\n    /**\n     * Initialize the ClientAssertion class from the clientAssertion passed by the user\n     * @param assertion - refer https://tools.ietf.org/html/rfc7521\n     */\n    static fromAssertion(assertion) {\n        const clientAssertion = new ClientAssertion();\n        clientAssertion.jwt = assertion;\n        return clientAssertion;\n    }\n    /**\n     * Initialize the ClientAssertion class from the certificate passed by the user\n     * @param thumbprint - identifier of a certificate\n     * @param privateKey - secret key\n     * @param publicCertificate - electronic document provided to prove the ownership of the public key\n     */\n    static fromCertificate(thumbprint, privateKey, publicCertificate) {\n        const clientAssertion = new ClientAssertion();\n        clientAssertion.privateKey = privateKey;\n        clientAssertion.thumbprint = thumbprint;\n        if (publicCertificate) {\n            clientAssertion.publicCertificate =\n                this.parseCertificate(publicCertificate);\n        }\n        return clientAssertion;\n    }\n    /**\n     * Update JWT for certificate based clientAssertion, if passed by the user, uses it as is\n     * @param cryptoProvider - library's crypto helper\n     * @param issuer - iss claim\n     * @param jwtAudience - aud claim\n     */\n    getJwt(cryptoProvider, issuer, jwtAudience) {\n        // if assertion was created from certificate, check if jwt is expired and create new one.\n        if (this.privateKey && this.thumbprint) {\n            if (this.jwt &&\n                !this.isExpired() &&\n                issuer === this.issuer &&\n                jwtAudience === this.jwtAudience) {\n                return this.jwt;\n            }\n            return this.createJwt(cryptoProvider, issuer, jwtAudience);\n        }\n        /*\n         * if assertion was created by caller, then we just append it. It is up to the caller to\n         * ensure that it contains necessary claims and that it is not expired.\n         */\n        if (this.jwt) {\n            return this.jwt;\n        }\n        throw createClientAuthError(ClientAuthErrorCodes.invalidAssertion);\n    }\n    /**\n     * JWT format and required claims specified: https://tools.ietf.org/html/rfc7523#section-3\n     */\n    createJwt(cryptoProvider, issuer, jwtAudience) {\n        this.issuer = issuer;\n        this.jwtAudience = jwtAudience;\n        const issuedAt = TimeUtils.nowSeconds();\n        this.expirationTime = issuedAt + 600;\n        const header = {\n            alg: JwtConstants.RSA_256,\n            x5t: EncodingUtils.base64EncodeUrl(this.thumbprint, \"hex\"),\n        };\n        if (this.publicCertificate) {\n            Object.assign(header, {\n                x5c: this.publicCertificate,\n            });\n        }\n        const payload = {\n            [JwtConstants.AUDIENCE]: this.jwtAudience,\n            [JwtConstants.EXPIRATION_TIME]: this.expirationTime,\n            [JwtConstants.ISSUER]: this.issuer,\n            [JwtConstants.SUBJECT]: this.issuer,\n            [JwtConstants.NOT_BEFORE]: issuedAt,\n            [JwtConstants.JWT_ID]: cryptoProvider.createNewGuid(),\n        };\n        this.jwt = jwt.sign(payload, this.privateKey, { header });\n        return this.jwt;\n    }\n    /**\n     * Utility API to check expiration\n     */\n    isExpired() {\n        return this.expirationTime < TimeUtils.nowSeconds();\n    }\n    /**\n     * Extracts the raw certs from a given certificate string and returns them in an array.\n     * @param publicCertificate - electronic document provided to prove the ownership of the public key\n     */\n    static parseCertificate(publicCertificate) {\n        /**\n         * This is regex to identify the certs in a given certificate string.\n         * We want to look for the contents between the BEGIN and END certificate strings, without the associated newlines.\n         * The information in parens \"(.+?)\" is the capture group to represent the cert we want isolated.\n         * \".\" means any string character, \"+\" means match 1 or more times, and \"?\" means the shortest match.\n         * The \"g\" at the end of the regex means search the string globally, and the \"s\" enables the \".\" to match newlines.\n         */\n        const regexToFindCerts = /-----BEGIN CERTIFICATE-----\\r*\\n(.+?)\\r*\\n-----END CERTIFICATE-----/gs;\n        const certs = [];\n        let matches;\n        while ((matches = regexToFindCerts.exec(publicCertificate)) !== null) {\n            // matches[1] represents the first parens capture group in the regex.\n            certs.push(matches[1].replace(/\\r*\\n/g, Constants.EMPTY_STRING));\n        }\n        return certs;\n    }\n}\n\nexport { ClientAssertion };\n//# sourceMappingURL=ClientAssertion.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { BaseClient, ScopeSet, CacheOutcome, TokenCacheContext, TimeUtils, ResponseHandler, Constants, CredentialType, createClientAuthError, ClientAuthErrorCodes, UrlString, RequestParameterBuilder, GrantType, StringUtils, AuthenticationScheme } from '@azure/msal-common';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * OAuth2.0 client credential grant\n */\nclass ClientCredentialClient extends BaseClient {\n    constructor(configuration, appTokenProvider) {\n        super(configuration);\n        this.appTokenProvider = appTokenProvider;\n    }\n    /**\n     * Public API to acquire a token with ClientCredential Flow for Confidential clients\n     * @param request\n     */\n    async acquireToken(request) {\n        this.scopeSet = new ScopeSet(request.scopes || []);\n        if (request.skipCache) {\n            return this.executeTokenRequest(request, this.authority);\n        }\n        const [cachedAuthenticationResult, lastCacheOutcome] = await this.getCachedAuthenticationResult(request);\n        if (cachedAuthenticationResult) {\n            // if the token is not expired but must be refreshed; get a new one in the background\n            if (lastCacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n                this.logger.info(\"ClientCredentialClient:getCachedAuthenticationResult - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\");\n                // refresh the access token in the background\n                const refreshAccessToken = true;\n                await this.executeTokenRequest(request, this.authority, refreshAccessToken);\n            }\n            // return the cached token\n            return cachedAuthenticationResult;\n        }\n        else {\n            return this.executeTokenRequest(request, this.authority);\n        }\n    }\n    /**\n     * looks up cache if the tokens are cached already\n     */\n    async getCachedAuthenticationResult(request) {\n        let lastCacheOutcome = CacheOutcome.NOT_APPLICABLE;\n        // read the user-supplied cache into memory, if applicable\n        let cacheContext;\n        if (this.config.serializableCache && this.config.persistencePlugin) {\n            cacheContext = new TokenCacheContext(this.config.serializableCache, false);\n            await this.config.persistencePlugin.beforeCacheAccess(cacheContext);\n        }\n        const cachedAccessToken = this.readAccessTokenFromCache();\n        if (this.config.serializableCache &&\n            this.config.persistencePlugin &&\n            cacheContext) {\n            await this.config.persistencePlugin.afterCacheAccess(cacheContext);\n        }\n        // must refresh due to non-existent access_token\n        if (!cachedAccessToken) {\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\n            return [null, CacheOutcome.NO_CACHED_ACCESS_TOKEN];\n        }\n        // must refresh due to the expires_in value\n        if (TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\n            return [null, CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED];\n        }\n        // must refresh (in the background) due to the refresh_in value\n        if (cachedAccessToken.refreshOn &&\n            TimeUtils.isTokenExpired(cachedAccessToken.refreshOn.toString(), 0)) {\n            lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.PROACTIVELY_REFRESHED);\n        }\n        return [\n            await ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\n                account: null,\n                idToken: null,\n                accessToken: cachedAccessToken,\n                refreshToken: null,\n                appMetadata: null,\n            }, true, request),\n            lastCacheOutcome,\n        ];\n    }\n    /**\n     * Reads access token from the cache\n     */\n    readAccessTokenFromCache() {\n        const accessTokenFilter = {\n            homeAccountId: Constants.EMPTY_STRING,\n            environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\n            credentialType: CredentialType.ACCESS_TOKEN,\n            clientId: this.config.authOptions.clientId,\n            realm: this.authority.tenant,\n            target: ScopeSet.createSearchScopes(this.scopeSet.asArray()),\n        };\n        const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter);\n        if (accessTokens.length < 1) {\n            return null;\n        }\n        else if (accessTokens.length > 1) {\n            throw createClientAuthError(ClientAuthErrorCodes.multipleMatchingTokens);\n        }\n        return accessTokens[0];\n    }\n    /**\n     * Makes a network call to request the token from the service\n     * @param request\n     * @param authority\n     */\n    async executeTokenRequest(request, authority, refreshAccessToken) {\n        let serverTokenResponse;\n        let reqTimestamp;\n        if (this.appTokenProvider) {\n            this.logger.info(\"Using appTokenProvider extensibility.\");\n            const appTokenPropviderParameters = {\n                correlationId: request.correlationId,\n                tenantId: this.config.authOptions.authority.tenant,\n                scopes: request.scopes,\n                claims: request.claims,\n            };\n            reqTimestamp = TimeUtils.nowSeconds();\n            const appTokenProviderResult = await this.appTokenProvider(appTokenPropviderParameters);\n            serverTokenResponse = {\n                access_token: appTokenProviderResult.accessToken,\n                expires_in: appTokenProviderResult.expiresInSeconds,\n                refresh_in: appTokenProviderResult.refreshInSeconds,\n                token_type: AuthenticationScheme.BEARER,\n            };\n        }\n        else {\n            const queryParametersString = this.createTokenQueryParameters(request);\n            const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n            const requestBody = this.createTokenRequestBody(request);\n            const headers = this.createTokenRequestHeaders();\n            const thumbprint = {\n                clientId: this.config.authOptions.clientId,\n                authority: request.authority,\n                scopes: request.scopes,\n                claims: request.claims,\n                authenticationScheme: request.authenticationScheme,\n                resourceRequestMethod: request.resourceRequestMethod,\n                resourceRequestUri: request.resourceRequestUri,\n                shrClaims: request.shrClaims,\n                sshKid: request.sshKid,\n            };\n            this.logger.info(\"Sending token request to endpoint: \" + authority.tokenEndpoint);\n            reqTimestamp = TimeUtils.nowSeconds();\n            const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\n            serverTokenResponse = response.body;\n            serverTokenResponse.status = response.status;\n        }\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\n        responseHandler.validateTokenResponse(serverTokenResponse, refreshAccessToken);\n        const tokenResponse = await responseHandler.handleServerTokenResponse(serverTokenResponse, this.authority, reqTimestamp, request);\n        return tokenResponse;\n    }\n    /**\n     * generate the request to the server in the acceptable format\n     * @param request\n     */\n    createTokenRequestBody(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n        parameterBuilder.addScopes(request.scopes, false);\n        parameterBuilder.addGrantType(GrantType.CLIENT_CREDENTIALS_GRANT);\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        if (this.serverTelemetryManager) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n        // Use clientAssertion from request, fallback to client assertion in base configuration\n        const clientAssertion = request.clientAssertion ||\n            this.config.clientCredentials.clientAssertion;\n        if (clientAssertion) {\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n        if (!StringUtils.isEmptyObj(request.claims) ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        return parameterBuilder.createQueryString();\n    }\n}\n\nexport { ClientCredentialClient };\n//# sourceMappingURL=ClientCredentialClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { BaseClient, ScopeSet, CacheOutcome, createClientAuthError, ClientAuthErrorCodes, TimeUtils, AuthToken, ResponseHandler, AuthenticationScheme, CredentialType, UrlString, RequestParameterBuilder, GrantType, AADServerParamKeys, Constants } from '@azure/msal-common';\nimport { EncodingUtils } from '../utils/EncodingUtils.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n/**\n * On-Behalf-Of client\n */\nclass OnBehalfOfClient extends BaseClient {\n    constructor(configuration) {\n        super(configuration);\n    }\n    /**\n     * Public API to acquire tokens with on behalf of flow\n     * @param request\n     */\n    async acquireToken(request) {\n        this.scopeSet = new ScopeSet(request.scopes || []);\n        // generate the user_assertion_hash for OBOAssertion\n        this.userAssertionHash = await this.cryptoUtils.hashString(request.oboAssertion);\n        if (request.skipCache) {\n            return this.executeTokenRequest(request, this.authority, this.userAssertionHash);\n        }\n        try {\n            return await this.getCachedAuthenticationResult(request);\n        }\n        catch (e) {\n            // Any failure falls back to interactive request, once we implement distributed cache, we plan to handle `createRefreshRequiredError` to refresh using the RT\n            return await this.executeTokenRequest(request, this.authority, this.userAssertionHash);\n        }\n    }\n    /**\n     * look up cache for tokens\n     * Find idtoken in the cache\n     * Find accessToken based on user assertion and account info in the cache\n     * Please note we are not yet supported OBO tokens refreshed with long lived RT. User will have to send a new assertion if the current access token expires\n     * This is to prevent security issues when the assertion changes over time, however, longlived RT helps retaining the session\n     * @param request\n     */\n    async getCachedAuthenticationResult(request) {\n        // look in the cache for the access_token which matches the incoming_assertion\n        const cachedAccessToken = this.readAccessTokenFromCacheForOBO(this.config.authOptions.clientId, request);\n        if (!cachedAccessToken) {\n            // Must refresh due to non-existent access_token.\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\n            this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\n            throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired);\n        }\n        else if (TimeUtils.isTokenExpired(cachedAccessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\n            // Access token expired, will need to renewed\n            this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\n            this.logger.info(`OnbehalfofFlow:getCachedAuthenticationResult - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\n            throw createClientAuthError(ClientAuthErrorCodes.tokenRefreshRequired);\n        }\n        // fetch the idToken from cache\n        const cachedIdToken = this.readIdTokenFromCacheForOBO(cachedAccessToken.homeAccountId);\n        let idTokenClaims;\n        let cachedAccount = null;\n        if (cachedIdToken) {\n            idTokenClaims = AuthToken.extractTokenClaims(cachedIdToken.secret, EncodingUtils.base64Decode);\n            const localAccountId = idTokenClaims.oid || idTokenClaims.sub;\n            const accountInfo = {\n                homeAccountId: cachedIdToken.homeAccountId,\n                environment: cachedIdToken.environment,\n                tenantId: cachedIdToken.realm,\n                username: Constants.EMPTY_STRING,\n                localAccountId: localAccountId || Constants.EMPTY_STRING,\n            };\n            cachedAccount = this.cacheManager.readAccountFromCache(accountInfo);\n        }\n        // increment telemetry cache hit counter\n        if (this.config.serverTelemetryManager) {\n            this.config.serverTelemetryManager.incrementCacheHits();\n        }\n        return ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, {\n            account: cachedAccount,\n            accessToken: cachedAccessToken,\n            idToken: cachedIdToken,\n            refreshToken: null,\n            appMetadata: null,\n        }, true, request, idTokenClaims);\n    }\n    /**\n     * read idtoken from cache, this is a specific implementation for OBO as the requirements differ from a generic lookup in the cacheManager\n     * Certain use cases of OBO flow do not expect an idToken in the cache/or from the service\n     * @param atHomeAccountId {string}\n     */\n    readIdTokenFromCacheForOBO(atHomeAccountId) {\n        const idTokenFilter = {\n            homeAccountId: atHomeAccountId,\n            environment: this.authority.canonicalAuthorityUrlComponents.HostNameAndPort,\n            credentialType: CredentialType.ID_TOKEN,\n            clientId: this.config.authOptions.clientId,\n            realm: this.authority.tenant,\n        };\n        const idTokenMap = this.cacheManager.getIdTokensByFilter(idTokenFilter);\n        // When acquiring a token on behalf of an application, there might not be an id token in the cache\n        if (Object.values(idTokenMap).length < 1) {\n            return null;\n        }\n        return Object.values(idTokenMap)[0];\n    }\n    /**\n     * Fetches the cached access token based on incoming assertion\n     * @param clientId\n     * @param request\n     * @param userAssertionHash\n     */\n    readAccessTokenFromCacheForOBO(clientId, request) {\n        const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n        /*\n         * Distinguish between Bearer and PoP/SSH token cache types\n         * Cast to lowercase to handle \"bearer\" from ADFS\n         */\n        const credentialType = authScheme &&\n            authScheme.toLowerCase() !==\n                AuthenticationScheme.BEARER.toLowerCase()\n            ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n            : CredentialType.ACCESS_TOKEN;\n        const accessTokenFilter = {\n            credentialType: credentialType,\n            clientId,\n            target: ScopeSet.createSearchScopes(this.scopeSet.asArray()),\n            tokenType: authScheme,\n            keyId: request.sshKid,\n            requestedClaimsHash: request.requestedClaimsHash,\n            userAssertionHash: this.userAssertionHash,\n        };\n        const accessTokens = this.cacheManager.getAccessTokensByFilter(accessTokenFilter);\n        const numAccessTokens = accessTokens.length;\n        if (numAccessTokens < 1) {\n            return null;\n        }\n        else if (numAccessTokens > 1) {\n            throw createClientAuthError(ClientAuthErrorCodes.multipleMatchingTokens);\n        }\n        return accessTokens[0];\n    }\n    /**\n     * Make a network call to the server requesting credentials\n     * @param request\n     * @param authority\n     */\n    async executeTokenRequest(request, authority, userAssertionHash) {\n        const queryParametersString = this.createTokenQueryParameters(request);\n        const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParametersString);\n        const requestBody = this.createTokenRequestBody(request);\n        const headers = this.createTokenRequestHeaders();\n        const thumbprint = {\n            clientId: this.config.authOptions.clientId,\n            authority: request.authority,\n            scopes: request.scopes,\n            claims: request.claims,\n            authenticationScheme: request.authenticationScheme,\n            resourceRequestMethod: request.resourceRequestMethod,\n            resourceRequestUri: request.resourceRequestUri,\n            shrClaims: request.shrClaims,\n            sshKid: request.sshKid,\n        };\n        const reqTimestamp = TimeUtils.nowSeconds();\n        const response = await this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint, request.correlationId);\n        const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\n        responseHandler.validateTokenResponse(response.body);\n        const tokenResponse = await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, userAssertionHash);\n        return tokenResponse;\n    }\n    /**\n     * generate a server request in accepable format\n     * @param request\n     */\n    createTokenRequestBody(request) {\n        const parameterBuilder = new RequestParameterBuilder();\n        parameterBuilder.addClientId(this.config.authOptions.clientId);\n        parameterBuilder.addScopes(request.scopes);\n        parameterBuilder.addGrantType(GrantType.JWT_BEARER);\n        parameterBuilder.addClientInfo();\n        parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n        parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n        parameterBuilder.addThrottling();\n        if (this.serverTelemetryManager) {\n            parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n        }\n        const correlationId = request.correlationId ||\n            this.config.cryptoInterface.createNewGuid();\n        parameterBuilder.addCorrelationId(correlationId);\n        parameterBuilder.addRequestTokenUse(AADServerParamKeys.ON_BEHALF_OF);\n        parameterBuilder.addOboAssertion(request.oboAssertion);\n        if (this.config.clientCredentials.clientSecret) {\n            parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n        }\n        if (this.config.clientCredentials.clientAssertion) {\n            const clientAssertion = this.config.clientCredentials.clientAssertion;\n            parameterBuilder.addClientAssertion(clientAssertion.assertion);\n            parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n        }\n        if (request.claims ||\n            (this.config.authOptions.clientCapabilities &&\n                this.config.authOptions.clientCapabilities.length > 0)) {\n            parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n        }\n        return parameterBuilder.createQueryString();\n    }\n}\n\nexport { OnBehalfOfClient };\n//# sourceMappingURL=OnBehalfOfClient.mjs.map\n","/*! @azure/msal-node v2.6.2 2024-01-23 */\n'use strict';\nimport { ClientApplication } from './ClientApplication.mjs';\nimport { ClientAssertion } from './ClientAssertion.mjs';\nimport { REGION_ENVIRONMENT_VARIABLE, ApiId, Constants as Constants$1 } from '../utils/Constants.mjs';\nimport { OIDC_DEFAULT_SCOPES, UrlString, AADAuthorityConstants, createClientAuthError, ClientAuthErrorCodes, AuthError, Constants } from '@azure/msal-common';\nimport { ClientCredentialClient } from './ClientCredentialClient.mjs';\nimport { OnBehalfOfClient } from './OnBehalfOfClient.mjs';\n\n/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n// AADAuthorityConstants\n/**\n *  This class is to be used to acquire tokens for confidential client applications (webApp, webAPI). Confidential client applications\n *  will configure application secrets, client certificates/assertions as applicable\n * @public\n */\nclass ConfidentialClientApplication extends ClientApplication {\n    /**\n     * Constructor for the ConfidentialClientApplication\n     *\n     * Required attributes in the Configuration object are:\n     * - clientID: the application ID of your application. You can obtain one by registering your application with our application registration portal\n     * - authority: the authority URL for your application.\n     * - client credential: Must set either client secret, certificate, or assertion for confidential clients. You can obtain a client secret from the application registration portal.\n     *\n     * In Azure AD, authority is a URL indicating of the form https://login.microsoftonline.com/\\{Enter_the_Tenant_Info_Here\\}.\n     * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n     * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n     * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n     * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n     *\n     * In Azure B2C, authority is of the form https://\\{instance\\}/tfp/\\{tenant\\}/\\{policyName\\}/\n     * Full B2C functionality will be available in this library in future versions.\n     *\n     * @param Configuration - configuration object for the MSAL ConfidentialClientApplication instance\n     */\n    constructor(configuration) {\n        super(configuration);\n        this.setClientCredential(this.config);\n        this.appTokenProvider = undefined;\n    }\n    /**\n     * This extensibility point only works for the client_credential flow, i.e. acquireTokenByClientCredential and\n     * is meant for Azure SDK to enhance Managed Identity support.\n     *\n     * @param IAppTokenProvider  - Extensibility interface, which allows the app developer to return a token from a custom source.\n     */\n    SetAppTokenProvider(provider) {\n        this.appTokenProvider = provider;\n    }\n    /**\n     * Acquires tokens from the authority for the application (not for an end user).\n     */\n    async acquireTokenByClientCredential(request) {\n        this.logger.info(\"acquireTokenByClientCredential called\", request.correlationId);\n        // If there is a client assertion present in the request, it overrides the one present in the client configuration\n        let clientAssertion;\n        if (request.clientAssertion) {\n            clientAssertion = {\n                assertion: request.clientAssertion,\n                assertionType: Constants$1.JWT_BEARER_ASSERTION_TYPE,\n            };\n        }\n        const baseRequest = await this.initializeBaseRequest(request);\n        // valid base request should not contain oidc scopes in this grant type\n        const validBaseRequest = {\n            ...baseRequest,\n            scopes: baseRequest.scopes.filter((scope) => !OIDC_DEFAULT_SCOPES.includes(scope)),\n        };\n        const validRequest = {\n            ...request,\n            ...validBaseRequest,\n            clientAssertion,\n        };\n        /*\n         * valid request should not have \"common\" or \"organizations\" in lieu of the tenant_id in the authority in the auth configuration\n         * example authority: \"https://login.microsoftonline.com/TenantId\",\n         */\n        const authority = new UrlString(validRequest.authority);\n        const tenantId = authority.getUrlComponents().PathSegments[0];\n        if (Object.values(AADAuthorityConstants).includes(tenantId)) {\n            throw createClientAuthError(ClientAuthErrorCodes.missingTenantIdError);\n        }\n        const azureRegionConfiguration = {\n            azureRegion: validRequest.azureRegion,\n            environmentRegion: process.env[REGION_ENVIRONMENT_VARIABLE],\n        };\n        const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenByClientCredential, validRequest.correlationId, validRequest.skipCache);\n        try {\n            const clientCredentialConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, serverTelemetryManager, azureRegionConfiguration, request.azureCloudOptions);\n            const clientCredentialClient = new ClientCredentialClient(clientCredentialConfig, this.appTokenProvider);\n            this.logger.verbose(\"Client credential client created\", validRequest.correlationId);\n            return await clientCredentialClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            serverTelemetryManager.cacheFailedRequest(e);\n            throw e;\n        }\n    }\n    /**\n     * Acquires tokens from the authority for the application.\n     *\n     * Used in scenarios where the current app is a middle-tier service which was called with a token\n     * representing an end user. The current app can use the token (oboAssertion) to request another\n     * token to access downstream web API, on behalf of that user.\n     *\n     * The current middle-tier app has no user interaction to obtain consent.\n     * See how to gain consent upfront for your middle-tier app from this article.\n     * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application\n     */\n    async acquireTokenOnBehalfOf(request) {\n        this.logger.info(\"acquireTokenOnBehalfOf called\", request.correlationId);\n        const validRequest = {\n            ...request,\n            ...(await this.initializeBaseRequest(request)),\n        };\n        try {\n            const onBehalfOfConfig = await this.buildOauthClientConfiguration(validRequest.authority, validRequest.correlationId, undefined, undefined, request.azureCloudOptions);\n            const oboClient = new OnBehalfOfClient(onBehalfOfConfig);\n            this.logger.verbose(\"On behalf of client created\", validRequest.correlationId);\n            return await oboClient.acquireToken(validRequest);\n        }\n        catch (e) {\n            if (e instanceof AuthError) {\n                e.setCorrelationId(validRequest.correlationId);\n            }\n            throw e;\n        }\n    }\n    setClientCredential(configuration) {\n        const clientSecretNotEmpty = !!configuration.auth.clientSecret;\n        const clientAssertionNotEmpty = !!configuration.auth.clientAssertion;\n        const certificate = configuration.auth.clientCertificate || {\n            thumbprint: Constants.EMPTY_STRING,\n            privateKey: Constants.EMPTY_STRING,\n        };\n        const certificateNotEmpty = !!certificate.thumbprint || !!certificate.privateKey;\n        /*\n         * If app developer configures this callback, they don't need a credential\n         * i.e. AzureSDK can get token from Managed Identity without a cert / secret\n         */\n        if (this.appTokenProvider) {\n            return;\n        }\n        // Check that at most one credential is set on the application\n        if ((clientSecretNotEmpty && clientAssertionNotEmpty) ||\n            (clientAssertionNotEmpty && certificateNotEmpty) ||\n            (clientSecretNotEmpty && certificateNotEmpty)) {\n            throw createClientAuthError(ClientAuthErrorCodes.invalidClientCredential);\n        }\n        if (configuration.auth.clientSecret) {\n            this.clientSecret = configuration.auth.clientSecret;\n            return;\n        }\n        if (configuration.auth.clientAssertion) {\n            this.clientAssertion = ClientAssertion.fromAssertion(configuration.auth.clientAssertion);\n            return;\n        }\n        if (!certificateNotEmpty) {\n            throw createClientAuthError(ClientAuthErrorCodes.invalidClientCredential);\n        }\n        else {\n            this.clientAssertion = ClientAssertion.fromCertificate(certificate.thumbprint, certificate.privateKey, configuration.auth.clientCertificate?.x5c);\n        }\n    }\n}\n\nexport { ConfidentialClientApplication };\n//# sourceMappingURL=ConfidentialClientApplication.mjs.map\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { EOL } from \"os\";\nimport util from \"util\";\nexport function log(message, ...args) {\n    process.stderr.write(`${util.format(message, ...args)}${EOL}`);\n}\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { log } from \"./log\";\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n    enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n    return createDebugger(namespace);\n}, {\n    enable,\n    enabled,\n    disable,\n    log,\n});\nfunction enable(namespaces) {\n    enabledString = namespaces;\n    enabledNamespaces = [];\n    skippedNamespaces = [];\n    const wildcard = /\\*/g;\n    const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n    for (const ns of namespaceList) {\n        if (ns.startsWith(\"-\")) {\n            skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n        }\n        else {\n            enabledNamespaces.push(new RegExp(`^${ns}$`));\n        }\n    }\n    for (const instance of debuggers) {\n        instance.enabled = enabled(instance.namespace);\n    }\n}\nfunction enabled(namespace) {\n    if (namespace.endsWith(\"*\")) {\n        return true;\n    }\n    for (const skipped of skippedNamespaces) {\n        if (skipped.test(namespace)) {\n            return false;\n        }\n    }\n    for (const enabledNamespace of enabledNamespaces) {\n        if (enabledNamespace.test(namespace)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction disable() {\n    const result = enabledString || \"\";\n    enable(\"\");\n    return result;\n}\nfunction createDebugger(namespace) {\n    const newDebugger = Object.assign(debug, {\n        enabled: enabled(namespace),\n        destroy,\n        log: debugObj.log,\n        namespace,\n        extend,\n    });\n    function debug(...args) {\n        if (!newDebugger.enabled) {\n            return;\n        }\n        if (args.length > 0) {\n            args[0] = `${namespace} ${args[0]}`;\n        }\n        newDebugger.log(...args);\n    }\n    debuggers.push(newDebugger);\n    return newDebugger;\n}\nfunction destroy() {\n    const index = debuggers.indexOf(this);\n    if (index >= 0) {\n        debuggers.splice(index, 1);\n        return true;\n    }\n    return false;\n}\nfunction extend(namespace) {\n    const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n    newDebugger.log = this.log;\n    return newDebugger;\n}\nexport default debugObj;\n//# sourceMappingURL=debug.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport debug from \"./debug\";\nconst registeredLoggers = new Set();\nconst logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\nlet azureLogLevel;\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n    debug.log(...args);\n};\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nif (logLevelFromEnv) {\n    // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n    if (isAzureLogLevel(logLevelFromEnv)) {\n        setLogLevel(logLevelFromEnv);\n    }\n    else {\n        console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\", \")}.`);\n    }\n}\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level) {\n    if (level && !isAzureLogLevel(level)) {\n        throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`);\n    }\n    azureLogLevel = level;\n    const enabledNamespaces = [];\n    for (const logger of registeredLoggers) {\n        if (shouldEnable(logger)) {\n            enabledNamespaces.push(logger.namespace);\n        }\n    }\n    debug.enable(enabledNamespaces.join(\",\"));\n}\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel() {\n    return azureLogLevel;\n}\nconst levelMap = {\n    verbose: 400,\n    info: 300,\n    warning: 200,\n    error: 100,\n};\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace) {\n    const clientRootLogger = AzureLogger.extend(namespace);\n    patchLogMethod(AzureLogger, clientRootLogger);\n    return {\n        error: createLogger(clientRootLogger, \"error\"),\n        warning: createLogger(clientRootLogger, \"warning\"),\n        info: createLogger(clientRootLogger, \"info\"),\n        verbose: createLogger(clientRootLogger, \"verbose\"),\n    };\n}\nfunction patchLogMethod(parent, child) {\n    child.log = (...args) => {\n        parent.log(...args);\n    };\n}\nfunction createLogger(parent, level) {\n    const logger = Object.assign(parent.extend(level), {\n        level,\n    });\n    patchLogMethod(parent, logger);\n    if (shouldEnable(logger)) {\n        const enabledNamespaces = debug.disable();\n        debug.enable(enabledNamespaces + \",\" + logger.namespace);\n    }\n    registeredLoggers.add(logger);\n    return logger;\n}\nfunction shouldEnable(logger) {\n    return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\nfunction isAzureLogLevel(logLevel) {\n    return AZURE_LOG_LEVELS.includes(logLevel);\n}\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction isErrorResponse(errorResponse) {\n    return (errorResponse &&\n        typeof errorResponse.error === \"string\" &&\n        typeof errorResponse.error_description === \"string\");\n}\n/**\n * The Error.name value of an CredentialUnavailable\n */\nexport const CredentialUnavailableErrorName = \"CredentialUnavailableError\";\n/**\n * This signifies that the credential that was tried in a chained credential\n * was not available to be used as the credential. Rather than treating this as\n * an error that should halt the chain, it's caught and the chain continues\n */\nexport class CredentialUnavailableError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = CredentialUnavailableErrorName;\n    }\n}\n/**\n * The Error.name value of an AuthenticationError\n */\nexport const AuthenticationErrorName = \"AuthenticationError\";\n/**\n * Provides details about a failure to authenticate with Azure Active\n * Directory.  The `errorResponse` field contains more details about\n * the specific failure.\n */\nexport class AuthenticationError extends Error {\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    constructor(statusCode, errorBody) {\n        let errorResponse = {\n            error: \"unknown\",\n            errorDescription: \"An unknown error occurred and no additional details are available.\",\n        };\n        if (isErrorResponse(errorBody)) {\n            errorResponse = convertOAuthErrorResponseToErrorResponse(errorBody);\n        }\n        else if (typeof errorBody === \"string\") {\n            try {\n                // Most error responses will contain JSON-formatted error details\n                // in the response body\n                const oauthErrorResponse = JSON.parse(errorBody);\n                errorResponse = convertOAuthErrorResponseToErrorResponse(oauthErrorResponse);\n            }\n            catch (e) {\n                if (statusCode === 400) {\n                    errorResponse = {\n                        error: \"authority_not_found\",\n                        errorDescription: \"The specified authority URL was not found.\",\n                    };\n                }\n                else {\n                    errorResponse = {\n                        error: \"unknown_error\",\n                        errorDescription: `An unknown error has occurred. Response body:\\n\\n${errorBody}`,\n                    };\n                }\n            }\n        }\n        else {\n            errorResponse = {\n                error: \"unknown_error\",\n                errorDescription: \"An unknown error occurred and no additional details are available.\",\n            };\n        }\n        super(`${errorResponse.error} Status code: ${statusCode}\\nMore details:\\n${errorResponse.errorDescription}`);\n        this.statusCode = statusCode;\n        this.errorResponse = errorResponse;\n        // Ensure that this type reports the correct name\n        this.name = AuthenticationErrorName;\n    }\n}\n/**\n * The Error.name value of an AggregateAuthenticationError\n */\nexport const AggregateAuthenticationErrorName = \"AggregateAuthenticationError\";\n/**\n * Provides an `errors` array containing {@link AuthenticationError} instance\n * for authentication failures from credentials in a {@link ChainedTokenCredential}.\n */\nexport class AggregateAuthenticationError extends Error {\n    constructor(errors, errorMessage) {\n        const errorDetail = errors.join(\"\\n\");\n        super(`${errorMessage}\\n${errorDetail}`);\n        this.errors = errors;\n        // Ensure that this type reports the correct name\n        this.name = AggregateAuthenticationErrorName;\n    }\n}\nfunction convertOAuthErrorResponseToErrorResponse(errorBody) {\n    return {\n        error: errorBody.error,\n        errorDescription: errorBody.error_description,\n        correlationId: errorBody.correlation_id,\n        errorCodes: errorBody.error_codes,\n        timestamp: errorBody.timestamp,\n        traceId: errorBody.trace_id,\n    };\n}\n/**\n * Error used to enforce authentication after trying to retrieve a token silently.\n */\nexport class AuthenticationRequiredError extends Error {\n    constructor(\n    /**\n     * Optional parameters. A message can be specified. The {@link GetTokenOptions} of the request can also be specified to more easily associate the error with the received parameters.\n     */\n    options) {\n        super(options.message);\n        this.scopes = options.scopes;\n        this.getTokenOptions = options.getTokenOptions;\n        this.name = \"AuthenticationRequiredError\";\n    }\n}\n//# sourceMappingURL=errors.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The AzureLogger used for all clients within the identity package\n */\nexport const logger = createClientLogger(\"identity\");\n/**\n * Separates a list of environment variable names into a plain object with two arrays: an array of missing environment variables and another array with assigned environment variables.\n * @param supportedEnvVars - List of environment variable names\n */\nexport function processEnvVars(supportedEnvVars) {\n    return supportedEnvVars.reduce((acc, envVariable) => {\n        if (process.env[envVariable]) {\n            acc.assigned.push(envVariable);\n        }\n        else {\n            acc.missing.push(envVariable);\n        }\n        return acc;\n    }, { missing: [], assigned: [] });\n}\n/**\n * Based on a given list of environment variable names,\n * logs the environment variables currently assigned during the usage of a credential that goes by the given name.\n * @param credentialName - Name of the credential in use\n * @param supportedEnvVars - List of environment variables supported by that credential\n */\nexport function logEnvVars(credentialName, supportedEnvVars) {\n    const { assigned } = processEnvVars(supportedEnvVars);\n    logger.info(`${credentialName} => Found the following environment variables: ${assigned.join(\", \")}`);\n}\n/**\n * Formatting the success event on the credentials\n */\nexport function formatSuccess(scope) {\n    return `SUCCESS. Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n}\n/**\n * Formatting the success event on the credentials\n */\nexport function formatError(scope, error) {\n    let message = \"ERROR.\";\n    if (scope === null || scope === void 0 ? void 0 : scope.length) {\n        message += ` Scopes: ${Array.isArray(scope) ? scope.join(\", \") : scope}.`;\n    }\n    return `${message} Error message: ${typeof error === \"string\" ? error : error.message}.`;\n}\n/**\n * Generates a CredentialLoggerInstance.\n *\n * It logs with the format:\n *\n *   `[title] => [message]`\n *\n */\nexport function credentialLoggerInstance(title, parent, log = logger) {\n    const fullTitle = parent ? `${parent.fullTitle} ${title}` : title;\n    function info(message) {\n        log.info(`${fullTitle} =>`, message);\n    }\n    function warning(message) {\n        log.warning(`${fullTitle} =>`, message);\n    }\n    function verbose(message) {\n        log.verbose(`${fullTitle} =>`, message);\n    }\n    return {\n        title,\n        fullTitle,\n        info,\n        warning,\n        verbose,\n    };\n}\n/**\n * Generates a CredentialLogger, which is a logger declared at the credential's constructor, and used at any point in the credential.\n * It has all the properties of a CredentialLoggerInstance, plus other logger instances, one per method.\n *\n * It logs with the format:\n *\n *   `[title] => [message]`\n *   `[title] => getToken() => [message]`\n *\n */\nexport function credentialLogger(title, log = logger) {\n    const credLogger = credentialLoggerInstance(title, undefined, log);\n    return Object.assign(Object.assign({}, credLogger), { parent: log, getToken: credentialLoggerInstance(\"=> getToken()\", credLogger, log) });\n}\n//# sourceMappingURL=logging.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Current version of the `@azure/identity` package.\n */\nexport const SDK_VERSION = `3.4.2`;\n/**\n * The default client ID for authentication\n * @internal\n */\n// TODO: temporary - this is the Azure CLI clientID - we'll replace it when\n// Developer Sign On application is available\n// https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/src/Constants.cs#L9\nexport const DeveloperSignOnClientId = \"04b07795-8ddb-461a-bbee-02f9e1bf7b46\";\n/**\n * The default tenant for authentication\n * @internal\n */\nexport const DefaultTenantId = \"common\";\n/**\n * A list of known Azure authority hosts\n */\nexport var AzureAuthorityHosts;\n(function (AzureAuthorityHosts) {\n    /**\n     * China-based Azure Authority Host\n     */\n    AzureAuthorityHosts[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\n    /**\n     * Germany-based Azure Authority Host\n     */\n    AzureAuthorityHosts[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\n    /**\n     * US Government Azure Authority Host\n     */\n    AzureAuthorityHosts[\"AzureGovernment\"] = \"https://login.microsoftonline.us\";\n    /**\n     * Public Cloud Azure Authority Host\n     */\n    AzureAuthorityHosts[\"AzurePublicCloud\"] = \"https://login.microsoftonline.com\";\n})(AzureAuthorityHosts || (AzureAuthorityHosts = {}));\n/**\n * The default authority host.\n */\nexport const DefaultAuthorityHost = AzureAuthorityHosts.AzurePublicCloud;\n/**\n * Allow acquiring tokens for any tenant for multi-tentant auth.\n */\nexport const ALL_TENANTS = [\"*\"];\nexport const CACHE_CAE_SUFFIX = \".cae\";\nexport const CACHE_NON_CAE_SUFFIX = \".nocae\";\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/// <reference path=\"../shims-public.d.ts\" />\nconst listenersMap = new WeakMap();\nconst abortedMap = new WeakMap();\n/**\n * An aborter instance implements AbortSignal interface, can abort HTTP requests.\n *\n * - Call AbortSignal.none to create a new AbortSignal instance that cannot be cancelled.\n * Use `AbortSignal.none` when you are required to pass a cancellation token but the operation\n * cannot or will not ever be cancelled.\n *\n * @example\n * Abort without timeout\n * ```ts\n * await doAsyncWork(AbortSignal.none);\n * ```\n */\nexport class AbortSignal {\n    constructor() {\n        /**\n         * onabort event listener.\n         */\n        this.onabort = null;\n        listenersMap.set(this, []);\n        abortedMap.set(this, false);\n    }\n    /**\n     * Status of whether aborted or not.\n     *\n     * @readonly\n     */\n    get aborted() {\n        if (!abortedMap.has(this)) {\n            throw new TypeError(\"Expected `this` to be an instance of AbortSignal.\");\n        }\n        return abortedMap.get(this);\n    }\n    /**\n     * Creates a new AbortSignal instance that will never be aborted.\n     *\n     * @readonly\n     */\n    static get none() {\n        return new AbortSignal();\n    }\n    /**\n     * Added new \"abort\" event listener, only support \"abort\" event.\n     *\n     * @param _type - Only support \"abort\" event\n     * @param listener - The listener to be added\n     */\n    addEventListener(\n    // tslint:disable-next-line:variable-name\n    _type, listener) {\n        if (!listenersMap.has(this)) {\n            throw new TypeError(\"Expected `this` to be an instance of AbortSignal.\");\n        }\n        const listeners = listenersMap.get(this);\n        listeners.push(listener);\n    }\n    /**\n     * Remove \"abort\" event listener, only support \"abort\" event.\n     *\n     * @param _type - Only support \"abort\" event\n     * @param listener - The listener to be removed\n     */\n    removeEventListener(\n    // tslint:disable-next-line:variable-name\n    _type, listener) {\n        if (!listenersMap.has(this)) {\n            throw new TypeError(\"Expected `this` to be an instance of AbortSignal.\");\n        }\n        const listeners = listenersMap.get(this);\n        const index = listeners.indexOf(listener);\n        if (index > -1) {\n            listeners.splice(index, 1);\n        }\n    }\n    /**\n     * Dispatches a synthetic event to the AbortSignal.\n     */\n    dispatchEvent(_event) {\n        throw new Error(\"This is a stub dispatchEvent implementation that should not be used.  It only exists for type-checking purposes.\");\n    }\n}\n/**\n * Helper to trigger an abort event immediately, the onabort and all abort event listeners will be triggered.\n * Will try to trigger abort event for all linked AbortSignal nodes.\n *\n * - If there is a timeout, the timer will be cancelled.\n * - If aborted is true, nothing will happen.\n *\n * @internal\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nexport function abortSignal(signal) {\n    if (signal.aborted) {\n        return;\n    }\n    if (signal.onabort) {\n        signal.onabort.call(signal);\n    }\n    const listeners = listenersMap.get(signal);\n    if (listeners) {\n        // Create a copy of listeners so mutations to the array\n        // (e.g. via removeListener calls) don't affect the listeners\n        // we invoke.\n        listeners.slice().forEach((listener) => {\n            listener.call(signal, { type: \"abort\" });\n        });\n    }\n    abortedMap.set(signal, true);\n}\n//# sourceMappingURL=AbortSignal.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortSignal, abortSignal } from \"./AbortSignal\";\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n *   doAsyncWork(controller.signal)\n * } catch (e) {\n *   if (e.name === 'AbortError') {\n *     // handle abort error here.\n *   }\n * }\n * ```\n */\nexport class AbortError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"AbortError\";\n    }\n}\n/**\n * An AbortController provides an AbortSignal and the associated controls to signal\n * that an asynchronous operation should be aborted.\n *\n * @example\n * Abort an operation when another event fires\n * ```ts\n * const controller = new AbortController();\n * const signal = controller.signal;\n * doAsyncWork(signal);\n * button.addEventListener('click', () => controller.abort());\n * ```\n *\n * @example\n * Share aborter cross multiple operations in 30s\n * ```ts\n * // Upload the same data to 2 different data centers at the same time,\n * // abort another when any of them is finished\n * const controller = AbortController.withTimeout(30 * 1000);\n * doAsyncWork(controller.signal).then(controller.abort);\n * doAsyncWork(controller.signal).then(controller.abort);\n *```\n *\n * @example\n * Cascaded aborting\n * ```ts\n * // All operations can't take more than 30 seconds\n * const aborter = Aborter.timeout(30 * 1000);\n *\n * // Following 2 operations can't take more than 25 seconds\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * ```\n */\nexport class AbortController {\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n    constructor(parentSignals) {\n        this._signal = new AbortSignal();\n        if (!parentSignals) {\n            return;\n        }\n        // coerce parentSignals into an array\n        if (!Array.isArray(parentSignals)) {\n            // eslint-disable-next-line prefer-rest-params\n            parentSignals = arguments;\n        }\n        for (const parentSignal of parentSignals) {\n            // if the parent signal has already had abort() called,\n            // then call abort on this signal as well.\n            if (parentSignal.aborted) {\n                this.abort();\n            }\n            else {\n                // when the parent signal aborts, this signal should as well.\n                parentSignal.addEventListener(\"abort\", () => {\n                    this.abort();\n                });\n            }\n        }\n    }\n    /**\n     * The AbortSignal associated with this controller that will signal aborted\n     * when the abort method is called on this controller.\n     *\n     * @readonly\n     */\n    get signal() {\n        return this._signal;\n    }\n    /**\n     * Signal that any operations passed this controller's associated abort signal\n     * to cancel any remaining work and throw an `AbortError`.\n     */\n    abort() {\n        abortSignal(this._signal);\n    }\n    /**\n     * Creates a new AbortSignal instance that will abort after the provided ms.\n     * @param ms - Elapsed time in milliseconds to trigger an abort.\n     */\n    static timeout(ms) {\n        const signal = new AbortSignal();\n        const timer = setTimeout(abortSignal, ms, signal);\n        // Prevent the active Timer from keeping the Node.js event loop active.\n        if (typeof timer.unref === \"function\") {\n            timer.unref();\n        }\n        return signal;\n    }\n}\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n *   doAsyncWork(controller.signal)\n * } catch (e) {\n *   if (e.name === 'AbortError') {\n *     // handle abort error here.\n *   }\n * }\n * ```\n */\nexport class AbortError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"AbortError\";\n    }\n}\n//# sourceMappingURL=AbortError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(buildPromise, options) {\n    const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n    return new Promise((resolve, reject) => {\n        function rejectOnAbort() {\n            reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : \"The operation was aborted.\"));\n        }\n        function removeListeners() {\n            abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener(\"abort\", onAbort);\n        }\n        function onAbort() {\n            cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort();\n            removeListeners();\n            rejectOnAbort();\n        }\n        if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n            return rejectOnAbort();\n        }\n        try {\n            buildPromise((x) => {\n                removeListeners();\n                resolve(x);\n            }, (x) => {\n                removeListeners();\n                reject(x);\n            });\n        }\n        catch (err) {\n            reject(err);\n        }\n        abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener(\"abort\", onAbort);\n    });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createAbortablePromise } from \"./createAbortablePromise\";\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs, options) {\n    let token;\n    const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n    return createAbortablePromise((resolve) => {\n        token = setTimeout(resolve, timeInMs);\n    }, {\n        cleanupBeforeAbort: () => clearTimeout(token),\n        abortSignal,\n        abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage,\n    });\n}\n//# sourceMappingURL=delay.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min, max) {\n    // Make sure inputs are integers.\n    min = Math.ceil(min);\n    max = Math.floor(max);\n    // Pick a random offset from zero to the size of the range.\n    // Since Math.random() can never return 1, we have to make the range one larger\n    // in order to be inclusive of the maximum value after we take the floor.\n    const offset = Math.floor(Math.random() * (max - min + 1));\n    return offset + min;\n}\n//# sourceMappingURL=random.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input) {\n    return (typeof input === \"object\" &&\n        input !== null &&\n        !Array.isArray(input) &&\n        !(input instanceof RegExp) &&\n        !(input instanceof Date));\n}\n//# sourceMappingURL=object.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isObject } from \"./object\";\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e) {\n    if (isObject(e)) {\n        const hasName = typeof e.name === \"string\";\n        const hasMessage = typeof e.message === \"string\";\n        return hasName && hasMessage;\n    }\n    return false;\n}\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e) {\n    if (isError(e)) {\n        return e.message;\n    }\n    else {\n        let stringified;\n        try {\n            if (typeof e === \"object\" && e) {\n                stringified = JSON.stringify(e);\n            }\n            else {\n                stringified = String(e);\n            }\n        }\n        catch (err) {\n            stringified = \"[unable to stringify input]\";\n        }\n        return `Unknown error ${stringified}`;\n    }\n}\n//# sourceMappingURL=error.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"react-native\" section in package.json.\n */\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID() {\n    let uuid = \"\";\n    for (let i = 0; i < 32; i++) {\n        // Generate a random number between 0 and 15\n        const randomNumber = Math.floor(Math.random() * 16);\n        // Set the UUID version to 4 in the 13th position\n        if (i === 12) {\n            uuid += \"4\";\n        }\n        else if (i === 16) {\n            // Set the UUID variant to \"10\" in the 17th position\n            uuid += (randomNumber & 0x3) | 0x8;\n        }\n        else {\n            // Add a random hexadecimal digit to the UUID string\n            uuid += randomNumber.toString(16);\n        }\n        // Add hyphens to the UUID string at the appropriate positions\n        if (i === 7 || i === 11 || i === 15 || i === 19) {\n            uuid += \"-\";\n        }\n    }\n    return uuid;\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n    return generateUUID();\n}\n//# sourceMappingURL=uuidUtils.native.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a;\nimport { randomUUID as v4RandomUUID } from \"crypto\";\nimport { generateUUID } from \"./uuidUtils.native\";\n// NOTE: This is a workaround until we can use `globalThis.crypto.randomUUID` in Node.js 19+.\nlet uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === \"function\"\n    ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n    : v4RandomUUID;\n// Not defined in earlier versions of Node.js 14\nif (!uuidFunction) {\n    uuidFunction = generateUUID;\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n    return uuidFunction();\n}\n//# sourceMappingURL=uuidUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a, _b, _c, _d;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker = typeof self === \"object\" &&\n    typeof (self === null || self === void 0 ? void 0 : self.importScripts) === \"function\" &&\n    (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"DedicatedWorkerGlobalScope\" ||\n        ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === \"ServiceWorkerGlobalScope\" ||\n        ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno = typeof Deno !== \"undefined\" &&\n    typeof Deno.version !== \"undefined\" &&\n    typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNode = typeof process !== \"undefined\" &&\n    Boolean(process.version) &&\n    Boolean((_d = process.versions) === null || _d === void 0 ? void 0 : _d.node) &&\n    // Deno thought it was a good idea to spoof process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n    !isDeno;\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative = typeof navigator !== \"undefined\" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes, format) {\n    return Buffer.from(bytes).toString(format);\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value, format) {\n    return Buffer.from(value, format);\n}\n//# sourceMappingURL=bytesEncoding.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as msalCommon from \"@azure/msal-node\";\nimport { AuthenticationRequiredError, CredentialUnavailableError } from \"../errors\";\nimport { formatError, formatSuccess } from \"../util/logging\";\nimport { DefaultAuthorityHost, DefaultTenantId } from \"../constants\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { isNode, randomUUID } from \"@azure/core-util\";\n/**\n * Latest AuthenticationRecord version\n * @internal\n */\nconst LatestAuthenticationRecordVersion = \"1.0\";\n/**\n * Ensures the validity of the MSAL token\n * @internal\n */\nexport function ensureValidMsalToken(scopes, logger, msalToken, getTokenOptions) {\n    const error = (message) => {\n        logger.getToken.info(message);\n        return new AuthenticationRequiredError({\n            scopes: Array.isArray(scopes) ? scopes : [scopes],\n            getTokenOptions,\n            message,\n        });\n    };\n    if (!msalToken) {\n        throw error(\"No response\");\n    }\n    if (!msalToken.expiresOn) {\n        throw error(`Response had no \"expiresOn\" property.`);\n    }\n    if (!msalToken.accessToken) {\n        throw error(`Response had no \"accessToken\" property.`);\n    }\n}\n/**\n * Generates a valid authority by combining a host with a tenantId.\n * @internal\n */\nexport function getAuthority(tenantId, host) {\n    if (!host) {\n        host = DefaultAuthorityHost;\n    }\n    if (new RegExp(`${tenantId}/?$`).test(host)) {\n        return host;\n    }\n    if (host.endsWith(\"/\")) {\n        return host + tenantId;\n    }\n    else {\n        return `${host}/${tenantId}`;\n    }\n}\n/**\n * Generates the known authorities.\n * If the Tenant Id is `adfs`, the authority can't be validated since the format won't match the expected one.\n * For that reason, we have to force MSAL to disable validating the authority\n * by sending it within the known authorities in the MSAL configuration.\n * @internal\n */\nexport function getKnownAuthorities(tenantId, authorityHost, disableInstanceDiscovery) {\n    if ((tenantId === \"adfs\" && authorityHost) || disableInstanceDiscovery) {\n        return [authorityHost];\n    }\n    return [];\n}\n/**\n * Generates a logger that can be passed to the MSAL clients.\n * @param logger - The logger of the credential.\n * @internal\n */\nexport const defaultLoggerCallback = (logger, platform = isNode ? \"Node\" : \"Browser\") => (level, message, containsPii) => {\n    if (containsPii) {\n        return;\n    }\n    switch (level) {\n        case msalCommon.LogLevel.Error:\n            logger.info(`MSAL ${platform} V2 error: ${message}`);\n            return;\n        case msalCommon.LogLevel.Info:\n            logger.info(`MSAL ${platform} V2 info message: ${message}`);\n            return;\n        case msalCommon.LogLevel.Verbose:\n            logger.info(`MSAL ${platform} V2 verbose message: ${message}`);\n            return;\n        case msalCommon.LogLevel.Warning:\n            logger.info(`MSAL ${platform} V2 warning: ${message}`);\n            return;\n    }\n};\n/**\n * @internal\n */\nexport function getMSALLogLevel(logLevel) {\n    switch (logLevel) {\n        case \"error\":\n            return msalCommon.LogLevel.Error;\n        case \"info\":\n            return msalCommon.LogLevel.Info;\n        case \"verbose\":\n            return msalCommon.LogLevel.Verbose;\n        case \"warning\":\n            return msalCommon.LogLevel.Warning;\n        default:\n            // default msal logging level should be Info\n            return msalCommon.LogLevel.Info;\n    }\n}\n/**\n * The common utility functions for the MSAL clients.\n * Defined as a class so that the classes extending this one can have access to its methods and protected properties.\n *\n * It keeps track of a logger and an in-memory copy of the AuthenticationRecord.\n *\n * @internal\n */\nexport class MsalBaseUtilities {\n    constructor(options) {\n        this.logger = options.logger;\n        this.account = options.authenticationRecord;\n    }\n    /**\n     * Generates a UUID\n     */\n    generateUuid() {\n        return randomUUID();\n    }\n    /**\n     * Handles the MSAL authentication result.\n     * If the result has an account, we update the local account reference.\n     * If the token received is invalid, an error will be thrown depending on what's missing.\n     */\n    handleResult(scopes, clientId, result, getTokenOptions) {\n        if (result === null || result === void 0 ? void 0 : result.account) {\n            this.account = msalToPublic(clientId, result.account);\n        }\n        ensureValidMsalToken(scopes, this.logger, result, getTokenOptions);\n        this.logger.getToken.info(formatSuccess(scopes));\n        return {\n            token: result.accessToken,\n            expiresOnTimestamp: result.expiresOn.getTime(),\n        };\n    }\n    /**\n     * Handles MSAL errors.\n     */\n    handleError(scopes, error, getTokenOptions) {\n        if (error.name === \"AuthError\" ||\n            error.name === \"ClientAuthError\" ||\n            error.name === \"BrowserAuthError\") {\n            const msalError = error;\n            switch (msalError.errorCode) {\n                case \"endpoints_resolution_error\":\n                    this.logger.info(formatError(scopes, error.message));\n                    return new CredentialUnavailableError(error.message);\n                case \"device_code_polling_cancelled\":\n                    return new AbortError(\"The authentication has been aborted by the caller.\");\n                case \"consent_required\":\n                case \"interaction_required\":\n                case \"login_required\":\n                    this.logger.info(formatError(scopes, `Authentication returned errorCode ${msalError.errorCode}`));\n                    break;\n                default:\n                    this.logger.info(formatError(scopes, `Failed to acquire token: ${error.message}`));\n                    break;\n            }\n        }\n        if (error.name === \"ClientConfigurationError\" ||\n            error.name === \"BrowserConfigurationAuthError\" ||\n            error.name === \"AbortError\") {\n            return error;\n        }\n        return new AuthenticationRequiredError({ scopes, getTokenOptions, message: error.message });\n    }\n}\n// transformations.ts\nexport function publicToMsal(account) {\n    const [environment] = account.authority.match(/([a-z]*\\.[a-z]*\\.[a-z]*)/) || [\"\"];\n    return Object.assign(Object.assign({}, account), { localAccountId: account.homeAccountId, environment });\n}\nexport function msalToPublic(clientId, account) {\n    const record = {\n        authority: getAuthority(account.tenantId, account.environment),\n        homeAccountId: account.homeAccountId,\n        tenantId: account.tenantId || DefaultTenantId,\n        username: account.username,\n        clientId,\n        version: LatestAuthenticationRecordVersion,\n    };\n    return record;\n}\n/**\n * Serializes an `AuthenticationRecord` into a string.\n *\n * The output of a serialized authentication record will contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * To later convert this string to a serialized `AuthenticationRecord`, please use the exported function `deserializeAuthenticationRecord()`.\n */\nexport function serializeAuthenticationRecord(record) {\n    return JSON.stringify(record);\n}\n/**\n * Deserializes a previously serialized authentication record from a string into an object.\n *\n * The input string must contain the following properties:\n *\n * - \"authority\"\n * - \"homeAccountId\"\n * - \"clientId\"\n * - \"tenantId\"\n * - \"username\"\n * - \"version\"\n *\n * If the version we receive is unsupported, an error will be thrown.\n *\n * At the moment, the only available version is: \"1.0\", which is always set when the authentication record is serialized.\n *\n * @param serializedRecord - Authentication record previously serialized into string.\n * @returns AuthenticationRecord.\n */\nexport function deserializeAuthenticationRecord(serializedRecord) {\n    const parsed = JSON.parse(serializedRecord);\n    if (parsed.version && parsed.version !== LatestAuthenticationRecordVersion) {\n        throw Error(\"Unsupported AuthenticationRecord version\");\n    }\n    return parsed;\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { CredentialUnavailableError } from \"../errors\";\nfunction createConfigurationErrorMessage(tenantId) {\n    return `The current credential is not configured to acquire tokens for tenant ${tenantId}. To enable acquiring tokens for this tenant add it to the AdditionallyAllowedTenants on the credential options, or add \"*\" to AdditionallyAllowedTenants to allow acquiring tokens for any tenant.`;\n}\n/**\n * Of getToken contains a tenantId, this functions allows picking this tenantId as the appropriate for authentication,\n * unless multitenant authentication has been disabled through the AZURE_IDENTITY_DISABLE_MULTITENANTAUTH (on Node.js),\n * or unless the original tenant Id is `adfs`.\n * @internal\n */\nexport function processMultiTenantRequest(tenantId, getTokenOptions, additionallyAllowedTenantIds = [], logger) {\n    var _a;\n    let resolvedTenantId;\n    if (process.env.AZURE_IDENTITY_DISABLE_MULTITENANTAUTH) {\n        resolvedTenantId = tenantId;\n    }\n    else if (tenantId === \"adfs\") {\n        resolvedTenantId = tenantId;\n    }\n    else {\n        resolvedTenantId = (_a = getTokenOptions === null || getTokenOptions === void 0 ? void 0 : getTokenOptions.tenantId) !== null && _a !== void 0 ? _a : tenantId;\n    }\n    if (tenantId &&\n        resolvedTenantId !== tenantId &&\n        !additionallyAllowedTenantIds.includes(\"*\") &&\n        !additionallyAllowedTenantIds.some((t) => t.localeCompare(resolvedTenantId) === 0)) {\n        const message = createConfigurationErrorMessage(tenantId);\n        logger === null || logger === void 0 ? void 0 : logger.info(message);\n        throw new CredentialUnavailableError(message);\n    }\n    return resolvedTenantId;\n}\n//# sourceMappingURL=processMultiTenantRequest.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ALL_TENANTS, DeveloperSignOnClientId } from \"../constants\";\nimport { formatError } from \"./logging\";\nexport { processMultiTenantRequest } from \"./processMultiTenantRequest\";\n/**\n * @internal\n */\nexport function checkTenantId(logger, tenantId) {\n    if (!tenantId.match(/^[0-9a-zA-Z-.]+$/)) {\n        const error = new Error(\"Invalid tenant id provided. You can locate your tenant id by following the instructions listed here: https://learn.microsoft.com/partner-center/find-ids-and-domain-names.\");\n        logger.info(formatError(\"\", error));\n        throw error;\n    }\n}\n/**\n * @internal\n */\nexport function resolveTenantId(logger, tenantId, clientId) {\n    if (tenantId) {\n        checkTenantId(logger, tenantId);\n        return tenantId;\n    }\n    if (!clientId) {\n        clientId = DeveloperSignOnClientId;\n    }\n    if (clientId !== DeveloperSignOnClientId) {\n        return \"common\";\n    }\n    return \"organizations\";\n}\n/**\n * @internal\n */\nexport function resolveAdditionallyAllowedTenantIds(additionallyAllowedTenants) {\n    if (!additionallyAllowedTenants || additionallyAllowedTenants.length === 0) {\n        return [];\n    }\n    if (additionallyAllowedTenants.includes(\"*\")) {\n        return ALL_TENANTS;\n    }\n    return additionallyAllowedTenants;\n}\n//# sourceMappingURL=tenantIdUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=interfaces.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value, mapperTypeName) {\n    return (mapperTypeName !== \"Composite\" &&\n        mapperTypeName !== \"Dictionary\" &&\n        (typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\" ||\n            (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !==\n                null ||\n            value === undefined ||\n            value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value) {\n    return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid) {\n    return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n    const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body);\n    if (responseObject.hasNullableType &&\n        Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n        return responseObject.shouldWrapBody ? { body: null } : null;\n    }\n    else {\n        return responseObject.shouldWrapBody\n            ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody;\n    }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(fullResponse, responseSpec) {\n    var _a, _b;\n    const parsedHeaders = fullResponse.parsedHeaders;\n    // head methods never have a body, but we return a boolean set to body property\n    // to indicate presence/absence of the resource\n    if (fullResponse.request.method === \"HEAD\") {\n        return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody });\n    }\n    const bodyMapper = responseSpec && responseSpec.bodyMapper;\n    const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable);\n    const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name;\n    /** If the body is asked for, we look at the expected body type to handle it */\n    if (expectedBodyTypeName === \"Stream\") {\n        return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody });\n    }\n    const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n        bodyMapper.type.modelProperties) ||\n        {};\n    const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n    if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n        const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : [];\n        for (const key of Object.keys(modelProperties)) {\n            if (modelProperties[key].serializedName) {\n                arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key];\n            }\n        }\n        if (parsedHeaders) {\n            for (const key of Object.keys(parsedHeaders)) {\n                arrayResponse[key] = parsedHeaders[key];\n            }\n        }\n        return isNullable &&\n            !fullResponse.parsedBody &&\n            !parsedHeaders &&\n            Object.getOwnPropertyNames(modelProperties).length === 0\n            ? null\n            : arrayResponse;\n    }\n    return handleNullableResponseAndWrappableBody({\n        body: fullResponse.parsedBody,\n        headers: parsedHeaders,\n        hasNullableType: isNullable,\n        shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n    });\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as base64 from \"./base64\";\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces\";\nimport { isDuration, isValidUuid } from \"./utils\";\nclass SerializerImpl {\n    constructor(modelMappers = {}, isXML = false) {\n        this.modelMappers = modelMappers;\n        this.isXML = isXML;\n    }\n    /**\n     * @deprecated Removing the constraints validation on client side.\n     */\n    validateConstraints(mapper, value, objectName) {\n        const failValidation = (constraintName, constraintValue) => {\n            throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n        };\n        if (mapper.constraints && value !== undefined && value !== null) {\n            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n            if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n                failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n            }\n            if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n                failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n            }\n            if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n                failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n            }\n            if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n                failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n            }\n            if (MaxItems !== undefined && value.length > MaxItems) {\n                failValidation(\"MaxItems\", MaxItems);\n            }\n            if (MaxLength !== undefined && value.length > MaxLength) {\n                failValidation(\"MaxLength\", MaxLength);\n            }\n            if (MinItems !== undefined && value.length < MinItems) {\n                failValidation(\"MinItems\", MinItems);\n            }\n            if (MinLength !== undefined && value.length < MinLength) {\n                failValidation(\"MinLength\", MinLength);\n            }\n            if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n                failValidation(\"MultipleOf\", MultipleOf);\n            }\n            if (Pattern) {\n                const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n                if (typeof value !== \"string\" || value.match(pattern) === null) {\n                    failValidation(\"Pattern\", Pattern);\n                }\n            }\n            if (UniqueItems &&\n                value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n                failValidation(\"UniqueItems\", UniqueItems);\n            }\n        }\n    }\n    /**\n     * Serialize the given object based on its metadata defined in the mapper\n     *\n     * @param mapper - The mapper which defines the metadata of the serializable object\n     *\n     * @param object - A valid Javascript object to be serialized\n     *\n     * @param objectName - Name of the serialized object\n     *\n     * @param options - additional options to serialization\n     *\n     * @returns A valid serialized Javascript object\n     */\n    serialize(mapper, object, objectName, options = { xml: {} }) {\n        var _a, _b, _c;\n        const updatedOptions = {\n            xml: {\n                rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n                includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n                xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n            },\n        };\n        let payload = {};\n        const mapperType = mapper.type.name;\n        if (!objectName) {\n            objectName = mapper.serializedName;\n        }\n        if (mapperType.match(/^Sequence$/i) !== null) {\n            payload = [];\n        }\n        if (mapper.isConstant) {\n            object = mapper.defaultValue;\n        }\n        // This table of allowed values should help explain\n        // the mapper.required and mapper.nullable properties.\n        // X means \"neither undefined or null are allowed\".\n        //           || required\n        //           || true      | false\n        //  nullable || ==========================\n        //      true || null      | undefined/null\n        //     false || X         | undefined\n        // undefined || X         | undefined/null\n        const { required, nullable } = mapper;\n        if (required && nullable && object === undefined) {\n            throw new Error(`${objectName} cannot be undefined.`);\n        }\n        if (required && !nullable && (object === undefined || object === null)) {\n            throw new Error(`${objectName} cannot be null or undefined.`);\n        }\n        if (!required && nullable === false && object === null) {\n            throw new Error(`${objectName} cannot be null.`);\n        }\n        if (object === undefined || object === null) {\n            payload = object;\n        }\n        else {\n            if (mapperType.match(/^any$/i) !== null) {\n                payload = object;\n            }\n            else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n                payload = serializeBasicTypes(mapperType, objectName, object);\n            }\n            else if (mapperType.match(/^Enum$/i) !== null) {\n                const enumMapper = mapper;\n                payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n            }\n            else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n                payload = serializeDateTypes(mapperType, object, objectName);\n            }\n            else if (mapperType.match(/^ByteArray$/i) !== null) {\n                payload = serializeByteArrayType(objectName, object);\n            }\n            else if (mapperType.match(/^Base64Url$/i) !== null) {\n                payload = serializeBase64UrlType(objectName, object);\n            }\n            else if (mapperType.match(/^Sequence$/i) !== null) {\n                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n            else if (mapperType.match(/^Dictionary$/i) !== null) {\n                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n            else if (mapperType.match(/^Composite$/i) !== null) {\n                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n        }\n        return payload;\n    }\n    /**\n     * Deserialize the given object based on its metadata defined in the mapper\n     *\n     * @param mapper - The mapper which defines the metadata of the serializable object\n     *\n     * @param responseBody - A valid Javascript entity to be deserialized\n     *\n     * @param objectName - Name of the deserialized object\n     *\n     * @param options - Controls behavior of XML parser and builder.\n     *\n     * @returns A valid deserialized Javascript object\n     */\n    deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n        var _a, _b, _c, _d;\n        const updatedOptions = {\n            xml: {\n                rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n                includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n                xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n            },\n            ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false,\n        };\n        if (responseBody === undefined || responseBody === null) {\n            if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n                // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n                // between the list being empty versus being missing,\n                // so let's do the more user-friendly thing and return an empty list.\n                responseBody = [];\n            }\n            // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n            if (mapper.defaultValue !== undefined) {\n                responseBody = mapper.defaultValue;\n            }\n            return responseBody;\n        }\n        let payload;\n        const mapperType = mapper.type.name;\n        if (!objectName) {\n            objectName = mapper.serializedName;\n        }\n        if (mapperType.match(/^Composite$/i) !== null) {\n            payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n        }\n        else {\n            if (this.isXML) {\n                const xmlCharKey = updatedOptions.xml.xmlCharKey;\n                /**\n                 * If the mapper specifies this as a non-composite type value but the responseBody contains\n                 * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n                 * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n                 */\n                if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n                    responseBody = responseBody[xmlCharKey];\n                }\n            }\n            if (mapperType.match(/^Number$/i) !== null) {\n                payload = parseFloat(responseBody);\n                if (isNaN(payload)) {\n                    payload = responseBody;\n                }\n            }\n            else if (mapperType.match(/^Boolean$/i) !== null) {\n                if (responseBody === \"true\") {\n                    payload = true;\n                }\n                else if (responseBody === \"false\") {\n                    payload = false;\n                }\n                else {\n                    payload = responseBody;\n                }\n            }\n            else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n                payload = responseBody;\n            }\n            else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n                payload = new Date(responseBody);\n            }\n            else if (mapperType.match(/^UnixTime$/i) !== null) {\n                payload = unixTimeToDate(responseBody);\n            }\n            else if (mapperType.match(/^ByteArray$/i) !== null) {\n                payload = base64.decodeString(responseBody);\n            }\n            else if (mapperType.match(/^Base64Url$/i) !== null) {\n                payload = base64UrlToByteArray(responseBody);\n            }\n            else if (mapperType.match(/^Sequence$/i) !== null) {\n                payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n            }\n            else if (mapperType.match(/^Dictionary$/i) !== null) {\n                payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n            }\n        }\n        if (mapper.isConstant) {\n            payload = mapper.defaultValue;\n        }\n        return payload;\n    }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(modelMappers = {}, isXML = false) {\n    return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n    let len = str.length;\n    while (len - 1 >= 0 && str[len - 1] === ch) {\n        --len;\n    }\n    return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n    if (!buffer) {\n        return undefined;\n    }\n    if (!(buffer instanceof Uint8Array)) {\n        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n    }\n    // Uint8Array to Base64.\n    const str = base64.encodeByteArray(buffer);\n    // Base64 to Base64Url.\n    return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n    if (!str) {\n        return undefined;\n    }\n    if (str && typeof str.valueOf() !== \"string\") {\n        throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n    }\n    // Base64Url to Base64.\n    str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    // Base64 to Uint8Array.\n    return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n    const classes = [];\n    let partialclass = \"\";\n    if (prop) {\n        const subwords = prop.split(\".\");\n        for (const item of subwords) {\n            if (item.charAt(item.length - 1) === \"\\\\\") {\n                partialclass += item.substr(0, item.length - 1) + \".\";\n            }\n            else {\n                partialclass += item;\n                classes.push(partialclass);\n                partialclass = \"\";\n            }\n        }\n    }\n    return classes;\n}\nfunction dateToUnixTime(d) {\n    if (!d) {\n        return undefined;\n    }\n    if (typeof d.valueOf() === \"string\") {\n        d = new Date(d);\n    }\n    return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n    if (!n) {\n        return undefined;\n    }\n    return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n    if (value !== null && value !== undefined) {\n        if (typeName.match(/^Number$/i) !== null) {\n            if (typeof value !== \"number\") {\n                throw new Error(`${objectName} with value ${value} must be of type number.`);\n            }\n        }\n        else if (typeName.match(/^String$/i) !== null) {\n            if (typeof value.valueOf() !== \"string\") {\n                throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n            }\n        }\n        else if (typeName.match(/^Uuid$/i) !== null) {\n            if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n                throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n            }\n        }\n        else if (typeName.match(/^Boolean$/i) !== null) {\n            if (typeof value !== \"boolean\") {\n                throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n            }\n        }\n        else if (typeName.match(/^Stream$/i) !== null) {\n            const objectType = typeof value;\n            if (objectType !== \"string\" &&\n                typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n                typeof value.tee !== \"function\" && // browser ReadableStream\n                !(value instanceof ArrayBuffer) &&\n                !ArrayBuffer.isView(value) &&\n                // File objects count as a type of Blob, so we want to use instanceof explicitly\n                !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n                objectType !== \"function\") {\n                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n            }\n        }\n    }\n    return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n    if (!allowedValues) {\n        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n    }\n    const isPresent = allowedValues.some((item) => {\n        if (typeof item.valueOf() === \"string\") {\n            return item.toLowerCase() === value.toLowerCase();\n        }\n        return item === value;\n    });\n    if (!isPresent) {\n        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n    }\n    return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n    if (value !== undefined && value !== null) {\n        if (!(value instanceof Uint8Array)) {\n            throw new Error(`${objectName} must be of type Uint8Array.`);\n        }\n        value = base64.encodeByteArray(value);\n    }\n    return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n    if (value !== undefined && value !== null) {\n        if (!(value instanceof Uint8Array)) {\n            throw new Error(`${objectName} must be of type Uint8Array.`);\n        }\n        value = bufferToBase64Url(value);\n    }\n    return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n    if (value !== undefined && value !== null) {\n        if (typeName.match(/^Date$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n            }\n            value =\n                value instanceof Date\n                    ? value.toISOString().substring(0, 10)\n                    : new Date(value).toISOString().substring(0, 10);\n        }\n        else if (typeName.match(/^DateTime$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n            }\n            value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n        }\n        else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n            }\n            value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n        }\n        else if (typeName.match(/^UnixTime$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n                    `for it to be serialized in UnixTime/Epoch format.`);\n            }\n            value = dateToUnixTime(value);\n        }\n        else if (typeName.match(/^TimeSpan$/i) !== null) {\n            if (!isDuration(value)) {\n                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n            }\n        }\n    }\n    return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n    var _a;\n    if (!Array.isArray(object)) {\n        throw new Error(`${objectName} must be of type Array.`);\n    }\n    let elementType = mapper.type.element;\n    if (!elementType || typeof elementType !== \"object\") {\n        throw new Error(`element\" metadata for an Array must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}.`);\n    }\n    // Quirk: Composite mappers referenced by `element` might\n    // not have *all* properties declared (like uberParent),\n    // so let's try to look up the full definition by name.\n    if (elementType.type.name === \"Composite\" && elementType.type.className) {\n        elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType;\n    }\n    const tempArray = [];\n    for (let i = 0; i < object.length; i++) {\n        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n        if (isXml && elementType.xmlNamespace) {\n            const xmlnsKey = elementType.xmlNamespacePrefix\n                ? `xmlns:${elementType.xmlNamespacePrefix}`\n                : \"xmlns\";\n            if (elementType.type.name === \"Composite\") {\n                tempArray[i] = Object.assign({}, serializedValue);\n                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n            }\n            else {\n                tempArray[i] = {};\n                tempArray[i][options.xml.xmlCharKey] = serializedValue;\n                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n            }\n        }\n        else {\n            tempArray[i] = serializedValue;\n        }\n    }\n    return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n    if (typeof object !== \"object\") {\n        throw new Error(`${objectName} must be of type object.`);\n    }\n    const valueType = mapper.type.value;\n    if (!valueType || typeof valueType !== \"object\") {\n        throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}.`);\n    }\n    const tempDictionary = {};\n    for (const key of Object.keys(object)) {\n        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n        // If the element needs an XML namespace we need to add it within the $ property\n        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n    }\n    // Add the namespace to the root element if needed\n    if (isXml && mapper.xmlNamespace) {\n        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n        const result = tempDictionary;\n        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n        return result;\n    }\n    return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n    const additionalProperties = mapper.type.additionalProperties;\n    if (!additionalProperties && mapper.type.className) {\n        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n        return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;\n    }\n    return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n    const className = mapper.type.className;\n    if (!className) {\n        throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n    }\n    return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n    let modelProps = mapper.type.modelProperties;\n    if (!modelProps) {\n        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n        if (!modelMapper) {\n            throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n        }\n        modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;\n        if (!modelProps) {\n            throw new Error(`modelProperties cannot be null or undefined in the ` +\n                `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n        }\n    }\n    return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n    if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n        mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n    }\n    if (object !== undefined && object !== null) {\n        const payload = {};\n        const modelProps = resolveModelProperties(serializer, mapper, objectName);\n        for (const key of Object.keys(modelProps)) {\n            const propertyMapper = modelProps[key];\n            if (propertyMapper.readOnly) {\n                continue;\n            }\n            let propName;\n            let parentObject = payload;\n            if (serializer.isXML) {\n                if (propertyMapper.xmlIsWrapped) {\n                    propName = propertyMapper.xmlName;\n                }\n                else {\n                    propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n                }\n            }\n            else {\n                const paths = splitSerializeName(propertyMapper.serializedName);\n                propName = paths.pop();\n                for (const pathName of paths) {\n                    const childObject = parentObject[pathName];\n                    if ((childObject === undefined || childObject === null) &&\n                        ((object[key] !== undefined && object[key] !== null) ||\n                            propertyMapper.defaultValue !== undefined)) {\n                        parentObject[pathName] = {};\n                    }\n                    parentObject = parentObject[pathName];\n                }\n            }\n            if (parentObject !== undefined && parentObject !== null) {\n                if (isXml && mapper.xmlNamespace) {\n                    const xmlnsKey = mapper.xmlNamespacePrefix\n                        ? `xmlns:${mapper.xmlNamespacePrefix}`\n                        : \"xmlns\";\n                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });\n                }\n                const propertyObjectName = propertyMapper.serializedName !== \"\"\n                    ? objectName + \".\" + propertyMapper.serializedName\n                    : objectName;\n                let toSerialize = object[key];\n                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n                if (polymorphicDiscriminator &&\n                    polymorphicDiscriminator.clientName === key &&\n                    (toSerialize === undefined || toSerialize === null)) {\n                    toSerialize = mapper.serializedName;\n                }\n                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n                if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n                    if (isXml && propertyMapper.xmlIsAttribute) {\n                        // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n                        // This keeps things simple while preventing name collision\n                        // with names in user documents.\n                        parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n                        parentObject[XML_ATTRKEY][propName] = serializedValue;\n                    }\n                    else if (isXml && propertyMapper.xmlIsWrapped) {\n                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n                    }\n                    else {\n                        parentObject[propName] = value;\n                    }\n                }\n            }\n        }\n        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n        if (additionalPropertiesMapper) {\n            const propNames = Object.keys(modelProps);\n            for (const clientPropName in object) {\n                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n                if (isAdditionalProperty) {\n                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n                }\n            }\n        }\n        return payload;\n    }\n    return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n    if (!isXml || !propertyMapper.xmlNamespace) {\n        return serializedValue;\n    }\n    const xmlnsKey = propertyMapper.xmlNamespacePrefix\n        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n        : \"xmlns\";\n    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n    if ([\"Composite\"].includes(propertyMapper.type.name)) {\n        if (serializedValue[XML_ATTRKEY]) {\n            return serializedValue;\n        }\n        else {\n            const result = Object.assign({}, serializedValue);\n            result[XML_ATTRKEY] = xmlNamespace;\n            return result;\n        }\n    }\n    const result = {};\n    result[options.xml.xmlCharKey] = serializedValue;\n    result[XML_ATTRKEY] = xmlNamespace;\n    return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n    return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n    var _a, _b;\n    const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n    if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n        mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n    }\n    const modelProps = resolveModelProperties(serializer, mapper, objectName);\n    let instance = {};\n    const handledPropertyNames = [];\n    for (const key of Object.keys(modelProps)) {\n        const propertyMapper = modelProps[key];\n        const paths = splitSerializeName(modelProps[key].serializedName);\n        handledPropertyNames.push(paths[0]);\n        const { serializedName, xmlName, xmlElementName } = propertyMapper;\n        let propertyObjectName = objectName;\n        if (serializedName !== \"\" && serializedName !== undefined) {\n            propertyObjectName = objectName + \".\" + serializedName;\n        }\n        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n        if (headerCollectionPrefix) {\n            const dictionary = {};\n            for (const headerKey of Object.keys(responseBody)) {\n                if (headerKey.startsWith(headerCollectionPrefix)) {\n                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n                }\n                handledPropertyNames.push(headerKey);\n            }\n            instance[key] = dictionary;\n        }\n        else if (serializer.isXML) {\n            if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n                instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);\n            }\n            else if (propertyMapper.xmlIsMsText) {\n                if (responseBody[xmlCharKey] !== undefined) {\n                    instance[key] = responseBody[xmlCharKey];\n                }\n                else if (typeof responseBody === \"string\") {\n                    // The special case where xml parser parses \"<Name>content</Name>\" into JSON of\n                    //   `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n                    instance[key] = responseBody;\n                }\n            }\n            else {\n                const propertyName = xmlElementName || xmlName || serializedName;\n                if (propertyMapper.xmlIsWrapped) {\n                    /* a list of <xmlElementName> wrapped by <xmlName>\n                      For the xml example below\n                        <Cors>\n                          <CorsRule>...</CorsRule>\n                          <CorsRule>...</CorsRule>\n                        </Cors>\n                      the responseBody has\n                        {\n                          Cors: {\n                            CorsRule: [{...}, {...}]\n                          }\n                        }\n                      xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n                    */\n                    const wrapped = responseBody[xmlName];\n                    const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : [];\n                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n                    handledPropertyNames.push(xmlName);\n                }\n                else {\n                    const property = responseBody[propertyName];\n                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n                    handledPropertyNames.push(propertyName);\n                }\n            }\n        }\n        else {\n            // deserialize the property if it is present in the provided responseBody instance\n            let propertyInstance;\n            let res = responseBody;\n            // traversing the object step by step.\n            let steps = 0;\n            for (const item of paths) {\n                if (!res)\n                    break;\n                steps++;\n                res = res[item];\n            }\n            // only accept null when reaching the last position of object otherwise it would be undefined\n            if (res === null && steps < paths.length) {\n                res = undefined;\n            }\n            propertyInstance = res;\n            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n            // checking that the model property name (key)(ex: \"fishtype\") and the\n            // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n            // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n            // is a better approach. The generator is not consistent with escaping '\\.' in the\n            // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n            // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n            // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n            // the transformation of model property name (ex: \"fishtype\") is done consistently.\n            // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n            if (polymorphicDiscriminator &&\n                key === polymorphicDiscriminator.clientName &&\n                (propertyInstance === undefined || propertyInstance === null)) {\n                propertyInstance = mapper.serializedName;\n            }\n            let serializedValue;\n            // paging\n            if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n                propertyInstance = responseBody[key];\n                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n                // Copy over any properties that have already been added into the instance, where they do\n                // not exist on the newly de-serialized array\n                for (const [k, v] of Object.entries(instance)) {\n                    if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n                        arrayInstance[k] = v;\n                    }\n                }\n                instance = arrayInstance;\n            }\n            else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n                instance[key] = serializedValue;\n            }\n        }\n    }\n    const additionalPropertiesMapper = mapper.type.additionalProperties;\n    if (additionalPropertiesMapper) {\n        const isAdditionalProperty = (responsePropName) => {\n            for (const clientPropName in modelProps) {\n                const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n                if (paths[0] === responsePropName) {\n                    return false;\n                }\n            }\n            return true;\n        };\n        for (const responsePropName in responseBody) {\n            if (isAdditionalProperty(responsePropName)) {\n                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n            }\n        }\n    }\n    else if (responseBody && !options.ignoreUnknownProperties) {\n        for (const key of Object.keys(responseBody)) {\n            if (instance[key] === undefined &&\n                !handledPropertyNames.includes(key) &&\n                !isSpecialXmlProperty(key, options)) {\n                instance[key] = responseBody[key];\n            }\n        }\n    }\n    return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n    /* jshint validthis: true */\n    const value = mapper.type.value;\n    if (!value || typeof value !== \"object\") {\n        throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}`);\n    }\n    if (responseBody) {\n        const tempDictionary = {};\n        for (const key of Object.keys(responseBody)) {\n            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n        }\n        return tempDictionary;\n    }\n    return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n    var _a;\n    let element = mapper.type.element;\n    if (!element || typeof element !== \"object\") {\n        throw new Error(`element\" metadata for an Array must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}`);\n    }\n    if (responseBody) {\n        if (!Array.isArray(responseBody)) {\n            // xml2js will interpret a single element array as just the element, so force it to be an array\n            responseBody = [responseBody];\n        }\n        // Quirk: Composite mappers referenced by `element` might\n        // not have *all* properties declared (like uberParent),\n        // so let's try to look up the full definition by name.\n        if (element.type.name === \"Composite\" && element.type.className) {\n            element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element;\n        }\n        const tempArray = [];\n        for (let i = 0; i < responseBody.length; i++) {\n            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n        }\n        return tempArray;\n    }\n    return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n    const typeNamesToCheck = [typeName];\n    while (typeNamesToCheck.length) {\n        const currentName = typeNamesToCheck.shift();\n        const indexDiscriminator = discriminatorValue === currentName\n            ? discriminatorValue\n            : currentName + \".\" + discriminatorValue;\n        if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n            return discriminators[indexDiscriminator];\n        }\n        else {\n            for (const [name, mapper] of Object.entries(discriminators)) {\n                if (name.startsWith(currentName + \".\") &&\n                    mapper.type.uberParent === currentName &&\n                    mapper.type.className) {\n                    typeNamesToCheck.push(mapper.type.className);\n                }\n            }\n        }\n    }\n    return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n    var _a;\n    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n    if (polymorphicDiscriminator) {\n        let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n        if (discriminatorName) {\n            // The serializedName might have \\\\, which we just want to ignore\n            if (polymorphicPropertyName === \"serializedName\") {\n                discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n            }\n            const discriminatorValue = object[discriminatorName];\n            const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className;\n            if (typeof discriminatorValue === \"string\" && typeName) {\n                const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n                if (polymorphicMapper) {\n                    mapper = polymorphicMapper;\n                }\n            }\n        }\n    }\n    return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n    return (mapper.type.polymorphicDiscriminator ||\n        getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n        getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n    return (typeName &&\n        serializer.modelMappers[typeName] &&\n        serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n    Base64Url: \"Base64Url\",\n    Boolean: \"Boolean\",\n    ByteArray: \"ByteArray\",\n    Composite: \"Composite\",\n    Date: \"Date\",\n    DateTime: \"DateTime\",\n    DateTimeRfc1123: \"DateTimeRfc1123\",\n    Dictionary: \"Dictionary\",\n    Enum: \"Enum\",\n    Number: \"Number\",\n    Object: \"Object\",\n    Sequence: \"Sequence\",\n    String: \"String\",\n    Stream: \"Stream\",\n    TimeSpan: \"TimeSpan\",\n    UnixTime: \"UnixTime\",\n};\n//# sourceMappingURL=serializer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n    constructor(policies) {\n        var _a;\n        this._policies = [];\n        this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : [];\n        this._orderedPolicies = undefined;\n    }\n    addPolicy(policy, options = {}) {\n        if (options.phase && options.afterPhase) {\n            throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n        }\n        if (options.phase && !ValidPhaseNames.has(options.phase)) {\n            throw new Error(`Invalid phase name: ${options.phase}`);\n        }\n        if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n            throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n        }\n        this._policies.push({\n            policy,\n            options,\n        });\n        this._orderedPolicies = undefined;\n    }\n    removePolicy(options) {\n        const removedPolicies = [];\n        this._policies = this._policies.filter((policyDescriptor) => {\n            if ((options.name && policyDescriptor.policy.name === options.name) ||\n                (options.phase && policyDescriptor.options.phase === options.phase)) {\n                removedPolicies.push(policyDescriptor.policy);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n        this._orderedPolicies = undefined;\n        return removedPolicies;\n    }\n    sendRequest(httpClient, request) {\n        const policies = this.getOrderedPolicies();\n        const pipeline = policies.reduceRight((next, policy) => {\n            return (req) => {\n                return policy.sendRequest(req, next);\n            };\n        }, (req) => httpClient.sendRequest(req));\n        return pipeline(request);\n    }\n    getOrderedPolicies() {\n        if (!this._orderedPolicies) {\n            this._orderedPolicies = this.orderPolicies();\n        }\n        return this._orderedPolicies;\n    }\n    clone() {\n        return new HttpPipeline(this._policies);\n    }\n    static create() {\n        return new HttpPipeline();\n    }\n    orderPolicies() {\n        /**\n         * The goal of this method is to reliably order pipeline policies\n         * based on their declared requirements when they were added.\n         *\n         * Order is first determined by phase:\n         *\n         * 1. Serialize Phase\n         * 2. Policies not in a phase\n         * 3. Deserialize Phase\n         * 4. Retry Phase\n         * 5. Sign Phase\n         *\n         * Within each phase, policies are executed in the order\n         * they were added unless they were specified to execute\n         * before/after other policies or after a particular phase.\n         *\n         * To determine the final order, we will walk the policy list\n         * in phase order multiple times until all dependencies are\n         * satisfied.\n         *\n         * `afterPolicies` are the set of policies that must be\n         * executed before a given policy. This requirement is\n         * considered satisfied when each of the listed policies\n         * have been scheduled.\n         *\n         * `beforePolicies` are the set of policies that must be\n         * executed after a given policy. Since this dependency\n         * can be expressed by converting it into a equivalent\n         * `afterPolicies` declarations, they are normalized\n         * into that form for simplicity.\n         *\n         * An `afterPhase` dependency is considered satisfied when all\n         * policies in that phase have scheduled.\n         *\n         */\n        const result = [];\n        // Track all policies we know about.\n        const policyMap = new Map();\n        function createPhase(name) {\n            return {\n                name,\n                policies: new Set(),\n                hasRun: false,\n                hasAfterPolicies: false,\n            };\n        }\n        // Track policies for each phase.\n        const serializePhase = createPhase(\"Serialize\");\n        const noPhase = createPhase(\"None\");\n        const deserializePhase = createPhase(\"Deserialize\");\n        const retryPhase = createPhase(\"Retry\");\n        const signPhase = createPhase(\"Sign\");\n        // a list of phases in order\n        const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n        // Small helper function to map phase name to each Phase\n        function getPhase(phase) {\n            if (phase === \"Retry\") {\n                return retryPhase;\n            }\n            else if (phase === \"Serialize\") {\n                return serializePhase;\n            }\n            else if (phase === \"Deserialize\") {\n                return deserializePhase;\n            }\n            else if (phase === \"Sign\") {\n                return signPhase;\n            }\n            else {\n                return noPhase;\n            }\n        }\n        // First walk each policy and create a node to track metadata.\n        for (const descriptor of this._policies) {\n            const policy = descriptor.policy;\n            const options = descriptor.options;\n            const policyName = policy.name;\n            if (policyMap.has(policyName)) {\n                throw new Error(\"Duplicate policy names not allowed in pipeline\");\n            }\n            const node = {\n                policy,\n                dependsOn: new Set(),\n                dependants: new Set(),\n            };\n            if (options.afterPhase) {\n                node.afterPhase = getPhase(options.afterPhase);\n                node.afterPhase.hasAfterPolicies = true;\n            }\n            policyMap.set(policyName, node);\n            const phase = getPhase(options.phase);\n            phase.policies.add(node);\n        }\n        // Now that each policy has a node, connect dependency references.\n        for (const descriptor of this._policies) {\n            const { policy, options } = descriptor;\n            const policyName = policy.name;\n            const node = policyMap.get(policyName);\n            if (!node) {\n                throw new Error(`Missing node for policy ${policyName}`);\n            }\n            if (options.afterPolicies) {\n                for (const afterPolicyName of options.afterPolicies) {\n                    const afterNode = policyMap.get(afterPolicyName);\n                    if (afterNode) {\n                        // Linking in both directions helps later\n                        // when we want to notify dependants.\n                        node.dependsOn.add(afterNode);\n                        afterNode.dependants.add(node);\n                    }\n                }\n            }\n            if (options.beforePolicies) {\n                for (const beforePolicyName of options.beforePolicies) {\n                    const beforeNode = policyMap.get(beforePolicyName);\n                    if (beforeNode) {\n                        // To execute before another node, make it\n                        // depend on the current node.\n                        beforeNode.dependsOn.add(node);\n                        node.dependants.add(beforeNode);\n                    }\n                }\n            }\n        }\n        function walkPhase(phase) {\n            phase.hasRun = true;\n            // Sets iterate in insertion order\n            for (const node of phase.policies) {\n                if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n                    // If this node is waiting on a phase to complete,\n                    // we need to skip it for now.\n                    // Even if the phase is empty, we should wait for it\n                    // to be walked to avoid re-ordering policies.\n                    continue;\n                }\n                if (node.dependsOn.size === 0) {\n                    // If there's nothing else we're waiting for, we can\n                    // add this policy to the result list.\n                    result.push(node.policy);\n                    // Notify anything that depends on this policy that\n                    // the policy has been scheduled.\n                    for (const dependant of node.dependants) {\n                        dependant.dependsOn.delete(node);\n                    }\n                    policyMap.delete(node.policy.name);\n                    phase.policies.delete(node);\n                }\n            }\n        }\n        function walkPhases() {\n            for (const phase of orderedPhases) {\n                walkPhase(phase);\n                // if the phase isn't complete\n                if (phase.policies.size > 0 && phase !== noPhase) {\n                    if (!noPhase.hasRun) {\n                        // Try running noPhase to see if that unblocks this phase next tick.\n                        // This can happen if a phase that happens before noPhase\n                        // is waiting on a noPhase policy to complete.\n                        walkPhase(noPhase);\n                    }\n                    // Don't proceed to the next phase until this phase finishes.\n                    return;\n                }\n                if (phase.hasAfterPolicies) {\n                    // Run any policies unblocked by this phase\n                    walkPhase(noPhase);\n                }\n            }\n        }\n        // Iterate until we've put every node in the result list.\n        let iteration = 0;\n        while (policyMap.size > 0) {\n            iteration++;\n            const initialResultLength = result.length;\n            // Keep walking each phase in order until we can order every node.\n            walkPhases();\n            // The result list *should* get at least one larger each time\n            // after the first full pass.\n            // Otherwise, we're going to loop forever.\n            if (result.length <= initialResultLength && iteration > 1) {\n                throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n            }\n        }\n        return result;\n    }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline() {\n    return HttpPipeline.create();\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isObject } from \"@azure/core-util\";\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n    \"x-ms-client-request-id\",\n    \"x-ms-return-client-request-id\",\n    \"x-ms-useragent\",\n    \"x-ms-correlation-request-id\",\n    \"x-ms-request-id\",\n    \"client-request-id\",\n    \"ms-cv\",\n    \"return-client-request-id\",\n    \"traceparent\",\n    \"Access-Control-Allow-Credentials\",\n    \"Access-Control-Allow-Headers\",\n    \"Access-Control-Allow-Methods\",\n    \"Access-Control-Allow-Origin\",\n    \"Access-Control-Expose-Headers\",\n    \"Access-Control-Max-Age\",\n    \"Access-Control-Request-Headers\",\n    \"Access-Control-Request-Method\",\n    \"Origin\",\n    \"Accept\",\n    \"Accept-Encoding\",\n    \"Cache-Control\",\n    \"Connection\",\n    \"Content-Length\",\n    \"Content-Type\",\n    \"Date\",\n    \"ETag\",\n    \"Expires\",\n    \"If-Match\",\n    \"If-Modified-Since\",\n    \"If-None-Match\",\n    \"If-Unmodified-Since\",\n    \"Last-Modified\",\n    \"Pragma\",\n    \"Request-Id\",\n    \"Retry-After\",\n    \"Server\",\n    \"Transfer-Encoding\",\n    \"User-Agent\",\n    \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * @internal\n */\nexport class Sanitizer {\n    constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n        allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n        allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n    }\n    sanitize(obj) {\n        const seen = new Set();\n        return JSON.stringify(obj, (key, value) => {\n            // Ensure Errors include their interesting non-enumerable members\n            if (value instanceof Error) {\n                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });\n            }\n            if (key === \"headers\") {\n                return this.sanitizeHeaders(value);\n            }\n            else if (key === \"url\") {\n                return this.sanitizeUrl(value);\n            }\n            else if (key === \"query\") {\n                return this.sanitizeQuery(value);\n            }\n            else if (key === \"body\") {\n                // Don't log the request body\n                return undefined;\n            }\n            else if (key === \"response\") {\n                // Don't log response again\n                return undefined;\n            }\n            else if (key === \"operationSpec\") {\n                // When using sendOperationRequest, the request carries a massive\n                // field with the autorest spec. No need to log it.\n                return undefined;\n            }\n            else if (Array.isArray(value) || isObject(value)) {\n                if (seen.has(value)) {\n                    return \"[Circular]\";\n                }\n                seen.add(value);\n            }\n            return value;\n        }, 2);\n    }\n    sanitizeHeaders(obj) {\n        const sanitized = {};\n        for (const key of Object.keys(obj)) {\n            if (this.allowedHeaderNames.has(key.toLowerCase())) {\n                sanitized[key] = obj[key];\n            }\n            else {\n                sanitized[key] = RedactedString;\n            }\n        }\n        return sanitized;\n    }\n    sanitizeQuery(value) {\n        if (typeof value !== \"object\" || value === null) {\n            return value;\n        }\n        const sanitized = {};\n        for (const k of Object.keys(value)) {\n            if (this.allowedQueryParameters.has(k.toLowerCase())) {\n                sanitized[k] = value[k];\n            }\n            else {\n                sanitized[k] = RedactedString;\n            }\n        }\n        return sanitized;\n    }\n    sanitizeUrl(value) {\n        if (typeof value !== \"string\" || value === null) {\n            return value;\n        }\n        const url = new URL(value);\n        if (!url.search) {\n            return value;\n        }\n        for (const [key] of url.searchParams) {\n            if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n                url.searchParams.set(key, RedactedString);\n            }\n        }\n        return url.toString();\n    }\n}\n//# sourceMappingURL=sanitizer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { logger as coreLogger } from \"../log\";\nimport { Sanitizer } from \"../util/sanitizer\";\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options = {}) {\n    var _a;\n    const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info;\n    const sanitizer = new Sanitizer({\n        additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n        additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n    });\n    return {\n        name: logPolicyName,\n        async sendRequest(request, next) {\n            if (!logger.enabled) {\n                return next(request);\n            }\n            logger(`Request: ${sanitizer.sanitize(request)}`);\n            const response = await next(request);\n            logger(`Response status code: ${response.status}`);\n            logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n            return response;\n        },\n    };\n}\n//# sourceMappingURL=logPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options = {}) {\n    const { maxRetries = 20 } = options;\n    return {\n        name: redirectPolicyName,\n        async sendRequest(request, next) {\n            const response = await next(request);\n            return handleRedirect(next, response, maxRetries);\n        },\n    };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n    const { request, status, headers } = response;\n    const locationHeader = headers.get(\"location\");\n    if (locationHeader &&\n        (status === 300 ||\n            (status === 301 && allowedRedirect.includes(request.method)) ||\n            (status === 302 && allowedRedirect.includes(request.method)) ||\n            (status === 303 && request.method === \"POST\") ||\n            status === 307) &&\n        currentRetries < maxRetries) {\n        const url = new URL(locationHeader, request.url);\n        request.url = url.toString();\n        // POST request with Status code 303 should be converted into a\n        // redirected GET request if the redirect url is present in the location header\n        if (status === 303) {\n            request.method = \"GET\";\n            request.headers.delete(\"Content-Length\");\n            delete request.body;\n        }\n        request.headers.delete(\"Authorization\");\n        const res = await next(request);\n        return handleRedirect(next, res, maxRetries, currentRetries + 1);\n    }\n    return response;\n}\n//# sourceMappingURL=redirectPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as os from \"os\";\n/**\n * @internal\n */\nexport function getHeaderName() {\n    return \"User-Agent\";\n}\n/**\n * @internal\n */\nexport function setPlatformSpecificData(map) {\n    map.set(\"Node\", process.version);\n    map.set(\"OS\", `(${os.arch()}-${os.type()}-${os.release()})`);\n}\n//# sourceMappingURL=userAgentPlatform.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const SDK_VERSION = \"1.14.0\";\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform\";\nimport { SDK_VERSION } from \"../constants\";\nfunction getUserAgentString(telemetryInfo) {\n    const parts = [];\n    for (const [key, value] of telemetryInfo) {\n        const token = value ? `${key}/${value}` : key;\n        parts.push(token);\n    }\n    return parts.join(\" \");\n}\n/**\n * @internal\n */\nexport function getUserAgentHeaderName() {\n    return getHeaderName();\n}\n/**\n * @internal\n */\nexport function getUserAgentValue(prefix) {\n    const runtimeInfo = new Map();\n    runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n    setPlatformSpecificData(runtimeInfo);\n    const defaultAgent = getUserAgentString(runtimeInfo);\n    const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n    return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent\";\nconst UserAgentHeaderName = getUserAgentHeaderName();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options = {}) {\n    const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n    return {\n        name: userAgentPolicyName,\n        async sendRequest(request, next) {\n            if (!request.headers.has(UserAgentHeaderName)) {\n                request.headers.set(UserAgentHeaderName, userAgentValue);\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function isNodeReadableStream(x) {\n    return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nexport function isWebReadableStream(x) {\n    return Boolean(x &&\n        typeof x.getReader === \"function\" &&\n        typeof x.tee === \"function\");\n}\nexport function isReadableStream(x) {\n    return isNodeReadableStream(x) || isWebReadableStream(x);\n}\nexport function isBlob(x) {\n    return typeof x.stream === \"function\";\n}\n//# sourceMappingURL=typeGuards.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isNode } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards\";\nconst unimplementedMethods = {\n    arrayBuffer: () => {\n        throw new Error(\"Not implemented\");\n    },\n    slice: () => {\n        throw new Error(\"Not implemented\");\n    },\n    text: () => {\n        throw new Error(\"Not implemented\");\n    },\n};\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\nfunction hasRawContent(x) {\n    return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream<Uint8Array>.\n *\n * @internal\n */\nexport function getRawContent(blob) {\n    if (hasRawContent(blob)) {\n        return blob[rawContent]();\n    }\n    else {\n        return blob.stream();\n    }\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n *   global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n *                  passed in a request's form data map, the stream will not be read into memory\n *                  and instead will be streamed when the request is made. In the event of a retry, the\n *                  stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(stream, name, options = {}) {\n    var _a, _b, _c, _d;\n    return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => {\n            const s = stream();\n            if (isNodeReadableStream(s)) {\n                throw new Error(\"Not supported: a Node stream was provided as input to createFileFromStream.\");\n            }\n            return s;\n        }, [rawContent]: stream });\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(content, name, options = {}) {\n    var _a, _b, _c;\n    if (isNode) {\n        return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content });\n    }\n    else {\n        return new File([content], name, options);\n    }\n}\n//# sourceMappingURL=file.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { Readable } from \"stream\";\nimport { isBlob } from \"./typeGuards\";\nimport { getRawContent } from \"./file\";\nfunction streamAsyncIterator() {\n    return __asyncGenerator(this, arguments, function* streamAsyncIterator_1() {\n        const reader = this.getReader();\n        try {\n            while (true) {\n                const { done, value } = yield __await(reader.read());\n                if (done) {\n                    return yield __await(void 0);\n                }\n                yield yield __await(value);\n            }\n        }\n        finally {\n            reader.releaseLock();\n        }\n    });\n}\nfunction makeAsyncIterable(webStream) {\n    if (!webStream[Symbol.asyncIterator]) {\n        webStream[Symbol.asyncIterator] = streamAsyncIterator.bind(webStream);\n    }\n    if (!webStream.values) {\n        webStream.values = streamAsyncIterator.bind(webStream);\n    }\n}\nfunction ensureNodeStream(stream) {\n    if (stream instanceof ReadableStream) {\n        makeAsyncIterable(stream);\n        return Readable.fromWeb(stream);\n    }\n    else {\n        return stream;\n    }\n}\nfunction toStream(source) {\n    if (source instanceof Uint8Array) {\n        return Readable.from(Buffer.from(source));\n    }\n    else if (isBlob(source)) {\n        return toStream(getRawContent(source));\n    }\n    else {\n        return ensureNodeStream(source);\n    }\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n *           In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(sources) {\n    return function () {\n        const streams = sources.map((x) => (typeof x === \"function\" ? x() : x)).map(toStream);\n        return Readable.from((function () {\n            return __asyncGenerator(this, arguments, function* () {\n                var _a, e_1, _b, _c;\n                for (const stream of streams) {\n                    try {\n                        for (var _d = true, stream_1 = (e_1 = void 0, __asyncValues(stream)), stream_1_1; stream_1_1 = yield __await(stream_1.next()), _a = stream_1_1.done, !_a; _d = true) {\n                            _c = stream_1_1.value;\n                            _d = false;\n                            const chunk = _c;\n                            yield yield __await(chunk);\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (!_d && !_a && (_b = stream_1.return)) yield __await(_b.call(stream_1));\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                }\n            });\n        })());\n    };\n}\n//# sourceMappingURL=concat.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport { concat } from \"../util/concat\";\nimport { isBlob } from \"../util/typeGuards\";\nfunction generateBoundary() {\n    return `----AzSDKFormBoundary${randomUUID()}`;\n}\nfunction encodeHeaders(headers) {\n    let result = \"\";\n    for (const [key, value] of headers) {\n        result += `${key}: ${value}\\r\\n`;\n    }\n    return result;\n}\nfunction getLength(source) {\n    if (source instanceof Uint8Array) {\n        return source.byteLength;\n    }\n    else if (isBlob(source)) {\n        // if was created using createFile then -1 means we have an unknown size\n        return source.size === -1 ? undefined : source.size;\n    }\n    else {\n        return undefined;\n    }\n}\nfunction getTotalLength(sources) {\n    let total = 0;\n    for (const source of sources) {\n        const partLength = getLength(source);\n        if (partLength === undefined) {\n            return undefined;\n        }\n        else {\n            total += partLength;\n        }\n    }\n    return total;\n}\nasync function buildRequestBody(request, parts, boundary) {\n    const sources = [\n        stringToUint8Array(`--${boundary}`, \"utf-8\"),\n        ...parts.flatMap((part) => [\n            stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n            stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n            stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n            part.body,\n            stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n        ]),\n        stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n    ];\n    const contentLength = getTotalLength(sources);\n    if (contentLength) {\n        request.headers.set(\"Content-Length\", contentLength);\n    }\n    request.body = await concat(sources);\n}\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n    if (boundary.length > maxBoundaryLength) {\n        throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n    }\n    if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n        throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n    }\n}\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy() {\n    return {\n        name: multipartPolicyName,\n        async sendRequest(request, next) {\n            var _a;\n            if (!request.multipartBody) {\n                return next(request);\n            }\n            if (request.body) {\n                throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n            }\n            let boundary = request.multipartBody.boundary;\n            const contentTypeHeader = (_a = request.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"multipart/mixed\";\n            const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n            if (!parsedHeader) {\n                throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n            }\n            const [, contentType, parsedBoundary] = parsedHeader;\n            if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n                throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n            }\n            boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary);\n            if (boundary) {\n                assertValidBoundary(boundary);\n            }\n            else {\n                boundary = generateBoundary();\n            }\n            request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n            await buildRequestBody(request, request.multipartBody.parts, boundary);\n            request.multipartBody = undefined;\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=multipartPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the decompressResponsePolicy.\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n/**\n * A policy to enable response decompression according to Accept-Encoding header\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding\n */\nexport function decompressResponsePolicy() {\n    return {\n        name: decompressResponsePolicyName,\n        async sendRequest(request, next) {\n            // HEAD requests have no body\n            if (request.method !== \"HEAD\") {\n                request.headers.set(\"Accept-Encoding\", \"gzip,deflate\");\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=decompressResponsePolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n *                  - abortSignal - The abortSignal associated with containing operation.\n *                  - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(delayInMs, value, options) {\n    return new Promise((resolve, reject) => {\n        let timer = undefined;\n        let onAborted = undefined;\n        const rejectOnAbort = () => {\n            return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));\n        };\n        const removeListeners = () => {\n            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {\n                options.abortSignal.removeEventListener(\"abort\", onAborted);\n            }\n        };\n        onAborted = () => {\n            if (timer) {\n                clearTimeout(timer);\n            }\n            removeListeners();\n            return rejectOnAbort();\n        };\n        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {\n            return rejectOnAbort();\n        }\n        timer = setTimeout(() => {\n            removeListeners();\n            resolve(value);\n        }, delayInMs);\n        if (options === null || options === void 0 ? void 0 : options.abortSignal) {\n            options.abortSignal.addEventListener(\"abort\", onAborted);\n        }\n    });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(response, headerName) {\n    const value = response.headers.get(headerName);\n    if (!value)\n        return;\n    const valueAsNum = Number(value);\n    if (Number.isNaN(valueAsNum))\n        return;\n    return valueAsNum;\n}\n//# sourceMappingURL=helpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { parseHeaderValueAsNumber } from \"../util/helpers\";\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n    if (!(response && [429, 503].includes(response.status)))\n        return undefined;\n    try {\n        // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n        for (const header of AllRetryAfterHeaders) {\n            const retryAfterValue = parseHeaderValueAsNumber(response, header);\n            if (retryAfterValue === 0 || retryAfterValue) {\n                // \"Retry-After\" header ==> seconds\n                // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n                const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n                return retryAfterValue * multiplyingFactor; // in milli-seconds\n            }\n        }\n        // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n        const retryAfterHeader = response.headers.get(RetryAfterHeader);\n        if (!retryAfterHeader)\n            return;\n        const date = Date.parse(retryAfterHeader);\n        const diff = date - Date.now();\n        // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n        return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n    }\n    catch (e) {\n        return undefined;\n    }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response) {\n    return Number.isFinite(getRetryAfterInMs(response));\n}\nexport function throttlingRetryStrategy() {\n    return {\n        name: \"throttlingRetryStrategy\",\n        retry({ response }) {\n            const retryAfterInMs = getRetryAfterInMs(response);\n            if (!Number.isFinite(retryAfterInMs)) {\n                return { skipStrategy: true };\n            }\n            return {\n                retryAfterInMs,\n            };\n        },\n    };\n}\n//# sourceMappingURL=throttlingRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getRandomIntegerInclusive } from \"@azure/core-util\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy\";\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(options = {}) {\n    var _a, _b;\n    const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL;\n    const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n    let retryAfterInMs = retryInterval;\n    return {\n        name: \"exponentialRetryStrategy\",\n        retry({ retryCount, response, responseError }) {\n            const matchedSystemError = isSystemError(responseError);\n            const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n            const isExponential = isExponentialRetryResponse(response);\n            const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n            const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n            if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n                return { skipStrategy: true };\n            }\n            if (responseError && !matchedSystemError && !isExponential) {\n                return { errorToThrow: responseError };\n            }\n            // Exponentially increase the delay each time\n            const exponentialDelay = retryAfterInMs * Math.pow(2, retryCount);\n            // Don't let the delay exceed the maximum\n            const clampedExponentialDelay = Math.min(maxRetryInterval, exponentialDelay);\n            // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n            // that retries across multiple clients don't occur simultaneously.\n            retryAfterInMs =\n                clampedExponentialDelay / 2 + getRandomIntegerInclusive(0, clampedExponentialDelay / 2);\n            return { retryAfterInMs };\n        },\n    };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response) {\n    return Boolean(response &&\n        response.status !== undefined &&\n        (response.status >= 500 || response.status === 408) &&\n        response.status !== 501 &&\n        response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err) {\n    if (!err) {\n        return false;\n    }\n    return (err.code === \"ETIMEDOUT\" ||\n        err.code === \"ESOCKETTIMEDOUT\" ||\n        err.code === \"ECONNREFUSED\" ||\n        err.code === \"ECONNRESET\" ||\n        err.code === \"ENOENT\" ||\n        err.code === \"ENOTFOUND\");\n}\n//# sourceMappingURL=exponentialRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"../util/helpers\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants\";\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) {\n    const logger = options.logger || retryPolicyLogger;\n    return {\n        name: retryPolicyName,\n        async sendRequest(request, next) {\n            var _a, _b;\n            let response;\n            let responseError;\n            let retryCount = -1;\n            // eslint-disable-next-line no-constant-condition\n            retryRequest: while (true) {\n                retryCount += 1;\n                response = undefined;\n                responseError = undefined;\n                try {\n                    logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n                    response = await next(request);\n                    logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n                }\n                catch (e) {\n                    logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n                    // RestErrors are valid targets for the retry strategies.\n                    // If none of the retry strategies can work with them, they will be thrown later in this policy.\n                    // If the received error is not a RestError, it is immediately thrown.\n                    responseError = e;\n                    if (!e || responseError.name !== \"RestError\") {\n                        throw e;\n                    }\n                    response = responseError.response;\n                }\n                if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {\n                    logger.error(`Retry ${retryCount}: Request aborted.`);\n                    const abortError = new AbortError();\n                    throw abortError;\n                }\n                if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) {\n                    logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n                    if (responseError) {\n                        throw responseError;\n                    }\n                    else if (response) {\n                        return response;\n                    }\n                    else {\n                        throw new Error(\"Maximum retries reached with no response or error to throw\");\n                    }\n                }\n                logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n                strategiesLoop: for (const strategy of strategies) {\n                    const strategyLogger = strategy.logger || retryPolicyLogger;\n                    strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n                    const modifiers = strategy.retry({\n                        retryCount,\n                        response,\n                        responseError,\n                    });\n                    if (modifiers.skipStrategy) {\n                        strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n                        continue strategiesLoop;\n                    }\n                    const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n                    if (errorToThrow) {\n                        strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n                        throw errorToThrow;\n                    }\n                    if (retryAfterInMs || retryAfterInMs === 0) {\n                        strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n                        await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n                        continue retryRequest;\n                    }\n                    if (redirectTo) {\n                        strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n                        request.url = redirectTo;\n                        continue retryRequest;\n                    }\n                }\n                if (responseError) {\n                    logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n                    throw responseError;\n                }\n                if (response) {\n                    logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n                    return response;\n                }\n                // If all the retries skip and there's no response,\n                // we're still in the retry loop, so a new request will be sent\n                // until `maxRetries` is reached.\n            }\n        },\n    };\n}\n//# sourceMappingURL=retryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy\";\nimport { retryPolicy } from \"./retryPolicy\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants\";\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options = {}) {\n    var _a;\n    return {\n        name: defaultRetryPolicyName,\n        sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n            maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,\n        }).sendRequest,\n    };\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction normalizeName(name) {\n    return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n    for (const entry of map.values()) {\n        yield [entry.name, entry.value];\n    }\n}\nclass HttpHeadersImpl {\n    constructor(rawHeaders) {\n        this._headersMap = new Map();\n        if (rawHeaders) {\n            for (const headerName of Object.keys(rawHeaders)) {\n                this.set(headerName, rawHeaders[headerName]);\n            }\n        }\n    }\n    /**\n     * Set a header in this collection with the provided name and value. The name is\n     * case-insensitive.\n     * @param name - The name of the header to set. This value is case-insensitive.\n     * @param value - The value of the header to set.\n     */\n    set(name, value) {\n        this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n    }\n    /**\n     * Get the header value for the provided header name, or undefined if no header exists in this\n     * collection with the provided name.\n     * @param name - The name of the header. This value is case-insensitive.\n     */\n    get(name) {\n        var _a;\n        return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value;\n    }\n    /**\n     * Get whether or not this header collection contains a header entry for the provided header name.\n     * @param name - The name of the header to set. This value is case-insensitive.\n     */\n    has(name) {\n        return this._headersMap.has(normalizeName(name));\n    }\n    /**\n     * Remove the header with the provided headerName.\n     * @param name - The name of the header to remove.\n     */\n    delete(name) {\n        this._headersMap.delete(normalizeName(name));\n    }\n    /**\n     * Get the JSON object representation of this HTTP header collection.\n     */\n    toJSON(options = {}) {\n        const result = {};\n        if (options.preserveCase) {\n            for (const entry of this._headersMap.values()) {\n                result[entry.name] = entry.value;\n            }\n        }\n        else {\n            for (const [normalizedName, entry] of this._headersMap) {\n                result[normalizedName] = entry.value;\n            }\n        }\n        return result;\n    }\n    /**\n     * Get the string representation of this HTTP header collection.\n     */\n    toString() {\n        return JSON.stringify(this.toJSON({ preserveCase: true }));\n    }\n    /**\n     * Iterate over tuples of header [name, value] pairs.\n     */\n    [Symbol.iterator]() {\n        return headerIterator(this._headersMap);\n    }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders) {\n    return new HttpHeadersImpl(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders\";\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy() {\n    return {\n        name: formDataPolicyName,\n        async sendRequest(request, next) {\n            if (request.formData) {\n                const contentType = request.headers.get(\"Content-Type\");\n                if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n                    request.body = wwwFormUrlEncode(request.formData);\n                }\n                else {\n                    await prepareFormData(request.formData, request);\n                }\n                request.formData = undefined;\n            }\n            return next(request);\n        },\n    };\n}\nfunction wwwFormUrlEncode(formData) {\n    const urlSearchParams = new URLSearchParams();\n    for (const [key, value] of Object.entries(formData)) {\n        if (Array.isArray(value)) {\n            for (const subValue of value) {\n                urlSearchParams.append(key, subValue.toString());\n            }\n        }\n        else {\n            urlSearchParams.append(key, value.toString());\n        }\n    }\n    return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n    // validate content type (multipart/form-data)\n    const contentType = request.headers.get(\"Content-Type\");\n    if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n        // content type is specified and is not multipart/form-data. Exit.\n        return;\n    }\n    request.headers.set(\"Content-Type\", contentType !== null && contentType !== void 0 ? contentType : \"multipart/form-data\");\n    // set body to MultipartRequestBody using content from FormDataMap\n    const parts = [];\n    for (const [fieldName, values] of Object.entries(formData)) {\n        for (const value of Array.isArray(values) ? values : [values]) {\n            if (typeof value === \"string\") {\n                parts.push({\n                    headers: createHttpHeaders({\n                        \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n                    }),\n                    body: stringToUint8Array(value, \"utf-8\"),\n                });\n            }\n            else if (value === undefined || value === null || typeof value !== \"object\") {\n                throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n            }\n            else {\n                // using || instead of ?? here since if value.name is empty we should create a file name\n                const fileName = value.name || \"blob\";\n                const headers = createHttpHeaders();\n                headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n                // again, || is used since an empty value.type means the content type is unset\n                headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n                parts.push({\n                    headers,\n                    body: value,\n                });\n            }\n        }\n    }\n    request.multipartBody = { parts };\n}\n//# sourceMappingURL=formDataPolicy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisify(fn) {\n    return function (req, opts) {\n        return new Promise((resolve, reject) => {\n            fn.call(this, req, opts, (err, rtn) => {\n                if (err) {\n                    reject(err);\n                }\n                else {\n                    resolve(rtn);\n                }\n            });\n        });\n    };\n}\nexports.default = promisify;\n//# sourceMappingURL=promisify.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst events_1 = require(\"events\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst promisify_1 = __importDefault(require(\"./promisify\"));\nconst debug = debug_1.default('agent-base');\nfunction isAgent(v) {\n    return Boolean(v) && typeof v.addRequest === 'function';\n}\nfunction isSecureEndpoint() {\n    const { stack } = new Error();\n    if (typeof stack !== 'string')\n        return false;\n    return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n}\nfunction createAgent(callback, opts) {\n    return new createAgent.Agent(callback, opts);\n}\n(function (createAgent) {\n    /**\n     * Base `http.Agent` implementation.\n     * No pooling/keep-alive is implemented by default.\n     *\n     * @param {Function} callback\n     * @api public\n     */\n    class Agent extends events_1.EventEmitter {\n        constructor(callback, _opts) {\n            super();\n            let opts = _opts;\n            if (typeof callback === 'function') {\n                this.callback = callback;\n            }\n            else if (callback) {\n                opts = callback;\n            }\n            // Timeout for the socket to be returned from the callback\n            this.timeout = null;\n            if (opts && typeof opts.timeout === 'number') {\n                this.timeout = opts.timeout;\n            }\n            // These aren't actually used by `agent-base`, but are required\n            // for the TypeScript definition files in `@types/node` :/\n            this.maxFreeSockets = 1;\n            this.maxSockets = 1;\n            this.maxTotalSockets = Infinity;\n            this.sockets = {};\n            this.freeSockets = {};\n            this.requests = {};\n            this.options = {};\n        }\n        get defaultPort() {\n            if (typeof this.explicitDefaultPort === 'number') {\n                return this.explicitDefaultPort;\n            }\n            return isSecureEndpoint() ? 443 : 80;\n        }\n        set defaultPort(v) {\n            this.explicitDefaultPort = v;\n        }\n        get protocol() {\n            if (typeof this.explicitProtocol === 'string') {\n                return this.explicitProtocol;\n            }\n            return isSecureEndpoint() ? 'https:' : 'http:';\n        }\n        set protocol(v) {\n            this.explicitProtocol = v;\n        }\n        callback(req, opts, fn) {\n            throw new Error('\"agent-base\" has no default implementation, you must subclass and override `callback()`');\n        }\n        /**\n         * Called by node-core's \"_http_client.js\" module when creating\n         * a new HTTP request with this Agent instance.\n         *\n         * @api public\n         */\n        addRequest(req, _opts) {\n            const opts = Object.assign({}, _opts);\n            if (typeof opts.secureEndpoint !== 'boolean') {\n                opts.secureEndpoint = isSecureEndpoint();\n            }\n            if (opts.host == null) {\n                opts.host = 'localhost';\n            }\n            if (opts.port == null) {\n                opts.port = opts.secureEndpoint ? 443 : 80;\n            }\n            if (opts.protocol == null) {\n                opts.protocol = opts.secureEndpoint ? 'https:' : 'http:';\n            }\n            if (opts.host && opts.path) {\n                // If both a `host` and `path` are specified then it's most\n                // likely the result of a `url.parse()` call... we need to\n                // remove the `path` portion so that `net.connect()` doesn't\n                // attempt to open that as a unix socket file.\n                delete opts.path;\n            }\n            delete opts.agent;\n            delete opts.hostname;\n            delete opts._defaultAgent;\n            delete opts.defaultPort;\n            delete opts.createConnection;\n            // Hint to use \"Connection: close\"\n            // XXX: non-documented `http` module API :(\n            req._last = true;\n            req.shouldKeepAlive = false;\n            let timedOut = false;\n            let timeoutId = null;\n            const timeoutMs = opts.timeout || this.timeout;\n            const onerror = (err) => {\n                if (req._hadError)\n                    return;\n                req.emit('error', err);\n                // For Safety. Some additional errors might fire later on\n                // and we need to make sure we don't double-fire the error event.\n                req._hadError = true;\n            };\n            const ontimeout = () => {\n                timeoutId = null;\n                timedOut = true;\n                const err = new Error(`A \"socket\" was not created for HTTP request before ${timeoutMs}ms`);\n                err.code = 'ETIMEOUT';\n                onerror(err);\n            };\n            const callbackError = (err) => {\n                if (timedOut)\n                    return;\n                if (timeoutId !== null) {\n                    clearTimeout(timeoutId);\n                    timeoutId = null;\n                }\n                onerror(err);\n            };\n            const onsocket = (socket) => {\n                if (timedOut)\n                    return;\n                if (timeoutId != null) {\n                    clearTimeout(timeoutId);\n                    timeoutId = null;\n                }\n                if (isAgent(socket)) {\n                    // `socket` is actually an `http.Agent` instance, so\n                    // relinquish responsibility for this `req` to the Agent\n                    // from here on\n                    debug('Callback returned another Agent instance %o', socket.constructor.name);\n                    socket.addRequest(req, opts);\n                    return;\n                }\n                if (socket) {\n                    socket.once('free', () => {\n                        this.freeSocket(socket, opts);\n                    });\n                    req.onSocket(socket);\n                    return;\n                }\n                const err = new Error(`no Duplex stream was returned to agent-base for \\`${req.method} ${req.path}\\``);\n                onerror(err);\n            };\n            if (typeof this.callback !== 'function') {\n                onerror(new Error('`callback` is not defined'));\n                return;\n            }\n            if (!this.promisifiedCallback) {\n                if (this.callback.length >= 3) {\n                    debug('Converting legacy callback function to promise');\n                    this.promisifiedCallback = promisify_1.default(this.callback);\n                }\n                else {\n                    this.promisifiedCallback = this.callback;\n                }\n            }\n            if (typeof timeoutMs === 'number' && timeoutMs > 0) {\n                timeoutId = setTimeout(ontimeout, timeoutMs);\n            }\n            if ('port' in opts && typeof opts.port !== 'number') {\n                opts.port = Number(opts.port);\n            }\n            try {\n                debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`);\n                Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError);\n            }\n            catch (err) {\n                Promise.reject(err).catch(callbackError);\n            }\n        }\n        freeSocket(socket, opts) {\n            debug('Freeing socket %o %o', socket.constructor.name, opts);\n            socket.destroy();\n        }\n        destroy() {\n            debug('Destroying agent %o', this.constructor.name);\n        }\n    }\n    createAgent.Agent = Agent;\n    // So that `instanceof` works correctly\n    createAgent.prototype = createAgent.Agent.prototype;\n})(createAgent || (createAgent = {}));\nmodule.exports = createAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = debug_1.default('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n    return new Promise((resolve, reject) => {\n        // we need to buffer any HTTP traffic that happens with the proxy before we get\n        // the CONNECT response, so that if the response is anything other than an \"200\"\n        // response code, then we can re-play the \"data\" events on the socket once the\n        // HTTP parser is hooked up...\n        let buffersLength = 0;\n        const buffers = [];\n        function read() {\n            const b = socket.read();\n            if (b)\n                ondata(b);\n            else\n                socket.once('readable', read);\n        }\n        function cleanup() {\n            socket.removeListener('end', onend);\n            socket.removeListener('error', onerror);\n            socket.removeListener('close', onclose);\n            socket.removeListener('readable', read);\n        }\n        function onclose(err) {\n            debug('onclose had error %o', err);\n        }\n        function onend() {\n            debug('onend');\n        }\n        function onerror(err) {\n            cleanup();\n            debug('onerror %o', err);\n            reject(err);\n        }\n        function ondata(b) {\n            buffers.push(b);\n            buffersLength += b.length;\n            const buffered = Buffer.concat(buffers, buffersLength);\n            const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n            if (endOfHeaders === -1) {\n                // keep buffering\n                debug('have not received end of HTTP headers yet...');\n                read();\n                return;\n            }\n            const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\\r\\n'));\n            const statusCode = +firstLine.split(' ')[1];\n            debug('got proxy server response: %o', firstLine);\n            resolve({\n                statusCode,\n                buffered\n            });\n        }\n        socket.on('error', onerror);\n        socket.on('close', onclose);\n        socket.on('end', onend);\n        read();\n    });\n}\nexports.default = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = __importDefault(require(\"net\"));\nconst tls_1 = __importDefault(require(\"tls\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst parse_proxy_response_1 = __importDefault(require(\"./parse-proxy-response\"));\nconst debug = debug_1.default('https-proxy-agent:agent');\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n *\n * @api public\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n    constructor(_opts) {\n        let opts;\n        if (typeof _opts === 'string') {\n            opts = url_1.default.parse(_opts);\n        }\n        else {\n            opts = _opts;\n        }\n        if (!opts) {\n            throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!');\n        }\n        debug('creating new HttpsProxyAgent instance: %o', opts);\n        super(opts);\n        const proxy = Object.assign({}, opts);\n        // If `true`, then connect to the proxy server over TLS.\n        // Defaults to `false`.\n        this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol);\n        // Prefer `hostname` over `host`, and set the `port` if needed.\n        proxy.host = proxy.hostname || proxy.host;\n        if (typeof proxy.port === 'string') {\n            proxy.port = parseInt(proxy.port, 10);\n        }\n        if (!proxy.port && proxy.host) {\n            proxy.port = this.secureProxy ? 443 : 80;\n        }\n        // ALPN is supported by Node.js >= v5.\n        // attempt to negotiate http/1.1 for proxy servers that support http/2\n        if (this.secureProxy && !('ALPNProtocols' in proxy)) {\n            proxy.ALPNProtocols = ['http 1.1'];\n        }\n        if (proxy.host && proxy.path) {\n            // If both a `host` and `path` are specified then it's most likely\n            // the result of a `url.parse()` call... we need to remove the\n            // `path` portion so that `net.connect()` doesn't attempt to open\n            // that as a Unix socket file.\n            delete proxy.path;\n            delete proxy.pathname;\n        }\n        this.proxy = proxy;\n    }\n    /**\n     * Called when the node-core HTTP client library is creating a\n     * new HTTP request.\n     *\n     * @api protected\n     */\n    callback(req, opts) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { proxy, secureProxy } = this;\n            // Create a socket connection to the proxy server.\n            let socket;\n            if (secureProxy) {\n                debug('Creating `tls.Socket`: %o', proxy);\n                socket = tls_1.default.connect(proxy);\n            }\n            else {\n                debug('Creating `net.Socket`: %o', proxy);\n                socket = net_1.default.connect(proxy);\n            }\n            const headers = Object.assign({}, proxy.headers);\n            const hostname = `${opts.host}:${opts.port}`;\n            let payload = `CONNECT ${hostname} HTTP/1.1\\r\\n`;\n            // Inject the `Proxy-Authorization` header if necessary.\n            if (proxy.auth) {\n                headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`;\n            }\n            // The `Host` header should only include the port\n            // number when it is not the default port.\n            let { host, port, secureEndpoint } = opts;\n            if (!isDefaultPort(port, secureEndpoint)) {\n                host += `:${port}`;\n            }\n            headers.Host = host;\n            headers.Connection = 'close';\n            for (const name of Object.keys(headers)) {\n                payload += `${name}: ${headers[name]}\\r\\n`;\n            }\n            const proxyResponsePromise = parse_proxy_response_1.default(socket);\n            socket.write(`${payload}\\r\\n`);\n            const { statusCode, buffered } = yield proxyResponsePromise;\n            if (statusCode === 200) {\n                req.once('socket', resume);\n                if (opts.secureEndpoint) {\n                    // The proxy is connecting to a TLS server, so upgrade\n                    // this socket connection to a TLS connection.\n                    debug('Upgrading socket connection to TLS');\n                    const servername = opts.servername || opts.host;\n                    return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket,\n                        servername }));\n                }\n                return socket;\n            }\n            // Some other status code that's not 200... need to re-play the HTTP\n            // header \"data\" events onto the socket once the HTTP machinery is\n            // attached so that the node core `http` can parse and handle the\n            // error status code.\n            // Close the original socket, and a new \"fake\" socket is returned\n            // instead, so that the proxy doesn't get the HTTP request\n            // written to it (which may contain `Authorization` headers or other\n            // sensitive data).\n            //\n            // See: https://hackerone.com/reports/541502\n            socket.destroy();\n            const fakeSocket = new net_1.default.Socket({ writable: false });\n            fakeSocket.readable = true;\n            // Need to wait for the \"socket\" event to re-play the \"data\" events.\n            req.once('socket', (s) => {\n                debug('replaying proxy buffer for failed request');\n                assert_1.default(s.listenerCount('data') > 0);\n                // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n                // this point the HTTP module machinery has been hooked up for\n                // the user.\n                s.push(buffered);\n                s.push(null);\n            });\n            return fakeSocket;\n        });\n    }\n}\nexports.default = HttpsProxyAgent;\nfunction resume(socket) {\n    socket.resume();\n}\nfunction isDefaultPort(port, secure) {\n    return Boolean((!secure && port === 80) || (secure && port === 443));\n}\nfunction isHTTPS(protocol) {\n    return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false;\n}\nfunction omit(obj, ...keys) {\n    const ret = {};\n    let key;\n    for (key in obj) {\n        if (!keys.includes(key)) {\n            ret[key] = obj[key];\n        }\n    }\n    return ret;\n}\n//# sourceMappingURL=agent.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst agent_1 = __importDefault(require(\"./agent\"));\nfunction createHttpsProxyAgent(opts) {\n    return new agent_1.default(opts);\n}\n(function (createHttpsProxyAgent) {\n    createHttpsProxyAgent.HttpsProxyAgent = agent_1.default;\n    createHttpsProxyAgent.prototype = agent_1.default.prototype;\n})(createHttpsProxyAgent || (createHttpsProxyAgent = {}));\nmodule.exports = createHttpsProxyAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction once(emitter, name, { signal } = {}) {\n    return new Promise((resolve, reject) => {\n        function cleanup() {\n            signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', cleanup);\n            emitter.removeListener(name, onEvent);\n            emitter.removeListener('error', onError);\n        }\n        function onEvent(...args) {\n            cleanup();\n            resolve(args);\n        }\n        function onError(err) {\n            cleanup();\n            reject(err);\n        }\n        signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', cleanup);\n        emitter.on(name, onEvent);\n        emitter.on('error', onError);\n    });\n}\nexports.default = once;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = __importDefault(require(\"net\"));\nconst tls_1 = __importDefault(require(\"tls\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst once_1 = __importDefault(require(\"@tootallnate/once\"));\nconst agent_base_1 = require(\"agent-base\");\nconst debug = (0, debug_1.default)('http-proxy-agent');\nfunction isHTTPS(protocol) {\n    return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false;\n}\n/**\n * The `HttpProxyAgent` implements an HTTP Agent subclass that connects\n * to the specified \"HTTP proxy server\" in order to proxy HTTP requests.\n *\n * @api public\n */\nclass HttpProxyAgent extends agent_base_1.Agent {\n    constructor(_opts) {\n        let opts;\n        if (typeof _opts === 'string') {\n            opts = url_1.default.parse(_opts);\n        }\n        else {\n            opts = _opts;\n        }\n        if (!opts) {\n            throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!');\n        }\n        debug('Creating new HttpProxyAgent instance: %o', opts);\n        super(opts);\n        const proxy = Object.assign({}, opts);\n        // If `true`, then connect to the proxy server over TLS.\n        // Defaults to `false`.\n        this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol);\n        // Prefer `hostname` over `host`, and set the `port` if needed.\n        proxy.host = proxy.hostname || proxy.host;\n        if (typeof proxy.port === 'string') {\n            proxy.port = parseInt(proxy.port, 10);\n        }\n        if (!proxy.port && proxy.host) {\n            proxy.port = this.secureProxy ? 443 : 80;\n        }\n        if (proxy.host && proxy.path) {\n            // If both a `host` and `path` are specified then it's most likely\n            // the result of a `url.parse()` call... we need to remove the\n            // `path` portion so that `net.connect()` doesn't attempt to open\n            // that as a Unix socket file.\n            delete proxy.path;\n            delete proxy.pathname;\n        }\n        this.proxy = proxy;\n    }\n    /**\n     * Called when the node-core HTTP client library is creating a\n     * new HTTP request.\n     *\n     * @api protected\n     */\n    callback(req, opts) {\n        return __awaiter(this, void 0, void 0, function* () {\n            const { proxy, secureProxy } = this;\n            const parsed = url_1.default.parse(req.path);\n            if (!parsed.protocol) {\n                parsed.protocol = 'http:';\n            }\n            if (!parsed.hostname) {\n                parsed.hostname = opts.hostname || opts.host || null;\n            }\n            if (parsed.port == null && typeof opts.port) {\n                parsed.port = String(opts.port);\n            }\n            if (parsed.port === '80') {\n                // if port is 80, then we can remove the port so that the\n                // \":80\" portion is not on the produced URL\n                parsed.port = '';\n            }\n            // Change the `http.ClientRequest` instance's \"path\" field\n            // to the absolute path of the URL that will be requested.\n            req.path = url_1.default.format(parsed);\n            // Inject the `Proxy-Authorization` header if necessary.\n            if (proxy.auth) {\n                req.setHeader('Proxy-Authorization', `Basic ${Buffer.from(proxy.auth).toString('base64')}`);\n            }\n            // Create a socket connection to the proxy server.\n            let socket;\n            if (secureProxy) {\n                debug('Creating `tls.Socket`: %o', proxy);\n                socket = tls_1.default.connect(proxy);\n            }\n            else {\n                debug('Creating `net.Socket`: %o', proxy);\n                socket = net_1.default.connect(proxy);\n            }\n            // At this point, the http ClientRequest's internal `_header` field\n            // might have already been set. If this is the case then we'll need\n            // to re-generate the string since we just changed the `req.path`.\n            if (req._header) {\n                let first;\n                let endOfHeaders;\n                debug('Regenerating stored HTTP header string for request');\n                req._header = null;\n                req._implicitHeader();\n                if (req.output && req.output.length > 0) {\n                    // Node < 12\n                    debug('Patching connection write() output buffer with updated header');\n                    first = req.output[0];\n                    endOfHeaders = first.indexOf('\\r\\n\\r\\n') + 4;\n                    req.output[0] = req._header + first.substring(endOfHeaders);\n                    debug('Output buffer: %o', req.output);\n                }\n                else if (req.outputData && req.outputData.length > 0) {\n                    // Node >= 12\n                    debug('Patching connection write() output buffer with updated header');\n                    first = req.outputData[0].data;\n                    endOfHeaders = first.indexOf('\\r\\n\\r\\n') + 4;\n                    req.outputData[0].data =\n                        req._header + first.substring(endOfHeaders);\n                    debug('Output buffer: %o', req.outputData[0].data);\n                }\n            }\n            // Wait for the socket's `connect` event, so that this `callback()`\n            // function throws instead of the `http` request machinery. This is\n            // important for i.e. `PacProxyAgent` which determines a failed proxy\n            // connection via the `callback()` function throwing.\n            yield (0, once_1.default)(socket, 'connect');\n            return socket;\n        });\n    }\n}\nexports.default = HttpProxyAgent;\n//# sourceMappingURL=agent.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst agent_1 = __importDefault(require(\"./agent\"));\nfunction createHttpProxyAgent(opts) {\n    return new agent_1.default(opts);\n}\n(function (createHttpProxyAgent) {\n    createHttpProxyAgent.HttpProxyAgent = agent_1.default;\n    createHttpProxyAgent.prototype = agent_1.default.prototype;\n})(createHttpProxyAgent || (createHttpProxyAgent = {}));\nmodule.exports = createHttpProxyAgent;\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { HttpsProxyAgent } from \"https-proxy-agent\";\nimport { HttpProxyAgent } from \"http-proxy-agent\";\nimport { logger } from \"../log\";\nconst HTTPS_PROXY = \"HTTPS_PROXY\";\nconst HTTP_PROXY = \"HTTP_PROXY\";\nconst ALL_PROXY = \"ALL_PROXY\";\nconst NO_PROXY = \"NO_PROXY\";\n/**\n * The programmatic identifier of the proxyPolicy.\n */\nexport const proxyPolicyName = \"proxyPolicy\";\n/**\n * Stores the patterns specified in NO_PROXY environment variable.\n * @internal\n */\nexport const globalNoProxyList = [];\nlet noProxyListLoaded = false;\n/** A cache of whether a host should bypass the proxy. */\nconst globalBypassedMap = new Map();\nfunction getEnvironmentValue(name) {\n    if (process.env[name]) {\n        return process.env[name];\n    }\n    else if (process.env[name.toLowerCase()]) {\n        return process.env[name.toLowerCase()];\n    }\n    return undefined;\n}\nfunction loadEnvironmentProxyValue() {\n    if (!process) {\n        return undefined;\n    }\n    const httpsProxy = getEnvironmentValue(HTTPS_PROXY);\n    const allProxy = getEnvironmentValue(ALL_PROXY);\n    const httpProxy = getEnvironmentValue(HTTP_PROXY);\n    return httpsProxy || allProxy || httpProxy;\n}\n/**\n * Check whether the host of a given `uri` matches any pattern in the no proxy list.\n * If there's a match, any request sent to the same host shouldn't have the proxy settings set.\n * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210\n */\nfunction isBypassed(uri, noProxyList, bypassedMap) {\n    if (noProxyList.length === 0) {\n        return false;\n    }\n    const host = new URL(uri).hostname;\n    if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {\n        return bypassedMap.get(host);\n    }\n    let isBypassedFlag = false;\n    for (const pattern of noProxyList) {\n        if (pattern[0] === \".\") {\n            // This should match either domain it self or any subdomain or host\n            // .foo.com will match foo.com it self or *.foo.com\n            if (host.endsWith(pattern)) {\n                isBypassedFlag = true;\n            }\n            else {\n                if (host.length === pattern.length - 1 && host === pattern.slice(1)) {\n                    isBypassedFlag = true;\n                }\n            }\n        }\n        else {\n            if (host === pattern) {\n                isBypassedFlag = true;\n            }\n        }\n    }\n    bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);\n    return isBypassedFlag;\n}\nexport function loadNoProxy() {\n    const noProxy = getEnvironmentValue(NO_PROXY);\n    noProxyListLoaded = true;\n    if (noProxy) {\n        return noProxy\n            .split(\",\")\n            .map((item) => item.trim())\n            .filter((item) => item.length);\n    }\n    return [];\n}\n/**\n * This method converts a proxy url into `ProxySettings` for use with ProxyPolicy.\n * If no argument is given, it attempts to parse a proxy URL from the environment\n * variables `HTTPS_PROXY` or `HTTP_PROXY`.\n * @param proxyUrl - The url of the proxy to use. May contain authentication information.\n */\nexport function getDefaultProxySettings(proxyUrl) {\n    if (!proxyUrl) {\n        proxyUrl = loadEnvironmentProxyValue();\n        if (!proxyUrl) {\n            return undefined;\n        }\n    }\n    const parsedUrl = new URL(proxyUrl);\n    const schema = parsedUrl.protocol ? parsedUrl.protocol + \"//\" : \"\";\n    return {\n        host: schema + parsedUrl.hostname,\n        port: Number.parseInt(parsedUrl.port || \"80\"),\n        username: parsedUrl.username,\n        password: parsedUrl.password,\n    };\n}\n/**\n * @internal\n */\nexport function getProxyAgentOptions(proxySettings, { headers, tlsSettings }) {\n    let parsedProxyUrl;\n    try {\n        parsedProxyUrl = new URL(proxySettings.host);\n    }\n    catch (_error) {\n        throw new Error(`Expecting a valid host string in proxy settings, but found \"${proxySettings.host}\".`);\n    }\n    if (tlsSettings) {\n        logger.warning(\"TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.\");\n    }\n    const proxyAgentOptions = {\n        hostname: parsedProxyUrl.hostname,\n        port: proxySettings.port,\n        protocol: parsedProxyUrl.protocol,\n        headers: headers.toJSON(),\n    };\n    if (proxySettings.username && proxySettings.password) {\n        proxyAgentOptions.auth = `${proxySettings.username}:${proxySettings.password}`;\n    }\n    else if (proxySettings.username) {\n        proxyAgentOptions.auth = `${proxySettings.username}`;\n    }\n    return proxyAgentOptions;\n}\nfunction setProxyAgentOnRequest(request, cachedAgents) {\n    // Custom Agent should take precedence so if one is present\n    // we should skip to avoid overwriting it.\n    if (request.agent) {\n        return;\n    }\n    const url = new URL(request.url);\n    const isInsecure = url.protocol !== \"https:\";\n    const proxySettings = request.proxySettings;\n    if (proxySettings) {\n        if (isInsecure) {\n            if (!cachedAgents.httpProxyAgent) {\n                const proxyAgentOptions = getProxyAgentOptions(proxySettings, request);\n                cachedAgents.httpProxyAgent = new HttpProxyAgent(proxyAgentOptions);\n            }\n            request.agent = cachedAgents.httpProxyAgent;\n        }\n        else {\n            if (!cachedAgents.httpsProxyAgent) {\n                const proxyAgentOptions = getProxyAgentOptions(proxySettings, request);\n                cachedAgents.httpsProxyAgent = new HttpsProxyAgent(proxyAgentOptions);\n            }\n            request.agent = cachedAgents.httpsProxyAgent;\n        }\n    }\n}\n/**\n * A policy that allows one to apply proxy settings to all requests.\n * If not passed static settings, they will be retrieved from the HTTPS_PROXY\n * or HTTP_PROXY environment variables.\n * @param proxySettings - ProxySettings to use on each request.\n * @param options - additional settings, for example, custom NO_PROXY patterns\n */\nexport function proxyPolicy(proxySettings = getDefaultProxySettings(), options) {\n    if (!noProxyListLoaded) {\n        globalNoProxyList.push(...loadNoProxy());\n    }\n    const cachedAgents = {};\n    return {\n        name: proxyPolicyName,\n        async sendRequest(request, next) {\n            var _a;\n            if (!request.proxySettings &&\n                !isBypassed(request.url, (_a = options === null || options === void 0 ? void 0 : options.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, (options === null || options === void 0 ? void 0 : options.customNoProxyList) ? undefined : globalBypassedMap)) {\n                request.proxySettings = proxySettings;\n            }\n            if (request.proxySettings) {\n                setProxyAgentOnRequest(request, cachedAgents);\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=proxyPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n    return {\n        name: setClientRequestIdPolicyName,\n        async sendRequest(request, next) {\n            if (!request.headers.has(requestIdHeaderName)) {\n                request.headers.set(requestIdHeaderName, request.requestId);\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=setClientRequestIdPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings) {\n    return {\n        name: tlsPolicyName,\n        sendRequest: async (req, next) => {\n            // Users may define a request tlsSettings, honor those over the client level one\n            if (!req.tlsSettings) {\n                req.tlsSettings = tlsSettings;\n            }\n            return next(req);\n        },\n    };\n}\n//# sourceMappingURL=tlsPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/** @internal */\nexport const knownContextKeys = {\n    span: Symbol.for(\"@azure/core-tracing span\"),\n    namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options = {}) {\n    let context = new TracingContextImpl(options.parentContext);\n    if (options.span) {\n        context = context.setValue(knownContextKeys.span, options.span);\n    }\n    if (options.namespace) {\n        context = context.setValue(knownContextKeys.namespace, options.namespace);\n    }\n    return context;\n}\n/** @internal */\nexport class TracingContextImpl {\n    constructor(initialContext) {\n        this._contextMap =\n            initialContext instanceof TracingContextImpl\n                ? new Map(initialContext._contextMap)\n                : new Map();\n    }\n    setValue(key, value) {\n        const newContext = new TracingContextImpl(this);\n        newContext._contextMap.set(key, value);\n        return newContext;\n    }\n    getValue(key) {\n        return this._contextMap.get(key);\n    }\n    deleteValue(key) {\n        const newContext = new TracingContextImpl(this);\n        newContext._contextMap.delete(key);\n        return newContext;\n    }\n}\n//# sourceMappingURL=tracingContext.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTracingContext } from \"./tracingContext\";\nexport function createDefaultTracingSpan() {\n    return {\n        end: () => {\n            // noop\n        },\n        isRecording: () => false,\n        recordException: () => {\n            // noop\n        },\n        setAttribute: () => {\n            // noop\n        },\n        setStatus: () => {\n            // noop\n        },\n    };\n}\nexport function createDefaultInstrumenter() {\n    return {\n        createRequestHeaders: () => {\n            return {};\n        },\n        parseTraceparentHeader: () => {\n            return undefined;\n        },\n        startSpan: (_name, spanOptions) => {\n            return {\n                span: createDefaultTracingSpan(),\n                tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n            };\n        },\n        withContext(_context, callback, ...callbackArgs) {\n            return callback(...callbackArgs);\n        },\n    };\n}\n/** @internal */\nlet instrumenterImplementation;\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter) {\n    instrumenterImplementation = instrumenter;\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter() {\n    if (!instrumenterImplementation) {\n        instrumenterImplementation = createDefaultInstrumenter();\n    }\n    return instrumenterImplementation;\n}\n//# sourceMappingURL=instrumenter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getInstrumenter } from \"./instrumenter\";\nimport { knownContextKeys } from \"./tracingContext\";\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options) {\n    const { namespace, packageName, packageVersion } = options;\n    function startSpan(name, operationOptions, spanOptions) {\n        var _a;\n        const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext }));\n        let tracingContext = startSpanResult.tracingContext;\n        const span = startSpanResult.span;\n        if (!tracingContext.getValue(knownContextKeys.namespace)) {\n            tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n        }\n        span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n        const updatedOptions = Object.assign({}, operationOptions, {\n            tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }),\n        });\n        return {\n            span,\n            updatedOptions,\n        };\n    }\n    async function withSpan(name, operationOptions, callback, spanOptions) {\n        const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n        try {\n            const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n            span.setStatus({ status: \"success\" });\n            return result;\n        }\n        catch (err) {\n            span.setStatus({ status: \"error\", error: err });\n            throw err;\n        }\n        finally {\n            span.end();\n        }\n    }\n    function withContext(context, callback, ...callbackArgs) {\n        return getInstrumenter().withContext(context, callback, ...callbackArgs);\n    }\n    /**\n     * Parses a traceparent header value into a span identifier.\n     *\n     * @param traceparentHeader - The traceparent header to parse.\n     * @returns An implementation-specific identifier for the span.\n     */\n    function parseTraceparentHeader(traceparentHeader) {\n        return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n    }\n    /**\n     * Creates a set of request headers to propagate tracing information to a backend.\n     *\n     * @param tracingContext - The context containing the span to serialize.\n     * @returns The set of headers to add to a request.\n     */\n    function createRequestHeaders(tracingContext) {\n        return getInstrumenter().createRequestHeaders(tracingContext);\n    }\n    return {\n        startSpan,\n        withSpan,\n        withContext,\n        parseTraceparentHeader,\n        createRequestHeaders,\n    };\n}\n//# sourceMappingURL=tracingClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { inspect } from \"util\";\nexport const custom = inspect.custom;\n//# sourceMappingURL=inspect.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isError } from \"@azure/core-util\";\nimport { custom } from \"./util/inspect\";\nimport { Sanitizer } from \"./util/sanitizer\";\nconst errorSanitizer = new Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n    constructor(message, options = {}) {\n        super(message);\n        this.name = \"RestError\";\n        this.code = options.code;\n        this.statusCode = options.statusCode;\n        this.request = options.request;\n        this.response = options.response;\n        Object.setPrototypeOf(this, RestError.prototype);\n    }\n    /**\n     * Logging method for util.inspect in Node\n     */\n    [custom]() {\n        return `RestError: ${this.message} \\n ${errorSanitizer.sanitize(this)}`;\n    }\n}\n/**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\nRestError.REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n/**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\nRestError.PARSE_ERROR = \"PARSE_ERROR\";\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e) {\n    if (e instanceof RestError) {\n        return true;\n    }\n    return isError(e) && e.name === \"RestError\";\n}\n//# sourceMappingURL=restError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTracingClient, } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants\";\nimport { getUserAgentValue } from \"../util/userAgent\";\nimport { logger } from \"../log\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError\";\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options = {}) {\n    const userAgent = getUserAgentValue(options.userAgentPrefix);\n    const tracingClient = tryCreateTracingClient();\n    return {\n        name: tracingPolicyName,\n        async sendRequest(request, next) {\n            var _a, _b;\n            if (!tracingClient || !((_a = request.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext)) {\n                return next(request);\n            }\n            const { span, tracingContext } = (_b = tryCreateSpan(tracingClient, request, userAgent)) !== null && _b !== void 0 ? _b : {};\n            if (!span || !tracingContext) {\n                return next(request);\n            }\n            try {\n                const response = await tracingClient.withContext(tracingContext, next, request);\n                tryProcessResponse(span, response);\n                return response;\n            }\n            catch (err) {\n                tryProcessError(span, err);\n                throw err;\n            }\n        },\n    };\n}\nfunction tryCreateTracingClient() {\n    try {\n        return createTracingClient({\n            namespace: \"\",\n            packageName: \"@azure/core-rest-pipeline\",\n            packageVersion: SDK_VERSION,\n        });\n    }\n    catch (e) {\n        logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n        return undefined;\n    }\n}\nfunction tryCreateSpan(tracingClient, request, userAgent) {\n    try {\n        // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n        const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n            spanKind: \"client\",\n            spanAttributes: {\n                \"http.method\": request.method,\n                \"http.url\": request.url,\n                requestId: request.requestId,\n            },\n        });\n        // If the span is not recording, don't do any more work.\n        if (!span.isRecording()) {\n            span.end();\n            return undefined;\n        }\n        if (userAgent) {\n            span.setAttribute(\"http.user_agent\", userAgent);\n        }\n        // set headers\n        const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n        for (const [key, value] of Object.entries(headers)) {\n            request.headers.set(key, value);\n        }\n        return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n    }\n    catch (e) {\n        logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n        return undefined;\n    }\n}\nfunction tryProcessError(span, error) {\n    try {\n        span.setStatus({\n            status: \"error\",\n            error: isError(error) ? error : undefined,\n        });\n        if (isRestError(error) && error.statusCode) {\n            span.setAttribute(\"http.status_code\", error.statusCode);\n        }\n        span.end();\n    }\n    catch (e) {\n        logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n    }\n}\nfunction tryProcessResponse(span, response) {\n    try {\n        span.setAttribute(\"http.status_code\", response.status);\n        const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n        if (serviceRequestId) {\n            span.setAttribute(\"serviceRequestId\", serviceRequestId);\n        }\n        span.setStatus({\n            status: \"success\",\n        });\n        span.end();\n    }\n    catch (e) {\n        logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n    }\n}\n//# sourceMappingURL=tracingPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { logPolicy } from \"./policies/logPolicy\";\nimport { createEmptyPipeline } from \"./pipeline\";\nimport { redirectPolicy } from \"./policies/redirectPolicy\";\nimport { userAgentPolicy } from \"./policies/userAgentPolicy\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy\";\nimport { formDataPolicy } from \"./policies/formDataPolicy\";\nimport { isNode } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy\";\nimport { tlsPolicy } from \"./policies/tlsPolicy\";\nimport { tracingPolicy } from \"./policies/tracingPolicy\";\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options) {\n    var _a;\n    const pipeline = createEmptyPipeline();\n    if (isNode) {\n        if (options.tlsOptions) {\n            pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n        }\n        pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n        pipeline.addPolicy(decompressResponsePolicy());\n    }\n    pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n    pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n    pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName));\n    // The multipart policy is added after policies with no phase, so that\n    // policies can be added between it and formDataPolicy to modify\n    // properties (e.g., making the boundary constant in recorded tests).\n    pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n    pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n    pipeline.addPolicy(tracingPolicy(options.userAgentOptions), { afterPhase: \"Retry\" });\n    if (isNode) {\n        // Both XHR and Fetch expect to handle redirects automatically,\n        // so only include this policy when we're in Node.\n        pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n    }\n    pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n    return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as http from \"http\";\nimport * as https from \"https\";\nimport * as zlib from \"zlib\";\nimport { Transform } from \"stream\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { createHttpHeaders } from \"./httpHeaders\";\nimport { RestError } from \"./restError\";\nimport { logger } from \"./log\";\nconst DEFAULT_TLS_SETTINGS = {};\nfunction isReadableStream(body) {\n    return body && typeof body.pipe === \"function\";\n}\nfunction isStreamComplete(stream) {\n    return new Promise((resolve) => {\n        stream.on(\"close\", resolve);\n        stream.on(\"end\", resolve);\n        stream.on(\"error\", resolve);\n    });\n}\nfunction isArrayBuffer(body) {\n    return body && typeof body.byteLength === \"number\";\n}\nclass ReportTransform extends Transform {\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    _transform(chunk, _encoding, callback) {\n        this.push(chunk);\n        this.loadedBytes += chunk.length;\n        try {\n            this.progressCallback({ loadedBytes: this.loadedBytes });\n            callback();\n        }\n        catch (e) {\n            callback(e);\n        }\n    }\n    constructor(progressCallback) {\n        super();\n        this.loadedBytes = 0;\n        this.progressCallback = progressCallback;\n    }\n}\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient {\n    constructor() {\n        this.cachedHttpsAgents = new WeakMap();\n    }\n    /**\n     * Makes a request over an underlying transport layer and returns the response.\n     * @param request - The request to be made.\n     */\n    async sendRequest(request) {\n        var _a, _b, _c;\n        const abortController = new AbortController();\n        let abortListener;\n        if (request.abortSignal) {\n            if (request.abortSignal.aborted) {\n                throw new AbortError(\"The operation was aborted.\");\n            }\n            abortListener = (event) => {\n                if (event.type === \"abort\") {\n                    abortController.abort();\n                }\n            };\n            request.abortSignal.addEventListener(\"abort\", abortListener);\n        }\n        if (request.timeout > 0) {\n            setTimeout(() => {\n                abortController.abort();\n            }, request.timeout);\n        }\n        const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n        const shouldDecompress = (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes(\"gzip\")) || (acceptEncoding === null || acceptEncoding === void 0 ? void 0 : acceptEncoding.includes(\"deflate\"));\n        let body = typeof request.body === \"function\" ? request.body() : request.body;\n        if (body && !request.headers.has(\"Content-Length\")) {\n            const bodyLength = getBodyLength(body);\n            if (bodyLength !== null) {\n                request.headers.set(\"Content-Length\", bodyLength);\n            }\n        }\n        let responseStream;\n        try {\n            if (body && request.onUploadProgress) {\n                const onUploadProgress = request.onUploadProgress;\n                const uploadReportStream = new ReportTransform(onUploadProgress);\n                uploadReportStream.on(\"error\", (e) => {\n                    logger.error(\"Error in upload progress\", e);\n                });\n                if (isReadableStream(body)) {\n                    body.pipe(uploadReportStream);\n                }\n                else {\n                    uploadReportStream.end(body);\n                }\n                body = uploadReportStream;\n            }\n            const res = await this.makeRequest(request, abortController, body);\n            const headers = getResponseHeaders(res);\n            const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0;\n            const response = {\n                status,\n                headers,\n                request,\n            };\n            // Responses to HEAD must not have a body.\n            // If they do return a body, that body must be ignored.\n            if (request.method === \"HEAD\") {\n                // call resume() and not destroy() to avoid closing the socket\n                // and losing keep alive\n                res.resume();\n                return response;\n            }\n            responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n            const onDownloadProgress = request.onDownloadProgress;\n            if (onDownloadProgress) {\n                const downloadReportStream = new ReportTransform(onDownloadProgress);\n                downloadReportStream.on(\"error\", (e) => {\n                    logger.error(\"Error in download progress\", e);\n                });\n                responseStream.pipe(downloadReportStream);\n                responseStream = downloadReportStream;\n            }\n            if (\n            // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n            ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(Number.POSITIVE_INFINITY)) ||\n                ((_c = request.streamResponseStatusCodes) === null || _c === void 0 ? void 0 : _c.has(response.status))) {\n                response.readableStreamBody = responseStream;\n            }\n            else {\n                response.bodyAsText = await streamToText(responseStream);\n            }\n            return response;\n        }\n        finally {\n            // clean up event listener\n            if (request.abortSignal && abortListener) {\n                let uploadStreamDone = Promise.resolve();\n                if (isReadableStream(body)) {\n                    uploadStreamDone = isStreamComplete(body);\n                }\n                let downloadStreamDone = Promise.resolve();\n                if (isReadableStream(responseStream)) {\n                    downloadStreamDone = isStreamComplete(responseStream);\n                }\n                Promise.all([uploadStreamDone, downloadStreamDone])\n                    .then(() => {\n                    var _a;\n                    // eslint-disable-next-line promise/always-return\n                    if (abortListener) {\n                        (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abortListener);\n                    }\n                })\n                    .catch((e) => {\n                    logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n                });\n            }\n        }\n    }\n    makeRequest(request, abortController, body) {\n        var _a;\n        const url = new URL(request.url);\n        const isInsecure = url.protocol !== \"https:\";\n        if (isInsecure && !request.allowInsecureConnection) {\n            throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n        }\n        const agent = (_a = request.agent) !== null && _a !== void 0 ? _a : this.getOrCreateAgent(request, isInsecure);\n        const options = {\n            agent,\n            hostname: url.hostname,\n            path: `${url.pathname}${url.search}`,\n            port: url.port,\n            method: request.method,\n            headers: request.headers.toJSON({ preserveCase: true }),\n        };\n        return new Promise((resolve, reject) => {\n            const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n            req.once(\"error\", (err) => {\n                var _a;\n                reject(new RestError(err.message, { code: (_a = err.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR, request }));\n            });\n            abortController.signal.addEventListener(\"abort\", () => {\n                const abortError = new AbortError(\"The operation was aborted.\");\n                req.destroy(abortError);\n                reject(abortError);\n            });\n            if (body && isReadableStream(body)) {\n                body.pipe(req);\n            }\n            else if (body) {\n                if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n                    req.end(body);\n                }\n                else if (isArrayBuffer(body)) {\n                    req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n                }\n                else {\n                    logger.error(\"Unrecognized body type\", body);\n                    reject(new RestError(\"Unrecognized body type\"));\n                }\n            }\n            else {\n                // streams don't like \"undefined\" being passed as data\n                req.end();\n            }\n        });\n    }\n    getOrCreateAgent(request, isInsecure) {\n        var _a;\n        const disableKeepAlive = request.disableKeepAlive;\n        // Handle Insecure requests first\n        if (isInsecure) {\n            if (disableKeepAlive) {\n                // keepAlive:false is the default so we don't need a custom Agent\n                return http.globalAgent;\n            }\n            if (!this.cachedHttpAgent) {\n                // If there is no cached agent create a new one and cache it.\n                this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n            }\n            return this.cachedHttpAgent;\n        }\n        else {\n            if (disableKeepAlive && !request.tlsSettings) {\n                // When there are no tlsSettings and keepAlive is false\n                // we don't need a custom agent\n                return https.globalAgent;\n            }\n            // We use the tlsSettings to index cached clients\n            const tlsSettings = (_a = request.tlsSettings) !== null && _a !== void 0 ? _a : DEFAULT_TLS_SETTINGS;\n            // Get the cached agent or create a new one with the\n            // provided values for keepAlive and tlsSettings\n            let agent = this.cachedHttpsAgents.get(tlsSettings);\n            if (agent && agent.options.keepAlive === !disableKeepAlive) {\n                return agent;\n            }\n            logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n            agent = new https.Agent(Object.assign({ \n                // keepAlive is true if disableKeepAlive is false.\n                keepAlive: !disableKeepAlive }, tlsSettings));\n            this.cachedHttpsAgents.set(tlsSettings, agent);\n            return agent;\n        }\n    }\n}\nfunction getResponseHeaders(res) {\n    const headers = createHttpHeaders();\n    for (const header of Object.keys(res.headers)) {\n        const value = res.headers[header];\n        if (Array.isArray(value)) {\n            if (value.length > 0) {\n                headers.set(header, value[0]);\n            }\n        }\n        else if (value) {\n            headers.set(header, value);\n        }\n    }\n    return headers;\n}\nfunction getDecodedResponseStream(stream, headers) {\n    const contentEncoding = headers.get(\"Content-Encoding\");\n    if (contentEncoding === \"gzip\") {\n        const unzip = zlib.createGunzip();\n        stream.pipe(unzip);\n        return unzip;\n    }\n    else if (contentEncoding === \"deflate\") {\n        const inflate = zlib.createInflate();\n        stream.pipe(inflate);\n        return inflate;\n    }\n    return stream;\n}\nfunction streamToText(stream) {\n    return new Promise((resolve, reject) => {\n        const buffer = [];\n        stream.on(\"data\", (chunk) => {\n            if (Buffer.isBuffer(chunk)) {\n                buffer.push(chunk);\n            }\n            else {\n                buffer.push(Buffer.from(chunk));\n            }\n        });\n        stream.on(\"end\", () => {\n            resolve(Buffer.concat(buffer).toString(\"utf8\"));\n        });\n        stream.on(\"error\", (e) => {\n            if (e && (e === null || e === void 0 ? void 0 : e.name) === \"AbortError\") {\n                reject(e);\n            }\n            else {\n                reject(new RestError(`Error reading response as text: ${e.message}`, {\n                    code: RestError.PARSE_ERROR,\n                }));\n            }\n        });\n    });\n}\n/** @internal */\nexport function getBodyLength(body) {\n    if (!body) {\n        return 0;\n    }\n    else if (Buffer.isBuffer(body)) {\n        return body.length;\n    }\n    else if (isReadableStream(body)) {\n        return null;\n    }\n    else if (isArrayBuffer(body)) {\n        return body.byteLength;\n    }\n    else if (typeof body === \"string\") {\n        return Buffer.from(body).length;\n    }\n    else {\n        return null;\n    }\n}\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient() {\n    return new NodeHttpClient();\n}\n//# sourceMappingURL=nodeHttpClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createNodeHttpClient } from \"./nodeHttpClient\";\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient() {\n    return createNodeHttpClient();\n}\n//# sourceMappingURL=defaultHttpClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"./httpHeaders\";\nimport { randomUUID } from \"@azure/core-util\";\nclass PipelineRequestImpl {\n    constructor(options) {\n        var _a, _b, _c, _d, _e, _f, _g;\n        this.url = options.url;\n        this.body = options.body;\n        this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders();\n        this.method = (_b = options.method) !== null && _b !== void 0 ? _b : \"GET\";\n        this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0;\n        this.multipartBody = options.multipartBody;\n        this.formData = options.formData;\n        this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false;\n        this.proxySettings = options.proxySettings;\n        this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n        this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false;\n        this.abortSignal = options.abortSignal;\n        this.tracingOptions = options.tracingOptions;\n        this.onUploadProgress = options.onUploadProgress;\n        this.onDownloadProgress = options.onDownloadProgress;\n        this.requestId = options.requestId || randomUUID();\n        this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false;\n        this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false;\n    }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options) {\n    return new PipelineRequestImpl(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"./helpers\";\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS = {\n    forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n    retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n    refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n    // This wrapper handles exceptions gracefully as long as we haven't exceeded\n    // the timeout.\n    async function tryGetAccessToken() {\n        if (Date.now() < refreshTimeout) {\n            try {\n                return await getAccessToken();\n            }\n            catch (_a) {\n                return null;\n            }\n        }\n        else {\n            const finalToken = await getAccessToken();\n            // Timeout is up, so throw if it's still null\n            if (finalToken === null) {\n                throw new Error(\"Failed to refresh access token.\");\n            }\n            return finalToken;\n        }\n    }\n    let token = await tryGetAccessToken();\n    while (token === null) {\n        await delay(retryIntervalInMs);\n        token = await tryGetAccessToken();\n    }\n    return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(credential, tokenCyclerOptions) {\n    let refreshWorker = null;\n    let token = null;\n    let tenantId;\n    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n    /**\n     * This little holder defines several predicates that we use to construct\n     * the rules of refreshing the token.\n     */\n    const cycler = {\n        /**\n         * Produces true if a refresh job is currently in progress.\n         */\n        get isRefreshing() {\n            return refreshWorker !== null;\n        },\n        /**\n         * Produces true if the cycler SHOULD refresh (we are within the refresh\n         * window and not already refreshing)\n         */\n        get shouldRefresh() {\n            var _a;\n            return (!cycler.isRefreshing &&\n                ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());\n        },\n        /**\n         * Produces true if the cycler MUST refresh (null or nearly-expired\n         * token).\n         */\n        get mustRefresh() {\n            return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n        },\n    };\n    /**\n     * Starts a refresh job or returns the existing job if one is already\n     * running.\n     */\n    function refresh(scopes, getTokenOptions) {\n        var _a;\n        if (!cycler.isRefreshing) {\n            // We bind `scopes` here to avoid passing it around a lot\n            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n            // Take advantage of promise chaining to insert an assignment to `token`\n            // before the refresh can be considered done.\n            refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n            // If we don't have a token, then we should timeout immediately\n            (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n                .then((_token) => {\n                refreshWorker = null;\n                token = _token;\n                tenantId = getTokenOptions.tenantId;\n                return token;\n            })\n                .catch((reason) => {\n                // We also should reset the refresher if we enter a failed state.  All\n                // existing awaiters will throw, but subsequent requests will start a\n                // new retry chain.\n                refreshWorker = null;\n                token = null;\n                tenantId = undefined;\n                throw reason;\n            });\n        }\n        return refreshWorker;\n    }\n    return async (scopes, tokenOptions) => {\n        //\n        // Simple rules:\n        // - If we MUST refresh, then return the refresh task, blocking\n        //   the pipeline until a token is available.\n        // - If we SHOULD refresh, then run refresh but don't return it\n        //   (we can still use the cached token).\n        // - Return the token, since it's fine if we didn't return in\n        //   step 1.\n        //\n        // If the tenantId passed in token options is different to the one we have\n        // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n        // refresh the token with the new tenantId or token.\n        const mustRefresh = tenantId !== tokenOptions.tenantId || Boolean(tokenOptions.claims) || cycler.mustRefresh;\n        if (mustRefresh)\n            return refresh(scopes, tokenOptions);\n        if (cycler.shouldRefresh) {\n            refresh(scopes, tokenOptions);\n        }\n        return token;\n    };\n}\n//# sourceMappingURL=tokenCycler.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createTokenCycler } from \"../util/tokenCycler\";\nimport { logger as coreLogger } from \"../log\";\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n    const { scopes, getAccessToken, request } = options;\n    const getTokenOptions = {\n        abortSignal: request.abortSignal,\n        tracingOptions: request.tracingOptions,\n    };\n    const accessToken = await getAccessToken(scopes, getTokenOptions);\n    if (accessToken) {\n        options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n    }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n    const challenge = response.headers.get(\"WWW-Authenticate\");\n    if (response.status === 401 && challenge) {\n        return challenge;\n    }\n    return;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(options) {\n    var _a;\n    const { credential, scopes, challengeCallbacks } = options;\n    const logger = options.logger || coreLogger;\n    const callbacks = Object.assign({ authorizeRequest: (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) !== null && _a !== void 0 ? _a : defaultAuthorizeRequest, authorizeRequestOnChallenge: challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge }, challengeCallbacks);\n    // This function encapsulates the entire process of reliably retrieving the token\n    // The options are left out of the public API until there's demand to configure this.\n    // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n    // in order to pass through the `options` object.\n    const getAccessToken = credential\n        ? createTokenCycler(credential /* , options */)\n        : () => Promise.resolve(null);\n    return {\n        name: bearerTokenAuthenticationPolicyName,\n        /**\n         * If there's no challenge parameter:\n         * - It will try to retrieve the token using the cache, or the credential's getToken.\n         * - Then it will try the next policy with or without the retrieved token.\n         *\n         * It uses the challenge parameters to:\n         * - Skip a first attempt to get the token from the credential if there's no cached token,\n         *   since it expects the token to be retrievable only after the challenge.\n         * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n         * - Send an initial request to receive the challenge if it fails.\n         * - Process a challenge if the response contains it.\n         * - Retrieve a token with the challenge information, then re-send the request.\n         */\n        async sendRequest(request, next) {\n            if (!request.url.toLowerCase().startsWith(\"https://\")) {\n                throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n            }\n            await callbacks.authorizeRequest({\n                scopes: Array.isArray(scopes) ? scopes : [scopes],\n                request,\n                getAccessToken,\n                logger,\n            });\n            let response;\n            let error;\n            try {\n                response = await next(request);\n            }\n            catch (err) {\n                error = err;\n                response = err.response;\n            }\n            if (callbacks.authorizeRequestOnChallenge &&\n                (response === null || response === void 0 ? void 0 : response.status) === 401 &&\n                getChallenge(response)) {\n                // processes challenge\n                const shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n                    scopes: Array.isArray(scopes) ? scopes : [scopes],\n                    request,\n                    response,\n                    getAccessToken,\n                    logger,\n                });\n                if (shouldSendRequest) {\n                    return next(request);\n                }\n            }\n            if (error) {\n                throw error;\n            }\n            else {\n                return response;\n            }\n        },\n    };\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n *  Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n    let parameterPath = parameter.parameterPath;\n    const parameterMapper = parameter.mapper;\n    let value;\n    if (typeof parameterPath === \"string\") {\n        parameterPath = [parameterPath];\n    }\n    if (Array.isArray(parameterPath)) {\n        if (parameterPath.length > 0) {\n            if (parameterMapper.isConstant) {\n                value = parameterMapper.defaultValue;\n            }\n            else {\n                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n                if (!propertySearchResult.propertyFound && fallbackObject) {\n                    propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n                }\n                let useDefaultValue = false;\n                if (!propertySearchResult.propertyFound) {\n                    useDefaultValue =\n                        parameterMapper.required ||\n                            (parameterPath[0] === \"options\" && parameterPath.length === 2);\n                }\n                value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n            }\n        }\n    }\n    else {\n        if (parameterMapper.required) {\n            value = {};\n        }\n        for (const propertyName in parameterPath) {\n            const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n            const propertyPath = parameterPath[propertyName];\n            const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n                parameterPath: propertyPath,\n                mapper: propertyMapper,\n            }, fallbackObject);\n            if (propertyValue !== undefined) {\n                if (!value) {\n                    value = {};\n                }\n                value[propertyName] = propertyValue;\n            }\n        }\n    }\n    return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n    const result = { propertyFound: false };\n    let i = 0;\n    for (; i < parameterPath.length; ++i) {\n        const parameterPathPart = parameterPath[i];\n        // Make sure to check inherited properties too, so don't use hasOwnProperty().\n        if (parent && parameterPathPart in parent) {\n            parent = parent[parameterPathPart];\n        }\n        else {\n            break;\n        }\n    }\n    if (i === parameterPath.length) {\n        result.propertyValue = parent;\n        result.propertyFound = true;\n    }\n    return result;\n}\nconst operationRequestMap = new WeakMap();\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n    return originalRequestSymbol in request;\n}\nexport function getOperationRequestInfo(request) {\n    if (hasOriginalRequest(request)) {\n        return getOperationRequestInfo(request[originalRequestSymbol]);\n    }\n    let info = operationRequestMap.get(request);\n    if (!info) {\n        info = {};\n        operationRequestMap.set(request, info);\n    }\n    return info;\n}\n//# sourceMappingURL=operationHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_CHARKEY, } from \"./interfaces\";\nimport { RestError, } from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer\";\nimport { getOperationRequestInfo } from \"./operationHelpers\";\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options = {}) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes;\n    const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes;\n    const parseXML = options.parseXML;\n    const serializerOptions = options.serializerOptions;\n    const updatedOptions = {\n        xml: {\n            rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : \"\",\n            includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false,\n            xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY,\n        },\n    };\n    return {\n        name: deserializationPolicyName,\n        async sendRequest(request, next) {\n            const response = await next(request);\n            return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n        },\n    };\n}\nfunction getOperationResponseMap(parsedResponse) {\n    let result;\n    const request = parsedResponse.request;\n    const operationInfo = getOperationRequestInfo(request);\n    const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n    if (operationSpec) {\n        if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) {\n            result = operationSpec.responses[parsedResponse.status];\n        }\n        else {\n            result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse);\n        }\n    }\n    return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n    const request = parsedResponse.request;\n    const operationInfo = getOperationRequestInfo(request);\n    const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize;\n    let result;\n    if (shouldDeserialize === undefined) {\n        result = true;\n    }\n    else if (typeof shouldDeserialize === \"boolean\") {\n        result = shouldDeserialize;\n    }\n    else {\n        result = shouldDeserialize(parsedResponse);\n    }\n    return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n    const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n    if (!shouldDeserializeResponse(parsedResponse)) {\n        return parsedResponse;\n    }\n    const operationInfo = getOperationRequestInfo(parsedResponse.request);\n    const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n    if (!operationSpec || !operationSpec.responses) {\n        return parsedResponse;\n    }\n    const responseSpec = getOperationResponseMap(parsedResponse);\n    const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n    if (error) {\n        throw error;\n    }\n    else if (shouldReturnResponse) {\n        return parsedResponse;\n    }\n    // An operation response spec does exist for current status code, so\n    // use it to deserialize the response.\n    if (responseSpec) {\n        if (responseSpec.bodyMapper) {\n            let valueToDeserialize = parsedResponse.parsedBody;\n            if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n                valueToDeserialize =\n                    typeof valueToDeserialize === \"object\"\n                        ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n                        : [];\n            }\n            try {\n                parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n            }\n            catch (deserializeError) {\n                const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n                    statusCode: parsedResponse.status,\n                    request: parsedResponse.request,\n                    response: parsedResponse,\n                });\n                throw restError;\n            }\n        }\n        else if (operationSpec.httpMethod === \"HEAD\") {\n            // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n            parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n        }\n        if (responseSpec.headersMapper) {\n            parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n        }\n    }\n    return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n    const expectedStatusCodes = Object.keys(operationSpec.responses);\n    return (expectedStatusCodes.length === 0 ||\n        (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n    var _a;\n    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n        ? isSuccessByStatus\n        : !!responseSpec;\n    if (isExpectedStatusCode) {\n        if (responseSpec) {\n            if (!responseSpec.isError) {\n                return { error: null, shouldReturnResponse: false };\n            }\n        }\n        else {\n            return { error: null, shouldReturnResponse: false };\n        }\n    }\n    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;\n    const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status))\n        ? `Unexpected status code: ${parsedResponse.status}`\n        : parsedResponse.bodyAsText;\n    const error = new RestError(initialErrorMessage, {\n        statusCode: parsedResponse.status,\n        request: parsedResponse.request,\n        response: parsedResponse,\n    });\n    // If the item failed but there's no error spec or default spec to deserialize the error,\n    // we should fail so we just throw the parsed response\n    if (!errorResponseSpec) {\n        throw error;\n    }\n    const defaultBodyMapper = errorResponseSpec.bodyMapper;\n    const defaultHeadersMapper = errorResponseSpec.headersMapper;\n    try {\n        // If error response has a body, try to deserialize it using default body mapper.\n        // Then try to extract error code & message from it\n        if (parsedResponse.parsedBody) {\n            const parsedBody = parsedResponse.parsedBody;\n            let deserializedError;\n            if (defaultBodyMapper) {\n                let valueToDeserialize = parsedBody;\n                if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n                    valueToDeserialize = [];\n                    const elementName = defaultBodyMapper.xmlElementName;\n                    if (typeof parsedBody === \"object\" && elementName) {\n                        valueToDeserialize = parsedBody[elementName];\n                    }\n                }\n                deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n            }\n            const internalError = parsedBody.error || deserializedError || parsedBody;\n            error.code = internalError.code;\n            if (internalError.message) {\n                error.message = internalError.message;\n            }\n            if (defaultBodyMapper) {\n                error.response.parsedBody = deserializedError;\n            }\n        }\n        // If error response has headers, try to deserialize it using default header mapper\n        if (parsedResponse.headers && defaultHeadersMapper) {\n            error.response.parsedHeaders =\n                operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n        }\n    }\n    catch (defaultError) {\n        error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n    }\n    return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n    var _a;\n    if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) &&\n        operationResponse.bodyAsText) {\n        const text = operationResponse.bodyAsText;\n        const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n        const contentComponents = !contentType\n            ? []\n            : contentType.split(\";\").map((component) => component.toLowerCase());\n        try {\n            if (contentComponents.length === 0 ||\n                contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n                operationResponse.parsedBody = JSON.parse(text);\n                return operationResponse;\n            }\n            else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n                if (!parseXML) {\n                    throw new Error(\"Parsing XML not supported.\");\n                }\n                const body = await parseXML(text, opts.xml);\n                operationResponse.parsedBody = body;\n                return operationResponse;\n            }\n        }\n        catch (err) {\n            const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n            const errCode = err.code || RestError.PARSE_ERROR;\n            const e = new RestError(msg, {\n                code: errCode,\n                statusCode: operationResponse.status,\n                request: operationResponse.request,\n                response: operationResponse,\n            });\n            throw e;\n        }\n    }\n    return operationResponse;\n}\n//# sourceMappingURL=deserializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MapperTypeNames } from \"./serializer\";\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec) {\n    const result = new Set();\n    for (const statusCode in operationSpec.responses) {\n        const operationResponse = operationSpec.responses[statusCode];\n        if (operationResponse.bodyMapper &&\n            operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) {\n            result.add(Number(statusCode));\n        }\n    }\n    return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter) {\n    const { parameterPath, mapper } = parameter;\n    let result;\n    if (typeof parameterPath === \"string\") {\n        result = parameterPath;\n    }\n    else if (Array.isArray(parameterPath)) {\n        result = parameterPath.join(\".\");\n    }\n    else {\n        result = mapper.serializedName;\n    }\n    return result;\n}\n//# sourceMappingURL=interfaceHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces\";\nimport { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from \"./operationHelpers\";\nimport { MapperTypeNames } from \"./serializer\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers\";\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options = {}) {\n    const stringifyXML = options.stringifyXML;\n    return {\n        name: serializationPolicyName,\n        async sendRequest(request, next) {\n            const operationInfo = getOperationRequestInfo(request);\n            const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n            const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments;\n            if (operationSpec && operationArguments) {\n                serializeHeaders(request, operationArguments, operationSpec);\n                serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n            }\n            return next(request);\n        },\n    };\n}\n/**\n * @internal\n */\nexport function serializeHeaders(request, operationArguments, operationSpec) {\n    var _a, _b;\n    if (operationSpec.headerParameters) {\n        for (const headerParameter of operationSpec.headerParameters) {\n            let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n            if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n                headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));\n                const headerCollectionPrefix = headerParameter.mapper\n                    .headerCollectionPrefix;\n                if (headerCollectionPrefix) {\n                    for (const key of Object.keys(headerValue)) {\n                        request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n                    }\n                }\n                else {\n                    request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue);\n                }\n            }\n        }\n    }\n    const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders;\n    if (customHeaders) {\n        for (const customHeaderName of Object.keys(customHeaders)) {\n            request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n        }\n    }\n}\n/**\n * @internal\n */\nexport function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n    throw new Error(\"XML serialization unsupported!\");\n}) {\n    var _a, _b, _c, _d, _e;\n    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n    const updatedOptions = {\n        xml: {\n            rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : \"\",\n            includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false,\n            xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY,\n        },\n    };\n    const xmlCharKey = updatedOptions.xml.xmlCharKey;\n    if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n        request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody);\n        const bodyMapper = operationSpec.requestBody.mapper;\n        const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n        const typeName = bodyMapper.type.name;\n        try {\n            if ((request.body !== undefined && request.body !== null) ||\n                (nullable && request.body === null) ||\n                required) {\n                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);\n                request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n                const isStream = typeName === MapperTypeNames.Stream;\n                if (operationSpec.isXML) {\n                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n                    if (typeName === MapperTypeNames.Sequence) {\n                        request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n                    }\n                    else if (!isStream) {\n                        request.body = stringifyXML(value, {\n                            rootName: xmlName || serializedName,\n                            xmlCharKey,\n                        });\n                    }\n                }\n                else if (typeName === MapperTypeNames.String &&\n                    (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match(\"text/plain\")) || operationSpec.mediaType === \"text\")) {\n                    // the String serializer has validated that request body is a string\n                    // so just send the string.\n                    return;\n                }\n                else if (!isStream) {\n                    request.body = JSON.stringify(request.body);\n                }\n            }\n        }\n        catch (error) {\n            throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \"  \")}.`);\n        }\n    }\n    else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n        request.formData = {};\n        for (const formDataParameter of operationSpec.formDataParameters) {\n            const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter);\n            if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n                request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);\n            }\n        }\n    }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n    // Composite and Sequence schemas already got their root namespace set during serialization\n    // We just need to add xmlns to the other schema types\n    if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n        const result = {};\n        result[options.xml.xmlCharKey] = serializedValue;\n        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n        return result;\n    }\n    return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n    if (!Array.isArray(obj)) {\n        obj = [obj];\n    }\n    if (!xmlNamespaceKey || !xmlNamespace) {\n        return { [elementName]: obj };\n    }\n    const result = { [elementName]: obj };\n    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n    return result;\n}\n//# sourceMappingURL=serializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { deserializationPolicy } from \"./deserializationPolicy\";\nimport { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from \"@azure/core-rest-pipeline\";\nimport { serializationPolicy } from \"./serializationPolicy\";\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options = {}) {\n    const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {});\n    if (options.credentialOptions) {\n        pipeline.addPolicy(bearerTokenAuthenticationPolicy({\n            credential: options.credentialOptions.credential,\n            scopes: options.credentialOptions.credentialScopes,\n        }));\n    }\n    pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n    pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n        phase: \"Deserialize\",\n    });\n    return pipeline;\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet cachedHttpClient;\nexport function getCachedDefaultHttpClient() {\n    if (!cachedHttpClient) {\n        cachedHttpClient = createDefaultHttpClient();\n    }\n    return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers\";\nconst CollectionFormatToDelimiterMap = {\n    CSV: \",\",\n    SSV: \" \",\n    Multi: \"Multi\",\n    TSV: \"\\t\",\n    Pipes: \"|\",\n};\nexport function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n    const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n    let isAbsolutePath = false;\n    let requestUrl = replaceAll(baseUri, urlReplacements);\n    if (operationSpec.path) {\n        let path = replaceAll(operationSpec.path, urlReplacements);\n        // QUIRK: sometimes we get a path component like /{nextLink}\n        // which may be a fully formed URL with a leading /. In that case, we should\n        // remove the leading /\n        if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n            path = path.substring(1);\n        }\n        // QUIRK: sometimes we get a path component like {nextLink}\n        // which may be a fully formed URL. In that case, we should\n        // ignore the baseUri.\n        if (isAbsoluteUrl(path)) {\n            requestUrl = path;\n            isAbsolutePath = true;\n        }\n        else {\n            requestUrl = appendPath(requestUrl, path);\n        }\n    }\n    const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n    /**\n     * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n     * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n     * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n     * is still being built so there is nothing to overwrite.\n     */\n    requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n    return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n    let result = input;\n    for (const [searchValue, replaceValue] of replacements) {\n        result = result.split(searchValue).join(replaceValue);\n    }\n    return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n    var _a;\n    const result = new Map();\n    if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) {\n        for (const urlParameter of operationSpec.urlParameters) {\n            let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject);\n            const parameterPathString = getPathStringFromParameter(urlParameter);\n            urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n            if (!urlParameter.skipEncoding) {\n                urlParameterValue = encodeURIComponent(urlParameterValue);\n            }\n            result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n        }\n    }\n    return result;\n}\nfunction isAbsoluteUrl(url) {\n    return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n    if (!pathToAppend) {\n        return url;\n    }\n    const parsedUrl = new URL(url);\n    let newPath = parsedUrl.pathname;\n    if (!newPath.endsWith(\"/\")) {\n        newPath = `${newPath}/`;\n    }\n    if (pathToAppend.startsWith(\"/\")) {\n        pathToAppend = pathToAppend.substring(1);\n    }\n    const searchStart = pathToAppend.indexOf(\"?\");\n    if (searchStart !== -1) {\n        const path = pathToAppend.substring(0, searchStart);\n        const search = pathToAppend.substring(searchStart + 1);\n        newPath = newPath + path;\n        if (search) {\n            parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n        }\n    }\n    else {\n        newPath = newPath + pathToAppend;\n    }\n    parsedUrl.pathname = newPath;\n    return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n    var _a;\n    const result = new Map();\n    const sequenceParams = new Set();\n    if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) {\n        for (const queryParameter of operationSpec.queryParameters) {\n            if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n                sequenceParams.add(queryParameter.mapper.serializedName);\n            }\n            let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject);\n            if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n                queryParameter.mapper.required) {\n                queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));\n                const delimiter = queryParameter.collectionFormat\n                    ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n                    : \"\";\n                if (Array.isArray(queryParameterValue)) {\n                    // replace null and undefined\n                    queryParameterValue = queryParameterValue.map((item) => {\n                        if (item === null || item === undefined) {\n                            return \"\";\n                        }\n                        return item;\n                    });\n                }\n                if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n                    continue;\n                }\n                else if (Array.isArray(queryParameterValue) &&\n                    (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n                    queryParameterValue = queryParameterValue.join(delimiter);\n                }\n                if (!queryParameter.skipEncoding) {\n                    if (Array.isArray(queryParameterValue)) {\n                        queryParameterValue = queryParameterValue.map((item) => {\n                            return encodeURIComponent(item);\n                        });\n                    }\n                    else {\n                        queryParameterValue = encodeURIComponent(queryParameterValue);\n                    }\n                }\n                // Join pipes and CSV *after* encoding, or the server will be upset.\n                if (Array.isArray(queryParameterValue) &&\n                    (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n                    queryParameterValue = queryParameterValue.join(delimiter);\n                }\n                result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);\n            }\n        }\n    }\n    return {\n        queryParams: result,\n        sequenceParams,\n    };\n}\nfunction simpleParseQueryParams(queryString) {\n    const result = new Map();\n    if (!queryString || queryString[0] !== \"?\") {\n        return result;\n    }\n    // remove the leading ?\n    queryString = queryString.slice(1);\n    const pairs = queryString.split(\"&\");\n    for (const pair of pairs) {\n        const [name, value] = pair.split(\"=\", 2);\n        const existingValue = result.get(name);\n        if (existingValue) {\n            if (Array.isArray(existingValue)) {\n                existingValue.push(value);\n            }\n            else {\n                result.set(name, [existingValue, value]);\n            }\n        }\n        else {\n            result.set(name, value);\n        }\n    }\n    return result;\n}\n/** @internal */\nexport function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n    if (queryParams.size === 0) {\n        return url;\n    }\n    const parsedUrl = new URL(url);\n    // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n    // can change their meaning to the server, such as in the case of a SAS signature.\n    // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n    const combinedParams = simpleParseQueryParams(parsedUrl.search);\n    for (const [name, value] of queryParams) {\n        const existingValue = combinedParams.get(name);\n        if (Array.isArray(existingValue)) {\n            if (Array.isArray(value)) {\n                existingValue.push(...value);\n                const valueSet = new Set(existingValue);\n                combinedParams.set(name, Array.from(valueSet));\n            }\n            else {\n                existingValue.push(value);\n            }\n        }\n        else if (existingValue) {\n            if (Array.isArray(value)) {\n                value.unshift(existingValue);\n            }\n            else if (sequenceParams.has(name)) {\n                combinedParams.set(name, [existingValue, value]);\n            }\n            if (!noOverwrite) {\n                combinedParams.set(name, value);\n            }\n        }\n        else {\n            combinedParams.set(name, value);\n        }\n    }\n    const searchPieces = [];\n    for (const [name, value] of combinedParams) {\n        if (typeof value === \"string\") {\n            searchPieces.push(`${name}=${value}`);\n        }\n        else if (Array.isArray(value)) {\n            // QUIRK: If we get an array of values, include multiple key/value pairs\n            for (const subValue of value) {\n                searchPieces.push(`${name}=${subValue}`);\n            }\n        }\n        else {\n            searchPieces.push(`${name}=${value}`);\n        }\n    }\n    // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n    parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n    return parsedUrl.toString();\n}\n//# sourceMappingURL=urlHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { createClientPipeline } from \"./pipeline\";\nimport { flattenResponse } from \"./utils\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache\";\nimport { getOperationRequestInfo } from \"./operationHelpers\";\nimport { getRequestUrl } from \"./urlHelpers\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers\";\nimport { logger } from \"./log\";\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n    /**\n     * The ServiceClient constructor\n     * @param credential - The credentials used for authentication with the service.\n     * @param options - The service client options that govern the behavior of the client.\n     */\n    constructor(options = {}) {\n        var _a, _b;\n        this._requestContentType = options.requestContentType;\n        this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri;\n        if (options.baseUri) {\n            logger.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n        }\n        this._allowInsecureConnection = options.allowInsecureConnection;\n        this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n        this.pipeline = options.pipeline || createDefaultPipeline(options);\n        if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) {\n            for (const { policy, position } of options.additionalPolicies) {\n                // Sign happens after Retry and is commonly needed to occur\n                // before policies that intercept post-retry.\n                const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n                this.pipeline.addPolicy(policy, {\n                    afterPhase,\n                });\n            }\n        }\n    }\n    /**\n     * Send the provided httpRequest.\n     */\n    async sendRequest(request) {\n        return this.pipeline.sendRequest(this._httpClient, request);\n    }\n    /**\n     * Send an HTTP request that is populated using the provided OperationSpec.\n     * @typeParam T - The typed result of the request, based on the OperationSpec.\n     * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n     * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n     */\n    async sendOperationRequest(operationArguments, operationSpec) {\n        const endpoint = operationSpec.baseUrl || this._endpoint;\n        if (!endpoint) {\n            throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n        }\n        // Templatized URLs sometimes reference properties on the ServiceClient child class,\n        // so we have to pass `this` below in order to search these properties if they're\n        // not part of OperationArguments\n        const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n        const request = createPipelineRequest({\n            url,\n        });\n        request.method = operationSpec.httpMethod;\n        const operationInfo = getOperationRequestInfo(request);\n        operationInfo.operationSpec = operationSpec;\n        operationInfo.operationArguments = operationArguments;\n        const contentType = operationSpec.contentType || this._requestContentType;\n        if (contentType && operationSpec.requestBody) {\n            request.headers.set(\"Content-Type\", contentType);\n        }\n        const options = operationArguments.options;\n        if (options) {\n            const requestOptions = options.requestOptions;\n            if (requestOptions) {\n                if (requestOptions.timeout) {\n                    request.timeout = requestOptions.timeout;\n                }\n                if (requestOptions.onUploadProgress) {\n                    request.onUploadProgress = requestOptions.onUploadProgress;\n                }\n                if (requestOptions.onDownloadProgress) {\n                    request.onDownloadProgress = requestOptions.onDownloadProgress;\n                }\n                if (requestOptions.shouldDeserialize !== undefined) {\n                    operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n                }\n                if (requestOptions.allowInsecureConnection) {\n                    request.allowInsecureConnection = true;\n                }\n            }\n            if (options.abortSignal) {\n                request.abortSignal = options.abortSignal;\n            }\n            if (options.tracingOptions) {\n                request.tracingOptions = options.tracingOptions;\n            }\n        }\n        if (this._allowInsecureConnection) {\n            request.allowInsecureConnection = true;\n        }\n        if (request.streamResponseStatusCodes === undefined) {\n            request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n        }\n        try {\n            const rawResponse = await this.sendRequest(request);\n            const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]);\n            if (options === null || options === void 0 ? void 0 : options.onResponse) {\n                options.onResponse(rawResponse, flatResponse);\n            }\n            return flatResponse;\n        }\n        catch (error) {\n            if (typeof error === \"object\" && (error === null || error === void 0 ? void 0 : error.response)) {\n                const rawResponse = error.response;\n                const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n                error.details = flatResponse;\n                if (options === null || options === void 0 ? void 0 : options.onResponse) {\n                    options.onResponse(rawResponse, flatResponse, error);\n                }\n            }\n            throw error;\n        }\n    }\n}\nfunction createDefaultPipeline(options) {\n    const credentialScopes = getCredentialScopes(options);\n    const credentialOptions = options.credential && credentialScopes\n        ? { credentialScopes, credential: options.credential }\n        : undefined;\n    return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions }));\n}\nfunction getCredentialScopes(options) {\n    if (options.credentialScopes) {\n        return options.credentialScopes;\n    }\n    if (options.endpoint) {\n        return `${options.endpoint}/.default`;\n    }\n    if (options.baseUri) {\n        return `${options.baseUri}/.default`;\n    }\n    if (options.credential && !options.credentialScopes) {\n        throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n    }\n    return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function getIdentityTokenEndpointSuffix(tenantId) {\n    if (tenantId === \"adfs\") {\n        return \"oauth2/token\";\n    }\n    else {\n        return \"oauth2/v2.0/token\";\n    }\n}\n//# sourceMappingURL=identityTokenEndpoint.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { SDK_VERSION } from \"../constants\";\nimport { createTracingClient } from \"@azure/core-tracing\";\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n    namespace: \"Microsoft.AAD\",\n    packageName: \"@azure/identity\",\n    packageVersion: SDK_VERSION,\n});\n//# sourceMappingURL=tracing.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const DefaultScopeSuffix = \"/.default\";\nexport const imdsHost = \"http://169.254.169.254\";\nexport const imdsEndpointPath = \"/metadata/identity/oauth2/token\";\nexport const imdsApiVersion = \"2018-02-01\";\nexport const azureArcAPIVersion = \"2019-11-01\";\nexport const azureFabricVersion = \"2019-07-01-preview\";\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { DefaultScopeSuffix } from \"./constants\";\n/**\n * Most MSIs send requests to the IMDS endpoint, or a similar endpoint.\n * These are GET requests that require sending a `resource` parameter on the query.\n * This resource can be derived from the scopes received through the getToken call, as long as only one scope is received.\n * Multiple scopes assume that the resulting token will have access to multiple resources, which won't be the case.\n *\n * For that reason, when we encounter multiple scopes, we return undefined.\n * It's up to the individual MSI implementations to throw the errors (which helps us provide less generic errors).\n */\nexport function mapScopesToResource(scopes) {\n    let scope = \"\";\n    if (Array.isArray(scopes)) {\n        if (scopes.length !== 1) {\n            return;\n        }\n        scope = scopes[0];\n    }\n    else if (typeof scopes === \"string\") {\n        scope = scopes;\n    }\n    if (!scope.endsWith(DefaultScopeSuffix)) {\n        return scope;\n    }\n    return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix));\n}\n/**\n * Given a token response, return the expiration timestamp as the number of milliseconds from the Unix epoch.\n * @param body - A parsed response body from the authentication endpoint.\n */\nexport function parseExpirationTimestamp(body) {\n    if (typeof body.expires_on === \"number\") {\n        return body.expires_on * 1000;\n    }\n    if (typeof body.expires_on === \"string\") {\n        const asNumber = +body.expires_on;\n        if (!isNaN(asNumber)) {\n            return asNumber * 1000;\n        }\n        const asDate = Date.parse(body.expires_on);\n        if (!isNaN(asDate)) {\n            return asDate;\n        }\n    }\n    if (typeof body.expires_in === \"number\") {\n        return Date.now() + body.expires_in * 1000;\n    }\n    throw new Error(`Failed to parse token expiration from body. expires_in=\"${body.expires_in}\", expires_on=\"${body.expires_on}\"`);\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ServiceClient } from \"@azure/core-client\";\nimport { isNode } from \"@azure/core-util\";\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { AbortController } from \"@azure/abort-controller\";\nimport { AuthenticationError, AuthenticationErrorName } from \"../errors\";\nimport { getIdentityTokenEndpointSuffix } from \"../util/identityTokenEndpoint\";\nimport { DefaultAuthorityHost, SDK_VERSION } from \"../constants\";\nimport { tracingClient } from \"../util/tracing\";\nimport { logger } from \"../util/logging\";\nimport { parseExpirationTimestamp, } from \"../credentials/managedIdentityCredential/utils\";\nconst noCorrelationId = \"noCorrelationId\";\n/**\n * @internal\n */\nexport function getIdentityClientAuthorityHost(options) {\n    // The authorityHost can come from options or from the AZURE_AUTHORITY_HOST environment variable.\n    let authorityHost = options === null || options === void 0 ? void 0 : options.authorityHost;\n    // The AZURE_AUTHORITY_HOST environment variable can only be provided in Node.js.\n    if (isNode) {\n        authorityHost = authorityHost !== null && authorityHost !== void 0 ? authorityHost : process.env.AZURE_AUTHORITY_HOST;\n    }\n    // If the authorityHost is not provided, we use the default one from the public cloud: https://login.microsoftonline.com\n    return authorityHost !== null && authorityHost !== void 0 ? authorityHost : DefaultAuthorityHost;\n}\n/**\n * The network module used by the Identity credentials.\n *\n * It allows for credentials to abort any pending request independently of the MSAL flow,\n * by calling to the `abortRequests()` method.\n *\n */\nexport class IdentityClient extends ServiceClient {\n    constructor(options) {\n        var _a, _b;\n        const packageDetails = `azsdk-js-identity/${SDK_VERSION}`;\n        const userAgentPrefix = ((_a = options === null || options === void 0 ? void 0 : options.userAgentOptions) === null || _a === void 0 ? void 0 : _a.userAgentPrefix)\n            ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n            : `${packageDetails}`;\n        const baseUri = getIdentityClientAuthorityHost(options);\n        if (!baseUri.startsWith(\"https:\")) {\n            throw new Error(\"The authorityHost address must use the 'https' protocol.\");\n        }\n        super(Object.assign(Object.assign({ requestContentType: \"application/json; charset=utf-8\", retryOptions: {\n                maxRetries: 3,\n            } }, options), { userAgentOptions: {\n                userAgentPrefix,\n            }, baseUri }));\n        this.authorityHost = baseUri;\n        this.abortControllers = new Map();\n        this.allowLoggingAccountIdentifiers = (_b = options === null || options === void 0 ? void 0 : options.loggingOptions) === null || _b === void 0 ? void 0 : _b.allowLoggingAccountIdentifiers;\n        // used for WorkloadIdentity\n        this.tokenCredentialOptions = Object.assign({}, options);\n    }\n    async sendTokenRequest(request) {\n        logger.info(`IdentityClient: sending token request to [${request.url}]`);\n        const response = await this.sendRequest(request);\n        if (response.bodyAsText && (response.status === 200 || response.status === 201)) {\n            const parsedBody = JSON.parse(response.bodyAsText);\n            if (!parsedBody.access_token) {\n                return null;\n            }\n            this.logIdentifiers(response);\n            const token = {\n                accessToken: {\n                    token: parsedBody.access_token,\n                    expiresOnTimestamp: parseExpirationTimestamp(parsedBody),\n                },\n                refreshToken: parsedBody.refresh_token,\n            };\n            logger.info(`IdentityClient: [${request.url}] token acquired, expires on ${token.accessToken.expiresOnTimestamp}`);\n            return token;\n        }\n        else {\n            const error = new AuthenticationError(response.status, response.bodyAsText);\n            logger.warning(`IdentityClient: authentication error. HTTP status: ${response.status}, ${error.errorResponse.errorDescription}`);\n            throw error;\n        }\n    }\n    async refreshAccessToken(tenantId, clientId, scopes, refreshToken, clientSecret, options = {}) {\n        if (refreshToken === undefined) {\n            return null;\n        }\n        logger.info(`IdentityClient: refreshing access token with client ID: ${clientId}, scopes: ${scopes} started`);\n        const refreshParams = {\n            grant_type: \"refresh_token\",\n            client_id: clientId,\n            refresh_token: refreshToken,\n            scope: scopes,\n        };\n        if (clientSecret !== undefined) {\n            refreshParams.client_secret = clientSecret;\n        }\n        const query = new URLSearchParams(refreshParams);\n        return tracingClient.withSpan(\"IdentityClient.refreshAccessToken\", options, async (updatedOptions) => {\n            try {\n                const urlSuffix = getIdentityTokenEndpointSuffix(tenantId);\n                const request = createPipelineRequest({\n                    url: `${this.authorityHost}/${tenantId}/${urlSuffix}`,\n                    method: \"POST\",\n                    body: query.toString(),\n                    abortSignal: options.abortSignal,\n                    headers: createHttpHeaders({\n                        Accept: \"application/json\",\n                        \"Content-Type\": \"application/x-www-form-urlencoded\",\n                    }),\n                    tracingOptions: updatedOptions.tracingOptions,\n                });\n                const response = await this.sendTokenRequest(request);\n                logger.info(`IdentityClient: refreshed token for client ID: ${clientId}`);\n                return response;\n            }\n            catch (err) {\n                if (err.name === AuthenticationErrorName &&\n                    err.errorResponse.error === \"interaction_required\") {\n                    // It's likely that the refresh token has expired, so\n                    // return null so that the credential implementation will\n                    // initiate the authentication flow again.\n                    logger.info(`IdentityClient: interaction required for client ID: ${clientId}`);\n                    return null;\n                }\n                else {\n                    logger.warning(`IdentityClient: failed refreshing token for client ID: ${clientId}: ${err}`);\n                    throw err;\n                }\n            }\n        });\n    }\n    // Here is a custom layer that allows us to abort requests that go through MSAL,\n    // since MSAL doesn't allow us to pass options all the way through.\n    generateAbortSignal(correlationId) {\n        const controller = new AbortController();\n        const controllers = this.abortControllers.get(correlationId) || [];\n        controllers.push(controller);\n        this.abortControllers.set(correlationId, controllers);\n        const existingOnAbort = controller.signal.onabort;\n        controller.signal.onabort = (...params) => {\n            this.abortControllers.set(correlationId, undefined);\n            if (existingOnAbort) {\n                existingOnAbort(...params);\n            }\n        };\n        return controller.signal;\n    }\n    abortRequests(correlationId) {\n        const key = correlationId || noCorrelationId;\n        const controllers = [\n            ...(this.abortControllers.get(key) || []),\n            // MSAL passes no correlation ID to the get requests...\n            ...(this.abortControllers.get(noCorrelationId) || []),\n        ];\n        if (!controllers.length) {\n            return;\n        }\n        for (const controller of controllers) {\n            controller.abort();\n        }\n        this.abortControllers.set(key, undefined);\n    }\n    getCorrelationId(options) {\n        var _a;\n        const parameter = (_a = options === null || options === void 0 ? void 0 : options.body) === null || _a === void 0 ? void 0 : _a.split(\"&\").map((part) => part.split(\"=\")).find(([key]) => key === \"client-request-id\");\n        return parameter && parameter.length ? parameter[1] || noCorrelationId : noCorrelationId;\n    }\n    // The MSAL network module methods follow\n    async sendGetRequestAsync(url, options) {\n        const request = createPipelineRequest({\n            url,\n            method: \"GET\",\n            body: options === null || options === void 0 ? void 0 : options.body,\n            headers: createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers),\n            abortSignal: this.generateAbortSignal(noCorrelationId),\n        });\n        const response = await this.sendRequest(request);\n        this.logIdentifiers(response);\n        return {\n            body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n            headers: response.headers.toJSON(),\n            status: response.status,\n        };\n    }\n    async sendPostRequestAsync(url, options) {\n        const request = createPipelineRequest({\n            url,\n            method: \"POST\",\n            body: options === null || options === void 0 ? void 0 : options.body,\n            headers: createHttpHeaders(options === null || options === void 0 ? void 0 : options.headers),\n            // MSAL doesn't send the correlation ID on the get requests.\n            abortSignal: this.generateAbortSignal(this.getCorrelationId(options)),\n        });\n        const response = await this.sendRequest(request);\n        this.logIdentifiers(response);\n        return {\n            body: response.bodyAsText ? JSON.parse(response.bodyAsText) : undefined,\n            headers: response.headers.toJSON(),\n            status: response.status,\n        };\n    }\n    /**\n     *\n     * @internal\n     */\n    getTokenCredentialOptions() {\n        return this.tokenCredentialOptions;\n    }\n    /**\n     * If allowLoggingAccountIdentifiers was set on the constructor options\n     * we try to log the account identifiers by parsing the received access token.\n     *\n     * The account identifiers we try to log are:\n     * - `appid`: The application or Client Identifier.\n     * - `upn`: User Principal Name.\n     *   - It might not be available in some authentication scenarios.\n     *   - If it's not available, we put a placeholder: \"No User Principal Name available\".\n     * - `tid`: Tenant Identifier.\n     * - `oid`: Object Identifier of the authenticated user.\n     */\n    logIdentifiers(response) {\n        if (!this.allowLoggingAccountIdentifiers || !response.bodyAsText) {\n            return;\n        }\n        const unavailableUpn = \"No User Principal Name available\";\n        try {\n            const parsed = response.parsedBody || JSON.parse(response.bodyAsText);\n            const accessToken = parsed.access_token;\n            if (!accessToken) {\n                // Without an access token allowLoggingAccountIdentifiers isn't useful.\n                return;\n            }\n            const base64Metadata = accessToken.split(\".\")[1];\n            const { appid, upn, tid, oid } = JSON.parse(Buffer.from(base64Metadata, \"base64\").toString(\"utf8\"));\n            logger.info(`[Authenticated account] Client ID: ${appid}. Tenant ID: ${tid}. User Principal Name: ${upn || unavailableUpn}. Object ID (user): ${oid}`);\n        }\n        catch (e) {\n            logger.warning(\"allowLoggingAccountIdentifiers was set, but we couldn't log the account information. Error:\", e.message);\n        }\n    }\n}\n//# sourceMappingURL=identityClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Helps specify a regional authority, or \"AutoDiscoverRegion\" to auto-detect the region.\n */\nexport var RegionalAuthority;\n(function (RegionalAuthority) {\n    /** Instructs MSAL to attempt to discover the region */\n    RegionalAuthority[\"AutoDiscoverRegion\"] = \"AutoDiscoverRegion\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'westus' region. */\n    RegionalAuthority[\"USWest\"] = \"westus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'westus2' region. */\n    RegionalAuthority[\"USWest2\"] = \"westus2\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'centralus' region. */\n    RegionalAuthority[\"USCentral\"] = \"centralus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'eastus' region. */\n    RegionalAuthority[\"USEast\"] = \"eastus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'eastus2' region. */\n    RegionalAuthority[\"USEast2\"] = \"eastus2\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'northcentralus' region. */\n    RegionalAuthority[\"USNorthCentral\"] = \"northcentralus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'southcentralus' region. */\n    RegionalAuthority[\"USSouthCentral\"] = \"southcentralus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'westcentralus' region. */\n    RegionalAuthority[\"USWestCentral\"] = \"westcentralus\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'canadacentral' region. */\n    RegionalAuthority[\"CanadaCentral\"] = \"canadacentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'canadaeast' region. */\n    RegionalAuthority[\"CanadaEast\"] = \"canadaeast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'brazilsouth' region. */\n    RegionalAuthority[\"BrazilSouth\"] = \"brazilsouth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'northeurope' region. */\n    RegionalAuthority[\"EuropeNorth\"] = \"northeurope\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'westeurope' region. */\n    RegionalAuthority[\"EuropeWest\"] = \"westeurope\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'uksouth' region. */\n    RegionalAuthority[\"UKSouth\"] = \"uksouth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'ukwest' region. */\n    RegionalAuthority[\"UKWest\"] = \"ukwest\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'francecentral' region. */\n    RegionalAuthority[\"FranceCentral\"] = \"francecentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'francesouth' region. */\n    RegionalAuthority[\"FranceSouth\"] = \"francesouth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandnorth' region. */\n    RegionalAuthority[\"SwitzerlandNorth\"] = \"switzerlandnorth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'switzerlandwest' region. */\n    RegionalAuthority[\"SwitzerlandWest\"] = \"switzerlandwest\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'germanynorth' region. */\n    RegionalAuthority[\"GermanyNorth\"] = \"germanynorth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'germanywestcentral' region. */\n    RegionalAuthority[\"GermanyWestCentral\"] = \"germanywestcentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'norwaywest' region. */\n    RegionalAuthority[\"NorwayWest\"] = \"norwaywest\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'norwayeast' region. */\n    RegionalAuthority[\"NorwayEast\"] = \"norwayeast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'eastasia' region. */\n    RegionalAuthority[\"AsiaEast\"] = \"eastasia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'southeastasia' region. */\n    RegionalAuthority[\"AsiaSouthEast\"] = \"southeastasia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'japaneast' region. */\n    RegionalAuthority[\"JapanEast\"] = \"japaneast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'japanwest' region. */\n    RegionalAuthority[\"JapanWest\"] = \"japanwest\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'australiaeast' region. */\n    RegionalAuthority[\"AustraliaEast\"] = \"australiaeast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'australiasoutheast' region. */\n    RegionalAuthority[\"AustraliaSouthEast\"] = \"australiasoutheast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral' region. */\n    RegionalAuthority[\"AustraliaCentral\"] = \"australiacentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'australiacentral2' region. */\n    RegionalAuthority[\"AustraliaCentral2\"] = \"australiacentral2\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'centralindia' region. */\n    RegionalAuthority[\"IndiaCentral\"] = \"centralindia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'southindia' region. */\n    RegionalAuthority[\"IndiaSouth\"] = \"southindia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'westindia' region. */\n    RegionalAuthority[\"IndiaWest\"] = \"westindia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'koreasouth' region. */\n    RegionalAuthority[\"KoreaSouth\"] = \"koreasouth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'koreacentral' region. */\n    RegionalAuthority[\"KoreaCentral\"] = \"koreacentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'uaecentral' region. */\n    RegionalAuthority[\"UAECentral\"] = \"uaecentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'uaenorth' region. */\n    RegionalAuthority[\"UAENorth\"] = \"uaenorth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'southafricanorth' region. */\n    RegionalAuthority[\"SouthAfricaNorth\"] = \"southafricanorth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'southafricawest' region. */\n    RegionalAuthority[\"SouthAfricaWest\"] = \"southafricawest\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth' region. */\n    RegionalAuthority[\"ChinaNorth\"] = \"chinanorth\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast' region. */\n    RegionalAuthority[\"ChinaEast\"] = \"chinaeast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'chinanorth2' region. */\n    RegionalAuthority[\"ChinaNorth2\"] = \"chinanorth2\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'chinaeast2' region. */\n    RegionalAuthority[\"ChinaEast2\"] = \"chinaeast2\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'germanycentral' region. */\n    RegionalAuthority[\"GermanyCentral\"] = \"germanycentral\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'germanynortheast' region. */\n    RegionalAuthority[\"GermanyNorthEast\"] = \"germanynortheast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usgovvirginia' region. */\n    RegionalAuthority[\"GovernmentUSVirginia\"] = \"usgovvirginia\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usgoviowa' region. */\n    RegionalAuthority[\"GovernmentUSIowa\"] = \"usgoviowa\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usgovarizona' region. */\n    RegionalAuthority[\"GovernmentUSArizona\"] = \"usgovarizona\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usgovtexas' region. */\n    RegionalAuthority[\"GovernmentUSTexas\"] = \"usgovtexas\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usdodeast' region. */\n    RegionalAuthority[\"GovernmentUSDodEast\"] = \"usdodeast\";\n    /** Uses the {@link RegionalAuthority} for the Azure 'usdodcentral' region. */\n    RegionalAuthority[\"GovernmentUSDodCentral\"] = \"usdodcentral\";\n})(RegionalAuthority || (RegionalAuthority = {}));\n//# sourceMappingURL=regionalAuthority.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as msalNode from \"@azure/msal-node\";\nimport { getLogLevel } from \"@azure/logger\";\nimport { MsalBaseUtilities, defaultLoggerCallback, getAuthority, getKnownAuthorities, msalToPublic, publicToMsal, getMSALLogLevel, } from \"../utils\";\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, resolveTenantId, } from \"../../util/tenantIdUtils\";\nimport { AuthenticationRequiredError } from \"../../errors\";\nimport { CACHE_CAE_SUFFIX, CACHE_NON_CAE_SUFFIX, DeveloperSignOnClientId } from \"../../constants\";\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { RegionalAuthority } from \"../../regionalAuthority\";\n/**\n * The current persistence provider, undefined by default.\n * @internal\n */\nlet persistenceProvider = undefined;\n/**\n * An object that allows setting the persistence provider.\n * @internal\n */\nexport const msalNodeFlowCacheControl = {\n    setPersistence(pluginProvider) {\n        persistenceProvider = pluginProvider;\n    },\n};\n/**\n * MSAL partial base client for Node.js.\n *\n * It completes the input configuration with some default values.\n * It also provides with utility protected methods that can be used from any of the clients,\n * which includes handlers for successful responses and errors.\n *\n * @internal\n */\nexport class MsalNode extends MsalBaseUtilities {\n    constructor(options) {\n        var _a, _b, _c, _d;\n        super(options);\n        // protected publicApp: msalNode.PublicClientApplication | undefined;\n        // protected publicAppCae: msalNode.PublicClientApplication | undefined;\n        // protected confidentialApp: msalNode.ConfidentialClientApplication | undefined;\n        // protected confidentialAppCae: msalNode.ConfidentialClientApplication | undefined;\n        this.app = {};\n        this.caeApp = {};\n        this.requiresConfidential = false;\n        this.msalConfig = this.defaultNodeMsalConfig(options);\n        this.tenantId = resolveTenantId(options.logger, options.tenantId, options.clientId);\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds((_a = options === null || options === void 0 ? void 0 : options.tokenCredentialOptions) === null || _a === void 0 ? void 0 : _a.additionallyAllowedTenants);\n        this.clientId = this.msalConfig.auth.clientId;\n        if (options === null || options === void 0 ? void 0 : options.getAssertion) {\n            this.getAssertion = options.getAssertion;\n        }\n        // If persistence has been configured\n        if (persistenceProvider !== undefined && ((_b = options.tokenCachePersistenceOptions) === null || _b === void 0 ? void 0 : _b.enabled)) {\n            const nonCaeOptions = Object.assign({ name: `${options.tokenCachePersistenceOptions.name}.${CACHE_NON_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions);\n            const caeOptions = Object.assign({ name: `${options.tokenCachePersistenceOptions.name}.${CACHE_CAE_SUFFIX}` }, options.tokenCachePersistenceOptions);\n            this.createCachePlugin = () => persistenceProvider(nonCaeOptions);\n            this.createCachePluginCae = () => persistenceProvider(caeOptions);\n        }\n        else if ((_c = options.tokenCachePersistenceOptions) === null || _c === void 0 ? void 0 : _c.enabled) {\n            throw new Error([\n                \"Persistent token caching was requested, but no persistence provider was configured.\",\n                \"You must install the identity-cache-persistence plugin package (`npm install --save @azure/identity-cache-persistence`)\",\n                \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n                \"`useIdentityPlugin(cachePersistencePlugin)` before using `tokenCachePersistenceOptions`.\",\n            ].join(\" \"));\n        }\n        this.azureRegion = (_d = options.regionalAuthority) !== null && _d !== void 0 ? _d : process.env.AZURE_REGIONAL_AUTHORITY_NAME;\n        if (this.azureRegion === RegionalAuthority.AutoDiscoverRegion) {\n            this.azureRegion = \"AUTO_DISCOVER\";\n        }\n    }\n    /**\n     * Generates a MSAL configuration that generally works for Node.js\n     */\n    defaultNodeMsalConfig(options) {\n        var _a;\n        const clientId = options.clientId || DeveloperSignOnClientId;\n        const tenantId = resolveTenantId(options.logger, options.tenantId, options.clientId);\n        this.authorityHost = options.authorityHost || process.env.AZURE_AUTHORITY_HOST;\n        const authority = getAuthority(tenantId, this.authorityHost);\n        this.identityClient = new IdentityClient(Object.assign(Object.assign({}, options.tokenCredentialOptions), { authorityHost: authority, loggingOptions: options.loggingOptions }));\n        const clientCapabilities = [];\n        return {\n            auth: {\n                clientId,\n                authority,\n                knownAuthorities: getKnownAuthorities(tenantId, authority, options.disableInstanceDiscovery),\n                clientCapabilities,\n            },\n            // Cache is defined in this.prepare();\n            system: {\n                networkClient: this.identityClient,\n                loggerOptions: {\n                    loggerCallback: defaultLoggerCallback(options.logger),\n                    logLevel: getMSALLogLevel(getLogLevel()),\n                    piiLoggingEnabled: (_a = options.loggingOptions) === null || _a === void 0 ? void 0 : _a.enableUnsafeSupportLogging,\n                },\n            },\n        };\n    }\n    getApp(appType, enableCae) {\n        const app = enableCae ? this.caeApp : this.app;\n        if (appType === \"publicFirst\") {\n            return (app.public || app.confidential);\n        }\n        else if (appType === \"confidentialFirst\") {\n            return (app.confidential || app.public);\n        }\n        else if (appType === \"confidential\") {\n            return app.confidential;\n        }\n        else {\n            return app.public;\n        }\n    }\n    /**\n     * Prepares the MSAL applications.\n     */\n    async init(options) {\n        if (options === null || options === void 0 ? void 0 : options.abortSignal) {\n            options.abortSignal.addEventListener(\"abort\", () => {\n                // This will abort any pending request in the IdentityClient,\n                // based on the received or generated correlationId\n                this.identityClient.abortRequests(options.correlationId);\n            });\n        }\n        const app = (options === null || options === void 0 ? void 0 : options.enableCae) ? this.caeApp : this.app;\n        if (options === null || options === void 0 ? void 0 : options.enableCae) {\n            this.msalConfig.auth.clientCapabilities = [\"cp1\"];\n        }\n        if (app.public || app.confidential) {\n            return;\n        }\n        if ((options === null || options === void 0 ? void 0 : options.enableCae) && this.createCachePluginCae !== undefined) {\n            this.msalConfig.cache = {\n                cachePlugin: await this.createCachePluginCae(),\n            };\n        }\n        if (this.createCachePlugin !== undefined) {\n            this.msalConfig.cache = {\n                cachePlugin: await this.createCachePlugin(),\n            };\n        }\n        if (options === null || options === void 0 ? void 0 : options.enableCae) {\n            this.caeApp.public = new msalNode.PublicClientApplication(this.msalConfig);\n        }\n        else {\n            this.app.public = new msalNode.PublicClientApplication(this.msalConfig);\n        }\n        if (this.getAssertion) {\n            this.msalConfig.auth.clientAssertion = await this.getAssertion();\n        }\n        // The confidential client requires either a secret, assertion or certificate.\n        if (this.msalConfig.auth.clientSecret ||\n            this.msalConfig.auth.clientAssertion ||\n            this.msalConfig.auth.clientCertificate) {\n            if (options === null || options === void 0 ? void 0 : options.enableCae) {\n                this.caeApp.confidential = new msalNode.ConfidentialClientApplication(this.msalConfig);\n            }\n            else {\n                this.app.confidential = new msalNode.ConfidentialClientApplication(this.msalConfig);\n            }\n        }\n        else {\n            if (this.requiresConfidential) {\n                throw new Error(\"Unable to generate the MSAL confidential client. Missing either the client's secret, certificate or assertion.\");\n            }\n        }\n    }\n    /**\n     * Allows the cancellation of a MSAL request.\n     */\n    withCancellation(promise, abortSignal, onCancel) {\n        return new Promise((resolve, reject) => {\n            promise\n                .then((msalToken) => {\n                return resolve(msalToken);\n            })\n                .catch(reject);\n            if (abortSignal) {\n                abortSignal.addEventListener(\"abort\", () => {\n                    onCancel === null || onCancel === void 0 ? void 0 : onCancel();\n                });\n            }\n        });\n    }\n    /**\n     * Returns the existing account, attempts to load the account from MSAL.\n     */\n    async getActiveAccount(enableCae = false) {\n        if (this.account) {\n            return this.account;\n        }\n        const cache = this.getApp(\"confidentialFirst\", enableCae).getTokenCache();\n        const accountsByTenant = await (cache === null || cache === void 0 ? void 0 : cache.getAllAccounts());\n        if (!accountsByTenant) {\n            return;\n        }\n        if (accountsByTenant.length === 1) {\n            this.account = msalToPublic(this.clientId, accountsByTenant[0]);\n        }\n        else {\n            this.logger\n                .info(`More than one account was found authenticated for this Client ID and Tenant ID.\nHowever, no \"authenticationRecord\" has been provided for this credential,\ntherefore we're unable to pick between these accounts.\nA new login attempt will be requested, to ensure the correct account is picked.\nTo work with multiple accounts for the same Client ID and Tenant ID, please provide an \"authenticationRecord\" when initializing a credential to prevent this from happening.`);\n            return;\n        }\n        return this.account;\n    }\n    /**\n     * Attempts to retrieve a token from cache.\n     */\n    async getTokenSilent(scopes, options) {\n        var _a, _b, _c;\n        await this.getActiveAccount(options === null || options === void 0 ? void 0 : options.enableCae);\n        if (!this.account) {\n            throw new AuthenticationRequiredError({\n                scopes,\n                getTokenOptions: options,\n                message: \"Silent authentication failed. We couldn't retrieve an active account from the cache.\",\n            });\n        }\n        const silentRequest = {\n            // To be able to re-use the account, the Token Cache must also have been provided.\n            account: publicToMsal(this.account),\n            correlationId: options === null || options === void 0 ? void 0 : options.correlationId,\n            scopes,\n            authority: options === null || options === void 0 ? void 0 : options.authority,\n            claims: options === null || options === void 0 ? void 0 : options.claims,\n        };\n        try {\n            this.logger.info(\"Attempting to acquire token silently\");\n            /**\n             * The following code to retrieve all accounts is done as a workaround in an attempt to force the\n             * refresh of the token cache with the token and the account passed in through the\n             * `authenticationRecord` parameter. See issue - https://github.com/Azure/azure-sdk-for-js/issues/24349#issuecomment-1496715651\n             * This workaround serves as a workaround for silent authentication not happening when authenticationRecord is passed.\n             */\n            await ((_a = this.getApp(\"publicFirst\", options === null || options === void 0 ? void 0 : options.enableCae)) === null || _a === void 0 ? void 0 : _a.getTokenCache().getAllAccounts());\n            const response = (_c = (await ((_b = this.getApp(\"confidential\", options === null || options === void 0 ? void 0 : options.enableCae)) === null || _b === void 0 ? void 0 : _b.acquireTokenSilent(silentRequest)))) !== null && _c !== void 0 ? _c : (await this.getApp(\"public\", options === null || options === void 0 ? void 0 : options.enableCae).acquireTokenSilent(silentRequest));\n            return this.handleResult(scopes, this.clientId, response || undefined);\n        }\n        catch (err) {\n            throw this.handleError(scopes, err, options);\n        }\n    }\n    /**\n     * Wrapper around each MSAL flow get token operation: doGetToken.\n     * If disableAutomaticAuthentication is sent through the constructor, it will prevent MSAL from requesting the user input.\n     */\n    async getToken(scopes, options = {}) {\n        const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds) ||\n            this.tenantId;\n        options.authority = getAuthority(tenantId, this.authorityHost);\n        options.correlationId = (options === null || options === void 0 ? void 0 : options.correlationId) || this.generateUuid();\n        await this.init(options);\n        try {\n            // MSAL now caches tokens based on their claims,\n            // so now one has to keep track fo claims in order to retrieve the newer tokens from acquireTokenSilent\n            // This update happened on PR: https://github.com/AzureAD/microsoft-authentication-library-for-js/pull/4533\n            const optionsClaims = options.claims;\n            if (optionsClaims) {\n                this.cachedClaims = optionsClaims;\n            }\n            if (this.cachedClaims && !optionsClaims) {\n                options.claims = this.cachedClaims;\n            }\n            // We don't return the promise since we want to catch errors right here.\n            return await this.getTokenSilent(scopes, options);\n        }\n        catch (err) {\n            if (err.name !== \"AuthenticationRequiredError\") {\n                throw err;\n            }\n            if (options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication) {\n                throw new AuthenticationRequiredError({\n                    scopes,\n                    getTokenOptions: options,\n                    message: \"Automatic authentication has been disabled. You may call the authentication() method.\",\n                });\n            }\n            this.logger.info(`Silent authentication failed, falling back to interactive method.`);\n            return this.doGetToken(scopes, options);\n        }\n    }\n}\n//# sourceMappingURL=msalNodeCommon.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { AzureAuthorityHosts } from \"../constants\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { IdentityClient } from \"../client/identityClient\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nconst CommonTenantId = \"common\";\nconst AzureAccountClientId = \"aebc6443-996d-45c2-90f0-388ff96faa56\"; // VSC: 'aebc6443-996d-45c2-90f0-388ff96faa56'\nconst logger = credentialLogger(\"VisualStudioCodeCredential\");\nlet findCredentials = undefined;\nexport const vsCodeCredentialControl = {\n    setVsCodeCredentialFinder(finder) {\n        findCredentials = finder;\n    },\n};\n// Map of unsupported Tenant IDs and the errors we will be throwing.\nconst unsupportedTenantIds = {\n    adfs: \"The VisualStudioCodeCredential does not support authentication with ADFS tenants.\",\n};\nfunction checkUnsupportedTenant(tenantId) {\n    // If the Tenant ID isn't supported, we throw.\n    const unsupportedTenantError = unsupportedTenantIds[tenantId];\n    if (unsupportedTenantError) {\n        throw new CredentialUnavailableError(unsupportedTenantError);\n    }\n}\nconst mapVSCodeAuthorityHosts = {\n    AzureCloud: AzureAuthorityHosts.AzurePublicCloud,\n    AzureChina: AzureAuthorityHosts.AzureChina,\n    AzureGermanCloud: AzureAuthorityHosts.AzureGermany,\n    AzureUSGovernment: AzureAuthorityHosts.AzureGovernment,\n};\n/**\n * Attempts to load a specific property from the VSCode configurations of the current OS.\n * If it fails at any point, returns undefined.\n */\nexport function getPropertyFromVSCode(property) {\n    const settingsPath = [\"User\", \"settings.json\"];\n    // Eventually we can add more folders for more versions of VSCode.\n    const vsCodeFolder = \"Code\";\n    const homedir = os.homedir();\n    function loadProperty(...pathSegments) {\n        const fullPath = path.join(...pathSegments, vsCodeFolder, ...settingsPath);\n        const settings = JSON.parse(fs.readFileSync(fullPath, { encoding: \"utf8\" }));\n        return settings[property];\n    }\n    try {\n        let appData;\n        switch (process.platform) {\n            case \"win32\":\n                appData = process.env.APPDATA;\n                return appData ? loadProperty(appData) : undefined;\n            case \"darwin\":\n                return loadProperty(homedir, \"Library\", \"Application Support\");\n            case \"linux\":\n                return loadProperty(homedir, \".config\");\n            default:\n                return;\n        }\n    }\n    catch (e) {\n        logger.info(`Failed to load the Visual Studio Code configuration file. Error: ${e.message}`);\n        return;\n    }\n}\n/**\n * Connects to Azure using the credential provided by the VSCode extension 'Azure Account'.\n * Once the user has logged in via the extension, this credential can share the same refresh token\n * that is cached by the extension.\n *\n * It's a [known issue](https://github.com/Azure/azure-sdk-for-js/issues/20500) that this credential doesn't\n * work with [Azure Account extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account)\n * versions newer than **0.9.11**. A long-term fix to this problem is in progress. In the meantime, consider\n * authenticating with {@link AzureCliCredential}.\n */\nexport class VisualStudioCodeCredential {\n    /**\n     * Creates an instance of VisualStudioCodeCredential to use for automatically authenticating via VSCode.\n     *\n     * **Note**: `VisualStudioCodeCredential` is provided by a plugin package:\n     * `@azure/identity-vscode`. If this package is not installed and registered\n     * using the plugin API (`useIdentityPlugin`), then authentication using\n     * `VisualStudioCodeCredential` will not be available.\n     *\n     * @param options - Options for configuring the client which makes the authentication request.\n     */\n    constructor(options) {\n        // We want to make sure we use the one assigned by the user on the VSCode settings.\n        // Or just `AzureCloud` by default.\n        this.cloudName = (getPropertyFromVSCode(\"azure.cloud\") || \"AzureCloud\");\n        // Picking an authority host based on the cloud name.\n        const authorityHost = mapVSCodeAuthorityHosts[this.cloudName];\n        this.identityClient = new IdentityClient(Object.assign({ authorityHost }, options));\n        if (options && options.tenantId) {\n            checkTenantId(logger, options.tenantId);\n            this.tenantId = options.tenantId;\n        }\n        else {\n            this.tenantId = CommonTenantId;\n        }\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        checkUnsupportedTenant(this.tenantId);\n    }\n    /**\n     * Runs preparations for any further getToken request.\n     */\n    async prepare() {\n        // Attempts to load the tenant from the VSCode configuration file.\n        const settingsTenant = getPropertyFromVSCode(\"azure.tenant\");\n        if (settingsTenant) {\n            this.tenantId = settingsTenant;\n        }\n        checkUnsupportedTenant(this.tenantId);\n    }\n    /**\n     * Runs preparations for any further getToken, but only once.\n     */\n    prepareOnce() {\n        if (!this.preparePromise) {\n            this.preparePromise = this.prepare();\n        }\n        return this.preparePromise;\n    }\n    /**\n     * Returns the token found by searching VSCode's authentication cache or\n     * returns null if no token could be found.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                `TokenCredential` implementation might make.\n     */\n    async getToken(scopes, options) {\n        var _a, _b;\n        await this.prepareOnce();\n        const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds, logger) || this.tenantId;\n        if (findCredentials === undefined) {\n            throw new CredentialUnavailableError([\n                \"No implementation of `VisualStudioCodeCredential` is available.\",\n                \"You must install the identity-vscode plugin package (`npm install --save-dev @azure/identity-vscode`)\",\n                \"and enable it by importing `useIdentityPlugin` from `@azure/identity` and calling\",\n                \"`useIdentityPlugin(vsCodePlugin)` before creating a `VisualStudioCodeCredential`.\",\n                \"To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\",\n            ].join(\" \"));\n        }\n        let scopeString = typeof scopes === \"string\" ? scopes : scopes.join(\" \");\n        // Check to make sure the scope we get back is a valid scope\n        if (!scopeString.match(/^[0-9a-zA-Z-.:/]+$/)) {\n            const error = new Error(\"Invalid scope was specified by the user or calling client\");\n            logger.getToken.info(formatError(scopes, error));\n            throw error;\n        }\n        if (scopeString.indexOf(\"offline_access\") < 0) {\n            scopeString += \" offline_access\";\n        }\n        // findCredentials returns an array similar to:\n        // [\n        //   {\n        //     account: \"\",\n        //     password: \"\",\n        //   },\n        //   /* ... */\n        // ]\n        const credentials = await findCredentials();\n        // If we can't find the credential based on the name, we'll pick the first one available.\n        const { password: refreshToken } = (_b = (_a = credentials.find(({ account }) => account === this.cloudName)) !== null && _a !== void 0 ? _a : credentials[0]) !== null && _b !== void 0 ? _b : {};\n        if (refreshToken) {\n            const tokenResponse = await this.identityClient.refreshAccessToken(tenantId, AzureAccountClientId, scopeString, refreshToken, undefined);\n            if (tokenResponse) {\n                logger.getToken.info(formatSuccess(scopes));\n                return tokenResponse.accessToken;\n            }\n            else {\n                const error = new CredentialUnavailableError(\"Could not retrieve the token associated with Visual Studio Code. Have you connected using the 'Azure Account' extension recently? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\");\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n        }\n        else {\n            const error = new CredentialUnavailableError(\"Could not retrieve the token associated with Visual Studio Code. Did you connect using the 'Azure Account' extension? To troubleshoot, visit https://aka.ms/azsdk/js/identity/vscodecredential/troubleshoot.\");\n            logger.getToken.info(formatError(scopes, error));\n            throw error;\n        }\n    }\n}\n//# sourceMappingURL=visualStudioCodeCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { msalNodeFlowCacheControl } from \"../msal/nodeFlows/msalNodeCommon\";\nimport { vsCodeCredentialControl } from \"../credentials/visualStudioCodeCredential\";\n/**\n * The context passed to an Identity plugin. This contains objects that\n * plugins can use to set backend implementations.\n * @internal\n */\nconst pluginContext = {\n    cachePluginControl: msalNodeFlowCacheControl,\n    vsCodeCredentialControl: vsCodeCredentialControl,\n};\n/**\n * Extend Azure Identity with additional functionality. Pass a plugin from\n * a plugin package, such as:\n *\n * - `@azure/identity-cache-persistence`: provides persistent token caching\n * - `@azure/identity-vscode`: provides the dependencies of\n *   `VisualStudioCodeCredential` and enables it\n *\n * Example:\n *\n * ```javascript\n * import { cachePersistencePlugin } from \"@azure/identity-cache-persistence\";\n *\n * import { useIdentityPlugin, DefaultAzureCredential } from \"@azure/identity\";\n * useIdentityPlugin(cachePersistencePlugin);\n *\n * // The plugin has the capability to extend `DefaultAzureCredential` and to\n * // add middleware to the underlying credentials, such as persistence.\n * const credential = new DefaultAzureCredential({\n *   tokenCachePersistenceOptions: {\n *     enabled: true\n *   }\n * });\n * ```\n *\n * @param plugin - the plugin to register\n */\nexport function useIdentityPlugin(plugin) {\n    plugin(pluginContext);\n}\n//# sourceMappingURL=consumer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nconst msiName = \"ManagedIdentityCredential - AppServiceMSI 2017\";\nconst logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId) {\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const queryParameters = {\n        resource,\n        \"api-version\": \"2017-09-01\",\n    };\n    if (clientId) {\n        queryParameters.clientid = clientId;\n    }\n    const query = new URLSearchParams(queryParameters);\n    // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n    if (!process.env.MSI_ENDPOINT) {\n        throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`);\n    }\n    if (!process.env.MSI_SECRET) {\n        throw new Error(`${msiName}: Missing environment variable: MSI_SECRET`);\n    }\n    return {\n        url: `${process.env.MSI_ENDPOINT}?${query.toString()}`,\n        method: \"GET\",\n        headers: createHttpHeaders({\n            Accept: \"application/json\",\n            secret: process.env.MSI_SECRET,\n        }),\n    };\n}\n/**\n * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI.\n */\nexport const appServiceMsi2017 = {\n    name: \"appServiceMsi2017\",\n    async isAvailable({ scopes }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        const env = process.env;\n        const result = Boolean(env.MSI_ENDPOINT && env.MSI_SECRET);\n        if (!result) {\n            logger.info(`${msiName}: Unavailable. The environment variables needed are: MSI_ENDPOINT and MSI_SECRET.`);\n        }\n        return result;\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        const { identityClient, scopes, clientId, resourceId } = configuration;\n        if (resourceId) {\n            logger.warning(`${msiName}: managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`);\n        }\n        logger.info(`${msiName}: Using the endpoint and the secret coming form the environment variables: MSI_ENDPOINT=${process.env.MSI_ENDPOINT} and MSI_SECRET=[REDACTED].`);\n        const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId)), { \n            // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n            allowInsecureConnection: true }));\n        const tokenResponse = await identityClient.sendTokenRequest(request);\n        return (tokenResponse && tokenResponse.accessToken) || null;\n    },\n};\n//# sourceMappingURL=appServiceMsi2017.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nconst msiName = \"ManagedIdentityCredential - CloudShellMSI\";\nexport const logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId, resourceId) {\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const body = {\n        resource,\n    };\n    if (clientId) {\n        body.client_id = clientId;\n    }\n    if (resourceId) {\n        body.msi_res_id = resourceId;\n    }\n    // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n    if (!process.env.MSI_ENDPOINT) {\n        throw new Error(`${msiName}: Missing environment variable: MSI_ENDPOINT`);\n    }\n    const params = new URLSearchParams(body);\n    return {\n        url: process.env.MSI_ENDPOINT,\n        method: \"POST\",\n        body: params.toString(),\n        headers: createHttpHeaders({\n            Accept: \"application/json\",\n            Metadata: \"true\",\n            \"Content-Type\": \"application/x-www-form-urlencoded\",\n        }),\n    };\n}\n/**\n * Defines how to determine whether the Azure Cloud Shell MSI is available, and also how to retrieve a token from the Azure Cloud Shell MSI.\n * Since Azure Managed Identities aren't available in the Azure Cloud Shell, we log a warning for users that try to access cloud shell using user assigned identity.\n */\nexport const cloudShellMsi = {\n    name: \"cloudShellMsi\",\n    async isAvailable({ scopes }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        const result = Boolean(process.env.MSI_ENDPOINT);\n        if (!result) {\n            logger.info(`${msiName}: Unavailable. The environment variable MSI_ENDPOINT is needed.`);\n        }\n        return result;\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        const { identityClient, scopes, clientId, resourceId } = configuration;\n        if (clientId) {\n            logger.warning(`${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`);\n        }\n        if (resourceId) {\n            logger.warning(`${msiName}: user defined managed Identity by resource Id not supported. The argument resourceId might be ignored by the service.`);\n        }\n        logger.info(`${msiName}: Using the endpoint coming form the environment variable MSI_ENDPOINT = ${process.env.MSI_ENDPOINT}.`);\n        const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { \n            // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n            allowInsecureConnection: true }));\n        const tokenResponse = await identityClient.sendTokenRequest(request);\n        return (tokenResponse && tokenResponse.accessToken) || null;\n    },\n};\n//# sourceMappingURL=cloudShellMsi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay, isError } from \"@azure/core-util\";\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { AuthenticationError } from \"../../errors\";\nimport { tracingClient } from \"../../util/tracing\";\nimport { imdsApiVersion, imdsEndpointPath, imdsHost } from \"./constants\";\nimport { mapScopesToResource } from \"./utils\";\nconst msiName = \"ManagedIdentityCredential - IMDS\";\nconst logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId, resourceId, options) {\n    var _a;\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const { skipQuery, skipMetadataHeader } = options || {};\n    let query = \"\";\n    // Pod Identity will try to process this request even if the Metadata header is missing.\n    // We can exclude the request query to ensure no IMDS endpoint tries to process the ping request.\n    if (!skipQuery) {\n        const queryParameters = {\n            resource,\n            \"api-version\": imdsApiVersion,\n        };\n        if (clientId) {\n            queryParameters.client_id = clientId;\n        }\n        if (resourceId) {\n            queryParameters.msi_res_id = resourceId;\n        }\n        const params = new URLSearchParams(queryParameters);\n        query = `?${params.toString()}`;\n    }\n    const url = new URL(imdsEndpointPath, (_a = process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) !== null && _a !== void 0 ? _a : imdsHost);\n    const rawHeaders = {\n        Accept: \"application/json\",\n        Metadata: \"true\",\n    };\n    // Remove the Metadata header to invoke a request error from some IMDS endpoints.\n    if (skipMetadataHeader) {\n        delete rawHeaders.Metadata;\n    }\n    return {\n        // In this case, the `?` should be added in the \"query\" variable `skipQuery` is not set.\n        url: `${url}${query}`,\n        method: \"GET\",\n        headers: createHttpHeaders(rawHeaders),\n    };\n}\n// 800ms -> 1600ms -> 3200ms\nexport const imdsMsiRetryConfig = {\n    maxRetries: 3,\n    startDelayInMs: 800,\n    intervalIncrement: 2,\n};\n/**\n * Defines how to determine whether the Azure IMDS MSI is available, and also how to retrieve a token from the Azure IMDS MSI.\n */\nexport const imdsMsi = {\n    name: \"imdsMsi\",\n    async isAvailable({ scopes, identityClient, clientId, resourceId, getTokenOptions = {}, }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        // if the PodIdentityEndpoint environment variable was set no need to probe the endpoint, it can be assumed to exist\n        if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n            return true;\n        }\n        if (!identityClient) {\n            throw new Error(\"Missing IdentityClient\");\n        }\n        const requestOptions = prepareRequestOptions(resource, clientId, resourceId, {\n            skipMetadataHeader: true,\n            skipQuery: true,\n        });\n        return tracingClient.withSpan(\"ManagedIdentityCredential-pingImdsEndpoint\", getTokenOptions, async (options) => {\n            var _a, _b;\n            requestOptions.tracingOptions = options.tracingOptions;\n            // Create a request with a timeout since we expect that\n            // not having a \"Metadata\" header should cause an error to be\n            // returned quickly from the endpoint, proving its availability.\n            const request = createPipelineRequest(requestOptions);\n            // Default to 1000 if the default of 0 is used.\n            // Negative values can still be used to disable the timeout.\n            request.timeout = ((_a = options.requestOptions) === null || _a === void 0 ? void 0 : _a.timeout) || 1000;\n            // This MSI uses the imdsEndpoint to get the token, which only uses http://\n            request.allowInsecureConnection = true;\n            let response;\n            try {\n                logger.info(`${msiName}: Pinging the Azure IMDS endpoint`);\n                response = await identityClient.sendRequest(request);\n            }\n            catch (err) {\n                // If the request failed, or Node.js was unable to establish a connection,\n                // or the host was down, we'll assume the IMDS endpoint isn't available.\n                if (isError(err)) {\n                    logger.verbose(`${msiName}: Caught error ${err.name}: ${err.message}`);\n                }\n                // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\"\n                // rather than just timing out, as expected.\n                logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n                return false;\n            }\n            if (response.status === 403) {\n                if ((_b = response.bodyAsText) === null || _b === void 0 ? void 0 : _b.includes(\"A socket operation was attempted to an unreachable network\")) {\n                    logger.info(`${msiName}: The Azure IMDS endpoint is unavailable`);\n                    logger.info(`${msiName}: ${response.bodyAsText}`);\n                    return false;\n                }\n            }\n            // If we received any response, the endpoint is available\n            logger.info(`${msiName}: The Azure IMDS endpoint is available`);\n            return true;\n        });\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        const { identityClient, scopes, clientId, resourceId } = configuration;\n        if (process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST) {\n            logger.info(`${msiName}: Using the Azure IMDS endpoint coming from the environment variable AZURE_POD_IDENTITY_AUTHORITY_HOST=${process.env.AZURE_POD_IDENTITY_AUTHORITY_HOST}.`);\n        }\n        else {\n            logger.info(`${msiName}: Using the default Azure IMDS endpoint ${imdsHost}.`);\n        }\n        let nextDelayInMs = imdsMsiRetryConfig.startDelayInMs;\n        for (let retries = 0; retries < imdsMsiRetryConfig.maxRetries; retries++) {\n            try {\n                const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { allowInsecureConnection: true }));\n                const tokenResponse = await identityClient.sendTokenRequest(request);\n                return (tokenResponse && tokenResponse.accessToken) || null;\n            }\n            catch (error) {\n                if (error.statusCode === 404) {\n                    await delay(nextDelayInMs);\n                    nextDelayInMs *= imdsMsiRetryConfig.intervalIncrement;\n                    continue;\n                }\n                throw error;\n            }\n        }\n        throw new AuthenticationError(404, `${msiName}: Failed to retrieve IMDS token after ${imdsMsiRetryConfig.maxRetries} retries.`);\n    },\n};\n//# sourceMappingURL=imdsMsi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { readFile } from \"fs\";\nimport { AuthenticationError } from \"../../errors\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nimport { azureArcAPIVersion } from \"./constants\";\nconst msiName = \"ManagedIdentityCredential - Azure Arc MSI\";\nconst logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId, resourceId) {\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const queryParameters = {\n        resource,\n        \"api-version\": azureArcAPIVersion,\n    };\n    if (clientId) {\n        queryParameters.client_id = clientId;\n    }\n    if (resourceId) {\n        queryParameters.msi_res_id = resourceId;\n    }\n    // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n    if (!process.env.IDENTITY_ENDPOINT) {\n        throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`);\n    }\n    const query = new URLSearchParams(queryParameters);\n    return createPipelineRequest({\n        // Should be similar to: http://localhost:40342/metadata/identity/oauth2/token\n        url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n        method: \"GET\",\n        headers: createHttpHeaders({\n            Accept: \"application/json\",\n            Metadata: \"true\",\n        }),\n    });\n}\n/**\n * Retrieves the file contents at the given path using promises.\n * Useful since `fs`'s readFileSync locks the thread, and to avoid extra dependencies.\n */\nfunction readFileAsync(path, options) {\n    return new Promise((resolve, reject) => readFile(path, options, (err, data) => {\n        if (err) {\n            reject(err);\n        }\n        resolve(data);\n    }));\n}\n/**\n * Does a request to the authentication provider that results in a file path.\n */\nasync function filePathRequest(identityClient, requestPrepareOptions) {\n    const response = await identityClient.sendRequest(createPipelineRequest(requestPrepareOptions));\n    if (response.status !== 401) {\n        let message = \"\";\n        if (response.bodyAsText) {\n            message = ` Response: ${response.bodyAsText}`;\n        }\n        throw new AuthenticationError(response.status, `${msiName}: To authenticate with Azure Arc MSI, status code 401 is expected on the first request. ${message}`);\n    }\n    const authHeader = response.headers.get(\"www-authenticate\") || \"\";\n    try {\n        return authHeader.split(\"=\").slice(1)[0];\n    }\n    catch (e) {\n        throw Error(`Invalid www-authenticate header format: ${authHeader}`);\n    }\n}\n/**\n * Defines how to determine whether the Azure Arc MSI is available, and also how to retrieve a token from the Azure Arc MSI.\n */\nexport const arcMsi = {\n    name: \"arc\",\n    async isAvailable({ scopes }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        const result = Boolean(process.env.IMDS_ENDPOINT && process.env.IDENTITY_ENDPOINT);\n        if (!result) {\n            logger.info(`${msiName}: The environment variables needed are: IMDS_ENDPOINT and IDENTITY_ENDPOINT`);\n        }\n        return result;\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        var _a;\n        const { identityClient, scopes, clientId, resourceId } = configuration;\n        if (clientId) {\n            logger.warning(`${msiName}: user-assigned identities not supported. The argument clientId might be ignored by the service.`);\n        }\n        if (resourceId) {\n            logger.warning(`${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId will be ignored.`);\n        }\n        logger.info(`${msiName}: Authenticating.`);\n        const requestOptions = Object.assign(Object.assign({ disableJsonStringifyOnBody: true, deserializationMapper: undefined, abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { allowInsecureConnection: true });\n        const filePath = await filePathRequest(identityClient, requestOptions);\n        if (!filePath) {\n            throw new Error(`${msiName}: Failed to find the token file.`);\n        }\n        const key = await readFileAsync(filePath, { encoding: \"utf-8\" });\n        (_a = requestOptions.headers) === null || _a === void 0 ? void 0 : _a.set(\"Authorization\", `Basic ${key}`);\n        const request = createPipelineRequest(Object.assign(Object.assign({}, requestOptions), { \n            // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n            allowInsecureConnection: true }));\n        const tokenResponse = await identityClient.sendTokenRequest(request);\n        return (tokenResponse && tokenResponse.accessToken) || null;\n    },\n};\n//# sourceMappingURL=arcMsi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\nimport { isError } from \"@azure/core-util\";\n/**\n * MSAL client assertion client. Calls to MSAL's confidential application's `acquireTokenByClientCredential` during `doGetToken`.\n * @internal\n */\nexport class MsalClientAssertion extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.requiresConfidential = true;\n        this.getAssertion = options.getAssertion;\n    }\n    async doGetToken(scopes, options = {}) {\n        try {\n            const assertion = await this.getAssertion();\n            const result = await this.getApp(\"confidential\", options.enableCae).acquireTokenByClientCredential({\n                scopes,\n                correlationId: options.correlationId,\n                azureRegion: this.azureRegion,\n                authority: options.authority,\n                claims: options.claims,\n                clientAssertion: assertion,\n            });\n            // The Client Credential flow does not return an account,\n            // so each time getToken gets called, we will have to acquire a new token through the service.\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (err) {\n            let err2 = err;\n            if (err === null || err === undefined) {\n                err2 = new Error(JSON.stringify(err));\n            }\n            else {\n                err2 = isError(err) ? err : new Error(String(err));\n            }\n            throw this.handleError(scopes, err2, options);\n        }\n    }\n}\n//# sourceMappingURL=msalClientAssertion.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalClientAssertion } from \"../msal/nodeFlows/msalClientAssertion\";\nimport { credentialLogger } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"ClientAssertionCredential\");\n/**\n * Authenticates a service principal with a JWT assertion.\n */\nexport class ClientAssertionCredential {\n    /**\n     * Creates an instance of the ClientAssertionCredential with the details\n     * needed to authenticate against Azure Active Directory with a client\n     * assertion provided by the developer through the `getAssertion` function parameter.\n     *\n     * @param tenantId - The Azure Active Directory tenant (directory) ID.\n     * @param clientId - The client (application) ID of an App Registration in the tenant.\n     * @param getAssertion - A function that retrieves the assertion for the credential to use.\n     * @param options - Options for configuring the client which makes the authentication request.\n     */\n    constructor(tenantId, clientId, getAssertion, options = {}) {\n        if (!tenantId || !clientId || !getAssertion) {\n            throw new Error(\"ClientAssertionCredential: tenantId, clientId, and clientAssertion are required parameters.\");\n        }\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.clientId = clientId;\n        this.options = options;\n        this.msalFlow = new MsalClientAssertion(Object.assign(Object.assign({}, options), { logger, clientId: this.clientId, tenantId: this.tenantId, tokenCredentialOptions: this.options, getAssertion }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n            return this.msalFlow.getToken(arrayScopes, newOptions);\n        });\n    }\n}\n//# sourceMappingURL=clientAssertionCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ClientAssertionCredential } from \"./clientAssertionCredential\";\nimport { readFile } from \"fs/promises\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, processEnvVars } from \"../util/logging\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nconst credentialName = \"WorkloadIdentityCredential\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const SupportedWorkloadEnvironmentVariables = [\n    \"AZURE_TENANT_ID\",\n    \"AZURE_CLIENT_ID\",\n    \"AZURE_FEDERATED_TOKEN_FILE\",\n];\nconst logger = credentialLogger(credentialName);\n/**\n * Workload Identity authentication is a feature in Azure that allows applications running on virtual machines (VMs)\n * to access other Azure resources without the need for a service principal or managed identity. With Workload Identity\n * authentication, applications authenticate themselves using their own identity, rather than using a shared service\n * principal or managed identity. Under the hood, Workload Identity authentication uses the concept of Service Account\n * Credentials (SACs), which are automatically created by Azure and stored securely in the VM. By using Workload\n * Identity authentication, you can avoid the need to manage and rotate service principals or managed identities for\n * each application on each VM. Additionally, because SACs are created automatically and managed by Azure, you don't\n * need to worry about storing and securing sensitive credentials themselves.\n * The WorkloadIdentityCredential supports Azure workload identity authentication on Azure Kubernetes and acquires\n * a token using the SACs available in the Azure Kubernetes environment.\n * Refer to <a href=\"https://learn.microsoft.com/azure/aks/workload-identity-overview\">Azure Active Directory\n * Workload Identity</a> for more information.\n */\nexport class WorkloadIdentityCredential {\n    /**\n     * WorkloadIdentityCredential supports Azure workload identity on Kubernetes.\n     *\n     * @param options - The identity client options to use for authentication.\n     */\n    constructor(options) {\n        this.azureFederatedTokenFileContent = undefined;\n        this.cacheDate = undefined;\n        // Logging environment variables for error details\n        const assignedEnv = processEnvVars(SupportedWorkloadEnvironmentVariables).assigned.join(\", \");\n        logger.info(`Found the following environment variables: ${assignedEnv}`);\n        const workloadIdentityCredentialOptions = options !== null && options !== void 0 ? options : {};\n        const tenantId = workloadIdentityCredentialOptions.tenantId || process.env.AZURE_TENANT_ID;\n        const clientId = workloadIdentityCredentialOptions.clientId || process.env.AZURE_CLIENT_ID;\n        this.federatedTokenFilePath =\n            workloadIdentityCredentialOptions.tokenFilePath || process.env.AZURE_FEDERATED_TOKEN_FILE;\n        if (tenantId) {\n            checkTenantId(logger, tenantId);\n        }\n        if (clientId && tenantId && this.federatedTokenFilePath) {\n            logger.info(`Invoking ClientAssertionCredential with tenant ID: ${tenantId}, clientId: ${workloadIdentityCredentialOptions.clientId} and federated token path: [REDACTED]`);\n            this.client = new ClientAssertionCredential(tenantId, clientId, this.readFileContents.bind(this), options);\n        }\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options) {\n        if (!this.client) {\n            const errorMessage = `${credentialName}: is unavailable. tenantId, clientId, and federatedTokenFilePath are required parameters. \n      In DefaultAzureCredential and ManagedIdentityCredential, these can be provided as environment variables - \n      \"AZURE_TENANT_ID\",\n      \"AZURE_CLIENT_ID\",\n      \"AZURE_FEDERATED_TOKEN_FILE\". See the troubleshooting guide for more information: https://aka.ms/azsdk/js/identity/workloadidentitycredential/troubleshoot  `;\n            logger.info(errorMessage);\n            throw new CredentialUnavailableError(errorMessage);\n        }\n        logger.info(\"Invoking getToken() of Client Assertion Credential\");\n        return this.client.getToken(scopes, options);\n    }\n    async readFileContents() {\n        // Cached assertions expire after 5 minutes\n        if (this.cacheDate !== undefined && Date.now() - this.cacheDate >= 1000 * 60 * 5) {\n            this.azureFederatedTokenFileContent = undefined;\n        }\n        if (!this.federatedTokenFilePath) {\n            throw new CredentialUnavailableError(`${credentialName}: is unavailable. Invalid file path provided ${this.federatedTokenFilePath}.`);\n        }\n        if (!this.azureFederatedTokenFileContent) {\n            const file = await readFile(this.federatedTokenFilePath, \"utf8\");\n            const value = file.trim();\n            if (!value) {\n                throw new CredentialUnavailableError(`${credentialName}: is unavailable. No content on the file ${this.federatedTokenFilePath}.`);\n            }\n            else {\n                this.azureFederatedTokenFileContent = value;\n                this.cacheDate = Date.now();\n            }\n        }\n        return this.azureFederatedTokenFileContent;\n    }\n}\n//# sourceMappingURL=workloadIdentityCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { WorkloadIdentityCredential } from \"../workloadIdentityCredential\";\nimport { credentialLogger } from \"../../util/logging\";\nconst msiName = \"ManagedIdentityCredential - Token Exchange\";\nconst logger = credentialLogger(msiName);\n/**\n * Defines how to determine whether the token exchange MSI is available, and also how to retrieve a token from the token exchange MSI.\n */\nexport function tokenExchangeMsi() {\n    return {\n        name: \"tokenExchangeMsi\",\n        async isAvailable({ clientId }) {\n            const env = process.env;\n            const result = Boolean((clientId || env.AZURE_CLIENT_ID) &&\n                env.AZURE_TENANT_ID &&\n                process.env.AZURE_FEDERATED_TOKEN_FILE);\n            if (!result) {\n                logger.info(`${msiName}: Unavailable. The environment variables needed are: AZURE_CLIENT_ID (or the client ID sent through the parameters), AZURE_TENANT_ID and AZURE_FEDERATED_TOKEN_FILE`);\n            }\n            return result;\n        },\n        async getToken(configuration, getTokenOptions = {}) {\n            const { scopes, clientId } = configuration;\n            const identityClientTokenCredentialOptions = {};\n            const workloadIdentityCredential = new WorkloadIdentityCredential(Object.assign(Object.assign({ clientId, tenantId: process.env.AZURE_TENANT_ID, tokenFilePath: process.env.AZURE_FEDERATED_TOKEN_FILE }, identityClientTokenCredentialOptions), { disableInstanceDiscovery: true }));\n            const token = await workloadIdentityCredential.getToken(scopes, getTokenOptions);\n            return token;\n        },\n    };\n}\n//# sourceMappingURL=tokenExchangeMsi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport https from \"https\";\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nimport { azureFabricVersion } from \"./constants\";\n// This MSI can be easily tested by deploying a container to Azure Service Fabric with the Dockerfile:\n//\n//   FROM node:12\n//   RUN wget https://host.any/path/bash.sh\n//   CMD [\"bash\", \"bash.sh\"]\n//\n// Where the bash script contains:\n//\n//   curl --insecure $IDENTITY_ENDPOINT'?api-version=2019-07-01-preview&resource=https://vault.azure.net/' -H \"Secret: $IDENTITY_HEADER\"\n//\nconst msiName = \"ManagedIdentityCredential - Fabric MSI\";\nconst logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId, resourceId) {\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const queryParameters = {\n        resource,\n        \"api-version\": azureFabricVersion,\n    };\n    if (clientId) {\n        queryParameters.client_id = clientId;\n    }\n    if (resourceId) {\n        queryParameters.msi_res_id = resourceId;\n    }\n    const query = new URLSearchParams(queryParameters);\n    // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n    if (!process.env.IDENTITY_ENDPOINT) {\n        throw new Error(\"Missing environment variable: IDENTITY_ENDPOINT\");\n    }\n    if (!process.env.IDENTITY_HEADER) {\n        throw new Error(\"Missing environment variable: IDENTITY_HEADER\");\n    }\n    return {\n        url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n        method: \"GET\",\n        headers: createHttpHeaders({\n            Accept: \"application/json\",\n            secret: process.env.IDENTITY_HEADER,\n        }),\n    };\n}\n/**\n * Defines how to determine whether the Azure Service Fabric MSI is available, and also how to retrieve a token from the Azure Service Fabric MSI.\n */\nexport const fabricMsi = {\n    name: \"fabricMsi\",\n    async isAvailable({ scopes }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        const env = process.env;\n        const result = Boolean(env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER && env.IDENTITY_SERVER_THUMBPRINT);\n        if (!result) {\n            logger.info(`${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT, IDENTITY_HEADER and IDENTITY_SERVER_THUMBPRINT`);\n        }\n        return result;\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        const { scopes, identityClient, clientId, resourceId } = configuration;\n        if (resourceId) {\n            logger.warning(`${msiName}: user defined managed Identity by resource Id is not supported. Argument resourceId might be ignored by the service.`);\n        }\n        logger.info([\n            `${msiName}:`,\n            \"Using the endpoint and the secret coming from the environment variables:\",\n            `IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT},`,\n            \"IDENTITY_HEADER=[REDACTED] and\",\n            \"IDENTITY_SERVER_THUMBPRINT=[REDACTED].\",\n        ].join(\" \"));\n        const request = createPipelineRequest(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)));\n        request.agent = new https.Agent({\n            // This is necessary because Service Fabric provides a self-signed certificate.\n            // The alternative path is to verify the certificate using the IDENTITY_SERVER_THUMBPRINT env variable.\n            rejectUnauthorized: false,\n        });\n        const tokenResponse = await identityClient.sendTokenRequest(request);\n        return (tokenResponse && tokenResponse.accessToken) || null;\n    },\n};\n//# sourceMappingURL=fabricMsi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { credentialLogger } from \"../../util/logging\";\nimport { mapScopesToResource } from \"./utils\";\nconst msiName = \"ManagedIdentityCredential - AppServiceMSI 2019\";\nconst logger = credentialLogger(msiName);\n/**\n * Generates the options used on the request for an access token.\n */\nfunction prepareRequestOptions(scopes, clientId, resourceId) {\n    const resource = mapScopesToResource(scopes);\n    if (!resource) {\n        throw new Error(`${msiName}: Multiple scopes are not supported.`);\n    }\n    const queryParameters = {\n        resource,\n        \"api-version\": \"2019-08-01\",\n    };\n    if (clientId) {\n        queryParameters.client_id = clientId;\n    }\n    if (resourceId) {\n        queryParameters.mi_res_id = resourceId;\n    }\n    const query = new URLSearchParams(queryParameters);\n    // This error should not bubble up, since we verify that this environment variable is defined in the isAvailable() method defined below.\n    if (!process.env.IDENTITY_ENDPOINT) {\n        throw new Error(`${msiName}: Missing environment variable: IDENTITY_ENDPOINT`);\n    }\n    if (!process.env.IDENTITY_HEADER) {\n        throw new Error(`${msiName}: Missing environment variable: IDENTITY_HEADER`);\n    }\n    return {\n        url: `${process.env.IDENTITY_ENDPOINT}?${query.toString()}`,\n        method: \"GET\",\n        headers: createHttpHeaders({\n            Accept: \"application/json\",\n            \"X-IDENTITY-HEADER\": process.env.IDENTITY_HEADER,\n        }),\n    };\n}\n/**\n * Defines how to determine whether the Azure App Service MSI is available, and also how to retrieve a token from the Azure App Service MSI.\n */\nexport const appServiceMsi2019 = {\n    name: \"appServiceMsi2019\",\n    async isAvailable({ scopes }) {\n        const resource = mapScopesToResource(scopes);\n        if (!resource) {\n            logger.info(`${msiName}: Unavailable. Multiple scopes are not supported.`);\n            return false;\n        }\n        const env = process.env;\n        const result = Boolean(env.IDENTITY_ENDPOINT && env.IDENTITY_HEADER);\n        if (!result) {\n            logger.info(`${msiName}: Unavailable. The environment variables needed are: IDENTITY_ENDPOINT and IDENTITY_HEADER.`);\n        }\n        return result;\n    },\n    async getToken(configuration, getTokenOptions = {}) {\n        const { identityClient, scopes, clientId, resourceId } = configuration;\n        logger.info(`${msiName}: Using the endpoint and the secret coming form the environment variables: IDENTITY_ENDPOINT=${process.env.IDENTITY_ENDPOINT} and IDENTITY_HEADER=[REDACTED].`);\n        const request = createPipelineRequest(Object.assign(Object.assign({ abortSignal: getTokenOptions.abortSignal }, prepareRequestOptions(scopes, clientId, resourceId)), { \n            // Generally, MSI endpoints use the HTTP protocol, without transport layer security (TLS).\n            allowInsecureConnection: true }));\n        const tokenResponse = await identityClient.sendTokenRequest(request);\n        return (tokenResponse && tokenResponse.accessToken) || null;\n    },\n};\n//# sourceMappingURL=appServiceMsi2019.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { IdentityClient } from \"../../client/identityClient\";\nimport { AuthenticationError, AuthenticationRequiredError, CredentialUnavailableError, } from \"../../errors\";\nimport { credentialLogger, formatError, formatSuccess } from \"../../util/logging\";\nimport { appServiceMsi2017 } from \"./appServiceMsi2017\";\nimport { tracingClient } from \"../../util/tracing\";\nimport { cloudShellMsi } from \"./cloudShellMsi\";\nimport { imdsMsi } from \"./imdsMsi\";\nimport { arcMsi } from \"./arcMsi\";\nimport { tokenExchangeMsi } from \"./tokenExchangeMsi\";\nimport { fabricMsi } from \"./fabricMsi\";\nimport { appServiceMsi2019 } from \"./appServiceMsi2019\";\nimport { ConfidentialClientApplication } from \"@azure/msal-node\";\nimport { DeveloperSignOnClientId } from \"../../constants\";\nimport { getMSALLogLevel } from \"../../msal/utils\";\nimport { getLogLevel } from \"@azure/logger\";\nconst logger = credentialLogger(\"ManagedIdentityCredential\");\n/**\n * Attempts authentication using a managed identity available at the deployment environment.\n * This authentication type works in Azure VMs, App Service instances, Azure Functions applications,\n * Azure Kubernetes Services, Azure Service Fabric instances and inside of the Azure Cloud Shell.\n *\n * More information about configuring managed identities can be found here:\n * https://learn.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\n */\nexport class ManagedIdentityCredential {\n    /**\n     * @internal\n     * @hidden\n     */\n    constructor(clientIdOrOptions, options) {\n        var _a;\n        this.isEndpointUnavailable = null;\n        this.isAppTokenProviderInitialized = false;\n        let _options;\n        if (typeof clientIdOrOptions === \"string\") {\n            this.clientId = clientIdOrOptions;\n            _options = options;\n        }\n        else {\n            this.clientId = clientIdOrOptions === null || clientIdOrOptions === void 0 ? void 0 : clientIdOrOptions.clientId;\n            _options = clientIdOrOptions;\n        }\n        this.resourceId = _options === null || _options === void 0 ? void 0 : _options.resourceId;\n        // For JavaScript users.\n        if (this.clientId && this.resourceId) {\n            throw new Error(`${ManagedIdentityCredential.name} - Client Id and Resource Id can't be provided at the same time.`);\n        }\n        this.identityClient = new IdentityClient(_options);\n        this.isAvailableIdentityClient = new IdentityClient(Object.assign(Object.assign({}, _options), { retryOptions: {\n                maxRetries: 0,\n            } }));\n        /**  authority host validation and metadata discovery to be skipped in managed identity\n         * since this wasn't done previously before adding token cache support\n         */\n        this.confidentialApp = new ConfidentialClientApplication({\n            auth: {\n                authority: \"https://login.microsoftonline.com/managed_identity\",\n                clientId: (_a = this.clientId) !== null && _a !== void 0 ? _a : DeveloperSignOnClientId,\n                clientSecret: \"dummy-secret\",\n                cloudDiscoveryMetadata: '{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}',\n                authorityMetadata: '{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"}',\n                clientCapabilities: [],\n            },\n            system: {\n                loggerOptions: {\n                    logLevel: getMSALLogLevel(getLogLevel()),\n                },\n            },\n        });\n    }\n    async cachedAvailableMSI(scopes, getTokenOptions) {\n        if (this.cachedMSI) {\n            return this.cachedMSI;\n        }\n        const MSIs = [\n            arcMsi,\n            fabricMsi,\n            appServiceMsi2019,\n            appServiceMsi2017,\n            cloudShellMsi,\n            tokenExchangeMsi(),\n            imdsMsi,\n        ];\n        for (const msi of MSIs) {\n            if (await msi.isAvailable({\n                scopes,\n                identityClient: this.isAvailableIdentityClient,\n                clientId: this.clientId,\n                resourceId: this.resourceId,\n                getTokenOptions,\n            })) {\n                this.cachedMSI = msi;\n                return msi;\n            }\n        }\n        throw new CredentialUnavailableError(`${ManagedIdentityCredential.name} - No MSI credential available`);\n    }\n    async authenticateManagedIdentity(scopes, getTokenOptions) {\n        const { span, updatedOptions } = tracingClient.startSpan(`${ManagedIdentityCredential.name}.authenticateManagedIdentity`, getTokenOptions);\n        try {\n            // Determining the available MSI, and avoiding checking for other MSIs while the program is running.\n            const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions);\n            return availableMSI.getToken({\n                identityClient: this.identityClient,\n                scopes,\n                clientId: this.clientId,\n                resourceId: this.resourceId,\n            }, updatedOptions);\n        }\n        catch (err) {\n            span.setStatus({\n                status: \"error\",\n                error: err,\n            });\n            throw err;\n        }\n        finally {\n            span.end();\n        }\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     * If an unexpected error occurs, an {@link AuthenticationError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options) {\n        let result = null;\n        const { span, updatedOptions } = tracingClient.startSpan(`${ManagedIdentityCredential.name}.getToken`, options);\n        try {\n            // isEndpointAvailable can be true, false, or null,\n            // If it's null, it means we don't yet know whether\n            // the endpoint is available and need to check for it.\n            if (this.isEndpointUnavailable !== true) {\n                const availableMSI = await this.cachedAvailableMSI(scopes, updatedOptions);\n                if (availableMSI.name === \"tokenExchangeMsi\") {\n                    result = await this.authenticateManagedIdentity(scopes, updatedOptions);\n                }\n                else {\n                    const appTokenParameters = {\n                        correlationId: this.identityClient.getCorrelationId(),\n                        tenantId: (options === null || options === void 0 ? void 0 : options.tenantId) || \"managed_identity\",\n                        scopes: Array.isArray(scopes) ? scopes : [scopes],\n                        claims: options === null || options === void 0 ? void 0 : options.claims,\n                    };\n                    // Added a check to see if SetAppTokenProvider was already defined.\n                    this.initializeSetAppTokenProvider();\n                    const authenticationResult = await this.confidentialApp.acquireTokenByClientCredential(Object.assign({}, appTokenParameters));\n                    result = this.handleResult(scopes, authenticationResult || undefined);\n                }\n                if (result === null) {\n                    // If authenticateManagedIdentity returns null,\n                    // it means no MSI endpoints are available.\n                    // If so, we avoid trying to reach to them in future requests.\n                    this.isEndpointUnavailable = true;\n                    // It also means that the endpoint answered with either 200 or 201 (see the sendTokenRequest method),\n                    // yet we had no access token. For this reason, we'll throw once with a specific message:\n                    const error = new CredentialUnavailableError(\"The managed identity endpoint was reached, yet no tokens were received.\");\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n                // Since `authenticateManagedIdentity` didn't throw, and the result was not null,\n                // We will assume that this endpoint is reachable from this point forward,\n                // and avoid pinging again to it.\n                this.isEndpointUnavailable = false;\n            }\n            else {\n                // We've previously determined that the endpoint was unavailable,\n                // either because it was unreachable or permanently unable to authenticate.\n                const error = new CredentialUnavailableError(\"The managed identity endpoint is not currently available\");\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n            logger.getToken.info(formatSuccess(scopes));\n            return result;\n        }\n        catch (err) {\n            // CredentialUnavailable errors are expected to reach here.\n            // We intend them to bubble up, so that DefaultAzureCredential can catch them.\n            if (err.name === \"AuthenticationRequiredError\") {\n                throw err;\n            }\n            // Expected errors to reach this point:\n            // - Errors coming from a method unexpectedly breaking.\n            // - When identityClient.sendTokenRequest throws, in which case\n            //   if the status code was 400, it means that the endpoint is working,\n            //   but no identity is available.\n            span.setStatus({\n                status: \"error\",\n                error: err,\n            });\n            // If either the network is unreachable,\n            // we can safely assume the credential is unavailable.\n            if (err.code === \"ENETUNREACH\") {\n                const error = new CredentialUnavailableError(`${ManagedIdentityCredential.name}: Unavailable. Network unreachable. Message: ${err.message}`);\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n            // If either the host was unreachable,\n            // we can safely assume the credential is unavailable.\n            if (err.code === \"EHOSTUNREACH\") {\n                const error = new CredentialUnavailableError(`${ManagedIdentityCredential.name}: Unavailable. No managed identity endpoint found. Message: ${err.message}`);\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n            // If err.statusCode has a value of 400, it comes from sendTokenRequest,\n            // and it means that the endpoint is working, but that no identity is available.\n            if (err.statusCode === 400) {\n                throw new CredentialUnavailableError(`${ManagedIdentityCredential.name}: The managed identity endpoint is indicating there's no available identity. Message: ${err.message}`);\n            }\n            // This is a special case for Docker Desktop which responds with a 403 with a message that contains \"A socket operation was attempted to an unreachable network\"\n            // rather than just timing out, as expected.\n            if (err.statusCode === 403 || err.code === 403) {\n                if (err.message.includes(\"A socket operation was attempted to an unreachable network\")) {\n                    const error = new CredentialUnavailableError(`${ManagedIdentityCredential.name}: Unavailable. Network unreachable. Message: ${err.message}`);\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n            }\n            // If the error has no status code, we can assume there was no available identity.\n            // This will throw silently during any ChainedTokenCredential.\n            if (err.statusCode === undefined) {\n                throw new CredentialUnavailableError(`${ManagedIdentityCredential.name}: Authentication failed. Message ${err.message}`);\n            }\n            // Any other error should break the chain.\n            throw new AuthenticationError(err.statusCode, {\n                error: `${ManagedIdentityCredential.name} authentication failed.`,\n                error_description: err.message,\n            });\n        }\n        finally {\n            // Finally is always called, both if we return and if we throw in the above try/catch.\n            span.end();\n        }\n    }\n    /**\n     * Handles the MSAL authentication result.\n     * If the result has an account, we update the local account reference.\n     * If the token received is invalid, an error will be thrown depending on what's missing.\n     */\n    handleResult(scopes, result, getTokenOptions) {\n        this.ensureValidMsalToken(scopes, result, getTokenOptions);\n        logger.getToken.info(formatSuccess(scopes));\n        return {\n            token: result.accessToken,\n            expiresOnTimestamp: result.expiresOn.getTime(),\n        };\n    }\n    /**\n     * Ensures the validity of the MSAL token\n     * @internal\n     */\n    ensureValidMsalToken(scopes, msalToken, getTokenOptions) {\n        const error = (message) => {\n            logger.getToken.info(message);\n            return new AuthenticationRequiredError({\n                scopes: Array.isArray(scopes) ? scopes : [scopes],\n                getTokenOptions,\n                message,\n            });\n        };\n        if (!msalToken) {\n            throw error(\"No response\");\n        }\n        if (!msalToken.expiresOn) {\n            throw error(`Response had no \"expiresOn\" property.`);\n        }\n        if (!msalToken.accessToken) {\n            throw error(`Response had no \"accessToken\" property.`);\n        }\n    }\n    initializeSetAppTokenProvider() {\n        if (!this.isAppTokenProviderInitialized) {\n            this.confidentialApp.SetAppTokenProvider(async (appTokenProviderParameters) => {\n                logger.info(`SetAppTokenProvider invoked with parameters- ${JSON.stringify(appTokenProviderParameters)}`);\n                const getTokenOptions = Object.assign({}, appTokenProviderParameters);\n                logger.info(`authenticateManagedIdentity invoked with scopes- ${JSON.stringify(appTokenProviderParameters.scopes)} and getTokenOptions - ${JSON.stringify(getTokenOptions)}`);\n                const resultToken = await this.authenticateManagedIdentity(appTokenProviderParameters.scopes, getTokenOptions);\n                if (resultToken) {\n                    logger.info(`SetAppTokenProvider will save the token in cache`);\n                    const expiresInSeconds = (resultToken === null || resultToken === void 0 ? void 0 : resultToken.expiresOnTimestamp)\n                        ? Math.floor((resultToken.expiresOnTimestamp - Date.now()) / 1000)\n                        : 0;\n                    return {\n                        accessToken: resultToken === null || resultToken === void 0 ? void 0 : resultToken.token,\n                        expiresInSeconds,\n                    };\n                }\n                else {\n                    logger.info(`SetAppTokenProvider token has \"no_access_token_returned\" as the saved token`);\n                    return {\n                        accessToken: \"no_access_token_returned\",\n                        expiresInSeconds: 0,\n                    };\n                }\n            });\n            this.isAppTokenProviderInitialized = true;\n        }\n    }\n}\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { formatError } from \"./logging\";\n/**\n * Ensures the scopes value is an array.\n * @internal\n */\nexport function ensureScopes(scopes) {\n    return Array.isArray(scopes) ? scopes : [scopes];\n}\n/**\n * Throws if the received scope is not valid.\n * @internal\n */\nexport function ensureValidScopeForDevTimeCreds(scope, logger) {\n    if (!scope.match(/^[0-9a-zA-Z-_.:/]+$/)) {\n        const error = new Error(\"Invalid scope was specified by the user or calling client\");\n        logger.getToken.info(formatError(scope, error));\n        throw error;\n    }\n}\n/**\n * Returns the resource out of a scope.\n * @internal\n */\nexport function getScopeResource(scope) {\n    return scope.replace(/\\/.default$/, \"\");\n}\n//# sourceMappingURL=scopeUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\n/**\n * Mockable reference to the CLI credential cliCredentialFunctions\n * @internal\n */\nexport const cliCredentialInternals = {\n    /**\n     * @internal\n     */\n    getSafeWorkingDir() {\n        if (process.platform === \"win32\") {\n            if (!process.env.SystemRoot) {\n                throw new Error(\"Azure CLI credential expects a 'SystemRoot' environment variable\");\n            }\n            return process.env.SystemRoot;\n        }\n        else {\n            return \"/bin\";\n        }\n    },\n    /**\n     * Gets the access token from Azure CLI\n     * @param resource - The resource to use when getting the token\n     * @internal\n     */\n    async getAzureCliAccessToken(resource, tenantId, timeout) {\n        let tenantSection = [];\n        if (tenantId) {\n            tenantSection = [\"--tenant\", tenantId];\n        }\n        return new Promise((resolve, reject) => {\n            try {\n                child_process.execFile(\"az\", [\n                    \"account\",\n                    \"get-access-token\",\n                    \"--output\",\n                    \"json\",\n                    \"--resource\",\n                    resource,\n                    ...tenantSection,\n                ], { cwd: cliCredentialInternals.getSafeWorkingDir(), shell: true, timeout }, (error, stdout, stderr) => {\n                    resolve({ stdout: stdout, stderr: stderr, error });\n                });\n            }\n            catch (err) {\n                reject(err);\n            }\n        });\n    },\n};\nconst logger = credentialLogger(\"AzureCliCredential\");\n/**\n * This credential will use the currently logged-in user login information\n * via the Azure CLI ('az') commandline tool.\n * To do so, it will read the user access token and expire time\n * with Azure CLI command \"az account get-access-token\".\n */\nexport class AzureCliCredential {\n    /**\n     * Creates an instance of the {@link AzureCliCredential}.\n     *\n     * To use this credential, ensure that you have already logged\n     * in via the 'az' tool using the command \"az login\" from the commandline.\n     *\n     * @param options - Options, to optionally allow multi-tenant requests.\n     */\n    constructor(options) {\n        if (options === null || options === void 0 ? void 0 : options.tenantId) {\n            checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId);\n            this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;\n        }\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs;\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds);\n        if (tenantId) {\n            checkTenantId(logger, tenantId);\n        }\n        const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n        logger.getToken.info(`Using the scope ${scope}`);\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n            var _a, _b, _c, _d;\n            try {\n                ensureValidScopeForDevTimeCreds(scope, logger);\n                const resource = getScopeResource(scope);\n                const obj = await cliCredentialInternals.getAzureCliAccessToken(resource, tenantId, this.timeout);\n                const specificScope = (_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match(\"(.*)az login --scope(.*)\");\n                const isLoginError = ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match(\"(.*)az login(.*)\")) && !specificScope;\n                const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match(\"az:(.*)not found\")) || ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith(\"'az' is not recognized\"));\n                if (isNotInstallError) {\n                    const error = new CredentialUnavailableError(\"Azure CLI could not be found. Please visit https://aka.ms/azure-cli for installation instructions and then, once installed, authenticate to your Azure account using 'az login'.\");\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n                if (isLoginError) {\n                    const error = new CredentialUnavailableError(\"Please run 'az login' from a command prompt to authenticate before using this credential.\");\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n                try {\n                    const responseData = obj.stdout;\n                    const response = JSON.parse(responseData);\n                    logger.getToken.info(formatSuccess(scopes));\n                    const returnValue = {\n                        token: response.accessToken,\n                        expiresOnTimestamp: new Date(response.expiresOn).getTime(),\n                    };\n                    return returnValue;\n                }\n                catch (e) {\n                    if (obj.stderr) {\n                        throw new CredentialUnavailableError(obj.stderr);\n                    }\n                    throw e;\n                }\n            }\n            catch (err) {\n                const error = err.name === \"CredentialUnavailableError\"\n                    ? err\n                    : new CredentialUnavailableError(err.message || \"Unknown error while trying to retrieve the access token\");\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n        });\n    }\n}\n//# sourceMappingURL=azureCliCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as childProcess from \"child_process\";\n/**\n * Easy to mock childProcess utils.\n * @internal\n */\nexport const processUtils = {\n    /**\n     * Promisifying childProcess.execFile\n     * @internal\n     */\n    execFile(file, params, options) {\n        return new Promise((resolve, reject) => {\n            childProcess.execFile(file, params, options, (error, stdout, stderr) => {\n                if (Buffer.isBuffer(stdout)) {\n                    stdout = stdout.toString(\"utf8\");\n                }\n                if (Buffer.isBuffer(stderr)) {\n                    stderr = stderr.toString(\"utf8\");\n                }\n                if (stderr || error) {\n                    reject(stderr ? new Error(stderr) : error);\n                }\n                else {\n                    resolve(stdout);\n                }\n            });\n        });\n    },\n};\n//# sourceMappingURL=processUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { ensureValidScopeForDevTimeCreds, getScopeResource } from \"../util/scopeUtils\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { processUtils } from \"../util/processUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"AzurePowerShellCredential\");\nconst isWindows = process.platform === \"win32\";\n/**\n * Returns a platform-appropriate command name by appending \".exe\" on Windows.\n *\n * @internal\n */\nexport function formatCommand(commandName) {\n    if (isWindows) {\n        return `${commandName}.exe`;\n    }\n    else {\n        return commandName;\n    }\n}\n/**\n * Receives a list of commands to run, executes them, then returns the outputs.\n * If anything fails, an error is thrown.\n * @internal\n */\nasync function runCommands(commands, timeout) {\n    const results = [];\n    for (const command of commands) {\n        const [file, ...parameters] = command;\n        const result = (await processUtils.execFile(file, parameters, {\n            encoding: \"utf8\",\n            timeout,\n        }));\n        results.push(result);\n    }\n    return results;\n}\n/**\n * Known PowerShell errors\n * @internal\n */\nexport const powerShellErrors = {\n    login: \"Run Connect-AzAccount to login\",\n    installed: \"The specified module 'Az.Accounts' with version '2.2.0' was not loaded because no valid module file was found in any module directory\",\n};\n/**\n * Messages to use when throwing in this credential.\n * @internal\n */\nexport const powerShellPublicErrorMessages = {\n    login: \"Please run 'Connect-AzAccount' from PowerShell to authenticate before using this credential.\",\n    installed: `The 'Az.Account' module >= 2.2.0 is not installed. Install the Azure Az PowerShell module with: \"Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force\".`,\n    troubleshoot: `To troubleshoot, visit https://aka.ms/azsdk/js/identity/powershellcredential/troubleshoot.`,\n};\n// PowerShell Azure User not logged in error check.\nconst isLoginError = (err) => err.message.match(`(.*)${powerShellErrors.login}(.*)`);\n// Az Module not Installed in Azure PowerShell check.\nconst isNotInstalledError = (err) => err.message.match(powerShellErrors.installed);\n/**\n * The PowerShell commands to be tried, in order.\n *\n * @internal\n */\nexport const commandStack = [formatCommand(\"pwsh\")];\nif (isWindows) {\n    commandStack.push(formatCommand(\"powershell\"));\n}\n/**\n * This credential will use the currently logged-in user information from the\n * Azure PowerShell module. To do so, it will read the user access token and\n * expire time with Azure PowerShell command `Get-AzAccessToken -ResourceUrl {ResourceScope}`\n */\nexport class AzurePowerShellCredential {\n    /**\n     * Creates an instance of the {@link AzurePowerShellCredential}.\n     *\n     * To use this credential:\n     * - Install the Azure Az PowerShell module with:\n     *   `Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force`.\n     * - You have already logged in to Azure PowerShell using the command\n     * `Connect-AzAccount` from the command line.\n     *\n     * @param options - Options, to optionally allow multi-tenant requests.\n     */\n    constructor(options) {\n        if (options === null || options === void 0 ? void 0 : options.tenantId) {\n            checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId);\n            this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;\n        }\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs;\n    }\n    /**\n     * Gets the access token from Azure PowerShell\n     * @param resource - The resource to use when getting the token\n     */\n    async getAzurePowerShellAccessToken(resource, tenantId, timeout) {\n        // Clone the stack to avoid mutating it while iterating\n        for (const powerShellCommand of [...commandStack]) {\n            try {\n                await runCommands([[powerShellCommand, \"/?\"]], timeout);\n            }\n            catch (e) {\n                // Remove this credential from the original stack so that we don't try it again.\n                commandStack.shift();\n                continue;\n            }\n            let tenantSection = \"\";\n            if (tenantId) {\n                tenantSection = `-TenantId \"${tenantId}\"`;\n            }\n            const results = await runCommands([\n                [\n                    powerShellCommand,\n                    \"-NoProfile\",\n                    \"-NonInteractive\",\n                    \"-Command\",\n                    \"Import-Module Az.Accounts -MinimumVersion 2.2.0 -PassThru\",\n                ],\n                [\n                    powerShellCommand,\n                    \"-NoProfile\",\n                    \"-NonInteractive\",\n                    \"-Command\",\n                    `Get-AzAccessToken ${tenantSection} -ResourceUrl \"${resource}\" | ConvertTo-Json`,\n                ],\n            ]);\n            const result = results[1];\n            try {\n                return JSON.parse(result);\n            }\n            catch (e) {\n                throw new Error(`Unable to parse the output of PowerShell. Received output: ${result}`);\n            }\n        }\n        throw new Error(`Unable to execute PowerShell. Ensure that it is installed in your system`);\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If the authentication cannot be performed through PowerShell, a {@link CredentialUnavailableError} will be thrown.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n            const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds);\n            const scope = typeof scopes === \"string\" ? scopes : scopes[0];\n            if (tenantId) {\n                checkTenantId(logger, tenantId);\n            }\n            try {\n                ensureValidScopeForDevTimeCreds(scope, logger);\n                logger.getToken.info(`Using the scope ${scope}`);\n                const resource = getScopeResource(scope);\n                const response = await this.getAzurePowerShellAccessToken(resource, tenantId, this.timeout);\n                logger.getToken.info(formatSuccess(scopes));\n                return {\n                    token: response.Token,\n                    expiresOnTimestamp: new Date(response.ExpiresOn).getTime(),\n                };\n            }\n            catch (err) {\n                if (isNotInstalledError(err)) {\n                    const error = new CredentialUnavailableError(powerShellPublicErrorMessages.installed);\n                    logger.getToken.info(formatError(scope, error));\n                    throw error;\n                }\n                else if (isLoginError(err)) {\n                    const error = new CredentialUnavailableError(powerShellPublicErrorMessages.login);\n                    logger.getToken.info(formatError(scope, error));\n                    throw error;\n                }\n                const error = new CredentialUnavailableError(`${err}. ${powerShellPublicErrorMessages.troubleshoot}`);\n                logger.getToken.info(formatError(scope, error));\n                throw error;\n            }\n        });\n    }\n}\n//# sourceMappingURL=azurePowerShellCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AggregateAuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\n/**\n * @internal\n */\nexport const logger = credentialLogger(\"ChainedTokenCredential\");\n/**\n * Enables multiple `TokenCredential` implementations to be tried in order\n * until one of the getToken methods returns an access token.\n */\nexport class ChainedTokenCredential {\n    /**\n     * Creates an instance of ChainedTokenCredential using the given credentials.\n     *\n     * @param sources - `TokenCredential` implementations to be tried in order.\n     *\n     * Example usage:\n     * ```javascript\n     * const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);\n     * const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);\n     * const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);\n     * ```\n     */\n    constructor(...sources) {\n        this._sources = [];\n        this._sources = sources;\n    }\n    /**\n     * Returns the first access token returned by one of the chained\n     * `TokenCredential` implementations.  Throws an {@link AggregateAuthenticationError}\n     * when one or more credentials throws an {@link AuthenticationError} and\n     * no credentials have returned an access token.\n     *\n     * This method is called automatically by Azure SDK client libraries. You may call this method\n     * directly, but you must also handle token caching and token refreshing.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                `TokenCredential` implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        const { token } = await this.getTokenInternal(scopes, options);\n        return token;\n    }\n    async getTokenInternal(scopes, options = {}) {\n        let token = null;\n        let successfulCredential;\n        const errors = [];\n        return tracingClient.withSpan(\"ChainedTokenCredential.getToken\", options, async (updatedOptions) => {\n            for (let i = 0; i < this._sources.length && token === null; i++) {\n                try {\n                    token = await this._sources[i].getToken(scopes, updatedOptions);\n                    successfulCredential = this._sources[i];\n                }\n                catch (err) {\n                    if (err.name === \"CredentialUnavailableError\" ||\n                        err.name === \"AuthenticationRequiredError\") {\n                        errors.push(err);\n                    }\n                    else {\n                        logger.getToken.info(formatError(scopes, err));\n                        throw err;\n                    }\n                }\n            }\n            if (!token && errors.length > 0) {\n                const err = new AggregateAuthenticationError(errors, \"ChainedTokenCredential authentication failed.\");\n                logger.getToken.info(formatError(scopes, err));\n                throw err;\n            }\n            logger.getToken.info(`Result for ${successfulCredential.constructor.name}: ${formatSuccess(scopes)}`);\n            if (token === null) {\n                throw new CredentialUnavailableError(\"Failed to retrieve a valid token\");\n            }\n            return { token, successfulCredential };\n        });\n    }\n}\n//# sourceMappingURL=chainedTokenCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\nimport { createHash, createPrivateKey } from \"crypto\";\nimport { formatError } from \"../../util/logging\";\nimport { promisify } from \"util\";\nimport { readFile } from \"fs\";\nconst readFileAsync = promisify(readFile);\n/**\n * Tries to asynchronously load a certificate from the given path.\n *\n * @param configuration - Either the PEM value or the path to the certificate.\n * @param sendCertificateChain - Option to include x5c header for SubjectName and Issuer name authorization.\n * @returns - The certificate parts, or `undefined` if the certificate could not be loaded.\n * @internal\n */\nexport async function parseCertificate(configuration, sendCertificateChain) {\n    const certificateParts = {};\n    const certificate = configuration\n        .certificate;\n    const certificatePath = configuration\n        .certificatePath;\n    certificateParts.certificateContents =\n        certificate || (await readFileAsync(certificatePath, \"utf8\"));\n    if (sendCertificateChain) {\n        certificateParts.x5c = certificateParts.certificateContents;\n    }\n    const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\\n\\r?|\\r\\n?)([A-Za-z0-9+/\\n\\r]+=*)(\\n\\r?|\\r\\n?)(-+END CERTIFICATE-+)/g;\n    const publicKeys = [];\n    // Match all possible certificates, in the order they are in the file. These will form the chain that is used for x5c\n    let match;\n    do {\n        match = certificatePattern.exec(certificateParts.certificateContents);\n        if (match) {\n            publicKeys.push(match[3]);\n        }\n    } while (match);\n    if (publicKeys.length === 0) {\n        throw new Error(\"The file at the specified path does not contain a PEM-encoded certificate.\");\n    }\n    certificateParts.thumbprint = createHash(\"sha1\")\n        .update(Buffer.from(publicKeys[0], \"base64\"))\n        .digest(\"hex\")\n        .toUpperCase();\n    return certificateParts;\n}\n/**\n * MSAL client certificate client. Calls to MSAL's confidential application's `acquireTokenByClientCredential` during `doGetToken`.\n * @internal\n */\nexport class MsalClientCertificate extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.requiresConfidential = true;\n        this.configuration = options.configuration;\n        this.sendCertificateChain = options.sendCertificateChain;\n    }\n    // Changing the MSAL configuration asynchronously\n    async init(options) {\n        try {\n            const parts = await parseCertificate(this.configuration, this.sendCertificateChain);\n            let privateKey;\n            if (this.configuration.certificatePassword !== undefined) {\n                const privateKeyObject = createPrivateKey({\n                    key: parts.certificateContents,\n                    passphrase: this.configuration.certificatePassword,\n                    format: \"pem\",\n                });\n                privateKey = privateKeyObject\n                    .export({\n                    format: \"pem\",\n                    type: \"pkcs8\",\n                })\n                    .toString();\n            }\n            else {\n                privateKey = parts.certificateContents;\n            }\n            this.msalConfig.auth.clientCertificate = {\n                thumbprint: parts.thumbprint,\n                privateKey: privateKey,\n                x5c: parts.x5c,\n            };\n        }\n        catch (error) {\n            this.logger.info(formatError(\"\", error));\n            throw error;\n        }\n        return super.init(options);\n    }\n    async doGetToken(scopes, options = {}) {\n        try {\n            const clientCredReq = {\n                scopes,\n                correlationId: options.correlationId,\n                azureRegion: this.azureRegion,\n                authority: options.authority,\n                claims: options.claims,\n            };\n            const result = await this.getApp(\"confidential\", options.enableCae).acquireTokenByClientCredential(clientCredReq);\n            // Even though we're providing the same default in memory persistence cache that we use for DeviceCodeCredential,\n            // The Client Credential flow does not return the account information from the authentication service,\n            // so each time getToken gets called, we will have to acquire a new token through the service.\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (err) {\n            throw this.handleError(scopes, err, options);\n        }\n    }\n}\n//# sourceMappingURL=msalClientCertificate.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalClientCertificate } from \"../msal/nodeFlows/msalClientCertificate\";\nimport { credentialLogger } from \"../util/logging\";\nimport { tracingClient } from \"../util/tracing\";\nconst credentialName = \"ClientCertificateCredential\";\nconst logger = credentialLogger(credentialName);\n/**\n * Enables authentication to Azure Active Directory using a PEM-encoded\n * certificate that is assigned to an App Registration. More information\n * on how to configure certificate authentication can be found here:\n *\n * https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad\n *\n */\nexport class ClientCertificateCredential {\n    constructor(tenantId, clientId, certificatePathOrConfiguration, options = {}) {\n        if (!tenantId || !clientId) {\n            throw new Error(`${credentialName}: tenantId and clientId are required parameters.`);\n        }\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        const configuration = Object.assign({}, (typeof certificatePathOrConfiguration === \"string\"\n            ? {\n                certificatePath: certificatePathOrConfiguration,\n            }\n            : certificatePathOrConfiguration));\n        const certificate = configuration\n            .certificate;\n        const certificatePath = configuration.certificatePath;\n        if (!configuration || !(certificate || certificatePath)) {\n            throw new Error(`${credentialName}: Provide either a PEM certificate in string form, or the path to that certificate in the filesystem. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n        }\n        if (certificate && certificatePath) {\n            throw new Error(`${credentialName}: To avoid unexpected behaviors, providing both the contents of a PEM certificate and the path to a PEM certificate is forbidden. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.`);\n        }\n        this.msalFlow = new MsalClientCertificate(Object.assign(Object.assign({}, options), { configuration,\n            logger,\n            clientId,\n            tenantId, sendCertificateChain: options.sendCertificateChain, tokenCredentialOptions: options }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n            return this.msalFlow.getToken(arrayScopes, newOptions);\n        });\n    }\n}\n//# sourceMappingURL=clientCertificateCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\n/**\n * MSAL client secret client. Calls to MSAL's confidential application's `acquireTokenByClientCredential` during `doGetToken`.\n * @internal\n */\nexport class MsalClientSecret extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.requiresConfidential = true;\n        this.msalConfig.auth.clientSecret = options.clientSecret;\n    }\n    async doGetToken(scopes, options = {}) {\n        try {\n            const result = await this.getApp(\"confidential\", options.enableCae).acquireTokenByClientCredential({\n                scopes,\n                correlationId: options.correlationId,\n                azureRegion: this.azureRegion,\n                authority: options.authority,\n                claims: options.claims,\n            });\n            // The Client Credential flow does not return an account,\n            // so each time getToken gets called, we will have to acquire a new token through the service.\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (err) {\n            throw this.handleError(scopes, err, options);\n        }\n    }\n}\n//# sourceMappingURL=msalClientSecret.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalClientSecret } from \"../msal/nodeFlows/msalClientSecret\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"ClientSecretCredential\");\n/**\n * Enables authentication to Azure Active Directory using a client secret\n * that was generated for an App Registration. More information on how\n * to configure a client secret can be found here:\n *\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application\n *\n */\nexport class ClientSecretCredential {\n    /**\n     * Creates an instance of the ClientSecretCredential with the details\n     * needed to authenticate against Azure Active Directory with a client\n     * secret.\n     *\n     * @param tenantId - The Azure Active Directory tenant (directory) ID.\n     * @param clientId - The client (application) ID of an App Registration in the tenant.\n     * @param clientSecret - A client secret that was generated for the App Registration.\n     * @param options - Options for configuring the client which makes the authentication request.\n     */\n    constructor(tenantId, clientId, clientSecret, options = {}) {\n        if (!tenantId || !clientId || !clientSecret) {\n            throw new Error(\"ClientSecretCredential: tenantId, clientId, and clientSecret are required parameters. To troubleshoot, visit https://aka.ms/azsdk/js/identity/serviceprincipalauthentication/troubleshoot.\");\n        }\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.msalFlow = new MsalClientSecret(Object.assign(Object.assign({}, options), { logger,\n            clientId,\n            tenantId,\n            clientSecret, tokenCredentialOptions: options }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, newOptions);\n        });\n    }\n}\n//# sourceMappingURL=clientSecretCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\n/**\n * MSAL username and password client. Calls to the MSAL's public application's `acquireTokenByUsernamePassword` during `doGetToken`.\n * @internal\n */\nexport class MsalUsernamePassword extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.username = options.username;\n        this.password = options.password;\n    }\n    async doGetToken(scopes, options) {\n        try {\n            const requestOptions = {\n                scopes,\n                username: this.username,\n                password: this.password,\n                correlationId: options === null || options === void 0 ? void 0 : options.correlationId,\n                authority: options === null || options === void 0 ? void 0 : options.authority,\n                claims: options === null || options === void 0 ? void 0 : options.claims,\n            };\n            const result = await this.getApp(\"public\", options === null || options === void 0 ? void 0 : options.enableCae).acquireTokenByUsernamePassword(requestOptions);\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (error) {\n            throw this.handleError(scopes, error, options);\n        }\n    }\n}\n//# sourceMappingURL=msalUsernamePassword.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalUsernamePassword } from \"../msal/nodeFlows/msalUsernamePassword\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"UsernamePasswordCredential\");\n/**\n * Enables authentication to Azure Active Directory with a user's\n * username and password. This credential requires a high degree of\n * trust so you should only use it when other, more secure credential\n * types can't be used.\n */\nexport class UsernamePasswordCredential {\n    /**\n     * Creates an instance of the UsernamePasswordCredential with the details\n     * needed to authenticate against Azure Active Directory with a username\n     * and password.\n     *\n     * @param tenantId - The Azure Active Directory tenant (directory).\n     * @param clientId - The client (application) ID of an App Registration in the tenant.\n     * @param username - The user account's e-mail address (user name).\n     * @param password - The user account's account password\n     * @param options - Options for configuring the client which makes the authentication request.\n     */\n    constructor(tenantId, clientId, username, password, options = {}) {\n        if (!tenantId || !clientId || !username || !password) {\n            throw new Error(\"UsernamePasswordCredential: tenantId, clientId, username and password are required parameters. To troubleshoot, visit https://aka.ms/azsdk/js/identity/usernamepasswordcredential/troubleshoot.\");\n        }\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.msalFlow = new MsalUsernamePassword(Object.assign(Object.assign({}, options), { logger,\n            clientId,\n            tenantId,\n            username,\n            password, tokenCredentialOptions: options || {} }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * If the user provided the option `disableAutomaticAuthentication`,\n     * once the token can't be retrieved silently,\n     * this method won't attempt to request user interaction to retrieve the token.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, newOptions);\n        });\n    }\n}\n//# sourceMappingURL=usernamePasswordCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AuthenticationError, CredentialUnavailableError } from \"../errors\";\nimport { credentialLogger, formatError, formatSuccess, processEnvVars } from \"../util/logging\";\nimport { ClientCertificateCredential } from \"./clientCertificateCredential\";\nimport { ClientSecretCredential } from \"./clientSecretCredential\";\nimport { UsernamePasswordCredential } from \"./usernamePasswordCredential\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\n/**\n * Contains the list of all supported environment variable names so that an\n * appropriate error message can be generated when no credentials can be\n * configured.\n *\n * @internal\n */\nexport const AllSupportedEnvironmentVariables = [\n    \"AZURE_TENANT_ID\",\n    \"AZURE_CLIENT_ID\",\n    \"AZURE_CLIENT_SECRET\",\n    \"AZURE_CLIENT_CERTIFICATE_PATH\",\n    \"AZURE_CLIENT_CERTIFICATE_PASSWORD\",\n    \"AZURE_USERNAME\",\n    \"AZURE_PASSWORD\",\n    \"AZURE_ADDITIONALLY_ALLOWED_TENANTS\",\n];\nfunction getAdditionallyAllowedTenants() {\n    var _a;\n    const additionallyAllowedValues = (_a = process.env.AZURE_ADDITIONALLY_ALLOWED_TENANTS) !== null && _a !== void 0 ? _a : \"\";\n    return additionallyAllowedValues.split(\";\");\n}\nconst credentialName = \"EnvironmentCredential\";\nconst logger = credentialLogger(credentialName);\n/**\n * Enables authentication to Azure Active Directory using a client secret or certificate, or as a user\n * with a username and password.\n */\nexport class EnvironmentCredential {\n    /**\n     * Creates an instance of the EnvironmentCredential class and decides what credential to use depending on the available environment variables.\n     *\n     * Required environment variables:\n     * - `AZURE_TENANT_ID`: The Azure Active Directory tenant (directory) ID.\n     * - `AZURE_CLIENT_ID`: The client (application) ID of an App Registration in the tenant.\n     *\n     * If setting the AZURE_TENANT_ID, then you can also set the additionally allowed tenants\n     * - `AZURE_ADDITIONALLY_ALLOWED_TENANTS`: For multi-tenant applications, specifies additional tenants for which the credential may acquire tokens with a single semicolon delimited string. Use * to allow all tenants.\n     *\n     * Environment variables used for client credential authentication:\n     * - `AZURE_CLIENT_SECRET`: A client secret that was generated for the App Registration.\n     * - `AZURE_CLIENT_CERTIFICATE_PATH`: The path to a PEM certificate to use during the authentication, instead of the client secret.\n     * - `AZURE_CLIENT_CERTIFICATE_PASSWORD`: (optional) password for the certificate file.\n     *\n     * Alternatively, users can provide environment variables for username and password authentication:\n     * - `AZURE_USERNAME`: Username to authenticate with.\n     * - `AZURE_PASSWORD`: Password to authenticate with.\n     *\n     * If the environment variables required to perform the authentication are missing, a {@link CredentialUnavailableError} will be thrown.\n     * If the authentication fails, or if there's an unknown error, an {@link AuthenticationError} will be thrown.\n     *\n     * @param options - Options for configuring the client which makes the authentication request.\n     */\n    constructor(options) {\n        // Keep track of any missing environment variables for error details\n        this._credential = undefined;\n        const assigned = processEnvVars(AllSupportedEnvironmentVariables).assigned.join(\", \");\n        logger.info(`Found the following environment variables: ${assigned}`);\n        const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET;\n        const additionallyAllowedTenantIds = getAdditionallyAllowedTenants();\n        const newOptions = Object.assign(Object.assign({}, options), { additionallyAllowedTenantIds });\n        if (tenantId) {\n            checkTenantId(logger, tenantId);\n        }\n        if (tenantId && clientId && clientSecret) {\n            logger.info(`Invoking ClientSecretCredential with tenant ID: ${tenantId}, clientId: ${clientId} and clientSecret: [REDACTED]`);\n            this._credential = new ClientSecretCredential(tenantId, clientId, clientSecret, newOptions);\n            return;\n        }\n        const certificatePath = process.env.AZURE_CLIENT_CERTIFICATE_PATH;\n        const certificatePassword = process.env.AZURE_CLIENT_CERTIFICATE_PASSWORD;\n        if (tenantId && clientId && certificatePath) {\n            logger.info(`Invoking ClientCertificateCredential with tenant ID: ${tenantId}, clientId: ${clientId} and certificatePath: ${certificatePath}`);\n            this._credential = new ClientCertificateCredential(tenantId, clientId, { certificatePath, certificatePassword }, newOptions);\n            return;\n        }\n        const username = process.env.AZURE_USERNAME;\n        const password = process.env.AZURE_PASSWORD;\n        if (tenantId && clientId && username && password) {\n            logger.info(`Invoking UsernamePasswordCredential with tenant ID: ${tenantId}, clientId: ${clientId} and username: ${username}`);\n            this._credential = new UsernamePasswordCredential(tenantId, clientId, username, password, newOptions);\n        }\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - Optional parameters. See {@link GetTokenOptions}.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n            if (this._credential) {\n                try {\n                    const result = await this._credential.getToken(scopes, newOptions);\n                    logger.getToken.info(formatSuccess(scopes));\n                    return result;\n                }\n                catch (err) {\n                    const authenticationError = new AuthenticationError(400, {\n                        error: `${credentialName} authentication failed. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`,\n                        error_description: err.message.toString().split(\"More details:\").join(\"\"),\n                    });\n                    logger.getToken.info(formatError(scopes, authenticationError));\n                    throw authenticationError;\n                }\n            }\n            throw new CredentialUnavailableError(`${credentialName} is unavailable. No underlying credential could be used. To troubleshoot, visit https://aka.ms/azsdk/js/identity/environmentcredential/troubleshoot.`);\n        });\n    }\n}\n//# sourceMappingURL=environmentCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { credentialLogger, formatError, formatSuccess } from \"../util/logging\";\nimport { CredentialUnavailableError } from \"../errors\";\nimport child_process from \"child_process\";\nimport { checkTenantId, processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { tracingClient } from \"../util/tracing\";\nimport { ensureValidScopeForDevTimeCreds } from \"../util/scopeUtils\";\n/**\n * Mockable reference to the Developer CLI credential cliCredentialFunctions\n * @internal\n */\nexport const developerCliCredentialInternals = {\n    /**\n     * @internal\n     */\n    getSafeWorkingDir() {\n        if (process.platform === \"win32\") {\n            if (!process.env.SystemRoot) {\n                throw new Error(\"Azure Developer CLI credential expects a 'SystemRoot' environment variable\");\n            }\n            return process.env.SystemRoot;\n        }\n        else {\n            return \"/bin\";\n        }\n    },\n    /**\n     * Gets the access token from Azure Developer CLI\n     * @param scopes - The scopes to use when getting the token\n     * @internal\n     */\n    async getAzdAccessToken(scopes, tenantId, timeout) {\n        let tenantSection = [];\n        if (tenantId) {\n            tenantSection = [\"--tenant-id\", tenantId];\n        }\n        return new Promise((resolve, reject) => {\n            try {\n                child_process.execFile(\"azd\", [\n                    \"auth\",\n                    \"token\",\n                    \"--output\",\n                    \"json\",\n                    ...scopes.reduce((previous, current) => previous.concat(\"--scope\", current), []),\n                    ...tenantSection,\n                ], {\n                    cwd: developerCliCredentialInternals.getSafeWorkingDir(),\n                    timeout,\n                }, (error, stdout, stderr) => {\n                    resolve({ stdout, stderr, error });\n                });\n            }\n            catch (err) {\n                reject(err);\n            }\n        });\n    },\n};\nconst logger = credentialLogger(\"AzureDeveloperCliCredential\");\n/**\n * Azure Developer CLI is a command-line interface tool that allows developers to create, manage, and deploy\n * resources in Azure. It's built on top of the Azure CLI and provides additional functionality specific\n * to Azure developers. It allows users to authenticate as a user and/or a service principal against\n * <a href=\"https://learn.microsoft.com/azure/active-directory/fundamentals/\">Azure Active Directory (Azure AD)\n * </a>. The AzureDeveloperCliCredential authenticates in a development environment and acquires a token on behalf of\n * the logged-in user or service principal in the Azure Developer CLI. It acts as the Azure Developer CLI logged in user or\n * service principal and executes an Azure CLI command underneath to authenticate the application against\n * Azure Active Directory.\n *\n * <h2> Configure AzureDeveloperCliCredential </h2>\n *\n * To use this credential, the developer needs to authenticate locally in Azure Developer CLI using one of the\n * commands below:\n *\n * <ol>\n *     <li>Run \"azd auth login\" in Azure Developer CLI to authenticate interactively as a user.</li>\n *     <li>Run \"azd auth login --client-id clientID --client-secret clientSecret\n *     --tenant-id tenantID\" to authenticate as a service principal.</li>\n * </ol>\n *\n * You may need to repeat this process after a certain time period, depending on the refresh token validity in your\n * organization. Generally, the refresh token validity period is a few weeks to a few months.\n * AzureDeveloperCliCredential will prompt you to sign in again.\n */\nexport class AzureDeveloperCliCredential {\n    /**\n     * Creates an instance of the {@link AzureDeveloperCliCredential}.\n     *\n     * To use this credential, ensure that you have already logged\n     * in via the 'azd' tool using the command \"azd auth login\" from the commandline.\n     *\n     * @param options - Options, to optionally allow multi-tenant requests.\n     */\n    constructor(options) {\n        if (options === null || options === void 0 ? void 0 : options.tenantId) {\n            checkTenantId(logger, options === null || options === void 0 ? void 0 : options.tenantId);\n            this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;\n        }\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.timeout = options === null || options === void 0 ? void 0 : options.processTimeoutInMs;\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        const tenantId = processMultiTenantRequest(this.tenantId, options, this.additionallyAllowedTenantIds);\n        if (tenantId) {\n            checkTenantId(logger, tenantId);\n        }\n        let scopeList;\n        if (typeof scopes === \"string\") {\n            scopeList = [scopes];\n        }\n        else {\n            scopeList = scopes;\n        }\n        logger.getToken.info(`Using the scopes ${scopes}`);\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async () => {\n            var _a, _b, _c, _d;\n            try {\n                scopeList.forEach((scope) => {\n                    ensureValidScopeForDevTimeCreds(scope, logger);\n                });\n                const obj = await developerCliCredentialInternals.getAzdAccessToken(scopeList, tenantId, this.timeout);\n                const isNotLoggedInError = ((_a = obj.stderr) === null || _a === void 0 ? void 0 : _a.match(\"not logged in, run `azd login` to login\")) ||\n                    ((_b = obj.stderr) === null || _b === void 0 ? void 0 : _b.match(\"not logged in, run `azd auth login` to login\"));\n                const isNotInstallError = ((_c = obj.stderr) === null || _c === void 0 ? void 0 : _c.match(\"azd:(.*)not found\")) ||\n                    ((_d = obj.stderr) === null || _d === void 0 ? void 0 : _d.startsWith(\"'azd' is not recognized\"));\n                if (isNotInstallError || (obj.error && obj.error.code === \"ENOENT\")) {\n                    const error = new CredentialUnavailableError(\"Azure Developer CLI couldn't be found. To mitigate this issue, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\");\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n                if (isNotLoggedInError) {\n                    const error = new CredentialUnavailableError(\"Please run 'azd auth login' from a command prompt to authenticate before using this credential. For more information, see the troubleshooting guidelines at https://aka.ms/azsdk/js/identity/azdevclicredential/troubleshoot.\");\n                    logger.getToken.info(formatError(scopes, error));\n                    throw error;\n                }\n                try {\n                    const resp = JSON.parse(obj.stdout);\n                    logger.getToken.info(formatSuccess(scopes));\n                    return {\n                        token: resp.token,\n                        expiresOnTimestamp: new Date(resp.expiresOn).getTime(),\n                    };\n                }\n                catch (e) {\n                    if (obj.stderr) {\n                        throw new CredentialUnavailableError(obj.stderr);\n                    }\n                    throw e;\n                }\n            }\n            catch (err) {\n                const error = err.name === \"CredentialUnavailableError\"\n                    ? err\n                    : new CredentialUnavailableError(err.message || \"Unknown error while trying to retrieve the access token\");\n                logger.getToken.info(formatError(scopes, error));\n                throw error;\n            }\n        });\n    }\n}\n//# sourceMappingURL=azureDeveloperCliCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ManagedIdentityCredential, } from \"./managedIdentityCredential\";\nimport { AzureCliCredential } from \"./azureCliCredential\";\nimport { AzurePowerShellCredential } from \"./azurePowerShellCredential\";\nimport { ChainedTokenCredential } from \"./chainedTokenCredential\";\nimport { EnvironmentCredential } from \"./environmentCredential\";\nimport { AzureDeveloperCliCredential } from \"./azureDeveloperCliCredential\";\nimport { WorkloadIdentityCredential } from \"./workloadIdentityCredential\";\n/**\n * A shim around ManagedIdentityCredential that adapts it to accept\n * `DefaultAzureCredentialOptions`.\n *\n * @internal\n */\nexport class DefaultManagedIdentityCredential extends ManagedIdentityCredential {\n    // Constructor overload with just the other default options\n    // Last constructor overload with Union of all options not required since the above two constructor overloads have optional properties\n    constructor(options) {\n        var _a, _b, _c;\n        const managedIdentityClientId = (_a = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _a !== void 0 ? _a : process.env.AZURE_CLIENT_ID;\n        const workloadIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _b !== void 0 ? _b : managedIdentityClientId;\n        const managedResourceId = options === null || options === void 0 ? void 0 : options.managedIdentityResourceId;\n        const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n        const tenantId = (_c = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _c !== void 0 ? _c : process.env.AZURE_TENANT_ID;\n        // ManagedIdentityCredential throws if both the resourceId and the clientId are provided.\n        if (managedResourceId) {\n            const managedIdentityResourceIdOptions = Object.assign(Object.assign({}, options), { resourceId: managedResourceId });\n            super(managedIdentityResourceIdOptions);\n        }\n        else if (workloadFile && workloadIdentityClientId) {\n            const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId: tenantId });\n            super(workloadIdentityClientId, workloadIdentityCredentialOptions);\n        }\n        else if (managedIdentityClientId) {\n            const managedIdentityClientOptions = Object.assign(Object.assign({}, options), { clientId: managedIdentityClientId });\n            super(managedIdentityClientOptions);\n        }\n        else {\n            super(options);\n        }\n    }\n}\n/**\n * A shim around WorkloadIdentityCredential that adapts it to accept\n * `DefaultAzureCredentialOptions`.\n *\n * @internal\n */\nexport class DefaultWorkloadIdentityCredential extends WorkloadIdentityCredential {\n    // Constructor overload with just the other default options\n    // Last constructor overload with Union of all options not required since the above two constructor overloads have optional properties\n    constructor(options) {\n        var _a, _b, _c;\n        const managedIdentityClientId = (_a = options === null || options === void 0 ? void 0 : options.managedIdentityClientId) !== null && _a !== void 0 ? _a : process.env.AZURE_CLIENT_ID;\n        const workloadIdentityClientId = (_b = options === null || options === void 0 ? void 0 : options.workloadIdentityClientId) !== null && _b !== void 0 ? _b : managedIdentityClientId;\n        const workloadFile = process.env.AZURE_FEDERATED_TOKEN_FILE;\n        const tenantId = (_c = options === null || options === void 0 ? void 0 : options.tenantId) !== null && _c !== void 0 ? _c : process.env.AZURE_TENANT_ID;\n        if (workloadFile && workloadIdentityClientId) {\n            const workloadIdentityCredentialOptions = Object.assign(Object.assign({}, options), { tenantId, clientId: workloadIdentityClientId, tokenFilePath: workloadFile });\n            super(workloadIdentityCredentialOptions);\n        }\n        else if (tenantId) {\n            const workloadIdentityClientTenantOptions = Object.assign(Object.assign({}, options), { tenantId });\n            super(workloadIdentityClientTenantOptions);\n        }\n        else {\n            super(options);\n        }\n    }\n}\nexport class DefaultAzureDeveloperCliCredential extends AzureDeveloperCliCredential {\n    constructor(options) {\n        super(Object.assign({ processTimeoutInMs: options === null || options === void 0 ? void 0 : options.processTimeoutInMs }, options));\n    }\n}\nexport class DefaultAzureCliCredential extends AzureCliCredential {\n    constructor(options) {\n        super(Object.assign({ processTimeoutInMs: options === null || options === void 0 ? void 0 : options.processTimeoutInMs }, options));\n    }\n}\nexport class DefaultAzurePowershellCredential extends AzurePowerShellCredential {\n    constructor(options) {\n        super(Object.assign({ processTimeoutInMs: options === null || options === void 0 ? void 0 : options.processTimeoutInMs }, options));\n    }\n}\nexport const defaultCredentials = [\n    EnvironmentCredential,\n    DefaultWorkloadIdentityCredential,\n    DefaultManagedIdentityCredential,\n    DefaultAzureCliCredential,\n    DefaultAzurePowershellCredential,\n    DefaultAzureDeveloperCliCredential,\n];\n/**\n * Provides a default {@link ChainedTokenCredential} configuration that should\n * work for most applications that use the Azure SDK.\n */\nexport class DefaultAzureCredential extends ChainedTokenCredential {\n    constructor(options) {\n        super(...defaultCredentials.map((ctor) => new ctor(options)));\n    }\n}\n//# sourceMappingURL=defaultAzureCredential.js.map","'use strict';\nconst fs = require('fs');\n\nlet isDocker;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nmodule.exports = () => {\n\tif (isDocker === undefined) {\n\t\tisDocker = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDocker;\n};\n","'use strict';\nconst os = require('os');\nconst fs = require('fs');\nconst isDocker = require('is-docker');\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isDocker()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?\n\t\t\t!isDocker() : false;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nif (process.env.__IS_WSL_TEST__) {\n\tmodule.exports = isWsl;\n} else {\n\tmodule.exports = isWsl();\n}\n","'use strict';\nmodule.exports = (object, propertyName, fn) => {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = fn();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n};\n","const path = require('path');\nconst childProcess = require('child_process');\nconst {promises: fs, constants: fsConstants} = require('fs');\nconst isWsl = require('is-wsl');\nconst isDocker = require('is-docker');\nconst defineLazyProperty = require('define-lazy-prop');\n\n// Path to included `xdg-open`.\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nlet cachedResult;\nfunction isInsideContainer() {\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app || {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments\n\t\t\t}\n\t\t}));\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl ?\n\t\t\t`${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` :\n\t\t\t`${process.env.SYSTEMROOT}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'–ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand'\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`, '-ArgumentList');\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.unshift(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(arg => `\"\\`\"${arg}\\`\"\"`);\n\t\t\tencodedArguments.push(appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron ||\n\t\t\t\tplatform === 'android' || isBundled || !exeLocalXdgOpen;\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget\n\t});\n};\n\nconst openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options || {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments\n\t\t}\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nconst apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium']\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe']\n\t}\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox'\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe'\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev']\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'\n}));\n\nopen.apps = apps;\nopen.openApp = openApp;\n\nmodule.exports = open;\n","'use strict'\n\nconst https = require('https')\n\nmodule.exports = (server, grace) => {\n  grace = typeof grace === 'undefined' ? Infinity : grace\n  const reqsPerSocket = new Map()\n  let stopped = false\n  let gracefully = true\n\n  if (server instanceof https.Server) {\n    server.on('secureConnection', onConnection)\n  } else {\n    server.on('connection', onConnection)\n  }\n\n  server.on('request', onRequest)\n  server.stop = stop\n  server._pendingSockets = reqsPerSocket\n  return server\n\n  function onConnection (socket) {\n    reqsPerSocket.set(socket, 0)\n    socket.once('close', () => reqsPerSocket.delete(socket))\n  }\n\n  function onRequest (req, res) {\n    reqsPerSocket.set(req.socket, reqsPerSocket.get(req.socket) + 1)\n    res.once('finish', () => {\n      const pending = reqsPerSocket.get(req.socket) - 1\n      reqsPerSocket.set(req.socket, pending)\n      if (stopped && pending === 0) {\n        req.socket.end()\n      }\n    })\n  }\n\n  function stop (callback) {\n    // allow request handlers to update state before we act on that state\n    setImmediate(() => {\n      stopped = true\n      if (grace < Infinity) {\n        setTimeout(destroyAll, grace).unref()\n      }\n      server.close(e => {\n        if (callback) {\n          callback(e, gracefully)\n        }\n      })\n      reqsPerSocket.forEach(endIfIdle)\n    })\n  }\n\n  function endIfIdle (requests, socket) {\n    if (requests === 0) socket.end()\n  }\n\n  function destroyAll () {\n    gracefully = false\n    reqsPerSocket.forEach((reqs, socket) => socket.end())\n    setImmediate(() => {\n      reqsPerSocket.forEach((reqs, socket) => socket.destroy())\n    })\n  }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as msalNode from \"@azure/msal-node\";\nimport { MsalNode } from \"./msalNodeCommon\";\nimport { credentialLogger, formatError, formatSuccess } from \"../../util/logging\";\nimport { CredentialUnavailableError } from \"../../errors\";\nimport http from \"http\";\nimport { msalToPublic } from \"../utils\";\nimport open from \"open\";\nimport stoppable from \"stoppable\";\n/**\n * A call to open(), but mockable\n * @internal\n */\nexport const interactiveBrowserMockable = {\n    open,\n};\n/**\n * This MSAL client sets up a web server to listen for redirect callbacks, then calls to the MSAL's public application's `acquireTokenByDeviceCode` during `doGetToken`\n * to trigger the authentication flow, and then respond based on the values obtained from the redirect callback\n * @internal\n */\nexport class MsalOpenBrowser extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.logger = credentialLogger(\"Node.js MSAL Open Browser\");\n        this.redirectUri = options.redirectUri;\n        this.loginHint = options.loginHint;\n        const url = new URL(this.redirectUri);\n        this.port = parseInt(url.port);\n        if (isNaN(this.port)) {\n            this.port = 80;\n        }\n        this.hostname = url.hostname;\n    }\n    async acquireTokenByCode(request, enableCae) {\n        return this.getApp(\"public\", enableCae).acquireTokenByCode(request);\n    }\n    doGetToken(scopes, options) {\n        return new Promise((resolve, reject) => {\n            const socketToDestroy = [];\n            const requestListener = (req, res) => {\n                var _a;\n                if (!req.url) {\n                    reject(new Error(`Interactive Browser Authentication Error \"Did not receive token with a valid expiration\"`));\n                    return;\n                }\n                let url;\n                try {\n                    url = new URL(req.url, this.redirectUri);\n                }\n                catch (e) {\n                    reject(new Error(`Interactive Browser Authentication Error \"Did not receive token with a valid expiration\"`));\n                    return;\n                }\n                const tokenRequest = {\n                    code: url.searchParams.get(\"code\"),\n                    redirectUri: this.redirectUri,\n                    scopes: scopes,\n                    authority: options === null || options === void 0 ? void 0 : options.authority,\n                    codeVerifier: (_a = this.pkceCodes) === null || _a === void 0 ? void 0 : _a.verifier,\n                };\n                this.acquireTokenByCode(tokenRequest, options === null || options === void 0 ? void 0 : options.enableCae)\n                    .then((authResponse) => {\n                    if (authResponse === null || authResponse === void 0 ? void 0 : authResponse.account) {\n                        this.account = msalToPublic(this.clientId, authResponse.account);\n                    }\n                    const successMessage = `Authentication Complete. You can close the browser and return to the application.`;\n                    if (authResponse && authResponse.expiresOn) {\n                        const expiresOnTimestamp = authResponse === null || authResponse === void 0 ? void 0 : authResponse.expiresOn.valueOf();\n                        res.writeHead(200);\n                        res.end(successMessage);\n                        this.logger.getToken.info(formatSuccess(scopes));\n                        resolve({\n                            expiresOnTimestamp,\n                            token: authResponse.accessToken,\n                        });\n                    }\n                    else {\n                        const errorMessage = formatError(scopes, `${url.searchParams.get(\"error\")}. ${url.searchParams.get(\"error_description\")}`);\n                        res.writeHead(500);\n                        res.end(errorMessage);\n                        this.logger.getToken.info(errorMessage);\n                        reject(new Error(`Interactive Browser Authentication Error \"Did not receive token with a valid expiration\"`));\n                    }\n                    cleanup();\n                    return;\n                })\n                    .catch(() => {\n                    const errorMessage = formatError(scopes, `${url.searchParams.get(\"error\")}. ${url.searchParams.get(\"error_description\")}`);\n                    res.writeHead(500);\n                    res.end(errorMessage);\n                    this.logger.getToken.info(errorMessage);\n                    reject(new Error(`Interactive Browser Authentication Error \"Did not receive token with a valid expiration\"`));\n                    cleanup();\n                });\n            };\n            const app = http.createServer(requestListener);\n            const server = stoppable(app);\n            const listen = app.listen(this.port, this.hostname, () => this.logger.info(`InteractiveBrowserCredential listening on port ${this.port}!`));\n            function cleanup() {\n                if (listen) {\n                    listen.close();\n                }\n                for (const socket of socketToDestroy) {\n                    socket.destroy();\n                }\n                if (server) {\n                    server.close();\n                    server.stop();\n                }\n            }\n            app.on(\"connection\", (socket) => socketToDestroy.push(socket));\n            app.on(\"error\", (err) => {\n                cleanup();\n                const code = err.code;\n                if (code === \"EACCES\" || code === \"EADDRINUSE\") {\n                    reject(new CredentialUnavailableError([\n                        `InteractiveBrowserCredential: Access denied to port ${this.port}.`,\n                        `Try sending a redirect URI with a different port, as follows:`,\n                        '`new InteractiveBrowserCredential({ redirectUri: \"http://localhost:1337\" })`',\n                    ].join(\" \")));\n                }\n                else {\n                    reject(new CredentialUnavailableError(`InteractiveBrowserCredential: Failed to start the necessary web server. Error: ${err.message}`));\n                }\n            });\n            app.on(\"listening\", () => {\n                const openPromise = this.openAuthCodeUrl(scopes, options);\n                const abortSignal = options === null || options === void 0 ? void 0 : options.abortSignal;\n                if (abortSignal) {\n                    abortSignal.addEventListener(\"abort\", () => {\n                        cleanup();\n                        reject(new Error(\"Aborted\"));\n                    });\n                }\n                openPromise.catch((e) => {\n                    cleanup();\n                    reject(e);\n                });\n            });\n        });\n    }\n    async openAuthCodeUrl(scopeArray, options) {\n        // Initialize CryptoProvider instance\n        const cryptoProvider = new msalNode.CryptoProvider();\n        // Generate PKCE Codes before starting the authorization flow\n        this.pkceCodes = await cryptoProvider.generatePkceCodes();\n        const authCodeUrlParameters = {\n            scopes: scopeArray,\n            correlationId: options === null || options === void 0 ? void 0 : options.correlationId,\n            redirectUri: this.redirectUri,\n            authority: options === null || options === void 0 ? void 0 : options.authority,\n            claims: options === null || options === void 0 ? void 0 : options.claims,\n            loginHint: this.loginHint,\n            codeChallenge: this.pkceCodes.challenge,\n            codeChallengeMethod: \"S256\", // Use SHA256 Algorithm\n        };\n        const response = await this.getApp(\"public\", options === null || options === void 0 ? void 0 : options.enableCae).getAuthCodeUrl(authCodeUrlParameters);\n        try {\n            // A new instance on macOS only which allows it to not hang, does not fix the issue on linux\n            await interactiveBrowserMockable.open(response, { wait: true, newInstance: true });\n        }\n        catch (e) {\n            throw new CredentialUnavailableError(`InteractiveBrowserCredential: Could not open a browser window. Error: ${e.message}`);\n        }\n    }\n}\n//# sourceMappingURL=msalOpenBrowser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalOpenBrowser } from \"../msal/nodeFlows/msalOpenBrowser\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"InteractiveBrowserCredential\");\n/**\n * Enables authentication to Azure Active Directory inside of the web browser\n * using the interactive login flow.\n */\nexport class InteractiveBrowserCredential {\n    /**\n     * Creates an instance of InteractiveBrowserCredential with the details needed.\n     *\n     * This credential uses the [Authorization Code Flow](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow).\n     * On Node.js, it will open a browser window while it listens for a redirect response from the authentication service.\n     * On browsers, it authenticates via popups. The `loginStyle` optional parameter can be set to `redirect` to authenticate by redirecting the user to an Azure secure login page, which then will redirect the user back to the web application where the authentication started.\n     *\n     * For Node.js, if a `clientId` is provided, the Azure Active Directory application will need to be configured to have a \"Mobile and desktop applications\" redirect endpoint.\n     * Follow our guide on [setting up Redirect URIs for Desktop apps that calls to web APIs](https://docs.microsoft.com/azure/active-directory/develop/scenario-desktop-app-registration#redirect-uris).\n     *\n     * @param options - Options for configuring the client which makes the authentication requests.\n     */\n    constructor(options = {}) {\n        const redirectUri = typeof options.redirectUri === \"function\"\n            ? options.redirectUri()\n            : options.redirectUri || \"http://localhost\";\n        this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.msalFlow = new MsalOpenBrowser(Object.assign(Object.assign({}, options), { tokenCredentialOptions: options, logger,\n            redirectUri }));\n        this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication;\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * If the user provided the option `disableAutomaticAuthentication`,\n     * once the token can't be retrieved silently,\n     * this method won't attempt to request user interaction to retrieve the token.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication }));\n        });\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * If the token can't be retrieved silently, this method will require user interaction to retrieve the token.\n     *\n     * On Node.js, this credential has [Proof Key for Code Exchange (PKCE)](https://datatracker.ietf.org/doc/html/rfc7636) enabled by default.\n     * PKCE is a security feature that mitigates authentication code interception attacks.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                  TokenCredential implementation might make.\n     */\n    async authenticate(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n            const arrayScopes = ensureScopes(scopes);\n            await this.msalFlow.getToken(arrayScopes, newOptions);\n            return this.msalFlow.getActiveAccount();\n        });\n    }\n}\n//# sourceMappingURL=interactiveBrowserCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\n/**\n * MSAL device code client. Calls to the MSAL's public application's `acquireTokenByDeviceCode` during `doGetToken`.\n * @internal\n */\nexport class MsalDeviceCode extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.userPromptCallback = options.userPromptCallback;\n    }\n    async doGetToken(scopes, options) {\n        try {\n            const requestOptions = {\n                deviceCodeCallback: this.userPromptCallback,\n                scopes,\n                cancel: false,\n                correlationId: options === null || options === void 0 ? void 0 : options.correlationId,\n                authority: options === null || options === void 0 ? void 0 : options.authority,\n                claims: options === null || options === void 0 ? void 0 : options.claims,\n            };\n            const promise = this.getApp(\"public\", options === null || options === void 0 ? void 0 : options.enableCae).acquireTokenByDeviceCode(requestOptions);\n            const deviceResponse = await this.withCancellation(promise, options === null || options === void 0 ? void 0 : options.abortSignal, () => {\n                requestOptions.cancel = true;\n            });\n            return this.handleResult(scopes, this.clientId, deviceResponse || undefined);\n        }\n        catch (error) {\n            throw this.handleError(scopes, error, options);\n        }\n    }\n}\n//# sourceMappingURL=msalDeviceCode.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalDeviceCode } from \"../msal/nodeFlows/msalDeviceCode\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"DeviceCodeCredential\");\n/**\n * Method that logs the user code from the DeviceCodeCredential.\n * @param deviceCodeInfo - The device code.\n */\nexport function defaultDeviceCodePromptCallback(deviceCodeInfo) {\n    console.log(deviceCodeInfo.message);\n}\n/**\n * Enables authentication to Azure Active Directory using a device code\n * that the user can enter into https://microsoft.com/devicelogin.\n */\nexport class DeviceCodeCredential {\n    /**\n     * Creates an instance of DeviceCodeCredential with the details needed\n     * to initiate the device code authorization flow with Azure Active Directory.\n     *\n     * A message will be logged, giving users a code that they can use to authenticate once they go to https://microsoft.com/devicelogin\n     *\n     * Developers can configure how this message is shown by passing a custom `userPromptCallback`:\n     *\n     * ```js\n     * const credential = new DeviceCodeCredential({\n     *   tenantId: env.AZURE_TENANT_ID,\n     *   clientId: env.AZURE_CLIENT_ID,\n     *   userPromptCallback: (info) => {\n     *     console.log(\"CUSTOMIZED PROMPT CALLBACK\", info.message);\n     *   }\n     * });\n     * ```\n     *\n     * @param options - Options for configuring the client which makes the authentication requests.\n     */\n    constructor(options) {\n        this.tenantId = options === null || options === void 0 ? void 0 : options.tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.msalFlow = new MsalDeviceCode(Object.assign(Object.assign({}, options), { logger, userPromptCallback: (options === null || options === void 0 ? void 0 : options.userPromptCallback) || defaultDeviceCodePromptCallback, tokenCredentialOptions: options || {} }));\n        this.disableAutomaticAuthentication = options === null || options === void 0 ? void 0 : options.disableAutomaticAuthentication;\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * If the user provided the option `disableAutomaticAuthentication`,\n     * once the token can't be retrieved silently,\n     * this method won't attempt to request user interaction to retrieve the token.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication }));\n        });\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * If the token can't be retrieved silently, this method will require user interaction to retrieve the token.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                  TokenCredential implementation might make.\n     */\n    async authenticate(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.authenticate`, options, async (newOptions) => {\n            const arrayScopes = Array.isArray(scopes) ? scopes : [scopes];\n            await this.msalFlow.getToken(arrayScopes, newOptions);\n            return this.msalFlow.getActiveAccount();\n        });\n    }\n}\n//# sourceMappingURL=deviceCodeCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\nimport { credentialLogger } from \"../../util/logging\";\n/**\n * This MSAL client sets up a web server to listen for redirect callbacks, then calls to the MSAL's public application's `acquireTokenByDeviceCode` during `doGetToken`\n * to trigger the authentication flow, and then respond based on the values obtained from the redirect callback\n * @internal\n */\nexport class MsalAuthorizationCode extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.logger = credentialLogger(\"Node.js MSAL Authorization Code\");\n        this.redirectUri = options.redirectUri;\n        this.authorizationCode = options.authorizationCode;\n        if (options.clientSecret) {\n            this.msalConfig.auth.clientSecret = options.clientSecret;\n        }\n    }\n    async getAuthCodeUrl(options) {\n        await this.init();\n        return this.getApp(\"confidentialFirst\", options.enableCae).getAuthCodeUrl({\n            scopes: options.scopes,\n            redirectUri: options.redirectUri,\n        });\n    }\n    async doGetToken(scopes, options) {\n        try {\n            const result = await this.getApp(\"confidentialFirst\", options === null || options === void 0 ? void 0 : options.enableCae).acquireTokenByCode({\n                scopes,\n                redirectUri: this.redirectUri,\n                code: this.authorizationCode,\n                correlationId: options === null || options === void 0 ? void 0 : options.correlationId,\n                authority: options === null || options === void 0 ? void 0 : options.authority,\n                claims: options === null || options === void 0 ? void 0 : options.claims,\n            });\n            // The Client Credential flow does not return an account,\n            // so each time getToken gets called, we will have to acquire a new token through the service.\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (err) {\n            throw this.handleError(scopes, err, options);\n        }\n    }\n}\n//# sourceMappingURL=msalAuthorizationCode.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalAuthorizationCode } from \"../msal/nodeFlows/msalAuthorizationCode\";\nimport { checkTenantId } from \"../util/tenantIdUtils\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst logger = credentialLogger(\"AuthorizationCodeCredential\");\n/**\n * Enables authentication to Azure Active Directory using an authorization code\n * that was obtained through the authorization code flow, described in more detail\n * in the Azure Active Directory documentation:\n *\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow\n */\nexport class AuthorizationCodeCredential {\n    /**\n     * @hidden\n     * @internal\n     */\n    constructor(tenantId, clientId, clientSecretOrAuthorizationCode, authorizationCodeOrRedirectUri, redirectUriOrOptions, options) {\n        checkTenantId(logger, tenantId);\n        let clientSecret = clientSecretOrAuthorizationCode;\n        if (typeof redirectUriOrOptions === \"string\") {\n            // the clientId+clientSecret constructor\n            this.authorizationCode = authorizationCodeOrRedirectUri;\n            this.redirectUri = redirectUriOrOptions;\n            // in this case, options are good as they come\n        }\n        else {\n            // clientId only\n            this.authorizationCode = clientSecretOrAuthorizationCode;\n            this.redirectUri = authorizationCodeOrRedirectUri;\n            clientSecret = undefined;\n            options = redirectUriOrOptions;\n        }\n        // TODO: Validate tenant if provided\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(options === null || options === void 0 ? void 0 : options.additionallyAllowedTenants);\n        this.msalFlow = new MsalAuthorizationCode(Object.assign(Object.assign({}, options), { clientSecret,\n            clientId,\n            tenantId, tokenCredentialOptions: options || {}, logger, redirectUri: this.redirectUri, authorizationCode: this.authorizationCode }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure any requests this\n     *                TokenCredential implementation might make.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${this.constructor.name}.getToken`, options, async (newOptions) => {\n            const tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds);\n            newOptions.tenantId = tenantId;\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, Object.assign(Object.assign({}, newOptions), { disableAutomaticAuthentication: this.disableAutomaticAuthentication }));\n        });\n    }\n}\n//# sourceMappingURL=authorizationCodeCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MsalNode } from \"./msalNodeCommon\";\nimport { formatError } from \"../../util/logging\";\nimport { parseCertificate } from \"./msalClientCertificate\";\n/**\n * MSAL on behalf of flow. Calls to MSAL's confidential application's `acquireTokenOnBehalfOf` during `doGetToken`.\n * @internal\n */\nexport class MsalOnBehalfOf extends MsalNode {\n    constructor(options) {\n        super(options);\n        this.logger.info(\"Initialized MSAL's On-Behalf-Of flow\");\n        this.requiresConfidential = true;\n        this.userAssertionToken = options.userAssertionToken;\n        this.certificatePath = options.certificatePath;\n        this.sendCertificateChain = options.sendCertificateChain;\n        this.clientSecret = options.clientSecret;\n    }\n    // Changing the MSAL configuration asynchronously\n    async init(options) {\n        if (this.certificatePath) {\n            try {\n                const parts = await parseCertificate({ certificatePath: this.certificatePath }, this.sendCertificateChain);\n                this.msalConfig.auth.clientCertificate = {\n                    thumbprint: parts.thumbprint,\n                    privateKey: parts.certificateContents,\n                    x5c: parts.x5c,\n                };\n            }\n            catch (error) {\n                this.logger.info(formatError(\"\", error));\n                throw error;\n            }\n        }\n        else {\n            this.msalConfig.auth.clientSecret = this.clientSecret;\n        }\n        return super.init(options);\n    }\n    async doGetToken(scopes, options = {}) {\n        try {\n            const result = await this.getApp(\"confidential\", options.enableCae).acquireTokenOnBehalfOf({\n                scopes,\n                correlationId: options.correlationId,\n                authority: options.authority,\n                claims: options.claims,\n                oboAssertion: this.userAssertionToken,\n            });\n            return this.handleResult(scopes, this.clientId, result || undefined);\n        }\n        catch (err) {\n            throw this.handleError(scopes, err, options);\n        }\n    }\n}\n//# sourceMappingURL=msalOnBehalfOf.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { processMultiTenantRequest, resolveAdditionallyAllowedTenantIds, } from \"../util/tenantIdUtils\";\nimport { MsalOnBehalfOf } from \"../msal/nodeFlows/msalOnBehalfOf\";\nimport { credentialLogger } from \"../util/logging\";\nimport { ensureScopes } from \"../util/scopeUtils\";\nimport { tracingClient } from \"../util/tracing\";\nconst credentialName = \"OnBehalfOfCredential\";\nconst logger = credentialLogger(credentialName);\n/**\n * Enables authentication to Microsoft Entra ID using the [On Behalf Of flow](https://learn.microsoft.com/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow).\n */\nexport class OnBehalfOfCredential {\n    constructor(options) {\n        this.options = options;\n        const { clientSecret } = options;\n        const { certificatePath } = options;\n        const { tenantId, clientId, userAssertionToken, additionallyAllowedTenants: additionallyAllowedTenantIds, } = options;\n        if (!tenantId || !clientId || !(clientSecret || certificatePath) || !userAssertionToken) {\n            throw new Error(`${credentialName}: tenantId, clientId, clientSecret (or certificatePath) and userAssertionToken are required parameters.`);\n        }\n        this.tenantId = tenantId;\n        this.additionallyAllowedTenantIds = resolveAdditionallyAllowedTenantIds(additionallyAllowedTenantIds);\n        this.msalFlow = new MsalOnBehalfOf(Object.assign(Object.assign({}, this.options), { logger, tokenCredentialOptions: this.options }));\n    }\n    /**\n     * Authenticates with Azure Active Directory and returns an access token if successful.\n     * If authentication fails, a {@link CredentialUnavailableError} will be thrown with the details of the failure.\n     *\n     * @param scopes - The list of scopes for which the token will have access.\n     * @param options - The options used to configure the underlying network requests.\n     */\n    async getToken(scopes, options = {}) {\n        return tracingClient.withSpan(`${credentialName}.getToken`, options, async (newOptions) => {\n            newOptions.tenantId = processMultiTenantRequest(this.tenantId, newOptions, this.additionallyAllowedTenantIds, logger);\n            const arrayScopes = ensureScopes(scopes);\n            return this.msalFlow.getToken(arrayScopes, newOptions);\n        });\n    }\n}\n//# sourceMappingURL=onBehalfOfCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport * from \"./plugins/consumer\";\nimport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\nexport { AuthenticationError, AggregateAuthenticationError, AuthenticationErrorName, AggregateAuthenticationErrorName, CredentialUnavailableError, CredentialUnavailableErrorName, AuthenticationRequiredError, } from \"./errors\";\nexport { serializeAuthenticationRecord, deserializeAuthenticationRecord } from \"./msal/utils\";\nexport { ChainedTokenCredential } from \"./credentials/chainedTokenCredential\";\nexport { ClientSecretCredential } from \"./credentials/clientSecretCredential\";\nexport { DefaultAzureCredential } from \"./credentials/defaultAzureCredential\";\nexport { EnvironmentCredential } from \"./credentials/environmentCredential\";\nexport { ClientCertificateCredential, } from \"./credentials/clientCertificateCredential\";\nexport { ClientAssertionCredential } from \"./credentials/clientAssertionCredential\";\nexport { AzureCliCredential } from \"./credentials/azureCliCredential\";\nexport { AzureDeveloperCliCredential } from \"./credentials/azureDeveloperCliCredential\";\nexport { InteractiveBrowserCredential } from \"./credentials/interactiveBrowserCredential\";\nexport { ManagedIdentityCredential, } from \"./credentials/managedIdentityCredential\";\nexport { DeviceCodeCredential } from \"./credentials/deviceCodeCredential\";\nexport { AuthorizationCodeCredential } from \"./credentials/authorizationCodeCredential\";\nexport { AzurePowerShellCredential } from \"./credentials/azurePowerShellCredential\";\nexport { UsernamePasswordCredential } from \"./credentials/usernamePasswordCredential\";\nexport { VisualStudioCodeCredential } from \"./credentials/visualStudioCodeCredential\";\nexport { OnBehalfOfCredential } from \"./credentials/onBehalfOfCredential\";\nexport { WorkloadIdentityCredential } from \"./credentials/workloadIdentityCredential\";\nexport { logger } from \"./util/logging\";\nexport { AzureAuthorityHosts } from \"./constants\";\n/**\n * Returns a new instance of the {@link DefaultAzureCredential}.\n */\nexport function getDefaultAzureCredential() {\n    return new DefaultAzureCredential();\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _events = require(\"events\");\nvar util = _interopRequireWildcard(require(\"util\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nclass Debug extends _events.EventEmitter {\n  /*\n    @options    Which debug details should be sent.\n                data    - dump of packet data\n                payload - details of decoded payload\n  */\n  constructor({\n    data = false,\n    payload = false,\n    packet = false,\n    token = false\n  } = {}) {\n    super();\n    this.options = {\n      data,\n      payload,\n      packet,\n      token\n    };\n    this.indent = '  ';\n  }\n  packet(direction, packet) {\n    if (this.haveListeners() && this.options.packet) {\n      this.log('');\n      this.log(direction);\n      this.log(packet.headerToString(this.indent));\n    }\n  }\n  data(packet) {\n    if (this.haveListeners() && this.options.data) {\n      this.log(packet.dataToString(this.indent));\n    }\n  }\n  payload(generatePayloadText) {\n    if (this.haveListeners() && this.options.payload) {\n      this.log(generatePayloadText());\n    }\n  }\n  token(token) {\n    if (this.haveListeners() && this.options.token) {\n      this.log(util.inspect(token, {\n        showHidden: false,\n        depth: 5,\n        colors: true\n      }));\n    }\n  }\n  haveListeners() {\n    return this.listeners('debug').length > 0;\n  }\n  log(text) {\n    this.emit('debug', text);\n  }\n}\nvar _default = Debug;\nexports.default = _default;\nmodule.exports = Debug;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsInV0aWwiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJEZWJ1ZyIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwiZGF0YSIsInBheWxvYWQiLCJwYWNrZXQiLCJ0b2tlbiIsIm9wdGlvbnMiLCJpbmRlbnQiLCJkaXJlY3Rpb24iLCJoYXZlTGlzdGVuZXJzIiwibG9nIiwiaGVhZGVyVG9TdHJpbmciLCJkYXRhVG9TdHJpbmciLCJnZW5lcmF0ZVBheWxvYWRUZXh0IiwiaW5zcGVjdCIsInNob3dIaWRkZW4iLCJkZXB0aCIsImNvbG9ycyIsImxpc3RlbmVycyIsImxlbmd0aCIsInRleHQiLCJlbWl0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RlYnVnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IHsgUGFja2V0IH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBEZWJ1ZyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgb3B0aW9uczoge1xuICAgIGRhdGE6IGJvb2xlYW47XG4gICAgcGF5bG9hZDogYm9vbGVhbjtcbiAgICBwYWNrZXQ6IGJvb2xlYW47XG4gICAgdG9rZW46IGJvb2xlYW47XG4gIH07XG5cbiAgZGVjbGFyZSBpbmRlbnQ6IHN0cmluZztcblxuICAvKlxuICAgIEBvcHRpb25zICAgIFdoaWNoIGRlYnVnIGRldGFpbHMgc2hvdWxkIGJlIHNlbnQuXG4gICAgICAgICAgICAgICAgZGF0YSAgICAtIGR1bXAgb2YgcGFja2V0IGRhdGFcbiAgICAgICAgICAgICAgICBwYXlsb2FkIC0gZGV0YWlscyBvZiBkZWNvZGVkIHBheWxvYWRcbiAgKi9cbiAgY29uc3RydWN0b3IoeyBkYXRhID0gZmFsc2UsIHBheWxvYWQgPSBmYWxzZSwgcGFja2V0ID0gZmFsc2UsIHRva2VuID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMub3B0aW9ucyA9IHsgZGF0YSwgcGF5bG9hZCwgcGFja2V0LCB0b2tlbiB9O1xuICAgIHRoaXMuaW5kZW50ID0gJyAgJztcbiAgfVxuXG4gIHBhY2tldChkaXJlY3Rpb246ICdSZWNlaXZlZCcgfCAnU2VudCcsIHBhY2tldDogUGFja2V0KSB7XG4gICAgaWYgKHRoaXMuaGF2ZUxpc3RlbmVycygpICYmIHRoaXMub3B0aW9ucy5wYWNrZXQpIHtcbiAgICAgIHRoaXMubG9nKCcnKTtcbiAgICAgIHRoaXMubG9nKGRpcmVjdGlvbik7XG4gICAgICB0aGlzLmxvZyhwYWNrZXQuaGVhZGVyVG9TdHJpbmcodGhpcy5pbmRlbnQpKTtcbiAgICB9XG4gIH1cblxuICBkYXRhKHBhY2tldDogUGFja2V0KSB7XG4gICAgaWYgKHRoaXMuaGF2ZUxpc3RlbmVycygpICYmIHRoaXMub3B0aW9ucy5kYXRhKSB7XG4gICAgICB0aGlzLmxvZyhwYWNrZXQuZGF0YVRvU3RyaW5nKHRoaXMuaW5kZW50KSk7XG4gICAgfVxuICB9XG5cbiAgcGF5bG9hZChnZW5lcmF0ZVBheWxvYWRUZXh0OiAoKSA9PiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5oYXZlTGlzdGVuZXJzKCkgJiYgdGhpcy5vcHRpb25zLnBheWxvYWQpIHtcbiAgICAgIHRoaXMubG9nKGdlbmVyYXRlUGF5bG9hZFRleHQoKSk7XG4gICAgfVxuICB9XG5cbiAgdG9rZW4odG9rZW46IGFueSkge1xuICAgIGlmICh0aGlzLmhhdmVMaXN0ZW5lcnMoKSAmJiB0aGlzLm9wdGlvbnMudG9rZW4pIHtcbiAgICAgIHRoaXMubG9nKHV0aWwuaW5zcGVjdCh0b2tlbiwgeyBzaG93SGlkZGVuOiBmYWxzZSwgZGVwdGg6IDUsIGNvbG9yczogdHJ1ZSB9KSk7XG4gICAgfVxuICB9XG5cbiAgaGF2ZUxpc3RlbmVycygpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMoJ2RlYnVnJykubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGxvZyh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmVtaXQoJ2RlYnVnJywgdGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVidWc7XG5tb2R1bGUuZXhwb3J0cyA9IERlYnVnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFBNkIsU0FBQUcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUYsd0JBQUFNLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxvQkFBQUEsR0FBQSx3QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFHLEtBQUEsR0FBQVIsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBTyxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBSixH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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nclass AbortError extends Error {\n  constructor() {\n    super('The operation was aborted');\n    this.code = 'ABORT_ERR';\n    this.name = 'AbortError';\n  }\n}\nexports.default = AbortError;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBYm9ydEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsImNvZGUiLCJuYW1lIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3JzL2Fib3J0LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkJyk7XG5cbiAgICB0aGlzLmNvZGUgPSAnQUJPUlRfRVJSJztcbiAgICB0aGlzLm5hbWUgPSAnQWJvcnRFcnJvcic7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWUsTUFBTUEsVUFBVSxTQUFTQyxLQUFLLENBQUM7RUFHNUNDLFdBQVdBLENBQUEsRUFBRztJQUNaLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztJQUVsQyxJQUFJLENBQUNDLElBQUksR0FBRyxXQUFXO0lBQ3ZCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLFlBQVk7RUFDMUI7QUFDRjtBQUFDQyxPQUFBLENBQUFDLE9BQUEsR0FBQU4sVUFBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sendInParallel = sendInParallel;\nexports.sendMessage = sendMessage;\nvar _dgram = _interopRequireDefault(require(\"dgram\"));\nvar _net = _interopRequireDefault(require(\"net\"));\nvar punycode = _interopRequireWildcard(require(\"punycode\"));\nvar _abortError = _interopRequireDefault(require(\"./errors/abort-error\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nasync function sendInParallel(addresses, port, request, signal) {\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  return await new Promise((resolve, reject) => {\n    const sockets = [];\n    let errorCount = 0;\n    const onError = err => {\n      errorCount++;\n      if (errorCount === addresses.length) {\n        signal.removeEventListener('abort', onAbort);\n        clearSockets();\n        reject(err);\n      }\n    };\n    const onMessage = message => {\n      signal.removeEventListener('abort', onAbort);\n      clearSockets();\n      resolve(message);\n    };\n    const onAbort = () => {\n      clearSockets();\n      reject(new _abortError.default());\n    };\n    const clearSockets = () => {\n      for (const socket of sockets) {\n        socket.removeListener('error', onError);\n        socket.removeListener('message', onMessage);\n        socket.close();\n      }\n    };\n    signal.addEventListener('abort', onAbort, {\n      once: true\n    });\n    for (let j = 0; j < addresses.length; j++) {\n      const udpType = addresses[j].family === 6 ? 'udp6' : 'udp4';\n      const socket = _dgram.default.createSocket(udpType);\n      sockets.push(socket);\n      socket.on('error', onError);\n      socket.on('message', onMessage);\n      socket.send(request, 0, request.length, port, addresses[j].address);\n    }\n  });\n}\nasync function sendMessage(host, port, lookup, signal, request) {\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  let addresses;\n  if (_net.default.isIP(host)) {\n    addresses = [{\n      address: host,\n      family: _net.default.isIPv6(host) ? 6 : 4\n    }];\n  } else {\n    addresses = await new Promise((resolve, reject) => {\n      const onAbort = () => {\n        reject(new _abortError.default());\n      };\n      signal.addEventListener('abort', onAbort);\n      lookup(punycode.toASCII(host), {\n        all: true\n      }, (err, addresses) => {\n        signal.removeEventListener('abort', onAbort);\n        err ? reject(err) : resolve(addresses);\n      });\n    });\n  }\n  return await sendInParallel(addresses, port, request, signal);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGdyYW0iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9uZXQiLCJwdW55Y29kZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2Fib3J0RXJyb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0Iiwic2VuZEluUGFyYWxsZWwiLCJhZGRyZXNzZXMiLCJwb3J0IiwicmVxdWVzdCIsInNpZ25hbCIsImFib3J0ZWQiLCJBYm9ydEVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzb2NrZXRzIiwiZXJyb3JDb3VudCIsIm9uRXJyb3IiLCJlcnIiLCJsZW5ndGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25BYm9ydCIsImNsZWFyU29ja2V0cyIsIm9uTWVzc2FnZSIsIm1lc3NhZ2UiLCJzb2NrZXQiLCJyZW1vdmVMaXN0ZW5lciIsImNsb3NlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJqIiwidWRwVHlwZSIsImZhbWlseSIsImRncmFtIiwiY3JlYXRlU29ja2V0IiwicHVzaCIsIm9uIiwic2VuZCIsImFkZHJlc3MiLCJzZW5kTWVzc2FnZSIsImhvc3QiLCJsb29rdXAiLCJuZXQiLCJpc0lQIiwiaXNJUHY2IiwidG9BU0NJSSIsImFsbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zZW5kZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRncmFtIGZyb20gJ2RncmFtJztcbmltcG9ydCBkbnMgZnJvbSAnZG5zJztcbmltcG9ydCBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCAqIGFzIHB1bnljb2RlIGZyb20gJ3B1bnljb2RlJztcbmltcG9ydCB7IEFib3J0U2lnbmFsIH0gZnJvbSAnbm9kZS1hYm9ydC1jb250cm9sbGVyJztcblxuaW1wb3J0IEFib3J0RXJyb3IgZnJvbSAnLi9lcnJvcnMvYWJvcnQtZXJyb3InO1xuXG50eXBlIExvb2t1cEZ1bmN0aW9uID0gKGhvc3RuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGRucy5Mb29rdXBBbGxPcHRpb25zLCBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgYWRkcmVzc2VzOiBkbnMuTG9va3VwQWRkcmVzc1tdKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEluUGFyYWxsZWwoYWRkcmVzc2VzOiBkbnMuTG9va3VwQWRkcmVzc1tdLCBwb3J0OiBudW1iZXIsIHJlcXVlc3Q6IEJ1ZmZlciwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcigpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPEJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNvY2tldHM6IGRncmFtLlNvY2tldFtdID0gW107XG5cbiAgICBsZXQgZXJyb3JDb3VudCA9IDA7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgaWYgKGVycm9yQ291bnQgPT09IGFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICAgIGNsZWFyU29ja2V0cygpO1xuXG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAobWVzc2FnZTogQnVmZmVyKSA9PiB7XG4gICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICAgIGNsZWFyU29ja2V0cygpO1xuXG4gICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgY2xlYXJTb2NrZXRzKCk7XG5cbiAgICAgIHJlamVjdChuZXcgQWJvcnRFcnJvcigpKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2xlYXJTb2NrZXRzID0gKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzb2NrZXQgb2Ygc29ja2V0cykge1xuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSk7XG4gICAgICAgIHNvY2tldC5jbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGFkZHJlc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3QgdWRwVHlwZSA9IGFkZHJlc3Nlc1tqXS5mYW1pbHkgPT09IDYgPyAndWRwNicgOiAndWRwNCc7XG5cbiAgICAgIGNvbnN0IHNvY2tldCA9IGRncmFtLmNyZWF0ZVNvY2tldCh1ZHBUeXBlKTtcbiAgICAgIHNvY2tldHMucHVzaChzb2NrZXQpO1xuICAgICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgc29ja2V0Lm9uKCdtZXNzYWdlJywgb25NZXNzYWdlKTtcbiAgICAgIHNvY2tldC5zZW5kKHJlcXVlc3QsIDAsIHJlcXVlc3QubGVuZ3RoLCBwb3J0LCBhZGRyZXNzZXNbal0uYWRkcmVzcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRNZXNzYWdlKGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCBsb29rdXA6IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsLCByZXF1ZXN0OiBCdWZmZXIpIHtcbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKTtcbiAgfVxuXG4gIGxldCBhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW107XG5cbiAgaWYgKG5ldC5pc0lQKGhvc3QpKSB7XG4gICAgYWRkcmVzc2VzID0gW1xuICAgICAgeyBhZGRyZXNzOiBob3N0LCBmYW1pbHk6IG5ldC5pc0lQdjYoaG9zdCkgPyA2IDogNCB9XG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICBhZGRyZXNzZXMgPSBhd2FpdCBuZXcgUHJvbWlzZTxkbnMuTG9va3VwQWRkcmVzc1tdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgICB9O1xuXG4gICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgbG9va3VwKHB1bnljb2RlLnRvQVNDSUkoaG9zdCksIHsgYWxsOiB0cnVlIH0sIChlcnIsIGFkZHJlc3NlcykgPT4ge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgICBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoYWRkcmVzc2VzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHNlbmRJblBhcmFsbGVsKGFkZHJlc3NlcywgcG9ydCwgcmVxdWVzdCwgc2lnbmFsKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElB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","const { EventEmitter } = require(\"events\");\n\nclass AbortSignal {\n  constructor() {\n    this.eventEmitter = new EventEmitter();\n    this.onabort = null;\n    this.aborted = false;\n    this.reason = undefined;\n  }\n  toString() {\n    return \"[object AbortSignal]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortSignal\";\n  }\n  removeEventListener(name, handler) {\n    this.eventEmitter.removeListener(name, handler);\n  }\n  addEventListener(name, handler) {\n    this.eventEmitter.on(name, handler);\n  }\n  dispatchEvent(type) {\n    const event = { type, target: this };\n    const handlerName = `on${type}`;\n\n    if (typeof this[handlerName] === \"function\") this[handlerName](event);\n\n    this.eventEmitter.emit(type, event);\n  }\n  throwIfAborted() {\n    if (this.aborted) {\n      throw this.reason;\n    }\n  }\n  static abort(reason) {\n    const controller = new AbortController();\n    controller.abort();\n    return controller.signal;\n  }\n  static timeout(time) {\n    const controller = new AbortController();\n    setTimeout(() => controller.abort(new Error(\"TimeoutError\")), time);\n    return controller.signal;\n  }\n}\nclass AbortController {\n  constructor() {\n    this.signal = new AbortSignal();\n  }\n  abort(reason) {\n    if (this.signal.aborted) return;\n\n    this.signal.aborted = true;\n\n    if (reason) this.signal.reason = reason;\n    else this.signal.reason = new Error(\"AbortError\");\n\n    this.signal.dispatchEvent(\"abort\");\n  }\n  toString() {\n    return \"[object AbortController]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortController\";\n  }\n}\n\nmodule.exports = { AbortController, AbortSignal };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nclass TimeoutError extends Error {\n  constructor() {\n    super('The operation was aborted due to timeout');\n    this.code = 'TIMEOUT_ERR';\n    this.name = 'TimeoutError';\n  }\n}\nexports.default = TimeoutError;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lb3V0RXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwiY29kZSIsIm5hbWUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvdGltZW91dC1lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGRlY2xhcmUgY29kZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdUaGUgb3BlcmF0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aW1lb3V0Jyk7XG5cbiAgICB0aGlzLmNvZGUgPSAnVElNRU9VVF9FUlInO1xuICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFlLE1BQU1BLFlBQVksU0FBU0MsS0FBSyxDQUFDO0VBRzlDQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixLQUFLLENBQUMsMENBQTBDLENBQUM7SUFFakQsSUFBSSxDQUFDQyxJQUFJLEdBQUcsYUFBYTtJQUN6QixJQUFJLENBQUNDLElBQUksR0FBRyxjQUFjO0VBQzVCO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBQyxPQUFBLEdBQUFOLFlBQUEifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.withTimeout = withTimeout;\nvar _nodeAbortController = require(\"node-abort-controller\");\nvar _timeoutError = _interopRequireDefault(require(\"../errors/timeout-error\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * Run the function `func` with an `AbortSignal` that will automatically abort after the time specified\n * by `timeout` or when the given `signal` is aborted.\n *\n * On timeout, the `timeoutSignal` will be aborted and a `TimeoutError` will be thrown.\n */\nasync function withTimeout(timeout, func, signal) {\n  const timeoutController = new _nodeAbortController.AbortController();\n  const abortCurrentAttempt = () => {\n    timeoutController.abort();\n  };\n  const timer = setTimeout(abortCurrentAttempt, timeout);\n  signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', abortCurrentAttempt, {\n    once: true\n  });\n  try {\n    return await func(timeoutController.signal);\n  } catch (err) {\n    if (err instanceof Error && err.name === 'AbortError' && !(signal && signal.aborted)) {\n      throw new _timeoutError.default();\n    }\n    throw err;\n  } finally {\n    signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', abortCurrentAttempt);\n    clearTimeout(timer);\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUFib3J0Q29udHJvbGxlciIsInJlcXVpcmUiLCJfdGltZW91dEVycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwid2l0aFRpbWVvdXQiLCJ0aW1lb3V0IiwiZnVuYyIsInNpZ25hbCIsInRpbWVvdXRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwiYWJvcnRDdXJyZW50QXR0ZW1wdCIsImFib3J0IiwidGltZXIiLCJzZXRUaW1lb3V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJhYm9ydGVkIiwiVGltZW91dEVycm9yIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy93aXRoLXRpbWVvdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJvcnRDb250cm9sbGVyLCBBYm9ydFNpZ25hbCB9IGZyb20gJ25vZGUtYWJvcnQtY29udHJvbGxlcic7XG5pbXBvcnQgVGltZW91dEVycm9yIGZyb20gJy4uL2Vycm9ycy90aW1lb3V0LWVycm9yJztcblxuLyoqXG4gKiBSdW4gdGhlIGZ1bmN0aW9uIGBmdW5jYCB3aXRoIGFuIGBBYm9ydFNpZ25hbGAgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgYWJvcnQgYWZ0ZXIgdGhlIHRpbWUgc3BlY2lmaWVkXG4gKiBieSBgdGltZW91dGAgb3Igd2hlbiB0aGUgZ2l2ZW4gYHNpZ25hbGAgaXMgYWJvcnRlZC5cbiAqXG4gKiBPbiB0aW1lb3V0LCB0aGUgYHRpbWVvdXRTaWduYWxgIHdpbGwgYmUgYWJvcnRlZCBhbmQgYSBgVGltZW91dEVycm9yYCB3aWxsIGJlIHRocm93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUaW1lb3V0PFQ+KHRpbWVvdXQ6IG51bWJlciwgZnVuYzogKHRpbWVvdXRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPFQ+LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8VD4ge1xuICBjb25zdCB0aW1lb3V0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgYWJvcnRDdXJyZW50QXR0ZW1wdCA9ICgpID0+IHsgdGltZW91dENvbnRyb2xsZXIuYWJvcnQoKTsgfTtcblxuICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoYWJvcnRDdXJyZW50QXR0ZW1wdCwgdGltZW91dCk7XG4gIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydEN1cnJlbnRBdHRlbXB0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnVuYyh0aW1lb3V0Q29udHJvbGxlci5zaWduYWwpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm5hbWUgPT09ICdBYm9ydEVycm9yJyAmJiAhKHNpZ25hbCAmJiBzaWduYWwuYWJvcnRlZCkpIHtcbiAgICAgIHRocm93IG5ldyBUaW1lb3V0RXJyb3IoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0Q3VycmVudEF0dGVtcHQpO1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsb0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFtRCxTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxlQUFlRyxXQUFXQSxDQUFJQyxPQUFlLEVBQUVDLElBQWdELEVBQUVDLE1BQW9CLEVBQWM7RUFDeEksTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsb0NBQWUsQ0FBQyxDQUFDO0VBQy9DLE1BQU1DLG1CQUFtQixHQUFHQSxDQUFBLEtBQU07SUFBRUYsaUJBQWlCLENBQUNHLEtBQUssQ0FBQyxDQUFDO0VBQUUsQ0FBQztFQUVoRSxNQUFNQyxLQUFLLEdBQUdDLFVBQVUsQ0FBQ0gsbUJBQW1CLEVBQUVMLE9BQU8sQ0FBQztFQUN0REUsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVPLGdCQUFnQixDQUFDLE9BQU8sRUFBRUosbUJBQW1CLEVBQUU7SUFBRUssSUFBSSxFQUFFO0VBQUssQ0FBQyxDQUFDO0VBRXRFLElBQUk7SUFDRixPQUFPLE1BQU1ULElBQUksQ0FBQ0UsaUJBQWlCLENBQUNELE1BQU0sQ0FBQztFQUM3QyxDQUFDLENBQUMsT0FBT1MsR0FBRyxFQUFFO0lBQ1osSUFBSUEsR0FBRyxZQUFZQyxLQUFLLElBQUlELEdBQUcsQ0FBQ0UsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFWCxNQUFNLElBQUlBLE1BQU0sQ0FBQ1ksT0FBTyxDQUFDLEVBQUU7TUFDcEYsTUFBTSxJQUFJQyxxQkFBWSxDQUFDLENBQUM7SUFDMUI7SUFFQSxNQUFNSixHQUFHO0VBQ1gsQ0FBQyxTQUFTO0lBQ1JULE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFYyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVYLG1CQUFtQixDQUFDO0lBQ3pEWSxZQUFZLENBQUNWLEtBQUssQ0FBQztFQUNyQjtBQUNGIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.instanceLookup = instanceLookup;\nexports.parseBrowserResponse = parseBrowserResponse;\nvar _dns = _interopRequireDefault(require(\"dns\"));\nvar _abortError = _interopRequireDefault(require(\"./errors/abort-error\"));\nvar _sender = require(\"./sender\");\nvar _withTimeout = require(\"./utils/with-timeout\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst SQL_SERVER_BROWSER_PORT = 1434;\nconst TIMEOUT = 2 * 1000;\nconst RETRIES = 3;\n// There are three bytes at the start of the response, whose purpose is unknown.\nconst MYSTERY_HEADER_LENGTH = 3;\n// Most of the functionality has been determined from from jTDS's MSSqlServerInfo class.\nasync function instanceLookup(options) {\n  const server = options.server;\n  if (typeof server !== 'string') {\n    throw new TypeError('Invalid arguments: \"server\" must be a string');\n  }\n  const instanceName = options.instanceName;\n  if (typeof instanceName !== 'string') {\n    throw new TypeError('Invalid arguments: \"instanceName\" must be a string');\n  }\n  const timeout = options.timeout === undefined ? TIMEOUT : options.timeout;\n  if (typeof timeout !== 'number') {\n    throw new TypeError('Invalid arguments: \"timeout\" must be a number');\n  }\n  const retries = options.retries === undefined ? RETRIES : options.retries;\n  if (typeof retries !== 'number') {\n    throw new TypeError('Invalid arguments: \"retries\" must be a number');\n  }\n  if (options.lookup !== undefined && typeof options.lookup !== 'function') {\n    throw new TypeError('Invalid arguments: \"lookup\" must be a function');\n  }\n  const lookup = options.lookup ?? _dns.default.lookup;\n  if (options.port !== undefined && typeof options.port !== 'number') {\n    throw new TypeError('Invalid arguments: \"port\" must be a number');\n  }\n  const port = options.port ?? SQL_SERVER_BROWSER_PORT;\n  const signal = options.signal;\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  let response;\n  for (let i = 0; i <= retries; i++) {\n    try {\n      response = await (0, _withTimeout.withTimeout)(timeout, async signal => {\n        const request = Buffer.from([0x02]);\n        return await (0, _sender.sendMessage)(options.server, port, lookup, signal, request);\n      }, signal);\n    } catch (err) {\n      // If the current attempt timed out, continue with the next\n      if (!signal.aborted && err instanceof Error && err.name === 'TimeoutError') {\n        continue;\n      }\n      throw err;\n    }\n  }\n  if (!response) {\n    throw new Error('Failed to get response from SQL Server Browser on ' + server);\n  }\n  const message = response.toString('ascii', MYSTERY_HEADER_LENGTH);\n  const foundPort = parseBrowserResponse(message, instanceName);\n  if (!foundPort) {\n    throw new Error('Port for ' + instanceName + ' not found in ' + options.server);\n  }\n  return foundPort;\n}\nfunction parseBrowserResponse(response, instanceName) {\n  let getPort;\n  const instances = response.split(';;');\n  for (let i = 0, len = instances.length; i < len; i++) {\n    const instance = instances[i];\n    const parts = instance.split(';');\n    for (let p = 0, partsLen = parts.length; p < partsLen; p += 2) {\n      const name = parts[p];\n      const value = parts[p + 1];\n      if (name === 'tcp' && getPort) {\n        const port = parseInt(value, 10);\n        return port;\n      }\n      if (name === 'InstanceName') {\n        if (value.toUpperCase() === instanceName.toUpperCase()) {\n          getPort = true;\n        } else {\n          getPort = false;\n        }\n      }\n    }\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZG5zIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYWJvcnRFcnJvciIsIl9zZW5kZXIiLCJfd2l0aFRpbWVvdXQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNRTF9TRVJWRVJfQlJPV1NFUl9QT1JUIiwiVElNRU9VVCIsIlJFVFJJRVMiLCJNWVNURVJZX0hFQURFUl9MRU5HVEgiLCJpbnN0YW5jZUxvb2t1cCIsIm9wdGlvbnMiLCJzZXJ2ZXIiLCJUeXBlRXJyb3IiLCJpbnN0YW5jZU5hbWUiLCJ0aW1lb3V0IiwidW5kZWZpbmVkIiwicmV0cmllcyIsImxvb2t1cCIsImRucyIsInBvcnQiLCJzaWduYWwiLCJhYm9ydGVkIiwiQWJvcnRFcnJvciIsInJlc3BvbnNlIiwiaSIsIndpdGhUaW1lb3V0IiwicmVxdWVzdCIsIkJ1ZmZlciIsImZyb20iLCJzZW5kTWVzc2FnZSIsImVyciIsIkVycm9yIiwibmFtZSIsIm1lc3NhZ2UiLCJ0b1N0cmluZyIsImZvdW5kUG9ydCIsInBhcnNlQnJvd3NlclJlc3BvbnNlIiwiZ2V0UG9ydCIsImluc3RhbmNlcyIsInNwbGl0IiwibGVuIiwibGVuZ3RoIiwiaW5zdGFuY2UiLCJwYXJ0cyIsInAiLCJwYXJ0c0xlbiIsInZhbHVlIiwicGFyc2VJbnQiLCJ0b1VwcGVyQ2FzZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnN0YW5jZS1sb29rdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRucyBmcm9tICdkbnMnO1xuaW1wb3J0IHsgQWJvcnRTaWduYWwgfSBmcm9tICdub2RlLWFib3J0LWNvbnRyb2xsZXInO1xuXG5pbXBvcnQgQWJvcnRFcnJvciBmcm9tICcuL2Vycm9ycy9hYm9ydC1lcnJvcic7XG5pbXBvcnQgeyBzZW5kTWVzc2FnZSB9IGZyb20gJy4vc2VuZGVyJztcbmltcG9ydCB7IHdpdGhUaW1lb3V0IH0gZnJvbSAnLi91dGlscy93aXRoLXRpbWVvdXQnO1xuXG5jb25zdCBTUUxfU0VSVkVSX0JST1dTRVJfUE9SVCA9IDE0MzQ7XG5jb25zdCBUSU1FT1VUID0gMiAqIDEwMDA7XG5jb25zdCBSRVRSSUVTID0gMztcbi8vIFRoZXJlIGFyZSB0aHJlZSBieXRlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHJlc3BvbnNlLCB3aG9zZSBwdXJwb3NlIGlzIHVua25vd24uXG5jb25zdCBNWVNURVJZX0hFQURFUl9MRU5HVEggPSAzO1xuXG50eXBlIExvb2t1cEZ1bmN0aW9uID0gKGhvc3RuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGRucy5Mb29rdXBBbGxPcHRpb25zLCBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgYWRkcmVzc2VzOiBkbnMuTG9va3VwQWRkcmVzc1tdKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG4vLyBNb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGRldGVybWluZWQgZnJvbSBmcm9tIGpURFMncyBNU1NxbFNlcnZlckluZm8gY2xhc3MuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFuY2VMb29rdXAob3B0aW9uczogeyBzZXJ2ZXI6IHN0cmluZywgaW5zdGFuY2VOYW1lOiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIsIHJldHJpZXM/OiBudW1iZXIsIHBvcnQ/OiBudW1iZXIsIGxvb2t1cD86IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsIH0pIHtcbiAgY29uc3Qgc2VydmVyID0gb3B0aW9ucy5zZXJ2ZXI7XG4gIGlmICh0eXBlb2Ygc2VydmVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYXJndW1lbnRzOiBcInNlcnZlclwiIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGNvbnN0IGluc3RhbmNlTmFtZSA9IG9wdGlvbnMuaW5zdGFuY2VOYW1lO1xuICBpZiAodHlwZW9mIGluc3RhbmNlTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJpbnN0YW5jZU5hbWVcIiBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBjb25zdCB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0ID09PSB1bmRlZmluZWQgPyBUSU1FT1VUIDogb3B0aW9ucy50aW1lb3V0O1xuICBpZiAodHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudHM6IFwidGltZW91dFwiIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuXG4gIGNvbnN0IHJldHJpZXMgPSBvcHRpb25zLnJldHJpZXMgPT09IHVuZGVmaW5lZCA/IFJFVFJJRVMgOiBvcHRpb25zLnJldHJpZXM7XG4gIGlmICh0eXBlb2YgcmV0cmllcyAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJyZXRyaWVzXCIgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMubG9va3VwICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMubG9va3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudHM6IFwibG9va3VwXCIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgY29uc3QgbG9va3VwID0gb3B0aW9ucy5sb29rdXAgPz8gZG5zLmxvb2t1cDtcblxuICBpZiAob3B0aW9ucy5wb3J0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMucG9ydCAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50czogXCJwb3J0XCIgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGNvbnN0IHBvcnQgPSBvcHRpb25zLnBvcnQgPz8gU1FMX1NFUlZFUl9CUk9XU0VSX1BPUlQ7XG5cbiAgY29uc3Qgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XG5cbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKTtcbiAgfVxuXG4gIGxldCByZXNwb25zZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8PSByZXRyaWVzOyBpKyspIHtcbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB3aXRoVGltZW91dCh0aW1lb3V0LCBhc3luYyAoc2lnbmFsKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCdWZmZXIuZnJvbShbMHgwMl0pO1xuICAgICAgICByZXR1cm4gYXdhaXQgc2VuZE1lc3NhZ2Uob3B0aW9ucy5zZXJ2ZXIsIHBvcnQsIGxvb2t1cCwgc2lnbmFsLCByZXF1ZXN0KTtcbiAgICAgIH0sIHNpZ25hbCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBJZiB0aGUgY3VycmVudCBhdHRlbXB0IHRpbWVkIG91dCwgY29udGludWUgd2l0aCB0aGUgbmV4dFxuICAgICAgaWYgKCFzaWduYWwuYWJvcnRlZCAmJiBlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IHJlc3BvbnNlIGZyb20gU1FMIFNlcnZlciBCcm93c2VyIG9uICcgKyBzZXJ2ZXIpO1xuICB9XG5cbiAgY29uc3QgbWVzc2FnZSA9IHJlc3BvbnNlLnRvU3RyaW5nKCdhc2NpaScsIE1ZU1RFUllfSEVBREVSX0xFTkdUSCk7XG4gIGNvbnN0IGZvdW5kUG9ydCA9IHBhcnNlQnJvd3NlclJlc3BvbnNlKG1lc3NhZ2UsIGluc3RhbmNlTmFtZSk7XG5cbiAgaWYgKCFmb3VuZFBvcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnQgZm9yICcgKyBpbnN0YW5jZU5hbWUgKyAnIG5vdCBmb3VuZCBpbiAnICsgb3B0aW9ucy5zZXJ2ZXIpO1xuICB9XG5cbiAgcmV0dXJuIGZvdW5kUG9ydDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQnJvd3NlclJlc3BvbnNlKHJlc3BvbnNlOiBzdHJpbmcsIGluc3RhbmNlTmFtZTogc3RyaW5nKSB7XG4gIGxldCBnZXRQb3J0O1xuXG4gIGNvbnN0IGluc3RhbmNlcyA9IHJlc3BvbnNlLnNwbGl0KCc7OycpO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gaW5zdGFuY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNbaV07XG4gICAgY29uc3QgcGFydHMgPSBpbnN0YW5jZS5zcGxpdCgnOycpO1xuXG4gICAgZm9yIChsZXQgcCA9IDAsIHBhcnRzTGVuID0gcGFydHMubGVuZ3RoOyBwIDwgcGFydHNMZW47IHAgKz0gMikge1xuICAgICAgY29uc3QgbmFtZSA9IHBhcnRzW3BdO1xuICAgICAgY29uc3QgdmFsdWUgPSBwYXJ0c1twICsgMV07XG5cbiAgICAgIGlmIChuYW1lID09PSAndGNwJyAmJiBnZXRQb3J0KSB7XG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICByZXR1cm4gcG9ydDtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09ICdJbnN0YW5jZU5hbWUnKSB7XG4gICAgICAgIGlmICh2YWx1ZS50b1VwcGVyQ2FzZSgpID09PSBpbnN0YW5jZU5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgICAgIGdldFBvcnQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdldFBvcnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TransientErrorLookup = void 0;\n// This simple piece of code is factored out into a separate class to make it\n// easy to stub it out in tests. It's hard, if not impossible, to cause a\n// transient error on demand in tests.\nclass TransientErrorLookup {\n  isTransientError(error) {\n    // This list of transient errors comes from Microsoft implementation of SqlClient:\n    //  - https://github.com/dotnet/corefx/blob/master/src/System.Data.SqlClient/src/System/Data/SqlClient/SqlInternalConnectionTds.cs#L115\n    const transientErrors = [4060, 10928, 10929, 40197, 40501, 40613];\n    return transientErrors.indexOf(error) !== -1;\n  }\n}\nexports.TransientErrorLookup = TransientErrorLookup;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2llbnRFcnJvckxvb2t1cCIsImlzVHJhbnNpZW50RXJyb3IiLCJlcnJvciIsInRyYW5zaWVudEVycm9ycyIsImluZGV4T2YiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3RyYW5zaWVudC1lcnJvci1sb29rdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBzaW1wbGUgcGllY2Ugb2YgY29kZSBpcyBmYWN0b3JlZCBvdXQgaW50byBhIHNlcGFyYXRlIGNsYXNzIHRvIG1ha2UgaXRcbi8vIGVhc3kgdG8gc3R1YiBpdCBvdXQgaW4gdGVzdHMuIEl0J3MgaGFyZCwgaWYgbm90IGltcG9zc2libGUsIHRvIGNhdXNlIGFcbi8vIHRyYW5zaWVudCBlcnJvciBvbiBkZW1hbmQgaW4gdGVzdHMuXG5leHBvcnQgY2xhc3MgVHJhbnNpZW50RXJyb3JMb29rdXAge1xuICBpc1RyYW5zaWVudEVycm9yKGVycm9yOiBudW1iZXIpIHtcbiAgICAvLyBUaGlzIGxpc3Qgb2YgdHJhbnNpZW50IGVycm9ycyBjb21lcyBmcm9tIE1pY3Jvc29mdCBpbXBsZW1lbnRhdGlvbiBvZiBTcWxDbGllbnQ6XG4gICAgLy8gIC0gaHR0cHM6Ly9naXRodWIuY29tL2RvdG5ldC9jb3JlZngvYmxvYi9tYXN0ZXIvc3JjL1N5c3RlbS5EYXRhLlNxbENsaWVudC9zcmMvU3lzdGVtL0RhdGEvU3FsQ2xpZW50L1NxbEludGVybmFsQ29ubmVjdGlvblRkcy5jcyNMMTE1XG4gICAgY29uc3QgdHJhbnNpZW50RXJyb3JzID0gWzQwNjAsIDEwOTI4LCAxMDkyOSwgNDAxOTcsIDQwNTAxLCA0MDYxM107XG4gICAgcmV0dXJuIHRyYW5zaWVudEVycm9ycy5pbmRleE9mKGVycm9yKSAhPT0gLTE7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ08sTUFBTUEsb0JBQW9CLENBQUM7RUFDaENDLGdCQUFnQkEsQ0FBQ0MsS0FBYSxFQUFFO0lBQzlCO0lBQ0E7SUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNqRSxPQUFPQSxlQUFlLENBQUNDLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzlDO0FBQ0Y7QUFBQ0csT0FBQSxDQUFBTCxvQkFBQSxHQUFBQSxvQkFBQSJ9","/* global window, exports, define */\n\n!function() {\n    'use strict'\n\n    var re = {\n        not_string: /[^s]/,\n        not_bool: /[^t]/,\n        not_type: /[^T]/,\n        not_primitive: /[^v]/,\n        number: /[diefg]/,\n        numeric_arg: /[bcdiefguxX]/,\n        json: /[j]/,\n        not_json: /[^j]/,\n        text: /^[^\\x25]+/,\n        modulo: /^\\x25{2}/,\n        placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n        key: /^([a-z_][a-z_\\d]*)/i,\n        key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n        index_access: /^\\[(\\d+)\\]/,\n        sign: /^[+-]/\n    }\n\n    function sprintf(key) {\n        // `arguments` is not an array, but should be fine for this call\n        return sprintf_format(sprintf_parse(key), arguments)\n    }\n\n    function vsprintf(fmt, argv) {\n        return sprintf.apply(null, [fmt].concat(argv || []))\n    }\n\n    function sprintf_format(parse_tree, argv) {\n        var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n        for (i = 0; i < tree_length; i++) {\n            if (typeof parse_tree[i] === 'string') {\n                output += parse_tree[i]\n            }\n            else if (typeof parse_tree[i] === 'object') {\n                ph = parse_tree[i] // convenience purposes only\n                if (ph.keys) { // keyword argument\n                    arg = argv[cursor]\n                    for (k = 0; k < ph.keys.length; k++) {\n                        if (arg == undefined) {\n                            throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n                        }\n                        arg = arg[ph.keys[k]]\n                    }\n                }\n                else if (ph.param_no) { // positional argument (explicit)\n                    arg = argv[ph.param_no]\n                }\n                else { // positional argument (implicit)\n                    arg = argv[cursor++]\n                }\n\n                if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n                    arg = arg()\n                }\n\n                if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n                    throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n                }\n\n                if (re.number.test(ph.type)) {\n                    is_positive = arg >= 0\n                }\n\n                switch (ph.type) {\n                    case 'b':\n                        arg = parseInt(arg, 10).toString(2)\n                        break\n                    case 'c':\n                        arg = String.fromCharCode(parseInt(arg, 10))\n                        break\n                    case 'd':\n                    case 'i':\n                        arg = parseInt(arg, 10)\n                        break\n                    case 'j':\n                        arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n                        break\n                    case 'e':\n                        arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n                        break\n                    case 'f':\n                        arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n                        break\n                    case 'g':\n                        arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n                        break\n                    case 'o':\n                        arg = (parseInt(arg, 10) >>> 0).toString(8)\n                        break\n                    case 's':\n                        arg = String(arg)\n                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n                        break\n                    case 't':\n                        arg = String(!!arg)\n                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n                        break\n                    case 'T':\n                        arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n                        break\n                    case 'u':\n                        arg = parseInt(arg, 10) >>> 0\n                        break\n                    case 'v':\n                        arg = arg.valueOf()\n                        arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n                        break\n                    case 'x':\n                        arg = (parseInt(arg, 10) >>> 0).toString(16)\n                        break\n                    case 'X':\n                        arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n                        break\n                }\n                if (re.json.test(ph.type)) {\n                    output += arg\n                }\n                else {\n                    if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n                        sign = is_positive ? '+' : '-'\n                        arg = arg.toString().replace(re.sign, '')\n                    }\n                    else {\n                        sign = ''\n                    }\n                    pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n                    pad_length = ph.width - (sign + arg).length\n                    pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n                    output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n                }\n            }\n        }\n        return output\n    }\n\n    var sprintf_cache = Object.create(null)\n\n    function sprintf_parse(fmt) {\n        if (sprintf_cache[fmt]) {\n            return sprintf_cache[fmt]\n        }\n\n        var _fmt = fmt, match, parse_tree = [], arg_names = 0\n        while (_fmt) {\n            if ((match = re.text.exec(_fmt)) !== null) {\n                parse_tree.push(match[0])\n            }\n            else if ((match = re.modulo.exec(_fmt)) !== null) {\n                parse_tree.push('%')\n            }\n            else if ((match = re.placeholder.exec(_fmt)) !== null) {\n                if (match[2]) {\n                    arg_names |= 1\n                    var field_list = [], replacement_field = match[2], field_match = []\n                    if ((field_match = re.key.exec(replacement_field)) !== null) {\n                        field_list.push(field_match[1])\n                        while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n                            if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n                                field_list.push(field_match[1])\n                            }\n                            else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n                                field_list.push(field_match[1])\n                            }\n                            else {\n                                throw new SyntaxError('[sprintf] failed to parse named argument key')\n                            }\n                        }\n                    }\n                    else {\n                        throw new SyntaxError('[sprintf] failed to parse named argument key')\n                    }\n                    match[2] = field_list\n                }\n                else {\n                    arg_names |= 2\n                }\n                if (arg_names === 3) {\n                    throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n                }\n\n                parse_tree.push(\n                    {\n                        placeholder: match[0],\n                        param_no:    match[1],\n                        keys:        match[2],\n                        sign:        match[3],\n                        pad_char:    match[4],\n                        align:       match[5],\n                        width:       match[6],\n                        precision:   match[7],\n                        type:        match[8]\n                    }\n                )\n            }\n            else {\n                throw new SyntaxError('[sprintf] unexpected placeholder')\n            }\n            _fmt = _fmt.substring(match[0].length)\n        }\n        return sprintf_cache[fmt] = parse_tree\n    }\n\n    /**\n     * export to either browser or node.js\n     */\n    /* eslint-disable quote-props */\n    if (typeof exports !== 'undefined') {\n        exports['sprintf'] = sprintf\n        exports['vsprintf'] = vsprintf\n    }\n    if (typeof window !== 'undefined') {\n        window['sprintf'] = sprintf\n        window['vsprintf'] = vsprintf\n\n        if (typeof define === 'function' && define['amd']) {\n            define(function() {\n                return {\n                    'sprintf': sprintf,\n                    'vsprintf': vsprintf\n                }\n            })\n        }\n    }\n    /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.TYPE = exports.Packet = exports.OFFSET = exports.HEADER_LENGTH = void 0;\nexports.isPacketComplete = isPacketComplete;\nexports.packetLength = packetLength;\nvar _sprintfJs = require(\"sprintf-js\");\nconst HEADER_LENGTH = 8;\nexports.HEADER_LENGTH = HEADER_LENGTH;\nconst TYPE = {\n  SQL_BATCH: 0x01,\n  RPC_REQUEST: 0x03,\n  TABULAR_RESULT: 0x04,\n  ATTENTION: 0x06,\n  BULK_LOAD: 0x07,\n  TRANSACTION_MANAGER: 0x0E,\n  LOGIN7: 0x10,\n  NTLMAUTH_PKT: 0x11,\n  PRELOGIN: 0x12,\n  FEDAUTH_TOKEN: 0x08\n};\nexports.TYPE = TYPE;\nconst typeByValue = {};\nfor (const name in TYPE) {\n  typeByValue[TYPE[name]] = name;\n}\nconst STATUS = {\n  NORMAL: 0x00,\n  EOM: 0x01,\n  IGNORE: 0x02,\n  RESETCONNECTION: 0x08,\n  RESETCONNECTIONSKIPTRAN: 0x10\n};\nconst OFFSET = {\n  Type: 0,\n  Status: 1,\n  Length: 2,\n  SPID: 4,\n  PacketID: 6,\n  Window: 7\n};\nexports.OFFSET = OFFSET;\nconst DEFAULT_SPID = 0;\nconst DEFAULT_PACKETID = 1;\nconst DEFAULT_WINDOW = 0;\nconst NL = '\\n';\nclass Packet {\n  constructor(typeOrBuffer) {\n    if (typeOrBuffer instanceof Buffer) {\n      this.buffer = typeOrBuffer;\n    } else {\n      const type = typeOrBuffer;\n      this.buffer = Buffer.alloc(HEADER_LENGTH, 0);\n      this.buffer.writeUInt8(type, OFFSET.Type);\n      this.buffer.writeUInt8(STATUS.NORMAL, OFFSET.Status);\n      this.buffer.writeUInt16BE(DEFAULT_SPID, OFFSET.SPID);\n      this.buffer.writeUInt8(DEFAULT_PACKETID, OFFSET.PacketID);\n      this.buffer.writeUInt8(DEFAULT_WINDOW, OFFSET.Window);\n      this.setLength();\n    }\n  }\n  setLength() {\n    this.buffer.writeUInt16BE(this.buffer.length, OFFSET.Length);\n  }\n  length() {\n    return this.buffer.readUInt16BE(OFFSET.Length);\n  }\n  resetConnection(reset) {\n    let status = this.buffer.readUInt8(OFFSET.Status);\n    if (reset) {\n      status |= STATUS.RESETCONNECTION;\n    } else {\n      status &= 0xFF - STATUS.RESETCONNECTION;\n    }\n    this.buffer.writeUInt8(status, OFFSET.Status);\n  }\n  last(last) {\n    let status = this.buffer.readUInt8(OFFSET.Status);\n    if (arguments.length > 0) {\n      if (last) {\n        status |= STATUS.EOM;\n      } else {\n        status &= 0xFF - STATUS.EOM;\n      }\n      this.buffer.writeUInt8(status, OFFSET.Status);\n    }\n    return this.isLast();\n  }\n  ignore(last) {\n    let status = this.buffer.readUInt8(OFFSET.Status);\n    if (last) {\n      status |= STATUS.IGNORE;\n    } else {\n      status &= 0xFF - STATUS.IGNORE;\n    }\n    this.buffer.writeUInt8(status, OFFSET.Status);\n  }\n  isLast() {\n    return !!(this.buffer.readUInt8(OFFSET.Status) & STATUS.EOM);\n  }\n  packetId(packetId) {\n    if (packetId) {\n      this.buffer.writeUInt8(packetId % 256, OFFSET.PacketID);\n    }\n    return this.buffer.readUInt8(OFFSET.PacketID);\n  }\n  addData(data) {\n    this.buffer = Buffer.concat([this.buffer, data]);\n    this.setLength();\n    return this;\n  }\n  data() {\n    return this.buffer.slice(HEADER_LENGTH);\n  }\n  type() {\n    return this.buffer.readUInt8(OFFSET.Type);\n  }\n  statusAsString() {\n    const status = this.buffer.readUInt8(OFFSET.Status);\n    const statuses = [];\n    for (const name in STATUS) {\n      const value = STATUS[name];\n      if (status & value) {\n        statuses.push(name);\n      } else {\n        statuses.push(undefined);\n      }\n    }\n    return statuses.join(' ').trim();\n  }\n  headerToString(indent = '') {\n    const text = (0, _sprintfJs.sprintf)('type:0x%02X(%s), status:0x%02X(%s), length:0x%04X, spid:0x%04X, packetId:0x%02X, window:0x%02X', this.buffer.readUInt8(OFFSET.Type), typeByValue[this.buffer.readUInt8(OFFSET.Type)], this.buffer.readUInt8(OFFSET.Status), this.statusAsString(), this.buffer.readUInt16BE(OFFSET.Length), this.buffer.readUInt16BE(OFFSET.SPID), this.buffer.readUInt8(OFFSET.PacketID), this.buffer.readUInt8(OFFSET.Window));\n    return indent + text;\n  }\n  dataToString(indent = '') {\n    const BYTES_PER_GROUP = 0x04;\n    const CHARS_PER_GROUP = 0x08;\n    const BYTES_PER_LINE = 0x20;\n    const data = this.data();\n    let dataDump = '';\n    let chars = '';\n    for (let offset = 0; offset < data.length; offset++) {\n      if (offset % BYTES_PER_LINE === 0) {\n        dataDump += indent;\n        dataDump += (0, _sprintfJs.sprintf)('%04X  ', offset);\n      }\n      if (data[offset] < 0x20 || data[offset] > 0x7E) {\n        chars += '.';\n        if ((offset + 1) % CHARS_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) {\n          chars += ' ';\n        }\n      } else {\n        chars += String.fromCharCode(data[offset]);\n      }\n      if (data[offset] != null) {\n        dataDump += (0, _sprintfJs.sprintf)('%02X', data[offset]);\n      }\n      if ((offset + 1) % BYTES_PER_GROUP === 0 && !((offset + 1) % BYTES_PER_LINE === 0)) {\n        dataDump += ' ';\n      }\n      if ((offset + 1) % BYTES_PER_LINE === 0) {\n        dataDump += '  ' + chars;\n        chars = '';\n        if (offset < data.length - 1) {\n          dataDump += NL;\n        }\n      }\n    }\n    if (chars.length) {\n      dataDump += '  ' + chars;\n    }\n    return dataDump;\n  }\n  toString(indent = '') {\n    return this.headerToString(indent) + '\\n' + this.dataToString(indent + indent);\n  }\n  payloadString() {\n    return '';\n  }\n}\nexports.Packet = Packet;\nfunction isPacketComplete(potentialPacketBuffer) {\n  if (potentialPacketBuffer.length < HEADER_LENGTH) {\n    return false;\n  } else {\n    return potentialPacketBuffer.length >= potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n  }\n}\nfunction packetLength(potentialPacketBuffer) {\n  return potentialPacketBuffer.readUInt16BE(OFFSET.Length);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIkhFQURFUl9MRU5HVEgiLCJleHBvcnRzIiwiVFlQRSIsIlNRTF9CQVRDSCIsIlJQQ19SRVFVRVNUIiwiVEFCVUxBUl9SRVNVTFQiLCJBVFRFTlRJT04iLCJCVUxLX0xPQUQiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiTE9HSU43IiwiTlRMTUFVVEhfUEtUIiwiUFJFTE9HSU4iLCJGRURBVVRIX1RPS0VOIiwidHlwZUJ5VmFsdWUiLCJuYW1lIiwiU1RBVFVTIiwiTk9STUFMIiwiRU9NIiwiSUdOT1JFIiwiUkVTRVRDT05ORUNUSU9OIiwiUkVTRVRDT05ORUNUSU9OU0tJUFRSQU4iLCJPRkZTRVQiLCJUeXBlIiwiU3RhdHVzIiwiTGVuZ3RoIiwiU1BJRCIsIlBhY2tldElEIiwiV2luZG93IiwiREVGQVVMVF9TUElEIiwiREVGQVVMVF9QQUNLRVRJRCIsIkRFRkFVTFRfV0lORE9XIiwiTkwiLCJQYWNrZXQiLCJjb25zdHJ1Y3RvciIsInR5cGVPckJ1ZmZlciIsIkJ1ZmZlciIsImJ1ZmZlciIsInR5cGUiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkJFIiwic2V0TGVuZ3RoIiwibGVuZ3RoIiwicmVhZFVJbnQxNkJFIiwicmVzZXRDb25uZWN0aW9uIiwicmVzZXQiLCJzdGF0dXMiLCJyZWFkVUludDgiLCJsYXN0IiwiYXJndW1lbnRzIiwiaXNMYXN0IiwiaWdub3JlIiwicGFja2V0SWQiLCJhZGREYXRhIiwiZGF0YSIsImNvbmNhdCIsInNsaWNlIiwic3RhdHVzQXNTdHJpbmciLCJzdGF0dXNlcyIsInZhbHVlIiwicHVzaCIsInVuZGVmaW5lZCIsImpvaW4iLCJ0cmltIiwiaGVhZGVyVG9TdHJpbmciLCJpbmRlbnQiLCJ0ZXh0Iiwic3ByaW50ZiIsImRhdGFUb1N0cmluZyIsIkJZVEVTX1BFUl9HUk9VUCIsIkNIQVJTX1BFUl9HUk9VUCIsIkJZVEVTX1BFUl9MSU5FIiwiZGF0YUR1bXAiLCJjaGFycyIsIm9mZnNldCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInRvU3RyaW5nIiwicGF5bG9hZFN0cmluZyIsImlzUGFja2V0Q29tcGxldGUiLCJwb3RlbnRpYWxQYWNrZXRCdWZmZXIiLCJwYWNrZXRMZW5ndGgiXSwic291cmNlcyI6WyIuLi9zcmMvcGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9MRU5HVEggPSA4O1xuXG5leHBvcnQgY29uc3QgVFlQRTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgU1FMX0JBVENIOiAweDAxLFxuICBSUENfUkVRVUVTVDogMHgwMyxcbiAgVEFCVUxBUl9SRVNVTFQ6IDB4MDQsXG4gIEFUVEVOVElPTjogMHgwNixcbiAgQlVMS19MT0FEOiAweDA3LFxuICBUUkFOU0FDVElPTl9NQU5BR0VSOiAweDBFLFxuICBMT0dJTjc6IDB4MTAsXG4gIE5UTE1BVVRIX1BLVDogMHgxMSxcbiAgUFJFTE9HSU46IDB4MTIsXG4gIEZFREFVVEhfVE9LRU46IDB4MDhcbn07XG5cbmNvbnN0IHR5cGVCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBUWVBFKSB7XG4gIHR5cGVCeVZhbHVlW1RZUEVbbmFtZV1dID0gbmFtZTtcbn1cblxuY29uc3QgU1RBVFVTOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT1JNQUw6IDB4MDAsXG4gIEVPTTogMHgwMSxcbiAgSUdOT1JFOiAweDAyLFxuICBSRVNFVENPTk5FQ1RJT046IDB4MDgsXG4gIFJFU0VUQ09OTkVDVElPTlNLSVBUUkFOOiAweDEwXG59O1xuXG5leHBvcnQgY29uc3QgT0ZGU0VUID0ge1xuICBUeXBlOiAwLFxuICBTdGF0dXM6IDEsXG4gIExlbmd0aDogMixcbiAgU1BJRDogNCxcbiAgUGFja2V0SUQ6IDYsXG4gIFdpbmRvdzogN1xufTtcblxuY29uc3QgREVGQVVMVF9TUElEID0gMDtcblxuY29uc3QgREVGQVVMVF9QQUNLRVRJRCA9IDE7XG5cbmNvbnN0IERFRkFVTFRfV0lORE9XID0gMDtcblxuY29uc3QgTkwgPSAnXFxuJztcblxuZXhwb3J0IGNsYXNzIFBhY2tldCB7XG4gIGRlY2xhcmUgYnVmZmVyOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IodHlwZU9yQnVmZmVyOiBCdWZmZXIgfCBudW1iZXIpIHtcbiAgICBpZiAodHlwZU9yQnVmZmVyIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IHR5cGVPckJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVPckJ1ZmZlcjtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKEhFQURFUl9MRU5HVEgsIDApO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OCh0eXBlLCBPRkZTRVQuVHlwZSk7XG4gICAgICB0aGlzLmJ1ZmZlci53cml0ZVVJbnQ4KFNUQVRVUy5OT1JNQUwsIE9GRlNFVC5TdGF0dXMpO1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRShERUZBVUxUX1NQSUQsIE9GRlNFVC5TUElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9QQUNLRVRJRCwgT0ZGU0VULlBhY2tldElEKTtcbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoREVGQVVMVF9XSU5ET1csIE9GRlNFVC5XaW5kb3cpO1xuICAgICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICB9XG4gIH1cblxuICBzZXRMZW5ndGgoKSB7XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50MTZCRSh0aGlzLmJ1ZmZlci5sZW5ndGgsIE9GRlNFVC5MZW5ndGgpO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULkxlbmd0aCk7XG4gIH1cblxuICByZXNldENvbm5lY3Rpb24ocmVzZXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpO1xuICAgIGlmIChyZXNldCkge1xuICAgICAgc3RhdHVzIHw9IFNUQVRVUy5SRVNFVENPTk5FQ1RJT047XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLlJFU0VUQ09OTkVDVElPTjtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChzdGF0dXMsIE9GRlNFVC5TdGF0dXMpO1xuICB9XG5cbiAgbGFzdChsYXN0PzogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICBzdGF0dXMgfD0gU1RBVFVTLkVPTTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyAmPSAweEZGIC0gU1RBVFVTLkVPTTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNMYXN0KCk7XG4gIH1cblxuICBpZ25vcmUobGFzdDogYm9vbGVhbikge1xuICAgIGxldCBzdGF0dXMgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHN0YXR1cyB8PSBTVEFUVVMuSUdOT1JFO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0dXMgJj0gMHhGRiAtIFNUQVRVUy5JR05PUkU7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLndyaXRlVUludDgoc3RhdHVzLCBPRkZTRVQuU3RhdHVzKTtcbiAgfVxuXG4gIGlzTGFzdCgpIHtcbiAgICByZXR1cm4gISEodGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5TdGF0dXMpICYgU1RBVFVTLkVPTSk7XG4gIH1cblxuICBwYWNrZXRJZChwYWNrZXRJZD86IG51bWJlcikge1xuICAgIGlmIChwYWNrZXRJZCkge1xuICAgICAgdGhpcy5idWZmZXIud3JpdGVVSW50OChwYWNrZXRJZCAlIDI1NiwgT0ZGU0VULlBhY2tldElEKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuUGFja2V0SUQpO1xuICB9XG5cbiAgYWRkRGF0YShkYXRhOiBCdWZmZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLCBkYXRhXSk7XG4gICAgdGhpcy5zZXRMZW5ndGgoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKEhFQURFUl9MRU5HVEgpO1xuICB9XG5cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5UeXBlKTtcbiAgfVxuXG4gIHN0YXR1c0FzU3RyaW5nKCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuU3RhdHVzKTtcbiAgICBjb25zdCBzdGF0dXNlcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIGluIFNUQVRVUykge1xuICAgICAgY29uc3QgdmFsdWUgPSBTVEFUVVNbbmFtZV07XG5cbiAgICAgIGlmIChzdGF0dXMgJiB2YWx1ZSkge1xuICAgICAgICBzdGF0dXNlcy5wdXNoKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdHVzZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGF0dXNlcy5qb2luKCcgJykudHJpbSgpO1xuICB9XG5cbiAgaGVhZGVyVG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3ByaW50ZigndHlwZToweCUwMlgoJXMpLCBzdGF0dXM6MHglMDJYKCVzKSwgbGVuZ3RoOjB4JTA0WCwgc3BpZDoweCUwNFgsIHBhY2tldElkOjB4JTAyWCwgd2luZG93OjB4JTAyWCcsIHRoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSksIHR5cGVCeVZhbHVlW3RoaXMuYnVmZmVyLnJlYWRVSW50OChPRkZTRVQuVHlwZSldLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlN0YXR1cyksIHRoaXMuc3RhdHVzQXNTdHJpbmcoKSwgdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDE2QkUoT0ZGU0VULlNQSUQpLCB0aGlzLmJ1ZmZlci5yZWFkVUludDgoT0ZGU0VULlBhY2tldElEKSwgdGhpcy5idWZmZXIucmVhZFVJbnQ4KE9GRlNFVC5XaW5kb3cpKTtcbiAgICByZXR1cm4gaW5kZW50ICsgdGV4dDtcbiAgfVxuXG4gIGRhdGFUb1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIGNvbnN0IEJZVEVTX1BFUl9HUk9VUCA9IDB4MDQ7XG4gICAgY29uc3QgQ0hBUlNfUEVSX0dST1VQID0gMHgwODtcbiAgICBjb25zdCBCWVRFU19QRVJfTElORSA9IDB4MjA7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpO1xuXG4gICAgbGV0IGRhdGFEdW1wID0gJyc7XG4gICAgbGV0IGNoYXJzID0gJyc7XG5cblxuICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGRhdGEubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgaWYgKG9mZnNldCAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSB7XG4gICAgICAgIGRhdGFEdW1wICs9IGluZGVudDtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTA0WCAgJywgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbb2Zmc2V0XSA8IDB4MjAgfHwgZGF0YVtvZmZzZXRdID4gMHg3RSkge1xuICAgICAgICBjaGFycyArPSAnLic7XG4gICAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQ0hBUlNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICAgIGNoYXJzICs9ICcgJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhcnMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW29mZnNldF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtvZmZzZXRdICE9IG51bGwpIHtcbiAgICAgICAgZGF0YUR1bXAgKz0gc3ByaW50ZignJTAyWCcsIGRhdGFbb2Zmc2V0XSk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoKG9mZnNldCArIDEpICUgQllURVNfUEVSX0dST1VQID09PSAwKSAmJiAhKChvZmZzZXQgKyAxKSAlIEJZVEVTX1BFUl9MSU5FID09PSAwKSkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICc7XG4gICAgICB9XG5cbiAgICAgIGlmICgob2Zmc2V0ICsgMSkgJSBCWVRFU19QRVJfTElORSA9PT0gMCkge1xuICAgICAgICBkYXRhRHVtcCArPSAnICAnICsgY2hhcnM7XG4gICAgICAgIGNoYXJzID0gJyc7XG4gICAgICAgIGlmIChvZmZzZXQgPCBkYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBkYXRhRHVtcCArPSBOTDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFycy5sZW5ndGgpIHtcbiAgICAgIGRhdGFEdW1wICs9ICcgICcgKyBjaGFycztcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUR1bXA7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmhlYWRlclRvU3RyaW5nKGluZGVudCkgKyAnXFxuJyArIHRoaXMuZGF0YVRvU3RyaW5nKGluZGVudCArIGluZGVudCk7XG4gIH1cblxuICBwYXlsb2FkU3RyaW5nKCkge1xuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWNrZXRDb21wbGV0ZShwb3RlbnRpYWxQYWNrZXRCdWZmZXI6IEJ1ZmZlcikge1xuICBpZiAocG90ZW50aWFsUGFja2V0QnVmZmVyLmxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBvdGVudGlhbFBhY2tldEJ1ZmZlci5sZW5ndGggPj0gcG90ZW50aWFsUGFja2V0QnVmZmVyLnJlYWRVSW50MTZCRShPRkZTRVQuTGVuZ3RoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2V0TGVuZ3RoKHBvdGVudGlhbFBhY2tldEJ1ZmZlcjogQnVmZmVyKSB7XG4gIHJldHVybiBwb3RlbnRpYWxQYWNrZXRCdWZmZXIucmVhZFVJbnQxNkJFKE9GRlNFVC5MZW5ndGgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLGFBQWEsR0FBRyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsYUFBQSxHQUFBQSxhQUFBO0FBRXhCLE1BQU1FLElBQStCLEdBQUc7RUFDN0NDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxjQUFjLEVBQUUsSUFBSTtFQUNwQkMsU0FBUyxFQUFFLElBQUk7RUFDZkMsU0FBUyxFQUFFLElBQUk7RUFDZkMsbUJBQW1CLEVBQUUsSUFBSTtFQUN6QkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsWUFBWSxFQUFFLElBQUk7RUFDbEJDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLGFBQWEsRUFBRTtBQUNqQixDQUFDO0FBQUNYLE9BQUEsQ0FBQUMsSUFBQSxHQUFBQSxJQUFBO0FBRUYsTUFBTVcsV0FBc0MsR0FBRyxDQUFDLENBQUM7QUFFakQsS0FBSyxNQUFNQyxJQUFJLElBQUlaLElBQUksRUFBRTtFQUN2QlcsV0FBVyxDQUFDWCxJQUFJ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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _sprintfJs = require(\"sprintf-js\");\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst optionBufferSize = 20;\nconst TOKEN = {\n  VERSION: 0x00,\n  ENCRYPTION: 0x01,\n  INSTOPT: 0x02,\n  THREADID: 0x03,\n  MARS: 0x04,\n  FEDAUTHREQUIRED: 0x06,\n  TERMINATOR: 0xFF\n};\nconst ENCRYPT = {\n  OFF: 0x00,\n  ON: 0x01,\n  NOT_SUP: 0x02,\n  REQ: 0x03\n};\nconst encryptByValue = {};\nfor (const name in ENCRYPT) {\n  const value = ENCRYPT[name];\n  encryptByValue[value] = name;\n}\nconst MARS = {\n  OFF: 0x00,\n  ON: 0x01\n};\nconst marsByValue = {};\nfor (const name in MARS) {\n  const value = MARS[name];\n  marsByValue[value] = name;\n}\n/*\n  s2.2.6.4\n */\nclass PreloginPayload {\n  constructor(bufferOrOptions = {\n    encrypt: false,\n    version: {\n      major: 0,\n      minor: 0,\n      build: 0,\n      subbuild: 0\n    }\n  }) {\n    if (bufferOrOptions instanceof Buffer) {\n      this.data = bufferOrOptions;\n      this.options = {\n        encrypt: false,\n        version: {\n          major: 0,\n          minor: 0,\n          build: 0,\n          subbuild: 0\n        }\n      };\n    } else {\n      this.options = bufferOrOptions;\n      this.createOptions();\n    }\n    this.extractOptions();\n  }\n  createOptions() {\n    const options = [this.createVersionOption(), this.createEncryptionOption(), this.createInstanceOption(), this.createThreadIdOption(), this.createMarsOption(), this.createFedAuthOption()];\n    let length = 0;\n    for (let i = 0, len = options.length; i < len; i++) {\n      const option = options[i];\n      length += 5 + option.data.length;\n    }\n    length++; // terminator\n    this.data = Buffer.alloc(length, 0);\n    let optionOffset = 0;\n    let optionDataOffset = 5 * options.length + 1;\n    for (let j = 0, len = options.length; j < len; j++) {\n      const option = options[j];\n      this.data.writeUInt8(option.token, optionOffset + 0);\n      this.data.writeUInt16BE(optionDataOffset, optionOffset + 1);\n      this.data.writeUInt16BE(option.data.length, optionOffset + 3);\n      optionOffset += 5;\n      option.data.copy(this.data, optionDataOffset);\n      optionDataOffset += option.data.length;\n    }\n    this.data.writeUInt8(TOKEN.TERMINATOR, optionOffset);\n  }\n  createVersionOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    buffer.writeUInt8(this.options.version.major);\n    buffer.writeUInt8(this.options.version.minor);\n    buffer.writeUInt16BE(this.options.version.build);\n    buffer.writeUInt16BE(this.options.version.subbuild);\n    return {\n      token: TOKEN.VERSION,\n      data: buffer.data\n    };\n  }\n  createEncryptionOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    if (this.options.encrypt) {\n      buffer.writeUInt8(ENCRYPT.ON);\n    } else {\n      buffer.writeUInt8(ENCRYPT.NOT_SUP);\n    }\n    return {\n      token: TOKEN.ENCRYPTION,\n      data: buffer.data\n    };\n  }\n  createInstanceOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    buffer.writeUInt8(0x00);\n    return {\n      token: TOKEN.INSTOPT,\n      data: buffer.data\n    };\n  }\n  createThreadIdOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    buffer.writeUInt32BE(0x00);\n    return {\n      token: TOKEN.THREADID,\n      data: buffer.data\n    };\n  }\n  createMarsOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    buffer.writeUInt8(MARS.OFF);\n    return {\n      token: TOKEN.MARS,\n      data: buffer.data\n    };\n  }\n  createFedAuthOption() {\n    const buffer = new _writableTrackingBuffer.default(optionBufferSize);\n    buffer.writeUInt8(0x01);\n    return {\n      token: TOKEN.FEDAUTHREQUIRED,\n      data: buffer.data\n    };\n  }\n  extractOptions() {\n    let offset = 0;\n    while (this.data[offset] !== TOKEN.TERMINATOR) {\n      let dataOffset = this.data.readUInt16BE(offset + 1);\n      const dataLength = this.data.readUInt16BE(offset + 3);\n      switch (this.data[offset]) {\n        case TOKEN.VERSION:\n          this.extractVersion(dataOffset);\n          break;\n        case TOKEN.ENCRYPTION:\n          this.extractEncryption(dataOffset);\n          break;\n        case TOKEN.INSTOPT:\n          this.extractInstance(dataOffset);\n          break;\n        case TOKEN.THREADID:\n          if (dataLength > 0) {\n            this.extractThreadId(dataOffset);\n          }\n          break;\n        case TOKEN.MARS:\n          this.extractMars(dataOffset);\n          break;\n        case TOKEN.FEDAUTHREQUIRED:\n          this.extractFedAuth(dataOffset);\n          break;\n      }\n      offset += 5;\n      dataOffset += dataLength;\n    }\n  }\n  extractVersion(offset) {\n    this.version = {\n      major: this.data.readUInt8(offset + 0),\n      minor: this.data.readUInt8(offset + 1),\n      build: this.data.readUInt16BE(offset + 2),\n      subbuild: this.data.readUInt16BE(offset + 4)\n    };\n  }\n  extractEncryption(offset) {\n    this.encryption = this.data.readUInt8(offset);\n    this.encryptionString = encryptByValue[this.encryption];\n  }\n  extractInstance(offset) {\n    this.instance = this.data.readUInt8(offset);\n  }\n  extractThreadId(offset) {\n    this.threadId = this.data.readUInt32BE(offset);\n  }\n  extractMars(offset) {\n    this.mars = this.data.readUInt8(offset);\n    this.marsString = marsByValue[this.mars];\n  }\n  extractFedAuth(offset) {\n    this.fedAuthRequired = this.data.readUInt8(offset);\n  }\n  toString(indent = '') {\n    return indent + 'PreLogin - ' + (0, _sprintfJs.sprintf)('version:%d.%d.%d.%d, encryption:0x%02X(%s), instopt:0x%02X, threadId:0x%08X, mars:0x%02X(%s)', this.version.major, this.version.minor, this.version.build, this.version.subbuild, this.encryption ? this.encryption : 0, this.encryptionString ? this.encryptionString : '', this.instance ? this.instance : 0, this.threadId ? this.threadId : 0, this.mars ? this.mars : 0, this.marsString ? this.marsString : '');\n  }\n}\nvar _default = PreloginPayload;\nexports.default = _default;\nmodule.exports = PreloginPayload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3B0aW9uQnVmZmVyU2l6ZSIsIlRPS0VOIiwiVkVSU0lPTiIsIkVOQ1JZUFRJT04iLCJJTlNUT1BUIiwiVEhSRUFESUQiLCJNQVJTIiwiRkVEQVVUSFJFUVVJUkVEIiwiVEVSTUlOQVRPUiIsIkVOQ1JZUFQiLCJPRkYiLCJPTiIsIk5PVF9TVVAiLCJSRVEiLCJlbmNyeXB0QnlWYWx1ZSIsIm5hbWUiLCJ2YWx1ZSIsIm1hcnNCeVZhbHVlIiwiUHJlbG9naW5QYXlsb2FkIiwiY29uc3RydWN0b3IiLCJidWZmZXJPck9wdGlvbnMiLCJlbmNyeXB0IiwidmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJidWlsZCIsInN1YmJ1aWxkIiwiQnVmZmVyIiwiZGF0YSIsIm9wdGlvbnMiLCJjcmVhdGVPcHRpb25zIiwiZXh0cmFjdE9wdGlvbnMiLCJjcmVhdGVWZXJzaW9uT3B0aW9uIiwiY3JlYXRlRW5jcnlwdGlvbk9wdGlvbiIsImNyZWF0ZUluc3RhbmNlT3B0aW9uIiwiY3JlYXRlVGhyZWFkSWRPcHRpb24iLCJjcmVhdGVNYXJzT3B0aW9uIiwiY3JlYXRlRmVkQXV0aE9wdGlvbiIsImxlbmd0aCIsImkiLCJsZW4iLCJvcHRpb24iLCJhbGxvYyIsIm9wdGlvbk9mZnNldCIsIm9wdGlvbkRhdGFPZmZzZXQiLCJqIiwid3JpdGVVSW50OCIsInRva2VuIiwid3JpdGVVSW50MTZCRSIsImNvcHkiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwid3JpdGVVSW50MzJCRSIsIm9mZnNldCIsImRhdGFPZmZzZXQiLCJyZWFkVUludDE2QkUiLCJkYXRhTGVuZ3RoIiwiZXh0cmFjdFZlcnNpb24iLCJleHRyYWN0RW5jcnlwdGlvbiIsImV4dHJhY3RJbnN0YW5jZSIsImV4dHJhY3RUaHJlYWRJZCIsImV4dHJhY3RNYXJzIiwiZXh0cmFjdEZlZEF1dGgiLCJyZWFkVUludDgiLCJlbmNyeXB0aW9uIiwiZW5jcnlwdGlvblN0cmluZyIsImluc3RhbmNlIiwidGhyZWFkSWQiLCJyZWFkVUludDMyQkUiLCJtYXJzIiwibWFyc1N0cmluZyIsImZlZEF1dGhSZXF1aXJlZCIsInRvU3RyaW5nIiwiaW5kZW50Iiwic3ByaW50ZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wcmVsb2dpbi1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwcmludGYgfSBmcm9tICdzcHJpbnRmLWpzJztcblxuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3Qgb3B0aW9uQnVmZmVyU2l6ZSA9IDIwO1xuXG5jb25zdCBUT0tFTiA9IHtcbiAgVkVSU0lPTjogMHgwMCxcbiAgRU5DUllQVElPTjogMHgwMSxcbiAgSU5TVE9QVDogMHgwMixcbiAgVEhSRUFESUQ6IDB4MDMsXG4gIE1BUlM6IDB4MDQsXG4gIEZFREFVVEhSRVFVSVJFRDogMHgwNixcbiAgVEVSTUlOQVRPUjogMHhGRlxufTtcblxuY29uc3QgRU5DUllQVDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgT0ZGOiAweDAwLFxuICBPTjogMHgwMSxcbiAgTk9UX1NVUDogMHgwMixcbiAgUkVROiAweDAzXG59O1xuXG5jb25zdCBlbmNyeXB0QnlWYWx1ZTogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHt9O1xuXG5mb3IgKGNvbnN0IG5hbWUgaW4gRU5DUllQVCkge1xuICBjb25zdCB2YWx1ZSA9IEVOQ1JZUFRbbmFtZV07XG4gIGVuY3J5cHRCeVZhbHVlW3ZhbHVlXSA9IG5hbWU7XG59XG5cbmNvbnN0IE1BUlM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIE9GRjogMHgwMCxcbiAgT046IDB4MDFcbn07XG5cbmNvbnN0IG1hcnNCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiBNQVJTKSB7XG4gIGNvbnN0IHZhbHVlID0gTUFSU1tuYW1lXTtcbiAgbWFyc0J5VmFsdWVbdmFsdWVdID0gbmFtZTtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBlbmNyeXB0OiBib29sZWFuO1xuICB2ZXJzaW9uOiB7XG4gICAgbWFqb3I6IG51bWJlcjtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIGJ1aWxkOiBudW1iZXI7XG4gICAgc3ViYnVpbGQ6IG51bWJlcjtcbiAgfTtcbn1cblxuLypcbiAgczIuMi42LjRcbiAqL1xuY2xhc3MgUHJlbG9naW5QYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG4gIGRlY2xhcmUgb3B0aW9uczogT3B0aW9ucztcblxuICBkZWNsYXJlIHZlcnNpb246IHtcbiAgICBtYWpvcjogbnVtYmVyO1xuICAgIG1pbm9yOiBudW1iZXI7XG4gICAgYnVpbGQ6IG51bWJlcjtcbiAgICBzdWJidWlsZDogbnVtYmVyO1xuICB9O1xuXG4gIGRlY2xhcmUgZW5jcnlwdGlvbjogbnVtYmVyO1xuICBkZWNsYXJlIGVuY3J5cHRpb25TdHJpbmc6IHN0cmluZztcblxuICBkZWNsYXJlIGluc3RhbmNlOiBudW1iZXI7XG5cbiAgZGVjbGFyZSB0aHJlYWRJZDogbnVtYmVyO1xuXG4gIGRlY2xhcmUgbWFyczogbnVtYmVyO1xuICBkZWNsYXJlIG1hcnNTdHJpbmc6IHN0cmluZztcbiAgZGVjbGFyZSBmZWRBdXRoUmVxdWlyZWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihidWZmZXJPck9wdGlvbnM6IEJ1ZmZlciB8IE9wdGlvbnMgPSB7IGVuY3J5cHQ6IGZhbHNlLCB2ZXJzaW9uOiB7IG1ham9yOiAwLCBtaW5vcjogMCwgYnVpbGQ6IDAsIHN1YmJ1aWxkOiAwIH0gfSkge1xuICAgIGlmIChidWZmZXJPck9wdGlvbnMgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGJ1ZmZlck9yT3B0aW9ucztcbiAgICAgIHRoaXMub3B0aW9ucyA9IHsgZW5jcnlwdDogZmFsc2UsIHZlcnNpb246IHsgbWFqb3I6IDAsIG1pbm9yOiAwLCBidWlsZDogMCwgc3ViYnVpbGQ6IDAgfSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBidWZmZXJPck9wdGlvbnM7XG4gICAgICB0aGlzLmNyZWF0ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgdGhpcy5leHRyYWN0T3B0aW9ucygpO1xuICB9XG5cbiAgY3JlYXRlT3B0aW9ucygpIHtcbiAgICBjb25zdCBvcHRpb25zID0gW1xuICAgICAgdGhpcy5jcmVhdGVWZXJzaW9uT3B0aW9uKCksXG4gICAgICB0aGlzLmNyZWF0ZUVuY3J5cHRpb25PcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlSW5zdGFuY2VPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlVGhyZWFkSWRPcHRpb24oKSxcbiAgICAgIHRoaXMuY3JlYXRlTWFyc09wdGlvbigpLFxuICAgICAgdGhpcy5jcmVhdGVGZWRBdXRoT3B0aW9uKClcbiAgICBdO1xuXG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9wdGlvbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnNbaV07XG4gICAgICBsZW5ndGggKz0gNSArIG9wdGlvbi5kYXRhLmxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoKys7IC8vIHRlcm1pbmF0b3JcbiAgICB0aGlzLmRhdGEgPSBCdWZmZXIuYWxsb2MobGVuZ3RoLCAwKTtcbiAgICBsZXQgb3B0aW9uT2Zmc2V0ID0gMDtcbiAgICBsZXQgb3B0aW9uRGF0YU9mZnNldCA9IDUgKiBvcHRpb25zLmxlbmd0aCArIDE7XG5cbiAgICBmb3IgKGxldCBqID0gMCwgbGVuID0gb3B0aW9ucy5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgY29uc3Qgb3B0aW9uID0gb3B0aW9uc1tqXTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KG9wdGlvbi50b2tlbiwgb3B0aW9uT2Zmc2V0ICsgMCk7XG4gICAgICB0aGlzLmRhdGEud3JpdGVVSW50MTZCRShvcHRpb25EYXRhT2Zmc2V0LCBvcHRpb25PZmZzZXQgKyAxKTtcbiAgICAgIHRoaXMuZGF0YS53cml0ZVVJbnQxNkJFKG9wdGlvbi5kYXRhLmxlbmd0aCwgb3B0aW9uT2Zmc2V0ICsgMyk7XG4gICAgICBvcHRpb25PZmZzZXQgKz0gNTtcbiAgICAgIG9wdGlvbi5kYXRhLmNvcHkodGhpcy5kYXRhLCBvcHRpb25EYXRhT2Zmc2V0KTtcbiAgICAgIG9wdGlvbkRhdGFPZmZzZXQgKz0gb3B0aW9uLmRhdGEubGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YS53cml0ZVVJbnQ4KFRPS0VOLlRFUk1JTkFUT1IsIG9wdGlvbk9mZnNldCk7XG4gIH1cblxuICBjcmVhdGVWZXJzaW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMub3B0aW9ucy52ZXJzaW9uLm1ham9yKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm9wdGlvbnMudmVyc2lvbi5taW5vcik7XG4gICAgYnVmZmVyLndyaXRlVUludDE2QkUodGhpcy5vcHRpb25zLnZlcnNpb24uYnVpbGQpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKHRoaXMub3B0aW9ucy52ZXJzaW9uLnN1YmJ1aWxkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLlZFUlNJT04sXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVFbmNyeXB0aW9uT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5jcnlwdCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoRU5DUllQVC5PTik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KEVOQ1JZUFQuTk9UX1NVUCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRU5DUllQVElPTixcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZUluc3RhbmNlT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uSU5TVE9QVCxcbiAgICAgIGRhdGE6IGJ1ZmZlci5kYXRhXG4gICAgfTtcbiAgfVxuXG4gIGNyZWF0ZVRocmVhZElkT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkJFKDB4MDApO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uVEhSRUFESUQsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVNYXJzT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KE1BUlMuT0ZGKTtcbiAgICByZXR1cm4ge1xuICAgICAgdG9rZW46IFRPS0VOLk1BUlMsXG4gICAgICBkYXRhOiBidWZmZXIuZGF0YVxuICAgIH07XG4gIH1cblxuICBjcmVhdGVGZWRBdXRoT3B0aW9uKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKG9wdGlvbkJ1ZmZlclNpemUpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4MDEpO1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbjogVE9LRU4uRkVEQVVUSFJFUVVJUkVELFxuICAgICAgZGF0YTogYnVmZmVyLmRhdGFcbiAgICB9O1xuICB9XG5cbiAgZXh0cmFjdE9wdGlvbnMoKSB7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgd2hpbGUgKHRoaXMuZGF0YVtvZmZzZXRdICE9PSBUT0tFTi5URVJNSU5BVE9SKSB7XG4gICAgICBsZXQgZGF0YU9mZnNldCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMSk7XG4gICAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyAzKTtcbiAgICAgIHN3aXRjaCAodGhpcy5kYXRhW29mZnNldF0pIHtcbiAgICAgICAgY2FzZSBUT0tFTi5WRVJTSU9OOlxuICAgICAgICAgIHRoaXMuZXh0cmFjdFZlcnNpb24oZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uRU5DUllQVElPTjpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RFbmNyeXB0aW9uKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLklOU1RPUFQ6XG4gICAgICAgICAgdGhpcy5leHRyYWN0SW5zdGFuY2UoZGF0YU9mZnNldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uVEhSRUFESUQ6XG4gICAgICAgICAgaWYgKGRhdGFMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RUaHJlYWRJZChkYXRhT2Zmc2V0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVE9LRU4uTUFSUzpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RNYXJzKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRPS0VOLkZFREFVVEhSRVFVSVJFRDpcbiAgICAgICAgICB0aGlzLmV4dHJhY3RGZWRBdXRoKGRhdGFPZmZzZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgb2Zmc2V0ICs9IDU7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGRhdGFMZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZXh0cmFjdFZlcnNpb24ob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLnZlcnNpb24gPSB7XG4gICAgICBtYWpvcjogdGhpcy5kYXRhLnJlYWRVSW50OChvZmZzZXQgKyAwKSxcbiAgICAgIG1pbm9yOiB0aGlzLmRhdGEucmVhZFVJbnQ4KG9mZnNldCArIDEpLFxuICAgICAgYnVpbGQ6IHRoaXMuZGF0YS5yZWFkVUludDE2QkUob2Zmc2V0ICsgMiksXG4gICAgICBzdWJidWlsZDogdGhpcy5kYXRhLnJlYWRVSW50MTZCRShvZmZzZXQgKyA0KVxuICAgIH07XG4gIH1cblxuICBleHRyYWN0RW5jcnlwdGlvbihvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMuZW5jcnlwdGlvbiA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPSBlbmNyeXB0QnlWYWx1ZVt0aGlzLmVuY3J5cHRpb25dO1xuICB9XG5cbiAgZXh0cmFjdEluc3RhbmNlKG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIGV4dHJhY3RUaHJlYWRJZChvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMudGhyZWFkSWQgPSB0aGlzLmRhdGEucmVhZFVJbnQzMkJFKG9mZnNldCk7XG4gIH1cblxuICBleHRyYWN0TWFycyhvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMubWFycyA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgICB0aGlzLm1hcnNTdHJpbmcgPSBtYXJzQnlWYWx1ZVt0aGlzLm1hcnNdO1xuICB9XG5cbiAgZXh0cmFjdEZlZEF1dGgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IHRoaXMuZGF0YS5yZWFkVUludDgob2Zmc2V0KTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdQcmVMb2dpbiAtICcgKyBzcHJpbnRmKFxuICAgICAgJ3ZlcnNpb246JWQuJWQuJWQuJWQsIGVuY3J5cHRpb246MHglMDJYKCVzKSwgaW5zdG9wdDoweCUwMlgsIHRocmVhZElkOjB4JTA4WCwgbWFyczoweCUwMlgoJXMpJyxcbiAgICAgIHRoaXMudmVyc2lvbi5tYWpvciwgdGhpcy52ZXJzaW9uLm1pbm9yLCB0aGlzLnZlcnNpb24uYnVpbGQsIHRoaXMudmVyc2lvbi5zdWJidWlsZCxcbiAgICAgIHRoaXMuZW5jcnlwdGlvbiA/IHRoaXMuZW5jcnlwdGlvbiA6IDAsXG4gICAgICB0aGlzLmVuY3J5cHRpb25TdHJpbmcgPyB0aGlzLmVuY3J5cHRpb25TdHJpbmcgOiAnJyxcbiAgICAgIHRoaXMuaW5zdGFuY2UgPyB0aGlzLmluc3RhbmNlIDogMCxcbiAgICAgIHRoaXMudGhyZWFkSWQgPyB0aGlzLnRocmVhZElkIDogMCxcbiAgICAgIHRoaXMubWFycyA/IHRoaXMubWFycyA6IDAsXG4gICAgICB0aGlzLm1hcnNTdHJpbmcgPyB0aGlzLm1hcnNTdHJpbmcgOiAnJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJlbG9naW5QYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBQcmVsb2dpblBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLHVCQUFB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.versionsByValue = exports.versions = void 0;\nconst versions = {\n  '7_1': 0x71000001,\n  '7_2': 0x72090002,\n  '7_3_A': 0x730A0003,\n  '7_3_B': 0x730B0003,\n  '7_4': 0x74000004,\n  '8_0': 0x08000000\n};\nexports.versions = versions;\nconst versionsByValue = {};\nexports.versionsByValue = versionsByValue;\nfor (const name in versions) {\n  versionsByValue[versions[name]] = name;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsImV4cG9ydHMiLCJ2ZXJzaW9uc0J5VmFsdWUiLCJuYW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Rkcy12ZXJzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbnM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gICc3XzEnOiAweDcxMDAwMDAxLFxuICAnN18yJzogMHg3MjA5MDAwMixcbiAgJzdfM19BJzogMHg3MzBBMDAwMyxcbiAgJzdfM19CJzogMHg3MzBCMDAwMyxcbiAgJzdfNCc6IDB4NzQwMDAwMDQsXG4gICc4XzAnOiAweDA4MDAwMDAwXG59O1xuXG5leHBvcnQgY29uc3QgdmVyc2lvbnNCeVZhbHVlOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge307XG5cbmZvciAoY29uc3QgbmFtZSBpbiB2ZXJzaW9ucykge1xuICB2ZXJzaW9uc0J5VmFsdWVbdmVyc2lvbnNbbmFtZV1dID0gbmFtZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sTUFBTUEsUUFBbUMsR0FBRztFQUNqRCxLQUFLLEVBQUUsVUFBVTtFQUNqQixLQUFLLEVBQUUsVUFBVTtFQUNqQixPQUFPLEVBQUUsVUFBVTtFQUNuQixPQUFPLEVBQUUsVUFBVTtFQUNuQixLQUFLLEVBQUUsVUFBVTtFQUNqQixLQUFLLEVBQUU7QUFDVCxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsUUFBQSxHQUFBQSxRQUFBO0FBRUssTUFBTUUsZUFBMEMsR0FBRyxDQUFDLENBQUM7QUFBQ0QsT0FBQSxDQUFBQyxlQUFBLEdBQUFBLGVBQUE7QUFFN0QsS0FBSyxNQUFNQyxJQUFJLElBQUlILFFBQVEsRUFBRTtFQUMzQkUsZUFBZSxDQUFDRixRQUFRLENBQUNHLElBQUksQ0FBQyxDQUFDLEdBQUdBLElBQUk7QUFDeEMifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _sprintfJs = require(\"sprintf-js\");\nvar _tdsVersions = require(\"./tds-versions\");\nconst FLAGS_1 = {\n  ENDIAN_LITTLE: 0x00,\n  ENDIAN_BIG: 0x01,\n  CHARSET_ASCII: 0x00,\n  CHARSET_EBCDIC: 0x02,\n  FLOAT_IEEE_754: 0x00,\n  FLOAT_VAX: 0x04,\n  FLOAT_ND5000: 0x08,\n  BCP_DUMPLOAD_ON: 0x00,\n  BCP_DUMPLOAD_OFF: 0x10,\n  USE_DB_ON: 0x00,\n  USE_DB_OFF: 0x20,\n  INIT_DB_WARN: 0x00,\n  INIT_DB_FATAL: 0x40,\n  SET_LANG_WARN_OFF: 0x00,\n  SET_LANG_WARN_ON: 0x80\n};\nconst FLAGS_2 = {\n  INIT_LANG_WARN: 0x00,\n  INIT_LANG_FATAL: 0x01,\n  ODBC_OFF: 0x00,\n  ODBC_ON: 0x02,\n  F_TRAN_BOUNDARY: 0x04,\n  F_CACHE_CONNECT: 0x08,\n  USER_NORMAL: 0x00,\n  USER_SERVER: 0x10,\n  USER_REMUSER: 0x20,\n  USER_SQLREPL: 0x40,\n  INTEGRATED_SECURITY_OFF: 0x00,\n  INTEGRATED_SECURITY_ON: 0x80\n};\nconst TYPE_FLAGS = {\n  SQL_DFLT: 0x00,\n  SQL_TSQL: 0x08,\n  OLEDB_OFF: 0x00,\n  OLEDB_ON: 0x10,\n  READ_WRITE_INTENT: 0x00,\n  READ_ONLY_INTENT: 0x20\n};\nconst FLAGS_3 = {\n  CHANGE_PASSWORD_NO: 0x00,\n  CHANGE_PASSWORD_YES: 0x01,\n  BINARY_XML: 0x02,\n  SPAWN_USER_INSTANCE: 0x04,\n  UNKNOWN_COLLATION_HANDLING: 0x08,\n  EXTENSION_USED: 0x10\n};\nconst FEDAUTH_OPTIONS = {\n  FEATURE_ID: 0x02,\n  LIBRARY_SECURITYTOKEN: 0x01,\n  LIBRARY_ADAL: 0x02,\n  FEDAUTH_YES_ECHO: 0x01,\n  FEDAUTH_NO_ECHO: 0x00,\n  ADAL_WORKFLOW_USER_PASS: 0x01,\n  ADAL_WORKFLOW_INTEGRATED: 0x02\n};\nconst FEATURE_EXT_TERMINATOR = 0xFF;\n/*\n  s2.2.6.3\n */\nclass Login7Payload {\n  constructor({\n    tdsVersion,\n    packetSize,\n    clientProgVer,\n    clientPid,\n    connectionId,\n    clientTimeZone,\n    clientLcid\n  }) {\n    this.tdsVersion = tdsVersion;\n    this.packetSize = packetSize;\n    this.clientProgVer = clientProgVer;\n    this.clientPid = clientPid;\n    this.connectionId = connectionId;\n    this.clientTimeZone = clientTimeZone;\n    this.clientLcid = clientLcid;\n    this.readOnlyIntent = false;\n    this.initDbFatal = false;\n    this.fedAuth = undefined;\n    this.userName = undefined;\n    this.password = undefined;\n    this.serverName = undefined;\n    this.appName = undefined;\n    this.hostname = undefined;\n    this.libraryName = undefined;\n    this.language = undefined;\n    this.database = undefined;\n    this.clientId = undefined;\n    this.sspi = undefined;\n    this.attachDbFile = undefined;\n    this.changePassword = undefined;\n  }\n  toBuffer() {\n    const fixedData = Buffer.alloc(94);\n    const buffers = [fixedData];\n    let offset = 0;\n    let dataOffset = fixedData.length;\n\n    // Length: 4-byte\n    offset = fixedData.writeUInt32LE(0, offset);\n\n    // TDSVersion: 4-byte\n    offset = fixedData.writeUInt32LE(this.tdsVersion, offset);\n\n    // PacketSize: 4-byte\n    offset = fixedData.writeUInt32LE(this.packetSize, offset);\n\n    // ClientProgVer: 4-byte\n    offset = fixedData.writeUInt32LE(this.clientProgVer, offset);\n\n    // ClientPID: 4-byte\n    offset = fixedData.writeUInt32LE(this.clientPid, offset);\n\n    // ConnectionID: 4-byte\n    offset = fixedData.writeUInt32LE(this.connectionId, offset);\n\n    // OptionFlags1: 1-byte\n    offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset);\n\n    // OptionFlags2: 1-byte\n    offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset);\n\n    // TypeFlags: 1-byte\n    offset = fixedData.writeUInt8(this.buildTypeFlags(), offset);\n\n    // OptionFlags3: 1-byte\n    offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset);\n\n    // ClientTimZone: 4-byte\n    offset = fixedData.writeInt32LE(this.clientTimeZone, offset);\n\n    // ClientLCID: 4-byte\n    offset = fixedData.writeUInt32LE(this.clientLcid, offset);\n\n    // ibHostName: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchHostName: 2-byte\n    if (this.hostname) {\n      const buffer = Buffer.from(this.hostname, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(dataOffset, offset);\n    }\n\n    // ibUserName: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchUserName: 2-byte\n    if (this.userName) {\n      const buffer = Buffer.from(this.userName, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibPassword: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchPassword: 2-byte\n    if (this.password) {\n      const buffer = Buffer.from(this.password, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(this.scramblePassword(buffer));\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibAppName: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchAppName: 2-byte\n    if (this.appName) {\n      const buffer = Buffer.from(this.appName, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibServerName: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchServerName: 2-byte\n    if (this.serverName) {\n      const buffer = Buffer.from(this.serverName, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // (ibUnused / ibExtension): 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // (cchUnused / cbExtension): 2-byte\n    const extensions = this.buildFeatureExt();\n    offset = fixedData.writeUInt16LE(4, offset);\n    const extensionOffset = Buffer.alloc(4);\n    extensionOffset.writeUInt32LE(dataOffset += 4, 0);\n    dataOffset += extensions.length;\n    buffers.push(extensionOffset, extensions);\n\n    // ibCltIntName: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchCltIntName: 2-byte\n    if (this.libraryName) {\n      const buffer = Buffer.from(this.libraryName, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibLanguage: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchLanguage: 2-byte\n    if (this.language) {\n      const buffer = Buffer.from(this.language, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibDatabase: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchDatabase: 2-byte\n    if (this.database) {\n      const buffer = Buffer.from(this.database, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ClientID: 6-byte\n    if (this.clientId) {\n      this.clientId.copy(fixedData, offset, 0, 6);\n    }\n    offset += 6;\n\n    // ibSSPI: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cbSSPI: 2-byte\n    if (this.sspi) {\n      if (this.sspi.length > 65535) {\n        offset = fixedData.writeUInt16LE(65535, offset);\n      } else {\n        offset = fixedData.writeUInt16LE(this.sspi.length, offset);\n      }\n      buffers.push(this.sspi);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibAtchDBFile: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchAtchDBFile: 2-byte\n    if (this.attachDbFile) {\n      const buffer = Buffer.from(this.attachDbFile, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // ibChangePassword: 2-byte\n    offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n    // cchChangePassword: 2-byte\n    if (this.changePassword) {\n      const buffer = Buffer.from(this.changePassword, 'ucs2');\n      offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n      dataOffset += buffer.length;\n      buffers.push(buffer);\n    } else {\n      offset = fixedData.writeUInt16LE(0, offset);\n    }\n\n    // cbSSPILong: 4-byte\n    if (this.sspi && this.sspi.length > 65535) {\n      fixedData.writeUInt32LE(this.sspi.length, offset);\n    } else {\n      fixedData.writeUInt32LE(0, offset);\n    }\n    const data = Buffer.concat(buffers);\n    data.writeUInt32LE(data.length, 0);\n    return data;\n  }\n  buildOptionFlags1() {\n    let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON;\n    if (this.initDbFatal) {\n      flags1 |= FLAGS_1.INIT_DB_FATAL;\n    } else {\n      flags1 |= FLAGS_1.INIT_DB_WARN;\n    }\n    return flags1;\n  }\n  buildFeatureExt() {\n    const buffers = [];\n    const fedAuth = this.fedAuth;\n    if (fedAuth) {\n      switch (fedAuth.type) {\n        case 'ADAL':\n          const buffer = Buffer.alloc(7);\n          buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0);\n          buffer.writeUInt32LE(2, 1);\n          buffer.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_ADAL << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5);\n          buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6);\n          buffers.push(buffer);\n          break;\n        case 'SECURITYTOKEN':\n          const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2');\n          const buf = Buffer.alloc(10);\n          let offset = 0;\n          offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset);\n          offset = buf.writeUInt32LE(token.length + 4 + 1, offset);\n          offset = buf.writeUInt8(FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1 | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset);\n          buf.writeInt32LE(token.length, offset);\n          buffers.push(buf);\n          buffers.push(token);\n          break;\n      }\n    }\n    if (this.tdsVersion >= _tdsVersions.versions['7_4']) {\n      // Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4.\n      const UTF8_SUPPORT_FEATURE_ID = 0x0a;\n      const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01;\n      const buf = Buffer.alloc(6);\n      buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0);\n      buf.writeUInt32LE(1, 1);\n      buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5);\n      buffers.push(buf);\n    }\n    buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR]));\n    return Buffer.concat(buffers);\n  }\n  buildOptionFlags2() {\n    let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL;\n    if (this.sspi) {\n      flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON;\n    } else {\n      flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF;\n    }\n    return flags2;\n  }\n  buildTypeFlags() {\n    let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF;\n    if (this.readOnlyIntent) {\n      typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT;\n    } else {\n      typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT;\n    }\n    return typeFlags;\n  }\n  buildOptionFlags3() {\n    return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED;\n  }\n  scramblePassword(password) {\n    for (let b = 0, len = password.length; b < len; b++) {\n      let byte = password[b];\n      const lowNibble = byte & 0x0f;\n      const highNibble = byte >> 4;\n      byte = lowNibble << 4 | highNibble;\n      byte = byte ^ 0xa5;\n      password[b] = byte;\n    }\n    return password;\n  }\n  toString(indent = '') {\n    return indent + 'Login7 - ' + (0, _sprintfJs.sprintf)('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X', this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId) + '\\n' + indent + '         ' + (0, _sprintfJs.sprintf)('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X', this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid) + '\\n' + indent + '         ' + (0, _sprintfJs.sprintf)(\"Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'\", this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName) + '\\n' + indent + '         ' + (0, _sprintfJs.sprintf)(\"Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'\", this.language, this.database, this.sspi, this.attachDbFile, this.changePassword);\n  }\n}\nvar _default = Login7Payload;\nexports.default = _default;\nmodule.exports = Login7Payload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3ByaW50ZkpzIiwicmVxdWlyZSIsIl90ZHNWZXJzaW9ucyIsIkZMQUdTXzEiLCJFTkRJQU5fTElUVExFIiwiRU5ESUFOX0JJRyIsIkNIQVJTRVRfQVNDSUkiLCJDSEFSU0VUX0VCQ0RJQyIsIkZMT0FUX0lFRUVfNzU0IiwiRkxPQVRfVkFYIiwiRkxPQVRfTkQ1MDAwIiwiQkNQX0RVTVBMT0FEX09OIiwiQkNQX0RVTVBMT0FEX09GRiIsIlVTRV9EQl9PTiIsIlVTRV9EQl9PRkYiLCJJTklUX0RCX1dBUk4iLCJJTklUX0RCX0ZBVEFMIiwiU0VUX0xBTkdfV0FSTl9PRkYiLCJTRVRfTEFOR19XQVJOX09OIiwiRkxBR1NfMiIsIklOSVRfTEFOR19XQVJOIiwiSU5JVF9MQU5HX0ZBVEFMIiwiT0RCQ19PRkYiLCJPREJDX09OIiwiRl9UUkFOX0JPVU5EQVJZIiwiRl9DQUNIRV9DT05ORUNUIiwiVVNFUl9OT1JNQUwiLCJVU0VSX1NFUlZFUiIsIlVTRVJfUkVNVVNFUiIsIlVTRVJfU1FMUkVQTCIsIklOVEVHUkFURURfU0VDVVJJVFlfT0ZGIiwiSU5URUdSQVRFRF9TRUNVUklUWV9PTiIsIlRZUEVfRkxBR1MiLCJTUUxfREZMVCIsIlNRTF9UU1FMIiwiT0xFREJfT0ZGIiwiT0xFREJfT04iLCJSRUFEX1dSSVRFX0lOVEVOVCIsIlJFQURfT05MWV9JTlRFTlQiLCJGTEFHU18zIiwiQ0hBTkdFX1BBU1NXT1JEX05PIiwiQ0hBTkdFX1BBU1NXT1JEX1lFUyIsIkJJTkFSWV9YTUwiLCJTUEFXTl9VU0VSX0lOU1RBTkNFIiwiVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkciLCJFWFRFTlNJT05fVVNFRCIsIkZFREFVVEhfT1BUSU9OUyIsIkZFQVRVUkVfSUQiLCJMSUJSQVJZX1NFQ1VSSVRZVE9LRU4iLCJMSUJSQVJZX0FEQUwiLCJGRURBVVRIX1lFU19FQ0hPIiwiRkVEQVVUSF9OT19FQ0hPIiwiQURBTF9XT1JLRkxPV19VU0VSX1BBU1MiLCJBREFMX1dPUktGTE9XX0lOVEVHUkFURUQiLCJGRUFUVVJFX0VYVF9URVJNSU5BVE9SIiwiTG9naW43UGF5bG9hZCIsImNvbnN0cnVjdG9yIiwidGRzVmVyc2lvbiIsInBhY2tldFNpemUiLCJjbGllbnRQcm9nVmVyIiwiY2xpZW50UGlkIiwiY29ubmVjdGlvbklkIiwiY2xpZW50VGltZVpvbmUiLCJjbGllbnRMY2lkIiwicmVhZE9ubHlJbnRlbnQiLCJpbml0RGJGYXRhbCIsImZlZEF1dGgiLCJ1bmRlZmluZWQiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwic2VydmVyTmFtZSIsImFwcE5hbWUiLCJob3N0bmFtZSIsImxpYnJhcnlOYW1lIiwibGFuZ3VhZ2UiLCJkYXRhYmFzZSIsImNsaWVudElkIiwic3NwaSIsImF0dGFjaERiRmlsZSIsImNoYW5nZVBhc3N3b3JkIiwidG9CdWZmZXIiLCJmaXhlZERhdGEiLCJCdWZmZXIiLCJhbGxvYyIsImJ1ZmZlcnMiLCJvZmZzZXQiLCJkYXRhT2Zmc2V0IiwibGVuZ3RoIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDgiLCJidWlsZE9wdGlvbkZsYWdzMSIsImJ1aWxkT3B0aW9uRmxhZ3MyIiwiYnVpbGRUeXBlRmxhZ3MiLCJidWlsZE9wdGlvbkZsYWdzMyIsIndyaXRlSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJidWZmZXIiLCJmcm9tIiwicHVzaCIsInNjcmFtYmxlUGFzc3dvcmQiLCJleHRlbnNpb25zIiwiYnVpbGRGZWF0dXJlRXh0IiwiZXh0ZW5zaW9uT2Zmc2V0IiwiY29weSIsImRhdGEiLCJjb25jYXQiLCJmbGFnczEiLCJ0eXBlIiwiZWNobyIsIndvcmtmbG93IiwidG9rZW4iLCJmZWRBdXRoVG9rZW4iLCJidWYiLCJ2ZXJzaW9ucyIsIlVURjhfU1VQUE9SVF9GRUFUVVJFX0lEIiwiVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4IiwiZmxhZ3MyIiwidHlwZUZsYWdzIiwiYiIsImxlbiIsImJ5dGUiLCJsb3dOaWJibGUiLCJoaWdoTmliYmxlIiwidG9TdHJpbmciLCJpbmRlbnQiLCJzcHJpbnRmIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dpbjctcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyB2ZXJzaW9ucyB9IGZyb20gJy4vdGRzLXZlcnNpb25zJztcblxuY29uc3QgRkxBR1NfMSA9IHtcbiAgRU5ESUFOX0xJVFRMRTogMHgwMCxcbiAgRU5ESUFOX0JJRzogMHgwMSxcbiAgQ0hBUlNFVF9BU0NJSTogMHgwMCxcbiAgQ0hBUlNFVF9FQkNESUM6IDB4MDIsXG4gIEZMT0FUX0lFRUVfNzU0OiAweDAwLFxuICBGTE9BVF9WQVg6IDB4MDQsXG4gIEZMT0FUX05ENTAwMDogMHgwOCxcbiAgQkNQX0RVTVBMT0FEX09OOiAweDAwLFxuICBCQ1BfRFVNUExPQURfT0ZGOiAweDEwLFxuICBVU0VfREJfT046IDB4MDAsXG4gIFVTRV9EQl9PRkY6IDB4MjAsXG4gIElOSVRfREJfV0FSTjogMHgwMCxcbiAgSU5JVF9EQl9GQVRBTDogMHg0MCxcbiAgU0VUX0xBTkdfV0FSTl9PRkY6IDB4MDAsXG4gIFNFVF9MQU5HX1dBUk5fT046IDB4ODBcbn07XG5cbmNvbnN0IEZMQUdTXzIgPSB7XG4gIElOSVRfTEFOR19XQVJOOiAweDAwLFxuICBJTklUX0xBTkdfRkFUQUw6IDB4MDEsXG4gIE9EQkNfT0ZGOiAweDAwLFxuICBPREJDX09OOiAweDAyLFxuICBGX1RSQU5fQk9VTkRBUlk6IDB4MDQsXG4gIEZfQ0FDSEVfQ09OTkVDVDogMHgwOCxcbiAgVVNFUl9OT1JNQUw6IDB4MDAsXG4gIFVTRVJfU0VSVkVSOiAweDEwLFxuICBVU0VSX1JFTVVTRVI6IDB4MjAsXG4gIFVTRVJfU1FMUkVQTDogMHg0MCxcbiAgSU5URUdSQVRFRF9TRUNVUklUWV9PRkY6IDB4MDAsXG4gIElOVEVHUkFURURfU0VDVVJJVFlfT046IDB4ODBcbn07XG5cbmNvbnN0IFRZUEVfRkxBR1MgPSB7XG4gIFNRTF9ERkxUOiAweDAwLFxuICBTUUxfVFNRTDogMHgwOCxcbiAgT0xFREJfT0ZGOiAweDAwLFxuICBPTEVEQl9PTjogMHgxMCxcbiAgUkVBRF9XUklURV9JTlRFTlQ6IDB4MDAsXG4gIFJFQURfT05MWV9JTlRFTlQ6IDB4MjBcbn07XG5cbmNvbnN0IEZMQUdTXzMgPSB7XG4gIENIQU5HRV9QQVNTV09SRF9OTzogMHgwMCxcbiAgQ0hBTkdFX1BBU1NXT1JEX1lFUzogMHgwMSxcbiAgQklOQVJZX1hNTDogMHgwMixcbiAgU1BBV05fVVNFUl9JTlNUQU5DRTogMHgwNCxcbiAgVU5LTk9XTl9DT0xMQVRJT05fSEFORExJTkc6IDB4MDgsXG4gIEVYVEVOU0lPTl9VU0VEOiAweDEwXG59O1xuXG5jb25zdCBGRURBVVRIX09QVElPTlMgPSB7XG4gIEZFQVRVUkVfSUQ6IDB4MDIsXG4gIExJQlJBUllfU0VDVVJJVFlUT0tFTjogMHgwMSxcbiAgTElCUkFSWV9BREFMOiAweDAyLFxuICBGRURBVVRIX1lFU19FQ0hPOiAweDAxLFxuICBGRURBVVRIX05PX0VDSE86IDB4MDAsXG4gIEFEQUxfV09SS0ZMT1dfVVNFUl9QQVNTOiAweDAxLFxuICBBREFMX1dPUktGTE9XX0lOVEVHUkFURUQ6IDB4MDJcbn07XG5cbmNvbnN0IEZFQVRVUkVfRVhUX1RFUk1JTkFUT1IgPSAweEZGO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHRkc1ZlcnNpb246IG51bWJlcjtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBjbGllbnRQcm9nVmVyOiBudW1iZXI7XG4gIGNsaWVudFBpZDogbnVtYmVyO1xuICBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgY2xpZW50VGltZVpvbmU6IG51bWJlcjtcbiAgY2xpZW50TGNpZDogbnVtYmVyO1xufVxuXG4vKlxuICBzMi4yLjYuM1xuICovXG5jbGFzcyBMb2dpbjdQYXlsb2FkIHtcbiAgZGVjbGFyZSB0ZHNWZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudFByb2dWZXI6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRQaWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjb25uZWN0aW9uSWQ6IG51bWJlcjtcbiAgZGVjbGFyZSBjbGllbnRUaW1lWm9uZTogbnVtYmVyO1xuICBkZWNsYXJlIGNsaWVudExjaWQ6IG51bWJlcjtcblxuICBkZWNsYXJlIHJlYWRPbmx5SW50ZW50OiBib29sZWFuO1xuICBkZWNsYXJlIGluaXREYkZhdGFsOiBib29sZWFuO1xuXG4gIGRlY2xhcmUgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNlcnZlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhcHBOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgaG9zdG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBsaWJyYXJ5TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgZGF0YWJhc2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjbGllbnRJZDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHNzcGk6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBhdHRhY2hEYkZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBjaGFuZ2VQYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgZmVkQXV0aDogeyB0eXBlOiAnQURBTCcsIGVjaG86IGJvb2xlYW4sIHdvcmtmbG93OiAnZGVmYXVsdCcgfCAnaW50ZWdyYXRlZCcgfSB8IHsgdHlwZTogJ1NFQ1VSSVRZVE9LRU4nLCBlY2hvOiBib29sZWFuLCBmZWRBdXRoVG9rZW46IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHsgdGRzVmVyc2lvbiwgcGFja2V0U2l6ZSwgY2xpZW50UHJvZ1ZlciwgY2xpZW50UGlkLCBjb25uZWN0aW9uSWQsIGNsaWVudFRpbWVab25lLCBjbGllbnRMY2lkIH06IE9wdGlvbnMpIHtcbiAgICB0aGlzLnRkc1ZlcnNpb24gPSB0ZHNWZXJzaW9uO1xuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5jbGllbnRQcm9nVmVyID0gY2xpZW50UHJvZ1ZlcjtcbiAgICB0aGlzLmNsaWVudFBpZCA9IGNsaWVudFBpZDtcbiAgICB0aGlzLmNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZDtcbiAgICB0aGlzLmNsaWVudFRpbWVab25lID0gY2xpZW50VGltZVpvbmU7XG4gICAgdGhpcy5jbGllbnRMY2lkID0gY2xpZW50TGNpZDtcblxuICAgIHRoaXMucmVhZE9ubHlJbnRlbnQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXREYkZhdGFsID0gZmFsc2U7XG5cbiAgICB0aGlzLmZlZEF1dGggPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnVzZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZXJ2ZXJOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXBwTmFtZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhvc3RuYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGlicmFyeU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYW5ndWFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGFiYXNlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xpZW50SWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zc3BpID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXR0YWNoRGJGaWxlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0b0J1ZmZlcigpIHtcbiAgICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoOTQpO1xuICAgIGNvbnN0IGJ1ZmZlcnMgPSBbZml4ZWREYXRhXTtcblxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBkYXRhT2Zmc2V0ID0gZml4ZWREYXRhLmxlbmd0aDtcblxuICAgIC8vIExlbmd0aDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcblxuICAgIC8vIFREU1ZlcnNpb246IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMudGRzVmVyc2lvbiwgb2Zmc2V0KTtcblxuICAgIC8vIFBhY2tldFNpemU6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMucGFja2V0U2l6ZSwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFByb2dWZXI6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY2xpZW50UHJvZ1Zlciwgb2Zmc2V0KTtcblxuICAgIC8vIENsaWVudFBJRDogNC1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5jbGllbnRQaWQsIG9mZnNldCk7XG5cbiAgICAvLyBDb25uZWN0aW9uSUQ6IDQtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQzMkxFKHRoaXMuY29ubmVjdGlvbklkLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MxOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MxKCksIG9mZnNldCk7XG5cbiAgICAvLyBPcHRpb25GbGFnczI6IDEtYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQ4KHRoaXMuYnVpbGRPcHRpb25GbGFnczIoKSwgb2Zmc2V0KTtcblxuICAgIC8vIFR5cGVGbGFnczogMS1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgodGhpcy5idWlsZFR5cGVGbGFncygpLCBvZmZzZXQpO1xuXG4gICAgLy8gT3B0aW9uRmxhZ3MzOiAxLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCh0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MzKCksIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRUaW1ab25lOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVJbnQzMkxFKHRoaXMuY2xpZW50VGltZVpvbmUsIG9mZnNldCk7XG5cbiAgICAvLyBDbGllbnRMQ0lEOiA0LWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0aGlzLmNsaWVudExjaWQsIG9mZnNldCk7XG5cbiAgICAvLyBpYkhvc3ROYW1lOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoSG9zdE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmhvc3RuYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmhvc3RuYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJVc2VyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFVzZXJOYW1lOiAyLWJ5dGVcbiAgICBpZiAodGhpcy51c2VyTmFtZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy51c2VyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMucGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMucGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2godGhpcy5zY3JhbWJsZVBhc3N3b3JkKGJ1ZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQXBwTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaEFwcE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmFwcE5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuYXBwTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliU2VydmVyTmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaFNlcnZlck5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLnNlcnZlck5hbWUpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuc2VydmVyTmFtZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIChpYlVudXNlZCAvIGliRXh0ZW5zaW9uKTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIChjY2hVbnVzZWQgLyBjYkV4dGVuc2lvbik6IDItYnl0ZVxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSB0aGlzLmJ1aWxkRmVhdHVyZUV4dCgpO1xuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDQsIG9mZnNldCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uT2Zmc2V0ID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGV4dGVuc2lvbk9mZnNldC53cml0ZVVJbnQzMkxFKGRhdGFPZmZzZXQgKz0gNCwgMCk7XG4gICAgZGF0YU9mZnNldCArPSBleHRlbnNpb25zLmxlbmd0aDtcbiAgICBidWZmZXJzLnB1c2goZXh0ZW5zaW9uT2Zmc2V0LCBleHRlbnNpb25zKTtcblxuICAgIC8vIGliQ2x0SW50TmFtZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaENsdEludE5hbWU6IDItYnl0ZVxuICAgIGlmICh0aGlzLmxpYnJhcnlOYW1lKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmxpYnJhcnlOYW1lLCAndWNzMicpO1xuXG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShidWZmZXIubGVuZ3RoIC8gMiwgb2Zmc2V0KTtcbiAgICAgIGRhdGFPZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblxuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJMYW5ndWFnZTogMi1ieXRlXG4gICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoZGF0YU9mZnNldCwgb2Zmc2V0KTtcblxuICAgIC8vIGNjaExhbmd1YWdlOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5sYW5ndWFnZSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5sYW5ndWFnZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliRGF0YWJhc2U6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hEYXRhYmFzZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuZGF0YWJhc2UpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZGF0YWJhc2UsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBDbGllbnRJRDogNi1ieXRlXG4gICAgaWYgKHRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRoaXMuY2xpZW50SWQuY29weShmaXhlZERhdGEsIG9mZnNldCwgMCwgNik7XG4gICAgfVxuICAgIG9mZnNldCArPSA2O1xuXG4gICAgLy8gaWJTU1BJOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2JTU1BJOiAyLWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBpZiAodGhpcy5zc3BpLmxlbmd0aCA+IDY1NTM1KSB7XG4gICAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDY1NTM1LCBvZmZzZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgYnVmZmVycy5wdXNoKHRoaXMuc3NwaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKDAsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gaWJBdGNoREJGaWxlOiAyLWJ5dGVcbiAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkYXRhT2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgLy8gY2NoQXRjaERCRmlsZTogMi1ieXRlXG4gICAgaWYgKHRoaXMuYXR0YWNoRGJGaWxlKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmF0dGFjaERiRmlsZSwgJ3VjczInKTtcblxuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoYnVmZmVyLmxlbmd0aCAvIDIsIG9mZnNldCk7XG4gICAgICBkYXRhT2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSgwLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIGliQ2hhbmdlUGFzc3dvcmQ6IDItYnl0ZVxuICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGRhdGFPZmZzZXQsIG9mZnNldCk7XG5cbiAgICAvLyBjY2hDaGFuZ2VQYXNzd29yZDogMi1ieXRlXG4gICAgaWYgKHRoaXMuY2hhbmdlUGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuY2hhbmdlUGFzc3dvcmQsICd1Y3MyJyk7XG5cbiAgICAgIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKGJ1ZmZlci5sZW5ndGggLyAyLCBvZmZzZXQpO1xuICAgICAgZGF0YU9mZnNldCArPSBidWZmZXIubGVuZ3RoO1xuXG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICAvLyBjYlNTUElMb25nOiA0LWJ5dGVcbiAgICBpZiAodGhpcy5zc3BpICYmIHRoaXMuc3NwaS5sZW5ndGggPiA2NTUzNSkge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUodGhpcy5zc3BpLmxlbmd0aCwgb2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZml4ZWREYXRhLndyaXRlVUludDMyTEUoMCwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoZGF0YS5sZW5ndGgsIDApO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczEoKSB7XG4gICAgbGV0IGZsYWdzMSA9IEZMQUdTXzEuRU5ESUFOX0xJVFRMRSB8IEZMQUdTXzEuQ0hBUlNFVF9BU0NJSSB8IEZMQUdTXzEuRkxPQVRfSUVFRV83NTQgfCBGTEFHU18xLkJDUF9EVU1QTE9BRF9PRkYgfCBGTEFHU18xLlVTRV9EQl9PRkYgfCBGTEFHU18xLlNFVF9MQU5HX1dBUk5fT047XG4gICAgaWYgKHRoaXMuaW5pdERiRmF0YWwpIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfRkFUQUw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYWdzMSB8PSBGTEFHU18xLklOSVRfREJfV0FSTjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMTtcbiAgfVxuXG4gIGJ1aWxkRmVhdHVyZUV4dCgpIHtcbiAgICBjb25zdCBidWZmZXJzID0gW107XG5cbiAgICBjb25zdCBmZWRBdXRoID0gdGhpcy5mZWRBdXRoO1xuICAgIGlmIChmZWRBdXRoKSB7XG4gICAgICBzd2l0Y2ggKGZlZEF1dGgudHlwZSkge1xuICAgICAgICBjYXNlICdBREFMJzpcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNyk7XG4gICAgICAgICAgYnVmZmVyLndyaXRlVUludDgoRkVEQVVUSF9PUFRJT05TLkZFQVRVUkVfSUQsIDApO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDIsIDEpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9BREFMIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIDUpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KGZlZEF1dGgud29ya2Zsb3cgPT09ICdpbnRlZ3JhdGVkJyA/IDB4MDIgOiBGRURBVVRIX09QVElPTlMuQURBTF9XT1JLRkxPV19VU0VSX1BBU1MsIDYpO1xuICAgICAgICAgIGJ1ZmZlcnMucHVzaChidWZmZXIpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ1NFQ1VSSVRZVE9LRU4nOlxuICAgICAgICAgIGNvbnN0IHRva2VuID0gQnVmZmVyLmZyb20oZmVkQXV0aC5mZWRBdXRoVG9rZW4sICd1Y3MyJyk7XG4gICAgICAgICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEwKTtcblxuICAgICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KEZFREFVVEhfT1BUSU9OUy5GRUFUVVJFX0lELCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQzMkxFKHRva2VuLmxlbmd0aCArIDQgKyAxLCBvZmZzZXQpO1xuICAgICAgICAgIG9mZnNldCA9IGJ1Zi53cml0ZVVJbnQ4KChGRURBVVRIX09QVElPTlMuTElCUkFSWV9TRUNVUklUWVRPS0VOIDw8IDEpIHwgKGZlZEF1dGguZWNobyA/IEZFREFVVEhfT1BUSU9OUy5GRURBVVRIX1lFU19FQ0hPIDogRkVEQVVUSF9PUFRJT05TLkZFREFVVEhfTk9fRUNITyksIG9mZnNldCk7XG4gICAgICAgICAgYnVmLndyaXRlSW50MzJMRSh0b2tlbi5sZW5ndGgsIG9mZnNldCk7XG5cbiAgICAgICAgICBidWZmZXJzLnB1c2goYnVmKTtcbiAgICAgICAgICBidWZmZXJzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGRzVmVyc2lvbiA+PSB2ZXJzaW9uc1snN180J10pIHtcbiAgICAgIC8vIFNpZ25hbCBVVEYtOCBzdXBwb3J0OiBWYWx1ZSAweDBBLCBiaXQgMCBtdXN0IGJlIHNldCB0byAxLiBBZGRlZCBpbiBURFMgNy40LlxuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0ZFQVRVUkVfSUQgPSAweDBhO1xuICAgICAgY29uc3QgVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4ID0gMHgwMTtcbiAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg2KTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQ4KFVURjhfU1VQUE9SVF9GRUFUVVJFX0lELCAwKTtcbiAgICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDEsIDEpO1xuICAgICAgYnVmLndyaXRlVUludDgoVVRGOF9TVVBQT1JUX0NMSUVOVF9TVVBQT1JUU19VVEY4LCA1KTtcbiAgICAgIGJ1ZmZlcnMucHVzaChidWYpO1xuICAgIH1cblxuICAgIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShbRkVBVFVSRV9FWFRfVEVSTUlOQVRPUl0pKTtcblxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczIoKSB7XG4gICAgbGV0IGZsYWdzMiA9IEZMQUdTXzIuSU5JVF9MQU5HX1dBUk4gfCBGTEFHU18yLk9EQkNfT0ZGIHwgRkxBR1NfMi5VU0VSX05PUk1BTDtcbiAgICBpZiAodGhpcy5zc3BpKSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09OO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGFnczIgfD0gRkxBR1NfMi5JTlRFR1JBVEVEX1NFQ1VSSVRZX09GRjtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzMjtcbiAgfVxuXG4gIGJ1aWxkVHlwZUZsYWdzKCkge1xuICAgIGxldCB0eXBlRmxhZ3MgPSBUWVBFX0ZMQUdTLlNRTF9ERkxUIHwgVFlQRV9GTEFHUy5PTEVEQl9PRkY7XG4gICAgaWYgKHRoaXMucmVhZE9ubHlJbnRlbnQpIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfT05MWV9JTlRFTlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGVGbGFncyB8PSBUWVBFX0ZMQUdTLlJFQURfV1JJVEVfSU5URU5UO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZUZsYWdzO1xuICB9XG5cbiAgYnVpbGRPcHRpb25GbGFnczMoKSB7XG4gICAgcmV0dXJuIEZMQUdTXzMuQ0hBTkdFX1BBU1NXT1JEX05PIHwgRkxBR1NfMy5VTktOT1dOX0NPTExBVElPTl9IQU5ETElORyB8IEZMQUdTXzMuRVhURU5TSU9OX1VTRUQ7XG4gIH1cblxuICBzY3JhbWJsZVBhc3N3b3JkKHBhc3N3b3JkOiBCdWZmZXIpIHtcbiAgICBmb3IgKGxldCBiID0gMCwgbGVuID0gcGFzc3dvcmQubGVuZ3RoOyBiIDwgbGVuOyBiKyspIHtcbiAgICAgIGxldCBieXRlID0gcGFzc3dvcmRbYl07XG4gICAgICBjb25zdCBsb3dOaWJibGUgPSBieXRlICYgMHgwZjtcbiAgICAgIGNvbnN0IGhpZ2hOaWJibGUgPSBieXRlID4+IDQ7XG4gICAgICBieXRlID0gKGxvd05pYmJsZSA8PCA0KSB8IGhpZ2hOaWJibGU7XG4gICAgICBieXRlID0gYnl0ZSBeIDB4YTU7XG4gICAgICBwYXNzd29yZFtiXSA9IGJ5dGU7XG4gICAgfVxuICAgIHJldHVybiBwYXNzd29yZDtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdMb2dpbjcgLSAnICtcbiAgICAgIHNwcmludGYoJ1REUzoweCUwOFgsIFBhY2tldFNpemU6MHglMDhYLCBDbGllbnRQcm9nVmVyOjB4JTA4WCwgQ2xpZW50UElEOjB4JTA4WCwgQ29ubmVjdGlvbklEOjB4JTA4WCcsXG4gICAgICAgICAgICAgIHRoaXMudGRzVmVyc2lvbiwgdGhpcy5wYWNrZXRTaXplLCB0aGlzLmNsaWVudFByb2dWZXIsIHRoaXMuY2xpZW50UGlkLCB0aGlzLmNvbm5lY3Rpb25JZFxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZignRmxhZ3MxOjB4JTAyWCwgRmxhZ3MyOjB4JTAyWCwgVHlwZUZsYWdzOjB4JTAyWCwgRmxhZ3MzOjB4JTAyWCwgQ2xpZW50VGltZXpvbmU6JWQsIENsaWVudExDSUQ6MHglMDhYJyxcbiAgICAgICAgICAgICAgdGhpcy5idWlsZE9wdGlvbkZsYWdzMSgpLCB0aGlzLmJ1aWxkT3B0aW9uRmxhZ3MyKCksIHRoaXMuYnVpbGRUeXBlRmxhZ3MoKSwgdGhpcy5idWlsZE9wdGlvbkZsYWdzMygpLCB0aGlzLmNsaWVudFRpbWVab25lLCB0aGlzLmNsaWVudExjaWRcbiAgICAgICkgKyAnXFxuJyArIGluZGVudCArICcgICAgICAgICAnICtcbiAgICAgIHNwcmludGYoXCJIb3N0bmFtZTonJXMnLCBVc2VybmFtZTonJXMnLCBQYXNzd29yZDonJXMnLCBBcHBOYW1lOiclcycsIFNlcnZlck5hbWU6JyVzJywgTGlicmFyeU5hbWU6JyVzJ1wiLFxuICAgICAgICAgICAgICB0aGlzLmhvc3RuYW1lLCB0aGlzLnVzZXJOYW1lLCB0aGlzLnBhc3N3b3JkLCB0aGlzLmFwcE5hbWUsIHRoaXMuc2VydmVyTmFtZSwgdGhpcy5saWJyYXJ5TmFtZVxuICAgICAgKSArICdcXG4nICsgaW5kZW50ICsgJyAgICAgICAgICcgK1xuICAgICAgc3ByaW50ZihcIkxhbmd1YWdlOiclcycsIERhdGFiYXNlOiclcycsIFNTUEk6JyVzJywgQXR0YWNoRGJGaWxlOiclcycsIENoYW5nZVBhc3N3b3JkOiclcydcIixcbiAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSwgdGhpcy5kYXRhYmFzZSwgdGhpcy5zc3BpLCB0aGlzLmF0dGFjaERiRmlsZSwgdGhpcy5jaGFuZ2VQYXNzd29yZFxuICAgICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dpbjdQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBMb2dpbjdQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFFQSxNQUFNRSxPQUFPLEdBQUc7RUFDZEMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxhQUFhLEVBQUUsSUFBSTtFQUNuQkMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLGdCQUFnQixFQUFFLElBQUk7RUFDdEJDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7QUFFRCxNQUFNQyxPQUFPLEdBQUc7RUFDZEMsY0FBYyxFQUFFLElBQUk7RUFDcEJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxRQUFRLEVBQUUsSUFBSTtF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","/**\r\n * [js-md4]{@link https://github.com/emn178/js-md4}\r\n *\r\n * @namespace md4\r\n * @version 0.3.2\r\n * @author Yi-Cyuan Chen [emn178@gmail.com]\r\n * @copyright Yi-Cyuan Chen 2015-2027\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n  'use strict';\r\n\r\n  var root = typeof window === 'object' ? window : {};\r\n  var NODE_JS = !root.JS_MD4_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n  if (NODE_JS) {\r\n    root = global;\r\n  }\r\n  var COMMON_JS = !root.JS_MD4_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n  var AMD = typeof define === 'function' && define.amd;\r\n  var ARRAY_BUFFER = !root.JS_MD4_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\r\n  var HEX_CHARS = '0123456789abcdef'.split('');\r\n  var EXTRA = [128, 32768, 8388608, -2147483648];\r\n  var SHIFT = [0, 8, 16, 24];\r\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer'];\r\n\r\n  var blocks = [], buffer8;\r\n  if (ARRAY_BUFFER) {\r\n    var buffer = new ArrayBuffer(68);\r\n    buffer8 = new Uint8Array(buffer);\r\n    blocks = new Uint32Array(buffer);\r\n  }\r\n\r\n  /**\r\n   * @method hex\r\n   * @memberof md4\r\n   * @description Output hash as hex string\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {String} Hex string\r\n   * @example\r\n   * md4.hex('The quick brown fox jumps over the lazy dog');\r\n   * // equal to\r\n   * md4('The quick brown fox jumps over the lazy dog');\r\n   */\r\n  /**\r\n   * @method digest\r\n   * @memberof md4\r\n   * @description Output hash as bytes array\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {Array} Bytes array\r\n   * @example\r\n   * md4.digest('The quick brown fox jumps over the lazy dog');\r\n   */\r\n  /**\r\n   * @method array\r\n   * @memberof md4\r\n   * @description Output hash as bytes array\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {Array} Bytes array\r\n   * @example\r\n   * md4.array('The quick brown fox jumps over the lazy dog');\r\n   */\r\n  /**\r\n   * @method buffer\r\n   * @memberof md4\r\n   * @description Output hash as ArrayBuffer\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {ArrayBuffer} ArrayBuffer\r\n   * @example\r\n   * md4.buffer('The quick brown fox jumps over the lazy dog');\r\n   */\r\n  var createOutputMethod = function (outputType) {\r\n    return function(message) {\r\n      return new Md4(true).update(message)[outputType]();\r\n    }\r\n  };\r\n\r\n  /**\r\n   * @method create\r\n   * @memberof md4\r\n   * @description Create Md4 object\r\n   * @returns {Md4} MD4 object.\r\n   * @example\r\n   * var hash = md4.create();\r\n   */\r\n  /**\r\n   * @method update\r\n   * @memberof md4\r\n   * @description Create and update Md4 object\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {Md4} MD4 object.\r\n   * @example\r\n   * var hash = md4.update('The quick brown fox jumps over the lazy dog');\r\n   * // equal to\r\n   * var hash = md4.create();\r\n   * hash.update('The quick brown fox jumps over the lazy dog');\r\n   */\r\n  var createMethod = function () {\r\n    var method = createOutputMethod('hex');\r\n    if (NODE_JS) {\r\n      method = nodeWrap(method);\r\n    }\r\n    method.create = function () {\r\n      return new Md4();\r\n    };\r\n    method.update = function (message) {\r\n      return method.create().update(message);\r\n    };\r\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n      var type = OUTPUT_TYPES[i];\r\n      method[type] = createOutputMethod(type);\r\n    }\r\n    return method;\r\n  };\r\n\r\n  var nodeWrap = function (method) {\r\n    var crypto = require('crypto');\r\n    var Buffer = require('buffer').Buffer;\r\n    var nodeMethod = function (message) {\r\n      if (typeof message === 'string') {\r\n        return crypto.createHash('md4').update(message, 'utf8').digest('hex');\r\n      } else if (ARRAY_BUFFER && message instanceof ArrayBuffer) {\r\n        message = new Uint8Array(message);\r\n      } else if (message.length === undefined) {\r\n        return method(message);\r\n      }\r\n      return crypto.createHash('md4').update(new Buffer(message)).digest('hex');\r\n    };\r\n    return nodeMethod;\r\n  };\r\n\r\n  /**\r\n   * Md4 class\r\n   * @class Md4\r\n   * @description This is internal class.\r\n   * @see {@link md4.create}\r\n   */\r\n  function Md4(sharedMemory) {\r\n    if (sharedMemory) {\r\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\r\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\r\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\r\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\r\n      this.blocks = blocks;\r\n      this.buffer8 = buffer8;\r\n    } else {\r\n      if (ARRAY_BUFFER) {\r\n        var buffer = new ArrayBuffer(68);\r\n        this.buffer8 = new Uint8Array(buffer);\r\n        this.blocks = new Uint32Array(buffer);\r\n      } else {\r\n        this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n      }\r\n    }\r\n    this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = 0;\r\n    this.finalized = this.hashed = false;\r\n    this.first = true;\r\n  }\r\n\r\n  /**\r\n   * @method update\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Update hash\r\n   * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n   * @returns {Md4} MD4 object.\r\n   * @see {@link md4.update}\r\n   */\r\n  Md4.prototype.update = function (message) {\r\n    if (this.finalized) {\r\n      return;\r\n    }\r\n    var notString = typeof message !== 'string';\r\n    if (notString && ARRAY_BUFFER && message instanceof ArrayBuffer) {\r\n      message = new Uint8Array(message);\r\n    }\r\n    var code, index = 0, i, length = message.length || 0, blocks = this.blocks;\r\n    var buffer8 = this.buffer8;\r\n\r\n    while (index < length) {\r\n      if (this.hashed) {\r\n        this.hashed = false;\r\n        blocks[0] = blocks[16];\r\n        blocks[16] = blocks[1] = blocks[2] = blocks[3] =\r\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\r\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\r\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\r\n      }\r\n\r\n      if (notString) {\r\n        if (ARRAY_BUFFER) {\r\n          for (i = this.start; index < length && i < 64; ++index) {\r\n            buffer8[i++] = message[index];\r\n          }\r\n        } else {\r\n          for (i = this.start; index < length && i < 64; ++index) {\r\n            blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n          }\r\n        }\r\n      } else {\r\n        if (ARRAY_BUFFER) {\r\n          for (i = this.start; index < length && i < 64; ++index) {\r\n            code = message.charCodeAt(index);\r\n            if (code < 0x80) {\r\n              buffer8[i++] = code;\r\n            } else if (code < 0x800) {\r\n              buffer8[i++] = 0xc0 | (code >> 6);\r\n              buffer8[i++] = 0x80 | (code & 0x3f);\r\n            } else if (code < 0xd800 || code >= 0xe000) {\r\n              buffer8[i++] = 0xe0 | (code >> 12);\r\n              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\r\n              buffer8[i++] = 0x80 | (code & 0x3f);\r\n            } else {\r\n              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n              buffer8[i++] = 0xf0 | (code >> 18);\r\n              buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);\r\n              buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\r\n              buffer8[i++] = 0x80 | (code & 0x3f);\r\n            }\r\n          }\r\n        } else {\r\n          for (i = this.start; index < length && i < 64; ++index) {\r\n            code = message.charCodeAt(index);\r\n            if (code < 0x80) {\r\n              blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n            } else if (code < 0x800) {\r\n              blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n            } else if (code < 0xd800 || code >= 0xe000) {\r\n              blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n            } else {\r\n              code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n              blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n              blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n            }\r\n          }\r\n        }\r\n      }\r\n      this.lastByteIndex = i;\r\n      this.bytes += i - this.start;\r\n      if (i >= 64) {\r\n        this.start = i - 64;\r\n        this.hash();\r\n        this.hashed = true;\r\n      } else {\r\n        this.start = i;\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  Md4.prototype.finalize = function () {\r\n    if (this.finalized) {\r\n      return;\r\n    }\r\n    this.finalized = true;\r\n    var blocks = this.blocks, i = this.lastByteIndex;\r\n    blocks[i >> 2] |= EXTRA[i & 3];\r\n    if (i >= 56) {\r\n      if (!this.hashed) {\r\n        this.hash();\r\n      }\r\n      blocks[0] = blocks[16];\r\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\r\n      blocks[4] = blocks[5] = blocks[6] = blocks[7] =\r\n      blocks[8] = blocks[9] = blocks[10] = blocks[11] =\r\n      blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\r\n    }\r\n    blocks[14] = this.bytes << 3;\r\n    this.hash();\r\n  };\r\n\r\n  Md4.prototype.hash = function () {\r\n    var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;\r\n\r\n    if (this.first) {\r\n      a = blocks[0] - 1;\r\n      a = (a << 3) | (a >>> 29);\r\n      d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;\r\n      d = (d << 7) | (d >>> 25);\r\n      c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;\r\n      c = (c << 11) | (c >>> 21);\r\n      b = ((c & d) | (~c & a)) + blocks[3] - 271733879;\r\n      b = (b << 19) | (b >>> 13);\r\n    } else {\r\n      a = this.h0;\r\n      b = this.h1;\r\n      c = this.h2;\r\n      d = this.h3;\r\n      a += ((b & c) | (~b & d)) + blocks[0];\r\n      a = (a << 3) | (a >>> 29);\r\n      d += ((a & b) | (~a & c)) + blocks[1];\r\n      d = (d << 7) | (d >>> 25);\r\n      c += ((d & a) | (~d & b)) + blocks[2];\r\n      c = (c << 11) | (c >>> 21);\r\n      b += ((c & d) | (~c & a)) + blocks[3];\r\n      b = (b << 19) | (b >>> 13);\r\n    }\r\n    a += ((b & c) | (~b & d)) + blocks[4];\r\n    a = (a << 3) | (a >>> 29);\r\n    d += ((a & b) | (~a & c)) + blocks[5];\r\n    d = (d << 7) | (d >>> 25);\r\n    c += ((d & a) | (~d & b)) + blocks[6];\r\n    c = (c << 11) | (c >>> 21);\r\n    b += ((c & d) | (~c & a)) + blocks[7];\r\n    b = (b << 19) | (b >>> 13);\r\n    a += ((b & c) | (~b & d)) + blocks[8];\r\n    a = (a << 3) | (a >>> 29);\r\n    d += ((a & b) | (~a & c)) + blocks[9];\r\n    d = (d << 7) | (d >>> 25);\r\n    c += ((d & a) | (~d & b)) + blocks[10];\r\n    c = (c << 11) | (c >>> 21);\r\n    b += ((c & d) | (~c & a)) + blocks[11];\r\n    b = (b << 19) | (b >>> 13);\r\n    a += ((b & c) | (~b & d)) + blocks[12];\r\n    a = (a << 3) | (a >>> 29);\r\n    d += ((a & b) | (~a & c)) + blocks[13];\r\n    d = (d << 7) | (d >>> 25);\r\n    c += ((d & a) | (~d & b)) + blocks[14];\r\n    c = (c << 11) | (c >>> 21);\r\n    b += ((c & d) | (~c & a)) + blocks[15];\r\n    b = (b << 19) | (b >>> 13);\r\n\r\n    bc = b & c;\r\n    a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;\r\n    a = (a << 3) | (a >>> 29);\r\n    ab = a & b;\r\n    d += (ab | (a & c) | bc) + blocks[4] + 1518500249;\r\n    d = (d << 5) | (d >>> 27);\r\n    da = d & a;\r\n    c += (da | (d & b) | ab) + blocks[8] + 1518500249;\r\n    c = (c << 9) | (c >>> 23);\r\n    cd = c & d;\r\n    b += (cd | (c & a) | da) + blocks[12] + 1518500249;\r\n    b = (b << 13) | (b >>> 19);\r\n    bc = b & c;\r\n    a += (bc | (b & d) | cd) + blocks[1] + 1518500249;\r\n    a = (a << 3) | (a >>> 29);\r\n    ab = a & b;\r\n    d += (ab | (a & c) | bc) + blocks[5] + 1518500249;\r\n    d = (d << 5) | (d >>> 27);\r\n    da = d & a;\r\n    c += (da | (d & b) | ab) + blocks[9] + 1518500249;\r\n    c = (c << 9) | (c >>> 23);\r\n    cd = c & d;\r\n    b += (cd | (c & a) | da) + blocks[13] + 1518500249;\r\n    b = (b << 13) | (b >>> 19);\r\n    bc = b & c;\r\n    a += (bc | (b & d) | cd) + blocks[2] + 1518500249;\r\n    a = (a << 3) | (a >>> 29);\r\n    ab = a & b;\r\n    d += (ab | (a & c) | bc) + blocks[6] + 1518500249;\r\n    d = (d << 5) | (d >>> 27);\r\n    da = d & a;\r\n    c += (da | (d & b) | ab) + blocks[10] + 1518500249;\r\n    c = (c << 9) | (c >>> 23);\r\n    cd = c & d;\r\n    b += (cd | (c & a) | da) + blocks[14] + 1518500249;\r\n    b = (b << 13) | (b >>> 19);\r\n    bc = b & c;\r\n    a += (bc | (b & d) | cd) + blocks[3] + 1518500249;\r\n    a = (a << 3) | (a >>> 29);\r\n    ab = a & b;\r\n    d += (ab | (a & c) | bc) + blocks[7] + 1518500249;\r\n    d = (d << 5) | (d >>> 27);\r\n    da = d & a;\r\n    c += (da | (d & b) | ab) + blocks[11] + 1518500249;\r\n    c = (c << 9) | (c >>> 23);\r\n    b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;\r\n    b = (b << 13) | (b >>> 19);\r\n\r\n    bc = b ^ c;\r\n    a += (bc ^ d) + blocks[0] + 1859775393;\r\n    a = (a << 3) | (a >>> 29);\r\n    d += (bc ^ a) + blocks[8] + 1859775393;\r\n    d = (d << 9) | (d >>> 23);\r\n    da = d ^ a;\r\n    c += (da ^ b) + blocks[4] + 1859775393;\r\n    c = (c << 11) | (c >>> 21);\r\n    b += (da ^ c) + blocks[12] + 1859775393;\r\n    b = (b << 15) | (b >>> 17);\r\n    bc = b ^ c;\r\n    a += (bc ^ d) + blocks[2] + 1859775393;\r\n    a = (a << 3) | (a >>> 29);\r\n    d += (bc ^ a) + blocks[10] + 1859775393;\r\n    d = (d << 9) | (d >>> 23);\r\n    da = d ^ a;\r\n    c += (da ^ b) + blocks[6] + 1859775393;\r\n    c = (c << 11) | (c >>> 21);\r\n    b += (da ^ c) + blocks[14] + 1859775393;\r\n    b = (b << 15) | (b >>> 17);\r\n    bc = b ^ c;\r\n    a += (bc ^ d) + blocks[1] + 1859775393;\r\n    a = (a << 3) | (a >>> 29);\r\n    d += (bc ^ a) + blocks[9] + 1859775393;\r\n    d = (d << 9) | (d >>> 23);\r\n    da = d ^ a;\r\n    c += (da ^ b) + blocks[5] + 1859775393;\r\n    c = (c << 11) | (c >>> 21);\r\n    b += (da ^ c) + blocks[13] + 1859775393;\r\n    b = (b << 15) | (b >>> 17);\r\n    bc = b ^ c;\r\n    a += (bc ^ d) + blocks[3] + 1859775393;\r\n    a = (a << 3) | (a >>> 29);\r\n    d += (bc ^ a) + blocks[11] + 1859775393;\r\n    d = (d << 9) | (d >>> 23);\r\n    da = d ^ a;\r\n    c += (da ^ b) + blocks[7] + 1859775393;\r\n    c = (c << 11) | (c >>> 21);\r\n    b += (da ^ c) + blocks[15] + 1859775393;\r\n    b = (b << 15) | (b >>> 17);\r\n\r\n    if (this.first) {\r\n      this.h0 = a + 1732584193 << 0;\r\n      this.h1 = b - 271733879 << 0;\r\n      this.h2 = c - 1732584194 << 0;\r\n      this.h3 = d + 271733878 << 0;\r\n      this.first = false;\r\n    } else {\r\n      this.h0 = this.h0 + a << 0;\r\n      this.h1 = this.h1 + b << 0;\r\n      this.h2 = this.h2 + c << 0;\r\n      this.h3 = this.h3 + d << 0;\r\n    }\r\n  };\r\n\r\n  /**\r\n   * @method hex\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as hex string\r\n   * @returns {String} Hex string\r\n   * @see {@link md4.hex}\r\n   * @example\r\n   * hash.hex();\r\n   */\r\n  Md4.prototype.hex = function () {\r\n    this.finalize();\r\n\r\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\r\n\r\n    return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\r\n      HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\r\n      HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\r\n      HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\r\n      HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\r\n      HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\r\n      HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\r\n      HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\r\n      HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\r\n      HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\r\n      HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\r\n      HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\r\n      HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\r\n      HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\r\n      HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\r\n      HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F];\r\n  };\r\n\r\n  /**\r\n   * @method toString\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as hex string\r\n   * @returns {String} Hex string\r\n   * @see {@link md4.hex}\r\n   * @example\r\n   * hash.toString();\r\n   */\r\n  Md4.prototype.toString = Md4.prototype.hex;\r\n\r\n  /**\r\n   * @method digest\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as bytes array\r\n   * @returns {Array} Bytes array\r\n   * @see {@link md4.digest}\r\n   * @example\r\n   * hash.digest();\r\n   */\r\n  Md4.prototype.digest = function() {\r\n    this.finalize();\r\n\r\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\r\n    return [\r\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF,\r\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF,\r\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF,\r\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF\r\n    ];\r\n  };\r\n\r\n  /**\r\n   * @method array\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as bytes array\r\n   * @returns {Array} Bytes array\r\n   * @see {@link md4.array}\r\n   * @example\r\n   * hash.array();\r\n   */\r\n  Md4.prototype.array = Md4.prototype.digest;\r\n\r\n  /**\r\n   * @method arrayBuffer\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as ArrayBuffer\r\n   * @returns {ArrayBuffer} ArrayBuffer\r\n   * @see {@link md4.arrayBuffer}\r\n   * @example\r\n   * hash.arrayBuffer();\r\n   */\r\n  Md4.prototype.arrayBuffer = function() {\r\n    this.finalize();\r\n\r\n    var buffer = new ArrayBuffer(16);\r\n    var blocks = new Uint32Array(buffer);\r\n    blocks[0] = this.h0;\r\n    blocks[1] = this.h1;\r\n    blocks[2] = this.h2;\r\n    blocks[3] = this.h3;\r\n    return buffer;\r\n  };\r\n\r\n  /**\r\n   * @method buffer\r\n   * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\r\n   * @memberof Md4\r\n   * @instance\r\n   * @description Output hash as ArrayBuffer\r\n   * @returns {ArrayBuffer} ArrayBuffer\r\n   * @see {@link md4.buffer}\r\n   * @example\r\n   * hash.buffer();\r\n   */\r\n  Md4.prototype.buffer = Md4.prototype.arrayBuffer;\r\n\r\n  var exports = createMethod();\r\n\r\n  if (COMMON_JS) {\r\n    module.exports = exports;\r\n  } else {\r\n    /**\r\n     * @method md4\b\r\n     * @description MD4 hash function, export to global in browsers.\r\n     * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\r\n     * @returns {String} md4 hashes\r\n     * @example\r\n     * md4(''); // 31d6cfe0d16ae931b73c59d7e0c089c0\r\n     * md4('The quick brown fox jumps over the lazy dog'); // 1bee69a46ba811185c194762abaeae90\r\n     * md4('The quick brown fox jumps over the lazy dog.'); // 2812c6c7136898c51f6f6739ad08750e\r\n     *\r\n     * // It also supports UTF-8 encoding\r\n     * md4('中文'); // 223088bf7bd45a16436b15360c5fc5a0\r\n     *\r\n     * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`\r\n     * md4([]); // 31d6cfe0d16ae931b73c59d7e0c089c0\r\n     * md4(new Uint8Array([])); // 31d6cfe0d16ae931b73c59d7e0c089c0\r\n     */\r\n    root.md4 = exports;\r\n    if (AMD) {\r\n      define(function () {\r\n        return exports;\r\n      });\r\n    }\r\n  }\r\n})();\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nvar crypto = _interopRequireWildcard(require(\"crypto\"));\nvar _jsMd = _interopRequireDefault(require(\"js-md4\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass NTLMResponsePayload {\n  constructor(loginData) {\n    this.data = this.createResponse(loginData);\n  }\n  toString(indent = '') {\n    return indent + 'NTLM Auth';\n  }\n  createResponse(challenge) {\n    const client_nonce = this.createClientNonce();\n    const lmv2len = 24;\n    const ntlmv2len = 16;\n    const domain = challenge.domain;\n    const username = challenge.userName;\n    const password = challenge.password;\n    const ntlmData = challenge.ntlmpacket;\n    const server_data = ntlmData.target;\n    const server_nonce = ntlmData.nonce;\n    const bufferLength = 64 + domain.length * 2 + username.length * 2 + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n    const data = new _writableTrackingBuffer.default(bufferLength);\n    data.position = 0;\n    data.writeString('NTLMSSP\\u0000', 'utf8');\n    data.writeUInt32LE(0x03);\n    const baseIdx = 64;\n    const dnIdx = baseIdx;\n    const unIdx = dnIdx + domain.length * 2;\n    const l2Idx = unIdx + username.length * 2;\n    const ntIdx = l2Idx + lmv2len;\n    data.writeUInt16LE(lmv2len);\n    data.writeUInt16LE(lmv2len);\n    data.writeUInt32LE(l2Idx);\n    data.writeUInt16LE(ntlmv2len);\n    data.writeUInt16LE(ntlmv2len);\n    data.writeUInt32LE(ntIdx);\n    data.writeUInt16LE(domain.length * 2);\n    data.writeUInt16LE(domain.length * 2);\n    data.writeUInt32LE(dnIdx);\n    data.writeUInt16LE(username.length * 2);\n    data.writeUInt16LE(username.length * 2);\n    data.writeUInt32LE(unIdx);\n    data.writeUInt16LE(0);\n    data.writeUInt16LE(0);\n    data.writeUInt32LE(baseIdx);\n    data.writeUInt16LE(0);\n    data.writeUInt16LE(0);\n    data.writeUInt32LE(baseIdx);\n    data.writeUInt16LE(0x8201);\n    data.writeUInt16LE(0x08);\n    data.writeString(domain, 'ucs2');\n    data.writeString(username, 'ucs2');\n    const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n    data.copyFrom(lmv2Data);\n    const genTime = new Date().getTime();\n    const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n    data.copyFrom(ntlmDataBuffer);\n    data.writeUInt32LE(0x0101);\n    data.writeUInt32LE(0x0000);\n    const timestamp = this.createTimestamp(genTime);\n    data.copyFrom(timestamp);\n    data.copyFrom(client_nonce);\n    data.writeUInt32LE(0x0000);\n    data.copyFrom(server_data);\n    data.writeUInt32LE(0x0000);\n    return data.data;\n  }\n  createClientNonce() {\n    const client_nonce = Buffer.alloc(8, 0);\n    let nidx = 0;\n    while (nidx < 8) {\n      client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n      nidx++;\n    }\n    return client_nonce;\n  }\n  ntlmv2Response(domain, user, password, serverNonce, targetInfo, clientNonce, mytime) {\n    const timestamp = this.createTimestamp(mytime);\n    const hash = this.ntv2Hash(domain, user, password);\n    const dataLength = 40 + targetInfo.length;\n    const data = Buffer.alloc(dataLength, 0);\n    serverNonce.copy(data, 0, 0, 8);\n    data.writeUInt32LE(0x101, 8);\n    data.writeUInt32LE(0x0, 12);\n    timestamp.copy(data, 16, 0, 8);\n    clientNonce.copy(data, 24, 0, 8);\n    data.writeUInt32LE(0x0, 32);\n    targetInfo.copy(data, 36, 0, targetInfo.length);\n    data.writeUInt32LE(0x0, 36 + targetInfo.length);\n    return this.hmacMD5(data, hash);\n  }\n  createTimestamp(time) {\n    const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n    const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n    const hi = Number(tenthsOfAMicrosecond >> BigInt(32) & BigInt(0xffffffff));\n    const result = Buffer.alloc(8);\n    result.writeUInt32LE(lo, 0);\n    result.writeUInt32LE(hi, 4);\n    return result;\n  }\n  lmv2Response(domain, user, password, serverNonce, clientNonce) {\n    const hash = this.ntv2Hash(domain, user, password);\n    const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n    serverNonce.copy(data);\n    clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n    const newhash = this.hmacMD5(data, hash);\n    const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n    newhash.copy(response);\n    clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n    return response;\n  }\n  ntv2Hash(domain, user, password) {\n    const hash = this.ntHash(password);\n    const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n    return this.hmacMD5(identity, hash);\n  }\n  ntHash(text) {\n    const unicodeString = Buffer.from(text, 'ucs2');\n    return Buffer.from(_jsMd.default.arrayBuffer(unicodeString));\n  }\n  hmacMD5(data, key) {\n    return crypto.createHmac('MD5', key).update(data).digest();\n  }\n}\nvar _default = NTLMResponsePayload;\nexports.default = _default;\nmodule.exports = NTLMResponsePayload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJsb2dpbkRhdGEiLCJkYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJCaWdJbnQiLCJsbyIsIk51bWJlciIsImhpIiwicmVzdWx0IiwibmV3aGFzaCIsInJlc3BvbnNlIiwibnRIYXNoIiwiaWRlbnRpdHkiLCJmcm9tIiwidG9VcHBlckNhc2UiLCJ0ZXh0IiwidW5pY29kZVN0cmluZyIsIm1kNCIsImFycmF5QnVmZmVyIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsImRpZ2VzdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IG1kNCBmcm9tICdqcy1tZDQnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBudGxtcGFja2V0OiB7XG4gICAgdGFyZ2V0OiBCdWZmZXI7XG4gICAgbm9uY2U6IEJ1ZmZlcjtcbiAgfTtcbn1cblxuY2xhc3MgTlRMTVJlc3BvbnNlUGF5bG9hZCB7XG4gIGRlY2xhcmUgZGF0YTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKGxvZ2luRGF0YTogT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuY3JlYXRlUmVzcG9uc2UobG9naW5EYXRhKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdOVExNIEF1dGgnO1xuICB9XG5cbiAgY3JlYXRlUmVzcG9uc2UoY2hhbGxlbmdlOiBPcHRpb25zKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gdGhpcy5jcmVhdGVDbGllbnROb25jZSgpO1xuICAgIGNvbnN0IGxtdjJsZW4gPSAyNDtcbiAgICBjb25zdCBudGxtdjJsZW4gPSAxNjtcbiAgICBjb25zdCBkb21haW4gPSBjaGFsbGVuZ2UuZG9tYWluO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gY2hhbGxlbmdlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gY2hhbGxlbmdlLnBhc3N3b3JkO1xuICAgIGNvbnN0IG50bG1EYXRhID0gY2hhbGxlbmdlLm50bG1wYWNrZXQ7XG4gICAgY29uc3Qgc2VydmVyX2RhdGEgPSBudGxtRGF0YS50YXJnZXQ7XG4gICAgY29uc3Qgc2VydmVyX25vbmNlID0gbnRsbURhdGEubm9uY2U7XG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gNjQgKyAoZG9tYWluLmxlbmd0aCAqIDIpICsgKHVzZXJuYW1lLmxlbmd0aCAqIDIpICsgbG12MmxlbiArIG50bG12MmxlbiArIDggKyA4ICsgOCArIDQgKyBzZXJ2ZXJfZGF0YS5sZW5ndGggKyA0O1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihidWZmZXJMZW5ndGgpO1xuICAgIGRhdGEucG9zaXRpb24gPSAwO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoJ05UTE1TU1BcXHUwMDAwJywgJ3V0ZjgnKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMyk7XG4gICAgY29uc3QgYmFzZUlkeCA9IDY0O1xuICAgIGNvbnN0IGRuSWR4ID0gYmFzZUlkeDtcbiAgICBjb25zdCB1bklkeCA9IGRuSWR4ICsgZG9tYWluLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbDJJZHggPSB1bklkeCArIHVzZXJuYW1lLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbnRJZHggPSBsMklkeCArIGxtdjJsZW47XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUobDJJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShudElkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShkbklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSh1c2VybmFtZS5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUodW5JZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDgyMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDA4KTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKGRvbWFpbiwgJ3VjczInKTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKHVzZXJuYW1lLCAndWNzMicpO1xuICAgIGNvbnN0IGxtdjJEYXRhID0gdGhpcy5sbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLmNvcHlGcm9tKGxtdjJEYXRhKTtcbiAgICBjb25zdCBnZW5UaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgbnRsbURhdGFCdWZmZXIgPSB0aGlzLm50bG12MlJlc3BvbnNlKGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJfbm9uY2UsIHNlcnZlcl9kYXRhLCBjbGllbnRfbm9uY2UsIGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20obnRsbURhdGFCdWZmZXIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAxMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20odGltZXN0YW1wKTtcbiAgICBkYXRhLmNvcHlGcm9tKGNsaWVudF9ub25jZSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgZGF0YS5jb3B5RnJvbShzZXJ2ZXJfZGF0YSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgcmV0dXJuIGRhdGEuZGF0YTtcbiAgfVxuXG4gIGNyZWF0ZUNsaWVudE5vbmNlKCkge1xuICAgIGNvbnN0IGNsaWVudF9ub25jZSA9IEJ1ZmZlci5hbGxvYyg4LCAwKTtcbiAgICBsZXQgbmlkeCA9IDA7XG4gICAgd2hpbGUgKG5pZHggPCA4KSB7XG4gICAgICBjbGllbnRfbm9uY2Uud3JpdGVVSW50OChNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI1NSksIG5pZHgpO1xuICAgICAgbmlkeCsrO1xuICAgIH1cbiAgICByZXR1cm4gY2xpZW50X25vbmNlO1xuICB9XG5cbiAgbnRsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgdGFyZ2V0SW5mbzogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyLCBteXRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKG15dGltZSk7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IDQwICsgdGFyZ2V0SW5mby5sZW5ndGg7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhkYXRhTGVuZ3RoLCAwKTtcbiAgICBzZXJ2ZXJOb25jZS5jb3B5KGRhdGEsIDAsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDEwMSwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMTIpO1xuICAgIHRpbWVzdGFtcC5jb3B5KGRhdGEsIDE2LCAwLCA4KTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIDI0LCAwLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzMik7XG4gICAgdGFyZ2V0SW5mby5jb3B5KGRhdGEsIDM2LCAwLCB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMzYgKyB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShkYXRhLCBoYXNoKTtcbiAgfVxuXG4gIGNyZWF0ZVRpbWVzdGFtcCh0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCB0ZW50aHNPZkFNaWNyb3NlY29uZCA9IChCaWdJbnQodGltZSkgKyBCaWdJbnQoMTE2NDQ0NzM2MDApKSAqIEJpZ0ludCgxMDAwMDAwMCk7XG5cbiAgICBjb25zdCBsbyA9IE51bWJlcih0ZW50aHNPZkFNaWNyb3NlY29uZCAmIEJpZ0ludCgweGZmZmZmZmZmKSk7XG4gICAgY29uc3QgaGkgPSBOdW1iZXIoKHRlbnRoc09mQU1pY3Jvc2Vjb25kID4+IEJpZ0ludCgzMikpICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShsbywgMCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUoaGksIDQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2Moc2VydmVyTm9uY2UubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCBzZXJ2ZXJOb25jZS5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICBjb25zdCBuZXdoYXNoID0gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gQnVmZmVyLmFsbG9jKG5ld2hhc2gubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIG5ld2hhc2guY29weShyZXNwb25zZSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShyZXNwb25zZSwgbmV3aGFzaC5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBudHYySGFzaChkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnRIYXNoKHBhc3N3b3JkKTtcbiAgICBjb25zdCBpZGVudGl0eSA9IEJ1ZmZlci5mcm9tKHVzZXIudG9VcHBlckNhc2UoKSArIGRvbWFpbi50b1VwcGVyQ2FzZSgpLCAndWNzMicpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoaWRlbnRpdHksIGhhc2gpO1xuICB9XG5cbiAgbnRIYXNoKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaWNvZGVTdHJpbmcgPSBCdWZmZXIuZnJvbSh0ZXh0LCAndWNzMicpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShtZDQuYXJyYXlCdWZmZXIodW5pY29kZVN0cmluZykpO1xuICB9XG5cbiAgaG1hY01ENShkYXRhOiBCdWZmZXIsIGtleTogQnVmZmVyKSB7XG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIbWFjKCdNRDUnLCBrZXkpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOVExNUmVzcG9uc2VQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBOVExNUmVzcG9uc2VQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQXlCLFNBQUFJLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFILHdCQUFBTyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9B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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.RequestError = exports.ConnectionError = void 0;\nclass ConnectionError extends Error {\n  constructor(message, code) {\n    super(message);\n    this.code = code;\n  }\n}\nexports.ConnectionError = ConnectionError;\nclass RequestError extends Error {\n  constructor(message, code) {\n    super(message);\n    this.code = code;\n  }\n}\nexports.RequestError = RequestError;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb25uZWN0aW9uRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsImNvZGUiLCJleHBvcnRzIiwiUmVxdWVzdEVycm9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29ubmVjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBkZWNsYXJlIGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIGlzVHJhbnNpZW50OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgY29kZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuXG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVxdWVzdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBkZWNsYXJlIGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIG51bWJlcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHN0YXRlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgY2xhc3M6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBzZXJ2ZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgcHJvY05hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBsaW5lTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBjb2RlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG5cbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLE1BQU1BLGVBQWUsU0FBU0MsS0FBSyxDQUFDO0VBS3pDQyxXQUFXQSxDQUFDQyxPQUFlLEVBQUVDLElBQWEsRUFBRTtJQUMxQyxLQUFLLENBQUNELE9BQU8sQ0FBQztJQUVkLElBQUksQ0FBQ0MsSUFBSSxHQUFHQSxJQUFJO0VBQ2xCO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBTCxlQUFBLEdBQUFBLGVBQUE7QUFFTSxNQUFNTSxZQUFZLFNBQVNMLEtBQUssQ0FBQztFQVV0Q0MsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFQyxJQUFhLEVBQUU7SUFDMUMsS0FBSyxDQUFDRCxPQUFPLENBQUM7SUFFZCxJQUFJLENBQUNDLElBQUksR0FBR0EsSUFBSTtFQUNsQjtBQUNGO0FBQUNDLE9BQUEsQ0FBQUMsWUFBQSxHQUFBQSxZQUFBIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SQLServerStatementColumnEncryptionSetting = exports.SQLServerEncryptionType = exports.DescribeParameterEncryptionResultSet2 = exports.DescribeParameterEncryptionResultSet1 = void 0;\n// This code is based on the `mssql-jdbc` library published under the conditions of MIT license.\n// Copyright (c) 2019 Microsoft Corporation\nlet SQLServerEncryptionType = /*#__PURE__*/function (SQLServerEncryptionType) {\n  SQLServerEncryptionType[SQLServerEncryptionType[\"Deterministic\"] = 1] = \"Deterministic\";\n  SQLServerEncryptionType[SQLServerEncryptionType[\"Randomized\"] = 2] = \"Randomized\";\n  SQLServerEncryptionType[SQLServerEncryptionType[\"PlainText\"] = 0] = \"PlainText\";\n  return SQLServerEncryptionType;\n}({});\nexports.SQLServerEncryptionType = SQLServerEncryptionType;\n// Fields in the first resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nlet DescribeParameterEncryptionResultSet1 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet1) {\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyOrdinal\"] = 0] = \"KeyOrdinal\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"DbId\"] = 1] = \"DbId\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyId\"] = 2] = \"KeyId\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyVersion\"] = 3] = \"KeyVersion\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyMdVersion\"] = 4] = \"KeyMdVersion\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"EncryptedKey\"] = 5] = \"EncryptedKey\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"ProviderName\"] = 6] = \"ProviderName\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyPath\"] = 7] = \"KeyPath\";\n  DescribeParameterEncryptionResultSet1[DescribeParameterEncryptionResultSet1[\"KeyEncryptionAlgorithm\"] = 8] = \"KeyEncryptionAlgorithm\";\n  return DescribeParameterEncryptionResultSet1;\n}({}); // Fields in the second resultset of \"sp_describe_parameter_encryption\"\n// We expect the server to return the fields in the resultset in the same order as mentioned below.\n// If the server changes the below order, then transparent parameter encryption will break.\nexports.DescribeParameterEncryptionResultSet1 = DescribeParameterEncryptionResultSet1;\nlet DescribeParameterEncryptionResultSet2 = /*#__PURE__*/function (DescribeParameterEncryptionResultSet2) {\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"ParameterOrdinal\"] = 0] = \"ParameterOrdinal\";\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"ParameterName\"] = 1] = \"ParameterName\";\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"ColumnEncryptionAlgorithm\"] = 2] = \"ColumnEncryptionAlgorithm\";\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"ColumnEncrytionType\"] = 3] = \"ColumnEncrytionType\";\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"ColumnEncryptionKeyOrdinal\"] = 4] = \"ColumnEncryptionKeyOrdinal\";\n  DescribeParameterEncryptionResultSet2[DescribeParameterEncryptionResultSet2[\"NormalizationRuleVersion\"] = 5] = \"NormalizationRuleVersion\";\n  return DescribeParameterEncryptionResultSet2;\n}({});\nexports.DescribeParameterEncryptionResultSet2 = DescribeParameterEncryptionResultSet2;\nlet SQLServerStatementColumnEncryptionSetting = /*#__PURE__*/function (SQLServerStatementColumnEncryptionSetting) {\n  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting[\"UseConnectionSetting\"] = 0] = \"UseConnectionSetting\";\n  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting[\"Enabled\"] = 1] = \"Enabled\";\n  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting[\"ResultSetOnly\"] = 2] = \"ResultSetOnly\";\n  SQLServerStatementColumnEncryptionSetting[SQLServerStatementColumnEncryptionSetting[\"Disabled\"] = 3] = \"Disabled\";\n  return SQLServerStatementColumnEncryptionSetting;\n}({});\nexports.SQLServerStatementColumnEncryptionSetting = SQLServerStatementColumnEncryptionSetting;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSIsImV4cG9ydHMiLCJEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIiwiRGVzY3JpYmVQYXJhbWV0ZXJFbmNyeXB0aW9uUmVzdWx0U2V0MiIsIlNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBgbXNzcWwtamRiY2AgbGlicmFyeSBwdWJsaXNoZWQgdW5kZXIgdGhlIGNvbmRpdGlvbnMgb2YgTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMTkgTWljcm9zb2Z0IENvcnBvcmF0aW9uXG5cbmltcG9ydCB7IENFS0VudHJ5IH0gZnJvbSAnLi9jZWstZW50cnknO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25LZXlJbmZvIHtcbiAgZW5jcnlwdGVkS2V5OiBCdWZmZXI7XG4gIGRiSWQ6IG51bWJlcjtcbiAga2V5SWQ6IG51bWJlcjtcbiAga2V5VmVyc2lvbjogbnVtYmVyO1xuICBtZFZlcnNpb246IEJ1ZmZlcjtcbiAga2V5UGF0aDogc3RyaW5nO1xuICBrZXlTdG9yZU5hbWU6IHN0cmluZztcbiAgYWxnb3JpdGhtTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBTUUxTZXJ2ZXJFbmNyeXB0aW9uVHlwZSB7XG4gIERldGVybWluaXN0aWMgPSAxLFxuICBSYW5kb21pemVkID0gMixcbiAgUGxhaW5UZXh0ID0gMCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQWxnb3JpdGhtIHtcbiAgZW5jcnlwdERhdGE6IChwbGFpblRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xuICBkZWNyeXB0RGF0YTogKGNpcGhlclRleHQ6IEJ1ZmZlcikgPT4gQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b01ldGFkYXRhIHtcbiAgY2VrRW50cnk/OiBDRUtFbnRyeTtcbiAgY2lwaGVyQWxnb3JpdGhtSWQ6IG51bWJlcjtcbiAgY2lwaGVyQWxnb3JpdGhtTmFtZT86IHN0cmluZztcbiAgbm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uOiBCdWZmZXI7XG4gIGVuY3J5cHRpb25LZXlJbmZvPzogRW5jcnlwdGlvbktleUluZm87XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgZW5jcnlwdGlvblR5cGU6IFNRTFNlcnZlckVuY3J5cHRpb25UeXBlO1xuICBjaXBoZXJBbGdvcml0aG0/OiBFbmNyeXB0aW9uQWxnb3JpdGhtO1xuICBiYXNlVHlwZUluZm8/OiBCYXNlTWV0YWRhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzaE1hcDxUPiB7XG4gIFtoYXNoOiBzdHJpbmddOiBUO1xufVxuXG5cbi8vIEZpZWxkcyBpbiB0aGUgZmlyc3QgcmVzdWx0c2V0IG9mIFwic3BfZGVzY3JpYmVfcGFyYW1ldGVyX2VuY3J5cHRpb25cIlxuLy8gV2UgZXhwZWN0IHRoZSBzZXJ2ZXIgdG8gcmV0dXJuIHRoZSBmaWVsZHMgaW4gdGhlIHJlc3VsdHNldCBpbiB0aGUgc2FtZSBvcmRlciBhcyBtZW50aW9uZWQgYmVsb3cuXG4vLyBJZiB0aGUgc2VydmVyIGNoYW5nZXMgdGhlIGJlbG93IG9yZGVyLCB0aGVuIHRyYW5zcGFyZW50IHBhcmFtZXRlciBlbmNyeXB0aW9uIHdpbGwgYnJlYWsuXG5leHBvcnQgZW51bSBEZXNjcmliZVBhcmFtZXRlckVuY3J5cHRpb25SZXN1bHRTZXQxIHtcbiAgS2V5T3JkaW5hbCxcbiAgRGJJZCxcbiAgS2V5SWQsXG4gIEtleVZlcnNpb24sXG4gIEtleU1kVmVyc2lvbixcbiAgRW5jcnlwdGVkS2V5LFxuICBQcm92aWRlck5hbWUsXG4gIEtleVBhdGgsXG4gIEtleUVuY3J5cHRpb25BbGdvcml0aG1cbn1cblxuXG4vLyBGaWVsZHMgaW4gdGhlIHNlY29uZCByZXN1bHRzZXQgb2YgXCJzcF9kZXNjcmliZV9wYXJhbWV0ZXJfZW5jcnlwdGlvblwiXG4vLyBXZSBleHBlY3QgdGhlIHNlcnZlciB0byByZXR1cm4gdGhlIGZpZWxkcyBpbiB0aGUgcmVzdWx0c2V0IGluIHRoZSBzYW1lIG9yZGVyIGFzIG1lbnRpb25lZCBiZWxvdy5cbi8vIElmIHRoZSBzZXJ2ZXIgY2hhbmdlcyB0aGUgYmVsb3cgb3JkZXIsIHRoZW4gdHJhbnNwYXJlbnQgcGFyYW1ldGVyIGVuY3J5cHRpb24gd2lsbCBicmVhay5cbmV4cG9ydCBlbnVtIERlc2NyaWJlUGFyYW1ldGVyRW5jcnlwdGlvblJlc3VsdFNldDIge1xuICBQYXJhbWV0ZXJPcmRpbmFsLFxuICBQYXJhbWV0ZXJOYW1lLFxuICBDb2x1bW5FbmNyeXB0aW9uQWxnb3JpdGhtLFxuICBDb2x1bW5FbmNyeXRpb25UeXBlLFxuICBDb2x1bW5FbmNyeXB0aW9uS2V5T3JkaW5hbCxcbiAgTm9ybWFsaXphdGlvblJ1bGVWZXJzaW9uXG59XG5cbmV4cG9ydCBlbnVtIFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nIHtcbiAgLyoqXG4gICAqIGlmIFwiQ29sdW1uIEVuY3J5cHRpb24gU2V0dGluZz1FbmFibGVkXCIgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLCB1c2UgRW5hYmxlZC4gT3RoZXJ3aXNlLCBtYXBzIHRvIERpc2FibGVkLlxuICAgKi9cbiAgVXNlQ29ubmVjdGlvblNldHRpbmcsXG4gIC8qKlxuICAgKiBFbmFibGVzIFRDRSBmb3IgdGhlIGNvbW1hbmQuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBFbmFibGVkLFxuICAvKipcbiAgICogUGFyYW1ldGVycyB3aWxsIG5vdCBiZSBlbmNyeXB0ZWQsIG9ubHkgdGhlIFJlc3VsdFNldCB3aWxsIGJlIGRlY3J5cHRlZC4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHF1ZXJpZXMgdGhhdFxuICAgKiBkbyBub3QgcGFzcyBhbnkgZW5jcnlwdGVkIGlucHV0IHBhcmFtZXRlcnMuIE92ZXJyaWRlcyB0aGUgY29ubmVjdGlvbiBsZXZlbCBzZXR0aW5nIGZvciB0aGlzIGNvbW1hbmQuXG4gICAqL1xuICBSZXN1bHRTZXRPbmx5LFxuICAvKipcbiAgICogRGlzYWJsZXMgVENFIGZvciB0aGUgY29tbWFuZC5PdmVycmlkZXMgdGhlIGNvbm5lY3Rpb24gbGV2ZWwgc2V0dGluZyBmb3IgdGhpcyBjb21tYW5kLlxuICAgKi9cbiAgRGlzYWJsZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFBQSxJQWdCWUEsdUJBQXVCLDBCQUF2QkEsdUJBQXVCO0VBQXZCQSx1QkFBdUIsQ0FBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCLENBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QixDQUF2QkEsdUJBQXVCO0VBQUEsT0FBdkJBLHVCQUF1QjtBQUFBO0FBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsR0FBQUEsdUJBQUE7QUE0Qm5DO0FBQ0E7QUFDQTtBQUFBLElBQ1lFLHFDQUFxQywwQkFBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFBLE9BQXJDQSxxQ0FBcUM7QUFBQSxPQWFqRDtBQUNBO0FBQ0E7QUFBQUQsT0FBQSxDQUFBQyxxQ0FBQSxHQUFBQSxxQ0FBQTtBQUFBLElBQ1lDLHFDQUFxQywwQkFBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFyQ0EscUNBQXFDLENBQXJDQSxxQ0FBcUM7RUFBckNBLHFDQUFxQyxDQUFyQ0EscUNBQXFDO0VBQXJDQSxxQ0FBcUMsQ0FBckNBLHFDQUFxQztFQUFBLE9BQXJDQSxxQ0FBcUM7QUFBQTtBQUFBRixPQUFBLENBQUFFLHFDQUFBLEdBQUFBLHFDQUFBO0FBQUEsSUFTckNDLHlDQUF5QywwQkFBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBekNBLHlDQUF5QyxDQUF6Q0EseUNBQXlDO0VBQXpDQSx5Q0FBeUMsQ0FBekNBLHlDQUF5QztFQUF6Q0EseUNBQXlDLENBQXpDQSx5Q0FBeUM7RUFBQSxPQUF6Q0EseUNBQXlDO0FBQUE7QUFBQUgsT0FBQSxDQUFBRyx5Q0FBQSxHQUFBQSx5Q0FBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _events = require(\"events\");\nvar _errors = require(\"./errors\");\nvar _types = require(\"./always-encrypted/types\");\n/**\n * The callback is called when the request has completed, either successfully or with an error.\n * If an error occurs during execution of the statement(s), then `err` will describe the error.\n *\n * As only one request at a time may be executed on a connection, another request should not\n * be initiated until this callback is called.\n *\n * This callback is called before `requestCompleted` is emitted.\n */\n\n/**\n * ```js\n * const { Request } = require('tedious');\n * const request = new Request(\"select 42, 'hello world'\", (err, rowCount) {\n *   // Request completion callback...\n * });\n * connection.execSql(request);\n * ```\n */\nclass Request extends _events.EventEmitter {\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * This event, describing result set columns, will be emitted before row\n   * events are emitted. This event may be emitted multiple times when more\n   * than one recordset is produced by the statement.\n   *\n   * An array like object, where the columns can be accessed either by index\n   * or name. Columns with a name that is an integer are not accessible by name,\n   * as it would be interpreted as an array index.\n   */\n\n  /**\n   * The request has been prepared and can be used in subsequent calls to execute and unprepare.\n   */\n\n  /**\n   * The request encountered an error and has not been prepared.\n   */\n\n  /**\n   * A row resulting from execution of the SQL statement.\n   */\n\n  /**\n   * All rows from a result set have been provided (through `row` events).\n   *\n   * This token is used to indicate the completion of a SQL statement.\n   * As multiple SQL statements can be sent to the server in a single SQL batch, multiple `done` can be generated.\n   * An `done` event is emitted for each SQL statement in the SQL batch except variable declarations.\n   * For execution of SQL statements within stored procedures, `doneProc` and `doneInProc` events are used in place of `done`.\n   *\n   * If you are using [[Connection.execSql]] then SQL server may treat the multiple calls with the same query as a stored procedure.\n   * When this occurs, the `doneProc` and `doneInProc` events may be emitted instead. You must handle both events to ensure complete coverage.\n   */\n\n  /**\n   * `request.on('doneInProc', function (rowCount, more, rows) { });`\n   *\n   * Indicates the completion status of a SQL statement within a stored procedure. All rows from a statement\n   * in a stored procedure have been provided (through `row` events).\n   *\n   * This event may also occur when executing multiple calls with the same query using [[execSql]].\n   */\n\n  /**\n   * Indicates the completion status of a stored procedure. This is also generated for stored procedures\n   * executed through SQL statements.\\\n   * This event may also occur when executing multiple calls with the same query using [[execSql]].\n   */\n\n  /**\n   * A value for an output parameter (that was added to the request with [[addOutputParameter]]).\n   * See also `Using Parameters`.\n   */\n\n  /**\n   * This event gives the columns by which data is ordered, if `ORDER BY` clause is executed in SQL Server.\n   */\n\n  on(event, listener) {\n    return super.on(event, listener);\n  }\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  emit(event, ...args) {\n    return super.emit(event, ...args);\n  }\n\n  /**\n   * @param sqlTextOrProcedure\n   *   The SQL statement to be executed\n   *\n   * @param callback\n   *   The callback to execute once the request has been fully completed.\n   */\n  constructor(sqlTextOrProcedure, callback, options) {\n    super();\n    this.sqlTextOrProcedure = sqlTextOrProcedure;\n    this.parameters = [];\n    this.parametersByName = {};\n    this.preparing = false;\n    this.handle = undefined;\n    this.canceled = false;\n    this.paused = false;\n    this.error = undefined;\n    this.connection = undefined;\n    this.timeout = undefined;\n    this.userCallback = callback;\n    this.statementColumnEncryptionSetting = options && options.statementColumnEncryptionSetting || _types.SQLServerStatementColumnEncryptionSetting.UseConnectionSetting;\n    this.cryptoMetadataLoaded = false;\n    this.callback = function (err, rowCount, rows) {\n      if (this.preparing) {\n        this.preparing = false;\n        if (err) {\n          this.emit('error', err);\n        } else {\n          this.emit('prepared');\n        }\n      } else {\n        this.userCallback(err, rowCount, rows);\n        this.emit('requestCompleted');\n      }\n    };\n  }\n\n  /**\n   * @param name\n   *   The parameter name. This should correspond to a parameter in the SQL,\n   *   or a parameter that a called procedure expects. The name should not start with `@`.\n   *\n   * @param type\n   *   One of the supported data types.\n   *\n   * @param value\n   *   The value that the parameter is to be given. The Javascript type of the\n   *   argument should match that documented for data types.\n   *\n   * @param options\n   *   Additional type options. Optional.\n   */\n  // TODO: `type` must be a valid TDS value type\n  addParameter(name, type, value, options) {\n    const {\n      output = false,\n      length,\n      precision,\n      scale\n    } = options ?? {};\n    const parameter = {\n      type: type,\n      name: name,\n      value: value,\n      output: output,\n      length: length,\n      precision: precision,\n      scale: scale\n    };\n    this.parameters.push(parameter);\n    this.parametersByName[name] = parameter;\n  }\n\n  /**\n   * @param name\n   *   The parameter name. This should correspond to a parameter in the SQL,\n   *   or a parameter that a called procedure expects.\n   *\n   * @param type\n   *   One of the supported data types.\n   *\n   * @param value\n   *   The value that the parameter is to be given. The Javascript type of the\n   *   argument should match that documented for data types\n   *\n   * @param options\n   *   Additional type options. Optional.\n   */\n  addOutputParameter(name, type, value, options) {\n    this.addParameter(name, type, value, {\n      ...options,\n      output: true\n    });\n  }\n\n  /**\n   * @private\n   */\n  makeParamsParameter(parameters) {\n    let paramsParameter = '';\n    for (let i = 0, len = parameters.length; i < len; i++) {\n      const parameter = parameters[i];\n      if (paramsParameter.length > 0) {\n        paramsParameter += ', ';\n      }\n      paramsParameter += '@' + parameter.name + ' ';\n      paramsParameter += parameter.type.declaration(parameter);\n      if (parameter.output) {\n        paramsParameter += ' OUTPUT';\n      }\n    }\n    return paramsParameter;\n  }\n\n  /**\n   * @private\n   */\n  validateParameters(collation) {\n    for (let i = 0, len = this.parameters.length; i < len; i++) {\n      const parameter = this.parameters[i];\n      try {\n        parameter.value = parameter.type.validate(parameter.value, collation);\n      } catch (error) {\n        throw new _errors.RequestError('Validation failed for parameter \\'' + parameter.name + '\\'. ' + error.message, 'EPARAM');\n      }\n    }\n  }\n\n  /**\n   * Temporarily suspends the flow of data from the database. No more `row` events will be emitted until [[resume] is called.\n   * If this request is already in a paused state, calling [[pause]] has no effect.\n   */\n  pause() {\n    if (this.paused) {\n      return;\n    }\n    this.emit('pause');\n    this.paused = true;\n  }\n\n  /**\n   * Resumes the flow of data from the database.\n   * If this request is not in a paused state, calling [[resume]] has no effect.\n   */\n  resume() {\n    if (!this.paused) {\n      return;\n    }\n    this.paused = false;\n    this.emit('resume');\n  }\n\n  /**\n   * Cancels a request while waiting for a server response.\n   */\n  cancel() {\n    if (this.canceled) {\n      return;\n    }\n    this.canceled = true;\n    this.emit('cancel');\n  }\n\n  /**\n   * Sets a timeout for this request.\n   *\n   * @param timeout\n   *   The number of milliseconds before the request is considered failed,\n   *   or `0` for no timeout. When no timeout is set for the request,\n   *   the [[ConnectionOptions.requestTimeout]] of the [[Connection]] is used.\n   */\n  setTimeout(timeout) {\n    this.timeout = timeout;\n  }\n}\nvar _default = Request;\nexports.default = _default;\nmodule.exports = Request;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9lcnJvcnMiLCJfdHlwZXMiLCJSZXF1ZXN0IiwiRXZlbnRFbWl0dGVyIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZW1pdCIsImFyZ3MiLCJjb25zdHJ1Y3RvciIsInNxbFRleHRPclByb2NlZHVyZSIsImNhbGxiYWNrIiwib3B0aW9ucyIsInBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzQnlOYW1lIiwicHJlcGFyaW5nIiwiaGFuZGxlIiwidW5kZWZpbmVkIiwiY2FuY2VsZWQiLCJwYXVzZWQiLCJlcnJvciIsImNvbm5lY3Rpb24iLCJ0aW1lb3V0IiwidXNlckNhbGxiYWNrIiwic3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmciLCJTUUxTZXJ2ZXJTdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyIsIlVzZUNvbm5lY3Rpb25TZXR0aW5nIiwiY3J5cHRvTWV0YWRhdGFMb2FkZWQiLCJlcnIiLCJyb3dDb3VudCIsInJvd3MiLCJhZGRQYXJhbWV0ZXIiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwib3V0cHV0IiwibGVuZ3RoIiwicHJlY2lzaW9uIiwic2NhbGUiLCJwYXJhbWV0ZXIiLCJwdXNoIiwiYWRkT3V0cHV0UGFyYW1ldGVyIiwibWFrZVBhcmFtc1BhcmFtZXRlciIsInBhcmFtc1BhcmFtZXRlciIsImkiLCJsZW4iLCJkZWNsYXJhdGlvbiIsInZhbGlkYXRlUGFyYW1ldGVycyIsImNvbGxhdGlvbiIsInZhbGlkYXRlIiwiUmVxdWVzdEVycm9yIiwibWVzc2FnZSIsInBhdXNlIiwicmVzdW1lIiwiY2FuY2VsIiwic2V0VGltZW91dCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvcmVxdWVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgdHlwZSBQYXJhbWV0ZXIsIHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBDb25uZWN0aW9uIGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhZGF0YS1wYXJzZXInO1xuaW1wb3J0IHsgU1FMU2VydmVyU3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vdG9rZW4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4vY29sbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgaGFzIGNvbXBsZXRlZCwgZWl0aGVyIHN1Y2Nlc3NmdWxseSBvciB3aXRoIGFuIGVycm9yLlxuICogSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBleGVjdXRpb24gb2YgdGhlIHN0YXRlbWVudChzKSwgdGhlbiBgZXJyYCB3aWxsIGRlc2NyaWJlIHRoZSBlcnJvci5cbiAqXG4gKiBBcyBvbmx5IG9uZSByZXF1ZXN0IGF0IGEgdGltZSBtYXkgYmUgZXhlY3V0ZWQgb24gYSBjb25uZWN0aW9uLCBhbm90aGVyIHJlcXVlc3Qgc2hvdWxkIG5vdFxuICogYmUgaW5pdGlhdGVkIHVudGlsIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGJlZm9yZSBgcmVxdWVzdENvbXBsZXRlZGAgaXMgZW1pdHRlZC5cbiAqL1xudHlwZSBDb21wbGV0aW9uQ2FsbGJhY2sgPVxuICAvKipcbiAgICogQHBhcmFtIGVycm9yXG4gICAqICAgSWYgYW4gZXJyb3Igb2NjdXJyZWQsIGFuIGVycm9yIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHJvd0NvdW50XG4gICAqICAgVGhlIG51bWJlciBvZiByb3dzIGVtaXR0ZWQgYXMgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICpcbiAgICogQHBhcmFtIHJvd3NcbiAgICogICBSb3dzIGFzIGEgcmVzdWx0IG9mIGV4ZWN1dGluZyB0aGUgU1FMIHN0YXRlbWVudC5cbiAgICogICBXaWxsIG9ubHkgYmUgYXZhaWxhYmxlIGlmIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb25dXSBpcyBgdHJ1ZWAuXG4gICAqL1xuICAvLyBUT0RPOiBGaWd1cmUgb3V0IGhvdyB0byB0eXBlIHRoZSBgcm93c2AgcGFyYW1ldGVyIGhlcmUuXG4gIChlcnJvcjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCByb3dDb3VudD86IG51bWJlciwgcm93cz86IGFueSkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXJPcHRpb25zIHtcbiAgb3V0cHV0PzogYm9vbGVhbjtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVxdWVzdE9wdGlvbnMge1xuICBzdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZz86IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nO1xufVxuXG4vKipcbiAqIGBgYGpzXG4gKiBjb25zdCB7IFJlcXVlc3QgfSA9IHJlcXVpcmUoJ3RlZGlvdXMnKTtcbiAqIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChcInNlbGVjdCA0MiwgJ2hlbGxvIHdvcmxkJ1wiLCAoZXJyLCByb3dDb3VudCkge1xuICogICAvLyBSZXF1ZXN0IGNvbXBsZXRpb24gY2FsbGJhY2suLi5cbiAqIH0pO1xuICogY29ubmVjdGlvbi5leGVjU3FsKHJlcXVlc3QpO1xuICogYGBgXG4gKi9cbmNsYXNzIFJlcXVlc3QgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgc3FsVGV4dE9yUHJvY2VkdXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHBhcmFtZXRlcnNCeU5hbWU6IHsgW2tleTogc3RyaW5nXTogUGFyYW1ldGVyIH07XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBwcmVwYXJpbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHBhdXNlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHVzZXJDYWxsYmFjazogQ29tcGxldGlvbkNhbGxiYWNrO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgaGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgdGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByb3dzPzogQXJyYXk8YW55PjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJzdD86IEFycmF5PGFueT47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByb3dDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY2FsbGJhY2s6IENvbXBsZXRpb25DYWxsYmFjaztcblxuXG4gIGRlY2xhcmUgc2hvdWxkSG9ub3JBRT86IGJvb2xlYW47XG4gIGRlY2xhcmUgc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmc6IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nO1xuICBkZWNsYXJlIGNyeXB0b01ldGFkYXRhTG9hZGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50LCBkZXNjcmliaW5nIHJlc3VsdCBzZXQgY29sdW1ucywgd2lsbCBiZSBlbWl0dGVkIGJlZm9yZSByb3dcbiAgICogZXZlbnRzIGFyZSBlbWl0dGVkLiBUaGlzIGV2ZW50IG1heSBiZSBlbWl0dGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gbW9yZVxuICAgKiB0aGFuIG9uZSByZWNvcmRzZXQgaXMgcHJvZHVjZWQgYnkgdGhlIHN0YXRlbWVudC5cbiAgICpcbiAgICogQW4gYXJyYXkgbGlrZSBvYmplY3QsIHdoZXJlIHRoZSBjb2x1bW5zIGNhbiBiZSBhY2Nlc3NlZCBlaXRoZXIgYnkgaW5kZXhcbiAgICogb3IgbmFtZS4gQ29sdW1ucyB3aXRoIGEgbmFtZSB0aGF0IGlzIGFuIGludGVnZXIgYXJlIG5vdCBhY2Nlc3NpYmxlIGJ5IG5hbWUsXG4gICAqIGFzIGl0IHdvdWxkIGJlIGludGVycHJldGVkIGFzIGFuIGFycmF5IGluZGV4LlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdjb2x1bW5NZXRhZGF0YScsXG4gICAgbGlzdGVuZXI6XG4gICAgKGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gfCB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBoYXMgYmVlbiBwcmVwYXJlZCBhbmQgY2FuIGJlIHVzZWQgaW4gc3Vic2VxdWVudCBjYWxscyB0byBleGVjdXRlIGFuZCB1bnByZXBhcmUuXG4gICAqL1xuICBvbihldmVudDogJ3ByZXBhcmVkJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSByZXF1ZXN0IGVuY291bnRlcmVkIGFuIGVycm9yIGFuZCBoYXMgbm90IGJlZW4gcHJlcGFyZWQuXG4gICAqL1xuICBvbihldmVudDogJ2Vycm9yJywgbGlzdGVuZXI6IChlcnI6IEVycm9yKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIHJvdyByZXN1bHRpbmcgZnJvbSBleGVjdXRpb24gb2YgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ3JvdycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEFuIGFycmF5IG9yIG9iamVjdCAoZGVwZW5kcyBvbiBbW0Nvbm5lY3Rpb25PcHRpb25zLnVzZUNvbHVtbk5hbWVzXV0pLCB3aGVyZSB0aGUgY29sdW1ucyBjYW4gYmUgYWNjZXNzZWQgYnkgaW5kZXgvbmFtZS5cbiAgICAgICAqIEVhY2ggY29sdW1uIGhhcyB0d28gcHJvcGVydGllcywgYG1ldGFkYXRhYCBhbmQgYHZhbHVlYO+8mlxuICAgICAgICpcbiAgICAgICAqICogYG1ldGFkYXRhYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBzYW1lIGRhdGEgdGhhdCBpcyBleHBvc2VkIGluIHRoZSBgY29sdW1uTWV0YWRhdGFgIGV2ZW50LlxuICAgICAgICpcbiAgICAgICAqICogYHZhbHVlYFxuICAgICAgICpcbiAgICAgICAqICAgIFRoZSBjb2x1bW4ncyB2YWx1ZS4gSXQgd2lsbCBiZSBgbnVsbGAgZm9yIGEgYE5VTExgLlxuICAgICAgICogICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbHVtbnMgd2l0aCB0aGUgc2FtZSBuYW1lLCB0aGVuIHRoaXMgd2lsbCBiZSBhbiBhcnJheSBvZiB0aGUgdmFsdWVzLlxuICAgICAgICovXG4gICAgICAoY29sdW1uczogYW55KSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogQWxsIHJvd3MgZnJvbSBhIHJlc3VsdCBzZXQgaGF2ZSBiZWVuIHByb3ZpZGVkICh0aHJvdWdoIGByb3dgIGV2ZW50cykuXG4gICAqXG4gICAqIFRoaXMgdG9rZW4gaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgY29tcGxldGlvbiBvZiBhIFNRTCBzdGF0ZW1lbnQuXG4gICAqIEFzIG11bHRpcGxlIFNRTCBzdGF0ZW1lbnRzIGNhbiBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgaW4gYSBzaW5nbGUgU1FMIGJhdGNoLCBtdWx0aXBsZSBgZG9uZWAgY2FuIGJlIGdlbmVyYXRlZC5cbiAgICogQW4gYGRvbmVgIGV2ZW50IGlzIGVtaXR0ZWQgZm9yIGVhY2ggU1FMIHN0YXRlbWVudCBpbiB0aGUgU1FMIGJhdGNoIGV4Y2VwdCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuXG4gICAqIEZvciBleGVjdXRpb24gb2YgU1FMIHN0YXRlbWVudHMgd2l0aGluIHN0b3JlZCBwcm9jZWR1cmVzLCBgZG9uZVByb2NgIGFuZCBgZG9uZUluUHJvY2AgZXZlbnRzIGFyZSB1c2VkIGluIHBsYWNlIG9mIGBkb25lYC5cbiAgICpcbiAgICogSWYgeW91IGFyZSB1c2luZyBbW0Nvbm5lY3Rpb24uZXhlY1NxbF1dIHRoZW4gU1FMIHNlcnZlciBtYXkgdHJlYXQgdGhlIG11bHRpcGxlIGNhbGxzIHdpdGggdGhlIHNhbWUgcXVlcnkgYXMgYSBzdG9yZWQgcHJvY2VkdXJlLlxuICAgKiBXaGVuIHRoaXMgb2NjdXJzLCB0aGUgYGRvbmVQcm9jYCBhbmQgYGRvbmVJblByb2NgIGV2ZW50cyBtYXkgYmUgZW1pdHRlZCBpbnN0ZWFkLiBZb3UgbXVzdCBoYW5kbGUgYm90aCBldmVudHMgdG8gZW5zdXJlIGNvbXBsZXRlIGNvdmVyYWdlLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdkb25lJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHJvd0NvdW50XG4gICAgICAgKiAgIFRoZSBudW1iZXIgb2YgcmVzdWx0IHJvd3MuIE1heSBiZSBgdW5kZWZpbmVkYCBpZiBub3QgYXZhaWxhYmxlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBtb3JlXG4gICAgICAgKiAgIElmIHRoZXJlIGFyZSBtb3JlIHJlc3VsdHMgdG8gY29tZSAocHJvYmFibHkgYmVjYXVzZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFyZSBiZWluZyBleGVjdXRlZCksIHRoZW4gYHRydWVgLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSByc3RcbiAgICAgICAqICAgUm93cyBhcyBhIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAgICAgKiAgIFdpbGwgb25seSBiZSBhdmFpbGFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogYHJlcXVlc3Qub24oJ2RvbmVJblByb2MnLCBmdW5jdGlvbiAocm93Q291bnQsIG1vcmUsIHJvd3MpIHsgfSk7YFxuICAgKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbXBsZXRpb24gc3RhdHVzIG9mIGEgU1FMIHN0YXRlbWVudCB3aXRoaW4gYSBzdG9yZWQgcHJvY2VkdXJlLiBBbGwgcm93cyBmcm9tIGEgc3RhdGVtZW50XG4gICAqIGluIGEgc3RvcmVkIHByb2NlZHVyZSBoYXZlIGJlZW4gcHJvdmlkZWQgKHRocm91Z2ggYHJvd2AgZXZlbnRzKS5cbiAgICpcbiAgICogVGhpcyBldmVudCBtYXkgYWxzbyBvY2N1ciB3aGVuIGV4ZWN1dGluZyBtdWx0aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIHF1ZXJ5IHVzaW5nIFtbZXhlY1NxbF1dLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdkb25lSW5Qcm9jJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHJvd0NvdW50XG4gICAgICAgKiAgIFRoZSBudW1iZXIgb2YgcmVzdWx0IHJvd3MuIE1heSBiZSBgdW5kZWZpbmVkYCBpZiBub3QgYXZhaWxhYmxlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBtb3JlXG4gICAgICAgKiAgIElmIHRoZXJlIGFyZSBtb3JlIHJlc3VsdHMgdG8gY29tZSAocHJvYmFibHkgYmVjYXVzZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFyZSBiZWluZyBleGVjdXRlZCksIHRoZW4gYHRydWVgLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSByc3RcbiAgICAgICAqICAgUm93cyBhcyBhIHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIFNRTCBzdGF0ZW1lbnQuXG4gICAgICAgKiAgIFdpbGwgb25seSBiZSBhdmFpbGFibGUgaWYgQ29ubmVjdGlvbidzIFtbQ29ubmVjdGlvbk9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZV1dIGlzIGB0cnVlYC5cbiAgICAgICAqL1xuICAgICAgKHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKSA9PiB2b2lkXG4gICk6IHRoaXNcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb21wbGV0aW9uIHN0YXR1cyBvZiBhIHN0b3JlZCBwcm9jZWR1cmUuIFRoaXMgaXMgYWxzbyBnZW5lcmF0ZWQgZm9yIHN0b3JlZCBwcm9jZWR1cmVzXG4gICAqIGV4ZWN1dGVkIHRocm91Z2ggU1FMIHN0YXRlbWVudHMuXFxcbiAgICogVGhpcyBldmVudCBtYXkgYWxzbyBvY2N1ciB3aGVuIGV4ZWN1dGluZyBtdWx0aXBsZSBjYWxscyB3aXRoIHRoZSBzYW1lIHF1ZXJ5IHVzaW5nIFtbZXhlY1NxbF1dLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdkb25lUHJvYycsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSByb3dDb3VudFxuICAgICAgICogICBUaGUgbnVtYmVyIG9mIHJlc3VsdCByb3dzLiBNYXkgYmUgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gbW9yZVxuICAgICAgICogICBJZiB0aGVyZSBhcmUgbW9yZSByZXN1bHRzIHRvIGNvbWUgKHByb2JhYmx5IGJlY2F1c2UgbXVsdGlwbGUgc3RhdGVtZW50cyBhcmUgYmVpbmcgZXhlY3V0ZWQpLCB0aGVuIGB0cnVlYC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0gcnN0XG4gICAgICAgKiAgIFJvd3MgYXMgYSByZXN1bHQgb2YgZXhlY3V0aW5nIHRoZSBTUUwgc3RhdGVtZW50LlxuICAgICAgICogICBXaWxsIG9ubHkgYmUgYXZhaWxhYmxlIGlmIENvbm5lY3Rpb24ncyBbW0Nvbm5lY3Rpb25PcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmVdXSBpcyBgdHJ1ZWAuXG4gICAgICAgKi9cbiAgICAgIChyb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkLCBtb3JlOiBib29sZWFuLCBwcm9jUmV0dXJuU3RhdHVzVmFsdWU6IG51bWJlciwgcnN0PzogYW55W10pID0+IHZvaWRcbiAgKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIHZhbHVlIGZvciBhbiBvdXRwdXQgcGFyYW1ldGVyICh0aGF0IHdhcyBhZGRlZCB0byB0aGUgcmVxdWVzdCB3aXRoIFtbYWRkT3V0cHV0UGFyYW1ldGVyXV0pLlxuICAgKiBTZWUgYWxzbyBgVXNpbmcgUGFyYW1ldGVyc2AuXG4gICAqL1xuICBvbihcbiAgICBldmVudDogJ3JldHVyblZhbHVlJyxcbiAgICBsaXN0ZW5lcjpcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHBhcmFtZXRlck5hbWVcbiAgICAgICAqICAgVGhlIHBhcmFtZXRlciBuYW1lLiAoRG9lcyBub3Qgc3RhcnQgd2l0aCAnQCcuKVxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAgICogICBUaGUgcGFyYW1ldGVyJ3Mgb3V0cHV0IHZhbHVlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSBtZXRhZGF0YVxuICAgICAgICogICBUaGUgc2FtZSBkYXRhIHRoYXQgaXMgZXhwb3NlZCBpbiB0aGUgYGNvbHVtbk1ldGFEYXRhYCBldmVudC5cbiAgICAgICAqL1xuICAgICAgKHBhcmFtZXRlck5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24sIG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgZ2l2ZXMgdGhlIGNvbHVtbnMgYnkgd2hpY2ggZGF0YSBpcyBvcmRlcmVkLCBpZiBgT1JERVIgQllgIGNsYXVzZSBpcyBleGVjdXRlZCBpbiBTUUwgU2VydmVyLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdvcmRlcicsXG4gICAgbGlzdGVuZXI6XG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSBvcmRlckNvbHVtbnNcbiAgICAgICAqICAgQW4gYXJyYXkgb2YgY29sdW1uIG51bWJlcnMgaW4gdGhlIHJlc3VsdCBzZXQgYnkgd2hpY2ggZGF0YSBpcyBvcmRlcmVkLlxuICAgICAgICovXG4gICAgICAob3JkZXJDb2x1bW5zOiBudW1iZXJbXSkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgb24oZXZlbnQ6ICdyZXF1ZXN0Q29tcGxldGVkJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgb24oZXZlbnQ6ICdjYW5jZWwnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogJ3BhdXNlJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgb24oZXZlbnQ6ICdyZXN1bWUnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICBvbihldmVudDogc3RyaW5nIHwgc3ltYm9sLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIHN1cGVyLm9uKGV2ZW50LCBsaXN0ZW5lcik7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdjb2x1bW5NZXRhZGF0YScsIGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gfCB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0pOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3ByZXBhcmVkJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZXJyb3InLCBlcnI6IEVycm9yKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyb3cnLCBjb2x1bW5zOiBhbnkpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2RvbmUnLCByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkLCBtb3JlOiBib29sZWFuLCByc3Q/OiBhbnlbXSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZG9uZUluUHJvYycsIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHJzdD86IGFueVtdKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkb25lUHJvYycsIHJvd0NvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIG1vcmU6IGJvb2xlYW4sIHByb2NSZXR1cm5TdGF0dXNWYWx1ZTogbnVtYmVyLCByc3Q/OiBhbnlbXSk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAncmV0dXJuVmFsdWUnLCBwYXJhbWV0ZXJOYW1lOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duLCBtZXRhZGF0YTogTWV0YWRhdGEpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JlcXVlc3RDb21wbGV0ZWQnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdjYW5jZWwnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdwYXVzZScpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3Jlc3VtZScpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ29yZGVyJywgb3JkZXJDb2x1bW5zOiBudW1iZXJbXSk6IGJvb2xlYW5cbiAgZW1pdChldmVudDogc3RyaW5nIHwgc3ltYm9sLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHJldHVybiBzdXBlci5lbWl0KGV2ZW50LCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gc3FsVGV4dE9yUHJvY2VkdXJlXG4gICAqICAgVGhlIFNRTCBzdGF0ZW1lbnQgdG8gYmUgZXhlY3V0ZWRcbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqICAgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgb25jZSB0aGUgcmVxdWVzdCBoYXMgYmVlbiBmdWxseSBjb21wbGV0ZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzcWxUZXh0T3JQcm9jZWR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2FsbGJhY2s6IENvbXBsZXRpb25DYWxsYmFjaywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3FsVGV4dE9yUHJvY2VkdXJlID0gc3FsVGV4dE9yUHJvY2VkdXJlO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IFtdO1xuICAgIHRoaXMucGFyYW1ldGVyc0J5TmFtZSA9IHt9O1xuICAgIHRoaXMucHJlcGFyaW5nID0gZmFsc2U7XG4gICAgdGhpcy5oYW5kbGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jYW5jZWxlZCA9IGZhbHNlO1xuICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50aW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudXNlckNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgdGhpcy5zdGF0ZW1lbnRDb2x1bW5FbmNyeXB0aW9uU2V0dGluZyA9IChvcHRpb25zICYmIG9wdGlvbnMuc3RhdGVtZW50Q29sdW1uRW5jcnlwdGlvblNldHRpbmcpIHx8IFNRTFNlcnZlclN0YXRlbWVudENvbHVtbkVuY3J5cHRpb25TZXR0aW5nLlVzZUNvbm5lY3Rpb25TZXR0aW5nO1xuICAgIHRoaXMuY3J5cHRvTWV0YWRhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNhbGxiYWNrID0gZnVuY3Rpb24oZXJyOiBFcnJvciB8IHVuZGVmaW5lZCB8IG51bGwsIHJvd0NvdW50PzogbnVtYmVyLCByb3dzPzogYW55KSB7XG4gICAgICBpZiAodGhpcy5wcmVwYXJpbmcpIHtcbiAgICAgICAgdGhpcy5wcmVwYXJpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZW1pdCgncHJlcGFyZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VyQ2FsbGJhY2soZXJyLCByb3dDb3VudCwgcm93cyk7XG4gICAgICAgIHRoaXMuZW1pdCgncmVxdWVzdENvbXBsZXRlZCcpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG5hbWVcbiAgICogICBUaGUgcGFyYW1ldGVyIG5hbWUuIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSBwYXJhbWV0ZXIgaW4gdGhlIFNRTCxcbiAgICogICBvciBhIHBhcmFtZXRlciB0aGF0IGEgY2FsbGVkIHByb2NlZHVyZSBleHBlY3RzLiBUaGUgbmFtZSBzaG91bGQgbm90IHN0YXJ0IHdpdGggYEBgLlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiAgIE9uZSBvZiB0aGUgc3VwcG9ydGVkIGRhdGEgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKiAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgdG8gYmUgZ2l2ZW4uIFRoZSBKYXZhc2NyaXB0IHR5cGUgb2YgdGhlXG4gICAqICAgYXJndW1lbnQgc2hvdWxkIG1hdGNoIHRoYXQgZG9jdW1lbnRlZCBmb3IgZGF0YSB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogICBBZGRpdGlvbmFsIHR5cGUgb3B0aW9ucy4gT3B0aW9uYWwuXG4gICAqL1xuICAvLyBUT0RPOiBgdHlwZWAgbXVzdCBiZSBhIHZhbGlkIFREUyB2YWx1ZSB0eXBlXG4gIGFkZFBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHR5cGU6IERhdGFUeXBlLCB2YWx1ZT86IHVua25vd24sIG9wdGlvbnM/OiBSZWFkb25seTxQYXJhbWV0ZXJPcHRpb25zPiB8IG51bGwpIHtcbiAgICBjb25zdCB7IG91dHB1dCA9IGZhbHNlLCBsZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgICBjb25zdCBwYXJhbWV0ZXI6IFBhcmFtZXRlciA9IHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgb3V0cHV0OiBvdXRwdXQsXG4gICAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICAgIHByZWNpc2lvbjogcHJlY2lzaW9uLFxuICAgICAgc2NhbGU6IHNjYWxlXG4gICAgfTtcblxuICAgIHRoaXMucGFyYW1ldGVycy5wdXNoKHBhcmFtZXRlcik7XG4gICAgdGhpcy5wYXJhbWV0ZXJzQnlOYW1lW25hbWVdID0gcGFyYW1ldGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqICAgVGhlIHBhcmFtZXRlciBuYW1lLiBUaGlzIHNob3VsZCBjb3JyZXNwb25kIHRvIGEgcGFyYW1ldGVyIGluIHRoZSBTUUwsXG4gICAqICAgb3IgYSBwYXJhbWV0ZXIgdGhhdCBhIGNhbGxlZCBwcm9jZWR1cmUgZXhwZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIHR5cGVcbiAgICogICBPbmUgb2YgdGhlIHN1cHBvcnRlZCBkYXRhIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogICBUaGUgdmFsdWUgdGhhdCB0aGUgcGFyYW1ldGVyIGlzIHRvIGJlIGdpdmVuLiBUaGUgSmF2YXNjcmlwdCB0eXBlIG9mIHRoZVxuICAgKiAgIGFyZ3VtZW50IHNob3VsZCBtYXRjaCB0aGF0IGRvY3VtZW50ZWQgZm9yIGRhdGEgdHlwZXNcbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogICBBZGRpdGlvbmFsIHR5cGUgb3B0aW9ucy4gT3B0aW9uYWwuXG4gICAqL1xuICBhZGRPdXRwdXRQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB0eXBlOiBEYXRhVHlwZSwgdmFsdWU/OiB1bmtub3duLCBvcHRpb25zPzogUmVhZG9ubHk8UGFyYW1ldGVyT3B0aW9ucz4gfCBudWxsKSB7XG4gICAgdGhpcy5hZGRQYXJhbWV0ZXIobmFtZSwgdHlwZSwgdmFsdWUsIHsgLi4ub3B0aW9ucywgb3V0cHV0OiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBtYWtlUGFyYW1zUGFyYW1ldGVyKHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdKSB7XG4gICAgbGV0IHBhcmFtc1BhcmFtZXRlciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBwYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldO1xuICAgICAgaWYgKHBhcmFtc1BhcmFtZXRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhcmFtc1BhcmFtZXRlciArPSAnLCAnO1xuICAgICAgfVxuICAgICAgcGFyYW1zUGFyYW1ldGVyICs9ICdAJyArIHBhcmFtZXRlci5uYW1lICsgJyAnO1xuICAgICAgcGFyYW1zUGFyYW1ldGVyICs9IHBhcmFtZXRlci50eXBlLmRlY2xhcmF0aW9uKHBhcmFtZXRlcik7XG4gICAgICBpZiAocGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgICBwYXJhbXNQYXJhbWV0ZXIgKz0gJyBPVVRQVVQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zUGFyYW1ldGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB2YWxpZGF0ZVBhcmFtZXRlcnMoY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSB0aGlzLnBhcmFtZXRlcnNbaV07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcmFtZXRlci52YWx1ZSA9IHBhcmFtZXRlci50eXBlLnZhbGlkYXRlKHBhcmFtZXRlci52YWx1ZSwgY29sbGF0aW9uKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlcXVlc3RFcnJvcignVmFsaWRhdGlvbiBmYWlsZWQgZm9yIHBhcmFtZXRlciBcXCcnICsgcGFyYW1ldGVyLm5hbWUgKyAnXFwnLiAnICsgZXJyb3IubWVzc2FnZSwgJ0VQQVJBTScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBzdXNwZW5kcyB0aGUgZmxvdyBvZiBkYXRhIGZyb20gdGhlIGRhdGFiYXNlLiBObyBtb3JlIGByb3dgIGV2ZW50cyB3aWxsIGJlIGVtaXR0ZWQgdW50aWwgW1tyZXN1bWVdIGlzIGNhbGxlZC5cbiAgICogSWYgdGhpcyByZXF1ZXN0IGlzIGFscmVhZHkgaW4gYSBwYXVzZWQgc3RhdGUsIGNhbGxpbmcgW1twYXVzZV1dIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy5wYXVzZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1bWVzIHRoZSBmbG93IG9mIGRhdGEgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqIElmIHRoaXMgcmVxdWVzdCBpcyBub3QgaW4gYSBwYXVzZWQgc3RhdGUsIGNhbGxpbmcgW1tyZXN1bWVdXSBoYXMgbm8gZWZmZWN0LlxuICAgKi9cbiAgcmVzdW1lKCkge1xuICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3Jlc3VtZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbHMgYSByZXF1ZXN0IHdoaWxlIHdhaXRpbmcgZm9yIGEgc2VydmVyIHJlc3BvbnNlLlxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gICAgdGhpcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGltZW91dCBmb3IgdGhpcyByZXF1ZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gdGltZW91dFxuICAgKiAgIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSB0aGUgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZhaWxlZCxcbiAgICogICBvciBgMGAgZm9yIG5vIHRpbWVvdXQuIFdoZW4gbm8gdGltZW91dCBpcyBzZXQgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiAgIHRoZSBbW0Nvbm5lY3Rpb25PcHRpb25zLnJlcXVlc3RUaW1lb3V0XV0gb2YgdGhlIFtbQ29ubmVjdGlvbl1dIGlzIHVzZWQuXG4gICAqL1xuICBzZXRUaW1lb3V0KHRpbWVvdXQ/OiBudW1iZXIpIHtcbiAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVlc3Q7XG5tb2R1bGUuZXhwb3J0cyA9IFJlcXVlc3Q7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTUcsT0FBTyxTQUFTQyxvQkFBWSxDQUFDO0VBQ2pDO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBRUU7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBR0U7QUFDRjtBQUNBOztFQUVFO0FBQ0Y7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7O0VBR0U7QUFDRjtBQUNBOztFQVFFO0FBQ0Y7QUFDQTtBQUNBO0FB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.writeToTrackingBuffer = writeToTrackingBuffer;\nconst TYPE = {\n  QUERY_NOTIFICATIONS: 1,\n  TXN_DESCRIPTOR: 2,\n  TRACE_ACTIVITY: 3\n};\nconst TXNDESCRIPTOR_HEADER_DATA_LEN = 4 + 8;\nconst TXNDESCRIPTOR_HEADER_LEN = 4 + 2 + TXNDESCRIPTOR_HEADER_DATA_LEN;\nfunction writeToTrackingBuffer(buffer, txnDescriptor, outstandingRequestCount) {\n  buffer.writeUInt32LE(0);\n  buffer.writeUInt32LE(TXNDESCRIPTOR_HEADER_LEN);\n  buffer.writeUInt16LE(TYPE.TXN_DESCRIPTOR);\n  buffer.writeBuffer(txnDescriptor);\n  buffer.writeUInt32LE(outstandingRequestCount);\n  const data = buffer.data;\n  data.writeUInt32LE(data.length, 0);\n  return buffer;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFIiwiUVVFUllfTk9USUZJQ0FUSU9OUyIsIlRYTl9ERVNDUklQVE9SIiwiVFJBQ0VfQUNUSVZJVFkiLCJUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTiIsIlRYTkRFU0NSSVBUT1JfSEVBREVSX0xFTiIsIndyaXRlVG9UcmFja2luZ0J1ZmZlciIsImJ1ZmZlciIsInR4bkRlc2NyaXB0b3IiLCJvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVCdWZmZXIiLCJkYXRhIiwibGVuZ3RoIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FsbC1oZWFkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IFRZUEUgPSB7XG4gIFFVRVJZX05PVElGSUNBVElPTlM6IDEsXG4gIFRYTl9ERVNDUklQVE9SOiAyLFxuICBUUkFDRV9BQ1RJVklUWTogM1xufTtcblxuY29uc3QgVFhOREVTQ1JJUFRPUl9IRUFERVJfREFUQV9MRU4gPSA0ICsgODtcblxuY29uc3QgVFhOREVTQ1JJUFRPUl9IRUFERVJfTEVOID0gNCArIDIgKyBUWE5ERVNDUklQVE9SX0hFQURFUl9EQVRBX0xFTjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVG9UcmFja2luZ0J1ZmZlcihidWZmZXI6IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIsIHR4bkRlc2NyaXB0b3I6IEJ1ZmZlciwgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQ6IG51bWJlcikge1xuICBidWZmZXIud3JpdGVVSW50MzJMRSgwKTtcbiAgYnVmZmVyLndyaXRlVUludDMyTEUoVFhOREVTQ1JJUFRPUl9IRUFERVJfTEVOKTtcbiAgYnVmZmVyLndyaXRlVUludDE2TEUoVFlQRS5UWE5fREVTQ1JJUFRPUik7XG4gIGJ1ZmZlci53cml0ZUJ1ZmZlcih0eG5EZXNjcmlwdG9yKTtcbiAgYnVmZmVyLndyaXRlVUludDMyTEUob3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBidWZmZXIuZGF0YTtcbiAgZGF0YS53cml0ZVVJbnQzMkxFKGRhdGEubGVuZ3RoLCAwKTtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBSSxHQUFHO0VBQ1hDLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGNBQWMsRUFBRSxDQUFDO0VBQ2pCQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQztBQUVELE1BQU1DLDZCQUE2QixHQUFHLENBQUMsR0FBRyxDQUFDO0FBRTNDLE1BQU1DLHdCQUF3QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUdELDZCQUE2QjtBQUUvRCxTQUFTRSxxQkFBcUJBLENBQUNDLE1BQThCLEVBQUVDLGFBQXFCLEVBQUVDLHVCQUErQixFQUFFO0VBQzVIRixNQUFNLENBQUNHLGFBQWEsQ0FBQyxDQUFDLENBQUM7RUFDdkJILE1BQU0sQ0FBQ0csYUFBYSxDQUFDTCx3QkFBd0IsQ0FBQztFQUM5Q0UsTUFBTSxDQUFDSSxhQUFhLENBQUNYLElBQUksQ0FBQ0UsY0FBYyxDQUFDO0VBQ3pDSyxNQUFNLENBQUNLLFdBQVcsQ0FBQ0osYUFBYSxDQUFDO0VBQ2pDRCxNQUFNLENBQUNHLGFBQWEsQ0FBQ0QsdUJBQXVCLENBQUM7RUFFN0MsTUFBTUksSUFBSSxHQUFHTixNQUFNLENBQUNNLElBQUk7RUFDeEJBLElBQUksQ0FBQ0gsYUFBYSxDQUFDRyxJQUFJLENBQUNDLE1BQU0sRUFBRSxDQUFDLENBQUM7RUFDbEMsT0FBT1AsTUFBTTtBQUNmIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nvar _allHeaders = require(\"./all-headers\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// const OPTION = {\n//   WITH_RECOMPILE: 0x01,\n//   NO_METADATA: 0x02,\n//   REUSE_METADATA: 0x04\n// };\nconst STATUS = {\n  BY_REF_VALUE: 0x01,\n  DEFAULT_VALUE: 0x02\n};\n\n/*\n  s2.2.6.5\n */\nclass RpcRequestPayload {\n  constructor(procedure, parameters, txnDescriptor, options, collation) {\n    this.procedure = procedure;\n    this.parameters = parameters;\n    this.options = options;\n    this.txnDescriptor = txnDescriptor;\n    this.collation = collation;\n  }\n  [Symbol.iterator]() {\n    return this.generateData();\n  }\n  *generateData() {\n    const buffer = new _writableTrackingBuffer.default(500);\n    if (this.options.tdsVersion >= '7_2') {\n      const outstandingRequestCount = 1;\n      (0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount);\n    }\n    if (typeof this.procedure === 'string') {\n      buffer.writeUsVarchar(this.procedure);\n    } else {\n      buffer.writeUShort(0xFFFF);\n      buffer.writeUShort(this.procedure);\n    }\n    const optionFlags = 0;\n    buffer.writeUInt16LE(optionFlags);\n    yield buffer.data;\n    const parametersLength = this.parameters.length;\n    for (let i = 0; i < parametersLength; i++) {\n      yield* this.generateParameterData(this.parameters[i]);\n    }\n  }\n  toString(indent = '') {\n    return indent + ('RPC Request - ' + this.procedure);\n  }\n  *generateParameterData(parameter) {\n    const buffer = new _writableTrackingBuffer.default(1 + 2 + Buffer.byteLength(parameter.name, 'ucs-2') + 1);\n    if (parameter.name) {\n      buffer.writeBVarchar('@' + parameter.name);\n    } else {\n      buffer.writeBVarchar('');\n    }\n    let statusFlags = 0;\n    if (parameter.output) {\n      statusFlags |= STATUS.BY_REF_VALUE;\n    }\n    buffer.writeUInt8(statusFlags);\n    yield buffer.data;\n    const param = {\n      value: parameter.value\n    };\n    const type = parameter.type;\n    if ((type.id & 0x30) === 0x20) {\n      if (parameter.length) {\n        param.length = parameter.length;\n      } else if (type.resolveLength) {\n        param.length = type.resolveLength(parameter);\n      }\n    }\n    if (parameter.precision) {\n      param.precision = parameter.precision;\n    } else if (type.resolvePrecision) {\n      param.precision = type.resolvePrecision(parameter);\n    }\n    if (parameter.scale) {\n      param.scale = parameter.scale;\n    } else if (type.resolveScale) {\n      param.scale = type.resolveScale(parameter);\n    }\n    if (this.collation) {\n      param.collation = this.collation;\n    }\n    yield type.generateTypeInfo(param, this.options);\n    yield type.generateParameterLength(param, this.options);\n    yield* type.generateParameterData(param, this.options);\n  }\n}\nvar _default = RpcRequestPayload;\nexports.default = _default;\nmodule.exports = RpcRequestPayload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNUQVRVUyIsIkJZX1JFRl9WQUxVRSIsIkRFRkFVTFRfVkFMVUUiLCJScGNSZXF1ZXN0UGF5bG9hZCIsImNvbnN0cnVjdG9yIiwicHJvY2VkdXJlIiwicGFyYW1ldGVycyIsInR4bkRlc2NyaXB0b3IiLCJvcHRpb25zIiwiY29sbGF0aW9uIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJnZW5lcmF0ZURhdGEiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwidGRzVmVyc2lvbiIsIm91dHN0YW5kaW5nUmVxdWVzdENvdW50Iiwid3JpdGVUb1RyYWNraW5nQnVmZmVyIiwid3JpdGVVc1ZhcmNoYXIiLCJ3cml0ZVVTaG9ydCIsIm9wdGlvbkZsYWdzIiwid3JpdGVVSW50MTZMRSIsImRhdGEiLCJwYXJhbWV0ZXJzTGVuZ3RoIiwibGVuZ3RoIiwiaSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInRvU3RyaW5nIiwiaW5kZW50IiwicGFyYW1ldGVyIiwiQnVmZmVyIiwiYnl0ZUxlbmd0aCIsIm5hbWUiLCJ3cml0ZUJWYXJjaGFyIiwic3RhdHVzRmxhZ3MiLCJvdXRwdXQiLCJ3cml0ZVVJbnQ4IiwicGFyYW0iLCJ2YWx1ZSIsInR5cGUiLCJpZCIsInJlc29sdmVMZW5ndGgiLCJwcmVjaXNpb24iLCJyZXNvbHZlUHJlY2lzaW9uIiwic2NhbGUiLCJyZXNvbHZlU2NhbGUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvcnBjcmVxdWVzdC1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgeyB3cml0ZVRvVHJhY2tpbmdCdWZmZXIgfSBmcm9tICcuL2FsbC1oZWFkZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyYW1ldGVyLCB0eXBlIFBhcmFtZXRlckRhdGEgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyB0eXBlIEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMgfSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuXG4vLyBjb25zdCBPUFRJT04gPSB7XG4vLyAgIFdJVEhfUkVDT01QSUxFOiAweDAxLFxuLy8gICBOT19NRVRBREFUQTogMHgwMixcbi8vICAgUkVVU0VfTUVUQURBVEE6IDB4MDRcbi8vIH07XG5cbmNvbnN0IFNUQVRVUyA9IHtcbiAgQllfUkVGX1ZBTFVFOiAweDAxLFxuICBERUZBVUxUX1ZBTFVFOiAweDAyXG59O1xuXG4vKlxuICBzMi4yLjYuNVxuICovXG5jbGFzcyBScGNSZXF1ZXN0UGF5bG9hZCBpbXBsZW1lbnRzIEl0ZXJhYmxlPEJ1ZmZlcj4ge1xuICBkZWNsYXJlIHByb2NlZHVyZTogc3RyaW5nIHwgbnVtYmVyO1xuICBkZWNsYXJlIHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdO1xuXG4gIGRlY2xhcmUgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucztcbiAgZGVjbGFyZSB0eG5EZXNjcmlwdG9yOiBCdWZmZXI7XG4gIGRlY2xhcmUgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJvY2VkdXJlOiBzdHJpbmcgfCBudW1iZXIsIHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdLCB0eG5EZXNjcmlwdG9yOiBCdWZmZXIsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsIGNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wcm9jZWR1cmUgPSBwcm9jZWR1cmU7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gcGFyYW1ldGVycztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMudHhuRGVzY3JpcHRvciA9IHR4bkRlc2NyaXB0b3I7XG4gICAgdGhpcy5jb2xsYXRpb24gPSBjb2xsYXRpb247XG4gIH1cblxuICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGEoKTtcbiAgfVxuXG4gICogZ2VuZXJhdGVEYXRhKCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDUwMCk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy50ZHNWZXJzaW9uID49ICc3XzInKSB7XG4gICAgICBjb25zdCBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCA9IDE7XG4gICAgICB3cml0ZVRvVHJhY2tpbmdCdWZmZXIoYnVmZmVyLCB0aGlzLnR4bkRlc2NyaXB0b3IsIG91dHN0YW5kaW5nUmVxdWVzdENvdW50KTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMucHJvY2VkdXJlID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmZmVyLndyaXRlVXNWYXJjaGFyKHRoaXMucHJvY2VkdXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVVNob3J0KDB4RkZGRik7XG4gICAgICBidWZmZXIud3JpdGVVU2hvcnQodGhpcy5wcm9jZWR1cmUpO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbkZsYWdzID0gMDtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShvcHRpb25GbGFncyk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzTGVuZ3RoID0gdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtZXRlcnNMZW5ndGg7IGkrKykge1xuICAgICAgeWllbGQgKiB0aGlzLmdlbmVyYXRlUGFyYW1ldGVyRGF0YSh0aGlzLnBhcmFtZXRlcnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICgnUlBDIFJlcXVlc3QgLSAnICsgdGhpcy5wcm9jZWR1cmUpO1xuICB9XG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyOiBQYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxICsgMiArIEJ1ZmZlci5ieXRlTGVuZ3RoKHBhcmFtZXRlci5uYW1lLCAndWNzLTInKSArIDEpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5uYW1lKSB7XG4gICAgICBidWZmZXIud3JpdGVCVmFyY2hhcignQCcgKyBwYXJhbWV0ZXIubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci53cml0ZUJWYXJjaGFyKCcnKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhdHVzRmxhZ3MgPSAwO1xuICAgIGlmIChwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICBzdGF0dXNGbGFncyB8PSBTVEFUVVMuQllfUkVGX1ZBTFVFO1xuICAgIH1cbiAgICBidWZmZXIud3JpdGVVSW50OChzdGF0dXNGbGFncyk7XG5cbiAgICB5aWVsZCBidWZmZXIuZGF0YTtcblxuICAgIGNvbnN0IHBhcmFtOiBQYXJhbWV0ZXJEYXRhID0geyB2YWx1ZTogcGFyYW1ldGVyLnZhbHVlIH07XG5cbiAgICBjb25zdCB0eXBlID0gcGFyYW1ldGVyLnR5cGU7XG5cbiAgICBpZiAoKHR5cGUuaWQgJiAweDMwKSA9PT0gMHgyMCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgICAgcGFyYW0ubGVuZ3RoID0gcGFyYW1ldGVyLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZS5yZXNvbHZlTGVuZ3RoKSB7XG4gICAgICAgIHBhcmFtLmxlbmd0aCA9IHR5cGUucmVzb2x2ZUxlbmd0aChwYXJhbWV0ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uKSB7XG4gICAgICBwYXJhbS5wcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uO1xuICAgIH0gZWxzZSBpZiAodHlwZS5yZXNvbHZlUHJlY2lzaW9uKSB7XG4gICAgICBwYXJhbS5wcmVjaXNpb24gPSB0eXBlLnJlc29sdmVQcmVjaXNpb24ocGFyYW1ldGVyKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlKSB7XG4gICAgICBwYXJhbS5zY2FsZSA9IHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2UgaWYgKHR5cGUucmVzb2x2ZVNjYWxlKSB7XG4gICAgICBwYXJhbS5zY2FsZSA9IHR5cGUucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbS5jb2xsYXRpb24gPSB0aGlzLmNvbGxhdGlvbjtcbiAgICB9XG5cbiAgICB5aWVsZCB0eXBlLmdlbmVyYXRlVHlwZUluZm8ocGFyYW0sIHRoaXMub3B0aW9ucyk7XG4gICAgeWllbGQgdHlwZS5nZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbSwgdGhpcy5vcHRpb25zKTtcbiAgICB5aWVsZCAqIHR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJwY1JlcXVlc3RQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBScGNSZXF1ZXN0UGF5bG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUFzRCxTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9B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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nvar _allHeaders = require(\"./all-headers\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*\n  s2.2.6.6\n */\nclass SqlBatchPayload {\n  constructor(sqlText, txnDescriptor, options) {\n    this.sqlText = sqlText;\n    this.txnDescriptor = txnDescriptor;\n    this.options = options;\n  }\n  *[Symbol.iterator]() {\n    if (this.options.tdsVersion >= '7_2') {\n      const buffer = new _writableTrackingBuffer.default(18, 'ucs2');\n      const outstandingRequestCount = 1;\n      (0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount);\n      yield buffer.data;\n    }\n    yield Buffer.from(this.sqlText, 'ucs2');\n  }\n  toString(indent = '') {\n    return indent + ('SQL Batch - ' + this.sqlText);\n  }\n}\nvar _default = SqlBatchPayload;\nexports.default = _default;\nmodule.exports = SqlBatchPayload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNxbEJhdGNoUGF5bG9hZCIsImNvbnN0cnVjdG9yIiwic3FsVGV4dCIsInR4bkRlc2NyaXB0b3IiLCJvcHRpb25zIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ0ZHNWZXJzaW9uIiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIm91dHN0YW5kaW5nUmVxdWVzdENvdW50Iiwid3JpdGVUb1RyYWNraW5nQnVmZmVyIiwiZGF0YSIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsImluZGVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9zcWxiYXRjaC1wYXlsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5pbXBvcnQgeyB3cml0ZVRvVHJhY2tpbmdCdWZmZXIgfSBmcm9tICcuL2FsbC1oZWFkZXJzJztcblxuLypcbiAgczIuMi42LjZcbiAqL1xuY2xhc3MgU3FsQmF0Y2hQYXlsb2FkIGltcGxlbWVudHMgSXRlcmFibGU8QnVmZmVyPiB7XG4gIGRlY2xhcmUgc3FsVGV4dDogc3RyaW5nO1xuICBkZWNsYXJlIHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcjtcbiAgZGVjbGFyZSBvcHRpb25zOiB7IHRkc1ZlcnNpb246IHN0cmluZyB9O1xuXG4gIGNvbnN0cnVjdG9yKHNxbFRleHQ6IHN0cmluZywgdHhuRGVzY3JpcHRvcjogQnVmZmVyLCBvcHRpb25zOiB7IHRkc1ZlcnNpb246IHN0cmluZyB9KSB7XG4gICAgdGhpcy5zcWxUZXh0ID0gc3FsVGV4dDtcbiAgICB0aGlzLnR4bkRlc2NyaXB0b3IgPSB0eG5EZXNjcmlwdG9yO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy50ZHNWZXJzaW9uID49ICc3XzInKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxOCwgJ3VjczInKTtcbiAgICAgIGNvbnN0IG91dHN0YW5kaW5nUmVxdWVzdENvdW50ID0gMTtcblxuICAgICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdGhpcy50eG5EZXNjcmlwdG9yLCBvdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG5cbiAgICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuICAgIH1cblxuICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHRoaXMuc3FsVGV4dCwgJ3VjczInKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICgnU1FMIEJhdGNoIC0gJyArIHRoaXMuc3FsVGV4dCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3FsQmF0Y2hQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBTcWxCYXRjaFBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBTUcsZUFBZSxDQUE2QjtFQUtoREMsV0FBV0EsQ0FBQ0MsT0FBZSxFQUFFQyxhQUFxQixFQUFFQyxPQUErQixFQUFFO0lBQ25GLElBQUksQ0FBQ0YsT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQSxhQUFhO0lBQ2xDLElBQUksQ0FBQ0MsT0FBTyxHQUFHQSxPQUFPO0VBQ3hCO0VBRUEsRUFBRUMsTUFBTSxDQUFDQyxRQUFRLElBQUk7SUFDbkIsSUFBSSxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csVUFBVSxJQUFJLEtBQUssRUFBRTtNQUNwQyxNQUFNQyxNQUFNLEdBQUcsSUFBSUMsK0JBQXNCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztNQUNyRCxNQUFNQyx1QkFBdUIsR0FBRyxDQUFDO01BRWpDLElBQUFDLGlDQUFxQixFQUFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDTCxhQUFhLEVBQUVPLHVCQUF1QixDQUFDO01BRTFFLE1BQU1GLE1BQU0sQ0FBQ0ksSUFBSTtJQUNuQjtJQUVBLE1BQU1DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ1osT0FBTyxFQUFFLE1BQU0sQ0FBQztFQUN6QztFQUVBYSxRQUFRQSxDQUFDQyxNQUFNLEdBQUcsRUFBRSxFQUFFO0lBQ3BCLE9BQU9BLE1BQU0sSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDZCxPQUFPLENBQUM7RUFDakQ7QUFDRjtBQUFDLElBQUFlLFFBQUEsR0FFY2pCLGVBQWU7QUFBQWtCLE9BQUEsQ0FBQW5CLE9BQUEsR0FBQWtCLFFBQUE7QUFDOUJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHbEIsZUFBZSJ9","'use strict';\nconst Duplex = require('stream').Duplex;\n\nconst kCallback = Symbol('Callback');\nconst kOtherSide = Symbol('Other');\n\nclass DuplexSocket extends Duplex {\n  constructor(options) {\n    super(options);\n    this[kCallback] = null;\n    this[kOtherSide] = null;\n  }\n\n  _read() {\n    const callback = this[kCallback];\n    if (callback) {\n      this[kCallback] = null;\n      callback();\n    }\n  }\n\n  _write(chunk, encoding, callback) {\n    this[kOtherSide][kCallback] = callback;\n    this[kOtherSide].push(chunk);\n  }\n\n  _final(callback) {\n    this[kOtherSide].on('end', callback);\n    this[kOtherSide].push(null);\n  }\n}\n\nclass DuplexPair {\n  constructor(options) {\n    this.socket1 = new DuplexSocket(options);\n    this.socket2 = new DuplexSocket(options);\n    this.socket1[kOtherSide] = this.socket2;\n    this.socket2[kOtherSide] = this.socket1;\n  }\n}\n\nmodule.exports = DuplexPair;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _stream = require(\"stream\");\nclass Message extends _stream.PassThrough {\n  constructor({\n    type,\n    resetConnection = false\n  }) {\n    super();\n    this.type = type;\n    this.resetConnection = resetConnection;\n    this.ignore = false;\n  }\n}\nvar _default = Message;\nexports.default = _default;\nmodule.exports = Message;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIk1lc3NhZ2UiLCJQYXNzVGhyb3VnaCIsImNvbnN0cnVjdG9yIiwidHlwZSIsInJlc2V0Q29ubmVjdGlvbiIsImlnbm9yZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXNzVGhyb3VnaCB9IGZyb20gJ3N0cmVhbSc7XG5cbmNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBQYXNzVGhyb3VnaCB7XG4gIGRlY2xhcmUgdHlwZTogbnVtYmVyO1xuICBkZWNsYXJlIHJlc2V0Q29ubmVjdGlvbjogYm9vbGVhbjtcbiAgZGVjbGFyZSBpZ25vcmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyB0eXBlLCByZXNldENvbm5lY3Rpb24gPSBmYWxzZSB9OiB7IHR5cGU6IG51bWJlciwgcmVzZXRDb25uZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZCB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5yZXNldENvbm5lY3Rpb24gPSByZXNldENvbm5lY3Rpb247XG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBNZXNzYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLFNBQVNDLG1CQUFXLENBQUM7RUFLaENDLFdBQVdBLENBQUM7SUFBRUMsSUFBSTtJQUFFQyxlQUFlLEdBQUc7RUFBK0QsQ0FBQyxFQUFFO0lBQ3RHLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7SUFDaEIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBLGVBQWU7SUFDdEMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsS0FBSztFQUNyQjtBQUNGO0FBQUMsSUFBQUMsUUFBQSxHQUVjTixPQUFPO0FBQUFPLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ3RCRyxNQUFNLENBQUNGLE9BQU8sR0FBR1AsT0FBTyJ9","'use strict'\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/per_context/primordials.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/per_context/primordials.js\n\n  Don't try to replace with the original file and keep it up to date with the upstream file.\n*/\nmodule.exports = {\n  ArrayIsArray(self) {\n    return Array.isArray(self)\n  },\n  ArrayPrototypeIncludes(self, el) {\n    return self.includes(el)\n  },\n  ArrayPrototypeIndexOf(self, el) {\n    return self.indexOf(el)\n  },\n  ArrayPrototypeJoin(self, sep) {\n    return self.join(sep)\n  },\n  ArrayPrototypeMap(self, fn) {\n    return self.map(fn)\n  },\n  ArrayPrototypePop(self, el) {\n    return self.pop(el)\n  },\n  ArrayPrototypePush(self, el) {\n    return self.push(el)\n  },\n  ArrayPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  Error,\n  FunctionPrototypeCall(fn, thisArgs, ...args) {\n    return fn.call(thisArgs, ...args)\n  },\n  FunctionPrototypeSymbolHasInstance(self, instance) {\n    return Function.prototype[Symbol.hasInstance].call(self, instance)\n  },\n  MathFloor: Math.floor,\n  Number,\n  NumberIsInteger: Number.isInteger,\n  NumberIsNaN: Number.isNaN,\n  NumberMAX_SAFE_INTEGER: Number.MAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER: Number.MIN_SAFE_INTEGER,\n  NumberParseInt: Number.parseInt,\n  ObjectDefineProperties(self, props) {\n    return Object.defineProperties(self, props)\n  },\n  ObjectDefineProperty(self, name, prop) {\n    return Object.defineProperty(self, name, prop)\n  },\n  ObjectGetOwnPropertyDescriptor(self, name) {\n    return Object.getOwnPropertyDescriptor(self, name)\n  },\n  ObjectKeys(obj) {\n    return Object.keys(obj)\n  },\n  ObjectSetPrototypeOf(target, proto) {\n    return Object.setPrototypeOf(target, proto)\n  },\n  Promise,\n  PromisePrototypeCatch(self, fn) {\n    return self.catch(fn)\n  },\n  PromisePrototypeThen(self, thenFn, catchFn) {\n    return self.then(thenFn, catchFn)\n  },\n  PromiseReject(err) {\n    return Promise.reject(err)\n  },\n  PromiseResolve(val) {\n    return Promise.resolve(val)\n  },\n  ReflectApply: Reflect.apply,\n  RegExpPrototypeTest(self, value) {\n    return self.test(value)\n  },\n  SafeSet: Set,\n  String,\n  StringPrototypeSlice(self, start, end) {\n    return self.slice(start, end)\n  },\n  StringPrototypeToLowerCase(self) {\n    return self.toLowerCase()\n  },\n  StringPrototypeToUpperCase(self) {\n    return self.toUpperCase()\n  },\n  StringPrototypeTrim(self) {\n    return self.trim()\n  },\n  Symbol,\n  SymbolFor: Symbol.for,\n  SymbolAsyncIterator: Symbol.asyncIterator,\n  SymbolHasInstance: Symbol.hasInstance,\n  SymbolIterator: Symbol.iterator,\n  SymbolDispose: Symbol.dispose || Symbol('Symbol.dispose'),\n  SymbolAsyncDispose: Symbol.asyncDispose || Symbol('Symbol.asyncDispose'),\n  TypedArrayPrototypeSet(self, buf, len) {\n    return self.set(buf, len)\n  },\n  Boolean: Boolean,\n  Uint8Array\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n    const retv = privateData.get(event);\n    console.assert(\n        retv != null,\n        \"'this' is expected an Event object, but got\",\n        event\n    );\n    return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n    if (data.passiveListener != null) {\n        if (\n            typeof console !== \"undefined\" &&\n            typeof console.error === \"function\"\n        ) {\n            console.error(\n                \"Unable to preventDefault inside passive event listener invocation.\",\n                data.passiveListener\n            );\n        }\n        return\n    }\n    if (!data.event.cancelable) {\n        return\n    }\n\n    data.canceled = true;\n    if (typeof data.event.preventDefault === \"function\") {\n        data.event.preventDefault();\n    }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n    privateData.set(this, {\n        eventTarget,\n        event,\n        eventPhase: 2,\n        currentTarget: eventTarget,\n        canceled: false,\n        stopped: false,\n        immediateStopped: false,\n        passiveListener: null,\n        timeStamp: event.timeStamp || Date.now(),\n    });\n\n    // https://heycam.github.io/webidl/#Unforgeable\n    Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n    // Define accessors\n    const keys = Object.keys(event);\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in this)) {\n            Object.defineProperty(this, key, defineRedirectDescriptor(key));\n        }\n    }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n    /**\n     * The type of this event.\n     * @type {string}\n     */\n    get type() {\n        return pd(this).event.type\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get target() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     */\n    get currentTarget() {\n        return pd(this).currentTarget\n    },\n\n    /**\n     * @returns {EventTarget[]} The composed path of this event.\n     */\n    composedPath() {\n        const currentTarget = pd(this).currentTarget;\n        if (currentTarget == null) {\n            return []\n        }\n        return [currentTarget]\n    },\n\n    /**\n     * Constant of NONE.\n     * @type {number}\n     */\n    get NONE() {\n        return 0\n    },\n\n    /**\n     * Constant of CAPTURING_PHASE.\n     * @type {number}\n     */\n    get CAPTURING_PHASE() {\n        return 1\n    },\n\n    /**\n     * Constant of AT_TARGET.\n     * @type {number}\n     */\n    get AT_TARGET() {\n        return 2\n    },\n\n    /**\n     * Constant of BUBBLING_PHASE.\n     * @type {number}\n     */\n    get BUBBLING_PHASE() {\n        return 3\n    },\n\n    /**\n     * The target of this event.\n     * @type {number}\n     */\n    get eventPhase() {\n        return pd(this).eventPhase\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopPropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.stopPropagation === \"function\") {\n            data.event.stopPropagation();\n        }\n    },\n\n    /**\n     * Stop event bubbling.\n     * @returns {void}\n     */\n    stopImmediatePropagation() {\n        const data = pd(this);\n\n        data.stopped = true;\n        data.immediateStopped = true;\n        if (typeof data.event.stopImmediatePropagation === \"function\") {\n            data.event.stopImmediatePropagation();\n        }\n    },\n\n    /**\n     * The flag to be bubbling.\n     * @type {boolean}\n     */\n    get bubbles() {\n        return Boolean(pd(this).event.bubbles)\n    },\n\n    /**\n     * The flag to be cancelable.\n     * @type {boolean}\n     */\n    get cancelable() {\n        return Boolean(pd(this).event.cancelable)\n    },\n\n    /**\n     * Cancel this event.\n     * @returns {void}\n     */\n    preventDefault() {\n        setCancelFlag(pd(this));\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     */\n    get defaultPrevented() {\n        return pd(this).canceled\n    },\n\n    /**\n     * The flag to be composed.\n     * @type {boolean}\n     */\n    get composed() {\n        return Boolean(pd(this).event.composed)\n    },\n\n    /**\n     * The unix time of this event.\n     * @type {number}\n     */\n    get timeStamp() {\n        return pd(this).timeStamp\n    },\n\n    /**\n     * The target of this event.\n     * @type {EventTarget}\n     * @deprecated\n     */\n    get srcElement() {\n        return pd(this).eventTarget\n    },\n\n    /**\n     * The flag to stop event bubbling.\n     * @type {boolean}\n     * @deprecated\n     */\n    get cancelBubble() {\n        return pd(this).stopped\n    },\n    set cancelBubble(value) {\n        if (!value) {\n            return\n        }\n        const data = pd(this);\n\n        data.stopped = true;\n        if (typeof data.event.cancelBubble === \"boolean\") {\n            data.event.cancelBubble = true;\n        }\n    },\n\n    /**\n     * The flag to indicate cancellation state.\n     * @type {boolean}\n     * @deprecated\n     */\n    get returnValue() {\n        return !pd(this).canceled\n    },\n    set returnValue(value) {\n        if (!value) {\n            setCancelFlag(pd(this));\n        }\n    },\n\n    /**\n     * Initialize this event object. But do nothing under event dispatching.\n     * @param {string} type The event type.\n     * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n     * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n     * @deprecated\n     */\n    initEvent() {\n        // Do nothing.\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n    value: Event,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n    Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n    // Make association for wrappers.\n    wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n    return {\n        get() {\n            return pd(this).event[key]\n        },\n        set(value) {\n            pd(this).event[key] = value;\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n    return {\n        value() {\n            const event = pd(this).event;\n            return event[key].apply(event, arguments)\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n    const keys = Object.keys(proto);\n    if (keys.length === 0) {\n        return BaseEvent\n    }\n\n    /** CustomEvent */\n    function CustomEvent(eventTarget, event) {\n        BaseEvent.call(this, eventTarget, event);\n    }\n\n    CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n        constructor: { value: CustomEvent, configurable: true, writable: true },\n    });\n\n    // Define accessors.\n    for (let i = 0; i < keys.length; ++i) {\n        const key = keys[i];\n        if (!(key in BaseEvent.prototype)) {\n            const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n            const isFunc = typeof descriptor.value === \"function\";\n            Object.defineProperty(\n                CustomEvent.prototype,\n                key,\n                isFunc\n                    ? defineCallDescriptor(key)\n                    : defineRedirectDescriptor(key)\n            );\n        }\n    }\n\n    return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n    if (proto == null || proto === Object.prototype) {\n        return Event\n    }\n\n    let wrapper = wrappers.get(proto);\n    if (wrapper == null) {\n        wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n        wrappers.set(proto, wrapper);\n    }\n    return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n    const Wrapper = getWrapper(Object.getPrototypeOf(event));\n    return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n    return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n    pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n    pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n    pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n    return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n    const listeners = listenersMap.get(eventTarget);\n    if (listeners == null) {\n        throw new TypeError(\n            \"'this' is expected an EventTarget object, but got another value.\"\n        )\n    }\n    return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n    return {\n        get() {\n            const listeners = getListeners(this);\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    return node.listener\n                }\n                node = node.next;\n            }\n            return null\n        },\n\n        set(listener) {\n            if (typeof listener !== \"function\" && !isObject(listener)) {\n                listener = null; // eslint-disable-line no-param-reassign\n            }\n            const listeners = getListeners(this);\n\n            // Traverse to the tail while removing old value.\n            let prev = null;\n            let node = listeners.get(eventName);\n            while (node != null) {\n                if (node.listenerType === ATTRIBUTE) {\n                    // Remove old value.\n                    if (prev !== null) {\n                        prev.next = node.next;\n                    } else if (node.next !== null) {\n                        listeners.set(eventName, node.next);\n                    } else {\n                        listeners.delete(eventName);\n                    }\n                } else {\n                    prev = node;\n                }\n\n                node = node.next;\n            }\n\n            // Add new value.\n            if (listener !== null) {\n                const newNode = {\n                    listener,\n                    listenerType: ATTRIBUTE,\n                    passive: false,\n                    once: false,\n                    next: null,\n                };\n                if (prev === null) {\n                    listeners.set(eventName, newNode);\n                } else {\n                    prev.next = newNode;\n                }\n            }\n        },\n        configurable: true,\n        enumerable: true,\n    }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n    Object.defineProperty(\n        eventTargetPrototype,\n        `on${eventName}`,\n        defineEventAttributeDescriptor(eventName)\n    );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n    /** CustomEventTarget */\n    function CustomEventTarget() {\n        EventTarget.call(this);\n    }\n\n    CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n        constructor: {\n            value: CustomEventTarget,\n            configurable: true,\n            writable: true,\n        },\n    });\n\n    for (let i = 0; i < eventNames.length; ++i) {\n        defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n    }\n\n    return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n *     class A extends EventTarget {}\n *     class B extends EventTarget(\"message\") {}\n *     class C extends EventTarget(\"message\", \"error\") {}\n *     class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n    /*eslint-disable consistent-return */\n    if (this instanceof EventTarget) {\n        listenersMap.set(this, new Map());\n        return\n    }\n    if (arguments.length === 1 && Array.isArray(arguments[0])) {\n        return defineCustomEventTarget(arguments[0])\n    }\n    if (arguments.length > 0) {\n        const types = new Array(arguments.length);\n        for (let i = 0; i < arguments.length; ++i) {\n            types[i] = arguments[i];\n        }\n        return defineCustomEventTarget(types)\n    }\n    throw new TypeError(\"Cannot call a class as a function\")\n    /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n    /**\n     * Add a given listener to this event target.\n     * @param {string} eventName The event name to add.\n     * @param {Function} listener The listener to add.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    addEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n        if (typeof listener !== \"function\" && !isObject(listener)) {\n            throw new TypeError(\"'listener' should be a function or an object.\")\n        }\n\n        const listeners = getListeners(this);\n        const optionsIsObj = isObject(options);\n        const capture = optionsIsObj\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n        const newNode = {\n            listener,\n            listenerType,\n            passive: optionsIsObj && Boolean(options.passive),\n            once: optionsIsObj && Boolean(options.once),\n            next: null,\n        };\n\n        // Set it as the first node if the first node is null.\n        let node = listeners.get(eventName);\n        if (node === undefined) {\n            listeners.set(eventName, newNode);\n            return\n        }\n\n        // Traverse to the tail while checking duplication..\n        let prev = null;\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                // Should ignore duplication.\n                return\n            }\n            prev = node;\n            node = node.next;\n        }\n\n        // Add it.\n        prev.next = newNode;\n    },\n\n    /**\n     * Remove a given listener from this event target.\n     * @param {string} eventName The event name to remove.\n     * @param {Function} listener The listener to remove.\n     * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n     * @returns {void}\n     */\n    removeEventListener(eventName, listener, options) {\n        if (listener == null) {\n            return\n        }\n\n        const listeners = getListeners(this);\n        const capture = isObject(options)\n            ? Boolean(options.capture)\n            : Boolean(options);\n        const listenerType = capture ? CAPTURE : BUBBLE;\n\n        let prev = null;\n        let node = listeners.get(eventName);\n        while (node != null) {\n            if (\n                node.listener === listener &&\n                node.listenerType === listenerType\n            ) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n                return\n            }\n\n            prev = node;\n            node = node.next;\n        }\n    },\n\n    /**\n     * Dispatch a given event.\n     * @param {Event|{type:string}} event The event to dispatch.\n     * @returns {boolean} `false` if canceled.\n     */\n    dispatchEvent(event) {\n        if (event == null || typeof event.type !== \"string\") {\n            throw new TypeError('\"event.type\" should be a string.')\n        }\n\n        // If listeners aren't registered, terminate.\n        const listeners = getListeners(this);\n        const eventName = event.type;\n        let node = listeners.get(eventName);\n        if (node == null) {\n            return true\n        }\n\n        // Since we cannot rewrite several properties, so wrap object.\n        const wrappedEvent = wrapEvent(this, event);\n\n        // This doesn't process capturing phase and bubbling phase.\n        // This isn't participating in a tree.\n        let prev = null;\n        while (node != null) {\n            // Remove this listener if it's once\n            if (node.once) {\n                if (prev !== null) {\n                    prev.next = node.next;\n                } else if (node.next !== null) {\n                    listeners.set(eventName, node.next);\n                } else {\n                    listeners.delete(eventName);\n                }\n            } else {\n                prev = node;\n            }\n\n            // Call this listener\n            setPassiveListener(\n                wrappedEvent,\n                node.passive ? node.listener : null\n            );\n            if (typeof node.listener === \"function\") {\n                try {\n                    node.listener.call(this, wrappedEvent);\n                } catch (err) {\n                    if (\n                        typeof console !== \"undefined\" &&\n                        typeof console.error === \"function\"\n                    ) {\n                        console.error(err);\n                    }\n                }\n            } else if (\n                node.listenerType !== ATTRIBUTE &&\n                typeof node.listener.handleEvent === \"function\"\n            ) {\n                node.listener.handleEvent(wrappedEvent);\n            }\n\n            // Break if `event.stopImmediatePropagation` was called.\n            if (isStopped(wrappedEvent)) {\n                break\n            }\n\n            node = node.next;\n        }\n        setPassiveListener(wrappedEvent, null);\n        setEventPhase(wrappedEvent, 0);\n        setCurrentTarget(wrappedEvent, null);\n\n        return !wrappedEvent.defaultPrevented\n    },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n    value: EventTarget,\n    configurable: true,\n    writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n    typeof window !== \"undefined\" &&\n    typeof window.EventTarget !== \"undefined\"\n) {\n    Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexport default EventTarget;\nexport { defineEventAttribute, EventTarget };\n//# sourceMappingURL=event-target-shim.mjs.map\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\nimport { EventTarget, defineEventAttribute } from 'event-target-shim';\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends EventTarget {\n    /**\n     * AbortSignal cannot be constructed directly.\n     */\n    constructor() {\n        super();\n        throw new TypeError(\"AbortSignal cannot be constructed directly\");\n    }\n    /**\n     * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n     */\n    get aborted() {\n        const aborted = abortedFlags.get(this);\n        if (typeof aborted !== \"boolean\") {\n            throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n        }\n        return aborted;\n    }\n}\ndefineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n    const signal = Object.create(AbortSignal.prototype);\n    EventTarget.call(signal);\n    abortedFlags.set(signal, false);\n    return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n    if (abortedFlags.get(signal) !== false) {\n        return;\n    }\n    abortedFlags.set(signal, true);\n    signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n    aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortSignal\",\n    });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n    /**\n     * Initialize this controller.\n     */\n    constructor() {\n        signals.set(this, createAbortSignal());\n    }\n    /**\n     * Returns the `AbortSignal` object associated with this object.\n     */\n    get signal() {\n        return getSignal(this);\n    }\n    /**\n     * Abort and signal to any observers that the associated activity is to be aborted.\n     */\n    abort() {\n        abortSignal(getSignal(this));\n    }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n    const signal = signals.get(controller);\n    if (signal == null) {\n        throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n    }\n    return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n    signal: { enumerable: true },\n    abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n    Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n        configurable: true,\n        value: \"AbortController\",\n    });\n}\n\nexport default AbortController;\nexport { AbortController, AbortSignal };\n//# sourceMappingURL=abort-controller.mjs.map\n","'use strict'\n\nconst bufferModule = require('buffer')\nconst { kResistStopPropagation, SymbolDispose } = require('./primordials')\nconst AbortSignal = globalThis.AbortSignal || require('abort-controller').AbortSignal\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst AsyncFunction = Object.getPrototypeOf(async function () {}).constructor\nconst Blob = globalThis.Blob || bufferModule.Blob\n/* eslint-disable indent */\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        // eslint-disable-next-line indent\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\n/* eslint-enable indent */\n\nconst validateAbortSignal = (signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nconst validateFunction = (value, name) => {\n  if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n}\n\n// This is a simplified version of AggregateError\nclass AggregateError extends Error {\n  constructor(errors) {\n    if (!Array.isArray(errors)) {\n      throw new TypeError(`Expected input to be an Array, got ${typeof errors}`)\n    }\n    let message = ''\n    for (let i = 0; i < errors.length; i++) {\n      message += `    ${errors[i].stack}\\n`\n    }\n    super(message)\n    this.name = 'AggregateError'\n    this.errors = errors\n  }\n}\nmodule.exports = {\n  AggregateError,\n  kEmptyObject: Object.freeze({}),\n  once(callback) {\n    let called = false\n    return function (...args) {\n      if (called) {\n        return\n      }\n      called = true\n      callback.apply(this, args)\n    }\n  },\n  createDeferredPromise: function () {\n    let resolve\n    let reject\n\n    // eslint-disable-next-line promise/param-names\n    const promise = new Promise((res, rej) => {\n      resolve = res\n      reject = rej\n    })\n    return {\n      promise,\n      resolve,\n      reject\n    }\n  },\n  promisify(fn) {\n    return new Promise((resolve, reject) => {\n      fn((err, ...args) => {\n        if (err) {\n          return reject(err)\n        }\n        return resolve(...args)\n      })\n    })\n  },\n  debuglog() {\n    return function () {}\n  },\n  format(format, ...args) {\n    // Simplified version of https://nodejs.org/api/util.html#utilformatformat-args\n    return format.replace(/%([sdifj])/g, function (...[_unused, type]) {\n      const replacement = args.shift()\n      if (type === 'f') {\n        return replacement.toFixed(6)\n      } else if (type === 'j') {\n        return JSON.stringify(replacement)\n      } else if (type === 's' && typeof replacement === 'object') {\n        const ctor = replacement.constructor !== Object ? replacement.constructor.name : ''\n        return `${ctor} {}`.trim()\n      } else {\n        return replacement.toString()\n      }\n    })\n  },\n  inspect(value) {\n    // Vastly simplified version of https://nodejs.org/api/util.html#utilinspectobject-options\n    switch (typeof value) {\n      case 'string':\n        if (value.includes(\"'\")) {\n          if (!value.includes('\"')) {\n            return `\"${value}\"`\n          } else if (!value.includes('`') && !value.includes('${')) {\n            return `\\`${value}\\``\n          }\n        }\n        return `'${value}'`\n      case 'number':\n        if (isNaN(value)) {\n          return 'NaN'\n        } else if (Object.is(value, -0)) {\n          return String(value)\n        }\n        return value\n      case 'bigint':\n        return `${String(value)}n`\n      case 'boolean':\n      case 'undefined':\n        return String(value)\n      case 'object':\n        return '{}'\n    }\n  },\n  types: {\n    isAsyncFunction(fn) {\n      return fn instanceof AsyncFunction\n    },\n    isArrayBufferView(arr) {\n      return ArrayBuffer.isView(arr)\n    }\n  },\n  isBlob,\n  deprecate(fn, message) {\n    return fn\n  },\n  addAbortListener:\n    require('events').addAbortListener ||\n    function addAbortListener(signal, listener) {\n      if (signal === undefined) {\n        throw new ERR_INVALID_ARG_TYPE('signal', 'AbortSignal', signal)\n      }\n      validateAbortSignal(signal, 'signal')\n      validateFunction(listener, 'listener')\n      let removeEventListener\n      if (signal.aborted) {\n        queueMicrotask(() => listener())\n      } else {\n        signal.addEventListener('abort', listener, {\n          __proto__: null,\n          once: true,\n          [kResistStopPropagation]: true\n        })\n        removeEventListener = () => {\n          signal.removeEventListener('abort', listener)\n        }\n      }\n      return {\n        __proto__: null,\n        [SymbolDispose]() {\n          var _removeEventListener\n          ;(_removeEventListener = removeEventListener) === null || _removeEventListener === undefined\n            ? undefined\n            : _removeEventListener()\n        }\n      }\n    },\n  AbortSignalAny:\n    AbortSignal.any ||\n    function AbortSignalAny(signals) {\n      // Fast path if there is only one signal.\n      if (signals.length === 1) {\n        return signals[0]\n      }\n      const ac = new AbortController()\n      const abort = () => ac.abort()\n      signals.forEach((signal) => {\n        validateAbortSignal(signal, 'signals')\n        signal.addEventListener('abort', abort, {\n          once: true\n        })\n      })\n      ac.signal.addEventListener(\n        'abort',\n        () => {\n          signals.forEach((signal) => signal.removeEventListener('abort', abort))\n        },\n        {\n          once: true\n        }\n      )\n      return ac.signal\n    }\n}\nmodule.exports.promisify.custom = Symbol.for('nodejs.util.promisify.custom')\n","'use strict'\n\nconst { format, inspect, AggregateError: CustomAggregateError } = require('./util')\n\n/*\n  This file is a reduced and adapted version of the main lib/internal/errors.js file defined at\n\n  https://github.com/nodejs/node/blob/master/lib/internal/errors.js\n\n  Don't try to replace with the original file and keep it up to date (starting from E(...) definitions)\n  with the upstream file.\n*/\n\nconst AggregateError = globalThis.AggregateError || CustomAggregateError\nconst kIsNodeError = Symbol('kIsNodeError')\nconst kTypes = [\n  'string',\n  'function',\n  'number',\n  'object',\n  // Accept 'Function' and 'Object' as alternative to the lower cased version.\n  'Function',\n  'Object',\n  'boolean',\n  'bigint',\n  'symbol'\n]\nconst classRegExp = /^([A-Z][a-z0-9]*)+$/\nconst nodeInternalPrefix = '__node_internal_'\nconst codes = {}\nfunction assert(value, message) {\n  if (!value) {\n    throw new codes.ERR_INTERNAL_ASSERTION(message)\n  }\n}\n\n// Only use this for integers! Decimal numbers do not work with this function.\nfunction addNumericalSeparator(val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\nfunction getMessage(key, msg, args) {\n  if (typeof msg === 'function') {\n    assert(\n      msg.length <= args.length,\n      // Default options do not count.\n      `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`\n    )\n    return msg(...args)\n  }\n  const expectedLength = (msg.match(/%[dfijoOs]/g) || []).length\n  assert(\n    expectedLength === args.length,\n    `Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`\n  )\n  if (args.length === 0) {\n    return msg\n  }\n  return format(msg, ...args)\n}\nfunction E(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n  class NodeError extends Base {\n    constructor(...args) {\n      super(getMessage(code, message, args))\n    }\n    toString() {\n      return `${this.name} [${code}]: ${this.message}`\n    }\n  }\n  Object.defineProperties(NodeError.prototype, {\n    name: {\n      value: Base.name,\n      writable: true,\n      enumerable: false,\n      configurable: true\n    },\n    toString: {\n      value() {\n        return `${this.name} [${code}]: ${this.message}`\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    }\n  })\n  NodeError.prototype.code = code\n  NodeError.prototype[kIsNodeError] = true\n  codes[code] = NodeError\n}\nfunction hideStackFrames(fn) {\n  // We rename the functions that will be hidden to cut off the stacktrace\n  // at the outermost one\n  const hidden = nodeInternalPrefix + fn.name\n  Object.defineProperty(fn, 'name', {\n    value: hidden\n  })\n  return fn\n}\nfunction aggregateTwoErrors(innerError, outerError) {\n  if (innerError && outerError && innerError !== outerError) {\n    if (Array.isArray(outerError.errors)) {\n      // If `outerError` is already an `AggregateError`.\n      outerError.errors.push(innerError)\n      return outerError\n    }\n    const err = new AggregateError([outerError, innerError], outerError.message)\n    err.code = outerError.code\n    return err\n  }\n  return innerError || outerError\n}\nclass AbortError extends Error {\n  constructor(message = 'The operation was aborted', options = undefined) {\n    if (options !== undefined && typeof options !== 'object') {\n      throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options)\n    }\n    super(message, options)\n    this.code = 'ABORT_ERR'\n    this.name = 'AbortError'\n  }\n}\nE('ERR_ASSERTION', '%s', Error)\nE(\n  'ERR_INVALID_ARG_TYPE',\n  (name, expected, actual) => {\n    assert(typeof name === 'string', \"'name' must be a string\")\n    if (!Array.isArray(expected)) {\n      expected = [expected]\n    }\n    let msg = 'The '\n    if (name.endsWith(' argument')) {\n      // For cases like 'first argument'\n      msg += `${name} `\n    } else {\n      msg += `\"${name}\" ${name.includes('.') ? 'property' : 'argument'} `\n    }\n    msg += 'must be '\n    const types = []\n    const instances = []\n    const other = []\n    for (const value of expected) {\n      assert(typeof value === 'string', 'All expected entries have to be of type string')\n      if (kTypes.includes(value)) {\n        types.push(value.toLowerCase())\n      } else if (classRegExp.test(value)) {\n        instances.push(value)\n      } else {\n        assert(value !== 'object', 'The value \"object\" should be written as \"Object\"')\n        other.push(value)\n      }\n    }\n\n    // Special handle `object` in case other instances are allowed to outline\n    // the differences between each other.\n    if (instances.length > 0) {\n      const pos = types.indexOf('object')\n      if (pos !== -1) {\n        types.splice(types, pos, 1)\n        instances.push('Object')\n      }\n    }\n    if (types.length > 0) {\n      switch (types.length) {\n        case 1:\n          msg += `of type ${types[0]}`\n          break\n        case 2:\n          msg += `one of type ${types[0]} or ${types[1]}`\n          break\n        default: {\n          const last = types.pop()\n          msg += `one of type ${types.join(', ')}, or ${last}`\n        }\n      }\n      if (instances.length > 0 || other.length > 0) {\n        msg += ' or '\n      }\n    }\n    if (instances.length > 0) {\n      switch (instances.length) {\n        case 1:\n          msg += `an instance of ${instances[0]}`\n          break\n        case 2:\n          msg += `an instance of ${instances[0]} or ${instances[1]}`\n          break\n        default: {\n          const last = instances.pop()\n          msg += `an instance of ${instances.join(', ')}, or ${last}`\n        }\n      }\n      if (other.length > 0) {\n        msg += ' or '\n      }\n    }\n    switch (other.length) {\n      case 0:\n        break\n      case 1:\n        if (other[0].toLowerCase() !== other[0]) {\n          msg += 'an '\n        }\n        msg += `${other[0]}`\n        break\n      case 2:\n        msg += `one of ${other[0]} or ${other[1]}`\n        break\n      default: {\n        const last = other.pop()\n        msg += `one of ${other.join(', ')}, or ${last}`\n      }\n    }\n    if (actual == null) {\n      msg += `. Received ${actual}`\n    } else if (typeof actual === 'function' && actual.name) {\n      msg += `. Received function ${actual.name}`\n    } else if (typeof actual === 'object') {\n      var _actual$constructor\n      if (\n        (_actual$constructor = actual.constructor) !== null &&\n        _actual$constructor !== undefined &&\n        _actual$constructor.name\n      ) {\n        msg += `. Received an instance of ${actual.constructor.name}`\n      } else {\n        const inspected = inspect(actual, {\n          depth: -1\n        })\n        msg += `. Received ${inspected}`\n      }\n    } else {\n      let inspected = inspect(actual, {\n        colors: false\n      })\n      if (inspected.length > 25) {\n        inspected = `${inspected.slice(0, 25)}...`\n      }\n      msg += `. Received type ${typeof actual} (${inspected})`\n    }\n    return msg\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_ARG_VALUE',\n  (name, value, reason = 'is invalid') => {\n    let inspected = inspect(value)\n    if (inspected.length > 128) {\n      inspected = inspected.slice(0, 128) + '...'\n    }\n    const type = name.includes('.') ? 'property' : 'argument'\n    return `The ${type} '${name}' ${reason}. Received ${inspected}`\n  },\n  TypeError\n)\nE(\n  'ERR_INVALID_RETURN_VALUE',\n  (input, name, value) => {\n    var _value$constructor\n    const type =\n      value !== null &&\n      value !== undefined &&\n      (_value$constructor = value.constructor) !== null &&\n      _value$constructor !== undefined &&\n      _value$constructor.name\n        ? `instance of ${value.constructor.name}`\n        : `type ${typeof value}`\n    return `Expected ${input} to be returned from the \"${name}\"` + ` function but got ${type}.`\n  },\n  TypeError\n)\nE(\n  'ERR_MISSING_ARGS',\n  (...args) => {\n    assert(args.length > 0, 'At least one arg needs to be specified')\n    let msg\n    const len = args.length\n    args = (Array.isArray(args) ? args : [args]).map((a) => `\"${a}\"`).join(' or ')\n    switch (len) {\n      case 1:\n        msg += `The ${args[0]} argument`\n        break\n      case 2:\n        msg += `The ${args[0]} and ${args[1]} arguments`\n        break\n      default:\n        {\n          const last = args.pop()\n          msg += `The ${args.join(', ')}, and ${last} arguments`\n        }\n        break\n    }\n    return `${msg} must be specified`\n  },\n  TypeError\n)\nE(\n  'ERR_OUT_OF_RANGE',\n  (str, range, input) => {\n    assert(range, 'Missing \"range\" argument')\n    let received\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > 2n ** 32n || input < -(2n ** 32n)) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    } else {\n      received = inspect(input)\n    }\n    return `The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`\n  },\n  RangeError\n)\nE('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times', Error)\nE('ERR_METHOD_NOT_IMPLEMENTED', 'The %s method is not implemented', Error)\nE('ERR_STREAM_ALREADY_FINISHED', 'Cannot call %s after a stream was finished', Error)\nE('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable', Error)\nE('ERR_STREAM_DESTROYED', 'Cannot call %s after a stream was destroyed', Error)\nE('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError)\nE('ERR_STREAM_PREMATURE_CLOSE', 'Premature close', Error)\nE('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF', Error)\nE('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event', Error)\nE('ERR_STREAM_WRITE_AFTER_END', 'write after end', Error)\nE('ERR_UNKNOWN_ENCODING', 'Unknown encoding: %s', TypeError)\nmodule.exports = {\n  AbortError,\n  aggregateTwoErrors: hideStackFrames(aggregateTwoErrors),\n  hideStackFrames,\n  codes\n}\n","/* eslint jsdoc/require-jsdoc: \"error\" */\n\n'use strict'\n\nconst {\n  ArrayIsArray,\n  ArrayPrototypeIncludes,\n  ArrayPrototypeJoin,\n  ArrayPrototypeMap,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberMAX_SAFE_INTEGER,\n  NumberMIN_SAFE_INTEGER,\n  NumberParseInt,\n  ObjectPrototypeHasOwnProperty,\n  RegExpPrototypeExec,\n  String,\n  StringPrototypeToUpperCase,\n  StringPrototypeTrim\n} = require('../ours/primordials')\nconst {\n  hideStackFrames,\n  codes: { ERR_SOCKET_BAD_PORT, ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, ERR_OUT_OF_RANGE, ERR_UNKNOWN_SIGNAL }\n} = require('../ours/errors')\nconst { normalizeEncoding } = require('../ours/util')\nconst { isAsyncFunction, isArrayBufferView } = require('../ours/util').types\nconst signals = {}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isInt32(value) {\n  return value === (value | 0)\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nfunction isUint32(value) {\n  return value === value >>> 0\n}\nconst octalReg = /^[0-7]+$/\nconst modeDesc = 'must be a 32-bit unsigned integer or an octal string'\n\n/**\n * Parse and validate values that will be converted into mode_t (the S_*\n * constants). Only valid numbers and octal strings are allowed. They could be\n * converted to 32-bit unsigned integers or non-negative signed integers in the\n * C++ land, but any value higher than 0o777 will result in platform-specific\n * behaviors.\n * @param {*} value Values to be validated\n * @param {string} name Name of the argument\n * @param {number} [def] If specified, will be returned for invalid values\n * @returns {number}\n */\nfunction parseFileMode(value, name, def) {\n  if (typeof value === 'undefined') {\n    value = def\n  }\n  if (typeof value === 'string') {\n    if (RegExpPrototypeExec(octalReg, value) === null) {\n      throw new ERR_INVALID_ARG_VALUE(name, value, modeDesc)\n    }\n    value = NumberParseInt(value, 8)\n  }\n  validateUint32(value, name)\n  return value\n}\n\n/**\n * @callback validateInteger\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInteger} */\nconst validateInteger = hideStackFrames((value, name, min = NumberMIN_SAFE_INTEGER, max = NumberMAX_SAFE_INTEGER) => {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (!NumberIsInteger(value)) throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  if (value < min || value > max) throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n})\n\n/**\n * @callback validateInt32\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateInt32} */\nconst validateInt32 = hideStackFrames((value, name, min = -2147483648, max = 2147483647) => {\n  // The defaults for min and max correspond to the limits of 32-bit integers.\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateUint32\n * @param {*} value\n * @param {string} name\n * @param {number|boolean} [positive=false]\n * @returns {asserts value is number}\n */\n\n/** @type {validateUint32} */\nconst validateUint32 = hideStackFrames((value, name, positive = false) => {\n  if (typeof value !== 'number') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n  if (!NumberIsInteger(value)) {\n    throw new ERR_OUT_OF_RANGE(name, 'an integer', value)\n  }\n  const min = positive ? 1 : 0\n  // 2 ** 32 === 4294967296\n  const max = 4294967295\n  if (value < min || value > max) {\n    throw new ERR_OUT_OF_RANGE(name, `>= ${min} && <= ${max}`, value)\n  }\n})\n\n/**\n * @callback validateString\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string}\n */\n\n/** @type {validateString} */\nfunction validateString(value, name) {\n  if (typeof value !== 'string') throw new ERR_INVALID_ARG_TYPE(name, 'string', value)\n}\n\n/**\n * @callback validateNumber\n * @param {*} value\n * @param {string} name\n * @param {number} [min]\n * @param {number} [max]\n * @returns {asserts value is number}\n */\n\n/** @type {validateNumber} */\nfunction validateNumber(value, name, min = undefined, max) {\n  if (typeof value !== 'number') throw new ERR_INVALID_ARG_TYPE(name, 'number', value)\n  if (\n    (min != null && value < min) ||\n    (max != null && value > max) ||\n    ((min != null || max != null) && NumberIsNaN(value))\n  ) {\n    throw new ERR_OUT_OF_RANGE(\n      name,\n      `${min != null ? `>= ${min}` : ''}${min != null && max != null ? ' && ' : ''}${max != null ? `<= ${max}` : ''}`,\n      value\n    )\n  }\n}\n\n/**\n * @callback validateOneOf\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} oneOf\n */\n\n/** @type {validateOneOf} */\nconst validateOneOf = hideStackFrames((value, name, oneOf) => {\n  if (!ArrayPrototypeIncludes(oneOf, value)) {\n    const allowed = ArrayPrototypeJoin(\n      ArrayPrototypeMap(oneOf, (v) => (typeof v === 'string' ? `'${v}'` : String(v))),\n      ', '\n    )\n    const reason = 'must be one of: ' + allowed\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateBoolean\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean}\n */\n\n/** @type {validateBoolean} */\nfunction validateBoolean(value, name) {\n  if (typeof value !== 'boolean') throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)\n}\n\n/**\n * @param {any} options\n * @param {string} key\n * @param {boolean} defaultValue\n * @returns {boolean}\n */\nfunction getOwnPropertyValueOrDefault(options, key, defaultValue) {\n  return options == null || !ObjectPrototypeHasOwnProperty(options, key) ? defaultValue : options[key]\n}\n\n/**\n * @callback validateObject\n * @param {*} value\n * @param {string} name\n * @param {{\n *   allowArray?: boolean,\n *   allowFunction?: boolean,\n *   nullable?: boolean\n * }} [options]\n */\n\n/** @type {validateObject} */\nconst validateObject = hideStackFrames((value, name, options = null) => {\n  const allowArray = getOwnPropertyValueOrDefault(options, 'allowArray', false)\n  const allowFunction = getOwnPropertyValueOrDefault(options, 'allowFunction', false)\n  const nullable = getOwnPropertyValueOrDefault(options, 'nullable', false)\n  if (\n    (!nullable && value === null) ||\n    (!allowArray && ArrayIsArray(value)) ||\n    (typeof value !== 'object' && (!allowFunction || typeof value !== 'function'))\n  ) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Object', value)\n  }\n})\n\n/**\n * @callback validateDictionary - We are using the Web IDL Standard definition\n *                                of \"dictionary\" here, which means any value\n *                                whose Type is either Undefined, Null, or\n *                                Object (which includes functions).\n * @param {*} value\n * @param {string} name\n * @see https://webidl.spec.whatwg.org/#es-dictionary\n * @see https://tc39.es/ecma262/#table-typeof-operator-results\n */\n\n/** @type {validateDictionary} */\nconst validateDictionary = hideStackFrames((value, name) => {\n  if (value != null && typeof value !== 'object' && typeof value !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE(name, 'a dictionary', value)\n  }\n})\n\n/**\n * @callback validateArray\n * @param {*} value\n * @param {string} name\n * @param {number} [minLength]\n * @returns {asserts value is any[]}\n */\n\n/** @type {validateArray} */\nconst validateArray = hideStackFrames((value, name, minLength = 0) => {\n  if (!ArrayIsArray(value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'Array', value)\n  }\n  if (value.length < minLength) {\n    const reason = `must be longer than ${minLength}`\n    throw new ERR_INVALID_ARG_VALUE(name, value, reason)\n  }\n})\n\n/**\n * @callback validateStringArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is string[]}\n */\n\n/** @type {validateStringArray} */\nfunction validateStringArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    validateString(value[i], `${name}[${i}]`)\n  }\n}\n\n/**\n * @callback validateBooleanArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is boolean[]}\n */\n\n/** @type {validateBooleanArray} */\nfunction validateBooleanArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    validateBoolean(value[i], `${name}[${i}]`)\n  }\n}\n\n/**\n * @callback validateAbortSignalArray\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is AbortSignal[]}\n */\n\n/** @type {validateAbortSignalArray} */\nfunction validateAbortSignalArray(value, name) {\n  validateArray(value, name)\n  for (let i = 0; i < value.length; i++) {\n    const signal = value[i]\n    const indexedName = `${name}[${i}]`\n    if (signal == null) {\n      throw new ERR_INVALID_ARG_TYPE(indexedName, 'AbortSignal', signal)\n    }\n    validateAbortSignal(signal, indexedName)\n  }\n}\n\n/**\n * @param {*} signal\n * @param {string} [name='signal']\n * @returns {asserts signal is keyof signals}\n */\nfunction validateSignalName(signal, name = 'signal') {\n  validateString(signal, name)\n  if (signals[signal] === undefined) {\n    if (signals[StringPrototypeToUpperCase(signal)] !== undefined) {\n      throw new ERR_UNKNOWN_SIGNAL(signal + ' (signals must use all capital letters)')\n    }\n    throw new ERR_UNKNOWN_SIGNAL(signal)\n  }\n}\n\n/**\n * @callback validateBuffer\n * @param {*} buffer\n * @param {string} [name='buffer']\n * @returns {asserts buffer is ArrayBufferView}\n */\n\n/** @type {validateBuffer} */\nconst validateBuffer = hideStackFrames((buffer, name = 'buffer') => {\n  if (!isArrayBufferView(buffer)) {\n    throw new ERR_INVALID_ARG_TYPE(name, ['Buffer', 'TypedArray', 'DataView'], buffer)\n  }\n})\n\n/**\n * @param {string} data\n * @param {string} encoding\n */\nfunction validateEncoding(data, encoding) {\n  const normalizedEncoding = normalizeEncoding(encoding)\n  const length = data.length\n  if (normalizedEncoding === 'hex' && length % 2 !== 0) {\n    throw new ERR_INVALID_ARG_VALUE('encoding', encoding, `is invalid for data of length ${length}`)\n  }\n}\n\n/**\n * Check that the port number is not NaN when coerced to a number,\n * is an integer and that it falls within the legal range of port numbers.\n * @param {*} port\n * @param {string} [name='Port']\n * @param {boolean} [allowZero=true]\n * @returns {number}\n */\nfunction validatePort(port, name = 'Port', allowZero = true) {\n  if (\n    (typeof port !== 'number' && typeof port !== 'string') ||\n    (typeof port === 'string' && StringPrototypeTrim(port).length === 0) ||\n    +port !== +port >>> 0 ||\n    port > 0xffff ||\n    (port === 0 && !allowZero)\n  ) {\n    throw new ERR_SOCKET_BAD_PORT(name, port, allowZero)\n  }\n  return port | 0\n}\n\n/**\n * @callback validateAbortSignal\n * @param {*} signal\n * @param {string} name\n */\n\n/** @type {validateAbortSignal} */\nconst validateAbortSignal = hideStackFrames((signal, name) => {\n  if (signal !== undefined && (signal === null || typeof signal !== 'object' || !('aborted' in signal))) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n})\n\n/**\n * @callback validateFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validateFunction} */\nconst validateFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function') throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validatePlainFunction\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is Function}\n */\n\n/** @type {validatePlainFunction} */\nconst validatePlainFunction = hideStackFrames((value, name) => {\n  if (typeof value !== 'function' || isAsyncFunction(value)) throw new ERR_INVALID_ARG_TYPE(name, 'Function', value)\n})\n\n/**\n * @callback validateUndefined\n * @param {*} value\n * @param {string} name\n * @returns {asserts value is undefined}\n */\n\n/** @type {validateUndefined} */\nconst validateUndefined = hideStackFrames((value, name) => {\n  if (value !== undefined) throw new ERR_INVALID_ARG_TYPE(name, 'undefined', value)\n})\n\n/**\n * @template T\n * @param {T} value\n * @param {string} name\n * @param {T[]} union\n */\nfunction validateUnion(value, name, union) {\n  if (!ArrayPrototypeIncludes(union, value)) {\n    throw new ERR_INVALID_ARG_TYPE(name, `('${ArrayPrototypeJoin(union, '|')}')`, value)\n  }\n}\n\n/*\n  The rules for the Link header field are described here:\n  https://www.rfc-editor.org/rfc/rfc8288.html#section-3\n\n  This regex validates any string surrounded by angle brackets\n  (not necessarily a valid URI reference) followed by zero or more\n  link-params separated by semicolons.\n*/\nconst linkValueRegExp = /^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/\n\n/**\n * @param {any} value\n * @param {string} name\n */\nfunction validateLinkHeaderFormat(value, name) {\n  if (typeof value === 'undefined' || !RegExpPrototypeExec(linkValueRegExp, value)) {\n    throw new ERR_INVALID_ARG_VALUE(\n      name,\n      value,\n      'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n    )\n  }\n}\n\n/**\n * @param {any} hints\n * @return {string}\n */\nfunction validateLinkHeaderValue(hints) {\n  if (typeof hints === 'string') {\n    validateLinkHeaderFormat(hints, 'hints')\n    return hints\n  } else if (ArrayIsArray(hints)) {\n    const hintsLength = hints.length\n    let result = ''\n    if (hintsLength === 0) {\n      return result\n    }\n    for (let i = 0; i < hintsLength; i++) {\n      const link = hints[i]\n      validateLinkHeaderFormat(link, 'hints')\n      result += link\n      if (i !== hintsLength - 1) {\n        result += ', '\n      }\n    }\n    return result\n  }\n  throw new ERR_INVALID_ARG_VALUE(\n    'hints',\n    hints,\n    'must be an array or string of format \"</styles.css>; rel=preload; as=style\"'\n  )\n}\nmodule.exports = {\n  isInt32,\n  isUint32,\n  parseFileMode,\n  validateArray,\n  validateStringArray,\n  validateBooleanArray,\n  validateAbortSignalArray,\n  validateBoolean,\n  validateBuffer,\n  validateDictionary,\n  validateEncoding,\n  validateFunction,\n  validateInt32,\n  validateInteger,\n  validateNumber,\n  validateObject,\n  validateOneOf,\n  validatePlainFunction,\n  validatePort,\n  validateSignalName,\n  validateString,\n  validateUint32,\n  validateUndefined,\n  validateUnion,\n  validateAbortSignal,\n  validateLinkHeaderValue\n}\n","// for now just expose the builtin process global from node.js\nmodule.exports = global.process;\n","'use strict'\n\nconst { SymbolAsyncIterator, SymbolIterator, SymbolFor } = require('../../ours/primordials')\n\n// We need to use SymbolFor to make these globally available\n// for interopt with readable-stream, i.e. readable-stream\n// and node core needs to be able to read/write private state\n// from each other for proper interoperability.\nconst kIsDestroyed = SymbolFor('nodejs.stream.destroyed')\nconst kIsErrored = SymbolFor('nodejs.stream.errored')\nconst kIsReadable = SymbolFor('nodejs.stream.readable')\nconst kIsWritable = SymbolFor('nodejs.stream.writable')\nconst kIsDisturbed = SymbolFor('nodejs.stream.disturbed')\nconst kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise')\nconst kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction')\nfunction isReadableNodeStream(obj, strict = false) {\n  var _obj$_readableState\n  return !!(\n    (\n      obj &&\n      typeof obj.pipe === 'function' &&\n      typeof obj.on === 'function' &&\n      (!strict || (typeof obj.pause === 'function' && typeof obj.resume === 'function')) &&\n      (!obj._writableState ||\n        ((_obj$_readableState = obj._readableState) === null || _obj$_readableState === undefined\n          ? undefined\n          : _obj$_readableState.readable) !== false) &&\n      // Duplex\n      (!obj._writableState || obj._readableState)\n    ) // Writable has .pipe.\n  )\n}\n\nfunction isWritableNodeStream(obj) {\n  var _obj$_writableState\n  return !!(\n    (\n      obj &&\n      typeof obj.write === 'function' &&\n      typeof obj.on === 'function' &&\n      (!obj._readableState ||\n        ((_obj$_writableState = obj._writableState) === null || _obj$_writableState === undefined\n          ? undefined\n          : _obj$_writableState.writable) !== false)\n    ) // Duplex\n  )\n}\n\nfunction isDuplexNodeStream(obj) {\n  return !!(\n    obj &&\n    typeof obj.pipe === 'function' &&\n    obj._readableState &&\n    typeof obj.on === 'function' &&\n    typeof obj.write === 'function'\n  )\n}\nfunction isNodeStream(obj) {\n  return (\n    obj &&\n    (obj._readableState ||\n      obj._writableState ||\n      (typeof obj.write === 'function' && typeof obj.on === 'function') ||\n      (typeof obj.pipe === 'function' && typeof obj.on === 'function'))\n  )\n}\nfunction isReadableStream(obj) {\n  return !!(\n    obj &&\n    !isNodeStream(obj) &&\n    typeof obj.pipeThrough === 'function' &&\n    typeof obj.getReader === 'function' &&\n    typeof obj.cancel === 'function'\n  )\n}\nfunction isWritableStream(obj) {\n  return !!(obj && !isNodeStream(obj) && typeof obj.getWriter === 'function' && typeof obj.abort === 'function')\n}\nfunction isTransformStream(obj) {\n  return !!(obj && !isNodeStream(obj) && typeof obj.readable === 'object' && typeof obj.writable === 'object')\n}\nfunction isWebStream(obj) {\n  return isReadableStream(obj) || isWritableStream(obj) || isTransformStream(obj)\n}\nfunction isIterable(obj, isAsync) {\n  if (obj == null) return false\n  if (isAsync === true) return typeof obj[SymbolAsyncIterator] === 'function'\n  if (isAsync === false) return typeof obj[SymbolIterator] === 'function'\n  return typeof obj[SymbolAsyncIterator] === 'function' || typeof obj[SymbolIterator] === 'function'\n}\nfunction isDestroyed(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return !!(stream.destroyed || stream[kIsDestroyed] || (state !== null && state !== undefined && state.destroyed))\n}\n\n// Have been end():d.\nfunction isWritableEnded(stream) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableEnded === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.ended) !== 'boolean') return null\n  return wState.ended\n}\n\n// Have emitted 'finish'.\nfunction isWritableFinished(stream, strict) {\n  if (!isWritableNodeStream(stream)) return null\n  if (stream.writableFinished === true) return true\n  const wState = stream._writableState\n  if (wState !== null && wState !== undefined && wState.errored) return false\n  if (typeof (wState === null || wState === undefined ? undefined : wState.finished) !== 'boolean') return null\n  return !!(wState.finished || (strict === false && wState.ended === true && wState.length === 0))\n}\n\n// Have been push(null):d.\nfunction isReadableEnded(stream) {\n  if (!isReadableNodeStream(stream)) return null\n  if (stream.readableEnded === true) return true\n  const rState = stream._readableState\n  if (!rState || rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.ended) !== 'boolean') return null\n  return rState.ended\n}\n\n// Have emitted 'end'.\nfunction isReadableFinished(stream, strict) {\n  if (!isReadableNodeStream(stream)) return null\n  const rState = stream._readableState\n  if (rState !== null && rState !== undefined && rState.errored) return false\n  if (typeof (rState === null || rState === undefined ? undefined : rState.endEmitted) !== 'boolean') return null\n  return !!(rState.endEmitted || (strict === false && rState.ended === true && rState.length === 0))\n}\nfunction isReadable(stream) {\n  if (stream && stream[kIsReadable] != null) return stream[kIsReadable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.readable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isReadableNodeStream(stream) && stream.readable && !isReadableFinished(stream)\n}\nfunction isWritable(stream) {\n  if (stream && stream[kIsWritable] != null) return stream[kIsWritable]\n  if (typeof (stream === null || stream === undefined ? undefined : stream.writable) !== 'boolean') return null\n  if (isDestroyed(stream)) return false\n  return isWritableNodeStream(stream) && stream.writable && !isWritableEnded(stream)\n}\nfunction isFinished(stream, opts) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (isDestroyed(stream)) {\n    return true\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.readable) !== false && isReadable(stream)) {\n    return false\n  }\n  if ((opts === null || opts === undefined ? undefined : opts.writable) !== false && isWritable(stream)) {\n    return false\n  }\n  return true\n}\nfunction isWritableErrored(stream) {\n  var _stream$_writableStat, _stream$_writableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.writableErrored) {\n    return stream.writableErrored\n  }\n  return (_stream$_writableStat =\n    (_stream$_writableStat2 = stream._writableState) === null || _stream$_writableStat2 === undefined\n      ? undefined\n      : _stream$_writableStat2.errored) !== null && _stream$_writableStat !== undefined\n    ? _stream$_writableStat\n    : null\n}\nfunction isReadableErrored(stream) {\n  var _stream$_readableStat, _stream$_readableStat2\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (stream.readableErrored) {\n    return stream.readableErrored\n  }\n  return (_stream$_readableStat =\n    (_stream$_readableStat2 = stream._readableState) === null || _stream$_readableStat2 === undefined\n      ? undefined\n      : _stream$_readableStat2.errored) !== null && _stream$_readableStat !== undefined\n    ? _stream$_readableStat\n    : null\n}\nfunction isClosed(stream) {\n  if (!isNodeStream(stream)) {\n    return null\n  }\n  if (typeof stream.closed === 'boolean') {\n    return stream.closed\n  }\n  const wState = stream._writableState\n  const rState = stream._readableState\n  if (\n    typeof (wState === null || wState === undefined ? undefined : wState.closed) === 'boolean' ||\n    typeof (rState === null || rState === undefined ? undefined : rState.closed) === 'boolean'\n  ) {\n    return (\n      (wState === null || wState === undefined ? undefined : wState.closed) ||\n      (rState === null || rState === undefined ? undefined : rState.closed)\n    )\n  }\n  if (typeof stream._closed === 'boolean' && isOutgoingMessage(stream)) {\n    return stream._closed\n  }\n  return null\n}\nfunction isOutgoingMessage(stream) {\n  return (\n    typeof stream._closed === 'boolean' &&\n    typeof stream._defaultKeepAlive === 'boolean' &&\n    typeof stream._removedConnection === 'boolean' &&\n    typeof stream._removedContLen === 'boolean'\n  )\n}\nfunction isServerResponse(stream) {\n  return typeof stream._sent100 === 'boolean' && isOutgoingMessage(stream)\n}\nfunction isServerRequest(stream) {\n  var _stream$req\n  return (\n    typeof stream._consuming === 'boolean' &&\n    typeof stream._dumped === 'boolean' &&\n    ((_stream$req = stream.req) === null || _stream$req === undefined ? undefined : _stream$req.upgradeOrConnect) ===\n      undefined\n  )\n}\nfunction willEmitClose(stream) {\n  if (!isNodeStream(stream)) return null\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const state = wState || rState\n  return (\n    (!state && isServerResponse(stream)) || !!(state && state.autoDestroy && state.emitClose && state.closed === false)\n  )\n}\nfunction isDisturbed(stream) {\n  var _stream$kIsDisturbed\n  return !!(\n    stream &&\n    ((_stream$kIsDisturbed = stream[kIsDisturbed]) !== null && _stream$kIsDisturbed !== undefined\n      ? _stream$kIsDisturbed\n      : stream.readableDidRead || stream.readableAborted)\n  )\n}\nfunction isErrored(stream) {\n  var _ref,\n    _ref2,\n    _ref3,\n    _ref4,\n    _ref5,\n    _stream$kIsErrored,\n    _stream$_readableStat3,\n    _stream$_writableStat3,\n    _stream$_readableStat4,\n    _stream$_writableStat4\n  return !!(\n    stream &&\n    ((_ref =\n      (_ref2 =\n        (_ref3 =\n          (_ref4 =\n            (_ref5 =\n              (_stream$kIsErrored = stream[kIsErrored]) !== null && _stream$kIsErrored !== undefined\n                ? _stream$kIsErrored\n                : stream.readableErrored) !== null && _ref5 !== undefined\n              ? _ref5\n              : stream.writableErrored) !== null && _ref4 !== undefined\n            ? _ref4\n            : (_stream$_readableStat3 = stream._readableState) === null || _stream$_readableStat3 === undefined\n            ? undefined\n            : _stream$_readableStat3.errorEmitted) !== null && _ref3 !== undefined\n          ? _ref3\n          : (_stream$_writableStat3 = stream._writableState) === null || _stream$_writableStat3 === undefined\n          ? undefined\n          : _stream$_writableStat3.errorEmitted) !== null && _ref2 !== undefined\n        ? _ref2\n        : (_stream$_readableStat4 = stream._readableState) === null || _stream$_readableStat4 === undefined\n        ? undefined\n        : _stream$_readableStat4.errored) !== null && _ref !== undefined\n      ? _ref\n      : (_stream$_writableStat4 = stream._writableState) === null || _stream$_writableStat4 === undefined\n      ? undefined\n      : _stream$_writableStat4.errored)\n  )\n}\nmodule.exports = {\n  isDestroyed,\n  kIsDestroyed,\n  isDisturbed,\n  kIsDisturbed,\n  isErrored,\n  kIsErrored,\n  isReadable,\n  kIsReadable,\n  kIsClosedPromise,\n  kControllerErrorFunction,\n  kIsWritable,\n  isClosed,\n  isDuplexNodeStream,\n  isFinished,\n  isIterable,\n  isReadableNodeStream,\n  isReadableStream,\n  isReadableEnded,\n  isReadableFinished,\n  isReadableErrored,\n  isNodeStream,\n  isWebStream,\n  isWritable,\n  isWritableNodeStream,\n  isWritableStream,\n  isWritableEnded,\n  isWritableFinished,\n  isWritableErrored,\n  isServerRequest,\n  isServerResponse,\n  willEmitClose,\n  isTransformStream\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_PREMATURE_CLOSE } = codes\nconst { kEmptyObject, once } = require('../../ours/util')\nconst { validateAbortSignal, validateFunction, validateObject, validateBoolean } = require('../validators')\nconst { Promise, PromisePrototypeThen, SymbolDispose } = require('../../ours/primordials')\nconst {\n  isClosed,\n  isReadable,\n  isReadableNodeStream,\n  isReadableStream,\n  isReadableFinished,\n  isReadableErrored,\n  isWritable,\n  isWritableNodeStream,\n  isWritableStream,\n  isWritableFinished,\n  isWritableErrored,\n  isNodeStream,\n  willEmitClose: _willEmitClose,\n  kIsClosedPromise\n} = require('./utils')\nlet addAbortListener\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function'\n}\nconst nop = () => {}\nfunction eos(stream, options, callback) {\n  var _options$readable, _options$writable\n  if (arguments.length === 2) {\n    callback = options\n    options = kEmptyObject\n  } else if (options == null) {\n    options = kEmptyObject\n  } else {\n    validateObject(options, 'options')\n  }\n  validateFunction(callback, 'callback')\n  validateAbortSignal(options.signal, 'options.signal')\n  callback = once(callback)\n  if (isReadableStream(stream) || isWritableStream(stream)) {\n    return eosWeb(stream, options, callback)\n  }\n  if (!isNodeStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n  }\n  const readable =\n    (_options$readable = options.readable) !== null && _options$readable !== undefined\n      ? _options$readable\n      : isReadableNodeStream(stream)\n  const writable =\n    (_options$writable = options.writable) !== null && _options$writable !== undefined\n      ? _options$writable\n      : isWritableNodeStream(stream)\n  const wState = stream._writableState\n  const rState = stream._readableState\n  const onlegacyfinish = () => {\n    if (!stream.writable) {\n      onfinish()\n    }\n  }\n\n  // TODO (ronag): Improve soft detection to include core modules and\n  // common ecosystem modules that do properly emit 'close' but fail\n  // this generic check.\n  let willEmitClose =\n    _willEmitClose(stream) && isReadableNodeStream(stream) === readable && isWritableNodeStream(stream) === writable\n  let writableFinished = isWritableFinished(stream, false)\n  const onfinish = () => {\n    writableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.readable || readable)) {\n      return\n    }\n    if (!readable || readableFinished) {\n      callback.call(stream)\n    }\n  }\n  let readableFinished = isReadableFinished(stream, false)\n  const onend = () => {\n    readableFinished = true\n    // Stream should not be destroyed here. If it is that\n    // means that user space is doing something differently and\n    // we cannot trust willEmitClose.\n    if (stream.destroyed) {\n      willEmitClose = false\n    }\n    if (willEmitClose && (!stream.writable || writable)) {\n      return\n    }\n    if (!writable || writableFinished) {\n      callback.call(stream)\n    }\n  }\n  const onerror = (err) => {\n    callback.call(stream, err)\n  }\n  let closed = isClosed(stream)\n  const onclose = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    if (readable && !readableFinished && isReadableNodeStream(stream, true)) {\n      if (!isReadableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    if (writable && !writableFinished) {\n      if (!isWritableFinished(stream, false)) return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE())\n    }\n    callback.call(stream)\n  }\n  const onclosed = () => {\n    closed = true\n    const errored = isWritableErrored(stream) || isReadableErrored(stream)\n    if (errored && typeof errored !== 'boolean') {\n      return callback.call(stream, errored)\n    }\n    callback.call(stream)\n  }\n  const onrequest = () => {\n    stream.req.on('finish', onfinish)\n  }\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish)\n    if (!willEmitClose) {\n      stream.on('abort', onclose)\n    }\n    if (stream.req) {\n      onrequest()\n    } else {\n      stream.on('request', onrequest)\n    }\n  } else if (writable && !wState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish)\n    stream.on('close', onlegacyfinish)\n  }\n\n  // Not all streams will emit 'close' after 'aborted'.\n  if (!willEmitClose && typeof stream.aborted === 'boolean') {\n    stream.on('aborted', onclose)\n  }\n  stream.on('end', onend)\n  stream.on('finish', onfinish)\n  if (options.error !== false) {\n    stream.on('error', onerror)\n  }\n  stream.on('close', onclose)\n  if (closed) {\n    process.nextTick(onclose)\n  } else if (\n    (wState !== null && wState !== undefined && wState.errorEmitted) ||\n    (rState !== null && rState !== undefined && rState.errorEmitted)\n  ) {\n    if (!willEmitClose) {\n      process.nextTick(onclosed)\n    }\n  } else if (\n    !readable &&\n    (!willEmitClose || isReadable(stream)) &&\n    (writableFinished || isWritable(stream) === false)\n  ) {\n    process.nextTick(onclosed)\n  } else if (\n    !writable &&\n    (!willEmitClose || isWritable(stream)) &&\n    (readableFinished || isReadable(stream) === false)\n  ) {\n    process.nextTick(onclosed)\n  } else if (rState && stream.req && stream.aborted) {\n    process.nextTick(onclosed)\n  }\n  const cleanup = () => {\n    callback = nop\n    stream.removeListener('aborted', onclose)\n    stream.removeListener('complete', onfinish)\n    stream.removeListener('abort', onclose)\n    stream.removeListener('request', onrequest)\n    if (stream.req) stream.req.removeListener('finish', onfinish)\n    stream.removeListener('end', onlegacyfinish)\n    stream.removeListener('close', onlegacyfinish)\n    stream.removeListener('finish', onfinish)\n    stream.removeListener('end', onend)\n    stream.removeListener('error', onerror)\n    stream.removeListener('close', onclose)\n  }\n  if (options.signal && !closed) {\n    const abort = () => {\n      // Keep it because cleanup removes it.\n      const endCallback = callback\n      cleanup()\n      endCallback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n      const disposable = addAbortListener(options.signal, abort)\n      const originalCallback = callback\n      callback = once((...args) => {\n        disposable[SymbolDispose]()\n        originalCallback.apply(stream, args)\n      })\n    }\n  }\n  return cleanup\n}\nfunction eosWeb(stream, options, callback) {\n  let isAborted = false\n  let abort = nop\n  if (options.signal) {\n    abort = () => {\n      isAborted = true\n      callback.call(\n        stream,\n        new AbortError(undefined, {\n          cause: options.signal.reason\n        })\n      )\n    }\n    if (options.signal.aborted) {\n      process.nextTick(abort)\n    } else {\n      addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n      const disposable = addAbortListener(options.signal, abort)\n      const originalCallback = callback\n      callback = once((...args) => {\n        disposable[SymbolDispose]()\n        originalCallback.apply(stream, args)\n      })\n    }\n  }\n  const resolverFn = (...args) => {\n    if (!isAborted) {\n      process.nextTick(() => callback.apply(stream, args))\n    }\n  }\n  PromisePrototypeThen(stream[kIsClosedPromise].promise, resolverFn, resolverFn)\n  return nop\n}\nfunction finished(stream, opts) {\n  var _opts\n  let autoCleanup = false\n  if (opts === null) {\n    opts = kEmptyObject\n  }\n  if ((_opts = opts) !== null && _opts !== undefined && _opts.cleanup) {\n    validateBoolean(opts.cleanup, 'cleanup')\n    autoCleanup = opts.cleanup\n  }\n  return new Promise((resolve, reject) => {\n    const cleanup = eos(stream, opts, (err) => {\n      if (autoCleanup) {\n        cleanup()\n      }\n      if (err) {\n        reject(err)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\nmodule.exports = eos\nmodule.exports.finished = finished\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst {\n  aggregateTwoErrors,\n  codes: { ERR_MULTIPLE_CALLBACK },\n  AbortError\n} = require('../../ours/errors')\nconst { Symbol } = require('../../ours/primordials')\nconst { kIsDestroyed, isDestroyed, isFinished, isServerRequest } = require('./utils')\nconst kDestroy = Symbol('kDestroy')\nconst kConstruct = Symbol('kConstruct')\nfunction checkError(err, w, r) {\n  if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n  }\n}\n\n// Backwards compat. cb() is undocumented and unused in core but\n// unfortunately might be used by modules.\nfunction destroy(err, cb) {\n  const r = this._readableState\n  const w = this._writableState\n  // With duplex streams we use the writable side for state.\n  const s = w || r\n  if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n    if (typeof cb === 'function') {\n      cb()\n    }\n    return this\n  }\n\n  // We set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n  checkError(err, w, r)\n  if (w) {\n    w.destroyed = true\n  }\n  if (r) {\n    r.destroyed = true\n  }\n\n  // If still constructing then defer calling _destroy.\n  if (!s.constructed) {\n    this.once(kDestroy, function (er) {\n      _destroy(this, aggregateTwoErrors(er, err), cb)\n    })\n  } else {\n    _destroy(this, err, cb)\n  }\n  return this\n}\nfunction _destroy(self, err, cb) {\n  let called = false\n  function onDestroy(err) {\n    if (called) {\n      return\n    }\n    called = true\n    const r = self._readableState\n    const w = self._writableState\n    checkError(err, w, r)\n    if (w) {\n      w.closed = true\n    }\n    if (r) {\n      r.closed = true\n    }\n    if (typeof cb === 'function') {\n      cb(err)\n    }\n    if (err) {\n      process.nextTick(emitErrorCloseNT, self, err)\n    } else {\n      process.nextTick(emitCloseNT, self)\n    }\n  }\n  try {\n    self._destroy(err || null, onDestroy)\n  } catch (err) {\n    onDestroy(err)\n  }\n}\nfunction emitErrorCloseNT(self, err) {\n  emitErrorNT(self, err)\n  emitCloseNT(self)\n}\nfunction emitCloseNT(self) {\n  const r = self._readableState\n  const w = self._writableState\n  if (w) {\n    w.closeEmitted = true\n  }\n  if (r) {\n    r.closeEmitted = true\n  }\n  if ((w !== null && w !== undefined && w.emitClose) || (r !== null && r !== undefined && r.emitClose)) {\n    self.emit('close')\n  }\n}\nfunction emitErrorNT(self, err) {\n  const r = self._readableState\n  const w = self._writableState\n  if ((w !== null && w !== undefined && w.errorEmitted) || (r !== null && r !== undefined && r.errorEmitted)) {\n    return\n  }\n  if (w) {\n    w.errorEmitted = true\n  }\n  if (r) {\n    r.errorEmitted = true\n  }\n  self.emit('error', err)\n}\nfunction undestroy() {\n  const r = this._readableState\n  const w = this._writableState\n  if (r) {\n    r.constructed = true\n    r.closed = false\n    r.closeEmitted = false\n    r.destroyed = false\n    r.errored = null\n    r.errorEmitted = false\n    r.reading = false\n    r.ended = r.readable === false\n    r.endEmitted = r.readable === false\n  }\n  if (w) {\n    w.constructed = true\n    w.destroyed = false\n    w.closed = false\n    w.closeEmitted = false\n    w.errored = null\n    w.errorEmitted = false\n    w.finalCalled = false\n    w.prefinished = false\n    w.ended = w.writable === false\n    w.ending = w.writable === false\n    w.finished = w.writable === false\n  }\n}\nfunction errorOrDestroy(stream, err, sync) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  const r = stream._readableState\n  const w = stream._writableState\n  if ((w !== null && w !== undefined && w.destroyed) || (r !== null && r !== undefined && r.destroyed)) {\n    return this\n  }\n  if ((r !== null && r !== undefined && r.autoDestroy) || (w !== null && w !== undefined && w.autoDestroy))\n    stream.destroy(err)\n  else if (err) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    err.stack // eslint-disable-line no-unused-expressions\n\n    if (w && !w.errored) {\n      w.errored = err\n    }\n    if (r && !r.errored) {\n      r.errored = err\n    }\n    if (sync) {\n      process.nextTick(emitErrorNT, stream, err)\n    } else {\n      emitErrorNT(stream, err)\n    }\n  }\n}\nfunction construct(stream, cb) {\n  if (typeof stream._construct !== 'function') {\n    return\n  }\n  const r = stream._readableState\n  const w = stream._writableState\n  if (r) {\n    r.constructed = false\n  }\n  if (w) {\n    w.constructed = false\n  }\n  stream.once(kConstruct, cb)\n  if (stream.listenerCount(kConstruct) > 1) {\n    // Duplex\n    return\n  }\n  process.nextTick(constructNT, stream)\n}\nfunction constructNT(stream) {\n  let called = false\n  function onConstruct(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : new ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    const r = stream._readableState\n    const w = stream._writableState\n    const s = w || r\n    if (r) {\n      r.constructed = true\n    }\n    if (w) {\n      w.constructed = true\n    }\n    if (s.destroyed) {\n      stream.emit(kDestroy, err)\n    } else if (err) {\n      errorOrDestroy(stream, err, true)\n    } else {\n      process.nextTick(emitConstructNT, stream)\n    }\n  }\n  try {\n    stream._construct((err) => {\n      process.nextTick(onConstruct, err)\n    })\n  } catch (err) {\n    process.nextTick(onConstruct, err)\n  }\n}\nfunction emitConstructNT(stream) {\n  stream.emit(kConstruct)\n}\nfunction isRequest(stream) {\n  return (stream === null || stream === undefined ? undefined : stream.setHeader) && typeof stream.abort === 'function'\n}\nfunction emitCloseLegacy(stream) {\n  stream.emit('close')\n}\nfunction emitErrorCloseLegacy(stream, err) {\n  stream.emit('error', err)\n  process.nextTick(emitCloseLegacy, stream)\n}\n\n// Normalize destroy for legacy.\nfunction destroyer(stream, err) {\n  if (!stream || isDestroyed(stream)) {\n    return\n  }\n  if (!err && !isFinished(stream)) {\n    err = new AbortError()\n  }\n\n  // TODO: Remove isRequest branches.\n  if (isServerRequest(stream)) {\n    stream.socket = null\n    stream.destroy(err)\n  } else if (isRequest(stream)) {\n    stream.abort()\n  } else if (isRequest(stream.req)) {\n    stream.req.abort()\n  } else if (typeof stream.destroy === 'function') {\n    stream.destroy(err)\n  } else if (typeof stream.close === 'function') {\n    // TODO: Don't lose err?\n    stream.close()\n  } else if (err) {\n    process.nextTick(emitErrorCloseLegacy, stream, err)\n  } else {\n    process.nextTick(emitCloseLegacy, stream)\n  }\n  if (!stream.destroyed) {\n    stream[kIsDestroyed] = true\n  }\n}\nmodule.exports = {\n  construct,\n  destroyer,\n  destroy,\n  undestroy,\n  errorOrDestroy\n}\n","'use strict'\n\nconst { ArrayIsArray, ObjectSetPrototypeOf } = require('../../ours/primordials')\nconst { EventEmitter: EE } = require('events')\nfunction Stream(opts) {\n  EE.call(this, opts)\n}\nObjectSetPrototypeOf(Stream.prototype, EE.prototype)\nObjectSetPrototypeOf(Stream, EE)\nStream.prototype.pipe = function (dest, options) {\n  const source = this\n  function ondata(chunk) {\n    if (dest.writable && dest.write(chunk) === false && source.pause) {\n      source.pause()\n    }\n  }\n  source.on('data', ondata)\n  function ondrain() {\n    if (source.readable && source.resume) {\n      source.resume()\n    }\n  }\n  dest.on('drain', ondrain)\n\n  // If the 'end' option is not supplied, dest.end() will be called when\n  // source gets the 'end' or 'close' events.  Only dest.end() once.\n  if (!dest._isStdio && (!options || options.end !== false)) {\n    source.on('end', onend)\n    source.on('close', onclose)\n  }\n  let didOnEnd = false\n  function onend() {\n    if (didOnEnd) return\n    didOnEnd = true\n    dest.end()\n  }\n  function onclose() {\n    if (didOnEnd) return\n    didOnEnd = true\n    if (typeof dest.destroy === 'function') dest.destroy()\n  }\n\n  // Don't leave dangling pipes when there are errors.\n  function onerror(er) {\n    cleanup()\n    if (EE.listenerCount(this, 'error') === 0) {\n      this.emit('error', er)\n    }\n  }\n  prependListener(source, 'error', onerror)\n  prependListener(dest, 'error', onerror)\n\n  // Remove all the event listeners that were added.\n  function cleanup() {\n    source.removeListener('data', ondata)\n    dest.removeListener('drain', ondrain)\n    source.removeListener('end', onend)\n    source.removeListener('close', onclose)\n    source.removeListener('error', onerror)\n    dest.removeListener('error', onerror)\n    source.removeListener('end', cleanup)\n    source.removeListener('close', cleanup)\n    dest.removeListener('close', cleanup)\n  }\n  source.on('end', cleanup)\n  source.on('close', cleanup)\n  dest.on('close', cleanup)\n  dest.emit('pipe', source)\n\n  // Allow for unix-like usage: A.pipe(B).pipe(C)\n  return dest\n}\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn)\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn)\n  else if (ArrayIsArray(emitter._events[event])) emitter._events[event].unshift(fn)\n  else emitter._events[event] = [fn, emitter._events[event]]\n}\nmodule.exports = {\n  Stream,\n  prependListener\n}\n","'use strict'\n\nconst { SymbolDispose } = require('../../ours/primordials')\nconst { AbortError, codes } = require('../../ours/errors')\nconst { isNodeStream, isWebStream, kControllerErrorFunction } = require('./utils')\nconst eos = require('./end-of-stream')\nconst { ERR_INVALID_ARG_TYPE } = codes\nlet addAbortListener\n\n// This method is inlined here for readable-stream\n// It also does not allow for signal to not exist on the stream\n// https://github.com/nodejs/node/pull/36061#discussion_r533718029\nconst validateAbortSignal = (signal, name) => {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    throw new ERR_INVALID_ARG_TYPE(name, 'AbortSignal', signal)\n  }\n}\nmodule.exports.addAbortSignal = function addAbortSignal(signal, stream) {\n  validateAbortSignal(signal, 'signal')\n  if (!isNodeStream(stream) && !isWebStream(stream)) {\n    throw new ERR_INVALID_ARG_TYPE('stream', ['ReadableStream', 'WritableStream', 'Stream'], stream)\n  }\n  return module.exports.addAbortSignalNoValidate(signal, stream)\n}\nmodule.exports.addAbortSignalNoValidate = function (signal, stream) {\n  if (typeof signal !== 'object' || !('aborted' in signal)) {\n    return stream\n  }\n  const onAbort = isNodeStream(stream)\n    ? () => {\n        stream.destroy(\n          new AbortError(undefined, {\n            cause: signal.reason\n          })\n        )\n      }\n    : () => {\n        stream[kControllerErrorFunction](\n          new AbortError(undefined, {\n            cause: signal.reason\n          })\n        )\n      }\n  if (signal.aborted) {\n    onAbort()\n  } else {\n    addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n    const disposable = addAbortListener(signal, onAbort)\n    eos(stream, disposable[SymbolDispose])\n  }\n  return stream\n}\n","'use strict'\n\nconst { StringPrototypeSlice, SymbolIterator, TypedArrayPrototypeSet, Uint8Array } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { inspect } = require('../../ours/util')\nmodule.exports = class BufferList {\n  constructor() {\n    this.head = null\n    this.tail = null\n    this.length = 0\n  }\n  push(v) {\n    const entry = {\n      data: v,\n      next: null\n    }\n    if (this.length > 0) this.tail.next = entry\n    else this.head = entry\n    this.tail = entry\n    ++this.length\n  }\n  unshift(v) {\n    const entry = {\n      data: v,\n      next: this.head\n    }\n    if (this.length === 0) this.tail = entry\n    this.head = entry\n    ++this.length\n  }\n  shift() {\n    if (this.length === 0) return\n    const ret = this.head.data\n    if (this.length === 1) this.head = this.tail = null\n    else this.head = this.head.next\n    --this.length\n    return ret\n  }\n  clear() {\n    this.head = this.tail = null\n    this.length = 0\n  }\n  join(s) {\n    if (this.length === 0) return ''\n    let p = this.head\n    let ret = '' + p.data\n    while ((p = p.next) !== null) ret += s + p.data\n    return ret\n  }\n  concat(n) {\n    if (this.length === 0) return Buffer.alloc(0)\n    const ret = Buffer.allocUnsafe(n >>> 0)\n    let p = this.head\n    let i = 0\n    while (p) {\n      TypedArrayPrototypeSet(ret, p.data, i)\n      i += p.data.length\n      p = p.next\n    }\n    return ret\n  }\n\n  // Consumes a specified amount of bytes or characters from the buffered data.\n  consume(n, hasStrings) {\n    const data = this.head.data\n    if (n < data.length) {\n      // `slice` is the same for buffers and strings.\n      const slice = data.slice(0, n)\n      this.head.data = data.slice(n)\n      return slice\n    }\n    if (n === data.length) {\n      // First chunk is a perfect match.\n      return this.shift()\n    }\n    // Result spans more than one buffer.\n    return hasStrings ? this._getString(n) : this._getBuffer(n)\n  }\n  first() {\n    return this.head.data\n  }\n  *[SymbolIterator]() {\n    for (let p = this.head; p; p = p.next) {\n      yield p.data\n    }\n  }\n\n  // Consumes a specified amount of characters from the buffered data.\n  _getString(n) {\n    let ret = ''\n    let p = this.head\n    let c = 0\n    do {\n      const str = p.data\n      if (n > str.length) {\n        ret += str\n        n -= str.length\n      } else {\n        if (n === str.length) {\n          ret += str\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          ret += StringPrototypeSlice(str, 0, n)\n          this.head = p\n          p.data = StringPrototypeSlice(str, n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Consumes a specified amount of bytes from the buffered data.\n  _getBuffer(n) {\n    const ret = Buffer.allocUnsafe(n)\n    const retLen = n\n    let p = this.head\n    let c = 0\n    do {\n      const buf = p.data\n      if (n > buf.length) {\n        TypedArrayPrototypeSet(ret, buf, retLen - n)\n        n -= buf.length\n      } else {\n        if (n === buf.length) {\n          TypedArrayPrototypeSet(ret, buf, retLen - n)\n          ++c\n          if (p.next) this.head = p.next\n          else this.head = this.tail = null\n        } else {\n          TypedArrayPrototypeSet(ret, new Uint8Array(buf.buffer, buf.byteOffset, n), retLen - n)\n          this.head = p\n          p.data = buf.slice(n)\n        }\n        break\n      }\n      ++c\n    } while ((p = p.next) !== null)\n    this.length -= c\n    return ret\n  }\n\n  // Make sure the linked list only shows the minimal necessary information.\n  [Symbol.for('nodejs.util.inspect.custom')](_, options) {\n    return inspect(this, {\n      ...options,\n      // Only inspect one level.\n      depth: 0,\n      // It should not recurse.\n      customInspect: false\n    })\n  }\n}\n","'use strict'\n\nconst { MathFloor, NumberIsInteger } = require('../../ours/primordials')\nconst { validateInteger } = require('../validators')\nconst { ERR_INVALID_ARG_VALUE } = require('../../ours/errors').codes\nlet defaultHighWaterMarkBytes = 16 * 1024\nlet defaultHighWaterMarkObjectMode = 16\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null\n}\nfunction getDefaultHighWaterMark(objectMode) {\n  return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes\n}\nfunction setDefaultHighWaterMark(objectMode, value) {\n  validateInteger(value, 'value', 0)\n  if (objectMode) {\n    defaultHighWaterMarkObjectMode = value\n  } else {\n    defaultHighWaterMarkBytes = value\n  }\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  const hwm = highWaterMarkFrom(options, isDuplex, duplexKey)\n  if (hwm != null) {\n    if (!NumberIsInteger(hwm) || hwm < 0) {\n      const name = isDuplex ? `options.${duplexKey}` : 'options.highWaterMark'\n      throw new ERR_INVALID_ARG_VALUE(name, hwm)\n    }\n    return MathFloor(hwm)\n  }\n\n  // Default value\n  return getDefaultHighWaterMark(state.objectMode)\n}\nmodule.exports = {\n  getHighWaterMark,\n  getDefaultHighWaterMark,\n  setDefaultHighWaterMark\n}\n","'use strict'\n\n/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\nconst { PromisePrototypeThen, SymbolAsyncIterator, SymbolIterator } = require('../../ours/primordials')\nconst { Buffer } = require('buffer')\nconst { ERR_INVALID_ARG_TYPE, ERR_STREAM_NULL_VALUES } = require('../../ours/errors').codes\nfunction from(Readable, iterable, opts) {\n  let iterator\n  if (typeof iterable === 'string' || iterable instanceof Buffer) {\n    return new Readable({\n      objectMode: true,\n      ...opts,\n      read() {\n        this.push(iterable)\n        this.push(null)\n      }\n    })\n  }\n  let isAsync\n  if (iterable && iterable[SymbolAsyncIterator]) {\n    isAsync = true\n    iterator = iterable[SymbolAsyncIterator]()\n  } else if (iterable && iterable[SymbolIterator]) {\n    isAsync = false\n    iterator = iterable[SymbolIterator]()\n  } else {\n    throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable)\n  }\n  const readable = new Readable({\n    objectMode: true,\n    highWaterMark: 1,\n    // TODO(ronag): What options should be allowed?\n    ...opts\n  })\n\n  // Flag to protect against _read\n  // being called before last iteration completion.\n  let reading = false\n  readable._read = function () {\n    if (!reading) {\n      reading = true\n      next()\n    }\n  }\n  readable._destroy = function (error, cb) {\n    PromisePrototypeThen(\n      close(error),\n      () => process.nextTick(cb, error),\n      // nextTick is here in case cb throws\n      (e) => process.nextTick(cb, e || error)\n    )\n  }\n  async function close(error) {\n    const hadError = error !== undefined && error !== null\n    const hasThrow = typeof iterator.throw === 'function'\n    if (hadError && hasThrow) {\n      const { value, done } = await iterator.throw(error)\n      await value\n      if (done) {\n        return\n      }\n    }\n    if (typeof iterator.return === 'function') {\n      const { value } = await iterator.return()\n      await value\n    }\n  }\n  async function next() {\n    for (;;) {\n      try {\n        const { value, done } = isAsync ? await iterator.next() : iterator.next()\n        if (done) {\n          readable.push(null)\n        } else {\n          const res = value && typeof value.then === 'function' ? await value : value\n          if (res === null) {\n            reading = false\n            throw new ERR_STREAM_NULL_VALUES()\n          } else if (readable.push(res)) {\n            continue\n          } else {\n            reading = false\n          }\n        }\n      } catch (err) {\n        readable.destroy(err)\n      }\n      break\n    }\n  }\n  return readable\n}\nmodule.exports = from\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst {\n  ArrayPrototypeIndexOf,\n  NumberIsInteger,\n  NumberIsNaN,\n  NumberParseInt,\n  ObjectDefineProperties,\n  ObjectKeys,\n  ObjectSetPrototypeOf,\n  Promise,\n  SafeSet,\n  SymbolAsyncDispose,\n  SymbolAsyncIterator,\n  Symbol\n} = require('../../ours/primordials')\nmodule.exports = Readable\nReadable.ReadableState = ReadableState\nconst { EventEmitter: EE } = require('events')\nconst { Stream, prependListener } = require('./legacy')\nconst { Buffer } = require('buffer')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst eos = require('./end-of-stream')\nlet debug = require('../../ours/util').debuglog('stream', (fn) => {\n  debug = fn\n})\nconst BufferList = require('./buffer_list')\nconst destroyImpl = require('./destroy')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_METHOD_NOT_IMPLEMENTED,\n    ERR_OUT_OF_RANGE,\n    ERR_STREAM_PUSH_AFTER_EOF,\n    ERR_STREAM_UNSHIFT_AFTER_END_EVENT\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateObject } = require('../validators')\nconst kPaused = Symbol('kPaused')\nconst { StringDecoder } = require('string_decoder')\nconst from = require('./from')\nObjectSetPrototypeOf(Readable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Readable, Stream)\nconst nop = () => {}\nconst { errorOrDestroy } = destroyImpl\nconst kObjectMode = 1 << 0\nconst kEnded = 1 << 1\nconst kEndEmitted = 1 << 2\nconst kReading = 1 << 3\nconst kConstructed = 1 << 4\nconst kSync = 1 << 5\nconst kNeedReadable = 1 << 6\nconst kEmittedReadable = 1 << 7\nconst kReadableListening = 1 << 8\nconst kResumeScheduled = 1 << 9\nconst kErrorEmitted = 1 << 10\nconst kEmitClose = 1 << 11\nconst kAutoDestroy = 1 << 12\nconst kDestroyed = 1 << 13\nconst kClosed = 1 << 14\nconst kCloseEmitted = 1 << 15\nconst kMultiAwaitDrain = 1 << 16\nconst kReadingMore = 1 << 17\nconst kDataEmitted = 1 << 18\n\n// TODO(benjamingr) it is likely slower to do it this way than with free functions\nfunction makeBitMapDescriptor(bit) {\n  return {\n    enumerable: false,\n    get() {\n      return (this.state & bit) !== 0\n    },\n    set(value) {\n      if (value) this.state |= bit\n      else this.state &= ~bit\n    }\n  }\n}\nObjectDefineProperties(ReadableState.prototype, {\n  objectMode: makeBitMapDescriptor(kObjectMode),\n  ended: makeBitMapDescriptor(kEnded),\n  endEmitted: makeBitMapDescriptor(kEndEmitted),\n  reading: makeBitMapDescriptor(kReading),\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  constructed: makeBitMapDescriptor(kConstructed),\n  // A flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  sync: makeBitMapDescriptor(kSync),\n  // Whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  needReadable: makeBitMapDescriptor(kNeedReadable),\n  emittedReadable: makeBitMapDescriptor(kEmittedReadable),\n  readableListening: makeBitMapDescriptor(kReadableListening),\n  resumeScheduled: makeBitMapDescriptor(kResumeScheduled),\n  // True if the error was already emitted and should not be thrown again.\n  errorEmitted: makeBitMapDescriptor(kErrorEmitted),\n  emitClose: makeBitMapDescriptor(kEmitClose),\n  autoDestroy: makeBitMapDescriptor(kAutoDestroy),\n  // Has it been destroyed.\n  destroyed: makeBitMapDescriptor(kDestroyed),\n  // Indicates whether the stream has finished destroying.\n  closed: makeBitMapDescriptor(kClosed),\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  closeEmitted: makeBitMapDescriptor(kCloseEmitted),\n  multiAwaitDrain: makeBitMapDescriptor(kMultiAwaitDrain),\n  // If true, a maybeReadMore has been scheduled.\n  readingMore: makeBitMapDescriptor(kReadingMore),\n  dataEmitted: makeBitMapDescriptor(kDataEmitted)\n})\nfunction ReadableState(options, stream, isDuplex) {\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Bit map field to store ReadableState more effciently with 1 bit per field\n  // instead of a V8 slot per field.\n  this.state = kEmitClose | kAutoDestroy | kConstructed | kSync\n  // Object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away.\n  if (options && options.objectMode) this.state |= kObjectMode\n  if (isDuplex && options && options.readableObjectMode) this.state |= kObjectMode\n\n  // The point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift().\n  this.buffer = new BufferList()\n  this.length = 0\n  this.pipes = []\n  this.flowing = null\n  this[kPaused] = null\n\n  // Should close be emitted on destroy. Defaults to true.\n  if (options && options.emitClose === false) this.state &= ~kEmitClose\n\n  // Should .destroy() be called after 'end' (and potentially 'finish').\n  if (options && options.autoDestroy === false) this.state &= ~kAutoDestroy\n\n  // Indicates whether the stream has errored. When true no further\n  // _read calls, 'data' or 'readable' events should occur. This is needed\n  // since when autoDestroy is disabled we need a way to tell whether the\n  // stream has failed.\n  this.errored = null\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Ref the piped dest which we need a drain event on it\n  // type: null | Writable | Set<Writable>.\n  this.awaitDrainWriters = null\n  this.decoder = null\n  this.encoding = null\n  if (options && options.encoding) {\n    this.decoder = new StringDecoder(options.encoding)\n    this.encoding = options.encoding\n  }\n}\nfunction Readable(options) {\n  if (!(this instanceof Readable)) return new Readable(options)\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  this._readableState = new ReadableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal && !isDuplex) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    if (this._readableState.needReadable) {\n      maybeReadMore(this, this._readableState)\n    }\n  })\n}\nReadable.prototype.destroy = destroyImpl.destroy\nReadable.prototype._undestroy = destroyImpl.undestroy\nReadable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nReadable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nReadable.prototype[SymbolAsyncDispose] = function () {\n  let error\n  if (!this.destroyed) {\n    error = this.readableEnded ? null : new AbortError()\n    this.destroy(error)\n  }\n  return new Promise((resolve, reject) => eos(this, (err) => (err && err !== error ? reject(err) : resolve(null))))\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, false)\n}\n\n// Unshift should *always* be something directly out of read().\nReadable.prototype.unshift = function (chunk, encoding) {\n  return readableAddChunk(this, chunk, encoding, true)\n}\nfunction readableAddChunk(stream, chunk, encoding, addToFront) {\n  debug('readableAddChunk', chunk)\n  const state = stream._readableState\n  let err\n  if ((state.state & kObjectMode) === 0) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding\n      if (state.encoding !== encoding) {\n        if (addToFront && state.encoding) {\n          // When unshifting, if state.encoding is set, we have to save\n          // the string in the BufferList with the state encoding.\n          chunk = Buffer.from(chunk, encoding).toString(state.encoding)\n        } else {\n          chunk = Buffer.from(chunk, encoding)\n          encoding = ''\n        }\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = ''\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = ''\n    } else if (chunk != null) {\n      err = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  if (err) {\n    errorOrDestroy(stream, err)\n  } else if (chunk === null) {\n    state.state &= ~kReading\n    onEofChunk(stream, state)\n  } else if ((state.state & kObjectMode) !== 0 || (chunk && chunk.length > 0)) {\n    if (addToFront) {\n      if ((state.state & kEndEmitted) !== 0) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT())\n      else if (state.destroyed || state.errored) return false\n      else addChunk(stream, state, chunk, true)\n    } else if (state.ended) {\n      errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF())\n    } else if (state.destroyed || state.errored) {\n      return false\n    } else {\n      state.state &= ~kReading\n      if (state.decoder && !encoding) {\n        chunk = state.decoder.write(chunk)\n        if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false)\n        else maybeReadMore(stream, state)\n      } else {\n        addChunk(stream, state, chunk, false)\n      }\n    }\n  } else if (!addToFront) {\n    state.state &= ~kReading\n    maybeReadMore(stream, state)\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0)\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync && stream.listenerCount('data') > 0) {\n    // Use the guard to avoid creating `Set()` repeatedly\n    // when we have multiple pipes.\n    if ((state.state & kMultiAwaitDrain) !== 0) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n    state.dataEmitted = true\n    stream.emit('data', chunk)\n  } else {\n    // Update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length\n    if (addToFront) state.buffer.unshift(chunk)\n    else state.buffer.push(chunk)\n    if ((state.state & kNeedReadable) !== 0) emitReadable(stream)\n  }\n  maybeReadMore(stream, state)\n}\nReadable.prototype.isPaused = function () {\n  const state = this._readableState\n  return state[kPaused] === true || state.flowing === false\n}\n\n// Backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  const decoder = new StringDecoder(enc)\n  this._readableState.decoder = decoder\n  // If setEncoding(null), decoder.encoding equals utf8.\n  this._readableState.encoding = this._readableState.decoder.encoding\n  const buffer = this._readableState.buffer\n  // Iterate over current buffer to convert already stored Buffers:\n  let content = ''\n  for (const data of buffer) {\n    content += decoder.write(data)\n  }\n  buffer.clear()\n  if (content !== '') buffer.push(content)\n  this._readableState.length = content.length\n  return this\n}\n\n// Don't raise the hwm > 1GB.\nconst MAX_HWM = 0x40000000\nfunction computeNewHighWaterMark(n) {\n  if (n > MAX_HWM) {\n    throw new ERR_OUT_OF_RANGE('size', '<= 1GiB', n)\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts.\n    n--\n    n |= n >>> 1\n    n |= n >>> 2\n    n |= n >>> 4\n    n |= n >>> 8\n    n |= n >>> 16\n    n++\n  }\n  return n\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || (state.length === 0 && state.ended)) return 0\n  if ((state.state & kObjectMode) !== 0) return 1\n  if (NumberIsNaN(n)) {\n    // Only flow one buffer at a time.\n    if (state.flowing && state.length) return state.buffer.first().length\n    return state.length\n  }\n  if (n <= state.length) return n\n  return state.ended ? state.length : 0\n}\n\n// You can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n)\n  // Same as parseInt(undefined, 10), however V8 7.3 performance regressed\n  // in this scenario, so we are doing it manually.\n  if (n === undefined) {\n    n = NaN\n  } else if (!NumberIsInteger(n)) {\n    n = NumberParseInt(n, 10)\n  }\n  const state = this._readableState\n  const nOrig = n\n\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n)\n  if (n !== 0) state.state &= ~kEmittedReadable\n\n  // If we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (\n    n === 0 &&\n    state.needReadable &&\n    ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)\n  ) {\n    debug('read: emitReadable', state.length, state.ended)\n    if (state.length === 0 && state.ended) endReadable(this)\n    else emitReadable(this)\n    return null\n  }\n  n = howMuchToRead(n, state)\n\n  // If we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this)\n    return null\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  let doRead = (state.state & kNeedReadable) !== 0\n  debug('need readable', doRead)\n\n  // If we currently have less than the highWaterMark, then also read some.\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true\n    debug('length less than watermark', doRead)\n  }\n\n  // However, if we've ended, then there's no point, if we're already\n  // reading, then it's unnecessary, if we're constructing we have to wait,\n  // and if we're destroyed or errored, then it's not allowed,\n  if (state.ended || state.reading || state.destroyed || state.errored || !state.constructed) {\n    doRead = false\n    debug('reading, ended or constructing', doRead)\n  } else if (doRead) {\n    debug('do read')\n    state.state |= kReading | kSync\n    // If the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.state |= kNeedReadable\n\n    // Call internal read method\n    try {\n      this._read(state.highWaterMark)\n    } catch (err) {\n      errorOrDestroy(this, err)\n    }\n    state.state &= ~kSync\n\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state)\n  }\n  let ret\n  if (n > 0) ret = fromList(n, state)\n  else ret = null\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark\n    n = 0\n  } else {\n    state.length -= n\n    if (state.multiAwaitDrain) {\n      state.awaitDrainWriters.clear()\n    } else {\n      state.awaitDrainWriters = null\n    }\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this)\n  }\n  if (ret !== null && !state.errorEmitted && !state.closeEmitted) {\n    state.dataEmitted = true\n    this.emit('data', ret)\n  }\n  return ret\n}\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk')\n  if (state.ended) return\n  if (state.decoder) {\n    const chunk = state.decoder.end()\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk)\n      state.length += state.objectMode ? 1 : chunk.length\n    }\n  }\n  state.ended = true\n  if (state.sync) {\n    // If we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call.\n    emitReadable(stream)\n  } else {\n    // Emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false\n    state.emittedReadable = true\n    // We have to emit readable now that we are EOF. Modules\n    // in the ecosystem (e.g. dicer) rely on this event being sync.\n    emitReadable_(stream)\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  const state = stream._readableState\n  debug('emitReadable', state.needReadable, state.emittedReadable)\n  state.needReadable = false\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing)\n    state.emittedReadable = true\n    process.nextTick(emitReadable_, stream)\n  }\n}\nfunction emitReadable_(stream) {\n  const state = stream._readableState\n  debug('emitReadable_', state.destroyed, state.length, state.ended)\n  if (!state.destroyed && !state.errored && (state.length || state.ended)) {\n    stream.emit('readable')\n    state.emittedReadable = false\n  }\n\n  // The stream needs another readable event if:\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark\n  flow(stream)\n}\n\n// At this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore && state.constructed) {\n    state.readingMore = true\n    process.nextTick(maybeReadMore_, stream, state)\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (\n    !state.reading &&\n    !state.ended &&\n    (state.length < state.highWaterMark || (state.flowing && state.length === 0))\n  ) {\n    const len = state.length\n    debug('maybeReadMore read 0')\n    stream.read(0)\n    if (len === state.length)\n      // Didn't get any data, stop spinning.\n      break\n  }\n  state.readingMore = false\n}\n\n// Abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_read()')\n}\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  const src = this\n  const state = this._readableState\n  if (state.pipes.length === 1) {\n    if (!state.multiAwaitDrain) {\n      state.multiAwaitDrain = true\n      state.awaitDrainWriters = new SafeSet(state.awaitDrainWriters ? [state.awaitDrainWriters] : [])\n    }\n  }\n  state.pipes.push(dest)\n  debug('pipe count=%d opts=%j', state.pipes.length, pipeOpts)\n  const doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr\n  const endFn = doEnd ? onend : unpipe\n  if (state.endEmitted) process.nextTick(endFn)\n  else src.once('end', endFn)\n  dest.on('unpipe', onunpipe)\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe')\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true\n        cleanup()\n      }\n    }\n  }\n  function onend() {\n    debug('onend')\n    dest.end()\n  }\n  let ondrain\n  let cleanedUp = false\n  function cleanup() {\n    debug('cleanup')\n    // Cleanup event handlers once the pipe is broken.\n    dest.removeListener('close', onclose)\n    dest.removeListener('finish', onfinish)\n    if (ondrain) {\n      dest.removeListener('drain', ondrain)\n    }\n    dest.removeListener('error', onerror)\n    dest.removeListener('unpipe', onunpipe)\n    src.removeListener('end', onend)\n    src.removeListener('end', unpipe)\n    src.removeListener('data', ondata)\n    cleanedUp = true\n\n    // If the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (ondrain && state.awaitDrainWriters && (!dest._writableState || dest._writableState.needDrain)) ondrain()\n  }\n  function pause() {\n    // If the user unpiped during `dest.write()`, it is possible\n    // to get stuck in a permanently paused state if that write\n    // also returned false.\n    // => Check whether `dest` is still a piping destination.\n    if (!cleanedUp) {\n      if (state.pipes.length === 1 && state.pipes[0] === dest) {\n        debug('false write response, pause', 0)\n        state.awaitDrainWriters = dest\n        state.multiAwaitDrain = false\n      } else if (state.pipes.length > 1 && state.pipes.includes(dest)) {\n        debug('false write response, pause', state.awaitDrainWriters.size)\n        state.awaitDrainWriters.add(dest)\n      }\n      src.pause()\n    }\n    if (!ondrain) {\n      // When the dest drains, it reduces the awaitDrain counter\n      // on the source.  This would be more elegant with a .once()\n      // handler in flow(), but adding and removing repeatedly is\n      // too slow.\n      ondrain = pipeOnDrain(src, dest)\n      dest.on('drain', ondrain)\n    }\n  }\n  src.on('data', ondata)\n  function ondata(chunk) {\n    debug('ondata')\n    const ret = dest.write(chunk)\n    debug('dest.write', ret)\n    if (ret === false) {\n      pause()\n    }\n  }\n\n  // If the dest has an error, then stop piping into it.\n  // However, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er)\n    unpipe()\n    dest.removeListener('error', onerror)\n    if (dest.listenerCount('error') === 0) {\n      const s = dest._writableState || dest._readableState\n      if (s && !s.errorEmitted) {\n        // User incorrectly emitted 'error' directly on the stream.\n        errorOrDestroy(dest, er)\n      } else {\n        dest.emit('error', er)\n      }\n    }\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror)\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish)\n    unpipe()\n  }\n  dest.once('close', onclose)\n  function onfinish() {\n    debug('onfinish')\n    dest.removeListener('close', onclose)\n    unpipe()\n  }\n  dest.once('finish', onfinish)\n  function unpipe() {\n    debug('unpipe')\n    src.unpipe(dest)\n  }\n\n  // Tell the dest that it's being piped to.\n  dest.emit('pipe', src)\n\n  // Start the flow if it hasn't been started already.\n\n  if (dest.writableNeedDrain === true) {\n    pause()\n  } else if (!state.flowing) {\n    debug('pipe resume')\n    src.resume()\n  }\n  return dest\n}\nfunction pipeOnDrain(src, dest) {\n  return function pipeOnDrainFunctionResult() {\n    const state = src._readableState\n\n    // `ondrain` will call directly,\n    // `this` maybe not a reference to dest,\n    // so we use the real dest here.\n    if (state.awaitDrainWriters === dest) {\n      debug('pipeOnDrain', 1)\n      state.awaitDrainWriters = null\n    } else if (state.multiAwaitDrain) {\n      debug('pipeOnDrain', state.awaitDrainWriters.size)\n      state.awaitDrainWriters.delete(dest)\n    }\n    if ((!state.awaitDrainWriters || state.awaitDrainWriters.size === 0) && src.listenerCount('data')) {\n      src.resume()\n    }\n  }\n}\nReadable.prototype.unpipe = function (dest) {\n  const state = this._readableState\n  const unpipeInfo = {\n    hasUnpiped: false\n  }\n\n  // If we're not piping anywhere, then do nothing.\n  if (state.pipes.length === 0) return this\n  if (!dest) {\n    // remove all.\n    const dests = state.pipes\n    state.pipes = []\n    this.pause()\n    for (let i = 0; i < dests.length; i++)\n      dests[i].emit('unpipe', this, {\n        hasUnpiped: false\n      })\n    return this\n  }\n\n  // Try to find the right one.\n  const index = ArrayPrototypeIndexOf(state.pipes, dest)\n  if (index === -1) return this\n  state.pipes.splice(index, 1)\n  if (state.pipes.length === 0) this.pause()\n  dest.emit('unpipe', this, unpipeInfo)\n  return this\n}\n\n// Set up data events if they are asked for\n// Ensure readable listeners eventually get something.\nReadable.prototype.on = function (ev, fn) {\n  const res = Stream.prototype.on.call(this, ev, fn)\n  const state = this._readableState\n  if (ev === 'data') {\n    // Update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0\n\n    // Try start flowing on next tick if stream isn't explicitly paused.\n    if (state.flowing !== false) this.resume()\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true\n      state.flowing = false\n      state.emittedReadable = false\n      debug('on readable', state.length, state.reading)\n      if (state.length) {\n        emitReadable(this)\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this)\n      }\n    }\n  }\n  return res\n}\nReadable.prototype.addListener = Readable.prototype.on\nReadable.prototype.removeListener = function (ev, fn) {\n  const res = Stream.prototype.removeListener.call(this, ev, fn)\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this)\n  }\n  return res\n}\nReadable.prototype.off = Readable.prototype.removeListener\nReadable.prototype.removeAllListeners = function (ev) {\n  const res = Stream.prototype.removeAllListeners.apply(this, arguments)\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this)\n  }\n  return res\n}\nfunction updateReadableListening(self) {\n  const state = self._readableState\n  state.readableListening = self.listenerCount('readable') > 0\n  if (state.resumeScheduled && state[kPaused] === false) {\n    // Flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true\n\n    // Crude way to check if we should resume.\n  } else if (self.listenerCount('data') > 0) {\n    self.resume()\n  } else if (!state.readableListening) {\n    state.flowing = null\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0')\n  self.read(0)\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  const state = this._readableState\n  if (!state.flowing) {\n    debug('resume')\n    // We flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume().\n    state.flowing = !state.readableListening\n    resume(this, state)\n  }\n  state[kPaused] = false\n  return this\n}\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true\n    process.nextTick(resume_, stream, state)\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading)\n  if (!state.reading) {\n    stream.read(0)\n  }\n  state.resumeScheduled = false\n  stream.emit('resume')\n  flow(stream)\n  if (state.flowing && !state.reading) stream.read(0)\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing)\n  if (this._readableState.flowing !== false) {\n    debug('pause')\n    this._readableState.flowing = false\n    this.emit('pause')\n  }\n  this._readableState[kPaused] = true\n  return this\n}\nfunction flow(stream) {\n  const state = stream._readableState\n  debug('flow', state.flowing)\n  while (state.flowing && stream.read() !== null);\n}\n\n// Wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  let paused = false\n\n  // TODO (ronag): Should this.destroy(err) emit\n  // 'error' on the wrapped stream? Would require\n  // a static factory method, e.g. Readable.wrap(stream).\n\n  stream.on('data', (chunk) => {\n    if (!this.push(chunk) && stream.pause) {\n      paused = true\n      stream.pause()\n    }\n  })\n  stream.on('end', () => {\n    this.push(null)\n  })\n  stream.on('error', (err) => {\n    errorOrDestroy(this, err)\n  })\n  stream.on('close', () => {\n    this.destroy()\n  })\n  stream.on('destroy', () => {\n    this.destroy()\n  })\n  this._read = () => {\n    if (paused && stream.resume) {\n      paused = false\n      stream.resume()\n    }\n  }\n\n  // Proxy all the other methods. Important when wrapping filters and duplexes.\n  const streamKeys = ObjectKeys(stream)\n  for (let j = 1; j < streamKeys.length; j++) {\n    const i = streamKeys[j]\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = stream[i].bind(stream)\n    }\n  }\n  return this\n}\nReadable.prototype[SymbolAsyncIterator] = function () {\n  return streamToAsyncIterator(this)\n}\nReadable.prototype.iterator = function (options) {\n  if (options !== undefined) {\n    validateObject(options, 'options')\n  }\n  return streamToAsyncIterator(this, options)\n}\nfunction streamToAsyncIterator(stream, options) {\n  if (typeof stream.read !== 'function') {\n    stream = Readable.wrap(stream, {\n      objectMode: true\n    })\n  }\n  const iter = createAsyncIterator(stream, options)\n  iter.stream = stream\n  return iter\n}\nasync function* createAsyncIterator(stream, options) {\n  let callback = nop\n  function next(resolve) {\n    if (this === stream) {\n      callback()\n      callback = nop\n    } else {\n      callback = resolve\n    }\n  }\n  stream.on('readable', next)\n  let error\n  const cleanup = eos(\n    stream,\n    {\n      writable: false\n    },\n    (err) => {\n      error = err ? aggregateTwoErrors(error, err) : null\n      callback()\n      callback = nop\n    }\n  )\n  try {\n    while (true) {\n      const chunk = stream.destroyed ? null : stream.read()\n      if (chunk !== null) {\n        yield chunk\n      } else if (error) {\n        throw error\n      } else if (error === null) {\n        return\n      } else {\n        await new Promise(next)\n      }\n    }\n  } catch (err) {\n    error = aggregateTwoErrors(error, err)\n    throw error\n  } finally {\n    if (\n      (error || (options === null || options === undefined ? undefined : options.destroyOnReturn) !== false) &&\n      (error === undefined || stream._readableState.autoDestroy)\n    ) {\n      destroyImpl.destroyer(stream, null)\n    } else {\n      stream.off('readable', next)\n      cleanup()\n    }\n  }\n}\n\n// Making it explicit these properties are not enumerable\n// because otherwise some prototype manipulation in\n// userland will fail.\nObjectDefineProperties(Readable.prototype, {\n  readable: {\n    __proto__: null,\n    get() {\n      const r = this._readableState\n      // r.readable === false means that this is part of a Duplex stream\n      // where the readable side was disabled upon construction.\n      // Compat. The user might manually disable readable side through\n      // deprecated setter.\n      return !!r && r.readable !== false && !r.destroyed && !r.errorEmitted && !r.endEmitted\n    },\n    set(val) {\n      // Backwards compat.\n      if (this._readableState) {\n        this._readableState.readable = !!val\n      }\n    }\n  },\n  readableDidRead: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.dataEmitted\n    }\n  },\n  readableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._readableState.readable !== false &&\n        (this._readableState.destroyed || this._readableState.errored) &&\n        !this._readableState.endEmitted\n      )\n    }\n  },\n  readableHighWaterMark: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.highWaterMark\n    }\n  },\n  readableBuffer: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState && this._readableState.buffer\n    }\n  },\n  readableFlowing: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return this._readableState.flowing\n    },\n    set: function (state) {\n      if (this._readableState) {\n        this._readableState.flowing = state\n      }\n    }\n  },\n  readableLength: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState.length\n    }\n  },\n  readableObjectMode: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.objectMode : false\n    }\n  },\n  readableEncoding: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.encoding : null\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.errored : null\n    }\n  },\n  closed: {\n    __proto__: null,\n    get() {\n      return this._readableState ? this._readableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.destroyed : false\n    },\n    set(value) {\n      // We ignore the value if the stream\n      // has not been initialized yet.\n      if (!this._readableState) {\n        return\n      }\n\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      this._readableState.destroyed = value\n    }\n  },\n  readableEnded: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._readableState ? this._readableState.endEmitted : false\n    }\n  }\n})\nObjectDefineProperties(ReadableState.prototype, {\n  // Legacy getter for `pipesCount`.\n  pipesCount: {\n    __proto__: null,\n    get() {\n      return this.pipes.length\n    }\n  },\n  // Legacy property for `paused`.\n  paused: {\n    __proto__: null,\n    get() {\n      return this[kPaused] !== false\n    },\n    set(value) {\n      this[kPaused] = !!value\n    }\n  }\n})\n\n// Exposed for testing purposes only.\nReadable._fromList = fromList\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered.\n  if (state.length === 0) return null\n  let ret\n  if (state.objectMode) ret = state.buffer.shift()\n  else if (!n || n >= state.length) {\n    // Read it all, truncate the list.\n    if (state.decoder) ret = state.buffer.join('')\n    else if (state.buffer.length === 1) ret = state.buffer.first()\n    else ret = state.buffer.concat(state.length)\n    state.buffer.clear()\n  } else {\n    // read part of list.\n    ret = state.buffer.consume(n, state.decoder)\n  }\n  return ret\n}\nfunction endReadable(stream) {\n  const state = stream._readableState\n  debug('endReadable', state.endEmitted)\n  if (!state.endEmitted) {\n    state.ended = true\n    process.nextTick(endReadableNT, state, stream)\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length)\n\n  // Check that we didn't get one last unshift.\n  if (!state.errored && !state.closeEmitted && !state.endEmitted && state.length === 0) {\n    state.endEmitted = true\n    stream.emit('end')\n    if (stream.writable && stream.allowHalfOpen === false) {\n      process.nextTick(endWritableNT, stream)\n    } else if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well.\n      const wState = stream._writableState\n      const autoDestroy =\n        !wState ||\n        (wState.autoDestroy &&\n          // We don't expect the writable to ever 'finish'\n          // if writable is explicitly set to false.\n          (wState.finished || wState.writable === false))\n      if (autoDestroy) {\n        stream.destroy()\n      }\n    }\n  }\n}\nfunction endWritableNT(stream) {\n  const writable = stream.writable && !stream.writableEnded && !stream.destroyed\n  if (writable) {\n    stream.end()\n  }\n}\nReadable.from = function (iterable, opts) {\n  return from(Readable, iterable, opts)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nReadable.fromWeb = function (readableStream, options) {\n  return lazyWebStreams().newStreamReadableFromReadableStream(readableStream, options)\n}\nReadable.toWeb = function (streamReadable, options) {\n  return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable, options)\n}\nReadable.wrap = function (src, options) {\n  var _ref, _src$readableObjectMo\n  return new Readable({\n    objectMode:\n      (_ref =\n        (_src$readableObjectMo = src.readableObjectMode) !== null && _src$readableObjectMo !== undefined\n          ? _src$readableObjectMo\n          : src.objectMode) !== null && _ref !== undefined\n        ? _ref\n        : true,\n    ...options,\n    destroy(err, callback) {\n      destroyImpl.destroyer(src, err)\n      callback(err)\n    }\n  }).wrap(src)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n;('use strict')\nconst {\n  ArrayPrototypeSlice,\n  Error,\n  FunctionPrototypeSymbolHasInstance,\n  ObjectDefineProperty,\n  ObjectDefineProperties,\n  ObjectSetPrototypeOf,\n  StringPrototypeToLowerCase,\n  Symbol,\n  SymbolHasInstance\n} = require('../../ours/primordials')\nmodule.exports = Writable\nWritable.WritableState = WritableState\nconst { EventEmitter: EE } = require('events')\nconst Stream = require('./legacy').Stream\nconst { Buffer } = require('buffer')\nconst destroyImpl = require('./destroy')\nconst { addAbortSignal } = require('./add-abort-signal')\nconst { getHighWaterMark, getDefaultHighWaterMark } = require('./state')\nconst {\n  ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED,\n  ERR_STREAM_ALREADY_FINISHED,\n  ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING\n} = require('../../ours/errors').codes\nconst { errorOrDestroy } = destroyImpl\nObjectSetPrototypeOf(Writable.prototype, Stream.prototype)\nObjectSetPrototypeOf(Writable, Stream)\nfunction nop() {}\nconst kOnFinished = Symbol('kOnFinished')\nfunction WritableState(options, stream, isDuplex) {\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof require('./duplex')\n\n  // Object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!(options && options.objectMode)\n  if (isDuplex) this.objectMode = this.objectMode || !!(options && options.writableObjectMode)\n\n  // The point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write().\n  this.highWaterMark = options\n    ? getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex)\n    : getDefaultHighWaterMark(false)\n\n  // if _final has been called.\n  this.finalCalled = false\n\n  // drain event flag.\n  this.needDrain = false\n  // At the start of calling end()\n  this.ending = false\n  // When end() has been called, and returned.\n  this.ended = false\n  // When 'finish' is emitted.\n  this.finished = false\n\n  // Has it been destroyed\n  this.destroyed = false\n\n  // Should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  const noDecode = !!(options && options.decodeStrings === false)\n  this.decodeStrings = !noDecode\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = (options && options.defaultEncoding) || 'utf8'\n\n  // Not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0\n\n  // A flag to see when we're in the middle of a write.\n  this.writing = false\n\n  // When true all writes will be buffered until .uncork() call.\n  this.corked = 0\n\n  // A flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true\n\n  // A flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false\n\n  // The callback that's passed to _write(chunk, cb).\n  this.onwrite = onwrite.bind(undefined, stream)\n\n  // The callback that the user supplies to write(chunk, encoding, cb).\n  this.writecb = null\n\n  // The amount that is being written when _write is called.\n  this.writelen = 0\n\n  // Storage for data passed to the afterWrite() callback in case of\n  // synchronous _write() completion.\n  this.afterWriteTickInfo = null\n  resetBuffer(this)\n\n  // Number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted.\n  this.pendingcb = 0\n\n  // Stream is still being constructed and cannot be\n  // destroyed until construction finished or failed.\n  // Async construction is opt in, therefore we start as\n  // constructed.\n  this.constructed = true\n\n  // Emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams.\n  this.prefinished = false\n\n  // True if the error was already emitted and should not be thrown again.\n  this.errorEmitted = false\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = !options || options.emitClose !== false\n\n  // Should .destroy() be called after 'finish' (and potentially 'end').\n  this.autoDestroy = !options || options.autoDestroy !== false\n\n  // Indicates whether the stream has errored. When true all write() calls\n  // should return false. This is needed since when autoDestroy\n  // is disabled we need a way to tell whether the stream has failed.\n  this.errored = null\n\n  // Indicates whether the stream has finished destroying.\n  this.closed = false\n\n  // True if close has been emitted or would have been emitted\n  // depending on emitClose.\n  this.closeEmitted = false\n  this[kOnFinished] = []\n}\nfunction resetBuffer(state) {\n  state.buffered = []\n  state.bufferedIndex = 0\n  state.allBuffers = true\n  state.allNoop = true\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  return ArrayPrototypeSlice(this.buffered, this.bufferedIndex)\n}\nObjectDefineProperty(WritableState.prototype, 'bufferedRequestCount', {\n  __proto__: null,\n  get() {\n    return this.buffered.length - this.bufferedIndex\n  }\n})\nfunction Writable(options) {\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5.\n  const isDuplex = this instanceof require('./duplex')\n  if (!isDuplex && !FunctionPrototypeSymbolHasInstance(Writable, this)) return new Writable(options)\n  this._writableState = new WritableState(options, this, isDuplex)\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write\n    if (typeof options.writev === 'function') this._writev = options.writev\n    if (typeof options.destroy === 'function') this._destroy = options.destroy\n    if (typeof options.final === 'function') this._final = options.final\n    if (typeof options.construct === 'function') this._construct = options.construct\n    if (options.signal) addAbortSignal(options.signal, this)\n  }\n  Stream.call(this, options)\n  destroyImpl.construct(this, () => {\n    const state = this._writableState\n    if (!state.writing) {\n      clearBuffer(this, state)\n    }\n    finishMaybe(this, state)\n  })\n}\nObjectDefineProperty(Writable, SymbolHasInstance, {\n  __proto__: null,\n  value: function (object) {\n    if (FunctionPrototypeSymbolHasInstance(this, object)) return true\n    if (this !== Writable) return false\n    return object && object._writableState instanceof WritableState\n  }\n})\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE())\n}\nfunction _write(stream, chunk, encoding, cb) {\n  const state = stream._writableState\n  if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = state.defaultEncoding\n  } else {\n    if (!encoding) encoding = state.defaultEncoding\n    else if (encoding !== 'buffer' && !Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n    if (typeof cb !== 'function') cb = nop\n  }\n  if (chunk === null) {\n    throw new ERR_STREAM_NULL_VALUES()\n  } else if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      if (state.decodeStrings !== false) {\n        chunk = Buffer.from(chunk, encoding)\n        encoding = 'buffer'\n      }\n    } else if (chunk instanceof Buffer) {\n      encoding = 'buffer'\n    } else if (Stream._isUint8Array(chunk)) {\n      chunk = Stream._uint8ArrayToBuffer(chunk)\n      encoding = 'buffer'\n    } else {\n      throw new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk)\n    }\n  }\n  let err\n  if (state.ending) {\n    err = new ERR_STREAM_WRITE_AFTER_END()\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('write')\n  }\n  if (err) {\n    process.nextTick(cb, err)\n    errorOrDestroy(stream, err, true)\n    return err\n  }\n  state.pendingcb++\n  return writeOrBuffer(stream, state, chunk, encoding, cb)\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  return _write(this, chunk, encoding, cb) === true\n}\nWritable.prototype.cork = function () {\n  this._writableState.corked++\n}\nWritable.prototype.uncork = function () {\n  const state = this._writableState\n  if (state.corked) {\n    state.corked--\n    if (!state.writing) clearBuffer(this, state)\n  }\n}\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = StringPrototypeToLowerCase(encoding)\n  if (!Buffer.isEncoding(encoding)) throw new ERR_UNKNOWN_ENCODING(encoding)\n  this._writableState.defaultEncoding = encoding\n  return this\n}\n\n// If we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, callback) {\n  const len = state.objectMode ? 1 : chunk.length\n  state.length += len\n\n  // stream._write resets state.length\n  const ret = state.length < state.highWaterMark\n  // We must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true\n  if (state.writing || state.corked || state.errored || !state.constructed) {\n    state.buffered.push({\n      chunk,\n      encoding,\n      callback\n    })\n    if (state.allBuffers && encoding !== 'buffer') {\n      state.allBuffers = false\n    }\n    if (state.allNoop && callback !== nop) {\n      state.allNoop = false\n    }\n  } else {\n    state.writelen = len\n    state.writecb = callback\n    state.writing = true\n    state.sync = true\n    stream._write(chunk, encoding, state.onwrite)\n    state.sync = false\n  }\n\n  // Return false if errored or destroyed in order to break\n  // any synchronous while(stream.write(data)) loops.\n  return ret && !state.errored && !state.destroyed\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len\n  state.writecb = cb\n  state.writing = true\n  state.sync = true\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'))\n  else if (writev) stream._writev(chunk, state.onwrite)\n  else stream._write(chunk, encoding, state.onwrite)\n  state.sync = false\n}\nfunction onwriteError(stream, state, er, cb) {\n  --state.pendingcb\n  cb(er)\n  // Ensure callbacks are invoked even when autoDestroy is\n  // not enabled. Passing `er` here doesn't make sense since\n  // it's related to one specific write, not to the buffered\n  // writes.\n  errorBuffer(state)\n  // This can emit error, but error must always follow cb.\n  errorOrDestroy(stream, er)\n}\nfunction onwrite(stream, er) {\n  const state = stream._writableState\n  const sync = state.sync\n  const cb = state.writecb\n  if (typeof cb !== 'function') {\n    errorOrDestroy(stream, new ERR_MULTIPLE_CALLBACK())\n    return\n  }\n  state.writing = false\n  state.writecb = null\n  state.length -= state.writelen\n  state.writelen = 0\n  if (er) {\n    // Avoid V8 leak, https://github.com/nodejs/node/pull/34103#issuecomment-652002364\n    er.stack // eslint-disable-line no-unused-expressions\n\n    if (!state.errored) {\n      state.errored = er\n    }\n\n    // In case of duplex streams we need to notify the readable side of the\n    // error.\n    if (stream._readableState && !stream._readableState.errored) {\n      stream._readableState.errored = er\n    }\n    if (sync) {\n      process.nextTick(onwriteError, stream, state, er, cb)\n    } else {\n      onwriteError(stream, state, er, cb)\n    }\n  } else {\n    if (state.buffered.length > state.bufferedIndex) {\n      clearBuffer(stream, state)\n    }\n    if (sync) {\n      // It is a common case that the callback passed to .write() is always\n      // the same. In that case, we do not schedule a new nextTick(), but\n      // rather just increase a counter, to improve performance and avoid\n      // memory allocations.\n      if (state.afterWriteTickInfo !== null && state.afterWriteTickInfo.cb === cb) {\n        state.afterWriteTickInfo.count++\n      } else {\n        state.afterWriteTickInfo = {\n          count: 1,\n          cb,\n          stream,\n          state\n        }\n        process.nextTick(afterWriteTick, state.afterWriteTickInfo)\n      }\n    } else {\n      afterWrite(stream, state, 1, cb)\n    }\n  }\n}\nfunction afterWriteTick({ stream, state, count, cb }) {\n  state.afterWriteTickInfo = null\n  return afterWrite(stream, state, count, cb)\n}\nfunction afterWrite(stream, state, count, cb) {\n  const needDrain = !state.ending && !stream.destroyed && state.length === 0 && state.needDrain\n  if (needDrain) {\n    state.needDrain = false\n    stream.emit('drain')\n  }\n  while (count-- > 0) {\n    state.pendingcb--\n    cb()\n  }\n  if (state.destroyed) {\n    errorBuffer(state)\n  }\n  finishMaybe(stream, state)\n}\n\n// If there's something in the buffer waiting, then invoke callbacks.\nfunction errorBuffer(state) {\n  if (state.writing) {\n    return\n  }\n  for (let n = state.bufferedIndex; n < state.buffered.length; ++n) {\n    var _state$errored\n    const { chunk, callback } = state.buffered[n]\n    const len = state.objectMode ? 1 : chunk.length\n    state.length -= len\n    callback(\n      (_state$errored = state.errored) !== null && _state$errored !== undefined\n        ? _state$errored\n        : new ERR_STREAM_DESTROYED('write')\n    )\n  }\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    var _state$errored2\n    onfinishCallbacks[i](\n      (_state$errored2 = state.errored) !== null && _state$errored2 !== undefined\n        ? _state$errored2\n        : new ERR_STREAM_DESTROYED('end')\n    )\n  }\n  resetBuffer(state)\n}\n\n// If there's something in the buffer waiting, then process it.\nfunction clearBuffer(stream, state) {\n  if (state.corked || state.bufferProcessing || state.destroyed || !state.constructed) {\n    return\n  }\n  const { buffered, bufferedIndex, objectMode } = state\n  const bufferedLength = buffered.length - bufferedIndex\n  if (!bufferedLength) {\n    return\n  }\n  let i = bufferedIndex\n  state.bufferProcessing = true\n  if (bufferedLength > 1 && stream._writev) {\n    state.pendingcb -= bufferedLength - 1\n    const callback = state.allNoop\n      ? nop\n      : (err) => {\n          for (let n = i; n < buffered.length; ++n) {\n            buffered[n].callback(err)\n          }\n        }\n    // Make a copy of `buffered` if it's going to be used by `callback` above,\n    // since `doWrite` will mutate the array.\n    const chunks = state.allNoop && i === 0 ? buffered : ArrayPrototypeSlice(buffered, i)\n    chunks.allBuffers = state.allBuffers\n    doWrite(stream, state, true, state.length, chunks, '', callback)\n    resetBuffer(state)\n  } else {\n    do {\n      const { chunk, encoding, callback } = buffered[i]\n      buffered[i++] = null\n      const len = objectMode ? 1 : chunk.length\n      doWrite(stream, state, false, len, chunk, encoding, callback)\n    } while (i < buffered.length && !state.writing)\n    if (i === buffered.length) {\n      resetBuffer(state)\n    } else if (i > 256) {\n      buffered.splice(0, i)\n      state.bufferedIndex = 0\n    } else {\n      state.bufferedIndex = i\n    }\n  }\n  state.bufferProcessing = false\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  if (this._writev) {\n    this._writev(\n      [\n        {\n          chunk,\n          encoding\n        }\n      ],\n      cb\n    )\n  } else {\n    throw new ERR_METHOD_NOT_IMPLEMENTED('_write()')\n  }\n}\nWritable.prototype._writev = null\nWritable.prototype.end = function (chunk, encoding, cb) {\n  const state = this._writableState\n  if (typeof chunk === 'function') {\n    cb = chunk\n    chunk = null\n    encoding = null\n  } else if (typeof encoding === 'function') {\n    cb = encoding\n    encoding = null\n  }\n  let err\n  if (chunk !== null && chunk !== undefined) {\n    const ret = _write(this, chunk, encoding)\n    if (ret instanceof Error) {\n      err = ret\n    }\n  }\n\n  // .end() fully uncorks.\n  if (state.corked) {\n    state.corked = 1\n    this.uncork()\n  }\n  if (err) {\n    // Do nothing...\n  } else if (!state.errored && !state.ending) {\n    // This is forgiving in terms of unnecessary calls to end() and can hide\n    // logic errors. However, usually such errors are harmless and causing a\n    // hard error can be disproportionately destructive. It is not always\n    // trivial for the user to determine whether end() needs to be called\n    // or not.\n\n    state.ending = true\n    finishMaybe(this, state, true)\n    state.ended = true\n  } else if (state.finished) {\n    err = new ERR_STREAM_ALREADY_FINISHED('end')\n  } else if (state.destroyed) {\n    err = new ERR_STREAM_DESTROYED('end')\n  }\n  if (typeof cb === 'function') {\n    if (err || state.finished) {\n      process.nextTick(cb, err)\n    } else {\n      state[kOnFinished].push(cb)\n    }\n  }\n  return this\n}\nfunction needFinish(state) {\n  return (\n    state.ending &&\n    !state.destroyed &&\n    state.constructed &&\n    state.length === 0 &&\n    !state.errored &&\n    state.buffered.length === 0 &&\n    !state.finished &&\n    !state.writing &&\n    !state.errorEmitted &&\n    !state.closeEmitted\n  )\n}\nfunction callFinal(stream, state) {\n  let called = false\n  function onFinish(err) {\n    if (called) {\n      errorOrDestroy(stream, err !== null && err !== undefined ? err : ERR_MULTIPLE_CALLBACK())\n      return\n    }\n    called = true\n    state.pendingcb--\n    if (err) {\n      const onfinishCallbacks = state[kOnFinished].splice(0)\n      for (let i = 0; i < onfinishCallbacks.length; i++) {\n        onfinishCallbacks[i](err)\n      }\n      errorOrDestroy(stream, err, state.sync)\n    } else if (needFinish(state)) {\n      state.prefinished = true\n      stream.emit('prefinish')\n      // Backwards compat. Don't check state.sync here.\n      // Some streams assume 'finish' will be emitted\n      // asynchronously relative to _final callback.\n      state.pendingcb++\n      process.nextTick(finish, stream, state)\n    }\n  }\n  state.sync = true\n  state.pendingcb++\n  try {\n    stream._final(onFinish)\n  } catch (err) {\n    onFinish(err)\n  }\n  state.sync = false\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.finalCalled = true\n      callFinal(stream, state)\n    } else {\n      state.prefinished = true\n      stream.emit('prefinish')\n    }\n  }\n}\nfunction finishMaybe(stream, state, sync) {\n  if (needFinish(state)) {\n    prefinish(stream, state)\n    if (state.pendingcb === 0) {\n      if (sync) {\n        state.pendingcb++\n        process.nextTick(\n          (stream, state) => {\n            if (needFinish(state)) {\n              finish(stream, state)\n            } else {\n              state.pendingcb--\n            }\n          },\n          stream,\n          state\n        )\n      } else if (needFinish(state)) {\n        state.pendingcb++\n        finish(stream, state)\n      }\n    }\n  }\n}\nfunction finish(stream, state) {\n  state.pendingcb--\n  state.finished = true\n  const onfinishCallbacks = state[kOnFinished].splice(0)\n  for (let i = 0; i < onfinishCallbacks.length; i++) {\n    onfinishCallbacks[i]()\n  }\n  stream.emit('finish')\n  if (state.autoDestroy) {\n    // In case of duplex streams we need a way to detect\n    // if the readable side is ready for autoDestroy as well.\n    const rState = stream._readableState\n    const autoDestroy =\n      !rState ||\n      (rState.autoDestroy &&\n        // We don't expect the readable to ever 'end'\n        // if readable is explicitly set to false.\n        (rState.endEmitted || rState.readable === false))\n    if (autoDestroy) {\n      stream.destroy()\n    }\n  }\n}\nObjectDefineProperties(Writable.prototype, {\n  closed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.closed : false\n    }\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.destroyed : false\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly managing destroyed.\n      if (this._writableState) {\n        this._writableState.destroyed = value\n      }\n    }\n  },\n  writable: {\n    __proto__: null,\n    get() {\n      const w = this._writableState\n      // w.writable === false means that this is part of a Duplex stream\n      // where the writable side was disabled upon construction.\n      // Compat. The user might manually disable writable side through\n      // deprecated setter.\n      return !!w && w.writable !== false && !w.destroyed && !w.errored && !w.ending && !w.ended\n    },\n    set(val) {\n      // Backwards compatible.\n      if (this._writableState) {\n        this._writableState.writable = !!val\n      }\n    }\n  },\n  writableFinished: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.finished : false\n    }\n  },\n  writableObjectMode: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.objectMode : false\n    }\n  },\n  writableBuffer: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.getBuffer()\n    }\n  },\n  writableEnded: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.ending : false\n    }\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    get() {\n      const wState = this._writableState\n      if (!wState) return false\n      return !wState.destroyed && !wState.ending && wState.needDrain\n    }\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.highWaterMark\n    }\n  },\n  writableCorked: {\n    __proto__: null,\n    get() {\n      return this._writableState ? this._writableState.corked : 0\n    }\n  },\n  writableLength: {\n    __proto__: null,\n    get() {\n      return this._writableState && this._writableState.length\n    }\n  },\n  errored: {\n    __proto__: null,\n    enumerable: false,\n    get() {\n      return this._writableState ? this._writableState.errored : null\n    }\n  },\n  writableAborted: {\n    __proto__: null,\n    enumerable: false,\n    get: function () {\n      return !!(\n        this._writableState.writable !== false &&\n        (this._writableState.destroyed || this._writableState.errored) &&\n        !this._writableState.finished\n      )\n    }\n  }\n})\nconst destroy = destroyImpl.destroy\nWritable.prototype.destroy = function (err, cb) {\n  const state = this._writableState\n\n  // Invoke pending callbacks.\n  if (!state.destroyed && (state.bufferedIndex < state.buffered.length || state[kOnFinished].length)) {\n    process.nextTick(errorBuffer, state)\n  }\n  destroy.call(this, err, cb)\n  return this\n}\nWritable.prototype._undestroy = destroyImpl.undestroy\nWritable.prototype._destroy = function (err, cb) {\n  cb(err)\n}\nWritable.prototype[EE.captureRejectionSymbol] = function (err) {\n  this.destroy(err)\n}\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nWritable.fromWeb = function (writableStream, options) {\n  return lazyWebStreams().newStreamWritableFromWritableStream(writableStream, options)\n}\nWritable.toWeb = function (streamWritable) {\n  return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n\n;('use strict')\nconst bufferModule = require('buffer')\nconst {\n  isReadable,\n  isWritable,\n  isIterable,\n  isNodeStream,\n  isReadableNodeStream,\n  isWritableNodeStream,\n  isDuplexNodeStream,\n  isReadableStream,\n  isWritableStream\n} = require('./utils')\nconst eos = require('./end-of-stream')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_RETURN_VALUE }\n} = require('../../ours/errors')\nconst { destroyer } = require('./destroy')\nconst Duplex = require('./duplex')\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nconst { createDeferredPromise } = require('../../ours/util')\nconst from = require('./from')\nconst Blob = globalThis.Blob || bufferModule.Blob\nconst isBlob =\n  typeof Blob !== 'undefined'\n    ? function isBlob(b) {\n        return b instanceof Blob\n      }\n    : function isBlob(b) {\n        return false\n      }\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst { FunctionPrototypeCall } = require('../../ours/primordials')\n\n// This is needed for pre node 17.\nclass Duplexify extends Duplex {\n  constructor(options) {\n    super(options)\n\n    // https://github.com/nodejs/node/pull/34385\n\n    if ((options === null || options === undefined ? undefined : options.readable) === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if ((options === null || options === undefined ? undefined : options.writable) === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  }\n}\nmodule.exports = function duplexify(body, name) {\n  if (isDuplexNodeStream(body)) {\n    return body\n  }\n  if (isReadableNodeStream(body)) {\n    return _duplexify({\n      readable: body\n    })\n  }\n  if (isWritableNodeStream(body)) {\n    return _duplexify({\n      writable: body\n    })\n  }\n  if (isNodeStream(body)) {\n    return _duplexify({\n      writable: false,\n      readable: false\n    })\n  }\n  if (isReadableStream(body)) {\n    return _duplexify({\n      readable: Readable.fromWeb(body)\n    })\n  }\n  if (isWritableStream(body)) {\n    return _duplexify({\n      writable: Writable.fromWeb(body)\n    })\n  }\n  if (typeof body === 'function') {\n    const { value, write, final, destroy } = fromAsyncGen(body)\n    if (isIterable(value)) {\n      return from(Duplexify, value, {\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        write,\n        final,\n        destroy\n      })\n    }\n    const then = value === null || value === undefined ? undefined : value.then\n    if (typeof then === 'function') {\n      let d\n      const promise = FunctionPrototypeCall(\n        then,\n        value,\n        (val) => {\n          if (val != null) {\n            throw new ERR_INVALID_RETURN_VALUE('nully', 'body', val)\n          }\n        },\n        (err) => {\n          destroyer(d, err)\n        }\n      )\n      return (d = new Duplexify({\n        // TODO (ronag): highWaterMark?\n        objectMode: true,\n        readable: false,\n        write,\n        final(cb) {\n          final(async () => {\n            try {\n              await promise\n              process.nextTick(cb, null)\n            } catch (err) {\n              process.nextTick(cb, err)\n            }\n          })\n        },\n        destroy\n      }))\n    }\n    throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or AsyncFunction', name, value)\n  }\n  if (isBlob(body)) {\n    return duplexify(body.arrayBuffer())\n  }\n  if (isIterable(body)) {\n    return from(Duplexify, body, {\n      // TODO (ronag): highWaterMark?\n      objectMode: true,\n      writable: false\n    })\n  }\n  if (\n    isReadableStream(body === null || body === undefined ? undefined : body.readable) &&\n    isWritableStream(body === null || body === undefined ? undefined : body.writable)\n  ) {\n    return Duplexify.fromWeb(body)\n  }\n  if (\n    typeof (body === null || body === undefined ? undefined : body.writable) === 'object' ||\n    typeof (body === null || body === undefined ? undefined : body.readable) === 'object'\n  ) {\n    const readable =\n      body !== null && body !== undefined && body.readable\n        ? isReadableNodeStream(body === null || body === undefined ? undefined : body.readable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.readable\n          : duplexify(body.readable)\n        : undefined\n    const writable =\n      body !== null && body !== undefined && body.writable\n        ? isWritableNodeStream(body === null || body === undefined ? undefined : body.writable)\n          ? body === null || body === undefined\n            ? undefined\n            : body.writable\n          : duplexify(body.writable)\n        : undefined\n    return _duplexify({\n      readable,\n      writable\n    })\n  }\n  const then = body === null || body === undefined ? undefined : body.then\n  if (typeof then === 'function') {\n    let d\n    FunctionPrototypeCall(\n      then,\n      body,\n      (val) => {\n        if (val != null) {\n          d.push(val)\n        }\n        d.push(null)\n      },\n      (err) => {\n        destroyer(d, err)\n      }\n    )\n    return (d = new Duplexify({\n      objectMode: true,\n      writable: false,\n      read() {}\n    }))\n  }\n  throw new ERR_INVALID_ARG_TYPE(\n    name,\n    [\n      'Blob',\n      'ReadableStream',\n      'WritableStream',\n      'Stream',\n      'Iterable',\n      'AsyncIterable',\n      'Function',\n      '{ readable, writable } pair',\n      'Promise'\n    ],\n    body\n  )\n}\nfunction fromAsyncGen(fn) {\n  let { promise, resolve } = createDeferredPromise()\n  const ac = new AbortController()\n  const signal = ac.signal\n  const value = fn(\n    (async function* () {\n      while (true) {\n        const _promise = promise\n        promise = null\n        const { chunk, done, cb } = await _promise\n        process.nextTick(cb)\n        if (done) return\n        if (signal.aborted)\n          throw new AbortError(undefined, {\n            cause: signal.reason\n          })\n        ;({ promise, resolve } = createDeferredPromise())\n        yield chunk\n      }\n    })(),\n    {\n      signal\n    }\n  )\n  return {\n    value,\n    write(chunk, encoding, cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        chunk,\n        done: false,\n        cb\n      })\n    },\n    final(cb) {\n      const _resolve = resolve\n      resolve = null\n      _resolve({\n        done: true,\n        cb\n      })\n    },\n    destroy(err, cb) {\n      ac.abort()\n      cb(err)\n    }\n  }\n}\nfunction _duplexify(pair) {\n  const r = pair.readable && typeof pair.readable.read !== 'function' ? Readable.wrap(pair.readable) : pair.readable\n  const w = pair.writable\n  let readable = !!isReadable(r)\n  let writable = !!isWritable(w)\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    }\n  }\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplexify({\n    // TODO (ronag): highWaterMark?\n    readableObjectMode: !!(r !== null && r !== undefined && r.readableObjectMode),\n    writableObjectMode: !!(w !== null && w !== undefined && w.writableObjectMode),\n    readable,\n    writable\n  })\n  if (writable) {\n    eos(w, (err) => {\n      writable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    d._write = function (chunk, encoding, callback) {\n      if (w.write(chunk, encoding)) {\n        callback()\n      } else {\n        ondrain = callback\n      }\n    }\n    d._final = function (callback) {\n      w.end()\n      onfinish = callback\n    }\n    w.on('drain', function () {\n      if (ondrain) {\n        const cb = ondrain\n        ondrain = null\n        cb()\n      }\n    })\n    w.on('finish', function () {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    eos(r, (err) => {\n      readable = false\n      if (err) {\n        destroyer(r, err)\n      }\n      onfinished(err)\n    })\n    r.on('readable', function () {\n      if (onreadable) {\n        const cb = onreadable\n        onreadable = null\n        cb()\n      }\n    })\n    r.on('end', function () {\n      d.push(null)\n    })\n    d._read = function () {\n      while (true) {\n        const buf = r.read()\n        if (buf === null) {\n          onreadable = d._read\n          return\n        }\n        if (!d.push(buf)) {\n          return\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      destroyer(w, err)\n      destroyer(r, err)\n    }\n  }\n  return d\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototype inheritance, this class\n// prototypically inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict'\n\nconst {\n  ObjectDefineProperties,\n  ObjectGetOwnPropertyDescriptor,\n  ObjectKeys,\n  ObjectSetPrototypeOf\n} = require('../../ours/primordials')\nmodule.exports = Duplex\nconst Readable = require('./readable')\nconst Writable = require('./writable')\nObjectSetPrototypeOf(Duplex.prototype, Readable.prototype)\nObjectSetPrototypeOf(Duplex, Readable)\n{\n  const keys = ObjectKeys(Writable.prototype)\n  // Allow the keys array to be GC'ed.\n  for (let i = 0; i < keys.length; i++) {\n    const method = keys[i]\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options)\n  Readable.call(this, options)\n  Writable.call(this, options)\n  if (options) {\n    this.allowHalfOpen = options.allowHalfOpen !== false\n    if (options.readable === false) {\n      this._readableState.readable = false\n      this._readableState.ended = true\n      this._readableState.endEmitted = true\n    }\n    if (options.writable === false) {\n      this._writableState.writable = false\n      this._writableState.ending = true\n      this._writableState.ended = true\n      this._writableState.finished = true\n    }\n  } else {\n    this.allowHalfOpen = true\n  }\n}\nObjectDefineProperties(Duplex.prototype, {\n  writable: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writable')\n  },\n  writableHighWaterMark: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableHighWaterMark')\n  },\n  writableObjectMode: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableObjectMode')\n  },\n  writableBuffer: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableBuffer')\n  },\n  writableLength: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableLength')\n  },\n  writableFinished: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableFinished')\n  },\n  writableCorked: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableCorked')\n  },\n  writableEnded: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableEnded')\n  },\n  writableNeedDrain: {\n    __proto__: null,\n    ...ObjectGetOwnPropertyDescriptor(Writable.prototype, 'writableNeedDrain')\n  },\n  destroyed: {\n    __proto__: null,\n    get() {\n      if (this._readableState === undefined || this._writableState === undefined) {\n        return false\n      }\n      return this._readableState.destroyed && this._writableState.destroyed\n    },\n    set(value) {\n      // Backward compatibility, the user is explicitly\n      // managing destroyed.\n      if (this._readableState && this._writableState) {\n        this._readableState.destroyed = value\n        this._writableState.destroyed = value\n      }\n    }\n  }\n})\nlet webStreamsAdapters\n\n// Lazy to avoid circular references\nfunction lazyWebStreams() {\n  if (webStreamsAdapters === undefined) webStreamsAdapters = {}\n  return webStreamsAdapters\n}\nDuplex.fromWeb = function (pair, options) {\n  return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair, options)\n}\nDuplex.toWeb = function (duplex) {\n  return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)\n}\nlet duplexify\nDuplex.from = function (body) {\n  if (!duplexify) {\n    duplexify = require('./duplexify')\n  }\n  return duplexify(body, 'body')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf, Symbol } = require('../../ours/primordials')\nmodule.exports = Transform\nconst { ERR_METHOD_NOT_IMPLEMENTED } = require('../../ours/errors').codes\nconst Duplex = require('./duplex')\nconst { getHighWaterMark } = require('./state')\nObjectSetPrototypeOf(Transform.prototype, Duplex.prototype)\nObjectSetPrototypeOf(Transform, Duplex)\nconst kCallback = Symbol('kCallback')\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options)\n\n  // TODO (ronag): This should preferably always be\n  // applied but would be semver-major. Or even better;\n  // make Transform a Readable with the Writable interface.\n  const readableHighWaterMark = options ? getHighWaterMark(this, options, 'readableHighWaterMark', true) : null\n  if (readableHighWaterMark === 0) {\n    // A Duplex will buffer both on the writable and readable side while\n    // a Transform just wants to buffer hwm number of elements. To avoid\n    // buffering twice we disable buffering on the writable side.\n    options = {\n      ...options,\n      highWaterMark: null,\n      readableHighWaterMark,\n      // TODO (ronag): 0 is not optimal since we have\n      // a \"bug\" where we check needDrain before calling _write and not after.\n      // Refs: https://github.com/nodejs/node/pull/32887\n      // Refs: https://github.com/nodejs/node/pull/35941\n      writableHighWaterMark: options.writableHighWaterMark || 0\n    }\n  }\n  Duplex.call(this, options)\n\n  // We have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false\n  this[kCallback] = null\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform\n    if (typeof options.flush === 'function') this._flush = options.flush\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  // Backwards compat. Some Transform streams incorrectly implement _final\n  // instead of or in addition to _flush. By using 'prefinish' instead of\n  // implementing _final we continue supporting this unfortunate use case.\n  this.on('prefinish', prefinish)\n}\nfunction final(cb) {\n  if (typeof this._flush === 'function' && !this.destroyed) {\n    this._flush((er, data) => {\n      if (er) {\n        if (cb) {\n          cb(er)\n        } else {\n          this.destroy(er)\n        }\n        return\n      }\n      if (data != null) {\n        this.push(data)\n      }\n      this.push(null)\n      if (cb) {\n        cb()\n      }\n    })\n  } else {\n    this.push(null)\n    if (cb) {\n      cb()\n    }\n  }\n}\nfunction prefinish() {\n  if (this._final !== final) {\n    final.call(this)\n  }\n}\nTransform.prototype._final = final\nTransform.prototype._transform = function (chunk, encoding, callback) {\n  throw new ERR_METHOD_NOT_IMPLEMENTED('_transform()')\n}\nTransform.prototype._write = function (chunk, encoding, callback) {\n  const rState = this._readableState\n  const wState = this._writableState\n  const length = rState.length\n  this._transform(chunk, encoding, (err, val) => {\n    if (err) {\n      callback(err)\n      return\n    }\n    if (val != null) {\n      this.push(val)\n    }\n    if (\n      wState.ended ||\n      // Backwards compat.\n      length === rState.length ||\n      // Backwards compat.\n      rState.length < rState.highWaterMark\n    ) {\n      callback()\n    } else {\n      this[kCallback] = callback\n    }\n  })\n}\nTransform.prototype._read = function () {\n  if (this[kCallback]) {\n    const callback = this[kCallback]\n    this[kCallback] = null\n    callback()\n  }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict'\n\nconst { ObjectSetPrototypeOf } = require('../../ours/primordials')\nmodule.exports = PassThrough\nconst Transform = require('./transform')\nObjectSetPrototypeOf(PassThrough.prototype, Transform.prototype)\nObjectSetPrototypeOf(PassThrough, Transform)\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options)\n  Transform.call(this, options)\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk)\n}\n","/* replacement start */\n\nconst process = require('process/')\n\n/* replacement end */\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n;('use strict')\nconst { ArrayIsArray, Promise, SymbolAsyncIterator, SymbolDispose } = require('../../ours/primordials')\nconst eos = require('./end-of-stream')\nconst { once } = require('../../ours/util')\nconst destroyImpl = require('./destroy')\nconst Duplex = require('./duplex')\nconst {\n  aggregateTwoErrors,\n  codes: {\n    ERR_INVALID_ARG_TYPE,\n    ERR_INVALID_RETURN_VALUE,\n    ERR_MISSING_ARGS,\n    ERR_STREAM_DESTROYED,\n    ERR_STREAM_PREMATURE_CLOSE\n  },\n  AbortError\n} = require('../../ours/errors')\nconst { validateFunction, validateAbortSignal } = require('../validators')\nconst {\n  isIterable,\n  isReadable,\n  isReadableNodeStream,\n  isNodeStream,\n  isTransformStream,\n  isWebStream,\n  isReadableStream,\n  isReadableFinished\n} = require('./utils')\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nlet PassThrough\nlet Readable\nlet addAbortListener\nfunction destroyer(stream, reading, writing) {\n  let finished = false\n  stream.on('close', () => {\n    finished = true\n  })\n  const cleanup = eos(\n    stream,\n    {\n      readable: reading,\n      writable: writing\n    },\n    (err) => {\n      finished = !err\n    }\n  )\n  return {\n    destroy: (err) => {\n      if (finished) return\n      finished = true\n      destroyImpl.destroyer(stream, err || new ERR_STREAM_DESTROYED('pipe'))\n    },\n    cleanup\n  }\n}\nfunction popCallback(streams) {\n  // Streams should never be an empty array. It should always contain at least\n  // a single stream. Therefore optimize for the average case instead of\n  // checking for length === 0 as well.\n  validateFunction(streams[streams.length - 1], 'streams[stream.length - 1]')\n  return streams.pop()\n}\nfunction makeAsyncIterable(val) {\n  if (isIterable(val)) {\n    return val\n  } else if (isReadableNodeStream(val)) {\n    // Legacy streams are not Iterable.\n    return fromReadable(val)\n  }\n  throw new ERR_INVALID_ARG_TYPE('val', ['Readable', 'Iterable', 'AsyncIterable'], val)\n}\nasync function* fromReadable(val) {\n  if (!Readable) {\n    Readable = require('./readable')\n  }\n  yield* Readable.prototype[SymbolAsyncIterator].call(val)\n}\nasync function pumpToNode(iterable, writable, finish, { end }) {\n  let error\n  let onresolve = null\n  const resume = (err) => {\n    if (err) {\n      error = err\n    }\n    if (onresolve) {\n      const callback = onresolve\n      onresolve = null\n      callback()\n    }\n  }\n  const wait = () =>\n    new Promise((resolve, reject) => {\n      if (error) {\n        reject(error)\n      } else {\n        onresolve = () => {\n          if (error) {\n            reject(error)\n          } else {\n            resolve()\n          }\n        }\n      }\n    })\n  writable.on('drain', resume)\n  const cleanup = eos(\n    writable,\n    {\n      readable: false\n    },\n    resume\n  )\n  try {\n    if (writable.writableNeedDrain) {\n      await wait()\n    }\n    for await (const chunk of iterable) {\n      if (!writable.write(chunk)) {\n        await wait()\n      }\n    }\n    if (end) {\n      writable.end()\n      await wait()\n    }\n    finish()\n  } catch (err) {\n    finish(error !== err ? aggregateTwoErrors(error, err) : err)\n  } finally {\n    cleanup()\n    writable.off('drain', resume)\n  }\n}\nasync function pumpToWeb(readable, writable, finish, { end }) {\n  if (isTransformStream(writable)) {\n    writable = writable.writable\n  }\n  // https://streams.spec.whatwg.org/#example-manual-write-with-backpressure\n  const writer = writable.getWriter()\n  try {\n    for await (const chunk of readable) {\n      await writer.ready\n      writer.write(chunk).catch(() => {})\n    }\n    await writer.ready\n    if (end) {\n      await writer.close()\n    }\n    finish()\n  } catch (err) {\n    try {\n      await writer.abort(err)\n      finish(err)\n    } catch (err) {\n      finish(err)\n    }\n  }\n}\nfunction pipeline(...streams) {\n  return pipelineImpl(streams, once(popCallback(streams)))\n}\nfunction pipelineImpl(streams, callback, opts) {\n  if (streams.length === 1 && ArrayIsArray(streams[0])) {\n    streams = streams[0]\n  }\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  const outerSignal = opts === null || opts === undefined ? undefined : opts.signal\n\n  // Need to cleanup event listeners if last stream is readable\n  // https://github.com/nodejs/node/issues/35452\n  const lastStreamCleanup = []\n  validateAbortSignal(outerSignal, 'options.signal')\n  function abort() {\n    finishImpl(new AbortError())\n  }\n  addAbortListener = addAbortListener || require('../../ours/util').addAbortListener\n  let disposable\n  if (outerSignal) {\n    disposable = addAbortListener(outerSignal, abort)\n  }\n  let error\n  let value\n  const destroys = []\n  let finishCount = 0\n  function finish(err) {\n    finishImpl(err, --finishCount === 0)\n  }\n  function finishImpl(err, final) {\n    var _disposable\n    if (err && (!error || error.code === 'ERR_STREAM_PREMATURE_CLOSE')) {\n      error = err\n    }\n    if (!error && !final) {\n      return\n    }\n    while (destroys.length) {\n      destroys.shift()(error)\n    }\n    ;(_disposable = disposable) === null || _disposable === undefined ? undefined : _disposable[SymbolDispose]()\n    ac.abort()\n    if (final) {\n      if (!error) {\n        lastStreamCleanup.forEach((fn) => fn())\n      }\n      process.nextTick(callback, error, value)\n    }\n  }\n  let ret\n  for (let i = 0; i < streams.length; i++) {\n    const stream = streams[i]\n    const reading = i < streams.length - 1\n    const writing = i > 0\n    const end = reading || (opts === null || opts === undefined ? undefined : opts.end) !== false\n    const isLastStream = i === streams.length - 1\n    if (isNodeStream(stream)) {\n      if (end) {\n        const { destroy, cleanup } = destroyer(stream, reading, writing)\n        destroys.push(destroy)\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n\n      // Catch stream errors that occur after pipe/pump has completed.\n      function onError(err) {\n        if (err && err.name !== 'AbortError' && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n          finish(err)\n        }\n      }\n      stream.on('error', onError)\n      if (isReadable(stream) && isLastStream) {\n        lastStreamCleanup.push(() => {\n          stream.removeListener('error', onError)\n        })\n      }\n    }\n    if (i === 0) {\n      if (typeof stream === 'function') {\n        ret = stream({\n          signal\n        })\n        if (!isIterable(ret)) {\n          throw new ERR_INVALID_RETURN_VALUE('Iterable, AsyncIterable or Stream', 'source', ret)\n        }\n      } else if (isIterable(stream) || isReadableNodeStream(stream) || isTransformStream(stream)) {\n        ret = stream\n      } else {\n        ret = Duplex.from(stream)\n      }\n    } else if (typeof stream === 'function') {\n      if (isTransformStream(ret)) {\n        var _ret\n        ret = makeAsyncIterable((_ret = ret) === null || _ret === undefined ? undefined : _ret.readable)\n      } else {\n        ret = makeAsyncIterable(ret)\n      }\n      ret = stream(ret, {\n        signal\n      })\n      if (reading) {\n        if (!isIterable(ret, true)) {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable', `transform[${i - 1}]`, ret)\n        }\n      } else {\n        var _ret2\n        if (!PassThrough) {\n          PassThrough = require('./passthrough')\n        }\n\n        // If the last argument to pipeline is not a stream\n        // we must create a proxy stream so that pipeline(...)\n        // always returns a stream which can be further\n        // composed through `.pipe(stream)`.\n\n        const pt = new PassThrough({\n          objectMode: true\n        })\n\n        // Handle Promises/A+ spec, `then` could be a getter that throws on\n        // second use.\n        const then = (_ret2 = ret) === null || _ret2 === undefined ? undefined : _ret2.then\n        if (typeof then === 'function') {\n          finishCount++\n          then.call(\n            ret,\n            (val) => {\n              value = val\n              if (val != null) {\n                pt.write(val)\n              }\n              if (end) {\n                pt.end()\n              }\n              process.nextTick(finish)\n            },\n            (err) => {\n              pt.destroy(err)\n              process.nextTick(finish, err)\n            }\n          )\n        } else if (isIterable(ret, true)) {\n          finishCount++\n          pumpToNode(ret, pt, finish, {\n            end\n          })\n        } else if (isReadableStream(ret) || isTransformStream(ret)) {\n          const toRead = ret.readable || ret\n          finishCount++\n          pumpToNode(toRead, pt, finish, {\n            end\n          })\n        } else {\n          throw new ERR_INVALID_RETURN_VALUE('AsyncIterable or Promise', 'destination', ret)\n        }\n        ret = pt\n        const { destroy, cleanup } = destroyer(ret, false, true)\n        destroys.push(destroy)\n        if (isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      }\n    } else if (isNodeStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount += 2\n        const cleanup = pipe(ret, stream, finish, {\n          end\n        })\n        if (isReadable(stream) && isLastStream) {\n          lastStreamCleanup.push(cleanup)\n        }\n      } else if (isTransformStream(ret) || isReadableStream(ret)) {\n        const toRead = ret.readable || ret\n        finishCount++\n        pumpToNode(toRead, stream, finish, {\n          end\n        })\n      } else if (isIterable(ret)) {\n        finishCount++\n        pumpToNode(ret, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE(\n          'val',\n          ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n          ret\n        )\n      }\n      ret = stream\n    } else if (isWebStream(stream)) {\n      if (isReadableNodeStream(ret)) {\n        finishCount++\n        pumpToWeb(makeAsyncIterable(ret), stream, finish, {\n          end\n        })\n      } else if (isReadableStream(ret) || isIterable(ret)) {\n        finishCount++\n        pumpToWeb(ret, stream, finish, {\n          end\n        })\n      } else if (isTransformStream(ret)) {\n        finishCount++\n        pumpToWeb(ret.readable, stream, finish, {\n          end\n        })\n      } else {\n        throw new ERR_INVALID_ARG_TYPE(\n          'val',\n          ['Readable', 'Iterable', 'AsyncIterable', 'ReadableStream', 'TransformStream'],\n          ret\n        )\n      }\n      ret = stream\n    } else {\n      ret = Duplex.from(stream)\n    }\n  }\n  if (\n    (signal !== null && signal !== undefined && signal.aborted) ||\n    (outerSignal !== null && outerSignal !== undefined && outerSignal.aborted)\n  ) {\n    process.nextTick(abort)\n  }\n  return ret\n}\nfunction pipe(src, dst, finish, { end }) {\n  let ended = false\n  dst.on('close', () => {\n    if (!ended) {\n      // Finish if the destination closes before the source has completed.\n      finish(new ERR_STREAM_PREMATURE_CLOSE())\n    }\n  })\n  src.pipe(dst, {\n    end: false\n  }) // If end is true we already will have a listener to end dst.\n\n  if (end) {\n    // Compat. Before node v10.12.0 stdio used to throw an error so\n    // pipe() did/does not end() stdio destinations.\n    // Now they allow it but \"secretly\" don't close the underlying fd.\n\n    function endFn() {\n      ended = true\n      dst.end()\n    }\n    if (isReadableFinished(src)) {\n      // End the destination if the source has already ended.\n      process.nextTick(endFn)\n    } else {\n      src.once('end', endFn)\n    }\n  } else {\n    finish()\n  }\n  eos(\n    src,\n    {\n      readable: true,\n      writable: false\n    },\n    (err) => {\n      const rState = src._readableState\n      if (\n        err &&\n        err.code === 'ERR_STREAM_PREMATURE_CLOSE' &&\n        rState &&\n        rState.ended &&\n        !rState.errored &&\n        !rState.errorEmitted\n      ) {\n        // Some readable streams will emit 'close' before 'end'. However, since\n        // this is on the readable side 'end' should still be emitted if the\n        // stream has been ended and no error emitted. This should be allowed in\n        // favor of backwards compatibility. Since the stream is piped to a\n        // destination this should not result in any observable difference.\n        // We don't need to check if this is a writable premature close since\n        // eos will only fail with premature close on the reading side for\n        // duplex streams.\n        src.once('end', finish).once('error', finish)\n      } else {\n        finish(err)\n      }\n    }\n  )\n  return eos(\n    dst,\n    {\n      readable: false,\n      writable: true\n    },\n    finish\n  )\n}\nmodule.exports = {\n  pipelineImpl,\n  pipeline\n}\n","'use strict'\n\nconst { pipeline } = require('./pipeline')\nconst Duplex = require('./duplex')\nconst { destroyer } = require('./destroy')\nconst {\n  isNodeStream,\n  isReadable,\n  isWritable,\n  isWebStream,\n  isTransformStream,\n  isWritableStream,\n  isReadableStream\n} = require('./utils')\nconst {\n  AbortError,\n  codes: { ERR_INVALID_ARG_VALUE, ERR_MISSING_ARGS }\n} = require('../../ours/errors')\nconst eos = require('./end-of-stream')\nmodule.exports = function compose(...streams) {\n  if (streams.length === 0) {\n    throw new ERR_MISSING_ARGS('streams')\n  }\n  if (streams.length === 1) {\n    return Duplex.from(streams[0])\n  }\n  const orgStreams = [...streams]\n  if (typeof streams[0] === 'function') {\n    streams[0] = Duplex.from(streams[0])\n  }\n  if (typeof streams[streams.length - 1] === 'function') {\n    const idx = streams.length - 1\n    streams[idx] = Duplex.from(streams[idx])\n  }\n  for (let n = 0; n < streams.length; ++n) {\n    if (!isNodeStream(streams[n]) && !isWebStream(streams[n])) {\n      // TODO(ronag): Add checks for non streams.\n      continue\n    }\n    if (\n      n < streams.length - 1 &&\n      !(isReadable(streams[n]) || isReadableStream(streams[n]) || isTransformStream(streams[n]))\n    ) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be readable')\n    }\n    if (n > 0 && !(isWritable(streams[n]) || isWritableStream(streams[n]) || isTransformStream(streams[n]))) {\n      throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`, orgStreams[n], 'must be writable')\n    }\n  }\n  let ondrain\n  let onfinish\n  let onreadable\n  let onclose\n  let d\n  function onfinished(err) {\n    const cb = onclose\n    onclose = null\n    if (cb) {\n      cb(err)\n    } else if (err) {\n      d.destroy(err)\n    } else if (!readable && !writable) {\n      d.destroy()\n    }\n  }\n  const head = streams[0]\n  const tail = pipeline(streams, onfinished)\n  const writable = !!(isWritable(head) || isWritableStream(head) || isTransformStream(head))\n  const readable = !!(isReadable(tail) || isReadableStream(tail) || isTransformStream(tail))\n\n  // TODO(ronag): Avoid double buffering.\n  // Implement Writable/Readable/Duplex traits.\n  // See, https://github.com/nodejs/node/pull/33515.\n  d = new Duplex({\n    // TODO (ronag): highWaterMark?\n    writableObjectMode: !!(head !== null && head !== undefined && head.writableObjectMode),\n    readableObjectMode: !!(tail !== null && tail !== undefined && tail.readableObjectMode),\n    writable,\n    readable\n  })\n  if (writable) {\n    if (isNodeStream(head)) {\n      d._write = function (chunk, encoding, callback) {\n        if (head.write(chunk, encoding)) {\n          callback()\n        } else {\n          ondrain = callback\n        }\n      }\n      d._final = function (callback) {\n        head.end()\n        onfinish = callback\n      }\n      head.on('drain', function () {\n        if (ondrain) {\n          const cb = ondrain\n          ondrain = null\n          cb()\n        }\n      })\n    } else if (isWebStream(head)) {\n      const writable = isTransformStream(head) ? head.writable : head\n      const writer = writable.getWriter()\n      d._write = async function (chunk, encoding, callback) {\n        try {\n          await writer.ready\n          writer.write(chunk).catch(() => {})\n          callback()\n        } catch (err) {\n          callback(err)\n        }\n      }\n      d._final = async function (callback) {\n        try {\n          await writer.ready\n          writer.close().catch(() => {})\n          onfinish = callback\n        } catch (err) {\n          callback(err)\n        }\n      }\n    }\n    const toRead = isTransformStream(tail) ? tail.readable : tail\n    eos(toRead, () => {\n      if (onfinish) {\n        const cb = onfinish\n        onfinish = null\n        cb()\n      }\n    })\n  }\n  if (readable) {\n    if (isNodeStream(tail)) {\n      tail.on('readable', function () {\n        if (onreadable) {\n          const cb = onreadable\n          onreadable = null\n          cb()\n        }\n      })\n      tail.on('end', function () {\n        d.push(null)\n      })\n      d._read = function () {\n        while (true) {\n          const buf = tail.read()\n          if (buf === null) {\n            onreadable = d._read\n            return\n          }\n          if (!d.push(buf)) {\n            return\n          }\n        }\n      }\n    } else if (isWebStream(tail)) {\n      const readable = isTransformStream(tail) ? tail.readable : tail\n      const reader = readable.getReader()\n      d._read = async function () {\n        while (true) {\n          try {\n            const { value, done } = await reader.read()\n            if (!d.push(value)) {\n              return\n            }\n            if (done) {\n              d.push(null)\n              return\n            }\n          } catch {\n            return\n          }\n        }\n      }\n    }\n  }\n  d._destroy = function (err, callback) {\n    if (!err && onclose !== null) {\n      err = new AbortError()\n    }\n    onreadable = null\n    ondrain = null\n    onfinish = null\n    if (onclose === null) {\n      callback(err)\n    } else {\n      onclose = callback\n      if (isNodeStream(tail)) {\n        destroyer(tail, err)\n      }\n    }\n  }\n  return d\n}\n","'use strict'\n\nconst AbortController = globalThis.AbortController || require('abort-controller').AbortController\nconst {\n  codes: { ERR_INVALID_ARG_VALUE, ERR_INVALID_ARG_TYPE, ERR_MISSING_ARGS, ERR_OUT_OF_RANGE },\n  AbortError\n} = require('../../ours/errors')\nconst { validateAbortSignal, validateInteger, validateObject } = require('../validators')\nconst kWeakHandler = require('../../ours/primordials').Symbol('kWeak')\nconst kResistStopPropagation = require('../../ours/primordials').Symbol('kResistStopPropagation')\nconst { finished } = require('./end-of-stream')\nconst staticCompose = require('./compose')\nconst { addAbortSignalNoValidate } = require('./add-abort-signal')\nconst { isWritable, isNodeStream } = require('./utils')\nconst { deprecate } = require('../../ours/util')\nconst {\n  ArrayPrototypePush,\n  Boolean,\n  MathFloor,\n  Number,\n  NumberIsNaN,\n  Promise,\n  PromiseReject,\n  PromiseResolve,\n  PromisePrototypeThen,\n  Symbol\n} = require('../../ours/primordials')\nconst kEmpty = Symbol('kEmpty')\nconst kEof = Symbol('kEof')\nfunction compose(stream, options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  if (isNodeStream(stream) && !isWritable(stream)) {\n    throw new ERR_INVALID_ARG_VALUE('stream', stream, 'must be writable')\n  }\n  const composedStream = staticCompose(this, stream)\n  if (options !== null && options !== undefined && options.signal) {\n    // Not validating as we already validated before\n    addAbortSignalNoValidate(options.signal, composedStream)\n  }\n  return composedStream\n}\nfunction map(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let concurrency = 1\n  if ((options === null || options === undefined ? undefined : options.concurrency) != null) {\n    concurrency = MathFloor(options.concurrency)\n  }\n  let highWaterMark = concurrency - 1\n  if ((options === null || options === undefined ? undefined : options.highWaterMark) != null) {\n    highWaterMark = MathFloor(options.highWaterMark)\n  }\n  validateInteger(concurrency, 'options.concurrency', 1)\n  validateInteger(highWaterMark, 'options.highWaterMark', 0)\n  highWaterMark += concurrency\n  return async function* map() {\n    const signal = require('../../ours/util').AbortSignalAny(\n      [options === null || options === undefined ? undefined : options.signal].filter(Boolean)\n    )\n    const stream = this\n    const queue = []\n    const signalOpt = {\n      signal\n    }\n    let next\n    let resume\n    let done = false\n    let cnt = 0\n    function onCatch() {\n      done = true\n      afterItemProcessed()\n    }\n    function afterItemProcessed() {\n      cnt -= 1\n      maybeResume()\n    }\n    function maybeResume() {\n      if (resume && !done && cnt < concurrency && queue.length < highWaterMark) {\n        resume()\n        resume = null\n      }\n    }\n    async function pump() {\n      try {\n        for await (let val of stream) {\n          if (done) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          try {\n            val = fn(val, signalOpt)\n            if (val === kEmpty) {\n              continue\n            }\n            val = PromiseResolve(val)\n          } catch (err) {\n            val = PromiseReject(err)\n          }\n          cnt += 1\n          PromisePrototypeThen(val, afterItemProcessed, onCatch)\n          queue.push(val)\n          if (next) {\n            next()\n            next = null\n          }\n          if (!done && (queue.length >= highWaterMark || cnt >= concurrency)) {\n            await new Promise((resolve) => {\n              resume = resolve\n            })\n          }\n        }\n        queue.push(kEof)\n      } catch (err) {\n        const val = PromiseReject(err)\n        PromisePrototypeThen(val, afterItemProcessed, onCatch)\n        queue.push(val)\n      } finally {\n        done = true\n        if (next) {\n          next()\n          next = null\n        }\n      }\n    }\n    pump()\n    try {\n      while (true) {\n        while (queue.length > 0) {\n          const val = await queue[0]\n          if (val === kEof) {\n            return\n          }\n          if (signal.aborted) {\n            throw new AbortError()\n          }\n          if (val !== kEmpty) {\n            yield val\n          }\n          queue.shift()\n          maybeResume()\n        }\n        await new Promise((resolve) => {\n          next = resolve\n        })\n      }\n    } finally {\n      done = true\n      if (resume) {\n        resume()\n        resume = null\n      }\n    }\n  }.call(this)\n}\nfunction asIndexedPairs(options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  return async function* asIndexedPairs() {\n    let index = 0\n    for await (const val of this) {\n      var _options$signal\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal = options.signal) !== null &&\n        _options$signal !== undefined &&\n        _options$signal.aborted\n      ) {\n        throw new AbortError({\n          cause: options.signal.reason\n        })\n      }\n      yield [index++, val]\n    }\n  }.call(this)\n}\nasync function some(fn, options = undefined) {\n  for await (const unused of filter.call(this, fn, options)) {\n    return true\n  }\n  return false\n}\nasync function every(fn, options = undefined) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  // https://en.wikipedia.org/wiki/De_Morgan%27s_laws\n  return !(await some.call(\n    this,\n    async (...args) => {\n      return !(await fn(...args))\n    },\n    options\n  ))\n}\nasync function find(fn, options) {\n  for await (const result of filter.call(this, fn, options)) {\n    return result\n  }\n  return undefined\n}\nasync function forEach(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function forEachFn(value, options) {\n    await fn(value, options)\n    return kEmpty\n  }\n  // eslint-disable-next-line no-unused-vars\n  for await (const unused of map.call(this, forEachFn, options));\n}\nfunction filter(fn, options) {\n  if (typeof fn !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'AsyncFunction'], fn)\n  }\n  async function filterFn(value, options) {\n    if (await fn(value, options)) {\n      return value\n    }\n    return kEmpty\n  }\n  return map.call(this, filterFn, options)\n}\n\n// Specific to provide better error to reduce since the argument is only\n// missing if the stream has no items in it - but the code is still appropriate\nclass ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS {\n  constructor() {\n    super('reduce')\n    this.message = 'Reduce of an empty stream requires an initial value'\n  }\n}\nasync function reduce(reducer, initialValue, options) {\n  var _options$signal2\n  if (typeof reducer !== 'function') {\n    throw new ERR_INVALID_ARG_TYPE('reducer', ['Function', 'AsyncFunction'], reducer)\n  }\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  let hasInitialValue = arguments.length > 1\n  if (\n    options !== null &&\n    options !== undefined &&\n    (_options$signal2 = options.signal) !== null &&\n    _options$signal2 !== undefined &&\n    _options$signal2.aborted\n  ) {\n    const err = new AbortError(undefined, {\n      cause: options.signal.reason\n    })\n    this.once('error', () => {}) // The error is already propagated\n    await finished(this.destroy(err))\n    throw err\n  }\n  const ac = new AbortController()\n  const signal = ac.signal\n  if (options !== null && options !== undefined && options.signal) {\n    const opts = {\n      once: true,\n      [kWeakHandler]: this,\n      [kResistStopPropagation]: true\n    }\n    options.signal.addEventListener('abort', () => ac.abort(), opts)\n  }\n  let gotAnyItemFromStream = false\n  try {\n    for await (const value of this) {\n      var _options$signal3\n      gotAnyItemFromStream = true\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal3 = options.signal) !== null &&\n        _options$signal3 !== undefined &&\n        _options$signal3.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (!hasInitialValue) {\n        initialValue = value\n        hasInitialValue = true\n      } else {\n        initialValue = await reducer(initialValue, value, {\n          signal\n        })\n      }\n    }\n    if (!gotAnyItemFromStream && !hasInitialValue) {\n      throw new ReduceAwareErrMissingArgs()\n    }\n  } finally {\n    ac.abort()\n  }\n  return initialValue\n}\nasync function toArray(options) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  const result = []\n  for await (const val of this) {\n    var _options$signal4\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal4 = options.signal) !== null &&\n      _options$signal4 !== undefined &&\n      _options$signal4.aborted\n    ) {\n      throw new AbortError(undefined, {\n        cause: options.signal.reason\n      })\n    }\n    ArrayPrototypePush(result, val)\n  }\n  return result\n}\nfunction flatMap(fn, options) {\n  const values = map.call(this, fn, options)\n  return async function* flatMap() {\n    for await (const val of values) {\n      yield* val\n    }\n  }.call(this)\n}\nfunction toIntegerOrInfinity(number) {\n  // We coerce here to align with the spec\n  // https://github.com/tc39/proposal-iterator-helpers/issues/169\n  number = Number(number)\n  if (NumberIsNaN(number)) {\n    return 0\n  }\n  if (number < 0) {\n    throw new ERR_OUT_OF_RANGE('number', '>= 0', number)\n  }\n  return number\n}\nfunction drop(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* drop() {\n    var _options$signal5\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal5 = options.signal) !== null &&\n      _options$signal5 !== undefined &&\n      _options$signal5.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal6\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal6 = options.signal) !== null &&\n        _options$signal6 !== undefined &&\n        _options$signal6.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- <= 0) {\n        yield val\n      }\n    }\n  }.call(this)\n}\nfunction take(number, options = undefined) {\n  if (options != null) {\n    validateObject(options, 'options')\n  }\n  if ((options === null || options === undefined ? undefined : options.signal) != null) {\n    validateAbortSignal(options.signal, 'options.signal')\n  }\n  number = toIntegerOrInfinity(number)\n  return async function* take() {\n    var _options$signal7\n    if (\n      options !== null &&\n      options !== undefined &&\n      (_options$signal7 = options.signal) !== null &&\n      _options$signal7 !== undefined &&\n      _options$signal7.aborted\n    ) {\n      throw new AbortError()\n    }\n    for await (const val of this) {\n      var _options$signal8\n      if (\n        options !== null &&\n        options !== undefined &&\n        (_options$signal8 = options.signal) !== null &&\n        _options$signal8 !== undefined &&\n        _options$signal8.aborted\n      ) {\n        throw new AbortError()\n      }\n      if (number-- > 0) {\n        yield val\n      }\n\n      // Don't get another item from iterator in case we reached the end\n      if (number <= 0) {\n        return\n      }\n    }\n  }.call(this)\n}\nmodule.exports.streamReturningOperators = {\n  asIndexedPairs: deprecate(asIndexedPairs, 'readable.asIndexedPairs will be removed in a future version.'),\n  drop,\n  filter,\n  flatMap,\n  map,\n  take,\n  compose\n}\nmodule.exports.promiseReturningOperators = {\n  every,\n  forEach,\n  reduce,\n  toArray,\n  some,\n  find\n}\n","'use strict'\n\nconst { ArrayPrototypePop, Promise } = require('../ours/primordials')\nconst { isIterable, isNodeStream, isWebStream } = require('../internal/streams/utils')\nconst { pipelineImpl: pl } = require('../internal/streams/pipeline')\nconst { finished } = require('../internal/streams/end-of-stream')\nrequire('../../lib/stream.js')\nfunction pipeline(...streams) {\n  return new Promise((resolve, reject) => {\n    let signal\n    let end\n    const lastArg = streams[streams.length - 1]\n    if (\n      lastArg &&\n      typeof lastArg === 'object' &&\n      !isNodeStream(lastArg) &&\n      !isIterable(lastArg) &&\n      !isWebStream(lastArg)\n    ) {\n      const options = ArrayPrototypePop(streams)\n      signal = options.signal\n      end = options.end\n    }\n    pl(\n      streams,\n      (err, value) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(value)\n        }\n      },\n      {\n        signal,\n        end\n      }\n    )\n  })\n}\nmodule.exports = {\n  finished,\n  pipeline\n}\n","/* replacement start */\n\nconst { Buffer } = require('buffer')\n\n/* replacement end */\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n;('use strict')\nconst { ObjectDefineProperty, ObjectKeys, ReflectApply } = require('./ours/primordials')\nconst {\n  promisify: { custom: customPromisify }\n} = require('./ours/util')\nconst { streamReturningOperators, promiseReturningOperators } = require('./internal/streams/operators')\nconst {\n  codes: { ERR_ILLEGAL_CONSTRUCTOR }\n} = require('./ours/errors')\nconst compose = require('./internal/streams/compose')\nconst { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('./internal/streams/state')\nconst { pipeline } = require('./internal/streams/pipeline')\nconst { destroyer } = require('./internal/streams/destroy')\nconst eos = require('./internal/streams/end-of-stream')\nconst internalBuffer = {}\nconst promises = require('./stream/promises')\nconst utils = require('./internal/streams/utils')\nconst Stream = (module.exports = require('./internal/streams/legacy').Stream)\nStream.isDestroyed = utils.isDestroyed\nStream.isDisturbed = utils.isDisturbed\nStream.isErrored = utils.isErrored\nStream.isReadable = utils.isReadable\nStream.isWritable = utils.isWritable\nStream.Readable = require('./internal/streams/readable')\nfor (const key of ObjectKeys(streamReturningOperators)) {\n  const op = streamReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return Stream.Readable.from(ReflectApply(op, this, args))\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nfor (const key of ObjectKeys(promiseReturningOperators)) {\n  const op = promiseReturningOperators[key]\n  function fn(...args) {\n    if (new.target) {\n      throw ERR_ILLEGAL_CONSTRUCTOR()\n    }\n    return ReflectApply(op, this, args)\n  }\n  ObjectDefineProperty(fn, 'name', {\n    __proto__: null,\n    value: op.name\n  })\n  ObjectDefineProperty(fn, 'length', {\n    __proto__: null,\n    value: op.length\n  })\n  ObjectDefineProperty(Stream.Readable.prototype, key, {\n    __proto__: null,\n    value: fn,\n    enumerable: false,\n    configurable: true,\n    writable: true\n  })\n}\nStream.Writable = require('./internal/streams/writable')\nStream.Duplex = require('./internal/streams/duplex')\nStream.Transform = require('./internal/streams/transform')\nStream.PassThrough = require('./internal/streams/passthrough')\nStream.pipeline = pipeline\nconst { addAbortSignal } = require('./internal/streams/add-abort-signal')\nStream.addAbortSignal = addAbortSignal\nStream.finished = eos\nStream.destroy = destroyer\nStream.compose = compose\nStream.setDefaultHighWaterMark = setDefaultHighWaterMark\nStream.getDefaultHighWaterMark = getDefaultHighWaterMark\nObjectDefineProperty(Stream, 'promises', {\n  __proto__: null,\n  configurable: true,\n  enumerable: true,\n  get() {\n    return promises\n  }\n})\nObjectDefineProperty(pipeline, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.pipeline\n  }\n})\nObjectDefineProperty(eos, customPromisify, {\n  __proto__: null,\n  enumerable: true,\n  get() {\n    return promises.finished\n  }\n})\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream\nStream._isUint8Array = function isUint8Array(value) {\n  return value instanceof Uint8Array\n}\nStream._uint8ArrayToBuffer = function _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n}\n","'use strict'\n\nconst Stream = require('stream')\nif (Stream && process.env.READABLE_STREAM === 'disable') {\n  const promises = Stream.promises\n\n  // Explicit export naming is needed for ESM\n  module.exports._uint8ArrayToBuffer = Stream._uint8ArrayToBuffer\n  module.exports._isUint8Array = Stream._isUint8Array\n  module.exports.isDisturbed = Stream.isDisturbed\n  module.exports.isErrored = Stream.isErrored\n  module.exports.isReadable = Stream.isReadable\n  module.exports.Readable = Stream.Readable\n  module.exports.Writable = Stream.Writable\n  module.exports.Duplex = Stream.Duplex\n  module.exports.Transform = Stream.Transform\n  module.exports.PassThrough = Stream.PassThrough\n  module.exports.addAbortSignal = Stream.addAbortSignal\n  module.exports.finished = Stream.finished\n  module.exports.destroy = Stream.destroy\n  module.exports.pipeline = Stream.pipeline\n  module.exports.compose = Stream.compose\n  Object.defineProperty(Stream, 'promises', {\n    configurable: true,\n    enumerable: true,\n    get() {\n      return promises\n    }\n  })\n  module.exports.Stream = Stream.Stream\n} else {\n  const CustomStream = require('../stream')\n  const promises = require('../stream/promises')\n  const originalDestroy = CustomStream.Readable.destroy\n  module.exports = CustomStream.Readable\n\n  // Explicit export naming is needed for ESM\n  module.exports._uint8ArrayToBuffer = CustomStream._uint8ArrayToBuffer\n  module.exports._isUint8Array = CustomStream._isUint8Array\n  module.exports.isDisturbed = CustomStream.isDisturbed\n  module.exports.isErrored = CustomStream.isErrored\n  module.exports.isReadable = CustomStream.isReadable\n  module.exports.Readable = CustomStream.Readable\n  module.exports.Writable = CustomStream.Writable\n  module.exports.Duplex = CustomStream.Duplex\n  module.exports.Transform = CustomStream.Transform\n  module.exports.PassThrough = CustomStream.PassThrough\n  module.exports.addAbortSignal = CustomStream.addAbortSignal\n  module.exports.finished = CustomStream.finished\n  module.exports.destroy = CustomStream.destroy\n  module.exports.destroy = originalDestroy\n  module.exports.pipeline = CustomStream.pipeline\n  module.exports.compose = CustomStream.compose\n  Object.defineProperty(CustomStream, 'promises', {\n    configurable: true,\n    enumerable: true,\n    get() {\n      return promises\n    }\n  })\n  module.exports.Stream = CustomStream.Stream\n}\n\n// Allow default importing\nmodule.exports.default = module.exports\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","try {\n  var util = require('util');\n  /* istanbul ignore next */\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  /* istanbul ignore next */\n  module.exports = require('./inherits_browser.js');\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst symbol = Symbol.for('BufferList')\n\nfunction BufferList (buf) {\n  if (!(this instanceof BufferList)) {\n    return new BufferList(buf)\n  }\n\n  BufferList._init.call(this, buf)\n}\n\nBufferList._init = function _init (buf) {\n  Object.defineProperty(this, symbol, { value: true })\n\n  this._bufs = []\n  this.length = 0\n\n  if (buf) {\n    this.append(buf)\n  }\n}\n\nBufferList.prototype._new = function _new (buf) {\n  return new BufferList(buf)\n}\n\nBufferList.prototype._offset = function _offset (offset) {\n  if (offset === 0) {\n    return [0, 0]\n  }\n\n  let tot = 0\n\n  for (let i = 0; i < this._bufs.length; i++) {\n    const _t = tot + this._bufs[i].length\n    if (offset < _t || i === this._bufs.length - 1) {\n      return [i, offset - tot]\n    }\n    tot = _t\n  }\n}\n\nBufferList.prototype._reverseOffset = function (blOffset) {\n  const bufferId = blOffset[0]\n  let offset = blOffset[1]\n\n  for (let i = 0; i < bufferId; i++) {\n    offset += this._bufs[i].length\n  }\n\n  return offset\n}\n\nBufferList.prototype.get = function get (index) {\n  if (index > this.length || index < 0) {\n    return undefined\n  }\n\n  const offset = this._offset(index)\n\n  return this._bufs[offset[0]][offset[1]]\n}\n\nBufferList.prototype.slice = function slice (start, end) {\n  if (typeof start === 'number' && start < 0) {\n    start += this.length\n  }\n\n  if (typeof end === 'number' && end < 0) {\n    end += this.length\n  }\n\n  return this.copy(null, 0, start, end)\n}\n\nBufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {\n  if (typeof srcStart !== 'number' || srcStart < 0) {\n    srcStart = 0\n  }\n\n  if (typeof srcEnd !== 'number' || srcEnd > this.length) {\n    srcEnd = this.length\n  }\n\n  if (srcStart >= this.length) {\n    return dst || Buffer.alloc(0)\n  }\n\n  if (srcEnd <= 0) {\n    return dst || Buffer.alloc(0)\n  }\n\n  const copy = !!dst\n  const off = this._offset(srcStart)\n  const len = srcEnd - srcStart\n  let bytes = len\n  let bufoff = (copy && dstStart) || 0\n  let start = off[1]\n\n  // copy/slice everything\n  if (srcStart === 0 && srcEnd === this.length) {\n    if (!copy) {\n      // slice, but full concat if multiple buffers\n      return this._bufs.length === 1\n        ? this._bufs[0]\n        : Buffer.concat(this._bufs, this.length)\n    }\n\n    // copy, need to copy individual buffers\n    for (let i = 0; i < this._bufs.length; i++) {\n      this._bufs[i].copy(dst, bufoff)\n      bufoff += this._bufs[i].length\n    }\n\n    return dst\n  }\n\n  // easy, cheap case where it's a subset of one of the buffers\n  if (bytes <= this._bufs[off[0]].length - start) {\n    return copy\n      ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)\n      : this._bufs[off[0]].slice(start, start + bytes)\n  }\n\n  if (!copy) {\n    // a slice, we need something to copy in to\n    dst = Buffer.allocUnsafe(len)\n  }\n\n  for (let i = off[0]; i < this._bufs.length; i++) {\n    const l = this._bufs[i].length - start\n\n    if (bytes > l) {\n      this._bufs[i].copy(dst, bufoff, start)\n      bufoff += l\n    } else {\n      this._bufs[i].copy(dst, bufoff, start, start + bytes)\n      bufoff += l\n      break\n    }\n\n    bytes -= l\n\n    if (start) {\n      start = 0\n    }\n  }\n\n  // safeguard so that we don't return uninitialized memory\n  if (dst.length > bufoff) return dst.slice(0, bufoff)\n\n  return dst\n}\n\nBufferList.prototype.shallowSlice = function shallowSlice (start, end) {\n  start = start || 0\n  end = typeof end !== 'number' ? this.length : end\n\n  if (start < 0) {\n    start += this.length\n  }\n\n  if (end < 0) {\n    end += this.length\n  }\n\n  if (start === end) {\n    return this._new()\n  }\n\n  const startOffset = this._offset(start)\n  const endOffset = this._offset(end)\n  const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1)\n\n  if (endOffset[1] === 0) {\n    buffers.pop()\n  } else {\n    buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1])\n  }\n\n  if (startOffset[1] !== 0) {\n    buffers[0] = buffers[0].slice(startOffset[1])\n  }\n\n  return this._new(buffers)\n}\n\nBufferList.prototype.toString = function toString (encoding, start, end) {\n  return this.slice(start, end).toString(encoding)\n}\n\nBufferList.prototype.consume = function consume (bytes) {\n  // first, normalize the argument, in accordance with how Buffer does it\n  bytes = Math.trunc(bytes)\n  // do nothing if not a positive number\n  if (Number.isNaN(bytes) || bytes <= 0) return this\n\n  while (this._bufs.length) {\n    if (bytes >= this._bufs[0].length) {\n      bytes -= this._bufs[0].length\n      this.length -= this._bufs[0].length\n      this._bufs.shift()\n    } else {\n      this._bufs[0] = this._bufs[0].slice(bytes)\n      this.length -= bytes\n      break\n    }\n  }\n\n  return this\n}\n\nBufferList.prototype.duplicate = function duplicate () {\n  const copy = this._new()\n\n  for (let i = 0; i < this._bufs.length; i++) {\n    copy.append(this._bufs[i])\n  }\n\n  return copy\n}\n\nBufferList.prototype.append = function append (buf) {\n  if (buf == null) {\n    return this\n  }\n\n  if (buf.buffer) {\n    // append a view of the underlying ArrayBuffer\n    this._appendBuffer(Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength))\n  } else if (Array.isArray(buf)) {\n    for (let i = 0; i < buf.length; i++) {\n      this.append(buf[i])\n    }\n  } else if (this._isBufferList(buf)) {\n    // unwrap argument into individual BufferLists\n    for (let i = 0; i < buf._bufs.length; i++) {\n      this.append(buf._bufs[i])\n    }\n  } else {\n    // coerce number arguments to strings, since Buffer(number) does\n    // uninitialized memory allocation\n    if (typeof buf === 'number') {\n      buf = buf.toString()\n    }\n\n    this._appendBuffer(Buffer.from(buf))\n  }\n\n  return this\n}\n\nBufferList.prototype._appendBuffer = function appendBuffer (buf) {\n  this._bufs.push(buf)\n  this.length += buf.length\n}\n\nBufferList.prototype.indexOf = function (search, offset, encoding) {\n  if (encoding === undefined && typeof offset === 'string') {\n    encoding = offset\n    offset = undefined\n  }\n\n  if (typeof search === 'function' || Array.isArray(search)) {\n    throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.')\n  } else if (typeof search === 'number') {\n    search = Buffer.from([search])\n  } else if (typeof search === 'string') {\n    search = Buffer.from(search, encoding)\n  } else if (this._isBufferList(search)) {\n    search = search.slice()\n  } else if (Array.isArray(search.buffer)) {\n    search = Buffer.from(search.buffer, search.byteOffset, search.byteLength)\n  } else if (!Buffer.isBuffer(search)) {\n    search = Buffer.from(search)\n  }\n\n  offset = Number(offset || 0)\n\n  if (isNaN(offset)) {\n    offset = 0\n  }\n\n  if (offset < 0) {\n    offset = this.length + offset\n  }\n\n  if (offset < 0) {\n    offset = 0\n  }\n\n  if (search.length === 0) {\n    return offset > this.length ? this.length : offset\n  }\n\n  const blOffset = this._offset(offset)\n  let blIndex = blOffset[0] // index of which internal buffer we're working on\n  let buffOffset = blOffset[1] // offset of the internal buffer we're working on\n\n  // scan over each buffer\n  for (; blIndex < this._bufs.length; blIndex++) {\n    const buff = this._bufs[blIndex]\n\n    while (buffOffset < buff.length) {\n      const availableWindow = buff.length - buffOffset\n\n      if (availableWindow >= search.length) {\n        const nativeSearchResult = buff.indexOf(search, buffOffset)\n\n        if (nativeSearchResult !== -1) {\n          return this._reverseOffset([blIndex, nativeSearchResult])\n        }\n\n        buffOffset = buff.length - search.length + 1 // end of native search window\n      } else {\n        const revOffset = this._reverseOffset([blIndex, buffOffset])\n\n        if (this._match(revOffset, search)) {\n          return revOffset\n        }\n\n        buffOffset++\n      }\n    }\n\n    buffOffset = 0\n  }\n\n  return -1\n}\n\nBufferList.prototype._match = function (offset, search) {\n  if (this.length - offset < search.length) {\n    return false\n  }\n\n  for (let searchOffset = 0; searchOffset < search.length; searchOffset++) {\n    if (this.get(offset + searchOffset) !== search[searchOffset]) {\n      return false\n    }\n  }\n  return true\n}\n\n;(function () {\n  const methods = {\n    readDoubleBE: 8,\n    readDoubleLE: 8,\n    readFloatBE: 4,\n    readFloatLE: 4,\n    readBigInt64BE: 8,\n    readBigInt64LE: 8,\n    readBigUInt64BE: 8,\n    readBigUInt64LE: 8,\n    readInt32BE: 4,\n    readInt32LE: 4,\n    readUInt32BE: 4,\n    readUInt32LE: 4,\n    readInt16BE: 2,\n    readInt16LE: 2,\n    readUInt16BE: 2,\n    readUInt16LE: 2,\n    readInt8: 1,\n    readUInt8: 1,\n    readIntBE: null,\n    readIntLE: null,\n    readUIntBE: null,\n    readUIntLE: null\n  }\n\n  for (const m in methods) {\n    (function (m) {\n      if (methods[m] === null) {\n        BufferList.prototype[m] = function (offset, byteLength) {\n          return this.slice(offset, offset + byteLength)[m](0, byteLength)\n        }\n      } else {\n        BufferList.prototype[m] = function (offset = 0) {\n          return this.slice(offset, offset + methods[m])[m](0)\n        }\n      }\n    }(m))\n  }\n}())\n\n// Used internally by the class and also as an indicator of this object being\n// a `BufferList`. It's not possible to use `instanceof BufferList` in a browser\n// environment because there could be multiple different copies of the\n// BufferList class and some `BufferList`s might be `BufferList`s.\nBufferList.prototype._isBufferList = function _isBufferList (b) {\n  return b instanceof BufferList || BufferList.isBufferList(b)\n}\n\nBufferList.isBufferList = function isBufferList (b) {\n  return b != null && b[symbol]\n}\n\nmodule.exports = BufferList\n","'use strict'\n\nconst DuplexStream = require('readable-stream').Duplex\nconst inherits = require('inherits')\nconst BufferList = require('./BufferList')\n\nfunction BufferListStream (callback) {\n  if (!(this instanceof BufferListStream)) {\n    return new BufferListStream(callback)\n  }\n\n  if (typeof callback === 'function') {\n    this._callback = callback\n\n    const piper = function piper (err) {\n      if (this._callback) {\n        this._callback(err)\n        this._callback = null\n      }\n    }.bind(this)\n\n    this.on('pipe', function onPipe (src) {\n      src.on('error', piper)\n    })\n    this.on('unpipe', function onUnpipe (src) {\n      src.removeListener('error', piper)\n    })\n\n    callback = null\n  }\n\n  BufferList._init.call(this, callback)\n  DuplexStream.call(this)\n}\n\ninherits(BufferListStream, DuplexStream)\nObject.assign(BufferListStream.prototype, BufferList.prototype)\n\nBufferListStream.prototype._new = function _new (callback) {\n  return new BufferListStream(callback)\n}\n\nBufferListStream.prototype._write = function _write (buf, encoding, callback) {\n  this._appendBuffer(buf)\n\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nBufferListStream.prototype._read = function _read (size) {\n  if (!this.length) {\n    return this.push(null)\n  }\n\n  size = Math.min(size, this.length)\n  this.push(this.slice(0, size))\n  this.consume(size)\n}\n\nBufferListStream.prototype.end = function end (chunk) {\n  DuplexStream.prototype.end.call(this, chunk)\n\n  if (this._callback) {\n    this._callback(null, this.slice())\n    this._callback = null\n  }\n}\n\nBufferListStream.prototype._destroy = function _destroy (err, cb) {\n  this._bufs.length = 0\n  this.length = 0\n  cb(err)\n}\n\nBufferListStream.prototype._isBufferList = function _isBufferList (b) {\n  return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b)\n}\n\nBufferListStream.isBufferList = BufferList.isBufferList\n\nmodule.exports = BufferListStream\nmodule.exports.BufferListStream = BufferListStream\nmodule.exports.BufferList = BufferList\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _bl = _interopRequireDefault(require(\"bl\"));\nvar _stream = require(\"stream\");\nvar _message = _interopRequireDefault(require(\"./message\"));\nvar _packet = require(\"./packet\");\nvar _errors = require(\"./errors\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n  IncomingMessageStream\n  Transform received TDS data into individual IncomingMessage streams.\n*/\nclass IncomingMessageStream extends _stream.Transform {\n  constructor(debug) {\n    super({\n      readableObjectMode: true\n    });\n    this.debug = debug;\n    this.currentMessage = undefined;\n    this.bl = new _bl.default();\n  }\n  pause() {\n    super.pause();\n    if (this.currentMessage) {\n      this.currentMessage.pause();\n    }\n    return this;\n  }\n  resume() {\n    super.resume();\n    if (this.currentMessage) {\n      this.currentMessage.resume();\n    }\n    return this;\n  }\n  processBufferedData(callback) {\n    // The packet header is always 8 bytes of length.\n    while (this.bl.length >= _packet.HEADER_LENGTH) {\n      // Get the full packet length\n      const length = this.bl.readUInt16BE(2);\n      if (length < _packet.HEADER_LENGTH) {\n        return callback(new _errors.ConnectionError('Unable to process incoming packet'));\n      }\n      if (this.bl.length >= length) {\n        const data = this.bl.slice(0, length);\n        this.bl.consume(length);\n\n        // TODO: Get rid of creating `Packet` instances here.\n        const packet = new _packet.Packet(data);\n        this.debug.packet('Received', packet);\n        this.debug.data(packet);\n        let message = this.currentMessage;\n        if (message === undefined) {\n          this.currentMessage = message = new _message.default({\n            type: packet.type(),\n            resetConnection: false\n          });\n          this.push(message);\n        }\n        if (packet.isLast()) {\n          // Wait until the current message was fully processed before we\n          // continue processing any remaining messages.\n          message.once('end', () => {\n            this.currentMessage = undefined;\n            this.processBufferedData(callback);\n          });\n          message.end(packet.data());\n          return;\n        } else if (!message.write(packet.data())) {\n          // If too much data is buffering up in the\n          // current message, wait for it to drain.\n          message.once('drain', () => {\n            this.processBufferedData(callback);\n          });\n          return;\n        }\n      } else {\n        break;\n      }\n    }\n\n    // Not enough data to read the next packet. Stop here and wait for\n    // the next call to `_transform`.\n    callback();\n  }\n  _transform(chunk, _encoding, callback) {\n    this.bl.append(chunk);\n    this.processBufferedData(callback);\n  }\n}\nvar _default = IncomingMessageStream;\nexports.default = _default;\nmodule.exports = IncomingMessageStream;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfbWVzc2FnZSIsIl9wYWNrZXQiLCJfZXJyb3JzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJJbmNvbWluZ01lc3NhZ2VTdHJlYW0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicmVhZGFibGVPYmplY3RNb2RlIiwiY3VycmVudE1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJibCIsIkJ1ZmZlckxpc3QiLCJwYXVzZSIsInJlc3VtZSIsInByb2Nlc3NCdWZmZXJlZERhdGEiLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJyZWFkVUludDE2QkUiLCJDb25uZWN0aW9uRXJyb3IiLCJkYXRhIiwic2xpY2UiLCJjb25zdW1lIiwicGFja2V0IiwiUGFja2V0IiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0eXBlIiwicmVzZXRDb25uZWN0aW9uIiwicHVzaCIsImlzTGFzdCIsIm9uY2UiLCJlbmQiLCJ3cml0ZSIsIl90cmFuc2Zvcm0iLCJjaHVuayIsIl9lbmNvZGluZyIsImFwcGVuZCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmNvbWluZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm0gfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKipcbiAgSW5jb21pbmdNZXNzYWdlU3RyZWFtXG4gIFRyYW5zZm9ybSByZWNlaXZlZCBURFMgZGF0YSBpbnRvIGluZGl2aWR1YWwgSW5jb21pbmdNZXNzYWdlIHN0cmVhbXMuXG4qL1xuY2xhc3MgSW5jb21pbmdNZXNzYWdlU3RyZWFtIGV4dGVuZHMgVHJhbnNmb3JtIHtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcbiAgZGVjbGFyZSBjdXJyZW50TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihkZWJ1ZzogRGVidWcpIHtcbiAgICBzdXBlcih7IHJlYWRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ibCA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICBzdXBlci5wYXVzZSgpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuY3VycmVudE1lc3NhZ2UucGF1c2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICBzdXBlci5yZXN1bWUoKTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvY2Vzc0J1ZmZlcmVkRGF0YShjYWxsYmFjazogKGVycj86IENvbm5lY3Rpb25FcnJvcikgPT4gdm9pZCkge1xuICAgIC8vIFRoZSBwYWNrZXQgaGVhZGVyIGlzIGFsd2F5cyA4IGJ5dGVzIG9mIGxlbmd0aC5cbiAgICB3aGlsZSAodGhpcy5ibC5sZW5ndGggPj0gSEVBREVSX0xFTkdUSCkge1xuICAgICAgLy8gR2V0IHRoZSBmdWxsIHBhY2tldCBsZW5ndGhcbiAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuYmwucmVhZFVJbnQxNkJFKDIpO1xuICAgICAgaWYgKGxlbmd0aCA8IEhFQURFUl9MRU5HVEgpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBDb25uZWN0aW9uRXJyb3IoJ1VuYWJsZSB0byBwcm9jZXNzIGluY29taW5nIHBhY2tldCcpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYmwubGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB0aGlzLmJsLmNvbnN1bWUobGVuZ3RoKTtcblxuICAgICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KGRhdGEpO1xuICAgICAgICB0aGlzLmRlYnVnLnBhY2tldCgnUmVjZWl2ZWQnLCBwYWNrZXQpO1xuICAgICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMuY3VycmVudE1lc3NhZ2U7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogcGFja2V0LnR5cGUoKSwgcmVzZXRDb25uZWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFja2V0LmlzTGFzdCgpKSB7XG4gICAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgY3VycmVudCBtZXNzYWdlIHdhcyBmdWxseSBwcm9jZXNzZWQgYmVmb3JlIHdlXG4gICAgICAgICAgLy8gY29udGludWUgcHJvY2Vzc2luZyBhbnkgcmVtYWluaW5nIG1lc3NhZ2VzLlxuICAgICAgICAgIG1lc3NhZ2Uub25jZSgnZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0J1ZmZlcmVkRGF0YShjYWxsYmFjayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbWVzc2FnZS5lbmQocGFja2V0LmRhdGEoKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKCFtZXNzYWdlLndyaXRlKHBhY2tldC5kYXRhKCkpKSB7XG4gICAgICAgICAgLy8gSWYgdG9vIG11Y2ggZGF0YSBpcyBidWZmZXJpbmcgdXAgaW4gdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBtZXNzYWdlLCB3YWl0IGZvciBpdCB0byBkcmFpbi5cbiAgICAgICAgICBtZXNzYWdlLm9uY2UoJ2RyYWluJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQnVmZmVyZWREYXRhKGNhbGxiYWNrKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vdCBlbm91Z2ggZGF0YSB0byByZWFkIHRoZSBuZXh0IHBhY2tldC4gU3RvcCBoZXJlIGFuZCB3YWl0IGZvclxuICAgIC8vIHRoZSBuZXh0IGNhbGwgdG8gYF90cmFuc2Zvcm1gLlxuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICBfdHJhbnNmb3JtKGNodW5rOiBCdWZmZXIsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuYmwuYXBwZW5kKGNodW5rKTtcbiAgICB0aGlzLnByb2Nlc3NCdWZmZXJlZERhdGEoY2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluY29taW5nTWVzc2FnZVN0cmVhbTtcbm1vZHVsZS5leHBvcnRzID0gSW5jb21pbmdNZXNzYWdlU3RyZWFtO1xuIl0sIm1hcHBpbmdzIjoiOzs7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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _bl = _interopRequireDefault(require(\"bl\"));\nvar _stream = require(\"stream\");\nvar _packet = require(\"./packet\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass OutgoingMessageStream extends _stream.Duplex {\n  constructor(debug, {\n    packetSize\n  }) {\n    super({\n      writableObjectMode: true\n    });\n    this.packetSize = packetSize;\n    this.debug = debug;\n    this.bl = new _bl.default();\n\n    // When the writable side is ended, push `null`\n    // to also end the readable side.\n    this.on('finish', () => {\n      this.push(null);\n    });\n  }\n  _write(message, _encoding, callback) {\n    const length = this.packetSize - _packet.HEADER_LENGTH;\n    let packetNumber = 0;\n    this.currentMessage = message;\n    this.currentMessage.on('data', data => {\n      if (message.ignore) {\n        return;\n      }\n      this.bl.append(data);\n      while (this.bl.length > length) {\n        const data = this.bl.slice(0, length);\n        this.bl.consume(length);\n\n        // TODO: Get rid of creating `Packet` instances here.\n        const packet = new _packet.Packet(message.type);\n        packet.packetId(packetNumber += 1);\n        packet.resetConnection(message.resetConnection);\n        packet.addData(data);\n        this.debug.packet('Sent', packet);\n        this.debug.data(packet);\n        if (this.push(packet.buffer) === false) {\n          message.pause();\n        }\n      }\n    });\n    this.currentMessage.on('end', () => {\n      const data = this.bl.slice();\n      this.bl.consume(data.length);\n\n      // TODO: Get rid of creating `Packet` instances here.\n      const packet = new _packet.Packet(message.type);\n      packet.packetId(packetNumber += 1);\n      packet.resetConnection(message.resetConnection);\n      packet.last(true);\n      packet.ignore(message.ignore);\n      packet.addData(data);\n      this.debug.packet('Sent', packet);\n      this.debug.data(packet);\n      this.push(packet.buffer);\n      this.currentMessage = undefined;\n      callback();\n    });\n  }\n  _read(_size) {\n    // If we do have a message, resume it and get data flowing.\n    // Otherwise, there is nothing to do.\n    if (this.currentMessage) {\n      this.currentMessage.resume();\n    }\n  }\n}\nvar _default = OutgoingMessageStream;\nexports.default = _default;\nmodule.exports = OutgoingMessageStream;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _nativeDuplexpair = _interopRequireDefault(require(\"native-duplexpair\"));\nvar tls = _interopRequireWildcard(require(\"tls\"));\nvar _events = require(\"events\");\nvar _message = _interopRequireDefault(require(\"./message\"));\nvar _packet = require(\"./packet\");\nvar _incomingMessageStream = _interopRequireDefault(require(\"./incoming-message-stream\"));\nvar _outgoingMessageStream = _interopRequireDefault(require(\"./outgoing-message-stream\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass MessageIO extends _events.EventEmitter {\n  constructor(socket, packetSize, debug) {\n    super();\n    this.socket = socket;\n    this.debug = debug;\n    this.tlsNegotiationComplete = false;\n    this.incomingMessageStream = new _incomingMessageStream.default(this.debug);\n    this.incomingMessageIterator = this.incomingMessageStream[Symbol.asyncIterator]();\n    this.outgoingMessageStream = new _outgoingMessageStream.default(this.debug, {\n      packetSize: packetSize\n    });\n    this.socket.pipe(this.incomingMessageStream);\n    this.outgoingMessageStream.pipe(this.socket);\n  }\n  packetSize(...args) {\n    if (args.length > 0) {\n      const packetSize = args[0];\n      this.debug.log('Packet size changed from ' + this.outgoingMessageStream.packetSize + ' to ' + packetSize);\n      this.outgoingMessageStream.packetSize = packetSize;\n    }\n    if (this.securePair) {\n      this.securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n    }\n    return this.outgoingMessageStream.packetSize;\n  }\n\n  // Negotiate TLS encryption.\n  startTls(credentialsDetails, hostname, trustServerCertificate) {\n    if (!credentialsDetails.maxVersion || !['TLSv1.2', 'TLSv1.1', 'TLSv1'].includes(credentialsDetails.maxVersion)) {\n      credentialsDetails.maxVersion = 'TLSv1.2';\n    }\n    const secureContext = tls.createSecureContext(credentialsDetails);\n    return new Promise((resolve, reject) => {\n      const duplexpair = new _nativeDuplexpair.default();\n      const securePair = this.securePair = {\n        cleartext: tls.connect({\n          socket: duplexpair.socket1,\n          servername: hostname,\n          secureContext: secureContext,\n          rejectUnauthorized: !trustServerCertificate\n        }),\n        encrypted: duplexpair.socket2\n      };\n      const onSecureConnect = () => {\n        securePair.encrypted.removeListener('readable', onReadable);\n        securePair.cleartext.removeListener('error', onError);\n        securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n        // If we encounter any errors from this point on,\n        // we just forward them to the actual network socket.\n        securePair.cleartext.once('error', err => {\n          this.socket.destroy(err);\n        });\n        const cipher = securePair.cleartext.getCipher();\n        if (cipher) {\n          this.debug.log('TLS negotiated (' + cipher.name + ', ' + cipher.version + ')');\n        }\n        this.emit('secure', securePair.cleartext);\n        securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n        this.outgoingMessageStream.unpipe(this.socket);\n        this.socket.unpipe(this.incomingMessageStream);\n        this.socket.pipe(securePair.encrypted);\n        securePair.encrypted.pipe(this.socket);\n        securePair.cleartext.pipe(this.incomingMessageStream);\n        this.outgoingMessageStream.pipe(securePair.cleartext);\n        this.tlsNegotiationComplete = true;\n        resolve();\n      };\n      const onError = err => {\n        securePair.encrypted.removeListener('readable', onReadable);\n        securePair.cleartext.removeListener('error', onError);\n        securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n        securePair.cleartext.destroy();\n        securePair.encrypted.destroy();\n        reject(err);\n      };\n      const onReadable = () => {\n        // When there is handshake data on the encrypted stream of the secure pair,\n        // we wrap it into a `PRELOGIN` message and send it to the server.\n        //\n        // For each `PRELOGIN` message we sent we get back exactly one response message\n        // that contains the server's handshake response data.\n        const message = new _message.default({\n          type: _packet.TYPE.PRELOGIN,\n          resetConnection: false\n        });\n        let chunk;\n        while (chunk = securePair.encrypted.read()) {\n          message.write(chunk);\n        }\n        this.outgoingMessageStream.write(message);\n        message.end();\n        this.readMessage().then(async response => {\n          // Setup readable handler for the next round of handshaking.\n          // If we encounter a `secureConnect` on the cleartext side\n          // of the secure pair, the `readable` handler is cleared\n          // and no further handshake handling will happen.\n          securePair.encrypted.once('readable', onReadable);\n          for await (const data of response) {\n            // We feed the server's handshake response back into the\n            // encrypted end of the secure pair.\n            securePair.encrypted.write(data);\n          }\n        }).catch(onError);\n      };\n      securePair.cleartext.once('error', onError);\n      securePair.cleartext.once('secureConnect', onSecureConnect);\n      securePair.encrypted.once('readable', onReadable);\n    });\n  }\n\n  // TODO listen for 'drain' event when socket.write returns false.\n  // TODO implement incomplete request cancelation (2.2.1.6)\n  sendMessage(packetType, data, resetConnection) {\n    const message = new _message.default({\n      type: packetType,\n      resetConnection: resetConnection\n    });\n    message.end(data);\n    this.outgoingMessageStream.write(message);\n    return message;\n  }\n\n  /**\n   * Read the next incoming message from the socket.\n   */\n  async readMessage() {\n    const result = await this.incomingMessageIterator.next();\n    if (result.done) {\n      throw new Error('unexpected end of message stream');\n    }\n    return result.value;\n  }\n}\nvar _default = MessageIO;\nexports.default = _default;\nmodule.exports = MessageIO;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmF0aXZlRHVwbGV4cGFpciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwidGxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZXZlbnRzIiwiX21lc3NhZ2UiLCJfcGFja2V0IiwiX2luY29taW5nTWVzc2FnZVN0cmVhbSIsIl9vdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWVzc2FnZUlPIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJzb2NrZXQiLCJwYWNrZXRTaXplIiwiZGVidWciLCJ0bHNOZWdvdGlhdGlvbkNvbXBsZXRlIiwiaW5jb21pbmdNZXNzYWdlU3RyZWFtIiwiSW5jb21pbmdNZXNzYWdlU3RyZWFtIiwiaW5jb21pbmdNZXNzYWdlSXRlcmF0b3IiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwib3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwiT3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwicGlwZSIsImFyZ3MiLCJsZW5ndGgiLCJsb2ciLCJzZWN1cmVQYWlyIiwiY2xlYXJ0ZXh0Iiwic2V0TWF4U2VuZEZyYWdtZW50Iiwic3RhcnRUbHMiLCJjcmVkZW50aWFsc0RldGFpbHMiLCJob3N0bmFtZSIsInRydXN0U2VydmVyQ2VydGlmaWNhdGUiLCJtYXhWZXJzaW9uIiwiaW5jbHVkZXMiLCJzZWN1cmVDb250ZXh0IiwiY3JlYXRlU2VjdXJlQ29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZHVwbGV4cGFpciIsIkR1cGxleFBhaXIiLCJjb25uZWN0Iiwic29ja2V0MSIsInNlcnZlcm5hbWUiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJlbmNyeXB0ZWQiLCJzb2NrZXQyIiwib25TZWN1cmVDb25uZWN0IiwicmVtb3ZlTGlzdGVuZXIiLCJvblJlYWRhYmxlIiwib25FcnJvciIsIm9uY2UiLCJlcnIiLCJkZXN0cm95IiwiY2lwaGVyIiwiZ2V0Q2lwaGVyIiwibmFtZSIsInZlcnNpb24iLCJlbWl0IiwidW5waXBlIiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0eXBlIiwiVFlQRSIsIlBSRUxPR0lOIiwicmVzZXRDb25uZWN0aW9uIiwiY2h1bmsiLCJyZWFkIiwid3JpdGUiLCJlbmQiLCJyZWFkTWVzc2FnZSIsInRoZW4iLCJyZXNwb25zZSIsImRhdGEiLCJjYXRjaCIsInNlbmRNZXNzYWdlIiwicGFja2V0VHlwZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwiRXJyb3IiLCJ2YWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXNzYWdlLWlvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEdXBsZXhQYWlyIGZyb20gJ25hdGl2ZS1kdXBsZXhwYWlyJztcblxuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnbmV0JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmltcG9ydCBEZWJ1ZyBmcm9tICcuL2RlYnVnJztcblxuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuL3BhY2tldCc7XG5cbmltcG9ydCBJbmNvbWluZ01lc3NhZ2VTdHJlYW0gZnJvbSAnLi9pbmNvbWluZy1tZXNzYWdlLXN0cmVhbSc7XG5pbXBvcnQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtIGZyb20gJy4vb3V0Z29pbmctbWVzc2FnZS1zdHJlYW0nO1xuXG5jbGFzcyBNZXNzYWdlSU8gZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBkZWNsYXJlIHNvY2tldDogU29ja2V0O1xuICBkZWNsYXJlIGRlYnVnOiBEZWJ1ZztcblxuICBkZWNsYXJlIHRsc05lZ290aWF0aW9uQ29tcGxldGU6IGJvb2xlYW47XG5cbiAgZGVjbGFyZSBwcml2YXRlIGluY29taW5nTWVzc2FnZVN0cmVhbTogSW5jb21pbmdNZXNzYWdlU3RyZWFtO1xuICBkZWNsYXJlIG91dGdvaW5nTWVzc2FnZVN0cmVhbTogT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xuXG4gIGRlY2xhcmUgc2VjdXJlUGFpcj86IHtcbiAgICBjbGVhcnRleHQ6IHRscy5UTFNTb2NrZXQ7XG4gICAgZW5jcnlwdGVkOiBEdXBsZXg7XG4gIH07XG5cbiAgZGVjbGFyZSBpbmNvbWluZ01lc3NhZ2VJdGVyYXRvcjogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPE1lc3NhZ2U+O1xuXG4gIGNvbnN0cnVjdG9yKHNvY2tldDogU29ja2V0LCBwYWNrZXRTaXplOiBudW1iZXIsIGRlYnVnOiBEZWJ1Zykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldDtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG5cbiAgICB0aGlzLnRsc05lZ290aWF0aW9uQ29tcGxldGUgPSBmYWxzZTtcblxuICAgIHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtID0gbmV3IEluY29taW5nTWVzc2FnZVN0cmVhbSh0aGlzLmRlYnVnKTtcbiAgICB0aGlzLmluY29taW5nTWVzc2FnZUl0ZXJhdG9yID0gdGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG5cbiAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbSA9IG5ldyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0odGhpcy5kZWJ1ZywgeyBwYWNrZXRTaXplOiBwYWNrZXRTaXplIH0pO1xuXG4gICAgdGhpcy5zb2NrZXQucGlwZSh0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSk7XG4gICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGlwZSh0aGlzLnNvY2tldCk7XG4gIH1cblxuICBwYWNrZXRTaXplKC4uLmFyZ3M6IFtudW1iZXJdKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcGFja2V0U2l6ZSA9IGFyZ3NbMF07XG4gICAgICB0aGlzLmRlYnVnLmxvZygnUGFja2V0IHNpemUgY2hhbmdlZCBmcm9tICcgKyB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplICsgJyB0byAnICsgcGFja2V0U2l6ZSk7XG4gICAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplID0gcGFja2V0U2l6ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWN1cmVQYWlyKSB7XG4gICAgICB0aGlzLnNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnNldE1heFNlbmRGcmFnbWVudCh0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZTtcbiAgfVxuXG4gIC8vIE5lZ290aWF0ZSBUTFMgZW5jcnlwdGlvbi5cbiAgc3RhcnRUbHMoY3JlZGVudGlhbHNEZXRhaWxzOiB0bHMuU2VjdXJlQ29udGV4dE9wdGlvbnMsIGhvc3RuYW1lOiBzdHJpbmcsIHRydXN0U2VydmVyQ2VydGlmaWNhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWNyZWRlbnRpYWxzRGV0YWlscy5tYXhWZXJzaW9uIHx8ICFbJ1RMU3YxLjInLCAnVExTdjEuMScsICdUTFN2MSddLmluY2x1ZGVzKGNyZWRlbnRpYWxzRGV0YWlscy5tYXhWZXJzaW9uKSkge1xuICAgICAgY3JlZGVudGlhbHNEZXRhaWxzLm1heFZlcnNpb24gPSAnVExTdjEuMic7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdXJlQ29udGV4dCA9IHRscy5jcmVhdGVTZWN1cmVDb250ZXh0KGNyZWRlbnRpYWxzRGV0YWlscyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgZHVwbGV4cGFpciA9IG5ldyBEdXBsZXhQYWlyKCk7XG4gICAgICBjb25zdCBzZWN1cmVQYWlyID0gdGhpcy5zZWN1cmVQYWlyID0ge1xuICAgICAgICBjbGVhcnRleHQ6IHRscy5jb25uZWN0KHtcbiAgICAgICAgICBzb2NrZXQ6IGR1cGxleHBhaXIuc29ja2V0MSBhcyBTb2NrZXQsXG4gICAgICAgICAgc2VydmVybmFtZTogaG9zdG5hbWUsXG4gICAgICAgICAgc2VjdXJlQ29udGV4dDogc2VjdXJlQ29udGV4dCxcbiAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6ICF0cnVzdFNlcnZlckNlcnRpZmljYXRlXG4gICAgICAgIH0pLFxuICAgICAgICBlbmNyeXB0ZWQ6IGR1cGxleHBhaXIuc29ja2V0MlxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TZWN1cmVDb25uZWN0ID0gKCkgPT4ge1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdzZWN1cmVDb25uZWN0Jywgb25TZWN1cmVDb25uZWN0KTtcblxuICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYW55IGVycm9ycyBmcm9tIHRoaXMgcG9pbnQgb24sXG4gICAgICAgIC8vIHdlIGp1c3QgZm9yd2FyZCB0aGVtIHRvIHRoZSBhY3R1YWwgbmV0d29yayBzb2NrZXQuXG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0Lm9uY2UoJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuc29ja2V0LmRlc3Ryb3koZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2lwaGVyID0gc2VjdXJlUGFpci5jbGVhcnRleHQuZ2V0Q2lwaGVyKCk7XG4gICAgICAgIGlmIChjaXBoZXIpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnLmxvZygnVExTIG5lZ290aWF0ZWQgKCcgKyBjaXBoZXIubmFtZSArICcsICcgKyBjaXBoZXIudmVyc2lvbiArICcpJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ3NlY3VyZScsIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0KTtcblxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5zZXRNYXhTZW5kRnJhZ21lbnQodGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZSk7XG5cbiAgICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0udW5waXBlKHRoaXMuc29ja2V0KTtcbiAgICAgICAgdGhpcy5zb2NrZXQudW5waXBlKHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtKTtcblxuICAgICAgICB0aGlzLnNvY2tldC5waXBlKHNlY3VyZVBhaXIuZW5jcnlwdGVkKTtcbiAgICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQucGlwZSh0aGlzLnNvY2tldCk7XG5cbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucGlwZSh0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSk7XG4gICAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBpcGUoc2VjdXJlUGFpci5jbGVhcnRleHQpO1xuXG4gICAgICAgIHRoaXMudGxzTmVnb3RpYXRpb25Db21wbGV0ZSA9IHRydWU7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25FcnJvciA9IChlcnI/OiBFcnJvcikgPT4ge1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdzZWN1cmVDb25uZWN0Jywgb25TZWN1cmVDb25uZWN0KTtcblxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5kZXN0cm95KCk7XG4gICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLmRlc3Ryb3koKTtcblxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uUmVhZGFibGUgPSAoKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgaGFuZHNoYWtlIGRhdGEgb24gdGhlIGVuY3J5cHRlZCBzdHJlYW0gb2YgdGhlIHNlY3VyZSBwYWlyLFxuICAgICAgICAvLyB3ZSB3cmFwIGl0IGludG8gYSBgUFJFTE9HSU5gIG1lc3NhZ2UgYW5kIHNlbmQgaXQgdG8gdGhlIHNlcnZlci5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRm9yIGVhY2ggYFBSRUxPR0lOYCBtZXNzYWdlIHdlIHNlbnQgd2UgZ2V0IGJhY2sgZXhhY3RseSBvbmUgcmVzcG9uc2UgbWVzc2FnZVxuICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzZXJ2ZXIncyBoYW5kc2hha2UgcmVzcG9uc2UgZGF0YS5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogVFlQRS5QUkVMT0dJTiwgcmVzZXRDb25uZWN0aW9uOiBmYWxzZSB9KTtcblxuICAgICAgICBsZXQgY2h1bms7XG4gICAgICAgIHdoaWxlIChjaHVuayA9IHNlY3VyZVBhaXIuZW5jcnlwdGVkLnJlYWQoKSkge1xuICAgICAgICAgIG1lc3NhZ2Uud3JpdGUoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLndyaXRlKG1lc3NhZ2UpO1xuICAgICAgICBtZXNzYWdlLmVuZCgpO1xuXG4gICAgICAgIHRoaXMucmVhZE1lc3NhZ2UoKS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIFNldHVwIHJlYWRhYmxlIGhhbmRsZXIgZm9yIHRoZSBuZXh0IHJvdW5kIG9mIGhhbmRzaGFraW5nLlxuICAgICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIGBzZWN1cmVDb25uZWN0YCBvbiB0aGUgY2xlYXJ0ZXh0IHNpZGVcbiAgICAgICAgICAvLyBvZiB0aGUgc2VjdXJlIHBhaXIsIHRoZSBgcmVhZGFibGVgIGhhbmRsZXIgaXMgY2xlYXJlZFxuICAgICAgICAgIC8vIGFuZCBubyBmdXJ0aGVyIGhhbmRzaGFrZSBoYW5kbGluZyB3aWxsIGhhcHBlbi5cbiAgICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5vbmNlKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuXG4gICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBkYXRhIG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAvLyBXZSBmZWVkIHRoZSBzZXJ2ZXIncyBoYW5kc2hha2UgcmVzcG9uc2UgYmFjayBpbnRvIHRoZVxuICAgICAgICAgICAgLy8gZW5jcnlwdGVkIGVuZCBvZiB0aGUgc2VjdXJlIHBhaXIuXG4gICAgICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC53cml0ZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKG9uRXJyb3IpO1xuICAgICAgfTtcblxuICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0Lm9uY2UoJ3NlY3VyZUNvbm5lY3QnLCBvblNlY3VyZUNvbm5lY3QpO1xuICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQub25jZSgncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE8gbGlzdGVuIGZvciAnZHJhaW4nIGV2ZW50IHdoZW4gc29ja2V0LndyaXRlIHJldHVybnMgZmFsc2UuXG4gIC8vIFRPRE8gaW1wbGVtZW50IGluY29tcGxldGUgcmVxdWVzdCBjYW5jZWxhdGlvbiAoMi4yLjEuNilcbiAgc2VuZE1lc3NhZ2UocGFja2V0VHlwZTogbnVtYmVyLCBkYXRhPzogQnVmZmVyLCByZXNldENvbm5lY3Rpb24/OiBib29sZWFuKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogcGFja2V0VHlwZSwgcmVzZXRDb25uZWN0aW9uOiByZXNldENvbm5lY3Rpb24gfSk7XG4gICAgbWVzc2FnZS5lbmQoZGF0YSk7XG4gICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCB0aGUgbmV4dCBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIHNvY2tldC5cbiAgICovXG4gIGFzeW5jIHJlYWRNZXNzYWdlKCk6IFByb21pc2U8TWVzc2FnZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5jb21pbmdNZXNzYWdlSXRlcmF0b3IubmV4dCgpO1xuXG4gICAgaWYgKHJlc3VsdC5kb25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZW5kIG9mIG1lc3NhZ2Ugc3RyZWFtJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlSU87XG5tb2R1bGUuZXhwb3J0cyA9IE1lc3NhZ2VJTztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLEdBQUEs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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.codepageBySortId = exports.codepageByLanguageId = exports.Flags = exports.Collation = void 0;\n// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx\nconst codepageByLanguageId = {\n  // Arabic_*\n  [0x0401]: 'CP1256',\n  // Chinese_Taiwan_Stroke_*\n  // Chinese_Traditional_Stroke_Count_*\n  // Chinese_Taiwan_Bopomofo_*\n  // Chinese_Traditional_Bopomofo_*\n  [0x0404]: 'CP950',\n  // Czech_*\n  [0x0405]: 'CP1250',\n  // Danish_Greenlandic_*\n  // Danish_Norwegian_*\n  [0x0406]: 'CP1252',\n  // Greek_*\n  [0x0408]: 'CP1253',\n  // Latin1_General_*\n  [0x0409]: 'CP1252',\n  // Traditional_Spanish_*\n  [0x040A]: 'CP1252',\n  // Finnish_Swedish_*\n  [0x040B]: 'CP1252',\n  // French_*\n  [0x040C]: 'CP1252',\n  // Hebrew_*\n  [0x040D]: 'CP1255',\n  // Hungarian_*\n  // Hungarian_Technical_*\n  [0x040E]: 'CP1250',\n  // Icelandic_*\n  [0x040F]: 'CP1252',\n  // Japanese_*\n  // Japanese_XJIS_*\n  // Japanese_Unicode_*\n  // Japanese_Bushu_Kakusu_*\n  [0x0411]: 'CP932',\n  // Korean_*\n  // Korean_Wansung_*\n  [0x0412]: 'CP949',\n  // Norwegian_*\n  [0x0414]: 'CP1252',\n  // Polish_*\n  [0x0415]: 'CP1250',\n  // Romansh_*\n  [0x0417]: 'CP1252',\n  // Romanian_*\n  [0x0418]: 'CP1250',\n  // Cyrillic_*\n  [0x0419]: 'CP1251',\n  // Croatian_*\n  [0x041A]: 'CP1250',\n  // Slovak_*\n  [0x041B]: 'CP1250',\n  // Albanian_*\n  [0x041C]: 'CP1250',\n  // Thai_*\n  [0x041E]: 'CP874',\n  // Turkish_*\n  [0x041F]: 'CP1254',\n  // Urdu_*\n  [0x0420]: 'CP1256',\n  // Ukrainian_*\n  [0x0422]: 'CP1251',\n  // Slovenian_*\n  [0x0424]: 'CP1250',\n  // Estonian_*\n  [0x0425]: 'CP1257',\n  // Latvian_*\n  [0x0426]: 'CP1257',\n  // Lithuanian_*\n  [0x0427]: 'CP1257',\n  // Persian_*\n  [0x0429]: 'CP1256',\n  // Vietnamese_*\n  [0x042A]: 'CP1258',\n  // Azeri_Latin_*\n  [0x042C]: 'CP1254',\n  // Upper_Sorbian_*\n  [0x042E]: 'CP1252',\n  // Macedonian_FYROM_*\n  [0x042F]: 'CP1251',\n  // Sami_Norway_*\n  [0x043B]: 'CP1252',\n  // Kazakh_*\n  [0x043F]: 'CP1251',\n  // Turkmen_*\n  [0x0442]: 'CP1250',\n  // Uzbek_Latin_*\n  [0x0443]: 'CP1254',\n  // Tatar_*\n  [0x0444]: 'CP1251',\n  // Welsh_*\n  [0x0452]: 'CP1252',\n  // Frisian_*\n  [0x0462]: 'CP1252',\n  // Bashkir_*\n  [0x046D]: 'CP1251',\n  // Mapudungan_*\n  [0x047A]: 'CP1252',\n  // Mohawk_*\n  [0x047C]: 'CP1252',\n  // Breton_*\n  [0x047E]: 'CP1252',\n  // Uighur_*\n  [0x0480]: 'CP1256',\n  // Corsican_*\n  [0x0483]: 'CP1252',\n  // Yakut_*\n  [0x0485]: 'CP1251',\n  // Dari_*\n  [0x048C]: 'CP1256',\n  // Chinese_PRC_*\n  // Chinese_Simplified_Pinyin_*\n  // Chinese_PRC_Stroke_*\n  // Chinese_Simplified_Stroke_Order_*\n  [0x0804]: 'CP936',\n  // Serbian_Latin_*\n  [0x081A]: 'CP1250',\n  // Azeri_Cyrillic_*\n  [0x082C]: 'CP1251',\n  // Sami_Sweden_Finland_*\n  [0x083B]: 'CP1252',\n  // Tamazight_*\n  [0x085F]: 'CP1252',\n  // Chinese_Hong_Kong_Stroke_*\n  [0x0C04]: 'CP950',\n  // Modern_Spanish_*\n  [0x0C0A]: 'CP1252',\n  // Serbian_Cyrillic_*\n  [0x0C1A]: 'CP1251',\n  // Chinese_Traditional_Pinyin_*\n  // Chinese_Traditional_Stroke_Order_*\n  [0x1404]: 'CP950',\n  // Bosnian_Latin_*\n  [0x141A]: 'CP1250',\n  // Bosnian_Cyrillic_*\n  [0x201A]: 'CP1251',\n  // German\n  // German_PhoneBook_*\n  [0x0407]: 'CP1252',\n  // Georgian_Modern_Sort_*\n  [0x0437]: 'CP1252'\n};\nexports.codepageByLanguageId = codepageByLanguageId;\nconst codepageBySortId = {\n  [30]: 'CP437',\n  // SQL_Latin1_General_CP437_BIN\n  [31]: 'CP437',\n  // SQL_Latin1_General_CP437_CS_AS\n  [32]: 'CP437',\n  // SQL_Latin1_General_CP437_CI_AS\n  [33]: 'CP437',\n  // SQL_Latin1_General_Pref_CP437_CI_AS\n  [34]: 'CP437',\n  // SQL_Latin1_General_CP437_CI_AI\n  [40]: 'CP850',\n  // SQL_Latin1_General_CP850_BIN\n  [41]: 'CP850',\n  // SQL_Latin1_General_CP850_CS_AS\n  [42]: 'CP850',\n  // SQL_Latin1_General_CP850_CI_AS\n  [43]: 'CP850',\n  // SQL_Latin1_General_Pref_CP850_CI_AS\n  [44]: 'CP850',\n  // SQL_Latin1_General_CP850_CI_AI\n  [49]: 'CP850',\n  // SQL_1xCompat_CP850_CI_AS\n  [51]: 'CP1252',\n  // SQL_Latin1_General_Cp1_CS_AS_KI_WI\n  [52]: 'CP1252',\n  // SQL_Latin1_General_Cp1_CI_AS_KI_WI\n  [53]: 'CP1252',\n  // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI\n  [54]: 'CP1252',\n  // SQL_Latin1_General_Cp1_CI_AI_KI_WI\n  [55]: 'CP850',\n  // SQL_AltDiction_CP850_CS_AS\n  [56]: 'CP850',\n  // SQL_AltDiction_Pref_CP850_CI_AS\n  [57]: 'CP850',\n  // SQL_AltDiction_CP850_CI_AI\n  [58]: 'CP850',\n  // SQL_Scandinavian_Pref_CP850_CI_AS\n  [59]: 'CP850',\n  // SQL_Scandinavian_CP850_CS_AS\n  [60]: 'CP850',\n  // SQL_Scandinavian_CP850_CI_AS\n  [61]: 'CP850',\n  // SQL_AltDiction_CP850_CI_AS\n  [80]: 'CP1250',\n  // SQL_Latin1_General_1250_BIN\n  [81]: 'CP1250',\n  // SQL_Latin1_General_CP1250_CS_AS\n  [82]: 'CP1250',\n  // SQL_Latin1_General_Cp1250_CI_AS_KI_WI\n  [83]: 'CP1250',\n  // SQL_Czech_Cp1250_CS_AS_KI_WI\n  [84]: 'CP1250',\n  // SQL_Czech_Cp1250_CI_AS_KI_WI\n  [85]: 'CP1250',\n  // SQL_Hungarian_Cp1250_CS_AS_KI_WI\n  [86]: 'CP1250',\n  // SQL_Hungarian_Cp1250_CI_AS_KI_WI\n  [87]: 'CP1250',\n  // SQL_Polish_Cp1250_CS_AS_KI_WI\n  [88]: 'CP1250',\n  // SQL_Polish_Cp1250_CI_AS_KI_WI\n  [89]: 'CP1250',\n  // SQL_Romanian_Cp1250_CS_AS_KI_WI\n  [90]: 'CP1250',\n  // SQL_Romanian_Cp1250_CI_AS_KI_WI\n  [91]: 'CP1250',\n  // SQL_Croatian_Cp1250_CS_AS_KI_WI\n  [92]: 'CP1250',\n  // SQL_Croatian_Cp1250_CI_AS_KI_WI\n  [93]: 'CP1250',\n  // SQL_Slovak_Cp1250_CS_AS_KI_WI\n  [94]: 'CP1250',\n  // SQL_Slovak_Cp1250_CI_AS_KI_WI\n  [95]: 'CP1250',\n  // SQL_Slovenian_Cp1250_CS_AS_KI_WI\n  [96]: 'CP1250',\n  // SQL_Slovenian_Cp1250_CI_AS_KI_WI\n  [104]: 'CP1251',\n  // SQL_Latin1_General_1251_BIN\n  [105]: 'CP1251',\n  // SQL_Latin1_General_CP1251_CS_AS\n  [106]: 'CP1251',\n  // SQL_Latin1_General_CP1251_CI_AS\n  [107]: 'CP1251',\n  // SQL_Ukrainian_Cp1251_CS_AS_KI_WI\n  [108]: 'CP1251',\n  // SQL_Ukrainian_Cp1251_CI_AS_KI_WI\n  [112]: 'CP1253',\n  // SQL_Latin1_General_1253_BIN\n  [113]: 'CP1253',\n  // SQL_Latin1_General_CP1253_CS_AS\n  [114]: 'CP1253',\n  // SQL_Latin1_General_CP1253_CI_AS\n  [120]: 'CP1253',\n  // SQL_MixDiction_CP1253_CS_AS\n  [121]: 'CP1253',\n  // SQL_AltDiction_CP1253_CS_AS\n  [122]: 'CP1253',\n  // SQL_AltDiction2_CP1253_CS_AS\n  [124]: 'CP1253',\n  // SQL_Latin1_General_CP1253_CI_AI\n  [128]: 'CP1254',\n  // SQL_Latin1_General_1254_BIN\n  [129]: 'CP1254',\n  // SQL_Latin1_General_Cp1254_CS_AS_KI_WI\n  [130]: 'CP1254',\n  // SQL_Latin1_General_Cp1254_CI_AS_KI_WI\n  [136]: 'CP1255',\n  // SQL_Latin1_General_1255_BIN\n  [137]: 'CP1255',\n  // SQL_Latin1_General_CP1255_CS_AS\n  [138]: 'CP1255',\n  // SQL_Latin1_General_CP1255_CI_AS\n  [144]: 'CP1256',\n  // SQL_Latin1_General_1256_BIN\n  [145]: 'CP1256',\n  // SQL_Latin1_General_CP1256_CS_AS\n  [146]: 'CP1256',\n  // SQL_Latin1_General_CP1256_CI_AS\n  [152]: 'CP1257',\n  // SQL_Latin1_General_1257_BIN\n  [153]: 'CP1257',\n  // SQL_Latin1_General_CP1257_CS_AS\n  [154]: 'CP1257',\n  // SQL_Latin1_General_CP1257_CI_AS\n  [155]: 'CP1257',\n  // SQL_Estonian_Cp1257_CS_AS_KI_WI\n  [156]: 'CP1257',\n  // SQL_Estonian_Cp1257_CI_AS_KI_WI\n  [157]: 'CP1257',\n  // SQL_Latvian_Cp1257_CS_AS_KI_WI\n  [158]: 'CP1257',\n  // SQL_Latvian_Cp1257_CI_AS_KI_WI\n  [159]: 'CP1257',\n  // SQL_Lithuanian_Cp1257_CS_AS_KI_WI\n  [160]: 'CP1257',\n  // SQL_Lithuanian_Cp1257_CI_AS_KI_WI\n  [183]: 'CP1252',\n  // SQL_Danish_Pref_Cp1_CI_AS_KI_WI\n  [184]: 'CP1252',\n  // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI\n  [185]: 'CP1252',\n  // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI\n  [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI\n};\nexports.codepageBySortId = codepageBySortId;\nconst Flags = {\n  IGNORE_CASE: 1 << 0,\n  IGNORE_ACCENT: 1 << 1,\n  IGNORE_KANA: 1 << 2,\n  IGNORE_WIDTH: 1 << 3,\n  BINARY: 1 << 4,\n  BINARY2: 1 << 5,\n  UTF8: 1 << 6\n};\nexports.Flags = Flags;\nclass Collation {\n  static fromBuffer(buffer, offset = 0) {\n    let lcid = (buffer[offset + 2] & 0x0F) << 16;\n    lcid |= buffer[offset + 1] << 8;\n    lcid |= buffer[offset + 0];\n    let flags = (buffer[offset + 3] & 0x0F) << 4;\n    flags |= (buffer[offset + 2] & 0xF0) >>> 4;\n    const version = (buffer[offset + 3] & 0xF0) >>> 4;\n    const sortId = buffer[offset + 4];\n    return new this(lcid, flags, version, sortId);\n  }\n  constructor(lcid, flags, version, sortId) {\n    this.buffer = undefined;\n    this.lcid = lcid;\n    this.flags = flags;\n    this.version = version;\n    this.sortId = sortId;\n    if (this.flags & Flags.UTF8) {\n      this.codepage = 'utf-8';\n    } else if (this.sortId) {\n      this.codepage = codepageBySortId[this.sortId];\n    } else {\n      // The last 16 bits of the LCID are the language id.\n      // The first 4 bits define additional sort orders.\n      const languageId = this.lcid & 0xFFFF;\n      this.codepage = codepageByLanguageId[languageId];\n    }\n  }\n  toBuffer() {\n    if (this.buffer) {\n      return this.buffer;\n    }\n    this.buffer = Buffer.alloc(5);\n    this.buffer[0] = this.lcid & 0xFF;\n    this.buffer[1] = this.lcid >>> 8 & 0xFF;\n    this.buffer[2] = this.lcid >>> 16 & 0x0F | (this.flags & 0x0F) << 4;\n    this.buffer[3] = (this.flags & 0xF0) >>> 4 | (this.version & 0x0F) << 4;\n    this.buffer[4] = this.sortId & 0xFF;\n    return this.buffer;\n  }\n}\nexports.Collation = Collation;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImV4cG9ydHMiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsImJ1ZmZlciIsIm9mZnNldCIsImxjaWQiLCJmbGFncyIsInZlcnNpb24iLCJzb3J0SWQiLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsImNvZGVwYWdlIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgZGVjbGFyZSByZWFkb25seSBsY2lkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZmxhZ3M6IG51bWJlcjtcbiAgZGVjbGFyZSByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgc29ydElkOiBudW1iZXI7XG4gIGRlY2xhcmUgcmVhZG9ubHkgY29kZXBhZ2U6IEVuY29kaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGRlY2xhcmUgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxvQkFBaUQsR0FBRztFQUMvRDtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsT0FBTztFQUVqQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHO0FBQ1osQ0FBQztBQUFDQyxPQUFBLENBQUFELG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssTUFBTUUsZ0JBQTZDLEdBQUc7RUFDM0QsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFBQ0QsT0FBQSxDQUFBQyxnQkFBQSxHQUFBQSxnQkFBQTtBQUVLLE1BQU1DLEtBQUssR0FBRztFQUNuQkMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ25CQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDckJDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQztFQUNuQkMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ3BCQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDZEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0VBQ2ZDLElBQUksRUFBRSxDQUFDLElBQUk7QUFDYixDQUFDO0FBQUNULE9BQUEsQ0FBQUUsS0FBQSxHQUFBQSxLQUFBO0FBRUssTUFBTVEsU0FBUyxDQUFDO0VBU3JCLE9BQU9DLFVBQVVBLENBQUNDLE1BQWMsRUFBRUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUM1QyxJQUFJQyxJQUFJLEdBQUcsQ0FBQ0YsTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLEVBQUU7SUFDNUNDLElBQUksSUFBSUYsTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvQkMsSUFBSSxJQUFJRixNQUFNLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFMUIsSUFBSUUsS0FBSyxHQUFHLENBQUNILE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO0lBQzVDRSxLQUFLLElBQUksQ0FBQ0gsTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUM7SUFFMUMsTUFBTUcsT0FBTyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDO0lBRWpELE1BQU1JLE1BQU0sR0FBR0wsTUFBTSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWpDLE9BQU8sSUFBSSxJQUFJLENBQUNDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sQ0FBQztFQUMvQztFQUVBQyxXQUFXQSxDQUFDSixJQUFZLEVBQUVDLEtBQWEsRUFBRUMsT0FBZSxFQUFFQyxNQUFjLEVBQUU7SUFDeEUsSUFBSSxDQUFDTCxNQUFNLEdBQUdPLFNBQVM7SUFFdkIsSUFBSSxDQUFDTCxJQUFJLEdBQUdBLElBQUk7SUFDaEIsSUFBSSxDQUFDQyxLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDQyxPQUFPLEdBQUdBLE9BQU87SUFDdEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdBLE1BQU07SUFFcEIsSUFBSSxJQUFJLENBQUNGLEtBQUssR0FBR2IsS0FBSyxDQUFDTyxJQUFJLEVBQUU7TUFDM0IsSUFBSSxDQUFDVyxRQUFRLEdBQUcsT0FBTztJQUN6QixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUNILE1BQU0sRUFBRTtNQUN0QixJQUFJLENBQUNHLFFBQVEsR0FBR25CLGdCQUFnQixDQUFDLElBQUksQ0FBQ2dCLE1BQU0sQ0FBQztJQUMvQyxDQUFDLE1BQU07TUFDTDtNQUNBO01BQ0EsTUFBTUksVUFBVSxHQUFHLElBQUksQ0FBQ1AsSUFBSSxHQUFHLE1BQU07TUFDckMsSUFBSSxDQUFDTSxRQUFRLEdBQUdyQixvQkFBb0IsQ0FBQ3NCLFVBQVUsQ0FBQztJQUNsRDtFQUNGO0VBRUFDLFFBQVFBLENBQUEsRUFBVztJQUNqQixJQUFJLElBQUksQ0FBQ1YsTUFBTSxFQUFFO01BQ2YsT0FBTyxJQUFJLENBQUNBLE1BQU07SUFDcEI7SUFFQSxJQUFJLENBQUNBLE1BQU0sR0FBR1csTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTdCLElBQUksQ0FBQ1osTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ0UsSUFBSSxHQUFHLElBQUk7SUFDakMsSUFBSSxDQUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUksSUFBSSxDQUFDRSxJQUFJLEtBQUssQ0FBQyxHQUFJLElBQUk7SUFDekMsSUFBSSxDQUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUssSUFBSSxDQUFDRSxJQUFJLEtBQUssRUFBRSxHQUFJLElBQUksR0FBSyxDQUFDLElBQUksQ0FBQ0MsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFFO0lBQ3pFLElBQUksQ0FBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFJLENBQUMsSUFBSSxDQUFDRyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBSyxDQUFDLElBQUksQ0FBQ0MsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFFO0lBQzNFLElBQUksQ0FBQ0osTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQ0ssTUFBTSxHQUFHLElBQUk7SUFFbkMsT0FBTyxJQUFJLENBQUNMLE1BQU07RUFDcEI7QUFDRjtBQUFDWixPQUFBLENBQUFVLFNBQUEsR0FBQUEsU0FBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst Null = {\n  id: 0x1F,\n  type: 'NULL',\n  name: 'Null',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = Null;\nexports.default = _default;\nmodule.exports = Null;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOdWxsIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9udWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOdWxsOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MUYsXG4gIHR5cGU6ICdOVUxMJyxcbiAgbmFtZTogJ051bGwnLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTnVsbDtcbm1vZHVsZS5leHBvcnRzID0gTnVsbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBYyxHQUFHO0VBQ3JCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsTUFBTTtFQUVaQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FFYVYsSUFBSTtBQUFBVyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNuQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdYLElBQUkifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst IntN = {\n  id: 0x26,\n  type: 'INTN',\n  name: 'IntN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = IntN;\nexports.default = _default;\nmodule.exports = IntN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnROIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9pbnRuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBJbnROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjYsXG4gIHR5cGU6ICdJTlROJyxcbiAgbmFtZTogJ0ludE4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50Tjtcbm1vZHVsZS5leHBvcnRzID0gSW50TjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsSUFBYyxHQUFHO0VBQ3JCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsTUFBTTtFQUVaQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FFYVYsSUFBSTtBQUFBVyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNuQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdYLElBQUkifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _intn = _interopRequireDefault(require(\"./intn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst DATA_LENGTH = Buffer.from([0x01]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst TinyInt = {\n  id: 0x30,\n  type: 'INT1',\n  name: 'TinyInt',\n  declaration: function () {\n    return 'tinyint';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_intn.default.id, 0x01]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(1);\n    buffer.writeUInt8(Number(parameter.value), 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'number') {\n      value = Number(value);\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    if (value < 0 || value > 255) {\n      throw new TypeError('Value must be between 0 and 255, inclusive.');\n    }\n    return value | 0;\n  }\n};\nvar _default = TinyInt;\nexports.default = _default;\nmodule.exports = TinyInt;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlRpbnlJbnQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiSW50TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4IiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RpbnlpbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgSW50TiBmcm9tICcuL2ludG4nO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAxXSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IFRpbnlJbnQ6IERhdGFUeXBlID0ge1xuICBpZDogMHgzMCxcbiAgdHlwZTogJ0lOVDEnLFxuICBuYW1lOiAnVGlueUludCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAndGlueWludCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0ludE4uaWQsIDB4MDFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KE51bWJlcihwYXJhbWV0ZXIudmFsdWUpLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSwgaW5jbHVzaXZlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSB8IDA7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpbnlJbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IFRpbnlJbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUUxQixNQUFNRyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1FLE9BQWlCLEdBQUc7RUFDeEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxTQUFTO0VBRWZDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxTQUFTO0VBQ2xCLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1IsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ1EsYUFBSSxDQUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDckMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPWCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0gsV0FBVztFQUNwQixDQUFDO0VBRUQsQ0FBRWUscUJBQXFCQSxDQUFDSCxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1FLE1BQU0sR0FBR2YsTUFBTSxDQUFDZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxVQUFVLENBQUNDLE1BQU0sQ0FBQ1AsU0FBUyxDQUFDRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsTUFBTUUsTUFBTTtFQUNkLENBQUM7RUFFREksUUFBUSxFQUFFLFNBQUFBLENBQVNOLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QkEsS0FBSyxHQUFHSyxNQUFNLENBQUNMLEtBQUssQ0FBQztJQUN2QjtJQUVBLElBQUlPLEtBQUssQ0FBQ1AsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJUSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxJQUFJUixLQUFLLEdBQUcsQ0FBQyxJQUFJQSxLQUFLLEdBQUcsR0FBRyxFQUFFO01BQzVCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLDZDQUE2QyxDQUFDO0lBQ3BFO0lBRUEsT0FBT1IsS0FBSyxHQUFHLENBQUM7RUFDbEI7QUFDRixDQUFDO0FBQUMsSUFBQVMsUUFBQSxHQUVhbkIsT0FBTztBQUFBb0IsT0FBQSxDQUFBekIsT0FBQSxHQUFBd0IsUUFBQTtBQUN0QkUsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQixPQUFPIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst BitN = {\n  id: 0x68,\n  type: 'BITN',\n  name: 'BitN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  *generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = BitN;\nexports.default = _default;\nmodule.exports = BitN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaXROIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiRXJyb3IiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9iaXRuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBCaXROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NjgsXG4gIHR5cGU6ICdCSVROJyxcbiAgbmFtZTogJ0JpdE4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCaXROO1xubW9kdWxlLmV4cG9ydHMgPSBCaXROO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFNO0VBRVpDLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJRCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERSx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRUQsQ0FBRUcscUJBQXFCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLElBQUk7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDbkJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxJQUFJIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _bitn = _interopRequireDefault(require(\"./bitn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst DATA_LENGTH = Buffer.from([0x01]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst Bit = {\n  id: 0x32,\n  type: 'BIT',\n  name: 'Bit',\n  declaration: function () {\n    return 'bit';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_bitn.default.id, 0x01]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield parameter.value ? Buffer.from([0x01]) : Buffer.from([0x00]);\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (value) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n};\nvar _default = Bit;\nexports.default = _default;\nmodule.exports = Bit;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYml0biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIkJpdCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJCaXROIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2JpdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBCaXROIGZyb20gJy4vYml0bic7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDFdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgQml0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MzIsXG4gIHR5cGU6ICdCSVQnLFxuICBuYW1lOiAnQml0JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdiaXQnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtCaXROLmlkLCAweDAxXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIHBhcmFtZXRlci52YWx1ZSA/IEJ1ZmZlci5mcm9tKFsweDAxXSkgOiBCdWZmZXIuZnJvbShbMHgwMF0pO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJpdDtcbm1vZHVsZS5leHBvcnRzID0gQml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxLQUFLO0VBQ2QsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxPQUFPSCxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFZSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUYsU0FBUyxDQUFDRSxLQUFLLEdBQUdiLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBR0QsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNuRSxDQUFDO0VBRURjLFFBQVEsRUFBRSxTQUFBQSxDQUFTRixLQUFLLEVBQWtCO0lBQ3hDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJQSxLQUFLLEVBQUU7TUFDVCxPQUFPLElBQUk7SUFDYixDQUFDLE1BQU07TUFDTCxPQUFPLEtBQUs7SUFDZDtFQUNGO0FBQ0YsQ0FBQztBQUFDLElBQUFHLFFBQUEsR0FFYWIsR0FBRztBQUFBYyxPQUFBLENBQUFuQixPQUFBLEdBQUFrQixRQUFBO0FBQ2xCRSxNQUFNLENBQUNELE9BQU8sR0FBR2QsR0FBRyJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _intn = _interopRequireDefault(require(\"./intn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst DATA_LENGTH = Buffer.from([0x02]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst SmallInt = {\n  id: 0x34,\n  type: 'INT2',\n  name: 'SmallInt',\n  declaration: function () {\n    return 'smallint';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_intn.default.id, 0x02]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(2);\n    buffer.writeInt16LE(Number(parameter.value), 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'number') {\n      value = Number(value);\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    if (value < -32768 || value > 32767) {\n      throw new TypeError('Value must be between -32768 and 32767, inclusive.');\n    }\n    return value | 0;\n  }\n};\nvar _default = SmallInt;\nexports.default = _default;\nmodule.exports = SmallInt;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlNtYWxsSW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkludE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQxNkxFIiwiTnVtYmVyIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3NtYWxsaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEludE4gZnJvbSAnLi9pbnRuJztcblxuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMl0pO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBTbWFsbEludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDM0LFxuICB0eXBlOiAnSU5UMicsXG4gIG5hbWU6ICdTbWFsbEludCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAnc21hbGxpbnQnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtJbnROLmlkLCAweDAyXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBidWZmZXIud3JpdGVJbnQxNkxFKE51bWJlcihwYXJhbWV0ZXIudmFsdWUpLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgLTMyNzY4IHx8IHZhbHVlID4gMzI3NjcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAtMzI3NjggYW5kIDMyNzY3LCBpbmNsdXNpdmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlIHwgMDtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU21hbGxJbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IFNtYWxsSW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxRQUFrQixHQUFHO0VBQ3pCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLFVBQVU7RUFDbkIsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxPQUFPSCxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFZSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsTUFBTSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCQSxLQUFLLEdBQUdLLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDO0lBQ3ZCO0lBRUEsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUlSLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSUEsS0FBSyxHQUFHLEtBQUssRUFBRTtNQUNuQyxNQUFNLElBQUlRLFNBQVMsQ0FBQyxvREFBb0QsQ0FBQztJQUMzRTtJQUVBLE9BQU9SLEtBQUssR0FBRyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FFYW5CLFFBQVE7QUFBQW9CLE9BQUEsQ0FBQXpCLE9BQUEsR0FBQXdCLFFBQUE7QUFDdkJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsUUFBUSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _intn = _interopRequireDefault(require(\"./intn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst Int = {\n  id: 0x38,\n  type: 'INT4',\n  name: 'Int',\n  declaration: function () {\n    return 'int';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_intn.default.id, 0x04]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeInt32LE(Number(parameter.value), 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'number') {\n      value = Number(value);\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    if (value < -2147483648 || value > 2147483647) {\n      throw new TypeError('Value must be between -2147483648 and 2147483647, inclusive.');\n    }\n    return value | 0;\n  }\n};\nvar _default = Int;\nexports.default = _default;\nmodule.exports = Int;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIkludCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJJbnROIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlSW50MzJMRSIsIk51bWJlciIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9pbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgSW50TiBmcm9tICcuL2ludG4nO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA0XSk7XG5cbmNvbnN0IEludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDM4LFxuICB0eXBlOiAnSU5UNCcsXG4gIG5hbWU6ICdJbnQnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ2ludCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0ludE4uaWQsIDB4MDRdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUoTnVtYmVyKHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPCAtMjE0NzQ4MzY0OCB8fCB2YWx1ZSA+IDIxNDc0ODM2NDcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYmV0d2VlbiAtMjE0NzQ4MzY0OCBhbmQgMjE0NzQ4MzY0NywgaW5jbHVzaXZlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSB8IDA7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEludDtcbm1vZHVsZS5leHBvcnRzID0gSW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxLQUFLO0VBQ2QsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxhQUFJLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsTUFBTSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCQSxLQUFLLEdBQUdLLE1BQU0sQ0FBQ0wsS0FBSyxDQUFDO0lBQ3ZCO0lBRUEsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUlSLEtBQUssR0FBRyxDQUFDLFVBQVUsSUFBSUEsS0FBSyxHQUFHLFVBQVUsRUFBRTtNQUM3QyxNQUFNLElBQUlRLFNBQVMsQ0FBQyw4REFBOEQsQ0FBQztJQUNyRjtJQUVBLE9BQU9SLEtBQUssR0FBRyxDQUFDO0VBQ2xCO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FFYW5CLEdBQUc7QUFBQW9CLE9BQUEsQ0FBQXpCLE9BQUEsR0FBQXdCLFFBQUE7QUFDbEJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsR0FBRyJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst DateTimeN = {\n  id: 0x6F,\n  type: 'DATETIMN',\n  name: 'DateTimeN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = DateTimeN;\nexports.default = _default;\nmodule.exports = DateTimeN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgRGF0ZVRpbWVOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkYsXG4gIHR5cGU6ICdEQVRFVElNTicsXG4gIG5hbWU6ICdEYXRlVGltZU4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVOO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZU47XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFNBQW1CLEdBQUc7RUFDMUJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsV0FBVztFQUVqQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLFNBQVM7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDeEJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxTQUFTIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _datetimen = _interopRequireDefault(require(\"./datetimen\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst EPOCH_DATE = new Date(1900, 0, 1);\nconst UTC_EPOCH_DATE = new Date(Date.UTC(1900, 0, 1));\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst SmallDateTime = {\n  id: 0x3A,\n  type: 'DATETIM4',\n  name: 'SmallDateTime',\n  declaration: function () {\n    return 'smalldatetime';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_datetimen.default.id, 0x04]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  generateParameterData: function* (parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(4);\n    let days, dstDiff, minutes;\n    if (options.useUTC) {\n      days = Math.floor((parameter.value.getTime() - UTC_EPOCH_DATE.getTime()) / (1000 * 60 * 60 * 24));\n      minutes = parameter.value.getUTCHours() * 60 + parameter.value.getUTCMinutes();\n    } else {\n      dstDiff = -(parameter.value.getTimezoneOffset() - EPOCH_DATE.getTimezoneOffset()) * 60 * 1000;\n      days = Math.floor((parameter.value.getTime() - EPOCH_DATE.getTime() + dstDiff) / (1000 * 60 * 60 * 24));\n      minutes = parameter.value.getHours() * 60 + parameter.value.getMinutes();\n    }\n    buffer.writeUInt16LE(days, 0);\n    buffer.writeUInt16LE(minutes, 2);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof Date)) {\n      value = new Date(Date.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid date.');\n    }\n    return value;\n  }\n};\nvar _default = SmallDateTime;\nexports.default = _default;\nmodule.exports = SmallDateTime;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJEYXRlIiwiVVRDX0VQT0NIX0RBVEUiLCJVVEMiLCJEQVRBX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVUxMX0xFTkdUSCIsIlNtYWxsRGF0ZVRpbWUiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiRGF0ZVRpbWVOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsImRheXMiLCJkc3REaWZmIiwibWludXRlcyIsInVzZVVUQyIsIk1hdGgiLCJmbG9vciIsImdldFRpbWUiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRUaW1lem9uZU9mZnNldCIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsIndyaXRlVUludDE2TEUiLCJ2YWxpZGF0ZSIsInBhcnNlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zbWFsbGRhdGV0aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IERhdGVUaW1lTiBmcm9tICcuL2RhdGV0aW1lbic7XG5cbmNvbnN0IEVQT0NIX0RBVEUgPSBuZXcgRGF0ZSgxOTAwLCAwLCAxKTtcbmNvbnN0IFVUQ19FUE9DSF9EQVRFID0gbmV3IERhdGUoRGF0ZS5VVEMoMTkwMCwgMCwgMSkpO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA0XSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IFNtYWxsRGF0ZVRpbWU6IERhdGFUeXBlID0ge1xuICBpZDogMHgzQSxcbiAgdHlwZTogJ0RBVEVUSU00JyxcbiAgbmFtZTogJ1NtYWxsRGF0ZVRpbWUnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3NtYWxsZGF0ZXRpbWUnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtEYXRlVGltZU4uaWQsIDB4MDRdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhOiBmdW5jdGlvbioocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuXG4gICAgbGV0IGRheXMsIGRzdERpZmYsIG1pbnV0ZXM7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXlzID0gTWF0aC5mbG9vcigocGFyYW1ldGVyLnZhbHVlLmdldFRpbWUoKSAtIFVUQ19FUE9DSF9EQVRFLmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgbWludXRlcyA9IChwYXJhbWV0ZXIudmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwKSArIHBhcmFtZXRlci52YWx1ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRzdERpZmYgPSAtKHBhcmFtZXRlci52YWx1ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gRVBPQ0hfREFURS5nZXRUaW1lem9uZU9mZnNldCgpKSAqIDYwICogMTAwMDtcbiAgICAgIGRheXMgPSBNYXRoLmZsb29yKChwYXJhbWV0ZXIudmFsdWUuZ2V0VGltZSgpIC0gRVBPQ0hfREFURS5nZXRUaW1lKCkgKyBkc3REaWZmKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICBtaW51dGVzID0gKHBhcmFtZXRlci52YWx1ZS5nZXRIb3VycygpICogNjApICsgcGFyYW1ldGVyLnZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShkYXlzLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShtaW51dGVzLCAyKTtcblxuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgRGF0ZSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNtYWxsRGF0ZVRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IFNtYWxsRGF0ZVRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFvQyxTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVwQyxNQUFNRyxVQUFVLEdBQUcsSUFBSUMs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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst FloatN = {\n  id: 0x6D,\n  type: 'FLTN',\n  name: 'FloatN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = FloatN;\nexports.default = _default;\nmodule.exports = FloatN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9hdE4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2Zsb2F0bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgRmxvYXROOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkQsXG4gIHR5cGU6ICdGTFROJyxcbiAgbmFtZTogJ0Zsb2F0TicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGbG9hdE47XG5tb2R1bGUuZXhwb3J0cyA9IEZsb2F0TjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsTUFBZ0IsR0FBRztFQUN2QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBSSxFQUFFLFFBQVE7RUFFZEMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLE1BQU07QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDckJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxNQUFNIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _floatn = _interopRequireDefault(require(\"./floatn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst Real = {\n  id: 0x3B,\n  type: 'FLT4',\n  name: 'Real',\n  declaration: function () {\n    return 'real';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_floatn.default.id, 0x04]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeFloatLE(parseFloat(parameter.value), 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    return value;\n  }\n};\nvar _default = Real;\nexports.default = _default;\nmodule.exports = Real;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiUmVhbCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJGbG9hdE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVGbG9hdExFIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9yZWFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEZsb2F0TiBmcm9tICcuL2Zsb2F0bic7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDRdKTtcblxuY29uc3QgUmVhbDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNCLFxuICB0eXBlOiAnRkxUNCcsXG4gIG5hbWU6ICdSZWFsJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdyZWFsJztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbRmxvYXROLmlkLCAweDA0XSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBidWZmZXIud3JpdGVGbG9hdExFKHBhcnNlRmxvYXQocGFyYW1ldGVyLnZhbHVlKSwgMCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFsO1xubW9kdWxlLmV4cG9ydHMgPSBSZWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNRSxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFNO0VBRVpDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxNQUFNO0VBQ2YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDUSxlQUFNLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN2QyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZixNQUFNLENBQUNnQixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFlBQVksQ0FBQ0MsVUFBVSxDQUFDUCxTQUFTLENBQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESSxRQUFRLEVBQUUsU0FBQUEsQ0FBU04sS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBQ0FBLEtBQUssR0FBR0ssVUFBVSxDQUFDTCxLQUFLLENBQUM7SUFDekIsSUFBSU8sS0FBSyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlRLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUNBLE9BQU9SLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBUyxRQUFBLEdBRWFuQixJQUFJO0FBQUFvQixPQUFBLENBQUF6QixPQUFBLEdBQUF3QixRQUFBO0FBQ25CRSxNQUFNLENBQUNELE9BQU8sR0FBR3BCLElBQUkifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst MoneyN = {\n  id: 0x6E,\n  type: 'MONEYN',\n  name: 'MoneyN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = MoneyN;\nexports.default = _default;\nmodule.exports = MoneyN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb25leU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL21vbmV5bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTW9uZXlOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkUsXG4gIHR5cGU6ICdNT05FWU4nLFxuICBuYW1lOiAnTW9uZXlOJyxcblxuICBkZWNsYXJhdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vbmV5Tjtcbm1vZHVsZS5leHBvcnRzID0gTW9uZXlOO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxNQUFnQixHQUFHO0VBQ3ZCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUUsUUFBUTtFQUVkQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FFYVYsTUFBTTtBQUFBVyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNyQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdYLE1BQU0ifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _moneyn = _interopRequireDefault(require(\"./moneyn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x08]);\nconst Money = {\n  id: 0x3C,\n  type: 'MONEY',\n  name: 'Money',\n  declaration: function () {\n    return 'money';\n  },\n  generateTypeInfo: function () {\n    return Buffer.from([_moneyn.default.id, 0x08]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value * 10000;\n    const buffer = Buffer.alloc(8);\n    buffer.writeInt32LE(Math.floor(value * SHIFT_RIGHT_32), 0);\n    buffer.writeInt32LE(value & -1, 4);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    return value;\n  }\n};\nvar _default = Money;\nexports.default = _default;\nmodule.exports = Money;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZXluIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlNISUZUX0xFRlRfMzIiLCJTSElGVF9SSUdIVF8zMiIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiTW9uZXkiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiTW9uZXlOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlSW50MzJMRSIsIk1hdGgiLCJmbG9vciIsInZhbGlkYXRlIiwicGFyc2VGbG9hdCIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbW9uZXkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgTW9uZXlOIGZyb20gJy4vbW9uZXluJztcblxuY29uc3QgU0hJRlRfTEVGVF8zMiA9ICgxIDw8IDE2KSAqICgxIDw8IDE2KTtcbmNvbnN0IFNISUZUX1JJR0hUXzMyID0gMSAvIFNISUZUX0xFRlRfMzI7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDhdKTtcblxuY29uc3QgTW9uZXk6IERhdGFUeXBlID0ge1xuICBpZDogMHgzQyxcbiAgdHlwZTogJ01PTkVZJyxcbiAgbmFtZTogJ01vbmV5JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdtb25leSc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbzogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFtNb25leU4uaWQsIDB4MDhdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgKiAxMDAwMDtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgKiBTSElGVF9SSUdIVF8zMiksIDApO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUgJiAtMSwgNCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb25leTtcbm1vZHVsZS5leHBvcnRzID0gTW9uZXk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUE4QixTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUU5QixNQUFNRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsTUFBTUMsY0FBYyxHQUFHLENBQUMsR0FBR0QsYUFBYTtBQUV4QyxNQUFNRSxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1FLEtBQWUsR0FBRztFQUN0QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFLE9BQU87RUFFYkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLE9BQU87RUFDaEIsQ0FBQztFQUVEQyxnQkFBZ0IsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDM0IsT0FBT1IsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ1EsZUFBTSxDQUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDdkMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPZCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0csV0FBVztFQUNwQixDQUFDO0VBRUQsQ0FBRVkscUJBQXFCQSxDQUFDSCxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1BLEtBQUssR0FBR0YsU0FBUyxDQUFDRSxLQUFLLEdBQUcsS0FBSztJQUVyQyxNQUFNRSxNQUFNLEdBQUdmLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDQyxJQUFJLENBQUNDLEtBQUssQ0FBQ04sS0FBSyxHQUFHZixjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMURpQixNQUFNLENBQUNFLFlBQVksQ0FBQ0osS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxNQUFNRSxNQUFNO0VBQ2QsQ0FBQztFQUVESyxRQUFRLEVBQUUsU0FBQUEsQ0FBU1AsS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBQ0FBLEtBQUssR0FBR1EsVUFBVSxDQUFDUixLQUFLLENBQUM7SUFDekIsSUFBSVMsS0FBSyxDQUFDVCxLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlVLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUNBLE9BQU9WLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBVyxRQUFBLEdBRWFyQixLQUFLO0FBQUFzQixPQUFBLENBQUE3QixPQUFBLEdBQUE0QixRQUFBO0FBQ3BCRSxNQUFNLENBQUNELE9BQU8sR0FBR3RCLEtBQUsifQ==","//! @version @js-joda/core - 5.6.1\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nfunction createErrorType(name, init, superErrorClass) {\n  if (superErrorClass === void 0) {\n    superErrorClass = Error;\n  }\n  function JsJodaException(message) {\n    if (!Error.captureStackTrace) {\n      this.stack = new Error().stack;\n    } else {\n      Error.captureStackTrace(this, this.constructor);\n    }\n    this.message = message;\n    init && init.apply(this, arguments);\n    this.toString = function () {\n      return this.name + \": \" + this.message;\n    };\n  }\n  JsJodaException.prototype = Object.create(superErrorClass.prototype);\n  JsJodaException.prototype.name = name;\n  JsJodaException.prototype.constructor = JsJodaException;\n  return JsJodaException;\n}\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\nfunction messageWithCause(message, cause) {\n  if (cause === void 0) {\n    cause = null;\n  }\n  var msg = message || this.name;\n  if (cause !== null && cause instanceof Error) {\n    msg += \"\\n-------\\nCaused by: \" + cause.stack + \"\\n-------\\n\";\n  }\n  this.message = msg;\n}\nfunction messageForDateTimeParseException(message, text, index, cause) {\n  if (text === void 0) {\n    text = '';\n  }\n  if (index === void 0) {\n    index = 0;\n  }\n  if (cause === void 0) {\n    cause = null;\n  }\n  var msg = message || this.name;\n  msg += \": \" + text + \", at index: \" + index;\n  if (cause !== null && cause instanceof Error) {\n    msg += \"\\n-------\\nCaused by: \" + cause.stack + \"\\n-------\\n\";\n  }\n  this.message = msg;\n  this.parsedString = function () {\n    return text;\n  };\n  this.errorIndex = function () {\n    return index;\n  };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n  if (!assertion) {\n    if (error) {\n      throw new error(msg);\n    } else {\n      throw new Error(msg);\n    }\n  }\n}\nfunction requireNonNull(value, parameterName) {\n  if (value == null) {\n    throw new NullPointerException(parameterName + \" must not be null\");\n  }\n  return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n  if (!(value instanceof _class)) {\n    throw new IllegalArgumentException(parameterName + \" must be an instance of \" + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? \", but is \" + value.constructor.name : ''));\n  }\n  return value;\n}\nfunction abstractMethodFail(methodName) {\n  throw new TypeError(\"abstract method \\\"\" + methodName + \"\\\" is not implemented\");\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    assert: assert,\n    requireNonNull: requireNonNull,\n    requireInstance: requireInstance,\n    abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n  function MathUtil() {}\n  MathUtil.intDiv = function intDiv(x, y) {\n    var r = x / y;\n    r = MathUtil.roundDown(r);\n    return MathUtil.safeZero(r);\n  };\n  MathUtil.intMod = function intMod(x, y) {\n    var r = x - MathUtil.intDiv(x, y) * y;\n    r = MathUtil.roundDown(r);\n    return MathUtil.safeZero(r);\n  };\n  MathUtil.roundDown = function roundDown(r) {\n    if (r < 0) {\n      return Math.ceil(r);\n    } else {\n      return Math.floor(r);\n    }\n  };\n  MathUtil.floorDiv = function floorDiv(x, y) {\n    var r = Math.floor(x / y);\n    return MathUtil.safeZero(r);\n  };\n  MathUtil.floorMod = function floorMod(x, y) {\n    var r = x - MathUtil.floorDiv(x, y) * y;\n    return MathUtil.safeZero(r);\n  };\n  MathUtil.safeAdd = function safeAdd(x, y) {\n    MathUtil.verifyInt(x);\n    MathUtil.verifyInt(y);\n    if (x === 0) {\n      return MathUtil.safeZero(y);\n    }\n    if (y === 0) {\n      return MathUtil.safeZero(x);\n    }\n    var r = MathUtil.safeToInt(x + y);\n    if (r === x || r === y) {\n      throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n    }\n    return r;\n  };\n  MathUtil.safeSubtract = function safeSubtract(x, y) {\n    MathUtil.verifyInt(x);\n    MathUtil.verifyInt(y);\n    if (x === 0 && y === 0) {\n      return 0;\n    } else if (x === 0) {\n      return MathUtil.safeZero(-1 * y);\n    } else if (y === 0) {\n      return MathUtil.safeZero(x);\n    }\n    return MathUtil.safeToInt(x - y);\n  };\n  MathUtil.safeMultiply = function safeMultiply(x, y) {\n    MathUtil.verifyInt(x);\n    MathUtil.verifyInt(y);\n    if (x === 1) {\n      return MathUtil.safeZero(y);\n    }\n    if (y === 1) {\n      return MathUtil.safeZero(x);\n    }\n    if (x === 0 || y === 0) {\n      return 0;\n    }\n    var r = MathUtil.safeToInt(x * y);\n    if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n      throw new ArithmeticException(\"Multiplication overflows: \" + x + \" * \" + y);\n    }\n    return r;\n  };\n  MathUtil.parseInt = function (_parseInt) {\n    function parseInt(_x) {\n      return _parseInt.apply(this, arguments);\n    }\n    parseInt.toString = function () {\n      return _parseInt.toString();\n    };\n    return parseInt;\n  }(function (value) {\n    var r = parseInt(value);\n    return MathUtil.safeToInt(r);\n  });\n  MathUtil.safeToInt = function safeToInt(value) {\n    MathUtil.verifyInt(value);\n    return MathUtil.safeZero(value);\n  };\n  MathUtil.verifyInt = function verifyInt(value) {\n    if (value == null) {\n      throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n    }\n    if (isNaN(value)) {\n      throw new ArithmeticException('Invalid int value, using NaN as argument');\n    }\n    if (value % 1 !== 0) {\n      throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n    }\n    if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n      throw new ArithmeticException(\"Calculation overflows an int: \" + value);\n    }\n  };\n  MathUtil.safeZero = function safeZero(value) {\n    return value === 0 ? 0 : +value;\n  };\n  MathUtil.compareNumbers = function compareNumbers(a, b) {\n    if (a < b) {\n      return -1;\n    }\n    if (a > b) {\n      return 1;\n    }\n    return 0;\n  };\n  MathUtil.smi = function smi(int) {\n    return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n  };\n  MathUtil.hash = function hash(number) {\n    if (number !== number || number === Infinity) {\n      return 0;\n    }\n    var result = number;\n    while (number > 0xFFFFFFFF) {\n      number /= 0xFFFFFFFF;\n      result ^= number;\n    }\n    return MathUtil.smi(result);\n  };\n  MathUtil.hashCode = function hashCode() {\n    var result = 17;\n    for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n      numbers[_key] = arguments[_key];\n    }\n    for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n      var n = _numbers[_i];\n      result = (result << 5) - result + MathUtil.hash(n);\n    }\n    return MathUtil.hash(result);\n  };\n  return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var Enum = function () {\n  function Enum(name) {\n    this._name = name;\n  }\n  var _proto = Enum.prototype;\n  _proto.equals = function equals(other) {\n    return this === other;\n  };\n  _proto.toString = function toString() {\n    return this._name;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n  function TemporalAmount() {}\n  var _proto = TemporalAmount.prototype;\n  _proto.get = function get(unit) {\n    abstractMethodFail('get');\n  };\n  _proto.units = function units() {\n    abstractMethodFail('units');\n  };\n  _proto.addTo = function addTo(temporal) {\n    abstractMethodFail('addTo');\n  };\n  _proto.subtractFrom = function subtractFrom(temporal) {\n    abstractMethodFail('subtractFrom');\n  };\n  return TemporalAmount;\n}();\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n  TemporalAmount.prototype[Symbol.toPrimitive] = function (hint) {\n    if (hint !== 'number') {\n      return this.toString();\n    }\n    throw new TypeError('A conversion from TemporalAmount to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.');\n  };\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n  function TemporalUnit() {}\n  var _proto = TemporalUnit.prototype;\n  _proto.duration = function duration() {\n    abstractMethodFail('duration');\n  };\n  _proto.isDurationEstimated = function isDurationEstimated() {\n    abstractMethodFail('isDurationEstimated');\n  };\n  _proto.isDateBased = function isDateBased() {\n    abstractMethodFail('isDateBased');\n  };\n  _proto.isTimeBased = function isTimeBased() {\n    abstractMethodFail('isTimeBased');\n  };\n  _proto.isSupportedBy = function isSupportedBy(temporal) {\n    abstractMethodFail('isSupportedBy');\n  };\n  _proto.addTo = function addTo(dateTime, periodToAdd) {\n    abstractMethodFail('addTo');\n  };\n  _proto.between = function between(temporal1, temporal2) {\n    abstractMethodFail('between');\n  };\n  return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n  _inheritsLoose(Duration, _TemporalAmount);\n  function Duration(seconds, nanos) {\n    var _this;\n    _this = _TemporalAmount.call(this) || this;\n    _this._seconds = MathUtil.safeToInt(seconds);\n    _this._nanos = MathUtil.safeToInt(nanos);\n    return _this;\n  }\n  Duration.ofDays = function ofDays(days) {\n    return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n  };\n  Duration.ofHours = function ofHours(hours) {\n    return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n  };\n  Duration.ofMinutes = function ofMinutes(minutes) {\n    return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n  };\n  Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n    if (nanoAdjustment === void 0) {\n      nanoAdjustment = 0;\n    }\n    var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n    var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n    return Duration._create(secs, nos);\n  };\n  Duration.ofMillis = function ofMillis(millis) {\n    var secs = MathUtil.intDiv(millis, 1000);\n    var mos = MathUtil.intMod(millis, 1000);\n    if (mos < 0) {\n      mos += 1000;\n      secs--;\n    }\n    return Duration._create(secs, mos * 1000000);\n  };\n  Duration.ofNanos = function ofNanos(nanos) {\n    var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n    var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n    if (nos < 0) {\n      nos += LocalTime.NANOS_PER_SECOND;\n      secs--;\n    }\n    return this._create(secs, nos);\n  };\n  Duration.of = function of(amount, unit) {\n    return Duration.ZERO.plus(amount, unit);\n  };\n  Duration.from = function from(amount) {\n    requireNonNull(amount, 'amount');\n    requireInstance(amount, TemporalAmount);\n    var duration = Duration.ZERO;\n    amount.units().forEach(function (unit) {\n      duration = duration.plus(amount.get(unit), unit);\n    });\n    return duration;\n  };\n  Duration.between = function between(startInclusive, endExclusive) {\n    requireNonNull(startInclusive, 'startInclusive');\n    requireNonNull(endExclusive, 'endExclusive');\n    var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n    var nanos = 0;\n    if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n      try {\n        var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n        nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n        if (secs > 0 && nanos < 0) {\n          nanos += LocalTime.NANOS_PER_SECOND;\n        } else if (secs < 0 && nanos > 0) {\n          nanos -= LocalTime.NANOS_PER_SECOND;\n        } else if (secs === 0 && nanos !== 0) {\n          var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n          secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n        }\n      } catch (e) {}\n    }\n    return this.ofSeconds(secs, nanos);\n  };\n  Duration.parse = function parse(text) {\n    requireNonNull(text, 'text');\n    var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n    var matches = PATTERN.exec(text);\n    if (matches !== null) {\n      if ('T' === matches[3] === false) {\n        var negate = '-' === matches[1];\n        var dayMatch = matches[2];\n        var hourMatch = matches[4];\n        var minuteMatch = matches[5];\n        var secondMatch = matches[6];\n        var fractionMatch = matches[7];\n        if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n          var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n          var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n          var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n          var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n          var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n          var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n          try {\n            return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n          } catch (ex) {\n            throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n          }\n        }\n      }\n    }\n    throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n  };\n  Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n    if (parsed == null) {\n      return 0;\n    }\n    try {\n      if (parsed[0] === '+') {\n        parsed = parsed.substring(1);\n      }\n      return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n    } catch (ex) {\n      throw new DateTimeParseException(\"Text cannot be parsed to a Duration: \" + errorText, text, 0, ex);\n    }\n  };\n  Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n    if (parsed == null || parsed.length === 0) {\n      return 0;\n    }\n    parsed = (parsed + \"000000000\").substring(0, 9);\n    return parseFloat(parsed) * negate;\n  };\n  Duration._create = function _create() {\n    if (arguments.length <= 2) {\n      return Duration._createSecondsNanos(arguments[0], arguments[1]);\n    } else {\n      return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n    }\n  };\n  Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n    var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n    if (negate) {\n      return Duration.ofSeconds(seconds, nanos).negated();\n    }\n    return Duration.ofSeconds(seconds, nanos);\n  };\n  Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n    if (seconds === void 0) {\n      seconds = 0;\n    }\n    if (nanoAdjustment === void 0) {\n      nanoAdjustment = 0;\n    }\n    if (seconds === 0 && nanoAdjustment === 0) {\n      return Duration.ZERO;\n    }\n    return new Duration(seconds, nanoAdjustment);\n  };\n  var _proto = Duration.prototype;\n  _proto.get = function get(unit) {\n    if (unit === ChronoUnit.SECONDS) {\n      return this._seconds;\n    } else if (unit === ChronoUnit.NANOS) {\n      return this._nanos;\n    } else {\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n  };\n  _proto.units = function units() {\n    return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n  };\n  _proto.isZero = function isZero() {\n    return this._seconds === 0 && this._nanos === 0;\n  };\n  _proto.isNegative = function isNegative() {\n    return this._seconds < 0;\n  };\n  _proto.seconds = function seconds() {\n    return this._seconds;\n  };\n  _proto.nano = function nano() {\n    return this._nanos;\n  };\n  _proto.withSeconds = function withSeconds(seconds) {\n    return Duration._create(seconds, this._nanos);\n  };\n  _proto.withNanos = function withNanos(nanoOfSecond) {\n    ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n    return Duration._create(this._seconds, nanoOfSecond);\n  };\n  _proto.plusDuration = function plusDuration(duration) {\n    requireNonNull(duration, 'duration');\n    return this.plus(duration.seconds(), duration.nano());\n  };\n  _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n    if (arguments.length === 1) {\n      return this.plusDuration(durationOrNumber);\n    } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n      return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n    } else {\n      return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n    }\n  };\n  _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n    requireNonNull(amountToAdd, 'amountToAdd');\n    requireNonNull(unit, 'unit');\n    if (unit === ChronoUnit.DAYS) {\n      return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n    }\n    if (unit.isDurationEstimated()) {\n      throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n    }\n    if (amountToAdd === 0) {\n      return this;\n    }\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return this.plusNanos(amountToAdd);\n        case ChronoUnit.MICROS:\n          return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n        case ChronoUnit.MILLIS:\n          return this.plusMillis(amountToAdd);\n        case ChronoUnit.SECONDS:\n          return this.plusSeconds(amountToAdd);\n      }\n      return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n    }\n    var duration = unit.duration().multipliedBy(amountToAdd);\n    return this.plusSecondsNanos(duration.seconds(), duration.nano());\n  };\n  _proto.plusDays = function plusDays(daysToAdd) {\n    return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n  };\n  _proto.plusHours = function plusHours(hoursToAdd) {\n    return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n  };\n  _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n    return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n  };\n  _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n    return this.plusSecondsNanos(secondsToAdd, 0);\n  };\n  _proto.plusMillis = function plusMillis(millisToAdd) {\n    return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n  };\n  _proto.plusNanos = function plusNanos(nanosToAdd) {\n    return this.plusSecondsNanos(0, nanosToAdd);\n  };\n  _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n    requireNonNull(secondsToAdd, 'secondsToAdd');\n    requireNonNull(nanosToAdd, 'nanosToAdd');\n    if (secondsToAdd === 0 && nanosToAdd === 0) {\n      return this;\n    }\n    var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n    epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n    nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n    var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n    return Duration.ofSeconds(epochSec, nanoAdjustment);\n  };\n  _proto.minus = function minus(durationOrNumber, unit) {\n    if (arguments.length === 1) {\n      return this.minusDuration(durationOrNumber);\n    } else {\n      return this.minusAmountUnit(durationOrNumber, unit);\n    }\n  };\n  _proto.minusDuration = function minusDuration(duration) {\n    requireNonNull(duration, 'duration');\n    var secsToSubtract = duration.seconds();\n    var nanosToSubtract = duration.nano();\n    if (secsToSubtract === MIN_SAFE_INTEGER) {\n      return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n    }\n    return this.plus(-secsToSubtract, -nanosToSubtract);\n  };\n  _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n    requireNonNull(amountToSubtract, 'amountToSubtract');\n    requireNonNull(unit, 'unit');\n    return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n  };\n  _proto.minusDays = function minusDays(daysToSubtract) {\n    return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n  };\n  _proto.minusHours = function minusHours(hoursToSubtract) {\n    return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n  };\n  _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n    return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n  };\n  _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n    return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n  };\n  _proto.minusMillis = function minusMillis(millisToSubtract) {\n    return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n  };\n  _proto.minusNanos = function minusNanos(nanosToSubtract) {\n    return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n  };\n  _proto.multipliedBy = function multipliedBy(multiplicand) {\n    if (multiplicand === 0) {\n      return Duration.ZERO;\n    }\n    if (multiplicand === 1) {\n      return this;\n    }\n    var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n    var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n    secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n    nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n    return Duration.ofSeconds(secs, nos);\n  };\n  _proto.dividedBy = function dividedBy(divisor) {\n    if (divisor === 0) {\n      throw new ArithmeticException('Cannot divide by zero');\n    }\n    if (divisor === 1) {\n      return this;\n    }\n    var secs = MathUtil.intDiv(this._seconds, divisor);\n    var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n    var nos = MathUtil.intDiv(this._nanos, divisor);\n    nos = secsMod + nos;\n    return Duration.ofSeconds(secs, nos);\n  };\n  _proto.negated = function negated() {\n    return this.multipliedBy(-1);\n  };\n  _proto.abs = function abs() {\n    return this.isNegative() ? this.negated() : this;\n  };\n  _proto.addTo = function addTo(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (this._seconds !== 0) {\n      temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n    }\n    if (this._nanos !== 0) {\n      temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n    }\n    return temporal;\n  };\n  _proto.subtractFrom = function subtractFrom(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (this._seconds !== 0) {\n      temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n    }\n    if (this._nanos !== 0) {\n      temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n    }\n    return temporal;\n  };\n  _proto.toDays = function toDays() {\n    return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n  };\n  _proto.toHours = function toHours() {\n    return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n  };\n  _proto.toMinutes = function toMinutes() {\n    return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n  };\n  _proto.toMillis = function toMillis() {\n    var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n    millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n    return millis;\n  };\n  _proto.toNanos = function toNanos() {\n    var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n    totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n    return totalNanos;\n  };\n  _proto.compareTo = function compareTo(otherDuration) {\n    requireNonNull(otherDuration, 'otherDuration');\n    requireInstance(otherDuration, Duration, 'otherDuration');\n    var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n    if (cmp !== 0) {\n      return cmp;\n    }\n    return this._nanos - otherDuration.nano();\n  };\n  _proto.equals = function equals(otherDuration) {\n    if (this === otherDuration) {\n      return true;\n    }\n    if (otherDuration instanceof Duration) {\n      return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n    }\n    return false;\n  };\n  _proto.toString = function toString() {\n    if (this === Duration.ZERO) {\n      return 'PT0S';\n    }\n    var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n    var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n    var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n    var rval = 'PT';\n    if (hours !== 0) {\n      rval += hours + \"H\";\n    }\n    if (minutes !== 0) {\n      rval += minutes + \"M\";\n    }\n    if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n      return rval;\n    }\n    if (secs < 0 && this._nanos > 0) {\n      if (secs === -1) {\n        rval += '-0';\n      } else {\n        rval += secs + 1;\n      }\n    } else {\n      rval += secs;\n    }\n    if (this._nanos > 0) {\n      rval += '.';\n      var nanoString;\n      if (secs < 0) {\n        nanoString = \"\" + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n      } else {\n        nanoString = \"\" + (LocalTime.NANOS_PER_SECOND + this._nanos);\n      }\n      nanoString = nanoString.slice(1, nanoString.length);\n      rval += nanoString;\n      while (rval.charAt(rval.length - 1) === '0') {\n        rval = rval.slice(0, rval.length - 1);\n      }\n    }\n    rval += 'S';\n    return rval;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return Duration;\n}(TemporalAmount);\nfunction _init$n() {\n  Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */var YearConstants = function YearConstants() {};\nfunction _init$m() {\n  YearConstants.MIN_VALUE = -999999;\n  YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n  _inheritsLoose(ChronoUnit, _TemporalUnit);\n  function ChronoUnit(name, estimatedDuration) {\n    var _this;\n    _this = _TemporalUnit.call(this) || this;\n    _this._name = name;\n    _this._duration = estimatedDuration;\n    return _this;\n  }\n  var _proto = ChronoUnit.prototype;\n  _proto.duration = function duration() {\n    return this._duration;\n  };\n  _proto.isDurationEstimated = function isDurationEstimated() {\n    return this.isDateBased() || this === ChronoUnit.FOREVER;\n  };\n  _proto.isDateBased = function isDateBased() {\n    return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n  };\n  _proto.isTimeBased = function isTimeBased() {\n    return this.compareTo(ChronoUnit.DAYS) < 0;\n  };\n  _proto.isSupportedBy = function isSupportedBy(temporal) {\n    if (this === ChronoUnit.FOREVER) {\n      return false;\n    }\n    try {\n      temporal.plus(1, this);\n      return true;\n    } catch (e) {\n      try {\n        temporal.plus(-1, this);\n        return true;\n      } catch (e2) {\n        return false;\n      }\n    }\n  };\n  _proto.addTo = function addTo(temporal, amount) {\n    return temporal.plus(amount, this);\n  };\n  _proto.between = function between(temporal1, temporal2) {\n    return temporal1.until(temporal2, this);\n  };\n  _proto.toString = function toString() {\n    return this._name;\n  };\n  _proto.compareTo = function compareTo(other) {\n    return this.duration().compareTo(other.duration());\n  };\n  return ChronoUnit;\n}(TemporalUnit);\nfunction _init$l() {\n  ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n  ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n  ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n  ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n  ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n  ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n  ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n  ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n  ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n  ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n  ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n  ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n  ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n  ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n  ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n  ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalField = function () {\n  function TemporalField() {}\n  var _proto = TemporalField.prototype;\n  _proto.isDateBased = function isDateBased() {\n    abstractMethodFail('isDateBased');\n  };\n  _proto.isTimeBased = function isTimeBased() {\n    abstractMethodFail('isTimeBased');\n  };\n  _proto.baseUnit = function baseUnit() {\n    abstractMethodFail('baseUnit');\n  };\n  _proto.rangeUnit = function rangeUnit() {\n    abstractMethodFail('rangeUnit');\n  };\n  _proto.range = function range() {\n    abstractMethodFail('range');\n  };\n  _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    abstractMethodFail('rangeRefinedBy');\n  };\n  _proto.getFrom = function getFrom(temporal) {\n    abstractMethodFail('getFrom');\n  };\n  _proto.adjustInto = function adjustInto(temporal, newValue) {\n    abstractMethodFail('adjustInto');\n  };\n  _proto.isSupportedBy = function isSupportedBy(temporal) {\n    abstractMethodFail('isSupportedBy');\n  };\n  _proto.displayName = function displayName() {\n    abstractMethodFail('displayName');\n  };\n  _proto.equals = function equals(other) {\n    abstractMethodFail('equals');\n  };\n  _proto.name = function name() {\n    abstractMethodFail('name');\n  };\n  return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n  function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n    assert(!(minSmallest > minLargest), \"Smallest minimum value '\" + minSmallest + \"' must be less than largest minimum value '\" + minLargest + \"'\", IllegalArgumentException);\n    assert(!(maxSmallest > maxLargest), \"Smallest maximum value '\" + maxSmallest + \"' must be less than largest maximum value '\" + maxLargest + \"'\", IllegalArgumentException);\n    assert(!(minLargest > maxLargest), \"Minimum value '\" + minLargest + \"' must be less than maximum value '\" + maxLargest + \"'\", IllegalArgumentException);\n    this._minSmallest = minSmallest;\n    this._minLargest = minLargest;\n    this._maxLargest = maxLargest;\n    this._maxSmallest = maxSmallest;\n  }\n  var _proto = ValueRange.prototype;\n  _proto.isFixed = function isFixed() {\n    return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n  };\n  _proto.minimum = function minimum() {\n    return this._minSmallest;\n  };\n  _proto.largestMinimum = function largestMinimum() {\n    return this._minLargest;\n  };\n  _proto.maximum = function maximum() {\n    return this._maxLargest;\n  };\n  _proto.smallestMaximum = function smallestMaximum() {\n    return this._maxSmallest;\n  };\n  _proto.isValidValue = function isValidValue(value) {\n    return this.minimum() <= value && value <= this.maximum();\n  };\n  _proto.checkValidValue = function checkValidValue(value, field) {\n    var msg;\n    if (!this.isValidValue(value)) {\n      if (field != null) {\n        msg = \"Invalid value for \" + field + \" (valid values \" + this.toString() + \"): \" + value;\n      } else {\n        msg = \"Invalid value (valid values \" + this.toString() + \"): \" + value;\n      }\n      return assert(false, msg, DateTimeException);\n    }\n    return value;\n  };\n  _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n    if (this.isValidIntValue(value) === false) {\n      throw new DateTimeException(\"Invalid int value for \" + field + \": \" + value);\n    }\n    return value;\n  };\n  _proto.isValidIntValue = function isValidIntValue(value) {\n    return this.isIntValue() && this.isValidValue(value);\n  };\n  _proto.isIntValue = function isIntValue() {\n    return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n  };\n  _proto.equals = function equals(other) {\n    if (other === this) {\n      return true;\n    }\n    if (other instanceof ValueRange) {\n      return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n  };\n  _proto.toString = function toString() {\n    var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? \"/\" + this.largestMinimum() : '');\n    str += ' - ';\n    str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? \"/\" + this.maximum() : '');\n    return str;\n  };\n  ValueRange.of = function of() {\n    if (arguments.length === 2) {\n      return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n    } else if (arguments.length === 3) {\n      return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n    } else if (arguments.length === 4) {\n      return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n    } else {\n      return assert(false, \"Invalid number of arguments \" + arguments.length, IllegalArgumentException);\n    }\n  };\n  return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n  _inheritsLoose(ChronoField, _TemporalField);\n  ChronoField.byName = function byName(fieldName) {\n    for (var prop in ChronoField) {\n      if (ChronoField[prop]) {\n        if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n          return ChronoField[prop];\n        }\n      }\n    }\n  };\n  function ChronoField(name, baseUnit, rangeUnit, range) {\n    var _this;\n    _this = _TemporalField.call(this) || this;\n    _this._name = name;\n    _this._baseUnit = baseUnit;\n    _this._rangeUnit = rangeUnit;\n    _this._range = range;\n    return _this;\n  }\n  var _proto = ChronoField.prototype;\n  _proto.name = function name() {\n    return this._name;\n  };\n  _proto.baseUnit = function baseUnit() {\n    return this._baseUnit;\n  };\n  _proto.rangeUnit = function rangeUnit() {\n    return this._rangeUnit;\n  };\n  _proto.range = function range() {\n    return this._range;\n  };\n  _proto.displayName = function displayName() {\n    return this.toString();\n  };\n  _proto.checkValidValue = function checkValidValue(value) {\n    return this.range().checkValidValue(value, this);\n  };\n  _proto.checkValidIntValue = function checkValidIntValue(value) {\n    return this.range().checkValidIntValue(value, this);\n  };\n  _proto.isDateBased = function isDateBased() {\n    var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.PROLEPTIC_MONTH || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n    return dateBased;\n  };\n  _proto.isTimeBased = function isTimeBased() {\n    var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n    return timeBased;\n  };\n  _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    return temporal.range(this);\n  };\n  _proto.getFrom = function getFrom(temporal) {\n    return temporal.getLong(this);\n  };\n  _proto.toString = function toString() {\n    return this.name();\n  };\n  _proto.equals = function equals(other) {\n    return this === other;\n  };\n  _proto.adjustInto = function adjustInto(temporal, newValue) {\n    return temporal.with(this, newValue);\n  };\n  _proto.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(this);\n  };\n  return ChronoField;\n}(TemporalField);\nfunction _init$k() {\n  ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n  ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n  ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n  ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n  ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n  ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n  ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n  ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n  ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n  ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n  ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n  ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n  ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n  ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n  ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n  ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n  ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n  ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n  ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n  ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n  ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(-365961662, 364522971));\n  ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n  ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n  ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n  ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n  ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n  ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n  ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n  ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n  ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var TemporalQueries = function () {\n  function TemporalQueries() {}\n  TemporalQueries.zoneId = function zoneId() {\n    return TemporalQueries.ZONE_ID;\n  };\n  TemporalQueries.chronology = function chronology() {\n    return TemporalQueries.CHRONO;\n  };\n  TemporalQueries.precision = function precision() {\n    return TemporalQueries.PRECISION;\n  };\n  TemporalQueries.zone = function zone() {\n    return TemporalQueries.ZONE;\n  };\n  TemporalQueries.offset = function offset() {\n    return TemporalQueries.OFFSET;\n  };\n  TemporalQueries.localDate = function localDate() {\n    return TemporalQueries.LOCAL_DATE;\n  };\n  TemporalQueries.localTime = function localTime() {\n    return TemporalQueries.LOCAL_TIME;\n  };\n  return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n  function TemporalAccessor() {}\n  var _proto = TemporalAccessor.prototype;\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n      return null;\n    }\n    return _query.queryFrom(this);\n  };\n  _proto.get = function get(field) {\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    abstractMethodFail('getLong');\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      if (this.isSupported(field)) {\n        return field.range();\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.isSupported = function isSupported(field) {\n    abstractMethodFail('isSupported');\n  };\n  return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n  _inheritsLoose(TemporalQuery, _Enum);\n  function TemporalQuery() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  var _proto = TemporalQuery.prototype;\n  _proto.queryFrom = function queryFrom(temporal) {\n    abstractMethodFail('queryFrom');\n  };\n  return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n  var ExtendedTemporalQuery = function (_TemporalQuery) {\n    _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n    function ExtendedTemporalQuery() {\n      return _TemporalQuery.apply(this, arguments) || this;\n    }\n    return ExtendedTemporalQuery;\n  }(TemporalQuery);\n  ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n  return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n  _inheritsLoose(DayOfWeek, _TemporalAccessor);\n  function DayOfWeek(ordinal, name) {\n    var _this;\n    _this = _TemporalAccessor.call(this) || this;\n    _this._ordinal = ordinal;\n    _this._name = name;\n    return _this;\n  }\n  var _proto = DayOfWeek.prototype;\n  _proto.ordinal = function ordinal() {\n    return this._ordinal;\n  };\n  _proto.name = function name() {\n    return this._name;\n  };\n  DayOfWeek.values = function values() {\n    return ENUMS.slice();\n  };\n  DayOfWeek.valueOf = function valueOf(name) {\n    var ordinal = 0;\n    for (ordinal; ordinal < ENUMS.length; ordinal++) {\n      if (ENUMS[ordinal].name() === name) {\n        break;\n      }\n    }\n    return DayOfWeek.of(ordinal + 1);\n  };\n  DayOfWeek.of = function of(dayOfWeek) {\n    if (dayOfWeek < 1 || dayOfWeek > 7) {\n      throw new DateTimeException(\"Invalid value for DayOfWeek: \" + dayOfWeek);\n    }\n    return ENUMS[dayOfWeek - 1];\n  };\n  DayOfWeek.from = function from(temporal) {\n    assert(temporal != null, 'temporal', NullPointerException);\n    if (temporal instanceof DayOfWeek) {\n      return temporal;\n    }\n    try {\n      return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n    } catch (ex) {\n      if (ex instanceof DateTimeException) {\n        throw new DateTimeException(\"Unable to obtain DayOfWeek from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n      } else {\n        throw ex;\n      }\n    }\n  };\n  _proto.value = function value() {\n    return this._ordinal + 1;\n  };\n  _proto.displayName = function displayName(style, locale) {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n  };\n  _proto.isSupported = function isSupported(field) {\n    if (field instanceof ChronoField) {\n      return field === ChronoField.DAY_OF_WEEK;\n    }\n    return field != null && field.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field === ChronoField.DAY_OF_WEEK) {\n      return field.range();\n    } else if (field instanceof ChronoField) {\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.get = function get(field) {\n    if (field === ChronoField.DAY_OF_WEEK) {\n      return this.value();\n    }\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field === ChronoField.DAY_OF_WEEK) {\n      return this.value();\n    } else if (field instanceof ChronoField) {\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.plus = function plus(days) {\n    var amount = MathUtil.floorMod(days, 7);\n    return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n  };\n  _proto.minus = function minus(days) {\n    return this.plus(-1 * MathUtil.floorMod(days, 7));\n  };\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.DAYS;\n    } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    assert(_query != null, 'query', NullPointerException);\n    return _query.queryFrom(this);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    requireNonNull(temporal, 'temporal');\n    return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n  };\n  _proto.equals = function equals(other) {\n    return this === other;\n  };\n  _proto.toString = function toString() {\n    return this._name;\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, DayOfWeek, 'other');\n    return this._ordinal - other._ordinal;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$j() {\n  DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n  DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n  DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n  DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n  DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n  DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n  DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n  DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n    return DayOfWeek.from(temporal);\n  });\n  ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n  _inheritsLoose(Month, _TemporalAccessor);\n  function Month(value, name) {\n    var _this;\n    _this = _TemporalAccessor.call(this) || this;\n    _this._value = MathUtil.safeToInt(value);\n    _this._name = name;\n    return _this;\n  }\n  var _proto = Month.prototype;\n  _proto.value = function value() {\n    return this._value;\n  };\n  _proto.ordinal = function ordinal() {\n    return this._value - 1;\n  };\n  _proto.name = function name() {\n    return this._name;\n  };\n  _proto.displayName = function displayName(style, locale) {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n  };\n  _proto.isSupported = function isSupported(field) {\n    if (null === field) {\n      return false;\n    }\n    if (field instanceof ChronoField) {\n      return field === ChronoField.MONTH_OF_YEAR;\n    }\n    return field != null && field.isSupportedBy(this);\n  };\n  _proto.get = function get(field) {\n    if (field === ChronoField.MONTH_OF_YEAR) {\n      return this.value();\n    }\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field === ChronoField.MONTH_OF_YEAR) {\n      return this.value();\n    } else if (field instanceof ChronoField) {\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.plus = function plus(months) {\n    var amount = MathUtil.intMod(months, 12) + 12;\n    var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n    newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n    return Month.of(newMonthVal);\n  };\n  _proto.minus = function minus(months) {\n    return this.plus(-1 * MathUtil.intMod(months, 12));\n  };\n  _proto.length = function length(leapYear) {\n    switch (this) {\n      case Month.FEBRUARY:\n        return leapYear ? 29 : 28;\n      case Month.APRIL:\n      case Month.JUNE:\n      case Month.SEPTEMBER:\n      case Month.NOVEMBER:\n        return 30;\n      default:\n        return 31;\n    }\n  };\n  _proto.minLength = function minLength() {\n    switch (this) {\n      case Month.FEBRUARY:\n        return 28;\n      case Month.APRIL:\n      case Month.JUNE:\n      case Month.SEPTEMBER:\n      case Month.NOVEMBER:\n        return 30;\n      default:\n        return 31;\n    }\n  };\n  _proto.maxLength = function maxLength() {\n    switch (this) {\n      case Month.FEBRUARY:\n        return 29;\n      case Month.APRIL:\n      case Month.JUNE:\n      case Month.SEPTEMBER:\n      case Month.NOVEMBER:\n        return 30;\n      default:\n        return 31;\n    }\n  };\n  _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n    var leap = leapYear ? 1 : 0;\n    switch (this) {\n      case Month.JANUARY:\n        return 1;\n      case Month.FEBRUARY:\n        return 32;\n      case Month.MARCH:\n        return 60 + leap;\n      case Month.APRIL:\n        return 91 + leap;\n      case Month.MAY:\n        return 121 + leap;\n      case Month.JUNE:\n        return 152 + leap;\n      case Month.JULY:\n        return 182 + leap;\n      case Month.AUGUST:\n        return 213 + leap;\n      case Month.SEPTEMBER:\n        return 244 + leap;\n      case Month.OCTOBER:\n        return 274 + leap;\n      case Month.NOVEMBER:\n        return 305 + leap;\n      case Month.DECEMBER:\n      default:\n        return 335 + leap;\n    }\n  };\n  _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n    switch (this) {\n      case Month.JANUARY:\n      case Month.FEBRUARY:\n      case Month.MARCH:\n        return Month.JANUARY;\n      case Month.APRIL:\n      case Month.MAY:\n      case Month.JUNE:\n        return Month.APRIL;\n      case Month.JULY:\n      case Month.AUGUST:\n      case Month.SEPTEMBER:\n        return Month.JULY;\n      case Month.OCTOBER:\n      case Month.NOVEMBER:\n      case Month.DECEMBER:\n      default:\n        return Month.OCTOBER;\n    }\n  };\n  _proto.query = function query(_query) {\n    assert(_query != null, 'query() parameter must not be null', DateTimeException);\n    if (_query === TemporalQueries.chronology()) {\n      return IsoChronology.INSTANCE;\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.MONTHS;\n    }\n    return _TemporalAccessor.prototype.query.call(this, _query);\n  };\n  _proto.toString = function toString() {\n    switch (this) {\n      case Month.JANUARY:\n        return 'JANUARY';\n      case Month.FEBRUARY:\n        return 'FEBRUARY';\n      case Month.MARCH:\n        return 'MARCH';\n      case Month.APRIL:\n        return 'APRIL';\n      case Month.MAY:\n        return 'MAY';\n      case Month.JUNE:\n        return 'JUNE';\n      case Month.JULY:\n        return 'JULY';\n      case Month.AUGUST:\n        return 'AUGUST';\n      case Month.SEPTEMBER:\n        return 'SEPTEMBER';\n      case Month.OCTOBER:\n        return 'OCTOBER';\n      case Month.NOVEMBER:\n        return 'NOVEMBER';\n      case Month.DECEMBER:\n        return 'DECEMBER';\n      default:\n        return \"unknown Month, value: \" + this.value();\n    }\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, Month, 'other');\n    return this._value - other._value;\n  };\n  _proto.equals = function equals(other) {\n    return this === other;\n  };\n  Month.valueOf = function valueOf(name) {\n    var ordinal = 0;\n    for (ordinal; ordinal < MONTHS.length; ordinal++) {\n      if (MONTHS[ordinal].name() === name) {\n        break;\n      }\n    }\n    return Month.of(ordinal + 1);\n  };\n  Month.values = function values() {\n    return MONTHS.slice();\n  };\n  Month.of = function of(month) {\n    if (month < 1 || month > 12) {\n      assert(false, \"Invalid value for MonthOfYear: \" + month, DateTimeException);\n    }\n    return MONTHS[month - 1];\n  };\n  Month.from = function from(temporal) {\n    if (temporal instanceof Month) {\n      return temporal;\n    }\n    try {\n      return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain Month from TemporalAccessor: \" + temporal + \" of type \" + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n    }\n  };\n  return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$i() {\n  Month.JANUARY = new Month(1, 'JANUARY');\n  Month.FEBRUARY = new Month(2, 'FEBRUARY');\n  Month.MARCH = new Month(3, 'MARCH');\n  Month.APRIL = new Month(4, 'APRIL');\n  Month.MAY = new Month(5, 'MAY');\n  Month.JUNE = new Month(6, 'JUNE');\n  Month.JULY = new Month(7, 'JULY');\n  Month.AUGUST = new Month(8, 'AUGUST');\n  Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n  Month.OCTOBER = new Month(10, 'OCTOBER');\n  Month.NOVEMBER = new Month(11, 'NOVEMBER');\n  Month.DECEMBER = new Month(12, 'DECEMBER');\n  MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n  _inheritsLoose(Period, _TemporalAmount);\n  function Period(years, months, days) {\n    var _this;\n    _this = _TemporalAmount.call(this) || this;\n    var _years = MathUtil.safeToInt(years);\n    var _months = MathUtil.safeToInt(months);\n    var _days = MathUtil.safeToInt(days);\n    if (_years === 0 && _months === 0 && _days === 0) {\n      if (!Period.ZERO) {\n        _this._years = _years;\n        _this._months = _months;\n        _this._days = _days;\n        Period.ZERO = _assertThisInitialized(_this);\n      }\n      return Period.ZERO || _assertThisInitialized(_this);\n    }\n    _this._years = _years;\n    _this._months = _months;\n    _this._days = _days;\n    return _this;\n  }\n  Period.ofYears = function ofYears(years) {\n    return Period.create(years, 0, 0);\n  };\n  Period.ofMonths = function ofMonths(months) {\n    return Period.create(0, months, 0);\n  };\n  Period.ofWeeks = function ofWeeks(weeks) {\n    return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n  };\n  Period.ofDays = function ofDays(days) {\n    return Period.create(0, 0, days);\n  };\n  Period.of = function of(years, months, days) {\n    return Period.create(years, months, days);\n  };\n  Period.from = function from(amount) {\n    if (amount instanceof Period) {\n      return amount;\n    }\n    requireNonNull(amount, 'amount');\n    var years = 0;\n    var months = 0;\n    var days = 0;\n    var units = amount.units();\n    for (var i = 0; i < units.length; i++) {\n      var unit = units[i];\n      var unitAmount = amount.get(unit);\n      if (unit === ChronoUnit.YEARS) {\n        years = MathUtil.safeToInt(unitAmount);\n      } else if (unit === ChronoUnit.MONTHS) {\n        months = MathUtil.safeToInt(unitAmount);\n      } else if (unit === ChronoUnit.DAYS) {\n        days = MathUtil.safeToInt(unitAmount);\n      } else {\n        throw new DateTimeException(\"Unit must be Years, Months or Days, but was \" + unit);\n      }\n    }\n    return Period.create(years, months, days);\n  };\n  Period.between = function between(startDate, endDate) {\n    requireNonNull(startDate, 'startDate');\n    requireNonNull(endDate, 'endDate');\n    requireInstance(startDate, LocalDate, 'startDate');\n    requireInstance(endDate, LocalDate, 'endDate');\n    return startDate.until(endDate);\n  };\n  Period.parse = function parse(text) {\n    requireNonNull(text, 'text');\n    try {\n      return Period._parse(text);\n    } catch (ex) {\n      if (ex instanceof ArithmeticException) {\n        throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n      } else {\n        throw ex;\n      }\n    }\n  };\n  Period._parse = function _parse(text) {\n    var matches = PATTERN.exec(text);\n    if (matches != null) {\n      var negate = '-' === matches[1] ? -1 : 1;\n      var yearMatch = matches[2];\n      var monthMatch = matches[3];\n      var weekMatch = matches[4];\n      var dayMatch = matches[5];\n      if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n        var years = Period._parseNumber(text, yearMatch, negate);\n        var months = Period._parseNumber(text, monthMatch, negate);\n        var weeks = Period._parseNumber(text, weekMatch, negate);\n        var days = Period._parseNumber(text, dayMatch, negate);\n        days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n        return Period.create(years, months, days);\n      }\n    }\n    throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n  };\n  Period._parseNumber = function _parseNumber(text, str, negate) {\n    if (str == null) {\n      return 0;\n    }\n    var val = MathUtil.parseInt(str);\n    return MathUtil.safeMultiply(val, negate);\n  };\n  Period.create = function create(years, months, days) {\n    return new Period(years, months, days);\n  };\n  var _proto = Period.prototype;\n  _proto.units = function units() {\n    return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n  };\n  _proto.chronology = function chronology() {\n    return IsoChronology.INSTANCE;\n  };\n  _proto.get = function get(unit) {\n    if (unit === ChronoUnit.YEARS) {\n      return this._years;\n    }\n    if (unit === ChronoUnit.MONTHS) {\n      return this._months;\n    }\n    if (unit === ChronoUnit.DAYS) {\n      return this._days;\n    }\n    throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n  };\n  _proto.isZero = function isZero() {\n    return this === Period.ZERO;\n  };\n  _proto.isNegative = function isNegative() {\n    return this._years < 0 || this._months < 0 || this._days < 0;\n  };\n  _proto.years = function years() {\n    return this._years;\n  };\n  _proto.months = function months() {\n    return this._months;\n  };\n  _proto.days = function days() {\n    return this._days;\n  };\n  _proto.withYears = function withYears(years) {\n    if (years === this._years) {\n      return this;\n    }\n    return Period.create(years, this._months, this._days);\n  };\n  _proto.withMonths = function withMonths(months) {\n    if (months === this._months) {\n      return this;\n    }\n    return Period.create(this._years, months, this._days);\n  };\n  _proto.withDays = function withDays(days) {\n    if (days === this._days) {\n      return this;\n    }\n    return Period.create(this._years, this._months, days);\n  };\n  _proto.plus = function plus(amountToAdd) {\n    var amount = Period.from(amountToAdd);\n    return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n  };\n  _proto.plusYears = function plusYears(yearsToAdd) {\n    if (yearsToAdd === 0) {\n      return this;\n    }\n    return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n  };\n  _proto.plusMonths = function plusMonths(monthsToAdd) {\n    if (monthsToAdd === 0) {\n      return this;\n    }\n    return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n  };\n  _proto.plusDays = function plusDays(daysToAdd) {\n    if (daysToAdd === 0) {\n      return this;\n    }\n    return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n  };\n  _proto.minus = function minus(amountToSubtract) {\n    var amount = Period.from(amountToSubtract);\n    return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n  };\n  _proto.minusYears = function minusYears(yearsToSubtract) {\n    return this.plusYears(-1 * yearsToSubtract);\n  };\n  _proto.minusMonths = function minusMonths(monthsToSubtract) {\n    return this.plusMonths(-1 * monthsToSubtract);\n  };\n  _proto.minusDays = function minusDays(daysToSubtract) {\n    return this.plusDays(-1 * daysToSubtract);\n  };\n  _proto.multipliedBy = function multipliedBy(scalar) {\n    if (this === Period.ZERO || scalar === 1) {\n      return this;\n    }\n    return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n  };\n  _proto.negated = function negated() {\n    return this.multipliedBy(-1);\n  };\n  _proto.normalized = function normalized() {\n    var totalMonths = this.toTotalMonths();\n    var splitYears = MathUtil.intDiv(totalMonths, 12);\n    var splitMonths = MathUtil.intMod(totalMonths, 12);\n    if (splitYears === this._years && splitMonths === this._months) {\n      return this;\n    }\n    return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n  };\n  _proto.toTotalMonths = function toTotalMonths() {\n    return this._years * 12 + this._months;\n  };\n  _proto.addTo = function addTo(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (this._years !== 0) {\n      if (this._months !== 0) {\n        temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n      } else {\n        temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n      }\n    } else if (this._months !== 0) {\n      temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n    }\n    if (this._days !== 0) {\n      temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n    }\n    return temporal;\n  };\n  _proto.subtractFrom = function subtractFrom(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (this._years !== 0) {\n      if (this._months !== 0) {\n        temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n      } else {\n        temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n      }\n    } else if (this._months !== 0) {\n      temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n    }\n    if (this._days !== 0) {\n      temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n    }\n    return temporal;\n  };\n  _proto.equals = function equals(obj) {\n    if (this === obj) {\n      return true;\n    }\n    if (obj instanceof Period) {\n      var other = obj;\n      return this._years === other._years && this._months === other._months && this._days === other._days;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return MathUtil.hashCode(this._years, this._months, this._days);\n  };\n  _proto.toString = function toString() {\n    if (this === Period.ZERO) {\n      return 'P0D';\n    } else {\n      var buf = 'P';\n      if (this._years !== 0) {\n        buf += this._years + \"Y\";\n      }\n      if (this._months !== 0) {\n        buf += this._months + \"M\";\n      }\n      if (this._days !== 0) {\n        buf += this._days + \"D\";\n      }\n      return buf;\n    }\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return Period;\n}(TemporalAmount);\nfunction _init$h() {\n  Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var ParsePosition = function () {\n  function ParsePosition(index) {\n    this._index = index;\n    this._errorIndex = -1;\n  }\n  var _proto = ParsePosition.prototype;\n  _proto.getIndex = function getIndex() {\n    return this._index;\n  };\n  _proto.setIndex = function setIndex(index) {\n    this._index = index;\n  };\n  _proto.getErrorIndex = function getErrorIndex() {\n    return this._errorIndex;\n  };\n  _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n    this._errorIndex = errorIndex;\n  };\n  return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var EnumMap = function () {\n  function EnumMap() {\n    this._map = {};\n  }\n  var _proto = EnumMap.prototype;\n  _proto.putAll = function putAll(otherMap) {\n    for (var key in otherMap._map) {\n      this._map[key] = otherMap._map[key];\n    }\n    return this;\n  };\n  _proto.containsKey = function containsKey(key) {\n    return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n  };\n  _proto.get = function get(key) {\n    return this._map[key.name()];\n  };\n  _proto.put = function put(key, val) {\n    return this.set(key, val);\n  };\n  _proto.set = function set(key, val) {\n    this._map[key.name()] = val;\n    return this;\n  };\n  _proto.retainAll = function retainAll(keyList) {\n    var map = {};\n    for (var i = 0; i < keyList.length; i++) {\n      var key = keyList[i].name();\n      map[key] = this._map[key];\n    }\n    this._map = map;\n    return this;\n  };\n  _proto.remove = function remove(key) {\n    var keyName = key.name();\n    var val = this._map[keyName];\n    this._map[keyName] = undefined;\n    return val;\n  };\n  _proto.keySet = function keySet() {\n    return this._map;\n  };\n  _proto.clear = function clear() {\n    this._map = {};\n  };\n  return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n  _inheritsLoose(ResolverStyle, _Enum);\n  function ResolverStyle() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\nvar Temporal = function (_TemporalAccessor) {\n  _inheritsLoose(Temporal, _TemporalAccessor);\n  function Temporal() {\n    return _TemporalAccessor.apply(this, arguments) || this;\n  }\n  var _proto = Temporal.prototype;\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    abstractMethodFail('isSupported');\n  };\n  _proto.minus = function minus(amount, unit) {\n    if (arguments.length < 2) {\n      return this._minusAmount(amount);\n    } else {\n      return this._minusUnit(amount, unit);\n    }\n  };\n  _proto._minusAmount = function _minusAmount(amount) {\n    requireNonNull(amount, 'amount');\n    requireInstance(amount, TemporalAmount, 'amount');\n    return amount.subtractFrom(this);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    requireNonNull(amountToSubtract, 'amountToSubtract');\n    requireNonNull(unit, 'unit');\n    requireInstance(unit, TemporalUnit, 'unit');\n    return this._plusUnit(-amountToSubtract, unit);\n  };\n  _proto.plus = function plus(amount, unit) {\n    if (arguments.length < 2) {\n      return this._plusAmount(amount);\n    } else {\n      return this._plusUnit(amount, unit);\n    }\n  };\n  _proto._plusAmount = function _plusAmount(amount) {\n    requireNonNull(amount, 'amount');\n    requireInstance(amount, TemporalAmount, 'amount');\n    return amount.addTo(this);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    abstractMethodFail('_plusUnit');\n  };\n  _proto.until = function until(endTemporal, unit) {\n    abstractMethodFail('until');\n  };\n  _proto.with = function _with(adjusterOrField, newValue) {\n    if (arguments.length < 2) {\n      return this._withAdjuster(adjusterOrField);\n    } else {\n      return this._withField(adjusterOrField, newValue);\n    }\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster, 'adjuster');\n    assert(typeof adjuster.adjustInto === 'function', 'adjuster must be a TemporalAdjuster', IllegalArgumentException);\n    return adjuster.adjustInto(this);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    abstractMethodFail('_withField');\n  };\n  return Temporal;\n}(TemporalAccessor);\nif (typeof Symbol !== 'undefined' && Symbol.toPrimitive) {\n  Temporal.prototype[Symbol.toPrimitive] = function (hint) {\n    if (hint !== 'number') {\n      return this.toString();\n    }\n    throw new TypeError('A conversion from Temporal to a number is not allowed. ' + 'To compare use the methods .equals(), .compareTo(), .isBefore() ' + 'or one that is more suitable to your use case.');\n  };\n}\n\nvar ChronoLocalDate = function (_Temporal) {\n  _inheritsLoose(ChronoLocalDate, _Temporal);\n  function ChronoLocalDate() {\n    return _Temporal.apply(this, arguments) || this;\n  }\n  var _proto = ChronoLocalDate.prototype;\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit.isDateBased();\n    } else if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isDateBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.chronology()) {\n      return this.chronology();\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.DAYS;\n    } else if (_query === TemporalQueries.localDate()) {\n      return LocalDate.ofEpochDay(this.toEpochDay());\n    } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return formatter.format(this);\n  };\n  return ChronoLocalDate;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n  function StringUtil() {}\n  StringUtil.startsWith = function startsWith(text, pattern) {\n    return text.indexOf(pattern) === 0;\n  };\n  StringUtil.hashCode = function hashCode(text) {\n    var len = text.length;\n    if (len === 0) {\n      return 0;\n    }\n    var hash = 0;\n    for (var i = 0; i < len; i++) {\n      var chr = text.charCodeAt(i);\n      hash = (hash << 5) - hash + chr;\n      hash |= 0;\n    }\n    return MathUtil.smi(hash);\n  };\n  return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n  function ZoneId() {}\n  ZoneId.systemDefault = function systemDefault() {\n    throw new DateTimeException('not supported operation');\n  };\n  ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n    throw new DateTimeException('not supported operation');\n  };\n  ZoneId.of = function of(zoneId) {\n    throw new DateTimeException(\"not supported operation\" + zoneId);\n  };\n  ZoneId.ofOffset = function ofOffset(prefix, offset) {\n    throw new DateTimeException(\"not supported operation\" + prefix + offset);\n  };\n  ZoneId.from = function from(temporal) {\n    throw new DateTimeException(\"not supported operation\" + temporal);\n  };\n  var _proto = ZoneId.prototype;\n  _proto.id = function id() {\n    abstractMethodFail('ZoneId.id');\n  };\n  _proto.rules = function rules() {\n    abstractMethodFail('ZoneId.rules');\n  };\n  _proto.normalized = function normalized() {\n    var rules = this.rules();\n    if (rules.isFixedOffset()) {\n      return rules.offset(Instant.EPOCH);\n    }\n    return this;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof ZoneId) {\n      return this.id() === other.id();\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return StringUtil.hashCode(this.id());\n  };\n  _proto.toString = function toString() {\n    return this.id();\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return ZoneId;\n}();\n\nvar ZoneRules = function () {\n  function ZoneRules() {}\n  ZoneRules.of = function of(offset) {\n    requireNonNull(offset, 'offset');\n    return new Fixed(offset);\n  };\n  var _proto = ZoneRules.prototype;\n  _proto.isFixedOffset = function isFixedOffset() {\n    abstractMethodFail('ZoneRules.isFixedOffset');\n  };\n  _proto.offset = function offset(instantOrLocalDateTime) {\n    if (instantOrLocalDateTime instanceof Instant) {\n      return this.offsetOfInstant(instantOrLocalDateTime);\n    } else {\n      return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n    }\n  };\n  _proto.offsetOfInstant = function offsetOfInstant(instant) {\n    abstractMethodFail('ZoneRules.offsetInstant');\n  };\n  _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n    abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n  };\n  _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n    abstractMethodFail('ZoneRules.offsetLocalDateTime');\n  };\n  _proto.validOffsets = function validOffsets(localDateTime) {\n    abstractMethodFail('ZoneRules.validOffsets');\n  };\n  _proto.transition = function transition(localDateTime) {\n    abstractMethodFail('ZoneRules.transition');\n  };\n  _proto.standardOffset = function standardOffset(instant) {\n    abstractMethodFail('ZoneRules.standardOffset');\n  };\n  _proto.daylightSavings = function daylightSavings(instant) {\n    abstractMethodFail('ZoneRules.daylightSavings');\n  };\n  _proto.isDaylightSavings = function isDaylightSavings(instant) {\n    abstractMethodFail('ZoneRules.isDaylightSavings');\n  };\n  _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n    abstractMethodFail('ZoneRules.isValidOffset');\n  };\n  _proto.nextTransition = function nextTransition(instant) {\n    abstractMethodFail('ZoneRules.nextTransition');\n  };\n  _proto.previousTransition = function previousTransition(instant) {\n    abstractMethodFail('ZoneRules.previousTransition');\n  };\n  _proto.transitions = function transitions() {\n    abstractMethodFail('ZoneRules.transitions');\n  };\n  _proto.transitionRules = function transitionRules() {\n    abstractMethodFail('ZoneRules.transitionRules');\n  };\n  _proto.toString = function toString() {\n    abstractMethodFail('ZoneRules.toString');\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return ZoneRules;\n}();\nvar Fixed = function (_ZoneRules) {\n  _inheritsLoose(Fixed, _ZoneRules);\n  function Fixed(offset) {\n    var _this;\n    _this = _ZoneRules.call(this) || this;\n    _this._offset = offset;\n    return _this;\n  }\n  var _proto2 = Fixed.prototype;\n  _proto2.isFixedOffset = function isFixedOffset() {\n    return true;\n  };\n  _proto2.offsetOfInstant = function offsetOfInstant() {\n    return this._offset;\n  };\n  _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n    return this._offset;\n  };\n  _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n    return this._offset;\n  };\n  _proto2.validOffsets = function validOffsets() {\n    return [this._offset];\n  };\n  _proto2.transition = function transition() {\n    return null;\n  };\n  _proto2.standardOffset = function standardOffset() {\n    return this._offset;\n  };\n  _proto2.daylightSavings = function daylightSavings() {\n    return Duration.ZERO;\n  };\n  _proto2.isDaylightSavings = function isDaylightSavings() {\n    return false;\n  };\n  _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n    return this._offset.equals(offset);\n  };\n  _proto2.nextTransition = function nextTransition() {\n    return null;\n  };\n  _proto2.previousTransition = function previousTransition() {\n    return null;\n  };\n  _proto2.transitions = function transitions() {\n    return [];\n  };\n  _proto2.transitionRules = function transitionRules() {\n    return [];\n  };\n  _proto2.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof Fixed) {\n      return this._offset.equals(other._offset);\n    }\n    return false;\n  };\n  _proto2.toString = function toString() {\n    return \"FixedRules:\" + this._offset.toString();\n  };\n  return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n  _inheritsLoose(ZoneOffset, _ZoneId);\n  function ZoneOffset(totalSeconds) {\n    var _this;\n    _this = _ZoneId.call(this) || this;\n    ZoneOffset._validateTotalSeconds(totalSeconds);\n    _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n    _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n    _this._id = ZoneOffset._buildId(totalSeconds);\n    return _this;\n  }\n  var _proto = ZoneOffset.prototype;\n  _proto.totalSeconds = function totalSeconds() {\n    return this._totalSeconds;\n  };\n  _proto.id = function id() {\n    return this._id;\n  };\n  ZoneOffset._buildId = function _buildId(totalSeconds) {\n    if (totalSeconds === 0) {\n      return 'Z';\n    } else {\n      var absTotalSeconds = Math.abs(totalSeconds);\n      var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n      var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n      var buf = \"\" + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n      var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n      if (absSeconds !== 0) {\n        buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n      }\n      return buf;\n    }\n  };\n  ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n    if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n      throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n    }\n  };\n  ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n    if (hours < -18 || hours > 18) {\n      throw new DateTimeException(\"Zone offset hours not in valid range: value \" + hours + \" is not in the range -18 to 18\");\n    }\n    if (hours > 0) {\n      if (minutes < 0 || seconds < 0) {\n        throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n      }\n    } else if (hours < 0) {\n      if (minutes > 0 || seconds > 0) {\n        throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n      }\n    } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n      throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n    }\n    if (Math.abs(minutes) > 59) {\n      throw new DateTimeException(\"Zone offset minutes not in valid range: abs(value) \" + Math.abs(minutes) + \" is not in the range 0 to 59\");\n    }\n    if (Math.abs(seconds) > 59) {\n      throw new DateTimeException(\"Zone offset seconds not in valid range: abs(value) \" + Math.abs(seconds) + \" is not in the range 0 to 59\");\n    }\n    if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n      throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n    }\n  };\n  ZoneOffset.of = function of(offsetId) {\n    requireNonNull(offsetId, 'offsetId');\n    var offset = ID_CACHE[offsetId];\n    if (offset != null) {\n      return offset;\n    }\n    var hours, minutes, seconds;\n    switch (offsetId.length) {\n      case 2:\n        offsetId = offsetId[0] + \"0\" + offsetId[1];\n      case 3:\n        hours = ZoneOffset._parseNumber(offsetId, 1, false);\n        minutes = 0;\n        seconds = 0;\n        break;\n      case 5:\n        hours = ZoneOffset._parseNumber(offsetId, 1, false);\n        minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n        seconds = 0;\n        break;\n      case 6:\n        hours = ZoneOffset._parseNumber(offsetId, 1, false);\n        minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n        seconds = 0;\n        break;\n      case 7:\n        hours = ZoneOffset._parseNumber(offsetId, 1, false);\n        minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n        seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n        break;\n      case 9:\n        hours = ZoneOffset._parseNumber(offsetId, 1, false);\n        minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n        seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n        break;\n      default:\n        throw new DateTimeException(\"Invalid ID for ZoneOffset, invalid format: \" + offsetId);\n    }\n    var first = offsetId[0];\n    if (first !== '+' && first !== '-') {\n      throw new DateTimeException(\"Invalid ID for ZoneOffset, plus/minus not found when expected: \" + offsetId);\n    }\n    if (first === '-') {\n      return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n    } else {\n      return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n    }\n  };\n  ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n    if (precededByColon && offsetId[pos - 1] !== ':') {\n      throw new DateTimeException(\"Invalid ID for ZoneOffset, colon not found when expected: \" + offsetId);\n    }\n    var ch1 = offsetId[pos];\n    var ch2 = offsetId[pos + 1];\n    if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n      throw new DateTimeException(\"Invalid ID for ZoneOffset, non numeric characters found: \" + offsetId);\n    }\n    return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n  };\n  ZoneOffset.ofHours = function ofHours(hours) {\n    return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n  };\n  ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n    return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n  };\n  ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n    ZoneOffset._validate(hours, minutes, seconds);\n    var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n    return ZoneOffset.ofTotalSeconds(totalSeconds);\n  };\n  ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n    var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n    return ZoneOffset.ofTotalSeconds(totalSeconds);\n  };\n  ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n    if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n      var totalSecs = totalSeconds;\n      var result = SECONDS_CACHE[totalSecs];\n      if (result == null) {\n        result = new ZoneOffset(totalSeconds);\n        SECONDS_CACHE[totalSecs] = result;\n        ID_CACHE[result.id()] = result;\n      }\n      return result;\n    } else {\n      return new ZoneOffset(totalSeconds);\n    }\n  };\n  _proto.rules = function rules() {\n    return this._rules;\n  };\n  _proto.get = function get(field) {\n    return this.getLong(field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field === ChronoField.OFFSET_SECONDS) {\n      return this._totalSeconds;\n    } else if (field instanceof ChronoField) {\n      throw new DateTimeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n      return this;\n    } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n      return null;\n    }\n    return _query.queryFrom(this);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    return other._totalSeconds - this._totalSeconds;\n  };\n  _proto.equals = function equals(obj) {\n    if (this === obj) {\n      return true;\n    }\n    if (obj instanceof ZoneOffset) {\n      return this._totalSeconds === obj._totalSeconds;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._totalSeconds;\n  };\n  _proto.toString = function toString() {\n    return this._id;\n  };\n  return ZoneOffset;\n}(ZoneId);\nfunction _init$g() {\n  ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n  ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n  ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n  ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n  _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n  DateTimeBuilder.create = function create(field, value) {\n    var dtb = new DateTimeBuilder();\n    dtb._addFieldValue(field, value);\n    return dtb;\n  };\n  function DateTimeBuilder() {\n    var _this;\n    _this = _TemporalAccessor.call(this) || this;\n    _this.fieldValues = new EnumMap();\n    _this.chrono = null;\n    _this.zone = null;\n    _this.date = null;\n    _this.time = null;\n    _this.leapSecond = false;\n    _this.excessDays = null;\n    return _this;\n  }\n  var _proto = DateTimeBuilder.prototype;\n  _proto.getFieldValue0 = function getFieldValue0(field) {\n    return this.fieldValues.get(field);\n  };\n  _proto._addFieldValue = function _addFieldValue(field, value) {\n    requireNonNull(field, 'field');\n    var old = this.getFieldValue0(field);\n    if (old != null && old !== value) {\n      throw new DateTimeException(\"Conflict found: \" + field + \" \" + old + \" differs from \" + field + \" \" + value + \": \" + this);\n    }\n    return this._putFieldValue0(field, value);\n  };\n  _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n    this.fieldValues.put(field, value);\n    return this;\n  };\n  _proto.resolve = function resolve(resolverStyle, resolverFields) {\n    if (resolverFields != null) {\n      this.fieldValues.retainAll(resolverFields);\n    }\n    this._mergeDate(resolverStyle);\n    this._mergeTime(resolverStyle);\n    this._resolveTimeInferZeroes(resolverStyle);\n    if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n      this.date = this.date.plus(this.excessDays);\n      this.excessDays = Period.ZERO;\n    }\n    this._resolveInstant();\n    return this;\n  };\n  _proto._mergeDate = function _mergeDate(resolverStyle) {\n    this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n  };\n  _proto._checkDate = function _checkDate(date) {\n    if (date != null) {\n      this._addObject(date);\n      for (var fieldName in this.fieldValues.keySet()) {\n        var field = ChronoField.byName(fieldName);\n        if (field) {\n          if (this.fieldValues.get(field) !== undefined) {\n            if (field.isDateBased()) {\n              var val1 = void 0;\n              try {\n                val1 = date.getLong(field);\n              } catch (ex) {\n                if (ex instanceof DateTimeException) {\n                  continue;\n                } else {\n                  throw ex;\n                }\n              }\n              var val2 = this.fieldValues.get(field);\n              if (val1 !== val2) {\n                throw new DateTimeException(\"Conflict found: Field \" + field + \" \" + val1 + \" differs from \" + field + \" \" + val2 + \" derived from \" + date);\n              }\n            }\n          }\n        }\n      }\n    }\n  };\n  _proto._mergeTime = function _mergeTime(resolverStyle) {\n    if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n      var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n          ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n        }\n      }\n      this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n    }\n    if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n      var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n          ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n        }\n      }\n      this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n    }\n    if (resolverStyle !== ResolverStyle.LENIENT) {\n      if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n        ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n      }\n      if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n        ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n      }\n    }\n    if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n      var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n      var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n      this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n    }\n    if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n      var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.NANO_OF_DAY.checkValidValue(nod);\n      }\n      this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n      this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n    }\n    if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n      var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n      }\n      this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n      this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n    }\n    if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n      var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n      }\n      this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n      this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n    }\n    if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n      var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n      }\n      this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n      this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n      this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n    }\n    if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n      var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n      }\n      this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n      this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n    }\n    if (resolverStyle !== ResolverStyle.LENIENT) {\n      if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n        ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n      }\n      if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n        ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n      }\n    }\n    if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n      var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n      var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n      this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n    }\n    if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n      var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n      this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n      this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n    }\n    if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n      var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n      this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n      this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n    }\n    if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n      var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n      this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n    } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n      var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n      this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n    }\n  };\n  _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n    var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n    var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n    var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n    var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n    if (hod == null) {\n      return;\n    }\n    if (moh == null && (som != null || nos != null)) {\n      return;\n    }\n    if (moh != null && som == null && nos != null) {\n      return;\n    }\n    if (resolverStyle !== ResolverStyle.LENIENT) {\n      if (hod != null) {\n        if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n          hod = 0;\n          this.excessDays = Period.ofDays(1);\n        }\n        var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n        if (moh != null) {\n          var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n          if (som != null) {\n            var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n            if (nos != null) {\n              var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n              this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n            } else {\n              this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n            }\n          } else {\n            if (nos == null) {\n              this._addObject(LocalTime.of(hodVal, mohVal));\n            }\n          }\n        } else {\n          if (som == null && nos == null) {\n            this._addObject(LocalTime.of(hodVal, 0));\n          }\n        }\n      }\n    } else {\n      if (hod != null) {\n        var _hodVal = hod;\n        if (moh != null) {\n          if (som != null) {\n            if (nos == null) {\n              nos = 0;\n            }\n            var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n            totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n            totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n            totalNanos = MathUtil.safeAdd(totalNanos, nos);\n            var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n            var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n            this._addObject(LocalTime.ofNanoOfDay(nod));\n            this.excessDays = Period.ofDays(excessDays);\n          } else {\n            var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n            totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n            var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n            var sod = MathUtil.floorMod(totalSecs, 86400);\n            this._addObject(LocalTime.ofSecondOfDay(sod));\n            this.excessDays = Period.ofDays(_excessDays);\n          }\n        } else {\n          var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n          _hodVal = MathUtil.floorMod(_hodVal, 24);\n          this._addObject(LocalTime.of(_hodVal, 0));\n          this.excessDays = Period.ofDays(_excessDays2);\n        }\n      }\n    }\n    this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n    this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n    this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n    this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n  };\n  _proto._addObject = function _addObject(dateOrTime) {\n    if (dateOrTime instanceof ChronoLocalDate) {\n      this.date = dateOrTime;\n    } else if (dateOrTime instanceof LocalTime) {\n      this.time = dateOrTime;\n    }\n  };\n  _proto._resolveInstant = function _resolveInstant() {\n    if (this.date != null && this.time != null) {\n      var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n      if (offsetSecs != null) {\n        var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n        var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n        this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n      } else if (this.zone != null) {\n        var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n        this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n      }\n    }\n  };\n  _proto.build = function build(type) {\n    return type.queryFrom(this);\n  };\n  _proto.isSupported = function isSupported(field) {\n    if (field == null) {\n      return false;\n    }\n    return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    var value = this.getFieldValue0(field);\n    if (value == null) {\n      if (this.date != null && this.date.isSupported(field)) {\n        return this.date.getLong(field);\n      }\n      if (this.time != null && this.time.isSupported(field)) {\n        return this.time.getLong(field);\n      }\n      throw new DateTimeException(\"Field not found: \" + field);\n    }\n    return value;\n  };\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.zoneId()) {\n      return this.zone;\n    } else if (_query === TemporalQueries.chronology()) {\n      return this.chrono;\n    } else if (_query === TemporalQueries.localDate()) {\n      return this.date != null ? LocalDate.from(this.date) : null;\n    } else if (_query === TemporalQueries.localTime()) {\n      return this.time;\n    } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n      return _query.queryFrom(this);\n    } else if (_query === TemporalQueries.precision()) {\n      return null;\n    }\n    return _query.queryFrom(this);\n  };\n  return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n  function DateTimeParseContext() {\n    if (arguments.length === 1) {\n      if (arguments[0] instanceof DateTimeParseContext) {\n        this._constructorSelf.apply(this, arguments);\n        return;\n      } else {\n        this._constructorFormatter.apply(this, arguments);\n      }\n    } else {\n      this._constructorParam.apply(this, arguments);\n    }\n    this._caseSensitive = true;\n    this._strict = true;\n    this._parsed = [new Parsed(this)];\n  }\n  var _proto = DateTimeParseContext.prototype;\n  _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n    this._locale = locale;\n    this._symbols = symbols;\n    this._overrideChronology = chronology;\n  };\n  _proto._constructorFormatter = function _constructorFormatter(formatter) {\n    this._locale = formatter.locale();\n    this._symbols = formatter.decimalStyle();\n    this._overrideChronology = formatter.chronology();\n  };\n  _proto._constructorSelf = function _constructorSelf(other) {\n    this._locale = other._locale;\n    this._symbols = other._symbols;\n    this._overrideChronology = other._overrideChronology;\n    this._overrideZone = other._overrideZone;\n    this._caseSensitive = other._caseSensitive;\n    this._strict = other._strict;\n    this._parsed = [new Parsed(this)];\n  };\n  _proto.copy = function copy() {\n    return new DateTimeParseContext(this);\n  };\n  _proto.symbols = function symbols() {\n    return this._symbols;\n  };\n  _proto.isStrict = function isStrict() {\n    return this._strict;\n  };\n  _proto.setStrict = function setStrict(strict) {\n    this._strict = strict;\n  };\n  _proto.locale = function locale() {\n    return this._locale;\n  };\n  _proto.setLocale = function setLocale(locale) {\n    this._locale = locale;\n  };\n  _proto.startOptional = function startOptional() {\n    this._parsed.push(this.currentParsed().copy());\n  };\n  _proto.endOptional = function endOptional(successful) {\n    if (successful) {\n      this._parsed.splice(this._parsed.length - 2, 1);\n    } else {\n      this._parsed.splice(this._parsed.length - 1, 1);\n    }\n  };\n  _proto.isCaseSensitive = function isCaseSensitive() {\n    return this._caseSensitive;\n  };\n  _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n    this._caseSensitive = caseSensitive;\n  };\n  _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n    if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n      return false;\n    }\n    if (!this.isCaseSensitive()) {\n      cs1 = cs1.toLowerCase();\n      cs2 = cs2.toLowerCase();\n    }\n    for (var i = 0; i < length; i++) {\n      var ch1 = cs1[offset1 + i];\n      var ch2 = cs2[offset2 + i];\n      if (ch1 !== ch2) {\n        return false;\n      }\n    }\n    return true;\n  };\n  _proto.charEquals = function charEquals(ch1, ch2) {\n    if (this.isCaseSensitive()) {\n      return ch1 === ch2;\n    }\n    return this.charEqualsIgnoreCase(ch1, ch2);\n  };\n  _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n    return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n  };\n  _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n    var currentParsedFieldValues = this.currentParsed().fieldValues;\n    var old = currentParsedFieldValues.get(field);\n    currentParsedFieldValues.set(field, value);\n    return old != null && old !== value ? ~errorPos : successPos;\n  };\n  _proto.setParsedZone = function setParsedZone(zone) {\n    requireNonNull(zone, 'zone');\n    this.currentParsed().zone = zone;\n  };\n  _proto.getParsed = function getParsed(field) {\n    return this.currentParsed().fieldValues.get(field);\n  };\n  _proto.toParsed = function toParsed() {\n    return this.currentParsed();\n  };\n  _proto.currentParsed = function currentParsed() {\n    return this._parsed[this._parsed.length - 1];\n  };\n  _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n    this.currentParsed().leapSecond = true;\n  };\n  _proto.getEffectiveChronology = function getEffectiveChronology() {\n    var chrono = this.currentParsed().chrono;\n    if (chrono == null) {\n      chrono = this._overrideChronology;\n      if (chrono == null) {\n        chrono = IsoChronology.INSTANCE;\n      }\n    }\n    return chrono;\n  };\n  return DateTimeParseContext;\n}();\nvar Parsed = function (_Temporal) {\n  _inheritsLoose(Parsed, _Temporal);\n  function Parsed(dateTimeParseContext) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    _this.chrono = null;\n    _this.zone = null;\n    _this.fieldValues = new EnumMap();\n    _this.leapSecond = false;\n    _this.dateTimeParseContext = dateTimeParseContext;\n    return _this;\n  }\n  var _proto2 = Parsed.prototype;\n  _proto2.copy = function copy() {\n    var cloned = new Parsed();\n    cloned.chrono = this.chrono;\n    cloned.zone = this.zone;\n    cloned.fieldValues.putAll(this.fieldValues);\n    cloned.leapSecond = this.leapSecond;\n    cloned.dateTimeParseContext = this.dateTimeParseContext;\n    return cloned;\n  };\n  _proto2.toString = function toString() {\n    return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n  };\n  _proto2.isSupported = function isSupported(field) {\n    return this.fieldValues.containsKey(field);\n  };\n  _proto2.get = function get(field) {\n    var val = this.fieldValues.get(field);\n    assert(val != null);\n    return val;\n  };\n  _proto2.query = function query(_query) {\n    if (_query === TemporalQueries.chronology()) {\n      return this.chrono;\n    }\n    if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n      return this.zone;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto2.toBuilder = function toBuilder() {\n    var builder = new DateTimeBuilder();\n    builder.fieldValues.putAll(this.fieldValues);\n    builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n    if (this.zone != null) {\n      builder.zone = this.zone;\n    } else {\n      builder.zone = this.overrideZone;\n    }\n    builder.leapSecond = this.leapSecond;\n    builder.excessDays = this.excessDays;\n    return builder;\n  };\n  return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n  function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n    if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n      this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n      this._locale = localeOrFormatter.locale();\n      this._symbols = localeOrFormatter.decimalStyle();\n    } else {\n      this._temporal = temporal;\n      this._locale = localeOrFormatter;\n      this._symbols = symbols;\n    }\n    this._optional = 0;\n  }\n  DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n    return temporal;\n  };\n  var _proto = DateTimePrintContext.prototype;\n  _proto.symbols = function symbols() {\n    return this._symbols;\n  };\n  _proto.startOptional = function startOptional() {\n    this._optional++;\n  };\n  _proto.endOptional = function endOptional() {\n    this._optional--;\n  };\n  _proto.getValueQuery = function getValueQuery(query) {\n    var result = this._temporal.query(query);\n    if (result == null && this._optional === 0) {\n      throw new DateTimeException(\"Unable to extract value: \" + this._temporal);\n    }\n    return result;\n  };\n  _proto.getValue = function getValue(field) {\n    try {\n      return this._temporal.getLong(field);\n    } catch (ex) {\n      if (ex instanceof DateTimeException && this._optional > 0) {\n        return null;\n      }\n      throw ex;\n    }\n  };\n  _proto.temporal = function temporal() {\n    return this._temporal;\n  };\n  _proto.locale = function locale() {\n    return this._locale;\n  };\n  _proto.setDateTime = function setDateTime(temporal) {\n    this._temporal = temporal;\n  };\n  _proto.setLocale = function setLocale(locale) {\n    this._locale = locale;\n  };\n  return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\nvar Field = function (_TemporalField) {\n  _inheritsLoose(Field, _TemporalField);\n  function Field() {\n    return _TemporalField.apply(this, arguments) || this;\n  }\n  var _proto = Field.prototype;\n  _proto.isDateBased = function isDateBased() {\n    return true;\n  };\n  _proto.isTimeBased = function isTimeBased() {\n    return false;\n  };\n  _proto._isIso = function _isIso() {\n    return true;\n  };\n  Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n    var wby = Field._getWeekBasedYear(date);\n    return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n  };\n  Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n    var date = LocalDate.of(wby, 1, 1);\n    if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n      return 53;\n    }\n    return 52;\n  };\n  Field._getWeek = function _getWeek(date) {\n    var dow0 = date.dayOfWeek().ordinal();\n    var doy0 = date.dayOfYear() - 1;\n    var doyThu0 = doy0 + (3 - dow0);\n    var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n    var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n    var firstMonDoy0 = firstThuDoy0 - 3;\n    if (firstMonDoy0 < -3) {\n      firstMonDoy0 += 7;\n    }\n    if (doy0 < firstMonDoy0) {\n      return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n    }\n    var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n    if (week === 53) {\n      if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n        week = 1;\n      }\n    }\n    return week;\n  };\n  Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n    var year = date.year();\n    var doy = date.dayOfYear();\n    if (doy <= 3) {\n      var dow = date.dayOfWeek().ordinal();\n      if (doy - dow < -2) {\n        year--;\n      }\n    } else if (doy >= 363) {\n      var _dow = date.dayOfWeek().ordinal();\n      doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n      if (doy - _dow >= 0) {\n        year++;\n      }\n    }\n    return year;\n  };\n  _proto.displayName = function displayName() {\n    return this.toString();\n  };\n  _proto.resolve = function resolve() {\n    return null;\n  };\n  _proto.name = function name() {\n    return this.toString();\n  };\n  return Field;\n}(TemporalField);\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n  _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n  function DAY_OF_QUARTER_FIELD() {\n    return _Field.apply(this, arguments) || this;\n  }\n  var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n  _proto2.toString = function toString() {\n    return 'DayOfQuarter';\n  };\n  _proto2.baseUnit = function baseUnit() {\n    return ChronoUnit.DAYS;\n  };\n  _proto2.rangeUnit = function rangeUnit() {\n    return QUARTER_YEARS;\n  };\n  _proto2.range = function range() {\n    return ValueRange.of(1, 90, 92);\n  };\n  _proto2.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n  };\n  _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n    }\n    var qoy = temporal.getLong(QUARTER_OF_YEAR);\n    if (qoy === 1) {\n      var year = temporal.getLong(ChronoField.YEAR);\n      return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n    } else if (qoy === 2) {\n      return ValueRange.of(1, 91);\n    } else if (qoy === 3 || qoy === 4) {\n      return ValueRange.of(1, 92);\n    }\n    return this.range();\n  };\n  _proto2.getFrom = function getFrom(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n    }\n    var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n    var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n    var year = temporal.getLong(ChronoField.YEAR);\n    return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n  };\n  _proto2.adjustInto = function adjustInto(temporal, newValue) {\n    var curValue = this.getFrom(temporal);\n    this.range().checkValidValue(newValue, this);\n    return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n  };\n  _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n    var yearLong = fieldValues.get(ChronoField.YEAR);\n    var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n    if (yearLong == null || qoyLong == null) {\n      return null;\n    }\n    var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n    var doq = fieldValues.get(DAY_OF_QUARTER);\n    var date;\n    if (resolverStyle === ResolverStyle.LENIENT) {\n      var qoy = qoyLong;\n      date = LocalDate.of(y, 1, 1);\n      date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n      date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n    } else {\n      var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n      if (resolverStyle === ResolverStyle.STRICT) {\n        var max = 92;\n        if (_qoy === 1) {\n          max = IsoChronology.isLeapYear(y) ? 91 : 90;\n        } else if (_qoy === 2) {\n          max = 91;\n        }\n        ValueRange.of(1, max).checkValidValue(doq, this);\n      } else {\n        this.range().checkValidValue(doq, this);\n      }\n      date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n    }\n    fieldValues.remove(this);\n    fieldValues.remove(ChronoField.YEAR);\n    fieldValues.remove(QUARTER_OF_YEAR);\n    return date;\n  };\n  return DAY_OF_QUARTER_FIELD;\n}(Field);\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n  _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n  function QUARTER_OF_YEAR_FIELD() {\n    return _Field2.apply(this, arguments) || this;\n  }\n  var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n  _proto3.toString = function toString() {\n    return 'QuarterOfYear';\n  };\n  _proto3.baseUnit = function baseUnit() {\n    return QUARTER_YEARS;\n  };\n  _proto3.rangeUnit = function rangeUnit() {\n    return ChronoUnit.YEARS;\n  };\n  _proto3.range = function range() {\n    return ValueRange.of(1, 4);\n  };\n  _proto3.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n  };\n  _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    return this.range();\n  };\n  _proto3.getFrom = function getFrom(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n    }\n    var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n    return MathUtil.intDiv(moy + 2, 3);\n  };\n  _proto3.adjustInto = function adjustInto(temporal, newValue) {\n    var curValue = this.getFrom(temporal);\n    this.range().checkValidValue(newValue, this);\n    return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n  };\n  return QUARTER_OF_YEAR_FIELD;\n}(Field);\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n  _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n  function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n    return _Field3.apply(this, arguments) || this;\n  }\n  var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n  _proto4.toString = function toString() {\n    return 'WeekOfWeekBasedYear';\n  };\n  _proto4.baseUnit = function baseUnit() {\n    return ChronoUnit.WEEKS;\n  };\n  _proto4.rangeUnit = function rangeUnit() {\n    return WEEK_BASED_YEARS;\n  };\n  _proto4.range = function range() {\n    return ValueRange.of(1, 52, 53);\n  };\n  _proto4.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n  };\n  _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n    }\n    return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n  };\n  _proto4.getFrom = function getFrom(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n    }\n    return Field._getWeek(LocalDate.from(temporal));\n  };\n  _proto4.adjustInto = function adjustInto(temporal, newValue) {\n    this.range().checkValidValue(newValue, this);\n    return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n  };\n  _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n    var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n    var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n    if (wbyLong == null || dowLong == null) {\n      return null;\n    }\n    var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n    var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n    var date;\n    if (resolverStyle === ResolverStyle.LENIENT) {\n      var dow = dowLong;\n      var weeks = 0;\n      if (dow > 7) {\n        weeks = MathUtil.intDiv(dow - 1, 7);\n        dow = MathUtil.intMod(dow - 1, 7) + 1;\n      } else if (dow < 1) {\n        weeks = MathUtil.intDiv(dow, 7) - 1;\n        dow = MathUtil.intMod(dow, 7) + 7;\n      }\n      date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n    } else {\n      var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n      if (resolverStyle === ResolverStyle.STRICT) {\n        var temp = LocalDate.of(wby, 1, 4);\n        var range = Field._getWeekRangeByLocalDate(temp);\n        range.checkValidValue(wowby, this);\n      } else {\n        this.range().checkValidValue(wowby, this);\n      }\n      date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n    }\n    fieldValues.remove(this);\n    fieldValues.remove(WEEK_BASED_YEAR);\n    fieldValues.remove(ChronoField.DAY_OF_WEEK);\n    return date;\n  };\n  _proto4.displayName = function displayName() {\n    return 'Week';\n  };\n  return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n  _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n  function WEEK_BASED_YEAR_FIELD() {\n    return _Field4.apply(this, arguments) || this;\n  }\n  var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n  _proto5.toString = function toString() {\n    return 'WeekBasedYear';\n  };\n  _proto5.baseUnit = function baseUnit() {\n    return WEEK_BASED_YEARS;\n  };\n  _proto5.rangeUnit = function rangeUnit() {\n    return ChronoUnit.FOREVER;\n  };\n  _proto5.range = function range() {\n    return ChronoField.YEAR.range();\n  };\n  _proto5.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n  };\n  _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n    return ChronoField.YEAR.range();\n  };\n  _proto5.getFrom = function getFrom(temporal) {\n    if (temporal.isSupported(this) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n    }\n    return Field._getWeekBasedYear(LocalDate.from(temporal));\n  };\n  _proto5.adjustInto = function adjustInto(temporal, newValue) {\n    if (this.isSupportedBy(temporal) === false) {\n      throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n    }\n    var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n    var date = LocalDate.from(temporal);\n    var dow = date.get(ChronoField.DAY_OF_WEEK);\n    var week = Field._getWeek(date);\n    if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n      week = 52;\n    }\n    var resolved = LocalDate.of(newWby, 1, 4);\n    var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n    resolved = resolved.plusDays(days);\n    return temporal.with(resolved);\n  };\n  return WEEK_BASED_YEAR_FIELD;\n}(Field);\nvar Unit = function (_TemporalUnit) {\n  _inheritsLoose(Unit, _TemporalUnit);\n  function Unit(name, estimatedDuration) {\n    var _this;\n    _this = _TemporalUnit.call(this) || this;\n    _this._name = name;\n    _this._duration = estimatedDuration;\n    return _this;\n  }\n  var _proto6 = Unit.prototype;\n  _proto6.duration = function duration() {\n    return this._duration;\n  };\n  _proto6.isDurationEstimated = function isDurationEstimated() {\n    return true;\n  };\n  _proto6.isDateBased = function isDateBased() {\n    return true;\n  };\n  _proto6.isTimeBased = function isTimeBased() {\n    return false;\n  };\n  _proto6.isSupportedBy = function isSupportedBy(temporal) {\n    return temporal.isSupported(ChronoField.EPOCH_DAY);\n  };\n  _proto6.addTo = function addTo(temporal, periodToAdd) {\n    switch (this) {\n      case WEEK_BASED_YEARS:\n        {\n          var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n          return temporal.with(WEEK_BASED_YEAR, added);\n        }\n      case QUARTER_YEARS:\n        return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n      default:\n        throw new IllegalStateException('Unreachable');\n    }\n  };\n  _proto6.between = function between(temporal1, temporal2) {\n    switch (this) {\n      case WEEK_BASED_YEARS:\n        return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n      case QUARTER_YEARS:\n        return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n      default:\n        throw new IllegalStateException('Unreachable');\n    }\n  };\n  _proto6.toString = function toString() {\n    return this._name;\n  };\n  return Unit;\n}(TemporalUnit);\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$f() {\n  DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n  QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n  WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n  WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n  WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n  QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n  IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n  IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n  IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n  IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n  IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n  IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n  LocalDate.prototype.isoWeekOfWeekyear = function () {\n    return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n  };\n  LocalDate.prototype.isoWeekyear = function () {\n    return this.get(IsoFields.WEEK_BASED_YEAR);\n  };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar DecimalStyle = function () {\n  function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n    this._zeroDigit = zeroChar;\n    this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n    this._positiveSign = positiveSignChar;\n    this._negativeSign = negativeSignChar;\n    this._decimalSeparator = decimalPointChar;\n  }\n  var _proto = DecimalStyle.prototype;\n  _proto.positiveSign = function positiveSign() {\n    return this._positiveSign;\n  };\n  _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n    if (positiveSign === this._positiveSign) {\n      return this;\n    }\n    return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n  };\n  _proto.negativeSign = function negativeSign() {\n    return this._negativeSign;\n  };\n  _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n    if (negativeSign === this._negativeSign) {\n      return this;\n    }\n    return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n  };\n  _proto.zeroDigit = function zeroDigit() {\n    return this._zeroDigit;\n  };\n  _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n    if (zeroDigit === this._zeroDigit) {\n      return this;\n    }\n    return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n  };\n  _proto.decimalSeparator = function decimalSeparator() {\n    return this._decimalSeparator;\n  };\n  _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n    if (decimalSeparator === this._decimalSeparator) {\n      return this;\n    }\n    return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n  };\n  _proto.convertToDigit = function convertToDigit(char) {\n    var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n    return val >= 0 && val <= 9 ? val : -1;\n  };\n  _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n    if (this._zeroDigit === '0') {\n      return numericText;\n    }\n    var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n    var convertedText = '';\n    for (var i = 0; i < numericText.length; i++) {\n      convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n    }\n    return convertedText;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof DecimalStyle) {\n      return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n  };\n  _proto.toString = function toString() {\n    return \"DecimalStyle[\" + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + \"]\";\n  };\n  DecimalStyle.of = function of() {\n    throw new Error('not yet supported');\n  };\n  DecimalStyle.availableLocales = function availableLocales() {\n    throw new Error('not yet supported');\n  };\n  return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n  _inheritsLoose(SignStyle, _Enum);\n  function SignStyle() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  var _proto = SignStyle.prototype;\n  _proto.parse = function parse(positive, strict, fixedWidth) {\n    switch (this) {\n      case SignStyle.NORMAL:\n        return !positive || !strict;\n      case SignStyle.ALWAYS:\n      case SignStyle.EXCEEDS_PAD:\n        return true;\n      default:\n        return !strict && !fixedWidth;\n    }\n  };\n  return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n  _inheritsLoose(TextStyle, _Enum);\n  function TextStyle() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  var _proto = TextStyle.prototype;\n  _proto.isStandalone = function isStandalone() {\n    switch (this) {\n      case TextStyle.FULL_STANDALONE:\n      case TextStyle.SHORT_STANDALONE:\n      case TextStyle.NARROW_STANDALONE:\n        return true;\n      default:\n        return false;\n    }\n  };\n  _proto.asStandalone = function asStandalone() {\n    switch (this) {\n      case TextStyle.FULL:\n        return TextStyle.FULL_STANDALONE;\n      case TextStyle.SHORT:\n        return TextStyle.SHORT_STANDALONE;\n      case TextStyle.NARROW:\n        return TextStyle.NARROW_STANDALONE;\n      default:\n        return this;\n    }\n  };\n  _proto.asNormal = function asNormal() {\n    switch (this) {\n      case TextStyle.FULL_STANDALONE:\n        return TextStyle.FULL;\n      case TextStyle.SHORT_STANDALONE:\n        return TextStyle.SHORT;\n      case TextStyle.NARROW_STANDALONE:\n        return TextStyle.NARROW;\n      default:\n        return this;\n    }\n  };\n  return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n  function CharLiteralPrinterParser(literal) {\n    if (literal.length > 1) {\n      throw new IllegalArgumentException(\"invalid literal, too long: \\\"\" + literal + \"\\\"\");\n    }\n    this._literal = literal;\n  }\n  var _proto = CharLiteralPrinterParser.prototype;\n  _proto.print = function print(context, buf) {\n    buf.append(this._literal);\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var length = text.length;\n    if (position === length) {\n      return ~position;\n    }\n    var ch = text.charAt(position);\n    if (context.charEquals(this._literal, ch) === false) {\n      return ~position;\n    }\n    return position + this._literal.length;\n  };\n  _proto.toString = function toString() {\n    if (this._literal === '\\'') {\n      return \"''\";\n    }\n    return \"'\" + this._literal + \"'\";\n  };\n  return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var CompositePrinterParser = function () {\n  function CompositePrinterParser(printerParsers, optional) {\n    this._printerParsers = printerParsers;\n    this._optional = optional;\n  }\n  var _proto = CompositePrinterParser.prototype;\n  _proto.withOptional = function withOptional(optional) {\n    if (optional === this._optional) {\n      return this;\n    }\n    return new CompositePrinterParser(this._printerParsers, optional);\n  };\n  _proto.print = function print(context, buf) {\n    var length = buf.length();\n    if (this._optional) {\n      context.startOptional();\n    }\n    try {\n      for (var i = 0; i < this._printerParsers.length; i++) {\n        var pp = this._printerParsers[i];\n        if (pp.print(context, buf) === false) {\n          buf.setLength(length);\n          return true;\n        }\n      }\n    } finally {\n      if (this._optional) {\n        context.endOptional();\n      }\n    }\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    if (this._optional) {\n      context.startOptional();\n      var pos = position;\n      for (var i = 0; i < this._printerParsers.length; i++) {\n        var pp = this._printerParsers[i];\n        pos = pp.parse(context, text, pos);\n        if (pos < 0) {\n          context.endOptional(false);\n          return position;\n        }\n      }\n      context.endOptional(true);\n      return pos;\n    } else {\n      for (var _i = 0; _i < this._printerParsers.length; _i++) {\n        var _pp = this._printerParsers[_i];\n        position = _pp.parse(context, text, position);\n        if (position < 0) {\n          break;\n        }\n      }\n      return position;\n    }\n  };\n  _proto.toString = function toString() {\n    var buf = '';\n    if (this._printerParsers != null) {\n      buf += this._optional ? '[' : '(';\n      for (var i = 0; i < this._printerParsers.length; i++) {\n        var pp = this._printerParsers[i];\n        buf += pp.toString();\n      }\n      buf += this._optional ? ']' : ')';\n    }\n    return buf;\n  };\n  return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n  function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n    requireNonNull(field, 'field');\n    if (field.range().isFixed() === false) {\n      throw new IllegalArgumentException(\"Field must have a fixed set of values: \" + field);\n    }\n    if (minWidth < 0 || minWidth > 9) {\n      throw new IllegalArgumentException(\"Minimum width must be from 0 to 9 inclusive but was \" + minWidth);\n    }\n    if (maxWidth < 1 || maxWidth > 9) {\n      throw new IllegalArgumentException(\"Maximum width must be from 1 to 9 inclusive but was \" + maxWidth);\n    }\n    if (maxWidth < minWidth) {\n      throw new IllegalArgumentException(\"Maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n    }\n    this.field = field;\n    this.minWidth = minWidth;\n    this.maxWidth = maxWidth;\n    this.decimalPoint = decimalPoint;\n  }\n  var _proto = FractionPrinterParser.prototype;\n  _proto.print = function print(context, buf) {\n    var value = context.getValue(this.field);\n    if (value === null) {\n      return false;\n    }\n    var symbols = context.symbols();\n    if (value === 0) {\n      if (this.minWidth > 0) {\n        if (this.decimalPoint) {\n          buf.append(symbols.decimalSeparator());\n        }\n        for (var i = 0; i < this.minWidth; i++) {\n          buf.append(symbols.zeroDigit());\n        }\n      }\n    } else {\n      var fraction = this.convertToFraction(value, symbols.zeroDigit());\n      var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n      fraction = fraction.substr(0, outputScale);\n      if (fraction * 1 > 0) {\n        while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n          fraction = fraction.substr(0, fraction.length - 1);\n        }\n      }\n      var str = fraction;\n      str = symbols.convertNumberToI18N(str);\n      if (this.decimalPoint) {\n        buf.append(symbols.decimalSeparator());\n      }\n      buf.append(str);\n    }\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var effectiveMin = context.isStrict() ? this.minWidth : 0;\n    var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n    var length = text.length;\n    if (position === length) {\n      return effectiveMin > 0 ? ~position : position;\n    }\n    if (this.decimalPoint) {\n      if (text[position] !== context.symbols().decimalSeparator()) {\n        return effectiveMin > 0 ? ~position : position;\n      }\n      position++;\n    }\n    var minEndPos = position + effectiveMin;\n    if (minEndPos > length) {\n      return ~position;\n    }\n    var maxEndPos = Math.min(position + effectiveMax, length);\n    var total = 0;\n    var pos = position;\n    while (pos < maxEndPos) {\n      var ch = text.charAt(pos++);\n      var digit = context.symbols().convertToDigit(ch);\n      if (digit < 0) {\n        if (pos < minEndPos) {\n          return ~position;\n        }\n        pos--;\n        break;\n      }\n      total = total * 10 + digit;\n    }\n    var moveLeft = pos - position;\n    var scale = Math.pow(10, moveLeft);\n    var value = this.convertFromFraction(total, scale);\n    return context.setParsedField(this.field, value, position, pos);\n  };\n  _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n    var range = this.field.range();\n    range.checkValidValue(value, this.field);\n    var _min = range.minimum();\n    var _range = range.maximum() - _min + 1;\n    var _value = value - _min;\n    var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n    var fraction = \"\" + _scaled;\n    while (fraction.length < 9) {\n      fraction = zeroDigit + fraction;\n    }\n    return fraction;\n  };\n  _proto.convertFromFraction = function convertFromFraction(total, scale) {\n    var range = this.field.range();\n    var _min = range.minimum();\n    var _range = range.maximum() - _min + 1;\n    var _value = MathUtil.intDiv(total * _range, scale);\n    return _value;\n  };\n  _proto.toString = function toString() {\n    var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n    return \"Fraction(\" + this.field + \",\" + this.minWidth + \",\" + this.maxWidth + decimal + \")\";\n  };\n  return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH$1 = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n  function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n    if (subsequentWidth === void 0) {\n      subsequentWidth = 0;\n    }\n    this._field = field;\n    this._minWidth = minWidth;\n    this._maxWidth = maxWidth;\n    this._signStyle = signStyle;\n    this._subsequentWidth = subsequentWidth;\n  }\n  var _proto = NumberPrinterParser.prototype;\n  _proto.field = function field() {\n    return this._field;\n  };\n  _proto.minWidth = function minWidth() {\n    return this._minWidth;\n  };\n  _proto.maxWidth = function maxWidth() {\n    return this._maxWidth;\n  };\n  _proto.signStyle = function signStyle() {\n    return this._signStyle;\n  };\n  _proto.withFixedWidth = function withFixedWidth() {\n    if (this._subsequentWidth === -1) {\n      return this;\n    }\n    return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n  };\n  _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n    return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n  };\n  _proto._isFixedWidth = function _isFixedWidth() {\n    return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n  };\n  _proto.print = function print(context, buf) {\n    var contextValue = context.getValue(this._field);\n    if (contextValue == null) {\n      return false;\n    }\n    var value = this._getValue(context, contextValue);\n    var symbols = context.symbols();\n    var str = \"\" + Math.abs(value);\n    if (str.length > this._maxWidth) {\n      throw new DateTimeException(\"Field \" + this._field + \" cannot be printed as the value \" + value + \" exceeds the maximum print width of \" + this._maxWidth);\n    }\n    str = symbols.convertNumberToI18N(str);\n    if (value >= 0) {\n      switch (this._signStyle) {\n        case SignStyle.EXCEEDS_PAD:\n          if (this._minWidth < MAX_WIDTH$1 && value >= EXCEED_POINTS[this._minWidth]) {\n            buf.append(symbols.positiveSign());\n          }\n          break;\n        case SignStyle.ALWAYS:\n          buf.append(symbols.positiveSign());\n          break;\n      }\n    } else {\n      switch (this._signStyle) {\n        case SignStyle.NORMAL:\n        case SignStyle.EXCEEDS_PAD:\n        case SignStyle.ALWAYS:\n          buf.append(symbols.negativeSign());\n          break;\n        case SignStyle.NOT_NEGATIVE:\n          throw new DateTimeException(\"Field \" + this._field + \" cannot be printed as the value \" + value + \" cannot be negative according to the SignStyle\");\n      }\n    }\n    for (var i = 0; i < this._minWidth - str.length; i++) {\n      buf.append(symbols.zeroDigit());\n    }\n    buf.append(str);\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var length = text.length;\n    if (position === length) {\n      return ~position;\n    }\n    assert(position >= 0 && position < length);\n    var sign = text.charAt(position);\n    var negative = false;\n    var positive = false;\n    if (sign === context.symbols().positiveSign()) {\n      if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n        return ~position;\n      }\n      positive = true;\n      position++;\n    } else if (sign === context.symbols().negativeSign()) {\n      if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n        return ~position;\n      }\n      negative = true;\n      position++;\n    } else {\n      if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n        return ~position;\n      }\n    }\n    var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n    var minEndPos = position + effMinWidth;\n    if (minEndPos > length) {\n      return ~position;\n    }\n    var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n    var total = 0;\n    var pos = position;\n    for (var pass = 0; pass < 2; pass++) {\n      var maxEndPos = Math.min(pos + effMaxWidth, length);\n      while (pos < maxEndPos) {\n        var ch = text.charAt(pos++);\n        var digit = context.symbols().convertToDigit(ch);\n        if (digit < 0) {\n          pos--;\n          if (pos < minEndPos) {\n            return ~position;\n          }\n          break;\n        }\n        if (pos - position > MAX_WIDTH$1) {\n          throw new ArithmeticException('number text exceeds length');\n        } else {\n          total = total * 10 + digit;\n        }\n      }\n      if (this._subsequentWidth > 0 && pass === 0) {\n        var parseLen = pos - position;\n        effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n        pos = position;\n        total = 0;\n      } else {\n        break;\n      }\n    }\n    if (negative) {\n      if (total === 0 && context.isStrict()) {\n        return ~(position - 1);\n      }\n      if (total !== 0) {\n        total = -total;\n      }\n    } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n      var _parseLen = pos - position;\n      if (positive) {\n        if (_parseLen <= this._minWidth) {\n          return ~(position - 1);\n        }\n      } else {\n        if (_parseLen > this._minWidth) {\n          return ~position;\n        }\n      }\n    }\n    return this._setValue(context, total, position, pos);\n  };\n  _proto._getValue = function _getValue(context, value) {\n    return value;\n  };\n  _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n    return context.setParsedField(this._field, value, errorPos, successPos);\n  };\n  _proto.toString = function toString() {\n    if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH$1 && this._signStyle === SignStyle.NORMAL) {\n      return \"Value(\" + this._field + \")\";\n    }\n    if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n      return \"Value(\" + this._field + \",\" + this._minWidth + \")\";\n    }\n    return \"Value(\" + this._field + \",\" + this._minWidth + \",\" + this._maxWidth + \",\" + this._signStyle + \")\";\n  };\n  return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n  _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n  function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n    var _this;\n    _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n    if (width < 1 || width > 10) {\n      throw new IllegalArgumentException(\"The width must be from 1 to 10 inclusive but was \" + width);\n    }\n    if (maxWidth < 1 || maxWidth > 10) {\n      throw new IllegalArgumentException(\"The maxWidth must be from 1 to 10 inclusive but was \" + maxWidth);\n    }\n    if (maxWidth < width) {\n      throw new IllegalArgumentException('The maxWidth must be greater than the width');\n    }\n    if (baseDate === null) {\n      if (field.range().isValidValue(baseValue) === false) {\n        throw new IllegalArgumentException('The base value must be within the range of the field');\n      }\n      if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n        throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n      }\n    }\n    _this._baseValue = baseValue;\n    _this._baseDate = baseDate;\n    return _this;\n  }\n  var _proto2 = ReducedPrinterParser.prototype;\n  _proto2._getValue = function _getValue(context, value) {\n    var absValue = Math.abs(value);\n    var baseValue = this._baseValue;\n    if (this._baseDate !== null) {\n      context.temporal();\n      var chrono = IsoChronology.INSTANCE;\n      baseValue = chrono.date(this._baseDate).get(this._field);\n    }\n    if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n      return absValue % EXCEED_POINTS[this._minWidth];\n    }\n    return absValue % EXCEED_POINTS[this._maxWidth];\n  };\n  _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n    var baseValue = this._baseValue;\n    if (this._baseDate != null) {\n      var chrono = context.getEffectiveChronology();\n      baseValue = chrono.date(this._baseDate).get(this._field);\n    }\n    var parseLen = successPos - errorPos;\n    if (parseLen === this._minWidth && value >= 0) {\n      var range = EXCEED_POINTS[this._minWidth];\n      var lastPart = baseValue % range;\n      var basePart = baseValue - lastPart;\n      if (baseValue > 0) {\n        value = basePart + value;\n      } else {\n        value = basePart - value;\n      }\n      if (value < baseValue) {\n        value += range;\n      }\n    }\n    return context.setParsedField(this._field, value, errorPos, successPos);\n  };\n  _proto2.withFixedWidth = function withFixedWidth() {\n    if (this._subsequentWidth === -1) {\n      return this;\n    }\n    return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate);\n  };\n  _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n    return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n  };\n  _proto2.isFixedWidth = function isFixedWidth(context) {\n    if (context.isStrict() === false) {\n      return false;\n    }\n    return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n  };\n  _proto2.toString = function toString() {\n    return \"ReducedValue(\" + this._field + \",\" + this._minWidth + \",\" + this._maxWidth + \",\" + (this._baseDate != null ? this._baseDate : this._baseValue) + \")\";\n  };\n  return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n  function OffsetIdPrinterParser(noOffsetText, pattern) {\n    requireNonNull(noOffsetText, 'noOffsetText');\n    requireNonNull(pattern, 'pattern');\n    this.noOffsetText = noOffsetText;\n    this.type = this._checkPattern(pattern);\n  }\n  var _proto = OffsetIdPrinterParser.prototype;\n  _proto._checkPattern = function _checkPattern(pattern) {\n    for (var i = 0; i < PATTERNS.length; i++) {\n      if (PATTERNS[i] === pattern) {\n        return i;\n      }\n    }\n    throw new IllegalArgumentException(\"Invalid zone offset pattern: \" + pattern);\n  };\n  _proto.print = function print(context, buf) {\n    var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n    if (offsetSecs == null) {\n      return false;\n    }\n    var totalSecs = MathUtil.safeToInt(offsetSecs);\n    if (totalSecs === 0) {\n      buf.append(this.noOffsetText);\n    } else {\n      var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n      var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n      var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n      var bufPos = buf.length();\n      var output = absHours;\n      buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + \"0\").appendChar(MathUtil.intMod(absHours, 10) + \"0\");\n      if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n        buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + \"0\").appendChar(absMinutes % 10 + \"0\");\n        output += absMinutes;\n        if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n          buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + \"0\").appendChar(absSeconds % 10 + \"0\");\n          output += absSeconds;\n        }\n      }\n      if (output === 0) {\n        buf.setLength(bufPos);\n        buf.append(this.noOffsetText);\n      }\n    }\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var length = text.length;\n    var noOffsetLen = this.noOffsetText.length;\n    if (noOffsetLen === 0) {\n      if (position === length) {\n        return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n      }\n    } else {\n      if (position === length) {\n        return ~position;\n      }\n      if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n        return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n      }\n    }\n    var sign = text[position];\n    if (sign === '+' || sign === '-') {\n      var negative = sign === '-' ? -1 : 1;\n      var array = [0, 0, 0, 0];\n      array[0] = position + 1;\n      if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n        var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n        return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n      }\n    }\n    if (noOffsetLen === 0) {\n      return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n    }\n    return ~position;\n  };\n  _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n    if ((this.type + 3) / 2 < arrayIndex) {\n      return false;\n    }\n    var pos = array[0];\n    if (this.type % 2 === 0 && arrayIndex > 1) {\n      if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n        return required;\n      }\n      pos++;\n    }\n    if (pos + 2 > parseText.length) {\n      return required;\n    }\n    var ch1 = parseText[pos++];\n    var ch2 = parseText[pos++];\n    if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n      return required;\n    }\n    var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n    if (value < 0 || value > 59) {\n      return required;\n    }\n    array[arrayIndex] = value;\n    array[0] = pos;\n    return false;\n  };\n  _proto.toString = function toString() {\n    var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n    return \"Offset(\" + PATTERNS[this.type] + \",'\" + converted + \"')\";\n  };\n  return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n  function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n    this._printerParser = printerParser;\n    this._padWidth = padWidth;\n    this._padChar = padChar;\n  }\n  var _proto = PadPrinterParserDecorator.prototype;\n  _proto.print = function print(context, buf) {\n    var preLen = buf.length();\n    if (this._printerParser.print(context, buf) === false) {\n      return false;\n    }\n    var len = buf.length() - preLen;\n    if (len > this._padWidth) {\n      throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n    }\n    for (var i = 0; i < this._padWidth - len; i++) {\n      buf.insert(preLen, this._padChar);\n    }\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var strict = context.isStrict();\n    var caseSensitive = context.isCaseSensitive();\n    assert(!(position > text.length));\n    assert(position >= 0);\n    if (position === text.length) {\n      return ~position;\n    }\n    var endPos = position + this._padWidth;\n    if (endPos > text.length) {\n      if (strict) {\n        return ~position;\n      }\n      endPos = text.length;\n    }\n    var pos = position;\n    while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n      pos++;\n    }\n    text = text.substring(0, endPos);\n    var resultPos = this._printerParser.parse(context, text, pos);\n    if (resultPos !== endPos && strict) {\n      return ~(position + pos);\n    }\n    return resultPos;\n  };\n  _proto.toString = function toString() {\n    return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : \",'\" + this._padChar + \"')\");\n  };\n  return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n  _inheritsLoose(SettingsParser, _Enum);\n  function SettingsParser() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  var _proto = SettingsParser.prototype;\n  _proto.print = function print() {\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    switch (this) {\n      case SettingsParser.SENSITIVE:\n        context.setCaseSensitive(true);\n        break;\n      case SettingsParser.INSENSITIVE:\n        context.setCaseSensitive(false);\n        break;\n      case SettingsParser.STRICT:\n        context.setStrict(true);\n        break;\n      case SettingsParser.LENIENT:\n        context.setStrict(false);\n        break;\n    }\n    return position;\n  };\n  _proto.toString = function toString() {\n    switch (this) {\n      case SettingsParser.SENSITIVE:\n        return 'ParseCaseSensitive(true)';\n      case SettingsParser.INSENSITIVE:\n        return 'ParseCaseSensitive(false)';\n      case SettingsParser.STRICT:\n        return 'ParseStrict(true)';\n      case SettingsParser.LENIENT:\n        return 'ParseStrict(false)';\n    }\n  };\n  return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n  function StringLiteralPrinterParser(literal) {\n    this._literal = literal;\n  }\n  var _proto = StringLiteralPrinterParser.prototype;\n  _proto.print = function print(context, buf) {\n    buf.append(this._literal);\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var length = text.length;\n    assert(!(position > length || position < 0));\n    if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n      return ~position;\n    }\n    return position + this._literal.length;\n  };\n  _proto.toString = function toString() {\n    var converted = this._literal.replace(\"'\", \"''\");\n    return \"'\" + converted + \"'\";\n  };\n  return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n  function ZoneRulesProvider() {}\n  ZoneRulesProvider.getRules = function getRules(zoneId) {\n    throw new DateTimeException(\"unsupported ZoneId:\" + zoneId);\n  };\n  ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n    return [];\n  };\n  return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n  _inheritsLoose(ZoneRegion, _ZoneId);\n  ZoneRegion.ofId = function ofId(zoneId) {\n    var rules = ZoneRulesProvider.getRules(zoneId);\n    return new ZoneRegion(zoneId, rules);\n  };\n  function ZoneRegion(id, rules) {\n    var _this;\n    _this = _ZoneId.call(this) || this;\n    _this._id = id;\n    _this._rules = rules;\n    return _this;\n  }\n  var _proto = ZoneRegion.prototype;\n  _proto.id = function id() {\n    return this._id;\n  };\n  _proto.rules = function rules() {\n    return this._rules;\n  };\n  return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n  function ZoneIdPrinterParser(query, description) {\n    this.query = query;\n    this.description = description;\n  }\n  var _proto = ZoneIdPrinterParser.prototype;\n  _proto.print = function print(context, buf) {\n    var zone = context.getValueQuery(this.query);\n    if (zone == null) {\n      return false;\n    }\n    buf.append(zone.id());\n    return true;\n  };\n  _proto.parse = function parse(context, text, position) {\n    var length = text.length;\n    if (position > length) {\n      return ~position;\n    }\n    if (position === length) {\n      return ~position;\n    }\n    var nextChar = text.charAt(position);\n    if (nextChar === '+' || nextChar === '-') {\n      var newContext = context.copy();\n      var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n      if (endPos < 0) {\n        return endPos;\n      }\n      var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n      var zone = ZoneOffset.ofTotalSeconds(offset);\n      context.setParsedZone(zone);\n      return endPos;\n    } else if (length >= position + 2) {\n      var nextNextChar = text.charAt(position + 1);\n      if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n        if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n          return this._parsePrefixedOffset(context, text, position, position + 3);\n        }\n        return this._parsePrefixedOffset(context, text, position, position + 2);\n      } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n        return this._parsePrefixedOffset(context, text, position, position + 3);\n      }\n    }\n    if (text.substr(position, 6) === 'SYSTEM') {\n      context.setParsedZone(ZoneId.systemDefault());\n      return position + 6;\n    }\n    if (context.charEquals(nextChar, 'Z')) {\n      context.setParsedZone(ZoneOffset.UTC);\n      return position + 1;\n    }\n    var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n    if (zoneIdTree.size !== availableZoneIds.length) {\n      zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n    }\n    var maxParseLength = length - position;\n    var treeMap = zoneIdTree.treeMap;\n    var parsedZoneId = null;\n    var parseLength = 0;\n    while (treeMap != null) {\n      var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n      treeMap = treeMap.get(parsedSubZoneId);\n      if (treeMap != null && treeMap.isLeaf) {\n        parsedZoneId = parsedSubZoneId;\n        parseLength = treeMap.length;\n      }\n    }\n    if (parsedZoneId != null) {\n      context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n      return position + parseLength;\n    }\n    return ~position;\n  };\n  _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n    var prefix = text.substring(prefixPos, position).toUpperCase();\n    var newContext = context.copy();\n    if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n      context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n      return position;\n    }\n    var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n    if (endPos < 0) {\n      context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n      return position;\n    }\n    var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n    var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n    context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n    return endPos;\n  };\n  _proto.toString = function toString() {\n    return this.description;\n  };\n  return ZoneIdPrinterParser;\n}();\nvar ZoneIdTree = function () {\n  ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n    var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n      return a.length - b.length;\n    });\n    var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n    for (var i = 0; i < sortedZoneIds.length; i++) {\n      treeMap.add(sortedZoneIds[i]);\n    }\n    return new ZoneIdTree(sortedZoneIds.length, treeMap);\n  };\n  function ZoneIdTree(size, treeMap) {\n    this.size = size;\n    this.treeMap = treeMap;\n  }\n  return ZoneIdTree;\n}();\nvar ZoneIdTreeMap = function () {\n  function ZoneIdTreeMap(length, isLeaf) {\n    if (length === void 0) {\n      length = 0;\n    }\n    if (isLeaf === void 0) {\n      isLeaf = false;\n    }\n    this.length = length;\n    this.isLeaf = isLeaf;\n    this._treeMap = {};\n  }\n  var _proto2 = ZoneIdTreeMap.prototype;\n  _proto2.add = function add(zoneId) {\n    var idLength = zoneId.length;\n    if (idLength === this.length) {\n      this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n    } else if (idLength > this.length) {\n      var subZoneId = zoneId.substr(0, this.length);\n      var subTreeMap = this._treeMap[subZoneId];\n      if (subTreeMap == null) {\n        subTreeMap = new ZoneIdTreeMap(idLength, false);\n        this._treeMap[subZoneId] = subTreeMap;\n      }\n      subTreeMap.add(zoneId);\n    }\n  };\n  _proto2.get = function get(zoneId) {\n    return this._treeMap[zoneId];\n  };\n  return ZoneIdTreeMap;\n}();\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH = 15;\nvar DateTimeFormatterBuilder = function () {\n  function DateTimeFormatterBuilder() {\n    this._active = this;\n    this._parent = null;\n    this._printerParsers = [];\n    this._optional = false;\n    this._padNextWidth = 0;\n    this._padNextChar = null;\n    this._valueParserIndex = -1;\n  }\n  DateTimeFormatterBuilder._of = function _of(parent, optional) {\n    requireNonNull(parent, 'parent');\n    requireNonNull(optional, 'optional');\n    var dtFormatterBuilder = new DateTimeFormatterBuilder();\n    dtFormatterBuilder._parent = parent;\n    dtFormatterBuilder._optional = optional;\n    return dtFormatterBuilder;\n  };\n  var _proto = DateTimeFormatterBuilder.prototype;\n  _proto.parseCaseSensitive = function parseCaseSensitive() {\n    this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n    return this;\n  };\n  _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n    this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n    return this;\n  };\n  _proto.parseStrict = function parseStrict() {\n    this._appendInternalPrinterParser(SettingsParser.STRICT);\n    return this;\n  };\n  _proto.parseLenient = function parseLenient() {\n    this._appendInternalPrinterParser(SettingsParser.LENIENT);\n    return this;\n  };\n  _proto.parseDefaulting = function parseDefaulting(field, value) {\n    requireNonNull(field);\n    this._appendInternal(new DefaultingParser(field, value));\n    return this;\n  };\n  _proto.appendValue = function appendValue() {\n    if (arguments.length === 1) {\n      return this._appendValue1.apply(this, arguments);\n    } else if (arguments.length === 2) {\n      return this._appendValue2.apply(this, arguments);\n    } else {\n      return this._appendValue4.apply(this, arguments);\n    }\n  };\n  _proto._appendValue1 = function _appendValue1(field) {\n    requireNonNull(field);\n    this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH, SignStyle.NORMAL));\n    return this;\n  };\n  _proto._appendValue2 = function _appendValue2(field, width) {\n    requireNonNull(field);\n    if (width < 1 || width > MAX_WIDTH) {\n      throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH + \" inclusive but was \" + width);\n    }\n    var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n    this._appendValuePrinterParser(pp);\n    return this;\n  };\n  _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n    requireNonNull(field);\n    requireNonNull(signStyle);\n    if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n      return this._appendValue2(field, maxWidth);\n    }\n    if (minWidth < 1 || minWidth > MAX_WIDTH) {\n      throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH + \" inclusive but was \" + minWidth);\n    }\n    if (maxWidth < 1 || maxWidth > MAX_WIDTH) {\n      throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH + \" inclusive but was \" + maxWidth);\n    }\n    if (maxWidth < minWidth) {\n      throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n    }\n    var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n    this._appendValuePrinterParser(pp);\n    return this;\n  };\n  _proto.appendValueReduced = function appendValueReduced() {\n    if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n      return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n    } else {\n      return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n    }\n  };\n  _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n    requireNonNull(field, 'field');\n    var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n    this._appendValuePrinterParser(pp);\n    return this;\n  };\n  _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n    requireNonNull(field, 'field');\n    requireNonNull(baseDate, 'baseDate');\n    requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n    var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n    this._appendValuePrinterParser(pp);\n    return this;\n  };\n  _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n    assert(pp != null);\n    if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n      var activeValueParser = this._active._valueParserIndex;\n      var basePP = this._active._printerParsers[activeValueParser];\n      if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n        basePP = basePP.withSubsequentWidth(pp.maxWidth());\n        this._appendInternal(pp.withFixedWidth());\n        this._active._valueParserIndex = activeValueParser;\n      } else {\n        basePP = basePP.withFixedWidth();\n        this._active._valueParserIndex = this._appendInternal(pp);\n      }\n      this._active._printerParsers[activeValueParser] = basePP;\n    } else {\n      this._active._valueParserIndex = this._appendInternal(pp);\n    }\n    return this;\n  };\n  _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n    this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n    return this;\n  };\n  _proto.appendInstant = function appendInstant(fractionalDigits) {\n    if (fractionalDigits === void 0) {\n      fractionalDigits = -2;\n    }\n    if (fractionalDigits < -2 || fractionalDigits > 9) {\n      throw new IllegalArgumentException(\"Invalid fractional digits: \" + fractionalDigits);\n    }\n    this._appendInternal(new InstantPrinterParser(fractionalDigits));\n    return this;\n  };\n  _proto.appendOffsetId = function appendOffsetId() {\n    this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n    return this;\n  };\n  _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n    this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n    return this;\n  };\n  _proto.appendZoneId = function appendZoneId() {\n    this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n    return this;\n  };\n  _proto.appendPattern = function appendPattern(pattern) {\n    requireNonNull(pattern, 'pattern');\n    this._parsePattern(pattern);\n    return this;\n  };\n  _proto.appendZoneText = function appendZoneText() {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n  };\n  _proto.appendText = function appendText() {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n  };\n  _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n  };\n  _proto.appendWeekField = function appendWeekField() {\n    throw new IllegalArgumentException('Pattern using (localized) text not implemented, use @js-joda/locale plugin!');\n  };\n  _proto._parsePattern = function _parsePattern(pattern) {\n    var FIELD_MAP = {\n      'G': ChronoField.ERA,\n      'y': ChronoField.YEAR_OF_ERA,\n      'u': ChronoField.YEAR,\n      'Q': IsoFields.QUARTER_OF_YEAR,\n      'q': IsoFields.QUARTER_OF_YEAR,\n      'M': ChronoField.MONTH_OF_YEAR,\n      'L': ChronoField.MONTH_OF_YEAR,\n      'D': ChronoField.DAY_OF_YEAR,\n      'd': ChronoField.DAY_OF_MONTH,\n      'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n      'E': ChronoField.DAY_OF_WEEK,\n      'c': ChronoField.DAY_OF_WEEK,\n      'e': ChronoField.DAY_OF_WEEK,\n      'a': ChronoField.AMPM_OF_DAY,\n      'H': ChronoField.HOUR_OF_DAY,\n      'k': ChronoField.CLOCK_HOUR_OF_DAY,\n      'K': ChronoField.HOUR_OF_AMPM,\n      'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n      'm': ChronoField.MINUTE_OF_HOUR,\n      's': ChronoField.SECOND_OF_MINUTE,\n      'S': ChronoField.NANO_OF_SECOND,\n      'A': ChronoField.MILLI_OF_DAY,\n      'n': ChronoField.NANO_OF_SECOND,\n      'N': ChronoField.NANO_OF_DAY\n    };\n    for (var pos = 0; pos < pattern.length; pos++) {\n      var cur = pattern.charAt(pos);\n      if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n        var start = pos++;\n        for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++);\n        var count = pos - start;\n        if (cur === 'p') {\n          var pad = 0;\n          if (pos < pattern.length) {\n            cur = pattern.charAt(pos);\n            if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n              pad = count;\n              start = pos++;\n              for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++);\n              count = pos - start;\n            }\n          }\n          if (pad === 0) {\n            throw new IllegalArgumentException(\"Pad letter 'p' must be followed by valid pad pattern: \" + pattern);\n          }\n          this.padNext(pad);\n        }\n        var field = FIELD_MAP[cur];\n        if (field != null) {\n          this._parseField(cur, count, field);\n        } else if (cur === 'z') {\n          if (count > 4) {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          } else if (count === 4) {\n            this.appendZoneText(TextStyle.FULL);\n          } else {\n            this.appendZoneText(TextStyle.SHORT);\n          }\n        } else if (cur === 'V') {\n          if (count !== 2) {\n            throw new IllegalArgumentException(\"Pattern letter count must be 2: \" + cur);\n          }\n          this.appendZoneId();\n        } else if (cur === 'Z') {\n          if (count < 4) {\n            this.appendOffset('+HHMM', '+0000');\n          } else if (count === 4) {\n            this.appendLocalizedOffset(TextStyle.FULL);\n          } else if (count === 5) {\n            this.appendOffset('+HH:MM:ss', 'Z');\n          } else {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          }\n        } else if (cur === 'O') {\n          if (count === 1) {\n            this.appendLocalizedOffset(TextStyle.SHORT);\n          } else if (count === 4) {\n            this.appendLocalizedOffset(TextStyle.FULL);\n          } else {\n            throw new IllegalArgumentException(\"Pattern letter count must be 1 or 4: \" + cur);\n          }\n        } else if (cur === 'X') {\n          if (count > 5) {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          }\n          this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n        } else if (cur === 'x') {\n          if (count > 5) {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          }\n          var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n          this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n        } else if (cur === 'W') {\n          if (count > 1) {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          }\n          this.appendWeekField('W', count);\n        } else if (cur === 'w') {\n          if (count > 2) {\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n          }\n          this.appendWeekField('w', count);\n        } else if (cur === 'Y') {\n          this.appendWeekField('Y', count);\n        } else {\n          throw new IllegalArgumentException(\"Unknown pattern letter: \" + cur);\n        }\n        pos--;\n      } else if (cur === '\\'') {\n        var _start = pos++;\n        for (; pos < pattern.length; pos++) {\n          if (pattern.charAt(pos) === '\\'') {\n            if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n              pos++;\n            } else {\n              break;\n            }\n          }\n        }\n        if (pos >= pattern.length) {\n          throw new IllegalArgumentException(\"Pattern ends with an incomplete string literal: \" + pattern);\n        }\n        var str = pattern.substring(_start + 1, pos);\n        if (str.length === 0) {\n          this.appendLiteral('\\'');\n        } else {\n          this.appendLiteral(str.replace('\\'\\'', '\\''));\n        }\n      } else if (cur === '[') {\n        this.optionalStart();\n      } else if (cur === ']') {\n        if (this._active._parent === null) {\n          throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n        }\n        this.optionalEnd();\n      } else if (cur === '{' || cur === '}' || cur === '#') {\n        throw new IllegalArgumentException(\"Pattern includes reserved character: '\" + cur + \"'\");\n      } else {\n        this.appendLiteral(cur);\n      }\n    }\n  };\n  _proto._parseField = function _parseField(cur, count, field) {\n    switch (cur) {\n      case 'u':\n      case 'y':\n        if (count === 2) {\n          this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n        } else if (count < 4) {\n          this.appendValue(field, count, MAX_WIDTH, SignStyle.NORMAL);\n        } else {\n          this.appendValue(field, count, MAX_WIDTH, SignStyle.EXCEEDS_PAD);\n        }\n        break;\n      case 'M':\n      case 'Q':\n        switch (count) {\n          case 1:\n            this.appendValue(field);\n            break;\n          case 2:\n            this.appendValue(field, 2);\n            break;\n          case 3:\n            this.appendText(field, TextStyle.SHORT);\n            break;\n          case 4:\n            this.appendText(field, TextStyle.FULL);\n            break;\n          case 5:\n            this.appendText(field, TextStyle.NARROW);\n            break;\n          default:\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'L':\n      case 'q':\n        switch (count) {\n          case 1:\n            this.appendValue(field);\n            break;\n          case 2:\n            this.appendValue(field, 2);\n            break;\n          case 3:\n            this.appendText(field, TextStyle.SHORT_STANDALONE);\n            break;\n          case 4:\n            this.appendText(field, TextStyle.FULL_STANDALONE);\n            break;\n          case 5:\n            this.appendText(field, TextStyle.NARROW_STANDALONE);\n            break;\n          default:\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'e':\n        switch (count) {\n          case 1:\n          case 2:\n            this.appendWeekField('e', count);\n            break;\n          case 3:\n            this.appendText(field, TextStyle.SHORT);\n            break;\n          case 4:\n            this.appendText(field, TextStyle.FULL);\n            break;\n          case 5:\n            this.appendText(field, TextStyle.NARROW);\n            break;\n          default:\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'c':\n        switch (count) {\n          case 1:\n            this.appendWeekField('c', count);\n            break;\n          case 2:\n            throw new IllegalArgumentException(\"Invalid number of pattern letters: \" + cur);\n          case 3:\n            this.appendText(field, TextStyle.SHORT_STANDALONE);\n            break;\n          case 4:\n            this.appendText(field, TextStyle.FULL_STANDALONE);\n            break;\n          case 5:\n            this.appendText(field, TextStyle.NARROW_STANDALONE);\n            break;\n          default:\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'a':\n        if (count === 1) {\n          this.appendText(field, TextStyle.SHORT);\n        } else {\n          throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'E':\n      case 'G':\n        switch (count) {\n          case 1:\n          case 2:\n          case 3:\n            this.appendText(field, TextStyle.SHORT);\n            break;\n          case 4:\n            this.appendText(field, TextStyle.FULL);\n            break;\n          case 5:\n            this.appendText(field, TextStyle.NARROW);\n            break;\n          default:\n            throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'S':\n        this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n        break;\n      case 'F':\n        if (count === 1) {\n          this.appendValue(field);\n        } else {\n          throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'd':\n      case 'h':\n      case 'H':\n      case 'k':\n      case 'K':\n      case 'm':\n      case 's':\n        if (count === 1) {\n          this.appendValue(field);\n        } else if (count === 2) {\n          this.appendValue(field, count);\n        } else {\n          throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      case 'D':\n        if (count === 1) {\n          this.appendValue(field);\n        } else if (count <= 3) {\n          this.appendValue(field, count);\n        } else {\n          throw new IllegalArgumentException(\"Too many pattern letters: \" + cur);\n        }\n        break;\n      default:\n        if (count === 1) {\n          this.appendValue(field);\n        } else {\n          this.appendValue(field, count);\n        }\n        break;\n    }\n  };\n  _proto.padNext = function padNext() {\n    if (arguments.length === 1) {\n      return this._padNext1.apply(this, arguments);\n    } else {\n      return this._padNext2.apply(this, arguments);\n    }\n  };\n  _proto._padNext1 = function _padNext1(padWidth) {\n    return this._padNext2(padWidth, ' ');\n  };\n  _proto._padNext2 = function _padNext2(padWidth, padChar) {\n    if (padWidth < 1) {\n      throw new IllegalArgumentException(\"The pad width must be at least one but was \" + padWidth);\n    }\n    this._active._padNextWidth = padWidth;\n    this._active._padNextChar = padChar;\n    this._active._valueParserIndex = -1;\n    return this;\n  };\n  _proto.optionalStart = function optionalStart() {\n    this._active._valueParserIndex = -1;\n    this._active = DateTimeFormatterBuilder._of(this._active, true);\n    return this;\n  };\n  _proto.optionalEnd = function optionalEnd() {\n    if (this._active._parent == null) {\n      throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n    }\n    if (this._active._printerParsers.length > 0) {\n      var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n      this._active = this._active._parent;\n      this._appendInternal(cpp);\n    } else {\n      this._active = this._active._parent;\n    }\n    return this;\n  };\n  _proto._appendInternal = function _appendInternal(pp) {\n    assert(pp != null);\n    if (this._active._padNextWidth > 0) {\n      if (pp != null) {\n        pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n      }\n      this._active._padNextWidth = 0;\n      this._active._padNextChar = 0;\n    }\n    this._active._printerParsers.push(pp);\n    this._active._valueParserIndex = -1;\n    return this._active._printerParsers.length - 1;\n  };\n  _proto.appendLiteral = function appendLiteral(literal) {\n    assert(literal != null);\n    if (literal.length > 0) {\n      if (literal.length === 1) {\n        this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n      } else {\n        this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n      }\n    }\n    return this;\n  };\n  _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n    assert(pp != null);\n    if (this._active._padNextWidth > 0) {\n      if (pp != null) {\n        pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n      }\n      this._active._padNextWidth = 0;\n      this._active._padNextChar = 0;\n    }\n    this._active._printerParsers.push(pp);\n    this._active._valueParserIndex = -1;\n    return this._active._printerParsers.length - 1;\n  };\n  _proto.append = function append(formatter) {\n    requireNonNull(formatter, 'formatter');\n    this._appendInternal(formatter._toPrinterParser(false));\n    return this;\n  };\n  _proto.toFormatter = function toFormatter(resolverStyle) {\n    if (resolverStyle === void 0) {\n      resolverStyle = ResolverStyle.SMART;\n    }\n    while (this._active._parent != null) {\n      this.optionalEnd();\n    }\n    var pp = new CompositePrinterParser(this._printerParsers, false);\n    return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n  };\n  return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\nvar InstantPrinterParser = function () {\n  function InstantPrinterParser(fractionalDigits) {\n    this.fractionalDigits = fractionalDigits;\n  }\n  var _proto2 = InstantPrinterParser.prototype;\n  _proto2.print = function print(context, buf) {\n    var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n    var inNanos = 0;\n    if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n      inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n    }\n    if (inSecs == null) {\n      return false;\n    }\n    var inSec = inSecs;\n    var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n    if (inSec >= -SECONDS_0000_TO_1970) {\n      var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n      var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n      var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n      var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n      if (hi > 0) {\n        buf.append('+').append(hi);\n      }\n      buf.append(ldt.toString());\n      if (ldt.second() === 0) {\n        buf.append(':00');\n      }\n    } else {\n      var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n      var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n      var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n      var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n      var pos = buf.length();\n      buf.append(_ldt.toString());\n      if (_ldt.second() === 0) {\n        buf.append(':00');\n      }\n      if (_hi < 0) {\n        if (_ldt.year() === -10000) {\n          buf.replace(pos, pos + 2, \"\" + (_hi - 1));\n        } else if (_lo === 0) {\n          buf.insert(pos, _hi);\n        } else {\n          buf.insert(pos + 1, Math.abs(_hi));\n        }\n      }\n    }\n    if (this.fractionalDigits === -2) {\n      if (inNano !== 0) {\n        buf.append('.');\n        if (MathUtil.intMod(inNano, 1000000) === 0) {\n          buf.append((\"\" + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n        } else if (MathUtil.intMod(inNano, 1000) === 0) {\n          buf.append((\"\" + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n        } else {\n          buf.append((\"\" + (inNano + 1000000000)).substring(1));\n        }\n      }\n    } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n      buf.append('.');\n      var div = 100000000;\n      for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n        var digit = MathUtil.intDiv(inNano, div);\n        buf.append(digit);\n        inNano = inNano - digit * div;\n        div = MathUtil.intDiv(div, 10);\n      }\n    }\n    buf.append('Z');\n    return true;\n  };\n  _proto2.parse = function parse(context, text, position) {\n    var newContext = context.copy();\n    var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n    var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n    var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n    var pos = parser.parse(newContext, text, position);\n    if (pos < 0) {\n      return pos;\n    }\n    var yearParsed = newContext.getParsed(ChronoField.YEAR);\n    var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n    var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n    var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n    var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n    var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n    var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n    var sec = secVal != null ? secVal : 0;\n    var nano = nanoVal != null ? nanoVal : 0;\n    var year = MathUtil.intMod(yearParsed, 10000);\n    var days = 0;\n    if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n      hour = 0;\n      days = 1;\n    } else if (hour === 23 && min === 59 && sec === 60) {\n      context.setParsedLeapSecond();\n      sec = 59;\n    }\n    var instantSecs;\n    try {\n      var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n      instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n      instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n    } catch (ex) {\n      return ~position;\n    }\n    var successPos = pos;\n    successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n    return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n  };\n  _proto2.toString = function toString() {\n    return 'Instant()';\n  };\n  return InstantPrinterParser;\n}();\nvar DefaultingParser = function () {\n  function DefaultingParser(field, value) {\n    this._field = field;\n    this._value = value;\n  }\n  var _proto3 = DefaultingParser.prototype;\n  _proto3.print = function print() {\n    return true;\n  };\n  _proto3.parse = function parse(context, text, position) {\n    if (context.getParsed(this._field) == null) {\n      context.setParsedField(this._field, this._value, position, position);\n    }\n    return position;\n  };\n  return DefaultingParser;\n}();\nfunction _init$e() {\n  ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n  DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n  DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n  DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n  DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n  DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n  DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n  DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n  DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n  DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n  DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n  DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */var StringBuilder = function () {\n  function StringBuilder() {\n    this._str = '';\n  }\n  var _proto = StringBuilder.prototype;\n  _proto.append = function append(str) {\n    this._str += str;\n    return this;\n  };\n  _proto.appendChar = function appendChar(str) {\n    this._str += str[0];\n    return this;\n  };\n  _proto.insert = function insert(offset, str) {\n    this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n    return this;\n  };\n  _proto.replace = function replace(start, end, str) {\n    this._str = this._str.slice(0, start) + str + this._str.slice(end);\n    return this;\n  };\n  _proto.length = function length() {\n    return this._str.length;\n  };\n  _proto.setLength = function setLength(length) {\n    this._str = this._str.slice(0, length);\n    return this;\n  };\n  _proto.toString = function toString() {\n    return this._str;\n  };\n  return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n  DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n    return DateTimeFormatter.PARSED_EXCESS_DAYS;\n  };\n  DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n    return DateTimeFormatter.PARSED_LEAP_SECOND;\n  };\n  DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n    return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n  };\n  function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n    if (chrono === void 0) {\n      chrono = IsoChronology.INSTANCE;\n    }\n    assert(printerParser != null);\n    assert(decimalStyle != null);\n    assert(resolverStyle != null);\n    this._printerParser = printerParser;\n    this._locale = locale;\n    this._decimalStyle = decimalStyle;\n    this._resolverStyle = resolverStyle;\n    this._resolverFields = resolverFields;\n    this._chrono = chrono;\n    this._zone = zone;\n  }\n  var _proto = DateTimeFormatter.prototype;\n  _proto.locale = function locale() {\n    return this._locale;\n  };\n  _proto.decimalStyle = function decimalStyle() {\n    return this._decimalStyle;\n  };\n  _proto.chronology = function chronology() {\n    return this._chrono;\n  };\n  _proto.withChronology = function withChronology(chrono) {\n    if (this._chrono != null && this._chrono.equals(chrono)) {\n      return this;\n    }\n    return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n  };\n  _proto.withLocale = function withLocale() {\n    return this;\n  };\n  _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n    requireNonNull(resolverStyle, 'resolverStyle');\n    if (resolverStyle.equals(this._resolverStyle)) {\n      return this;\n    }\n    return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n  };\n  _proto.format = function format(temporal) {\n    var buf = new StringBuilder(32);\n    this._formatTo(temporal, buf);\n    return buf.toString();\n  };\n  _proto._formatTo = function _formatTo(temporal, appendable) {\n    requireNonNull(temporal, 'temporal');\n    requireNonNull(appendable, 'appendable');\n    var context = new DateTimePrintContext(temporal, this);\n    this._printerParser.print(context, appendable);\n  };\n  _proto.parse = function parse(text, type) {\n    if (arguments.length === 1) {\n      return this.parse1(text);\n    } else {\n      return this.parse2(text, type);\n    }\n  };\n  _proto.parse1 = function parse1(text) {\n    requireNonNull(text, 'text');\n    try {\n      return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n    } catch (ex) {\n      if (ex instanceof DateTimeParseException) {\n        throw ex;\n      } else {\n        throw this._createError(text, ex);\n      }\n    }\n  };\n  _proto.parse2 = function parse2(text, type) {\n    requireNonNull(text, 'text');\n    requireNonNull(type, 'type');\n    try {\n      var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n      return builder.build(type);\n    } catch (ex) {\n      if (ex instanceof DateTimeParseException) {\n        throw ex;\n      } else {\n        throw this._createError(text, ex);\n      }\n    }\n  };\n  _proto._createError = function _createError(text, ex) {\n    var abbr = '';\n    if (text.length > 64) {\n      abbr = text.substring(0, 64) + \"...\";\n    } else {\n      abbr = text;\n    }\n    return new DateTimeParseException(\"Text '\" + abbr + \"' could not be parsed: \" + ex.message, text, 0, ex);\n  };\n  _proto._parseToBuilder = function _parseToBuilder(text, position) {\n    var pos = position != null ? position : new ParsePosition(0);\n    var result = this._parseUnresolved0(text, pos);\n    if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n      var abbr = '';\n      if (text.length > 64) {\n        abbr = text.substr(0, 64).toString() + \"...\";\n      } else {\n        abbr = text;\n      }\n      if (pos.getErrorIndex() >= 0) {\n        throw new DateTimeParseException(\"Text '\" + abbr + \"' could not be parsed at index \" + pos.getErrorIndex(), text, pos.getErrorIndex());\n      } else {\n        throw new DateTimeParseException(\"Text '\" + abbr + \"' could not be parsed, unparsed text found at index \" + pos.getIndex(), text, pos.getIndex());\n      }\n    }\n    return result.toBuilder();\n  };\n  _proto.parseUnresolved = function parseUnresolved(text, position) {\n    return this._parseUnresolved0(text, position);\n  };\n  _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n    assert(text != null, 'text', NullPointerException);\n    assert(position != null, 'position', NullPointerException);\n    var context = new DateTimeParseContext(this);\n    var pos = position.getIndex();\n    pos = this._printerParser.parse(context, text, pos);\n    if (pos < 0) {\n      position.setErrorIndex(~pos);\n      return null;\n    }\n    position.setIndex(pos);\n    return context.toParsed();\n  };\n  _proto._toPrinterParser = function _toPrinterParser(optional) {\n    return this._printerParser.withOptional(optional);\n  };\n  _proto.toString = function toString() {\n    var pattern = this._printerParser.toString();\n    return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n  };\n  return DateTimeFormatter;\n}();\nfunction _init$d() {\n  DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n  DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n  DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n  DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n  DateTimeFormatter.ISO_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.ISO_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT);\n  DateTimeFormatter.ISO_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n  DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n    if (temporal instanceof DateTimeBuilder) {\n      return temporal.excessDays;\n    } else {\n      return Period.ZERO;\n    }\n  });\n  DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n    if (temporal instanceof DateTimeBuilder) {\n      return temporal.leapSecond;\n    } else {\n      return false;\n    }\n  });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n  _inheritsLoose(MonthDay, _TemporalAccessor);\n  MonthDay.now = function now(zoneIdOrClock) {\n    if (arguments.length === 0) {\n      return MonthDay.now0();\n    } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n      return MonthDay.nowZoneId(zoneIdOrClock);\n    } else {\n      return MonthDay.nowClock(zoneIdOrClock);\n    }\n  };\n  MonthDay.now0 = function now0() {\n    return this.nowClock(Clock.systemDefaultZone());\n  };\n  MonthDay.nowZoneId = function nowZoneId(zone) {\n    requireNonNull(zone, 'zone');\n    return this.nowClock(Clock.system(zone));\n  };\n  MonthDay.nowClock = function nowClock(clock) {\n    requireNonNull(clock, 'clock');\n    var now = LocalDate.now(clock);\n    return MonthDay.of(now.month(), now.dayOfMonth());\n  };\n  MonthDay.of = function of(monthOrNumber, number) {\n    if (arguments.length === 2 && monthOrNumber instanceof Month) {\n      return MonthDay.ofMonthNumber(monthOrNumber, number);\n    } else {\n      return MonthDay.ofNumberNumber(monthOrNumber, number);\n    }\n  };\n  MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n    requireNonNull(month, 'month');\n    ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n    if (dayOfMonth > month.maxLength()) {\n      throw new DateTimeException(\"Illegal value for DayOfMonth field, value \" + dayOfMonth + \" is not valid for month \" + month.toString());\n    }\n    return new MonthDay(month.value(), dayOfMonth);\n  };\n  MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n    requireNonNull(month, 'month');\n    requireNonNull(dayOfMonth, 'dayOfMonth');\n    return MonthDay.of(Month.of(month), dayOfMonth);\n  };\n  MonthDay.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    requireInstance(temporal, TemporalAccessor, 'temporal');\n    if (temporal instanceof MonthDay) {\n      return temporal;\n    }\n    try {\n      return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain MonthDay from TemporalAccessor: \" + temporal + \", type \" + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  MonthDay.parse = function parse(text, formatter) {\n    if (arguments.length === 1) {\n      return MonthDay.parseString(text);\n    } else {\n      return MonthDay.parseStringFormatter(text, formatter);\n    }\n  };\n  MonthDay.parseString = function parseString(text) {\n    return MonthDay.parseStringFormatter(text, PARSER$2);\n  };\n  MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n    requireNonNull(text, 'text');\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return formatter.parse(text, MonthDay.FROM);\n  };\n  function MonthDay(month, dayOfMonth) {\n    var _this;\n    _this = _TemporalAccessor.call(this) || this;\n    _this._month = MathUtil.safeToInt(month);\n    _this._day = MathUtil.safeToInt(dayOfMonth);\n    return _this;\n  }\n  var _proto = MonthDay.prototype;\n  _proto.monthValue = function monthValue() {\n    return this._month;\n  };\n  _proto.month = function month() {\n    return Month.of(this._month);\n  };\n  _proto.dayOfMonth = function dayOfMonth() {\n    return this._day;\n  };\n  _proto.isSupported = function isSupported(field) {\n    if (field instanceof ChronoField) {\n      return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n    }\n    return field != null && field.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field === ChronoField.MONTH_OF_YEAR) {\n      return field.range();\n    } else if (field === ChronoField.DAY_OF_MONTH) {\n      return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n    }\n    return _TemporalAccessor.prototype.range.call(this, field);\n  };\n  _proto.get = function get(field) {\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.DAY_OF_MONTH:\n          return this._day;\n        case ChronoField.MONTH_OF_YEAR:\n          return this._month;\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.isValidYear = function isValidYear(year) {\n    return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n  };\n  _proto.withMonth = function withMonth(month) {\n    return this.with(Month.of(month));\n  };\n  _proto.with = function _with(month) {\n    requireNonNull(month, 'month');\n    if (month.value() === this._month) {\n      return this;\n    }\n    var day = Math.min(this._day, month.maxLength());\n    return new MonthDay(month.value(), day);\n  };\n  _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n    if (dayOfMonth === this._day) {\n      return this;\n    }\n    return MonthDay.of(this._month, dayOfMonth);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    requireInstance(_query, TemporalQuery, 'query');\n    if (_query === TemporalQueries.chronology()) {\n      return IsoChronology.INSTANCE;\n    }\n    return _TemporalAccessor.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    requireNonNull(temporal, 'temporal');\n    temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n    return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n  };\n  _proto.atYear = function atYear(year) {\n    return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, MonthDay, 'other');\n    var cmp = this._month - other.monthValue();\n    if (cmp === 0) {\n      cmp = this._day - other.dayOfMonth();\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, MonthDay, 'other');\n    return this.compareTo(other) > 0;\n  };\n  _proto.isBefore = function isBefore(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, MonthDay, 'other');\n    return this.compareTo(other) < 0;\n  };\n  _proto.equals = function equals(obj) {\n    if (this === obj) {\n      return true;\n    }\n    if (obj instanceof MonthDay) {\n      var other = obj;\n      return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n    }\n    return false;\n  };\n  _proto.toString = function toString() {\n    return \"--\" + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return formatter.format(this);\n  };\n  return MonthDay;\n}(TemporalAccessor);\nvar PARSER$2;\nfunction _init$c() {\n  PARSER$2 = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n  MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n    return MonthDay.from(temporal);\n  });\n}\n\nvar YearMonth = function (_Temporal) {\n  _inheritsLoose(YearMonth, _Temporal);\n  YearMonth.now = function now(zoneIdOrClock) {\n    if (arguments.length === 0) {\n      return YearMonth.now0();\n    } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n      return YearMonth.nowZoneId(zoneIdOrClock);\n    } else {\n      return YearMonth.nowClock(zoneIdOrClock);\n    }\n  };\n  YearMonth.now0 = function now0() {\n    return YearMonth.nowClock(Clock.systemDefaultZone());\n  };\n  YearMonth.nowZoneId = function nowZoneId(zone) {\n    return YearMonth.nowClock(Clock.system(zone));\n  };\n  YearMonth.nowClock = function nowClock(clock) {\n    var now = LocalDate.now(clock);\n    return YearMonth.of(now.year(), now.month());\n  };\n  YearMonth.of = function of(year, monthOrNumber) {\n    if (arguments.length === 2 && monthOrNumber instanceof Month) {\n      return YearMonth.ofNumberMonth(year, monthOrNumber);\n    } else {\n      return YearMonth.ofNumberNumber(year, monthOrNumber);\n    }\n  };\n  YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n    requireNonNull(month, 'month');\n    requireInstance(month, Month, 'month');\n    return YearMonth.ofNumberNumber(year, month.value());\n  };\n  YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n    requireNonNull(year, 'year');\n    requireNonNull(month, 'month');\n    ChronoField.YEAR.checkValidValue(year);\n    ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n    return new YearMonth(year, month);\n  };\n  YearMonth.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (temporal instanceof YearMonth) {\n      return temporal;\n    }\n    try {\n      return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain YearMonth from TemporalAccessor: \" + temporal + \", type \" + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  YearMonth.parse = function parse(text, formatter) {\n    if (arguments.length === 1) {\n      return YearMonth.parseString(text);\n    } else {\n      return YearMonth.parseStringFormatter(text, formatter);\n    }\n  };\n  YearMonth.parseString = function parseString(text) {\n    return YearMonth.parseStringFormatter(text, PARSER$1);\n  };\n  YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, YearMonth.FROM);\n  };\n  function YearMonth(year, month) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    _this._year = MathUtil.safeToInt(year);\n    _this._month = MathUtil.safeToInt(month);\n    return _this;\n  }\n  var _proto = YearMonth.prototype;\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n      return this.isSupportedField(fieldOrUnit);\n    } else {\n      return this.isSupportedUnit(fieldOrUnit);\n    }\n  };\n  _proto.isSupportedField = function isSupportedField(field) {\n    if (field instanceof ChronoField) {\n      return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n    }\n    return field != null && field.isSupportedBy(this);\n  };\n  _proto.isSupportedUnit = function isSupportedUnit(unit) {\n    if (unit instanceof ChronoUnit) {\n      return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n    }\n    return unit != null && unit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field === ChronoField.YEAR_OF_ERA) {\n      return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n    }\n    return _Temporal.prototype.range.call(this, field);\n  };\n  _proto.get = function get(field) {\n    requireNonNull(field, 'field');\n    requireInstance(field, TemporalField, 'field');\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    requireInstance(field, TemporalField, 'field');\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.MONTH_OF_YEAR:\n          return this._month;\n        case ChronoField.PROLEPTIC_MONTH:\n          return this._getProlepticMonth();\n        case ChronoField.YEAR_OF_ERA:\n          return this._year < 1 ? 1 - this._year : this._year;\n        case ChronoField.YEAR:\n          return this._year;\n        case ChronoField.ERA:\n          return this._year < 1 ? 0 : 1;\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto._getProlepticMonth = function _getProlepticMonth() {\n    return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n  };\n  _proto.year = function year() {\n    return this._year;\n  };\n  _proto.monthValue = function monthValue() {\n    return this._month;\n  };\n  _proto.month = function month() {\n    return Month.of(this._month);\n  };\n  _proto.isLeapYear = function isLeapYear() {\n    return IsoChronology.isLeapYear(this._year);\n  };\n  _proto.isValidDay = function isValidDay(dayOfMonth) {\n    return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n  };\n  _proto.lengthOfMonth = function lengthOfMonth() {\n    return this.month().length(this.isLeapYear());\n  };\n  _proto.lengthOfYear = function lengthOfYear() {\n    return this.isLeapYear() ? 366 : 365;\n  };\n  _proto.with = function _with(adjusterOrField, value) {\n    if (arguments.length === 1) {\n      return this._withAdjuster(adjusterOrField);\n    } else {\n      return this._withField(adjusterOrField, value);\n    }\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    requireInstance(field, TemporalField, 'field');\n    if (field instanceof ChronoField) {\n      var f = field;\n      f.checkValidValue(newValue);\n      switch (f) {\n        case ChronoField.MONTH_OF_YEAR:\n          return this.withMonth(newValue);\n        case ChronoField.PROLEPTIC_MONTH:\n          return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n        case ChronoField.YEAR_OF_ERA:\n          return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n        case ChronoField.YEAR:\n          return this.withYear(newValue);\n        case ChronoField.ERA:\n          return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.withYear = function withYear(year) {\n    ChronoField.YEAR.checkValidValue(year);\n    return new YearMonth(year, this._month);\n  };\n  _proto.withMonth = function withMonth(month) {\n    ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n    return new YearMonth(this._year, month);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(unit, 'unit');\n    requireInstance(unit, TemporalUnit, 'unit');\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.MONTHS:\n          return this.plusMonths(amountToAdd);\n        case ChronoUnit.YEARS:\n          return this.plusYears(amountToAdd);\n        case ChronoUnit.DECADES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n        case ChronoUnit.CENTURIES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n        case ChronoUnit.MILLENNIA:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n        case ChronoUnit.ERAS:\n          return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(yearsToAdd) {\n    if (yearsToAdd === 0) {\n      return this;\n    }\n    var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n    return this.withYear(newYear);\n  };\n  _proto.plusMonths = function plusMonths(monthsToAdd) {\n    if (monthsToAdd === 0) {\n      return this;\n    }\n    var monthCount = this._year * 12 + (this._month - 1);\n    var calcMonths = monthCount + monthsToAdd;\n    var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n    var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n    return new YearMonth(newYear, newMonth);\n  };\n  _proto.minusYears = function minusYears(yearsToSubtract) {\n    return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n  };\n  _proto.minusMonths = function minusMonths(monthsToSubtract) {\n    return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    requireInstance(_query, TemporalQuery, 'query');\n    if (_query === TemporalQueries.chronology()) {\n      return IsoChronology.INSTANCE;\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.MONTHS;\n    } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    requireNonNull(temporal, 'temporal');\n    requireInstance(temporal, Temporal, 'temporal');\n    return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n  };\n  _proto.until = function until(endExclusive, unit) {\n    requireNonNull(endExclusive, 'endExclusive');\n    requireNonNull(unit, 'unit');\n    requireInstance(endExclusive, Temporal, 'endExclusive');\n    requireInstance(unit, TemporalUnit, 'unit');\n    var end = YearMonth.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n      switch (unit) {\n        case ChronoUnit.MONTHS:\n          return monthsUntil;\n        case ChronoUnit.YEARS:\n          return MathUtil.intDiv(monthsUntil, 12);\n        case ChronoUnit.DECADES:\n          return MathUtil.intDiv(monthsUntil, 120);\n        case ChronoUnit.CENTURIES:\n          return MathUtil.intDiv(monthsUntil, 1200);\n        case ChronoUnit.MILLENNIA:\n          return MathUtil.intDiv(monthsUntil, 12000);\n        case ChronoUnit.ERAS:\n          return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.atDay = function atDay(dayOfMonth) {\n    requireNonNull(dayOfMonth, 'dayOfMonth');\n    return LocalDate.of(this._year, this._month, dayOfMonth);\n  };\n  _proto.atEndOfMonth = function atEndOfMonth() {\n    return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, YearMonth, 'other');\n    var cmp = this._year - other.year();\n    if (cmp === 0) {\n      cmp = this._month - other.monthValue();\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    return this.compareTo(other) > 0;\n  };\n  _proto.isBefore = function isBefore(other) {\n    return this.compareTo(other) < 0;\n  };\n  _proto.equals = function equals(obj) {\n    if (this === obj) {\n      return true;\n    }\n    if (obj instanceof YearMonth) {\n      var other = obj;\n      return this.year() === other.year() && this.monthValue() === other.monthValue();\n    }\n    return false;\n  };\n  _proto.toString = function toString() {\n    return PARSER$1.format(this);\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this);\n  };\n  return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$b() {\n  PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n  YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n    return YearMonth.from(temporal);\n  });\n}\n\nvar Year = function (_Temporal) {\n  _inheritsLoose(Year, _Temporal);\n  function Year(value) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    _this._year = MathUtil.safeToInt(value);\n    return _this;\n  }\n  var _proto = Year.prototype;\n  _proto.value = function value() {\n    return this._year;\n  };\n  Year.now = function now(zoneIdOrClock) {\n    if (zoneIdOrClock === void 0) {\n      zoneIdOrClock = undefined;\n    }\n    if (zoneIdOrClock === undefined) {\n      return Year.now0();\n    } else if (zoneIdOrClock instanceof ZoneId) {\n      return Year.nowZoneId(zoneIdOrClock);\n    } else {\n      return Year.nowClock(zoneIdOrClock);\n    }\n  };\n  Year.now0 = function now0() {\n    return Year.nowClock(Clock.systemDefaultZone());\n  };\n  Year.nowZoneId = function nowZoneId(zone) {\n    requireNonNull(zone, 'zone');\n    requireInstance(zone, ZoneId, 'zone');\n    return Year.nowClock(Clock.system(zone));\n  };\n  Year.nowClock = function nowClock(clock) {\n    requireNonNull(clock, 'clock');\n    requireInstance(clock, Clock, 'clock');\n    var now = LocalDate.now(clock);\n    return Year.of(now.year());\n  };\n  Year.of = function of(isoYear) {\n    requireNonNull(isoYear, 'isoYear');\n    ChronoField.YEAR.checkValidValue(isoYear);\n    return new Year(isoYear);\n  };\n  Year.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    requireInstance(temporal, TemporalAccessor, 'temporal');\n    if (temporal instanceof Year) {\n      return temporal;\n    }\n    try {\n      return Year.of(temporal.get(ChronoField.YEAR));\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain Year from TemporalAccessor: \" + temporal + \", type \" + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  Year.parse = function parse(text, formatter) {\n    if (arguments.length <= 1) {\n      return Year.parseText(text);\n    } else {\n      return Year.parseTextFormatter(text, formatter);\n    }\n  };\n  Year.parseText = function parseText(text) {\n    requireNonNull(text, 'text');\n    return Year.parse(text, PARSER);\n  };\n  Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n    if (formatter === void 0) {\n      formatter = PARSER;\n    }\n    requireNonNull(text, 'text');\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return formatter.parse(text, Year.FROM);\n  };\n  Year.isLeap = function isLeap(year) {\n    return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n  };\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n      return this.isSupportedField(fieldOrUnit);\n    } else {\n      return this.isSupportedUnit(fieldOrUnit);\n    }\n  };\n  _proto.isSupportedField = function isSupportedField(field) {\n    if (field instanceof ChronoField) {\n      return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n    }\n    return field != null && field.isSupportedBy(this);\n  };\n  _proto.isSupportedUnit = function isSupportedUnit(unit) {\n    if (unit instanceof ChronoUnit) {\n      return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n    }\n    return unit != null && unit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (this.isSupported(field)) {\n      return field.range();\n    } else if (field instanceof ChronoField) {\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return _Temporal.prototype.range.call(this, field);\n  };\n  _proto.get = function get(field) {\n    return this.range(field).checkValidIntValue(this.getLong(field), field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.YEAR_OF_ERA:\n          return this._year < 1 ? 1 - this._year : this._year;\n        case ChronoField.YEAR:\n          return this._year;\n        case ChronoField.ERA:\n          return this._year < 1 ? 0 : 1;\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.isLeap = function isLeap() {\n    return Year.isLeap(this._year);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    requireInstance(field, TemporalField, 'field');\n    if (field instanceof ChronoField) {\n      field.checkValidValue(newValue);\n      switch (field) {\n        case ChronoField.YEAR_OF_ERA:\n          return Year.of(this._year < 1 ? 1 - newValue : newValue);\n        case ChronoField.YEAR:\n          return Year.of(newValue);\n        case ChronoField.ERA:\n          return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(amountToAdd, 'amountToAdd');\n    requireNonNull(unit, 'unit');\n    requireInstance(unit, TemporalUnit, 'unit');\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.YEARS:\n          return this.plusYears(amountToAdd);\n        case ChronoUnit.DECADES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n        case ChronoUnit.CENTURIES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n        case ChronoUnit.MILLENNIA:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n        case ChronoUnit.ERAS:\n          return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(yearsToAdd) {\n    if (yearsToAdd === 0) {\n      return this;\n    }\n    return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n  };\n  _proto.minusYears = function minusYears(yearsToSubtract) {\n    return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    requireNonNull(temporal, 'temporal');\n    return temporal.with(ChronoField.YEAR, this._year);\n  };\n  _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n    return monthDay != null && monthDay.isValidYear(this._year);\n  };\n  _proto.length = function length() {\n    return this.isLeap() ? 366 : 365;\n  };\n  _proto.atDay = function atDay(dayOfYear) {\n    return LocalDate.ofYearDay(this._year, dayOfYear);\n  };\n  _proto.atMonth = function atMonth(monthOrNumber) {\n    if (arguments.length === 1 && monthOrNumber instanceof Month) {\n      return this.atMonthMonth(monthOrNumber);\n    } else {\n      return this.atMonthNumber(monthOrNumber);\n    }\n  };\n  _proto.atMonthMonth = function atMonthMonth(month) {\n    requireNonNull(month, 'month');\n    requireInstance(month, Month, 'month');\n    return YearMonth.of(this._year, month);\n  };\n  _proto.atMonthNumber = function atMonthNumber(month) {\n    requireNonNull(month, 'month');\n    return YearMonth.of(this._year, month);\n  };\n  _proto.atMonthDay = function atMonthDay(monthDay) {\n    requireNonNull(monthDay, 'monthDay');\n    requireInstance(monthDay, MonthDay, 'monthDay');\n    return monthDay.atYear(this._year);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query()');\n    requireInstance(_query, TemporalQuery, 'query()');\n    if (_query === TemporalQueries.chronology()) {\n      return IsoChronology.INSTANCE;\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.YEARS;\n    } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, Year, 'other');\n    return this._year - other._year;\n  };\n  _proto.isAfter = function isAfter(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, Year, 'other');\n    return this._year > other._year;\n  };\n  _proto.isBefore = function isBefore(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, Year, 'other');\n    return this._year < other._year;\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return formatter.format(this);\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof Year) {\n      return this.value() === other.value();\n    }\n    return false;\n  };\n  _proto.toString = function toString() {\n    return \"\" + this._year;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.until = function until(endExclusive, unit) {\n    var end = Year.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      var yearsUntil = end.value() - this.value();\n      switch (unit) {\n        case ChronoUnit.YEARS:\n          return yearsUntil;\n        case ChronoUnit.DECADES:\n          return MathUtil.intDiv(yearsUntil, 10);\n        case ChronoUnit.CENTURIES:\n          return MathUtil.intDiv(yearsUntil, 100);\n        case ChronoUnit.MILLENNIA:\n          return MathUtil.intDiv(yearsUntil, 1000);\n        case ChronoUnit.ERAS:\n          return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  return Year;\n}(Temporal);\nvar PARSER;\nfunction _init$a() {\n  Year.MIN_VALUE = YearConstants.MIN_VALUE;\n  Year.MAX_VALUE = YearConstants.MAX_VALUE;\n  PARSER = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n  Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n    return Year.from(temporal);\n  });\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n  function TemporalAdjuster() {}\n  var _proto = TemporalAdjuster.prototype;\n  _proto.adjustInto = function adjustInto(temporal) {\n    abstractMethodFail('adjustInto');\n  };\n  return TemporalAdjuster;\n}();\n\nvar TemporalAdjusters = function () {\n  function TemporalAdjusters() {}\n  TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n    return Impl.FIRST_DAY_OF_MONTH;\n  };\n  TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n    return Impl.LAST_DAY_OF_MONTH;\n  };\n  TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n    return Impl.FIRST_DAY_OF_NEXT_MONTH;\n  };\n  TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n    return Impl.FIRST_DAY_OF_YEAR;\n  };\n  TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n    return Impl.LAST_DAY_OF_YEAR;\n  };\n  TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n    return Impl.FIRST_DAY_OF_NEXT_YEAR;\n  };\n  TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n    requireNonNull(dayOfWeek, 'dayOfWeek');\n    return new DayOfWeekInMonth(1, dayOfWeek);\n  };\n  TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n    requireNonNull(dayOfWeek, 'dayOfWeek');\n    return new DayOfWeekInMonth(-1, dayOfWeek);\n  };\n  TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n    requireNonNull(dayOfWeek, 'dayOfWeek');\n    return new DayOfWeekInMonth(ordinal, dayOfWeek);\n  };\n  TemporalAdjusters.next = function next(dayOfWeek) {\n    return new RelativeDayOfWeek(2, dayOfWeek);\n  };\n  TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n    return new RelativeDayOfWeek(0, dayOfWeek);\n  };\n  TemporalAdjusters.previous = function previous(dayOfWeek) {\n    return new RelativeDayOfWeek(3, dayOfWeek);\n  };\n  TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n    return new RelativeDayOfWeek(1, dayOfWeek);\n  };\n  return TemporalAdjusters;\n}();\nvar Impl = function (_TemporalAdjuster) {\n  _inheritsLoose(Impl, _TemporalAdjuster);\n  function Impl(ordinal) {\n    var _this;\n    _this = _TemporalAdjuster.call(this) || this;\n    _this._ordinal = ordinal;\n    return _this;\n  }\n  var _proto = Impl.prototype;\n  _proto.adjustInto = function adjustInto(temporal) {\n    switch (this._ordinal) {\n      case 0:\n        return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n      case 1:\n        return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n      case 2:\n        return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n      case 3:\n        return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n      case 4:\n        return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n      case 5:\n        return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n    }\n    throw new IllegalStateException('Unreachable');\n  };\n  return Impl;\n}(TemporalAdjuster);\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n  _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n  function DayOfWeekInMonth(ordinal, dow) {\n    var _this2;\n    _this2 = _TemporalAdjuster2.call(this) || this;\n    _this2._ordinal = ordinal;\n    _this2._dowValue = dow.value();\n    return _this2;\n  }\n  var _proto2 = DayOfWeekInMonth.prototype;\n  _proto2.adjustInto = function adjustInto(temporal) {\n    if (this._ordinal >= 0) {\n      var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n      var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n      var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n      dowDiff += (this._ordinal - 1) * 7;\n      return temp.plus(dowDiff, ChronoUnit.DAYS);\n    } else {\n      var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n      var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n      var daysDiff = this._dowValue - _curDow;\n      daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n      daysDiff -= (-this._ordinal - 1) * 7;\n      return _temp.plus(daysDiff, ChronoUnit.DAYS);\n    }\n  };\n  return DayOfWeekInMonth;\n}(TemporalAdjuster);\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n  _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n  function RelativeDayOfWeek(relative, dayOfWeek) {\n    var _this3;\n    _this3 = _TemporalAdjuster3.call(this) || this;\n    requireNonNull(dayOfWeek, 'dayOfWeek');\n    _this3._relative = relative;\n    _this3._dowValue = dayOfWeek.value();\n    return _this3;\n  }\n  var _proto3 = RelativeDayOfWeek.prototype;\n  _proto3.adjustInto = function adjustInto(temporal) {\n    var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n    if (this._relative < 2 && calDow === this._dowValue) {\n      return temporal;\n    }\n    if ((this._relative & 1) === 0) {\n      var daysDiff = calDow - this._dowValue;\n      return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n    } else {\n      var _daysDiff = this._dowValue - calDow;\n      return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n    }\n  };\n  return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n  _inheritsLoose(IsoChronology, _Enum);\n  function IsoChronology() {\n    return _Enum.apply(this, arguments) || this;\n  }\n  IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n    return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n  };\n  var _proto = IsoChronology.prototype;\n  _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n    requireNonNull(fieldValues, 'fieldValues');\n    requireNonNull(field, 'field');\n    var current = fieldValues.get(field);\n    if (current != null && current !== value) {\n      throw new DateTimeException(\"Invalid state, field: \" + field + \" \" + current + \" conflicts with \" + field + \" \" + value);\n    }\n    fieldValues.put(field, value);\n  };\n  _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n    if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n      return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n    }\n    var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n    if (prolepticMonth != null) {\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n      }\n      this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n      this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n    }\n    var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n    if (yoeLong != null) {\n      if (resolverStyle !== ResolverStyle.LENIENT) {\n        ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n      }\n      var era = fieldValues.remove(ChronoField.ERA);\n      if (era == null) {\n        var year = fieldValues.get(ChronoField.YEAR);\n        if (resolverStyle === ResolverStyle.STRICT) {\n          if (year != null) {\n            this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n          } else {\n            fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n          }\n        } else {\n          this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n        }\n      } else if (era === 1) {\n        this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n      } else if (era === 0) {\n        this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n      } else {\n        throw new DateTimeException(\"Invalid value for era: \" + era);\n      }\n    } else if (fieldValues.containsKey(ChronoField.ERA)) {\n      ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n    }\n    if (fieldValues.containsKey(ChronoField.YEAR)) {\n      if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n        if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n          var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n          var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n          var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n          if (resolverStyle === ResolverStyle.LENIENT) {\n            var months = moy - 1;\n            var days = dom - 1;\n            return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n          } else if (resolverStyle === ResolverStyle.SMART) {\n            ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n            if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n              dom = Math.min(dom, 30);\n            } else if (moy === 2) {\n              dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n            }\n            return LocalDate.of(y, moy, dom);\n          } else {\n            return LocalDate.of(y, moy, dom);\n          }\n        }\n      }\n      if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n        var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n        if (resolverStyle === ResolverStyle.LENIENT) {\n          var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n          return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n        }\n        var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n        return LocalDate.ofYearDay(_y, doy);\n      }\n      if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n        if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n          var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n          if (resolverStyle === ResolverStyle.LENIENT) {\n            var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n            var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n            return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n          }\n          var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n          var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n          var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n          if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n            throw new DateTimeException('Strict mode rejected date parsed to a different year');\n          }\n          return date;\n        }\n        if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n          var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n          if (resolverStyle === ResolverStyle.LENIENT) {\n            var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n            var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n            return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n          }\n          var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n          var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n          var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n          if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n            throw new DateTimeException('Strict mode rejected date parsed to a different month');\n          }\n          return _date;\n        }\n      }\n    }\n    return null;\n  };\n  _proto.date = function date(temporal) {\n    return LocalDate.from(temporal);\n  };\n  return IsoChronology;\n}(Enum);\nfunction _init$9() {\n  IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_Temporal) {\n  _inheritsLoose(OffsetTime, _Temporal);\n  OffsetTime.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (temporal instanceof OffsetTime) {\n      return temporal;\n    } else if (temporal instanceof OffsetDateTime) {\n      return temporal.toOffsetTime();\n    }\n    try {\n      var time = LocalTime.from(temporal);\n      var offset = ZoneOffset.from(temporal);\n      return new OffsetTime(time, offset);\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  OffsetTime.now = function now(clockOrZone) {\n    if (arguments.length === 0) {\n      return OffsetTime._now(Clock.systemDefaultZone());\n    } else if (clockOrZone instanceof Clock) {\n      return OffsetTime._now(clockOrZone);\n    } else {\n      return OffsetTime._now(Clock.system(clockOrZone));\n    }\n  };\n  OffsetTime._now = function _now(clock) {\n    requireNonNull(clock, 'clock');\n    var now = clock.instant();\n    return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n  };\n  OffsetTime.of = function of() {\n    if (arguments.length <= 2) {\n      return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n    } else {\n      return OffsetTime.ofNumbers.apply(this, arguments);\n    }\n  };\n  OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n    var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n    return new OffsetTime(time, offset);\n  };\n  OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n    return new OffsetTime(time, offset);\n  };\n  OffsetTime.ofInstant = function ofInstant(instant, zone) {\n    requireNonNull(instant, 'instant');\n    requireInstance(instant, Instant, 'instant');\n    requireNonNull(zone, 'zone');\n    requireInstance(zone, ZoneId, 'zone');\n    var rules = zone.rules();\n    var offset = rules.offset(instant);\n    var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n    secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n    if (secsOfDay < 0) {\n      secsOfDay += LocalTime.SECONDS_PER_DAY;\n    }\n    var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n    return new OffsetTime(time, offset);\n  };\n  OffsetTime.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n    }\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, OffsetTime.FROM);\n  };\n  function OffsetTime(time, offset) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    requireNonNull(time, 'time');\n    requireInstance(time, LocalTime, 'time');\n    requireNonNull(offset, 'offset');\n    requireInstance(offset, ZoneOffset, 'offset');\n    _this._time = time;\n    _this._offset = offset;\n    return _this;\n  }\n  var _proto = OffsetTime.prototype;\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n  };\n  _proto.atDate = function atDate(date) {\n    return OffsetDateTime.of(date, this._time, this._offset);\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this, OffsetTime.FROM);\n  };\n  _proto.get = function get(field) {\n    return _Temporal.prototype.get.call(this, field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field instanceof ChronoField) {\n      if (field === ChronoField.OFFSET_SECONDS) {\n        return this._offset.totalSeconds();\n      }\n      return this._time.getLong(field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.hour = function hour() {\n    return this._time.hour();\n  };\n  _proto.minute = function minute() {\n    return this._time.minute();\n  };\n  _proto.second = function second() {\n    return this._time.second();\n  };\n  _proto.nano = function nano() {\n    return this._time.nano();\n  };\n  _proto.offset = function offset() {\n    return this._offset;\n  };\n  _proto.isAfter = function isAfter(other) {\n    requireNonNull(other, 'other');\n    return this._toEpochNano() > other._toEpochNano();\n  };\n  _proto.isBefore = function isBefore(other) {\n    requireNonNull(other, 'other');\n    return this._toEpochNano() < other._toEpochNano();\n  };\n  _proto.isEqual = function isEqual(other) {\n    requireNonNull(other, 'other');\n    return this._toEpochNano() === other._toEpochNano();\n  };\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n    } else if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isTimeBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.minusHours = function minusHours(hours) {\n    return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n  };\n  _proto.minusMinutes = function minusMinutes(minutes) {\n    return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n  };\n  _proto.minusSeconds = function minusSeconds(seconds) {\n    return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n  };\n  _proto.minusNanos = function minusNanos(nanos) {\n    return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n  };\n  _proto._minusAmount = function _minusAmount(amount) {\n    requireNonNull(amount);\n    return amount.subtractFrom(this);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    return this.plus(-1 * amountToSubtract, unit);\n  };\n  _proto._plusAmount = function _plusAmount(amount) {\n    requireNonNull(amount);\n    return amount.addTo(this);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    if (unit instanceof ChronoUnit) {\n      return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusHours = function plusHours(hours) {\n    return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n  };\n  _proto.plusMinutes = function plusMinutes(minutes) {\n    return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n  };\n  _proto.plusSeconds = function plusSeconds(seconds) {\n    return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n  };\n  _proto.plusNanos = function plusNanos(nanos) {\n    return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n      return this.offset();\n    } else if (_query === TemporalQueries.localTime()) {\n      return this._time;\n    } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      if (field === ChronoField.OFFSET_SECONDS) {\n        return field.range();\n      }\n      return this._time.range(field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.toLocalTime = function toLocalTime() {\n    return this._time;\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n  };\n  _proto.until = function until(endExclusive, unit) {\n    requireNonNull(endExclusive, 'endExclusive');\n    requireNonNull(unit, 'unit');\n    var end = OffsetTime.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      var nanosUntil = end._toEpochNano() - this._toEpochNano();\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return nanosUntil;\n        case ChronoUnit.MICROS:\n          return MathUtil.intDiv(nanosUntil, 1000);\n        case ChronoUnit.MILLIS:\n          return MathUtil.intDiv(nanosUntil, 1000000);\n        case ChronoUnit.SECONDS:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n        case ChronoUnit.MINUTES:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n        case ChronoUnit.HOURS:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n        case ChronoUnit.HALF_DAYS:\n          return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.withHour = function withHour(hour) {\n    return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n  };\n  _proto.withMinute = function withMinute(minute) {\n    return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n  };\n  _proto.withSecond = function withSecond(second) {\n    return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n  };\n  _proto.withNano = function withNano(nano) {\n    return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n  };\n  _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n    requireNonNull(offset, 'offset');\n    if (offset.equals(this._offset)) {\n      return this;\n    }\n    var difference = offset.totalSeconds() - this._offset.totalSeconds();\n    var adjusted = this._time.plusSeconds(difference);\n    return new OffsetTime(adjusted, offset);\n  };\n  _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n    return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n  };\n  _proto._toEpochNano = function _toEpochNano() {\n    var nod = this._time.toNanoOfDay();\n    var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n    return nod - offsetNanos;\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster, 'adjuster');\n    if (adjuster instanceof LocalTime) {\n      return this._withLocalTimeOffset(adjuster, this._offset);\n    } else if (adjuster instanceof ZoneOffset) {\n      return this._withLocalTimeOffset(this._time, adjuster);\n    } else if (adjuster instanceof OffsetTime) {\n      return adjuster;\n    }\n    return adjuster.adjustInto(this);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      if (field === ChronoField.OFFSET_SECONDS) {\n        return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n      }\n      return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n    if (this._time === time && this._offset.equals(offset)) {\n      return this;\n    }\n    return new OffsetTime(time, offset);\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, OffsetTime, 'other');\n    if (this._offset.equals(other._offset)) {\n      return this._time.compareTo(other._time);\n    }\n    var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n    if (compare === 0) {\n      return this._time.compareTo(other._time);\n    }\n    return compare;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof OffsetTime) {\n      return this._time.equals(other._time) && this._offset.equals(other._offset);\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._time.hashCode() ^ this._offset.hashCode();\n  };\n  _proto.toString = function toString() {\n    return this._time.toString() + this._offset.toString();\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return OffsetTime;\n}(Temporal);\nfunction _init$8() {\n  OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n  OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n  OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n    return OffsetTime.from(temporal);\n  });\n}\n\nvar ChronoZonedDateTime = function (_Temporal) {\n  _inheritsLoose(ChronoZonedDateTime, _Temporal);\n  function ChronoZonedDateTime() {\n    return _Temporal.apply(this, arguments) || this;\n  }\n  var _proto = ChronoZonedDateTime.prototype;\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n      return this.zone();\n    } else if (_query === TemporalQueries.chronology()) {\n      return this.toLocalDate().chronology();\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    } else if (_query === TemporalQueries.offset()) {\n      return this.offset();\n    } else if (_query === TemporalQueries.localDate()) {\n      return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n    } else if (_query === TemporalQueries.localTime()) {\n      return this.toLocalTime();\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this);\n  };\n  _proto.toInstant = function toInstant() {\n    return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n  };\n  _proto.toEpochSecond = function toEpochSecond() {\n    var epochDay = this.toLocalDate().toEpochDay();\n    var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n    secs -= this.offset().totalSeconds();\n    return secs;\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n    if (cmp === 0) {\n      cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n      if (cmp === 0) {\n        cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n        if (cmp === 0) {\n          cmp = strcmp(this.zone().id(), other.zone().id());\n        }\n      }\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    requireNonNull(other, 'other');\n    var thisEpochSec = this.toEpochSecond();\n    var otherEpochSec = other.toEpochSecond();\n    return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n  };\n  _proto.isBefore = function isBefore(other) {\n    requireNonNull(other, 'other');\n    var thisEpochSec = this.toEpochSecond();\n    var otherEpochSec = other.toEpochSecond();\n    return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n  };\n  _proto.isEqual = function isEqual(other) {\n    requireNonNull(other, 'other');\n    return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof ChronoZonedDateTime) {\n      return this.compareTo(other) === 0;\n    }\n    return false;\n  };\n  return ChronoZonedDateTime;\n}(Temporal);\nfunction strcmp(a, b) {\n  if (a < b) {\n    return -1;\n  }\n  if (a > b) {\n    return 1;\n  }\n  return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n  _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n  ZonedDateTime.now = function now(clockOrZone) {\n    var clock;\n    if (clockOrZone instanceof ZoneId) {\n      clock = Clock.system(clockOrZone);\n    } else {\n      clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n    }\n    return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n  };\n  ZonedDateTime.of = function of() {\n    if (arguments.length <= 2) {\n      return ZonedDateTime.of2.apply(this, arguments);\n    } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n      return ZonedDateTime.of3.apply(this, arguments);\n    } else {\n      return ZonedDateTime.of8.apply(this, arguments);\n    }\n  };\n  ZonedDateTime.of3 = function of3(date, time, zone) {\n    return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n  };\n  ZonedDateTime.of2 = function of2(localDateTime, zone) {\n    return ZonedDateTime.ofLocal(localDateTime, zone, null);\n  };\n  ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n    var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n    return ZonedDateTime.ofLocal(dt, zone, null);\n  };\n  ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n    requireNonNull(localDateTime, 'localDateTime');\n    requireNonNull(zone, 'zone');\n    if (zone instanceof ZoneOffset) {\n      return new ZonedDateTime(localDateTime, zone, zone);\n    }\n    var offset = null;\n    var rules = zone.rules();\n    var validOffsets = rules.validOffsets(localDateTime);\n    if (validOffsets.length === 1) {\n      offset = validOffsets[0];\n    } else if (validOffsets.length === 0) {\n      var trans = rules.transition(localDateTime);\n      localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n      offset = trans.offsetAfter();\n    } else {\n      if (preferredOffset != null && validOffsets.some(function (validOffset) {\n        return validOffset.equals(preferredOffset);\n      })) {\n        offset = preferredOffset;\n      } else {\n        offset = requireNonNull(validOffsets[0], 'offset');\n      }\n    }\n    return new ZonedDateTime(localDateTime, offset, zone);\n  };\n  ZonedDateTime.ofInstant = function ofInstant() {\n    if (arguments.length === 2) {\n      return ZonedDateTime.ofInstant2.apply(this, arguments);\n    } else {\n      return ZonedDateTime.ofInstant3.apply(this, arguments);\n    }\n  };\n  ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n    requireNonNull(instant, 'instant');\n    requireNonNull(zone, 'zone');\n    return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n  };\n  ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n    requireNonNull(localDateTime, 'localDateTime');\n    requireNonNull(offset, 'offset');\n    requireNonNull(zone, 'zone');\n    return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n  };\n  ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n    var rules = zone.rules();\n    var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n    var offset = rules.offset(instant);\n    var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n    return new ZonedDateTime(ldt, offset, zone);\n  };\n  ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n    requireNonNull(localDateTime, 'localDateTime');\n    requireNonNull(offset, 'offset');\n    requireNonNull(zone, 'zone');\n    var rules = zone.rules();\n    if (rules.isValidOffset(localDateTime, offset) === false) {\n      var trans = rules.transition(localDateTime);\n      if (trans != null && trans.isGap()) {\n        throw new DateTimeException(\"LocalDateTime \" + localDateTime + \" does not exist in zone \" + zone + \" due to a gap in the local time-line, typically caused by daylight savings\");\n      }\n      throw new DateTimeException(\"ZoneOffset \\\"\" + offset + \"\\\" is not valid for LocalDateTime \\\"\" + localDateTime + \"\\\" in zone \\\"\" + zone + \"\\\"\");\n    }\n    return new ZonedDateTime(localDateTime, offset, zone);\n  };\n  ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n    requireNonNull(localDateTime, 'localDateTime');\n    requireNonNull(offset, 'offset');\n    requireNonNull(zone, 'zone');\n    if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n      throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n    }\n    return new ZonedDateTime(localDateTime, offset, zone);\n  };\n  ZonedDateTime.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (temporal instanceof ZonedDateTime) {\n      return temporal;\n    }\n    var zone = ZoneId.from(temporal);\n    if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n      var zdt = ZonedDateTime._from(temporal, zone);\n      if (zdt != null) return zdt;\n    }\n    var ldt = LocalDateTime.from(temporal);\n    return ZonedDateTime.of2(ldt, zone);\n  };\n  ZonedDateTime._from = function _from(temporal, zone) {\n    try {\n      return ZonedDateTime.__from(temporal, zone);\n    } catch (ex) {\n      if (!(ex instanceof DateTimeException)) throw ex;\n    }\n  };\n  ZonedDateTime.__from = function __from(temporal, zone) {\n    var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n    var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n    return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n  };\n  ZonedDateTime.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n    }\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, ZonedDateTime.FROM);\n  };\n  function ZonedDateTime(dateTime, offset, zone) {\n    var _this;\n    requireNonNull(dateTime, 'dateTime');\n    requireNonNull(offset, 'offset');\n    requireNonNull(zone, 'zone');\n    _this = _ChronoZonedDateTime.call(this) || this;\n    _this._dateTime = dateTime;\n    _this._offset = offset;\n    _this._zone = zone;\n    return _this;\n  }\n  var _proto = ZonedDateTime.prototype;\n  _proto._resolveLocal = function _resolveLocal(newDateTime) {\n    requireNonNull(newDateTime, 'newDateTime');\n    return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n  };\n  _proto._resolveInstant = function _resolveInstant(newDateTime) {\n    return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n  };\n  _proto._resolveOffset = function _resolveOffset(offset) {\n    if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n      return new ZonedDateTime(this._dateTime, offset, this._zone);\n    }\n    return this;\n  };\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return true;\n    } else if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n        return field.range();\n      }\n      return this._dateTime.range(field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.get = function get(field) {\n    return this.getLong(field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.INSTANT_SECONDS:\n          return this.toEpochSecond();\n        case ChronoField.OFFSET_SECONDS:\n          return this._offset.totalSeconds();\n      }\n      return this._dateTime.getLong(field);\n    }\n    requireNonNull(field, 'field');\n    return field.getFrom(this);\n  };\n  _proto.offset = function offset() {\n    return this._offset;\n  };\n  _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n    var trans = this._zone.rules().transition(this._dateTime);\n    if (trans != null && trans.isOverlap()) {\n      var earlierOffset = trans.offsetBefore();\n      if (earlierOffset.equals(this._offset) === false) {\n        return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n      }\n    }\n    return this;\n  };\n  _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n    var trans = this._zone.rules().transition(this.toLocalDateTime());\n    if (trans != null) {\n      var laterOffset = trans.offsetAfter();\n      if (laterOffset.equals(this._offset) === false) {\n        return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n      }\n    }\n    return this;\n  };\n  _proto.zone = function zone() {\n    return this._zone;\n  };\n  _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n    requireNonNull(zone, 'zone');\n    return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n  };\n  _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n    requireNonNull(zone, 'zone');\n    return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n  };\n  _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n    return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n  };\n  _proto.year = function year() {\n    return this._dateTime.year();\n  };\n  _proto.monthValue = function monthValue() {\n    return this._dateTime.monthValue();\n  };\n  _proto.month = function month() {\n    return this._dateTime.month();\n  };\n  _proto.dayOfMonth = function dayOfMonth() {\n    return this._dateTime.dayOfMonth();\n  };\n  _proto.dayOfYear = function dayOfYear() {\n    return this._dateTime.dayOfYear();\n  };\n  _proto.dayOfWeek = function dayOfWeek() {\n    return this._dateTime.dayOfWeek();\n  };\n  _proto.hour = function hour() {\n    return this._dateTime.hour();\n  };\n  _proto.minute = function minute() {\n    return this._dateTime.minute();\n  };\n  _proto.second = function second() {\n    return this._dateTime.second();\n  };\n  _proto.nano = function nano() {\n    return this._dateTime.nano();\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    if (adjuster instanceof LocalDate) {\n      return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n    } else if (adjuster instanceof LocalTime) {\n      return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n    } else if (adjuster instanceof LocalDateTime) {\n      return this._resolveLocal(adjuster);\n    } else if (adjuster instanceof Instant) {\n      var instant = adjuster;\n      return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n    } else if (adjuster instanceof ZoneOffset) {\n      return this._resolveOffset(adjuster);\n    }\n    return _ChronoZonedDateTime.prototype._withAdjuster.call(this, adjuster);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.INSTANT_SECONDS:\n          return ZonedDateTime._create(newValue, this.nano(), this._zone);\n        case ChronoField.OFFSET_SECONDS:\n          {\n            var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n            return this._resolveOffset(offset);\n          }\n      }\n      return this._resolveLocal(this._dateTime.with(field, newValue));\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.withYear = function withYear(year) {\n    return this._resolveLocal(this._dateTime.withYear(year));\n  };\n  _proto.withMonth = function withMonth(month) {\n    return this._resolveLocal(this._dateTime.withMonth(month));\n  };\n  _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n    return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n  };\n  _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n    return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n  };\n  _proto.withHour = function withHour(hour) {\n    return this._resolveLocal(this._dateTime.withHour(hour));\n  };\n  _proto.withMinute = function withMinute(minute) {\n    return this._resolveLocal(this._dateTime.withMinute(minute));\n  };\n  _proto.withSecond = function withSecond(second) {\n    return this._resolveLocal(this._dateTime.withSecond(second));\n  };\n  _proto.withNano = function withNano(nanoOfSecond) {\n    return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    return this._resolveLocal(this._dateTime.truncatedTo(unit));\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    if (unit instanceof ChronoUnit) {\n      if (unit.isDateBased()) {\n        return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n      } else {\n        return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n      }\n    }\n    requireNonNull(unit, 'unit');\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(years) {\n    return this._resolveLocal(this._dateTime.plusYears(years));\n  };\n  _proto.plusMonths = function plusMonths(months) {\n    return this._resolveLocal(this._dateTime.plusMonths(months));\n  };\n  _proto.plusWeeks = function plusWeeks(weeks) {\n    return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n  };\n  _proto.plusDays = function plusDays(days) {\n    return this._resolveLocal(this._dateTime.plusDays(days));\n  };\n  _proto.plusHours = function plusHours(hours) {\n    return this._resolveInstant(this._dateTime.plusHours(hours));\n  };\n  _proto.plusMinutes = function plusMinutes(minutes) {\n    return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n  };\n  _proto.plusSeconds = function plusSeconds(seconds) {\n    return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n  };\n  _proto.plusNanos = function plusNanos(nanos) {\n    return this._resolveInstant(this._dateTime.plusNanos(nanos));\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    return this._plusUnit(-1 * amountToSubtract, unit);\n  };\n  _proto.minusYears = function minusYears(years) {\n    return this.plusYears(-1 * years);\n  };\n  _proto.minusMonths = function minusMonths(months) {\n    return this.plusMonths(-1 * months);\n  };\n  _proto.minusWeeks = function minusWeeks(weeks) {\n    return this.plusWeeks(-1 * weeks);\n  };\n  _proto.minusDays = function minusDays(days) {\n    return this.plusDays(-1 * days);\n  };\n  _proto.minusHours = function minusHours(hours) {\n    return this.plusHours(-1 * hours);\n  };\n  _proto.minusMinutes = function minusMinutes(minutes) {\n    return this.plusMinutes(-1 * minutes);\n  };\n  _proto.minusSeconds = function minusSeconds(seconds) {\n    return this.plusSeconds(-1 * seconds);\n  };\n  _proto.minusNanos = function minusNanos(nanos) {\n    return this.plusNanos(-1 * nanos);\n  };\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.localDate()) {\n      return this.toLocalDate();\n    }\n    requireNonNull(_query, 'query');\n    return _ChronoZonedDateTime.prototype.query.call(this, _query);\n  };\n  _proto.until = function until(endExclusive, unit) {\n    var end = ZonedDateTime.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      end = end.withZoneSameInstant(this._zone);\n      if (unit.isDateBased()) {\n        return this._dateTime.until(end._dateTime, unit);\n      } else {\n        var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n        var adjustedEnd = end._dateTime.plusSeconds(difference);\n        return this._dateTime.until(adjustedEnd, unit);\n      }\n    }\n    return unit.between(this, end);\n  };\n  _proto.toLocalDateTime = function toLocalDateTime() {\n    return this._dateTime;\n  };\n  _proto.toLocalDate = function toLocalDate() {\n    return this._dateTime.toLocalDate();\n  };\n  _proto.toLocalTime = function toLocalTime() {\n    return this._dateTime.toLocalTime();\n  };\n  _proto.toOffsetDateTime = function toOffsetDateTime() {\n    return OffsetDateTime.of(this._dateTime, this._offset);\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof ZonedDateTime) {\n      return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n  };\n  _proto.toString = function toString() {\n    var str = this._dateTime.toString() + this._offset.toString();\n    if (this._offset !== this._zone) {\n      str += \"[\" + this._zone.toString() + \"]\";\n    }\n    return str;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n  };\n  return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$7() {\n  ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n    return ZonedDateTime.from(temporal);\n  });\n}\n\nvar OffsetDateTime = function (_Temporal) {\n  _inheritsLoose(OffsetDateTime, _Temporal);\n  OffsetDateTime.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (temporal instanceof OffsetDateTime) {\n      return temporal;\n    }\n    try {\n      var offset = ZoneOffset.from(temporal);\n      try {\n        var ldt = LocalDateTime.from(temporal);\n        return OffsetDateTime.of(ldt, offset);\n      } catch (_) {\n        var instant = Instant.from(temporal);\n        return OffsetDateTime.ofInstant(instant, offset);\n      }\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  OffsetDateTime.now = function now(clockOrZone) {\n    if (arguments.length === 0) {\n      return OffsetDateTime.now(Clock.systemDefaultZone());\n    } else {\n      requireNonNull(clockOrZone, 'clockOrZone');\n      if (clockOrZone instanceof ZoneId) {\n        return OffsetDateTime.now(Clock.system(clockOrZone));\n      } else if (clockOrZone instanceof Clock) {\n        var now = clockOrZone.instant();\n        return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n      } else {\n        throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n      }\n    }\n  };\n  OffsetDateTime.of = function of() {\n    if (arguments.length <= 2) {\n      return OffsetDateTime.ofDateTime.apply(this, arguments);\n    } else if (arguments.length === 3) {\n      return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n    } else {\n      return OffsetDateTime.ofNumbers.apply(this, arguments);\n    }\n  };\n  OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n    return new OffsetDateTime(dateTime, offset);\n  };\n  OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n    var dt = LocalDateTime.of(date, time);\n    return new OffsetDateTime(dt, offset);\n  };\n  OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n    if (hour === void 0) {\n      hour = 0;\n    }\n    if (minute === void 0) {\n      minute = 0;\n    }\n    if (second === void 0) {\n      second = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n    return new OffsetDateTime(dt, offset);\n  };\n  OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n    requireNonNull(instant, 'instant');\n    requireNonNull(zone, 'zone');\n    var rules = zone.rules();\n    var offset = rules.offset(instant);\n    var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n    return new OffsetDateTime(ldt, offset);\n  };\n  OffsetDateTime.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n    }\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, OffsetDateTime.FROM);\n  };\n  function OffsetDateTime(dateTime, offset) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    requireNonNull(dateTime, 'dateTime');\n    requireInstance(dateTime, LocalDateTime, 'dateTime');\n    requireNonNull(offset, 'offset');\n    requireInstance(offset, ZoneOffset, 'offset');\n    _this._dateTime = dateTime;\n    _this._offset = offset;\n    return _this;\n  }\n  var _proto = OffsetDateTime.prototype;\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n  };\n  _proto.until = function until(endExclusive, unit) {\n    var end = OffsetDateTime.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      end = end.withOffsetSameInstant(this._offset);\n      return this._dateTime.until(end._dateTime, unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n    return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n  };\n  _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n    return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.chronology()) {\n      return IsoChronology.INSTANCE;\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n      return this.offset();\n    } else if (_query === TemporalQueries.localDate()) {\n      return this.toLocalDate();\n    } else if (_query === TemporalQueries.localTime()) {\n      return this.toLocalTime();\n    } else if (_query === TemporalQueries.zoneId()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.get = function get(field) {\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.INSTANT_SECONDS:\n          throw new DateTimeException(\"Field too large for an int: \" + field);\n        case ChronoField.OFFSET_SECONDS:\n          return this.offset().totalSeconds();\n      }\n      return this._dateTime.get(field);\n    }\n    return _Temporal.prototype.get.call(this, field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.INSTANT_SECONDS:\n          return this.toEpochSecond();\n        case ChronoField.OFFSET_SECONDS:\n          return this.offset().totalSeconds();\n      }\n      return this._dateTime.getLong(field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.offset = function offset() {\n    return this._offset;\n  };\n  _proto.year = function year() {\n    return this._dateTime.year();\n  };\n  _proto.monthValue = function monthValue() {\n    return this._dateTime.monthValue();\n  };\n  _proto.month = function month() {\n    return this._dateTime.month();\n  };\n  _proto.dayOfMonth = function dayOfMonth() {\n    return this._dateTime.dayOfMonth();\n  };\n  _proto.dayOfYear = function dayOfYear() {\n    return this._dateTime.dayOfYear();\n  };\n  _proto.dayOfWeek = function dayOfWeek() {\n    return this._dateTime.dayOfWeek();\n  };\n  _proto.hour = function hour() {\n    return this._dateTime.hour();\n  };\n  _proto.minute = function minute() {\n    return this._dateTime.minute();\n  };\n  _proto.second = function second() {\n    return this._dateTime.second();\n  };\n  _proto.nano = function nano() {\n    return this._dateTime.nano();\n  };\n  _proto.toLocalDateTime = function toLocalDateTime() {\n    return this._dateTime;\n  };\n  _proto.toLocalDate = function toLocalDate() {\n    return this._dateTime.toLocalDate();\n  };\n  _proto.toLocalTime = function toLocalTime() {\n    return this._dateTime.toLocalTime();\n  };\n  _proto.toOffsetTime = function toOffsetTime() {\n    return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n  };\n  _proto.toZonedDateTime = function toZonedDateTime() {\n    return ZonedDateTime.of(this._dateTime, this._offset);\n  };\n  _proto.toInstant = function toInstant() {\n    return this._dateTime.toInstant(this._offset);\n  };\n  _proto.toEpochSecond = function toEpochSecond() {\n    return this._dateTime.toEpochSecond(this._offset);\n  };\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n    }\n    if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n        return field.range();\n      }\n      return this._dateTime.range(field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster);\n    if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n      return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n    } else if (adjuster instanceof Instant) {\n      return OffsetDateTime.ofInstant(adjuster, this._offset);\n    } else if (adjuster instanceof ZoneOffset) {\n      return this._withDateTimeOffset(this._dateTime, adjuster);\n    } else if (adjuster instanceof OffsetDateTime) {\n      return adjuster;\n    }\n    return adjuster.adjustInto(this);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field);\n    if (field instanceof ChronoField) {\n      var f = field;\n      switch (f) {\n        case ChronoField.INSTANT_SECONDS:\n          return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n        case ChronoField.OFFSET_SECONDS:\n          {\n            return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n          }\n      }\n      return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n    if (this._dateTime === dateTime && this._offset.equals(offset)) {\n      return this;\n    }\n    return new OffsetDateTime(dateTime, offset);\n  };\n  _proto.withYear = function withYear(year) {\n    return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n  };\n  _proto.withMonth = function withMonth(month) {\n    return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n  };\n  _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n    return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n  };\n  _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n    return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n  };\n  _proto.withHour = function withHour(hour) {\n    return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n  };\n  _proto.withMinute = function withMinute(minute) {\n    return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n  };\n  _proto.withSecond = function withSecond(second) {\n    return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n  };\n  _proto.withNano = function withNano(nanoOfSecond) {\n    return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n  };\n  _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n    requireNonNull(offset, 'offset');\n    return this._withDateTimeOffset(this._dateTime, offset);\n  };\n  _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n    requireNonNull(offset, 'offset');\n    if (offset.equals(this._offset)) {\n      return this;\n    }\n    var difference = offset.totalSeconds() - this._offset.totalSeconds();\n    var adjusted = this._dateTime.plusSeconds(difference);\n    return new OffsetDateTime(adjusted, offset);\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n  };\n  _proto._plusAmount = function _plusAmount(amount) {\n    requireNonNull(amount, 'amount');\n    return amount.addTo(this);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    if (unit instanceof ChronoUnit) {\n      return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(years) {\n    return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n  };\n  _proto.plusMonths = function plusMonths(months) {\n    return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n  };\n  _proto.plusWeeks = function plusWeeks(weeks) {\n    return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n  };\n  _proto.plusDays = function plusDays(days) {\n    return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n  };\n  _proto.plusHours = function plusHours(hours) {\n    return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n  };\n  _proto.plusMinutes = function plusMinutes(minutes) {\n    return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n  };\n  _proto.plusSeconds = function plusSeconds(seconds) {\n    return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n  };\n  _proto.plusNanos = function plusNanos(nanos) {\n    return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n  };\n  _proto._minusAmount = function _minusAmount(amount) {\n    requireNonNull(amount);\n    return amount.subtractFrom(this);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    return this.plus(-1 * amountToSubtract, unit);\n  };\n  _proto.minusYears = function minusYears(years) {\n    return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n  };\n  _proto.minusMonths = function minusMonths(months) {\n    return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n  };\n  _proto.minusWeeks = function minusWeeks(weeks) {\n    return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n  };\n  _proto.minusDays = function minusDays(days) {\n    return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n  };\n  _proto.minusHours = function minusHours(hours) {\n    return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n  };\n  _proto.minusMinutes = function minusMinutes(minutes) {\n    return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n  };\n  _proto.minusSeconds = function minusSeconds(seconds) {\n    return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n  };\n  _proto.minusNanos = function minusNanos(nanos) {\n    return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, OffsetDateTime, 'other');\n    if (this.offset().equals(other.offset())) {\n      return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n    }\n    var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n    if (cmp === 0) {\n      cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n      if (cmp === 0) {\n        cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n      }\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    requireNonNull(other, 'other');\n    var thisEpochSec = this.toEpochSecond();\n    var otherEpochSec = other.toEpochSecond();\n    return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n  };\n  _proto.isBefore = function isBefore(other) {\n    requireNonNull(other, 'other');\n    var thisEpochSec = this.toEpochSecond();\n    var otherEpochSec = other.toEpochSecond();\n    return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n  };\n  _proto.isEqual = function isEqual(other) {\n    requireNonNull(other, 'other');\n    return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof OffsetDateTime) {\n      return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._dateTime.hashCode() ^ this._offset.hashCode();\n  };\n  _proto.toString = function toString() {\n    return this._dateTime.toString() + this._offset.toString();\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this);\n  };\n  return OffsetDateTime;\n}(Temporal);\nfunction _init$6() {\n  OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n  OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n  OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n    return OffsetDateTime.from(temporal);\n  });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n  _inheritsLoose(LocalDate, _ChronoLocalDate);\n  LocalDate.now = function now(clockOrZone) {\n    var clock;\n    if (clockOrZone == null) {\n      clock = Clock.systemDefaultZone();\n    } else if (clockOrZone instanceof ZoneId) {\n      clock = Clock.system(clockOrZone);\n    } else {\n      clock = clockOrZone;\n    }\n    return LocalDate.ofInstant(clock.instant(), clock.zone());\n  };\n  LocalDate.ofInstant = function ofInstant(instant, zone) {\n    if (zone === void 0) {\n      zone = ZoneId.systemDefault();\n    }\n    requireNonNull(instant, 'instant');\n    var offset = zone.rules().offset(instant);\n    var epochSec = instant.epochSecond() + offset.totalSeconds();\n    var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n    return LocalDate.ofEpochDay(epochDay);\n  };\n  LocalDate.of = function of(year, month, dayOfMonth) {\n    return new LocalDate(year, month, dayOfMonth);\n  };\n  LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n    ChronoField.YEAR.checkValidValue(year);\n    var leap = IsoChronology.isLeapYear(year);\n    if (dayOfYear === 366 && leap === false) {\n      assert(false, \"Invalid date 'DayOfYear 366' as '\" + year + \"' is not a leap year\", DateTimeException);\n    }\n    var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n    var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n    if (dayOfYear > monthEnd) {\n      moy = moy.plus(1);\n    }\n    var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n    return new LocalDate(year, moy.value(), dom);\n  };\n  LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n    if (epochDay === void 0) {\n      epochDay = 0;\n    }\n    var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n    zeroDay = epochDay + DAYS_0000_TO_1970;\n    zeroDay -= 60;\n    adjust = 0;\n    if (zeroDay < 0) {\n      adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n      adjust = adjustCycles * 400;\n      zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n    }\n    yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n    doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n    if (doyEst < 0) {\n      yearEst--;\n      doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n    }\n    yearEst += adjust;\n    var marchDoy0 = doyEst;\n    var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n    var month = (marchMonth0 + 2) % 12 + 1;\n    var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n    yearEst += MathUtil.intDiv(marchMonth0, 10);\n    var year = yearEst;\n    return new LocalDate(year, month, dom);\n  };\n  LocalDate.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    var date = temporal.query(TemporalQueries.localDate());\n    if (date == null) {\n      throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n    return date;\n  };\n  LocalDate.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n    }\n    assert(formatter != null, 'formatter', NullPointerException);\n    return formatter.parse(text, LocalDate.FROM);\n  };\n  LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n    switch (month) {\n      case 2:\n        day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n        break;\n      case 4:\n      case 6:\n      case 9:\n      case 11:\n        day = Math.min(day, 30);\n        break;\n    }\n    return LocalDate.of(year, month, day);\n  };\n  function LocalDate(year, month, dayOfMonth) {\n    var _this;\n    _this = _ChronoLocalDate.call(this) || this;\n    requireNonNull(year, 'year');\n    requireNonNull(month, 'month');\n    requireNonNull(dayOfMonth, 'dayOfMonth');\n    if (month instanceof Month) {\n      month = month.value();\n    }\n    _this._year = MathUtil.safeToInt(year);\n    _this._month = MathUtil.safeToInt(month);\n    _this._day = MathUtil.safeToInt(dayOfMonth);\n    LocalDate._validate(_this._year, _this._month, _this._day);\n    return _this;\n  }\n  LocalDate._validate = function _validate(year, month, dayOfMonth) {\n    var dom;\n    ChronoField.YEAR.checkValidValue(year);\n    ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n    ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n    if (dayOfMonth > 28) {\n      dom = 31;\n      switch (month) {\n        case 2:\n          dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n          break;\n        case 4:\n        case 6:\n        case 9:\n        case 11:\n          dom = 30;\n      }\n      if (dayOfMonth > dom) {\n        if (dayOfMonth === 29) {\n          assert(false, \"Invalid date 'February 29' as '\" + year + \"' is not a leap year\", DateTimeException);\n        } else {\n          assert(false, \"Invalid date '\" + year + \"' '\" + month + \"' '\" + dayOfMonth + \"'\", DateTimeException);\n        }\n      }\n    }\n  };\n  var _proto = LocalDate.prototype;\n  _proto.isSupported = function isSupported(field) {\n    return _ChronoLocalDate.prototype.isSupported.call(this, field);\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      if (field.isDateBased()) {\n        switch (field) {\n          case ChronoField.DAY_OF_MONTH:\n            return ValueRange.of(1, this.lengthOfMonth());\n          case ChronoField.DAY_OF_YEAR:\n            return ValueRange.of(1, this.lengthOfYear());\n          case ChronoField.ALIGNED_WEEK_OF_MONTH:\n            return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n          case ChronoField.YEAR_OF_ERA:\n            return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n        }\n        return field.range();\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.get = function get(field) {\n    return this.getLong(field);\n  };\n  _proto.getLong = function getLong(field) {\n    assert(field != null, '', NullPointerException);\n    if (field instanceof ChronoField) {\n      return this._get0(field);\n    }\n    return field.getFrom(this);\n  };\n  _proto._get0 = function _get0(field) {\n    switch (field) {\n      case ChronoField.DAY_OF_WEEK:\n        return this.dayOfWeek().value();\n      case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n        return MathUtil.intMod(this._day - 1, 7) + 1;\n      case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n        return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n      case ChronoField.DAY_OF_MONTH:\n        return this._day;\n      case ChronoField.DAY_OF_YEAR:\n        return this.dayOfYear();\n      case ChronoField.EPOCH_DAY:\n        return this.toEpochDay();\n      case ChronoField.ALIGNED_WEEK_OF_MONTH:\n        return MathUtil.intDiv(this._day - 1, 7) + 1;\n      case ChronoField.ALIGNED_WEEK_OF_YEAR:\n        return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n      case ChronoField.MONTH_OF_YEAR:\n        return this._month;\n      case ChronoField.PROLEPTIC_MONTH:\n        return this._prolepticMonth();\n      case ChronoField.YEAR_OF_ERA:\n        return this._year >= 1 ? this._year : 1 - this._year;\n      case ChronoField.YEAR:\n        return this._year;\n      case ChronoField.ERA:\n        return this._year >= 1 ? 1 : 0;\n    }\n    throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n  };\n  _proto._prolepticMonth = function _prolepticMonth() {\n    return this._year * 12 + (this._month - 1);\n  };\n  _proto.chronology = function chronology() {\n    return IsoChronology.INSTANCE;\n  };\n  _proto.year = function year() {\n    return this._year;\n  };\n  _proto.monthValue = function monthValue() {\n    return this._month;\n  };\n  _proto.month = function month() {\n    return Month.of(this._month);\n  };\n  _proto.dayOfMonth = function dayOfMonth() {\n    return this._day;\n  };\n  _proto.dayOfYear = function dayOfYear() {\n    return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n  };\n  _proto.dayOfWeek = function dayOfWeek() {\n    var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n    return DayOfWeek.of(dow0 + 1);\n  };\n  _proto.isLeapYear = function isLeapYear() {\n    return IsoChronology.isLeapYear(this._year);\n  };\n  _proto.lengthOfMonth = function lengthOfMonth() {\n    switch (this._month) {\n      case 2:\n        return this.isLeapYear() ? 29 : 28;\n      case 4:\n      case 6:\n      case 9:\n      case 11:\n        return 30;\n      default:\n        return 31;\n    }\n  };\n  _proto.lengthOfYear = function lengthOfYear() {\n    return this.isLeapYear() ? 366 : 365;\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster, 'adjuster');\n    if (adjuster instanceof LocalDate) {\n      return adjuster;\n    }\n    return _ChronoLocalDate.prototype._withAdjuster.call(this, adjuster);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    assert(field != null, 'field', NullPointerException);\n    if (field instanceof ChronoField) {\n      var f = field;\n      f.checkValidValue(newValue);\n      switch (f) {\n        case ChronoField.DAY_OF_WEEK:\n          return this.plusDays(newValue - this.dayOfWeek().value());\n        case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n          return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n        case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n          return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n        case ChronoField.DAY_OF_MONTH:\n          return this.withDayOfMonth(newValue);\n        case ChronoField.DAY_OF_YEAR:\n          return this.withDayOfYear(newValue);\n        case ChronoField.EPOCH_DAY:\n          return LocalDate.ofEpochDay(newValue);\n        case ChronoField.ALIGNED_WEEK_OF_MONTH:\n          return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n        case ChronoField.ALIGNED_WEEK_OF_YEAR:\n          return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n        case ChronoField.MONTH_OF_YEAR:\n          return this.withMonth(newValue);\n        case ChronoField.PROLEPTIC_MONTH:\n          return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n        case ChronoField.YEAR_OF_ERA:\n          return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n        case ChronoField.YEAR:\n          return this.withYear(newValue);\n        case ChronoField.ERA:\n          return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.withYear = function withYear(year) {\n    if (this._year === year) {\n      return this;\n    }\n    ChronoField.YEAR.checkValidValue(year);\n    return LocalDate._resolvePreviousValid(year, this._month, this._day);\n  };\n  _proto.withMonth = function withMonth(month) {\n    var m = month instanceof Month ? month.value() : month;\n    if (this._month === m) {\n      return this;\n    }\n    ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n    return LocalDate._resolvePreviousValid(this._year, m, this._day);\n  };\n  _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n    if (this._day === dayOfMonth) {\n      return this;\n    }\n    return LocalDate.of(this._year, this._month, dayOfMonth);\n  };\n  _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n    if (this.dayOfYear() === dayOfYear) {\n      return this;\n    }\n    return LocalDate.ofYearDay(this._year, dayOfYear);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(amountToAdd, 'amountToAdd');\n    requireNonNull(unit, 'unit');\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.DAYS:\n          return this.plusDays(amountToAdd);\n        case ChronoUnit.WEEKS:\n          return this.plusWeeks(amountToAdd);\n        case ChronoUnit.MONTHS:\n          return this.plusMonths(amountToAdd);\n        case ChronoUnit.YEARS:\n          return this.plusYears(amountToAdd);\n        case ChronoUnit.DECADES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n        case ChronoUnit.CENTURIES:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n        case ChronoUnit.MILLENNIA:\n          return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n        case ChronoUnit.ERAS:\n          return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(yearsToAdd) {\n    if (yearsToAdd === 0) {\n      return this;\n    }\n    var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n    return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n  };\n  _proto.plusMonths = function plusMonths(monthsToAdd) {\n    if (monthsToAdd === 0) {\n      return this;\n    }\n    var monthCount = this._year * 12 + (this._month - 1);\n    var calcMonths = monthCount + monthsToAdd;\n    var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n    var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n    return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n  };\n  _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n    return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n  };\n  _proto.plusDays = function plusDays(daysToAdd) {\n    if (daysToAdd === 0) {\n      return this;\n    }\n    var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n    return LocalDate.ofEpochDay(mjDay);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    requireNonNull(amountToSubtract, 'amountToSubtract');\n    requireNonNull(unit, 'unit');\n    return this._plusUnit(-1 * amountToSubtract, unit);\n  };\n  _proto.minusYears = function minusYears(yearsToSubtract) {\n    return this.plusYears(yearsToSubtract * -1);\n  };\n  _proto.minusMonths = function minusMonths(monthsToSubtract) {\n    return this.plusMonths(monthsToSubtract * -1);\n  };\n  _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n    return this.plusWeeks(weeksToSubtract * -1);\n  };\n  _proto.minusDays = function minusDays(daysToSubtract) {\n    return this.plusDays(daysToSubtract * -1);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.localDate()) {\n      return this;\n    }\n    return _ChronoLocalDate.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n  };\n  _proto.until = function until(p1, p2) {\n    if (arguments.length < 2) {\n      return this.until1(p1);\n    } else {\n      return this.until2(p1, p2);\n    }\n  };\n  _proto.until2 = function until2(endExclusive, unit) {\n    var end = LocalDate.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.DAYS:\n          return this.daysUntil(end);\n        case ChronoUnit.WEEKS:\n          return MathUtil.intDiv(this.daysUntil(end), 7);\n        case ChronoUnit.MONTHS:\n          return this._monthsUntil(end);\n        case ChronoUnit.YEARS:\n          return MathUtil.intDiv(this._monthsUntil(end), 12);\n        case ChronoUnit.DECADES:\n          return MathUtil.intDiv(this._monthsUntil(end), 120);\n        case ChronoUnit.CENTURIES:\n          return MathUtil.intDiv(this._monthsUntil(end), 1200);\n        case ChronoUnit.MILLENNIA:\n          return MathUtil.intDiv(this._monthsUntil(end), 12000);\n        case ChronoUnit.ERAS:\n          return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.daysUntil = function daysUntil(end) {\n    return end.toEpochDay() - this.toEpochDay();\n  };\n  _proto._monthsUntil = function _monthsUntil(end) {\n    var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n    var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n    return MathUtil.intDiv(packed2 - packed1, 32);\n  };\n  _proto.until1 = function until1(endDate) {\n    var end = LocalDate.from(endDate);\n    var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n    var days = end._day - this._day;\n    if (totalMonths > 0 && days < 0) {\n      totalMonths--;\n      var calcDate = this.plusMonths(totalMonths);\n      days = end.toEpochDay() - calcDate.toEpochDay();\n    } else if (totalMonths < 0 && days > 0) {\n      totalMonths++;\n      days -= end.lengthOfMonth();\n    }\n    var years = MathUtil.intDiv(totalMonths, 12);\n    var months = MathUtil.intMod(totalMonths, 12);\n    return Period.of(years, months, days);\n  };\n  _proto.atTime = function atTime() {\n    if (arguments.length === 1) {\n      return this.atTime1.apply(this, arguments);\n    } else {\n      return this.atTime4.apply(this, arguments);\n    }\n  };\n  _proto.atTime1 = function atTime1(time) {\n    requireNonNull(time, 'time');\n    if (time instanceof LocalTime) {\n      return LocalDateTime.of(this, time);\n    } else if (time instanceof OffsetTime) {\n      return this._atTimeOffsetTime(time);\n    } else {\n      throw new IllegalArgumentException(\"time must be an instance of LocalTime or OffsetTime\" + (time && time.constructor && time.constructor.name ? \", but is \" + time.constructor.name : ''));\n    }\n  };\n  _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n    if (second === void 0) {\n      second = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n  };\n  _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n    return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n  };\n  _proto.atStartOfDay = function atStartOfDay(zone) {\n    if (zone != null) {\n      return this._atStartOfDayWithZone(zone);\n    } else {\n      return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n    }\n  };\n  _proto._atStartOfDayWithZone = function _atStartOfDayWithZone(zone) {\n    requireNonNull(zone, 'zone');\n    var ldt = this.atTime(LocalTime.MIDNIGHT);\n    if (zone instanceof ZoneOffset === false) {\n      var trans = zone.rules().transition(ldt);\n      if (trans != null && trans.isGap()) {\n        ldt = trans.dateTimeAfter();\n      }\n    }\n    return ZonedDateTime.of(ldt, zone);\n  };\n  _proto.toEpochDay = function toEpochDay() {\n    var y = this._year;\n    var m = this._month;\n    var total = 0;\n    total += 365 * y;\n    if (y >= 0) {\n      total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n    } else {\n      total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n    }\n    total += MathUtil.intDiv(367 * m - 362, 12);\n    total += this.dayOfMonth() - 1;\n    if (m > 2) {\n      total--;\n      if (!IsoChronology.isLeapYear(y)) {\n        total--;\n      }\n    }\n    return total - DAYS_0000_TO_1970;\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, LocalDate, 'other');\n    return this._compareTo0(other);\n  };\n  _proto._compareTo0 = function _compareTo0(otherDate) {\n    var cmp = this._year - otherDate._year;\n    if (cmp === 0) {\n      cmp = this._month - otherDate._month;\n      if (cmp === 0) {\n        cmp = this._day - otherDate._day;\n      }\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    return this.compareTo(other) > 0;\n  };\n  _proto.isBefore = function isBefore(other) {\n    return this.compareTo(other) < 0;\n  };\n  _proto.isEqual = function isEqual(other) {\n    return this.compareTo(other) === 0;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof LocalDate) {\n      return this._compareTo0(other) === 0;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    var yearValue = this._year;\n    var monthValue = this._month;\n    var dayValue = this._day;\n    return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n  };\n  _proto.toString = function toString() {\n    var dayString, monthString, yearString;\n    var yearValue = this._year;\n    var monthValue = this._month;\n    var dayValue = this._day;\n    var absYear = Math.abs(yearValue);\n    if (absYear < 1000) {\n      if (yearValue < 0) {\n        yearString = \"-\" + (\"\" + (yearValue - 10000)).slice(-4);\n      } else {\n        yearString = (\"\" + (yearValue + 10000)).slice(-4);\n      }\n    } else {\n      if (yearValue > 9999) {\n        yearString = \"+\" + yearValue;\n      } else {\n        yearString = \"\" + yearValue;\n      }\n    }\n    if (monthValue < 10) {\n      monthString = \"-0\" + monthValue;\n    } else {\n      monthString = \"-\" + monthValue;\n    }\n    if (dayValue < 10) {\n      dayString = \"-0\" + dayValue;\n    } else {\n      dayString = \"-\" + dayValue;\n    }\n    return yearString + monthString + dayString;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    requireInstance(formatter, DateTimeFormatter, 'formatter');\n    return _ChronoLocalDate.prototype.format.call(this, formatter);\n  };\n  return LocalDate;\n}(ChronoLocalDate);\nfunction _init$5() {\n  LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n  LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n  LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n  LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n    return LocalDate.from(temporal);\n  });\n}\n\nvar ChronoLocalDateTime = function (_Temporal) {\n  _inheritsLoose(ChronoLocalDateTime, _Temporal);\n  function ChronoLocalDateTime() {\n    return _Temporal.apply(this, arguments) || this;\n  }\n  var _proto = ChronoLocalDateTime.prototype;\n  _proto.chronology = function chronology() {\n    return this.toLocalDate().chronology();\n  };\n  _proto.query = function query(_query) {\n    if (_query === TemporalQueries.chronology()) {\n      return this.chronology();\n    } else if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    } else if (_query === TemporalQueries.localDate()) {\n      return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n    } else if (_query === TemporalQueries.localTime()) {\n      return this.toLocalTime();\n    } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    return _Temporal.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n  };\n  _proto.toInstant = function toInstant(offset) {\n    requireInstance(offset, ZoneOffset, 'zoneId');\n    return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n  };\n  _proto.toEpochSecond = function toEpochSecond(offset) {\n    requireNonNull(offset, 'offset');\n    var epochDay = this.toLocalDate().toEpochDay();\n    var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n    secs -= offset.totalSeconds();\n    return MathUtil.safeToInt(secs);\n  };\n  return ChronoLocalDateTime;\n}(Temporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n  _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n  LocalDateTime.now = function now(clockOrZone) {\n    if (clockOrZone == null) {\n      return LocalDateTime._now(Clock.systemDefaultZone());\n    } else if (clockOrZone instanceof Clock) {\n      return LocalDateTime._now(clockOrZone);\n    } else {\n      return LocalDateTime._now(Clock.system(clockOrZone));\n    }\n  };\n  LocalDateTime._now = function _now(clock) {\n    requireNonNull(clock, 'clock');\n    return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n  };\n  LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n    var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n    var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n    var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n    var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n    var date = LocalDate.ofEpochDay(localEpochDay);\n    var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n    return new LocalDateTime(date, time);\n  };\n  LocalDateTime.of = function of() {\n    if (arguments.length <= 2) {\n      return LocalDateTime.ofDateAndTime.apply(this, arguments);\n    } else {\n      return LocalDateTime.ofNumbers.apply(this, arguments);\n    }\n  };\n  LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n    if (hour === void 0) {\n      hour = 0;\n    }\n    if (minute === void 0) {\n      minute = 0;\n    }\n    if (second === void 0) {\n      second = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    var date = LocalDate.of(year, month, dayOfMonth);\n    var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n    return new LocalDateTime(date, time);\n  };\n  LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n    requireNonNull(date, 'date');\n    requireNonNull(time, 'time');\n    return new LocalDateTime(date, time);\n  };\n  LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n    if (zone === void 0) {\n      zone = ZoneId.systemDefault();\n    }\n    requireNonNull(instant, 'instant');\n    requireInstance(instant, Instant, 'instant');\n    requireNonNull(zone, 'zone');\n    var offset = zone.rules().offset(instant);\n    return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n  };\n  LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n    if (epochSecond === void 0) {\n      epochSecond = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n      offset = nanoOfSecond;\n      nanoOfSecond = 0;\n    }\n    requireNonNull(offset, 'offset');\n    var localSecond = epochSecond + offset.totalSeconds();\n    var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n    var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n    var date = LocalDate.ofEpochDay(localEpochDay);\n    var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n    return new LocalDateTime(date, time);\n  };\n  LocalDateTime.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    if (temporal instanceof LocalDateTime) {\n      return temporal;\n    } else if (temporal instanceof ZonedDateTime) {\n      return temporal.toLocalDateTime();\n    }\n    try {\n      var date = LocalDate.from(temporal);\n      var time = LocalTime.from(temporal);\n      return new LocalDateTime(date, time);\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n  };\n  LocalDateTime.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n    }\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, LocalDateTime.FROM);\n  };\n  function LocalDateTime(date, time) {\n    var _this;\n    _this = _ChronoLocalDateTime.call(this) || this;\n    requireInstance(date, LocalDate, 'date');\n    requireInstance(time, LocalTime, 'time');\n    _this._date = date;\n    _this._time = time;\n    return _this;\n  }\n  var _proto = LocalDateTime.prototype;\n  _proto._withDateTime = function _withDateTime(newDate, newTime) {\n    if (this._date.equals(newDate) && this._time.equals(newTime)) {\n      return this;\n    }\n    return new LocalDateTime(newDate, newTime);\n  };\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n    } else if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    if (field instanceof ChronoField) {\n      return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n    }\n    return field.rangeRefinedBy(this);\n  };\n  _proto.get = function get(field) {\n    if (field instanceof ChronoField) {\n      return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n    }\n    return _ChronoLocalDateTime.prototype.get.call(this, field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.year = function year() {\n    return this._date.year();\n  };\n  _proto.monthValue = function monthValue() {\n    return this._date.monthValue();\n  };\n  _proto.month = function month() {\n    return this._date.month();\n  };\n  _proto.dayOfMonth = function dayOfMonth() {\n    return this._date.dayOfMonth();\n  };\n  _proto.dayOfYear = function dayOfYear() {\n    return this._date.dayOfYear();\n  };\n  _proto.dayOfWeek = function dayOfWeek() {\n    return this._date.dayOfWeek();\n  };\n  _proto.hour = function hour() {\n    return this._time.hour();\n  };\n  _proto.minute = function minute() {\n    return this._time.minute();\n  };\n  _proto.second = function second() {\n    return this._time.second();\n  };\n  _proto.nano = function nano() {\n    return this._time.nano();\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster, 'adjuster');\n    if (adjuster instanceof LocalDate) {\n      return this._withDateTime(adjuster, this._time);\n    } else if (adjuster instanceof LocalTime) {\n      return this._withDateTime(this._date, adjuster);\n    } else if (adjuster instanceof LocalDateTime) {\n      return adjuster;\n    }\n    return _ChronoLocalDateTime.prototype._withAdjuster.call(this, adjuster);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      if (field.isTimeBased()) {\n        return this._withDateTime(this._date, this._time.with(field, newValue));\n      } else {\n        return this._withDateTime(this._date.with(field, newValue), this._time);\n      }\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.withYear = function withYear(year) {\n    return this._withDateTime(this._date.withYear(year), this._time);\n  };\n  _proto.withMonth = function withMonth(month) {\n    return this._withDateTime(this._date.withMonth(month), this._time);\n  };\n  _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n    return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n  };\n  _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n    return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n  };\n  _proto.withHour = function withHour(hour) {\n    var newTime = this._time.withHour(hour);\n    return this._withDateTime(this._date, newTime);\n  };\n  _proto.withMinute = function withMinute(minute) {\n    var newTime = this._time.withMinute(minute);\n    return this._withDateTime(this._date, newTime);\n  };\n  _proto.withSecond = function withSecond(second) {\n    var newTime = this._time.withSecond(second);\n    return this._withDateTime(this._date, newTime);\n  };\n  _proto.withNano = function withNano(nanoOfSecond) {\n    var newTime = this._time.withNano(nanoOfSecond);\n    return this._withDateTime(this._date, newTime);\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    return this._withDateTime(this._date, this._time.truncatedTo(unit));\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(unit, 'unit');\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return this.plusNanos(amountToAdd);\n        case ChronoUnit.MICROS:\n          return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n        case ChronoUnit.MILLIS:\n          return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n        case ChronoUnit.SECONDS:\n          return this.plusSeconds(amountToAdd);\n        case ChronoUnit.MINUTES:\n          return this.plusMinutes(amountToAdd);\n        case ChronoUnit.HOURS:\n          return this.plusHours(amountToAdd);\n        case ChronoUnit.HALF_DAYS:\n          return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n      }\n      return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusYears = function plusYears(years) {\n    var newDate = this._date.plusYears(years);\n    return this._withDateTime(newDate, this._time);\n  };\n  _proto.plusMonths = function plusMonths(months) {\n    var newDate = this._date.plusMonths(months);\n    return this._withDateTime(newDate, this._time);\n  };\n  _proto.plusWeeks = function plusWeeks(weeks) {\n    var newDate = this._date.plusWeeks(weeks);\n    return this._withDateTime(newDate, this._time);\n  };\n  _proto.plusDays = function plusDays(days) {\n    var newDate = this._date.plusDays(days);\n    return this._withDateTime(newDate, this._time);\n  };\n  _proto.plusHours = function plusHours(hours) {\n    return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n  };\n  _proto.plusMinutes = function plusMinutes(minutes) {\n    return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n  };\n  _proto.plusSeconds = function plusSeconds(seconds) {\n    return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n  };\n  _proto.plusNanos = function plusNanos(nanos) {\n    return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    requireNonNull(unit, 'unit');\n    return this._plusUnit(-1 * amountToSubtract, unit);\n  };\n  _proto.minusYears = function minusYears(years) {\n    return this.plusYears(-1 * years);\n  };\n  _proto.minusMonths = function minusMonths(months) {\n    return this.plusMonths(-1 * months);\n  };\n  _proto.minusWeeks = function minusWeeks(weeks) {\n    return this.plusWeeks(-1 * weeks);\n  };\n  _proto.minusDays = function minusDays(days) {\n    return this.plusDays(-1 * days);\n  };\n  _proto.minusHours = function minusHours(hours) {\n    return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n  };\n  _proto.minusMinutes = function minusMinutes(minutes) {\n    return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n  };\n  _proto.minusSeconds = function minusSeconds(seconds) {\n    return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n  };\n  _proto.minusNanos = function minusNanos(nanos) {\n    return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n  };\n  _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n    if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n      return this._withDateTime(newDate, this._time);\n    }\n    var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n    totDays *= sign;\n    var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n    var curNoD = this._time.toNanoOfDay();\n    totNanos = totNanos * sign + curNoD;\n    totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n    var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n    var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n    return this._withDateTime(newDate.plusDays(totDays), newTime);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.localDate()) {\n      return this.toLocalDate();\n    }\n    return _ChronoLocalDateTime.prototype.query.call(this, _query);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n  };\n  _proto.until = function until(endExclusive, unit) {\n    requireNonNull(endExclusive, 'endExclusive');\n    requireNonNull(unit, 'unit');\n    var end = LocalDateTime.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      if (unit.isTimeBased()) {\n        var daysUntil = this._date.daysUntil(end._date);\n        var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n        if (daysUntil > 0 && timeUntil < 0) {\n          daysUntil--;\n          timeUntil += LocalTime.NANOS_PER_DAY;\n        } else if (daysUntil < 0 && timeUntil > 0) {\n          daysUntil++;\n          timeUntil -= LocalTime.NANOS_PER_DAY;\n        }\n        var amount = daysUntil;\n        switch (unit) {\n          case ChronoUnit.NANOS:\n            amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n            return MathUtil.safeAdd(amount, timeUntil);\n          case ChronoUnit.MICROS:\n            amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n          case ChronoUnit.MILLIS:\n            amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n          case ChronoUnit.SECONDS:\n            amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n          case ChronoUnit.MINUTES:\n            amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n          case ChronoUnit.HOURS:\n            amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n          case ChronoUnit.HALF_DAYS:\n            amount = MathUtil.safeMultiply(amount, 2);\n            return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n        }\n        throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n      }\n      var endDate = end._date;\n      var endTime = end._time;\n      if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n        endDate = endDate.minusDays(1);\n      } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n        endDate = endDate.plusDays(1);\n      }\n      return this._date.until(endDate, unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.atOffset = function atOffset(offset) {\n    return OffsetDateTime.of(this, offset);\n  };\n  _proto.atZone = function atZone(zone) {\n    return ZonedDateTime.of(this, zone);\n  };\n  _proto.toLocalDate = function toLocalDate() {\n    return this._date;\n  };\n  _proto.toLocalTime = function toLocalTime() {\n    return this._time;\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, LocalDateTime, 'other');\n    return this._compareTo0(other);\n  };\n  _proto._compareTo0 = function _compareTo0(other) {\n    var cmp = this._date.compareTo(other.toLocalDate());\n    if (cmp === 0) {\n      cmp = this._time.compareTo(other.toLocalTime());\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    return this.compareTo(other) > 0;\n  };\n  _proto.isBefore = function isBefore(other) {\n    return this.compareTo(other) < 0;\n  };\n  _proto.isEqual = function isEqual(other) {\n    return this.compareTo(other) === 0;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof LocalDateTime) {\n      return this._date.equals(other._date) && this._time.equals(other._time);\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._date.hashCode() ^ this._time.hashCode();\n  };\n  _proto.toString = function toString() {\n    return this._date.toString() + \"T\" + this._time.toString();\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this);\n  };\n  return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$4() {\n  LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n  LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n  LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n    return LocalDateTime.from(temporal);\n  });\n}\n\nvar LocalTime = function (_Temporal) {\n  _inheritsLoose(LocalTime, _Temporal);\n  LocalTime.now = function now(clockOrZone) {\n    if (clockOrZone == null) {\n      return LocalTime._now(Clock.systemDefaultZone());\n    } else if (clockOrZone instanceof Clock) {\n      return LocalTime._now(clockOrZone);\n    } else {\n      return LocalTime._now(Clock.system(clockOrZone));\n    }\n  };\n  LocalTime._now = function _now(clock) {\n    if (clock === void 0) {\n      clock = Clock.systemDefaultZone();\n    }\n    requireNonNull(clock, 'clock');\n    return LocalTime.ofInstant(clock.instant(), clock.zone());\n  };\n  LocalTime.ofInstant = function ofInstant(instant, zone) {\n    if (zone === void 0) {\n      zone = ZoneId.systemDefault();\n    }\n    var offset = zone.rules().offset(instant);\n    var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n    secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n    if (secsOfDay < 0) {\n      secsOfDay += LocalTime.SECONDS_PER_DAY;\n    }\n    return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n  };\n  LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n    return new LocalTime(hour, minute, second, nanoOfSecond);\n  };\n  LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n    if (secondOfDay === void 0) {\n      secondOfDay = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n    ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n    var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n    secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n    var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n    secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n    return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n  };\n  LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n    if (nanoOfDay === void 0) {\n      nanoOfDay = 0;\n    }\n    ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n    var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n    nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n    var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n    nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n    var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n    nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n    return new LocalTime(hours, minutes, seconds, nanoOfDay);\n  };\n  LocalTime.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    var time = temporal.query(TemporalQueries.localTime());\n    if (time == null) {\n      throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n    return time;\n  };\n  LocalTime.parse = function parse(text, formatter) {\n    if (formatter === void 0) {\n      formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n    }\n    requireNonNull(formatter, 'formatter');\n    return formatter.parse(text, LocalTime.FROM);\n  };\n  function LocalTime(hour, minute, second, nanoOfSecond) {\n    var _this;\n    if (hour === void 0) {\n      hour = 0;\n    }\n    if (minute === void 0) {\n      minute = 0;\n    }\n    if (second === void 0) {\n      second = 0;\n    }\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    _this = _Temporal.call(this) || this;\n    var _hour = MathUtil.safeToInt(hour);\n    var _minute = MathUtil.safeToInt(minute);\n    var _second = MathUtil.safeToInt(second);\n    var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n    LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n    if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n      if (!LocalTime.HOURS[_hour]) {\n        _this._hour = _hour;\n        _this._minute = _minute;\n        _this._second = _second;\n        _this._nano = _nanoOfSecond;\n        LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n      }\n      return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n    }\n    _this._hour = _hour;\n    _this._minute = _minute;\n    _this._second = _second;\n    _this._nano = _nanoOfSecond;\n    return _this;\n  }\n  LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n    ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n    ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n    ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n    ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n  };\n  var _proto = LocalTime.prototype;\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit.isTimeBased();\n    } else if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isTimeBased();\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    requireNonNull(field);\n    return _Temporal.prototype.range.call(this, field);\n  };\n  _proto.get = function get(field) {\n    return this.getLong(field);\n  };\n  _proto.getLong = function getLong(field) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      return this._get0(field);\n    }\n    return field.getFrom(this);\n  };\n  _proto._get0 = function _get0(field) {\n    switch (field) {\n      case ChronoField.NANO_OF_SECOND:\n        return this._nano;\n      case ChronoField.NANO_OF_DAY:\n        return this.toNanoOfDay();\n      case ChronoField.MICRO_OF_SECOND:\n        return MathUtil.intDiv(this._nano, 1000);\n      case ChronoField.MICRO_OF_DAY:\n        return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n      case ChronoField.MILLI_OF_SECOND:\n        return MathUtil.intDiv(this._nano, 1000000);\n      case ChronoField.MILLI_OF_DAY:\n        return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n      case ChronoField.SECOND_OF_MINUTE:\n        return this._second;\n      case ChronoField.SECOND_OF_DAY:\n        return this.toSecondOfDay();\n      case ChronoField.MINUTE_OF_HOUR:\n        return this._minute;\n      case ChronoField.MINUTE_OF_DAY:\n        return this._hour * 60 + this._minute;\n      case ChronoField.HOUR_OF_AMPM:\n        return MathUtil.intMod(this._hour, 12);\n      case ChronoField.CLOCK_HOUR_OF_AMPM:\n        {\n          var ham = MathUtil.intMod(this._hour, 12);\n          return ham % 12 === 0 ? 12 : ham;\n        }\n      case ChronoField.HOUR_OF_DAY:\n        return this._hour;\n      case ChronoField.CLOCK_HOUR_OF_DAY:\n        return this._hour === 0 ? 24 : this._hour;\n      case ChronoField.AMPM_OF_DAY:\n        return MathUtil.intDiv(this._hour, 12);\n    }\n    throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n  };\n  _proto.hour = function hour() {\n    return this._hour;\n  };\n  _proto.minute = function minute() {\n    return this._minute;\n  };\n  _proto.second = function second() {\n    return this._second;\n  };\n  _proto.nano = function nano() {\n    return this._nano;\n  };\n  _proto._withAdjuster = function _withAdjuster(adjuster) {\n    requireNonNull(adjuster, 'adjuster');\n    if (adjuster instanceof LocalTime) {\n      return adjuster;\n    }\n    return _Temporal.prototype._withAdjuster.call(this, adjuster);\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    requireInstance(field, TemporalField, 'field');\n    if (field instanceof ChronoField) {\n      field.checkValidValue(newValue);\n      switch (field) {\n        case ChronoField.NANO_OF_SECOND:\n          return this.withNano(newValue);\n        case ChronoField.NANO_OF_DAY:\n          return LocalTime.ofNanoOfDay(newValue);\n        case ChronoField.MICRO_OF_SECOND:\n          return this.withNano(newValue * 1000);\n        case ChronoField.MICRO_OF_DAY:\n          return LocalTime.ofNanoOfDay(newValue * 1000);\n        case ChronoField.MILLI_OF_SECOND:\n          return this.withNano(newValue * 1000000);\n        case ChronoField.MILLI_OF_DAY:\n          return LocalTime.ofNanoOfDay(newValue * 1000000);\n        case ChronoField.SECOND_OF_MINUTE:\n          return this.withSecond(newValue);\n        case ChronoField.SECOND_OF_DAY:\n          return this.plusSeconds(newValue - this.toSecondOfDay());\n        case ChronoField.MINUTE_OF_HOUR:\n          return this.withMinute(newValue);\n        case ChronoField.MINUTE_OF_DAY:\n          return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n        case ChronoField.HOUR_OF_AMPM:\n          return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n        case ChronoField.CLOCK_HOUR_OF_AMPM:\n          return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n        case ChronoField.HOUR_OF_DAY:\n          return this.withHour(newValue);\n        case ChronoField.CLOCK_HOUR_OF_DAY:\n          return this.withHour(newValue === 24 ? 0 : newValue);\n        case ChronoField.AMPM_OF_DAY:\n          return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.withHour = function withHour(hour) {\n    if (hour === void 0) {\n      hour = 0;\n    }\n    if (this._hour === hour) {\n      return this;\n    }\n    return new LocalTime(hour, this._minute, this._second, this._nano);\n  };\n  _proto.withMinute = function withMinute(minute) {\n    if (minute === void 0) {\n      minute = 0;\n    }\n    if (this._minute === minute) {\n      return this;\n    }\n    return new LocalTime(this._hour, minute, this._second, this._nano);\n  };\n  _proto.withSecond = function withSecond(second) {\n    if (second === void 0) {\n      second = 0;\n    }\n    if (this._second === second) {\n      return this;\n    }\n    return new LocalTime(this._hour, this._minute, second, this._nano);\n  };\n  _proto.withNano = function withNano(nanoOfSecond) {\n    if (nanoOfSecond === void 0) {\n      nanoOfSecond = 0;\n    }\n    if (this._nano === nanoOfSecond) {\n      return this;\n    }\n    return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    requireNonNull(unit, 'unit');\n    if (unit === ChronoUnit.NANOS) {\n      return this;\n    }\n    var unitDur = unit.duration();\n    if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n      throw new DateTimeException('Unit is too large to be used for truncation');\n    }\n    var dur = unitDur.toNanos();\n    if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n      throw new DateTimeException('Unit must divide into a standard day without remainder');\n    }\n    var nod = this.toNanoOfDay();\n    return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(unit, 'unit');\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return this.plusNanos(amountToAdd);\n        case ChronoUnit.MICROS:\n          return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n        case ChronoUnit.MILLIS:\n          return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n        case ChronoUnit.SECONDS:\n          return this.plusSeconds(amountToAdd);\n        case ChronoUnit.MINUTES:\n          return this.plusMinutes(amountToAdd);\n        case ChronoUnit.HOURS:\n          return this.plusHours(amountToAdd);\n        case ChronoUnit.HALF_DAYS:\n          return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusHours = function plusHours(hoursToAdd) {\n    if (hoursToAdd === 0) {\n      return this;\n    }\n    var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n    return new LocalTime(newHour, this._minute, this._second, this._nano);\n  };\n  _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n    if (minutesToAdd === 0) {\n      return this;\n    }\n    var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n    var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n    if (mofd === newMofd) {\n      return this;\n    }\n    var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n    var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n    return new LocalTime(newHour, newMinute, this._second, this._nano);\n  };\n  _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n    if (secondsToAdd === 0) {\n      return this;\n    }\n    var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n    var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n    if (sofd === newSofd) {\n      return this;\n    }\n    var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n    var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n    var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n    return new LocalTime(newHour, newMinute, newSecond, this._nano);\n  };\n  _proto.plusNanos = function plusNanos(nanosToAdd) {\n    if (nanosToAdd === 0) {\n      return this;\n    }\n    var nofd = this.toNanoOfDay();\n    var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n    if (nofd === newNofd) {\n      return this;\n    }\n    var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n    var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n    var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n    var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n    return new LocalTime(newHour, newMinute, newSecond, newNano);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    requireNonNull(unit, 'unit');\n    return this._plusUnit(-1 * amountToSubtract, unit);\n  };\n  _proto.minusHours = function minusHours(hoursToSubtract) {\n    return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n  };\n  _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n    return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n  };\n  _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n    return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n  };\n  _proto.minusNanos = function minusNanos(nanosToSubtract) {\n    return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    } else if (_query === TemporalQueries.localTime()) {\n      return this;\n    }\n    if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n      return null;\n    }\n    return _query.queryFrom(this);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n  };\n  _proto.until = function until(endExclusive, unit) {\n    requireNonNull(endExclusive, 'endExclusive');\n    requireNonNull(unit, 'unit');\n    var end = LocalTime.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return nanosUntil;\n        case ChronoUnit.MICROS:\n          return MathUtil.intDiv(nanosUntil, 1000);\n        case ChronoUnit.MILLIS:\n          return MathUtil.intDiv(nanosUntil, 1000000);\n        case ChronoUnit.SECONDS:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n        case ChronoUnit.MINUTES:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n        case ChronoUnit.HOURS:\n          return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n        case ChronoUnit.HALF_DAYS:\n          return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto.atDate = function atDate(date) {\n    return LocalDateTime.of(date, this);\n  };\n  _proto.atOffset = function atOffset(offset) {\n    return OffsetTime.of(this, offset);\n  };\n  _proto.toSecondOfDay = function toSecondOfDay() {\n    var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n    total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n    total += this._second;\n    return total;\n  };\n  _proto.toNanoOfDay = function toNanoOfDay() {\n    var total = this._hour * LocalTime.NANOS_PER_HOUR;\n    total += this._minute * LocalTime.NANOS_PER_MINUTE;\n    total += this._second * LocalTime.NANOS_PER_SECOND;\n    total += this._nano;\n    return total;\n  };\n  _proto.compareTo = function compareTo(other) {\n    requireNonNull(other, 'other');\n    requireInstance(other, LocalTime, 'other');\n    var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n    if (cmp === 0) {\n      cmp = MathUtil.compareNumbers(this._minute, other._minute);\n      if (cmp === 0) {\n        cmp = MathUtil.compareNumbers(this._second, other._second);\n        if (cmp === 0) {\n          cmp = MathUtil.compareNumbers(this._nano, other._nano);\n        }\n      }\n    }\n    return cmp;\n  };\n  _proto.isAfter = function isAfter(other) {\n    return this.compareTo(other) > 0;\n  };\n  _proto.isBefore = function isBefore(other) {\n    return this.compareTo(other) < 0;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof LocalTime) {\n      return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    var nod = this.toNanoOfDay();\n    return MathUtil.hash(nod);\n  };\n  _proto.toString = function toString() {\n    var buf = '';\n    var hourValue = this._hour;\n    var minuteValue = this._minute;\n    var secondValue = this._second;\n    var nanoValue = this._nano;\n    buf += hourValue < 10 ? '0' : '';\n    buf += hourValue;\n    buf += minuteValue < 10 ? ':0' : ':';\n    buf += minuteValue;\n    if (secondValue > 0 || nanoValue > 0) {\n      buf += secondValue < 10 ? ':0' : ':';\n      buf += secondValue;\n      if (nanoValue > 0) {\n        buf += '.';\n        if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n          buf += (\"\" + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n        } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n          buf += (\"\" + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n        } else {\n          buf += (\"\" + (nanoValue + 1000000000)).substring(1);\n        }\n      }\n    }\n    return buf;\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  _proto.format = function format(formatter) {\n    requireNonNull(formatter, 'formatter');\n    return formatter.format(this);\n  };\n  return LocalTime;\n}(Temporal);\nfunction _init$3() {\n  LocalTime.HOURS = [];\n  for (var hour = 0; hour < 24; hour++) {\n    LocalTime.of(hour, 0, 0, 0);\n  }\n  LocalTime.MIN = LocalTime.HOURS[0];\n  LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n  LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n  LocalTime.NOON = LocalTime.HOURS[12];\n  LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n    return LocalTime.from(temporal);\n  });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n  _inheritsLoose(Instant, _Temporal);\n  Instant.now = function now(clock) {\n    if (clock === void 0) {\n      clock = Clock.systemUTC();\n    }\n    return clock.instant();\n  };\n  Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n    if (nanoAdjustment === void 0) {\n      nanoAdjustment = 0;\n    }\n    var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n    var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n    return Instant._create(secs, nos);\n  };\n  Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n    var secs = MathUtil.floorDiv(epochMilli, 1000);\n    var mos = MathUtil.floorMod(epochMilli, 1000);\n    return Instant._create(secs, mos * 1000000);\n  };\n  Instant.ofEpochMicro = function ofEpochMicro(epochMicro) {\n    var secs = MathUtil.floorDiv(epochMicro, 1000000);\n    var mos = MathUtil.floorMod(epochMicro, 1000000);\n    return Instant._create(secs, mos * 1000);\n  };\n  Instant.from = function from(temporal) {\n    try {\n      var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n      var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n      return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n    } catch (ex) {\n      throw new DateTimeException(\"Unable to obtain Instant from TemporalAccessor: \" + temporal + \", type \" + typeof temporal, ex);\n    }\n  };\n  Instant.parse = function parse(text) {\n    return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n  };\n  Instant._create = function _create(seconds, nanoOfSecond) {\n    if (seconds === 0 && nanoOfSecond === 0) {\n      return Instant.EPOCH;\n    }\n    return new Instant(seconds, nanoOfSecond);\n  };\n  Instant._validate = function _validate(seconds, nanoOfSecond) {\n    if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n      throw new DateTimeException('Instant exceeds minimum or maximum instant');\n    }\n    if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n      throw new DateTimeException('Instant exceeds minimum or maximum instant');\n    }\n  };\n  function Instant(seconds, nanoOfSecond) {\n    var _this;\n    _this = _Temporal.call(this) || this;\n    Instant._validate(seconds, nanoOfSecond);\n    _this._seconds = MathUtil.safeToInt(seconds);\n    _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n    return _this;\n  }\n  var _proto = Instant.prototype;\n  _proto.isSupported = function isSupported(fieldOrUnit) {\n    if (fieldOrUnit instanceof ChronoField) {\n      return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n    }\n    if (fieldOrUnit instanceof ChronoUnit) {\n      return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n    }\n    return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n  };\n  _proto.range = function range(field) {\n    return _Temporal.prototype.range.call(this, field);\n  };\n  _proto.get = function get(field) {\n    return this.getLong(field);\n  };\n  _proto.getLong = function getLong(field) {\n    if (field instanceof ChronoField) {\n      switch (field) {\n        case ChronoField.NANO_OF_SECOND:\n          return this._nanos;\n        case ChronoField.MICRO_OF_SECOND:\n          return MathUtil.intDiv(this._nanos, 1000);\n        case ChronoField.MILLI_OF_SECOND:\n          return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n        case ChronoField.INSTANT_SECONDS:\n          return this._seconds;\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.getFrom(this);\n  };\n  _proto.epochSecond = function epochSecond() {\n    return this._seconds;\n  };\n  _proto.nano = function nano() {\n    return this._nanos;\n  };\n  _proto._withField = function _withField(field, newValue) {\n    requireNonNull(field, 'field');\n    if (field instanceof ChronoField) {\n      field.checkValidValue(newValue);\n      switch (field) {\n        case ChronoField.MILLI_OF_SECOND:\n          {\n            var nval = newValue * NANOS_PER_MILLI;\n            return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n          }\n        case ChronoField.MICRO_OF_SECOND:\n          {\n            var _nval = newValue * 1000;\n            return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n          }\n        case ChronoField.NANO_OF_SECOND:\n          return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n        case ChronoField.INSTANT_SECONDS:\n          return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported field: \" + field);\n    }\n    return field.adjustInto(this, newValue);\n  };\n  _proto.truncatedTo = function truncatedTo(unit) {\n    requireNonNull(unit, 'unit');\n    if (unit === ChronoUnit.NANOS) {\n      return this;\n    }\n    var unitDur = unit.duration();\n    if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n      throw new DateTimeException('Unit is too large to be used for truncation');\n    }\n    var dur = unitDur.toNanos();\n    if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n      throw new DateTimeException('Unit must divide into a standard day without remainder');\n    }\n    var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n    var result = MathUtil.intDiv(nod, dur) * dur;\n    return this.plusNanos(result - nod);\n  };\n  _proto._plusUnit = function _plusUnit(amountToAdd, unit) {\n    requireNonNull(amountToAdd, 'amountToAdd');\n    requireNonNull(unit, 'unit');\n    requireInstance(unit, TemporalUnit);\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return this.plusNanos(amountToAdd);\n        case ChronoUnit.MICROS:\n          return this.plusMicros(amountToAdd);\n        case ChronoUnit.MILLIS:\n          return this.plusMillis(amountToAdd);\n        case ChronoUnit.SECONDS:\n          return this.plusSeconds(amountToAdd);\n        case ChronoUnit.MINUTES:\n          return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n        case ChronoUnit.HOURS:\n          return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n        case ChronoUnit.HALF_DAYS:\n          return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n        case ChronoUnit.DAYS:\n          return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.addTo(this, amountToAdd);\n  };\n  _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n    return this._plus(secondsToAdd, 0);\n  };\n  _proto.plusMillis = function plusMillis(millisToAdd) {\n    return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n  };\n  _proto.plusNanos = function plusNanos(nanosToAdd) {\n    return this._plus(0, nanosToAdd);\n  };\n  _proto.plusMicros = function plusMicros(microsToAdd) {\n    return this._plus(MathUtil.intDiv(microsToAdd, 1000000), MathUtil.intMod(microsToAdd, 1000000) * 1000);\n  };\n  _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n    if (secondsToAdd === 0 && nanosToAdd === 0) {\n      return this;\n    }\n    var epochSec = this._seconds + secondsToAdd;\n    epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n    var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n    return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n  };\n  _proto._minusUnit = function _minusUnit(amountToSubtract, unit) {\n    return this._plusUnit(-1 * amountToSubtract, unit);\n  };\n  _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n    return this.plusSeconds(secondsToSubtract * -1);\n  };\n  _proto.minusMillis = function minusMillis(millisToSubtract) {\n    return this.plusMillis(-1 * millisToSubtract);\n  };\n  _proto.minusNanos = function minusNanos(nanosToSubtract) {\n    return this.plusNanos(-1 * nanosToSubtract);\n  };\n  _proto.minusMicros = function minusMicros(microsToSubtract) {\n    return this.plusMicros(-1 * microsToSubtract);\n  };\n  _proto.query = function query(_query) {\n    requireNonNull(_query, 'query');\n    if (_query === TemporalQueries.precision()) {\n      return ChronoUnit.NANOS;\n    }\n    if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n      return null;\n    }\n    return _query.queryFrom(this);\n  };\n  _proto.adjustInto = function adjustInto(temporal) {\n    requireNonNull(temporal, 'temporal');\n    return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n  };\n  _proto.until = function until(endExclusive, unit) {\n    requireNonNull(endExclusive, 'endExclusive');\n    requireNonNull(unit, 'unit');\n    var end = Instant.from(endExclusive);\n    if (unit instanceof ChronoUnit) {\n      switch (unit) {\n        case ChronoUnit.NANOS:\n          return this._nanosUntil(end);\n        case ChronoUnit.MICROS:\n          return this._microsUntil(end);\n        case ChronoUnit.MILLIS:\n          return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n        case ChronoUnit.SECONDS:\n          return this._secondsUntil(end);\n        case ChronoUnit.MINUTES:\n          return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n        case ChronoUnit.HOURS:\n          return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n        case ChronoUnit.HALF_DAYS:\n          return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n        case ChronoUnit.DAYS:\n          return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n      }\n      throw new UnsupportedTemporalTypeException(\"Unsupported unit: \" + unit);\n    }\n    return unit.between(this, end);\n  };\n  _proto._microsUntil = function _microsUntil(end) {\n    var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n    var totalMicros = MathUtil.safeMultiply(secsDiff, 1000000);\n    return MathUtil.safeAdd(totalMicros, MathUtil.intDiv(end.nano() - this.nano(), 1000));\n  };\n  _proto._nanosUntil = function _nanosUntil(end) {\n    var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n    var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n    return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n  };\n  _proto._secondsUntil = function _secondsUntil(end) {\n    var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n    var nanosDiff = end.nano() - this.nano();\n    if (secsDiff > 0 && nanosDiff < 0) {\n      secsDiff--;\n    } else if (secsDiff < 0 && nanosDiff > 0) {\n      secsDiff++;\n    }\n    return secsDiff;\n  };\n  _proto.atOffset = function atOffset(offset) {\n    return OffsetDateTime.ofInstant(this, offset);\n  };\n  _proto.atZone = function atZone(zone) {\n    return ZonedDateTime.ofInstant(this, zone);\n  };\n  _proto.toEpochMilli = function toEpochMilli() {\n    var millis = MathUtil.safeMultiply(this._seconds, 1000);\n    return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n  };\n  _proto.compareTo = function compareTo(otherInstant) {\n    requireNonNull(otherInstant, 'otherInstant');\n    requireInstance(otherInstant, Instant, 'otherInstant');\n    var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n    if (cmp !== 0) {\n      return cmp;\n    }\n    return this._nanos - otherInstant._nanos;\n  };\n  _proto.isAfter = function isAfter(otherInstant) {\n    return this.compareTo(otherInstant) > 0;\n  };\n  _proto.isBefore = function isBefore(otherInstant) {\n    return this.compareTo(otherInstant) < 0;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof Instant) {\n      return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return MathUtil.hashCode(this._seconds, this._nanos);\n  };\n  _proto.toString = function toString() {\n    return DateTimeFormatter.ISO_INSTANT.format(this);\n  };\n  _proto.toJSON = function toJSON() {\n    return this.toString();\n  };\n  return Instant;\n}(Temporal);\nfunction _init$2() {\n  Instant.MIN_SECONDS = -31619119219200;\n  Instant.MAX_SECONDS = 31494816403199;\n  Instant.EPOCH = new Instant(0, 0);\n  Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n  Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n  Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n    return Instant.from(temporal);\n  });\n}\n\nvar Clock = function () {\n  function Clock() {}\n  Clock.systemUTC = function systemUTC() {\n    return new SystemClock(ZoneOffset.UTC);\n  };\n  Clock.systemDefaultZone = function systemDefaultZone() {\n    return new SystemClock(ZoneId.systemDefault());\n  };\n  Clock.system = function system(zone) {\n    return new SystemClock(zone);\n  };\n  Clock.fixed = function fixed(fixedInstant, zoneId) {\n    return new FixedClock(fixedInstant, zoneId);\n  };\n  Clock.offset = function offset(baseClock, duration) {\n    return new OffsetClock(baseClock, duration);\n  };\n  var _proto = Clock.prototype;\n  _proto.millis = function millis() {\n    abstractMethodFail('Clock.millis');\n  };\n  _proto.instant = function instant() {\n    abstractMethodFail('Clock.instant');\n  };\n  _proto.zone = function zone() {\n    abstractMethodFail('Clock.zone');\n  };\n  _proto.withZone = function withZone() {\n    abstractMethodFail('Clock.withZone');\n  };\n  return Clock;\n}();\nvar SystemClock = function (_Clock) {\n  _inheritsLoose(SystemClock, _Clock);\n  function SystemClock(zone) {\n    var _this;\n    requireNonNull(zone, 'zone');\n    _this = _Clock.call(this) || this;\n    _this._zone = zone;\n    return _this;\n  }\n  var _proto2 = SystemClock.prototype;\n  _proto2.zone = function zone() {\n    return this._zone;\n  };\n  _proto2.millis = function millis() {\n    return new Date().getTime();\n  };\n  _proto2.instant = function instant() {\n    return Instant.ofEpochMilli(this.millis());\n  };\n  _proto2.equals = function equals(obj) {\n    if (obj instanceof SystemClock) {\n      return this._zone.equals(obj._zone);\n    }\n    return false;\n  };\n  _proto2.withZone = function withZone(zone) {\n    if (zone.equals(this._zone)) {\n      return this;\n    }\n    return new SystemClock(zone);\n  };\n  _proto2.toString = function toString() {\n    return \"SystemClock[\" + this._zone.toString() + \"]\";\n  };\n  return SystemClock;\n}(Clock);\nvar FixedClock = function (_Clock2) {\n  _inheritsLoose(FixedClock, _Clock2);\n  function FixedClock(fixedInstant, zoneId) {\n    var _this2;\n    _this2 = _Clock2.call(this) || this;\n    _this2._instant = fixedInstant;\n    _this2._zoneId = zoneId;\n    return _this2;\n  }\n  var _proto3 = FixedClock.prototype;\n  _proto3.instant = function instant() {\n    return this._instant;\n  };\n  _proto3.millis = function millis() {\n    return this._instant.toEpochMilli();\n  };\n  _proto3.zone = function zone() {\n    return this._zoneId;\n  };\n  _proto3.toString = function toString() {\n    return 'FixedClock[]';\n  };\n  _proto3.equals = function equals(obj) {\n    if (obj instanceof FixedClock) {\n      return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n    }\n    return false;\n  };\n  _proto3.withZone = function withZone(zone) {\n    if (zone.equals(this._zoneId)) {\n      return this;\n    }\n    return new FixedClock(this._instant, zone);\n  };\n  return FixedClock;\n}(Clock);\nvar OffsetClock = function (_Clock3) {\n  _inheritsLoose(OffsetClock, _Clock3);\n  function OffsetClock(baseClock, offset) {\n    var _this3;\n    _this3 = _Clock3.call(this) || this;\n    _this3._baseClock = baseClock;\n    _this3._offset = offset;\n    return _this3;\n  }\n  var _proto4 = OffsetClock.prototype;\n  _proto4.zone = function zone() {\n    return this._baseClock.zone();\n  };\n  _proto4.withZone = function withZone(zone) {\n    if (zone.equals(this._baseClock.zone())) {\n      return this;\n    }\n    return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n  };\n  _proto4.millis = function millis() {\n    return this._baseClock.millis() + this._offset.toMillis();\n  };\n  _proto4.instant = function instant() {\n    return this._baseClock.instant().plus(this._offset);\n  };\n  _proto4.equals = function equals(obj) {\n    if (obj instanceof OffsetClock) {\n      return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n    }\n    return false;\n  };\n  _proto4.toString = function toString() {\n    return \"OffsetClock[\" + this._baseClock + \",\" + this._offset + \"]\";\n  };\n  return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n  ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n    return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n  };\n  function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n    requireNonNull(transition, 'transition');\n    requireNonNull(offsetBefore, 'offsetBefore');\n    requireNonNull(offsetAfter, 'offsetAfter');\n    if (offsetBefore.equals(offsetAfter)) {\n      throw new IllegalArgumentException('Offsets must not be equal');\n    }\n    if (transition.nano() !== 0) {\n      throw new IllegalArgumentException('Nano-of-second must be zero');\n    }\n    if (transition instanceof LocalDateTime) {\n      this._transition = transition;\n    } else {\n      this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n    }\n    this._offsetBefore = offsetBefore;\n    this._offsetAfter = offsetAfter;\n  }\n  var _proto = ZoneOffsetTransition.prototype;\n  _proto.instant = function instant() {\n    return this._transition.toInstant(this._offsetBefore);\n  };\n  _proto.toEpochSecond = function toEpochSecond() {\n    return this._transition.toEpochSecond(this._offsetBefore);\n  };\n  _proto.dateTimeBefore = function dateTimeBefore() {\n    return this._transition;\n  };\n  _proto.dateTimeAfter = function dateTimeAfter() {\n    return this._transition.plusSeconds(this.durationSeconds());\n  };\n  _proto.offsetBefore = function offsetBefore() {\n    return this._offsetBefore;\n  };\n  _proto.offsetAfter = function offsetAfter() {\n    return this._offsetAfter;\n  };\n  _proto.duration = function duration() {\n    return Duration.ofSeconds(this.durationSeconds());\n  };\n  _proto.durationSeconds = function durationSeconds() {\n    return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n  };\n  _proto.isGap = function isGap() {\n    return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n  };\n  _proto.isOverlap = function isOverlap() {\n    return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n  };\n  _proto.isValidOffset = function isValidOffset(offset) {\n    return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n  };\n  _proto.validOffsets = function validOffsets() {\n    if (this.isGap()) {\n      return [];\n    } else {\n      return [this._offsetBefore, this._offsetAfter];\n    }\n  };\n  _proto.compareTo = function compareTo(transition) {\n    return this.instant().compareTo(transition.instant());\n  };\n  _proto.equals = function equals(other) {\n    if (other === this) {\n      return true;\n    }\n    if (other instanceof ZoneOffsetTransition) {\n      var d = other;\n      return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n    }\n    return false;\n  };\n  _proto.hashCode = function hashCode() {\n    return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n  };\n  _proto.toString = function toString() {\n    return \"Transition[\" + (this.isGap() ? 'Gap' : 'Overlap') + \" at \" + this._transition.toString() + this._offsetBefore.toString() + \" to \" + this._offsetAfter + \"]\";\n  };\n  return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$1() {\n  TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n    return temporal.query(TemporalQueries.ZONE_ID);\n  });\n  TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n    return temporal.query(TemporalQueries.CHRONO);\n  });\n  TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n    return temporal.query(TemporalQueries.PRECISION);\n  });\n  TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n    if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n      return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n    }\n    return null;\n  });\n  TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n    var zone = temporal.query(TemporalQueries.ZONE_ID);\n    return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n  });\n  TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n    if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n      return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n    }\n    return null;\n  });\n  TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n    if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n      return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n    }\n    return null;\n  });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n  _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n  function SystemDefaultZoneRules() {\n    return _ZoneRules.apply(this, arguments) || this;\n  }\n  var _proto = SystemDefaultZoneRules.prototype;\n  _proto.isFixedOffset = function isFixedOffset() {\n    return false;\n  };\n  _proto.offsetOfInstant = function offsetOfInstant(instant) {\n    var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n    return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n  };\n  _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n    var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n    return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n  };\n  _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n    var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n    var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n    var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n    var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n    return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n  };\n  _proto.validOffsets = function validOffsets(localDateTime) {\n    return [this.offsetOfLocalDateTime(localDateTime)];\n  };\n  _proto.transition = function transition() {\n    return null;\n  };\n  _proto.standardOffset = function standardOffset(instant) {\n    return this.offsetOfInstant(instant);\n  };\n  _proto.daylightSavings = function daylightSavings() {\n    this._throwNotSupported();\n  };\n  _proto.isDaylightSavings = function isDaylightSavings() {\n    this._throwNotSupported();\n  };\n  _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n    return this.offsetOfLocalDateTime(dateTime).equals(offset);\n  };\n  _proto.nextTransition = function nextTransition() {\n    this._throwNotSupported();\n  };\n  _proto.previousTransition = function previousTransition() {\n    this._throwNotSupported();\n  };\n  _proto.transitions = function transitions() {\n    this._throwNotSupported();\n  };\n  _proto.transitionRules = function transitionRules() {\n    this._throwNotSupported();\n  };\n  _proto._throwNotSupported = function _throwNotSupported() {\n    throw new DateTimeException('not supported operation');\n  };\n  _proto.equals = function equals(other) {\n    if (this === other || other instanceof SystemDefaultZoneRules) {\n      return true;\n    } else {\n      return false;\n    }\n  };\n  _proto.toString = function toString() {\n    return 'SYSTEM';\n  };\n  return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n  _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n  function SystemDefaultZoneId() {\n    var _this;\n    _this = _ZoneId.call(this) || this;\n    _this._rules = new SystemDefaultZoneRules();\n    return _this;\n  }\n  var _proto = SystemDefaultZoneId.prototype;\n  _proto.rules = function rules() {\n    return this._rules;\n  };\n  _proto.equals = function equals(other) {\n    if (this === other) {\n      return true;\n    }\n    return false;\n  };\n  _proto.id = function id() {\n    return 'SYSTEM';\n  };\n  return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n  function ZoneIdFactory() {}\n  ZoneIdFactory.systemDefault = function systemDefault() {\n    return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n  };\n  ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n    return ZoneRulesProvider.getAvailableZoneIds();\n  };\n  ZoneIdFactory.of = function of(zoneId) {\n    requireNonNull(zoneId, 'zoneId');\n    if (zoneId === 'Z') {\n      return ZoneOffset.UTC;\n    }\n    if (zoneId.length === 1) {\n      throw new DateTimeException(\"Invalid zone: \" + zoneId);\n    }\n    if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n      return ZoneOffset.of(zoneId);\n    }\n    if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n      return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n    }\n    if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n      var offset = ZoneOffset.of(zoneId.substring(3));\n      if (offset.totalSeconds() === 0) {\n        return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n      }\n      return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n    }\n    if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n      var _offset = ZoneOffset.of(zoneId.substring(2));\n      if (_offset.totalSeconds() === 0) {\n        return new ZoneRegion('UT', _offset.rules());\n      }\n      return new ZoneRegion(\"UT\" + _offset.id(), _offset.rules());\n    }\n    if (zoneId === 'SYSTEM') {\n      return ZoneId.systemDefault();\n    }\n    return ZoneRegion.ofId(zoneId);\n  };\n  ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n    requireNonNull(prefix, 'prefix');\n    requireNonNull(offset, 'offset');\n    if (prefix.length === 0) {\n      return offset;\n    }\n    if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n      if (offset.totalSeconds() === 0) {\n        return new ZoneRegion(prefix, offset.rules());\n      }\n      return new ZoneRegion(prefix + offset.id(), offset.rules());\n    }\n    throw new IllegalArgumentException(\"Invalid prefix, must be GMT, UTC or UT: \" + prefix);\n  };\n  ZoneIdFactory.from = function from(temporal) {\n    requireNonNull(temporal, 'temporal');\n    var obj = temporal.query(TemporalQueries.zone());\n    if (obj == null) {\n      throw new DateTimeException(\"Unable to obtain ZoneId from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n    }\n    return obj;\n  };\n  return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init() {\n  SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n  ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n  ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n  ZoneId.of = ZoneIdFactory.of;\n  ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n  ZoneId.from = ZoneIdFactory.from;\n  ZoneOffset.from = ZoneIdFactory.from;\n  ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n  ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\nfunction init() {\n  if (isInit) {\n    return;\n  }\n  isInit = true;\n  _init$m();\n  _init$n();\n  _init$l();\n  _init$k();\n  _init$3();\n  _init$f();\n  _init$1();\n  _init$j();\n  _init$2();\n  _init$5();\n  _init$4();\n  _init$a();\n  _init$i();\n  _init$b();\n  _init$c();\n  _init$h();\n  _init$g();\n  _init$7();\n  _init();\n  _init$9();\n  _init$d();\n  _init$e();\n  _init$6();\n  _init$8();\n}\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ToNativeJsConverter = function () {\n  function ToNativeJsConverter(temporal, zone) {\n    var zonedDateTime;\n    if (temporal instanceof Instant) {\n      this.instant = temporal;\n      return;\n    } else if (temporal instanceof LocalDate) {\n      zone = zone == null ? ZoneId.systemDefault() : zone;\n      zonedDateTime = temporal.atStartOfDay(zone);\n    } else if (temporal instanceof LocalDateTime) {\n      zone = zone == null ? ZoneId.systemDefault() : zone;\n      zonedDateTime = temporal.atZone(zone);\n    } else if (temporal instanceof ZonedDateTime) {\n      if (zone == null) {\n        zonedDateTime = temporal;\n      } else {\n        zonedDateTime = temporal.withZoneSameInstant(zone);\n      }\n    } else {\n      throw new IllegalArgumentException(\"unsupported instance for convert operation:\" + temporal);\n    }\n    this.instant = zonedDateTime.toInstant();\n  }\n  var _proto = ToNativeJsConverter.prototype;\n  _proto.toDate = function toDate() {\n    return new Date(this.instant.toEpochMilli());\n  };\n  _proto.toEpochMilli = function toEpochMilli() {\n    return this.instant.toEpochMilli();\n  };\n  return ToNativeJsConverter;\n}();\nfunction convert(temporal, zone) {\n  return new ToNativeJsConverter(temporal, zone);\n}\n\n/*\n * @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction nativeJs(date, zone) {\n  if (zone === void 0) {\n    zone = ZoneId.systemDefault();\n  }\n  requireNonNull(date, 'date');\n  requireNonNull(zone, 'zone');\n  if (date instanceof Date) {\n    return Instant.ofEpochMilli(date.getTime()).atZone(zone);\n  } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n    return Instant.ofEpochMilli(date.toDate().getTime()).atZone(zone);\n  }\n  throw new IllegalArgumentException('date must be a javascript Date or a moment instance');\n}\n\nfunction bindUse(jsJoda) {\n  var used = [];\n  return function use(fn) {\n    if (!~used.indexOf(fn)) {\n      fn(jsJoda);\n      used.push(fn);\n    }\n    return jsJoda;\n  };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n  assert: assert$1,\n  DateTimeBuilder: DateTimeBuilder,\n  DateTimeParseContext: DateTimeParseContext,\n  DateTimePrintContext: DateTimePrintContext,\n  MathUtil: MathUtil,\n  StringUtil: StringUtil,\n  StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n  _: _,\n  convert: convert,\n  nativeJs: nativeJs,\n  ArithmeticException: ArithmeticException,\n  DateTimeException: DateTimeException,\n  DateTimeParseException: DateTimeParseException,\n  IllegalArgumentException: IllegalArgumentException,\n  IllegalStateException: IllegalStateException,\n  UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n  NullPointerException: NullPointerException,\n  Clock: Clock,\n  DayOfWeek: DayOfWeek,\n  Duration: Duration,\n  Instant: Instant,\n  LocalDate: LocalDate,\n  LocalTime: LocalTime,\n  LocalDateTime: LocalDateTime,\n  OffsetTime: OffsetTime,\n  OffsetDateTime: OffsetDateTime,\n  Month: Month,\n  MonthDay: MonthDay,\n  ParsePosition: ParsePosition,\n  Period: Period,\n  Year: Year,\n  YearConstants: YearConstants,\n  YearMonth: YearMonth,\n  ZonedDateTime: ZonedDateTime,\n  ZoneOffset: ZoneOffset,\n  ZoneId: ZoneId,\n  ZoneRegion: ZoneRegion,\n  ZoneOffsetTransition: ZoneOffsetTransition,\n  ZoneRules: ZoneRules,\n  ZoneRulesProvider: ZoneRulesProvider,\n  ChronoLocalDate: ChronoLocalDate,\n  ChronoLocalDateTime: ChronoLocalDateTime,\n  ChronoZonedDateTime: ChronoZonedDateTime,\n  IsoChronology: IsoChronology,\n  ChronoField: ChronoField,\n  ChronoUnit: ChronoUnit,\n  IsoFields: IsoFields,\n  Temporal: Temporal,\n  TemporalAccessor: TemporalAccessor,\n  TemporalAdjuster: TemporalAdjuster,\n  TemporalAdjusters: TemporalAdjusters,\n  TemporalAmount: TemporalAmount,\n  TemporalField: TemporalField,\n  TemporalQueries: TemporalQueries,\n  TemporalQuery: TemporalQuery,\n  TemporalUnit: TemporalUnit,\n  ValueRange: ValueRange,\n  DateTimeFormatter: DateTimeFormatter,\n  DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n  DecimalStyle: DecimalStyle,\n  ResolverStyle: ResolverStyle,\n  SignStyle: SignStyle,\n  TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, ParsePosition, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n//# sourceMappingURL=js-joda.esm.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _datetimen = _interopRequireDefault(require(\"./datetimen\"));\nvar _core = require(\"@js-joda/core\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst EPOCH_DATE = _core.LocalDate.ofYearDay(1900, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x08]);\nconst DateTime = {\n  id: 0x3D,\n  type: 'DATETIME',\n  name: 'DateTime',\n  declaration: function () {\n    return 'datetime';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_datetimen.default.id, 0x08]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  generateParameterData: function* (parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    let date;\n    if (options.useUTC) {\n      date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n    } else {\n      date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n    }\n    let days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);\n    let milliseconds, threeHundredthsOfSecond;\n    if (options.useUTC) {\n      let seconds = value.getUTCHours() * 60 * 60;\n      seconds += value.getUTCMinutes() * 60;\n      seconds += value.getUTCSeconds();\n      milliseconds = seconds * 1000 + value.getUTCMilliseconds();\n    } else {\n      let seconds = value.getHours() * 60 * 60;\n      seconds += value.getMinutes() * 60;\n      seconds += value.getSeconds();\n      milliseconds = seconds * 1000 + value.getMilliseconds();\n    }\n    threeHundredthsOfSecond = milliseconds / (3 + 1 / 3);\n    threeHundredthsOfSecond = Math.round(threeHundredthsOfSecond);\n\n    // 25920000 equals one day\n    if (threeHundredthsOfSecond === 25920000) {\n      days += 1;\n      threeHundredthsOfSecond = 0;\n    }\n    const buffer = Buffer.alloc(8);\n    buffer.writeInt32LE(days, 0);\n    buffer.writeUInt32LE(threeHundredthsOfSecond, 4);\n    yield buffer;\n  },\n  // TODO: type 'any' needs to be revisited.\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof Date)) {\n      value = new Date(Date.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid date.');\n    }\n    return value;\n  }\n};\nvar _default = DateTime;\nexports.default = _default;\nmodule.exports = DateTime;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGF0ZXRpbWVuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiRVBPQ0hfREFURSIsIkxvY2FsRGF0ZSIsIm9mWWVhckRheSIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkRBVEFfTEVOR1RIIiwiRGF0ZVRpbWUiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJnZW5lcmF0ZVR5cGVJbmZvIiwiRGF0ZVRpbWVOIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJwYXJhbWV0ZXIiLCJvcHRpb25zIiwidmFsdWUiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJkYXRlIiwidXNlVVRDIiwib2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJtaWxsaXNlY29uZHMiLCJ0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCIsInNlY29uZHMiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsIk1hdGgiLCJyb3VuZCIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQzMkxFIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiRGF0ZSIsInBhcnNlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9kYXRldGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBEYXRlVGltZU4gZnJvbSAnLi9kYXRldGltZW4nO1xuaW1wb3J0IHsgQ2hyb25vVW5pdCwgTG9jYWxEYXRlIH0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5cbmNvbnN0IEVQT0NIX0RBVEUgPSBMb2NhbERhdGUub2ZZZWFyRGF5KDE5MDAsIDEpO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuY29uc3QgREFUQV9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwOF0pO1xuXG5jb25zdCBEYXRlVGltZTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDNELFxuICB0eXBlOiAnREFURVRJTUUnLFxuICBuYW1lOiAnRGF0ZVRpbWUnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ2RhdGV0aW1lJztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbRGF0ZVRpbWVOLmlkLCAweDA4XSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG5cbiAgICBsZXQgZGF0ZTtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlLmdldFVUQ0RhdGUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSArIDEsIHZhbHVlLmdldERhdGUoKSk7XG4gICAgfVxuXG4gICAgbGV0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG5cbiAgICBsZXQgbWlsbGlzZWNvbmRzLCB0aHJlZUh1bmRyZWR0aHNPZlNlY29uZDtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0VVRDSG91cnMoKSAqIDYwICogNjA7XG4gICAgICBzZWNvbmRzICs9IHZhbHVlLmdldFVUQ01pbnV0ZXMoKSAqIDYwO1xuICAgICAgc2Vjb25kcyArPSB2YWx1ZS5nZXRVVENTZWNvbmRzKCk7XG4gICAgICBtaWxsaXNlY29uZHMgPSAoc2Vjb25kcyAqIDEwMDApICsgdmFsdWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzZWNvbmRzID0gdmFsdWUuZ2V0SG91cnMoKSAqIDYwICogNjA7XG4gICAgICBzZWNvbmRzICs9IHZhbHVlLmdldE1pbnV0ZXMoKSAqIDYwO1xuICAgICAgc2Vjb25kcyArPSB2YWx1ZS5nZXRTZWNvbmRzKCk7XG4gICAgICBtaWxsaXNlY29uZHMgPSAoc2Vjb25kcyAqIDEwMDApICsgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuXG4gICAgdGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQgPSBtaWxsaXNlY29uZHMgLyAoMyArICgxIC8gMykpO1xuICAgIHRocmVlSHVuZHJlZHRoc09mU2Vjb25kID0gTWF0aC5yb3VuZCh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCk7XG5cbiAgICAvLyAyNTkyMDAwMCBlcXVhbHMgb25lIGRheVxuICAgIGlmICh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCA9PT0gMjU5MjAwMDApIHtcbiAgICAgIGRheXMgKz0gMTtcbiAgICAgIHRocmVlSHVuZHJlZHRoc09mU2Vjb25kID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShkYXlzLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCwgNCk7XG4gICAgeWllbGQgYnVmZmVyO1xuICB9LFxuXG4gIC8vIFRPRE86IHR5cGUgJ2FueScgbmVlZHMgdG8gYmUgcmV2aXNpdGVkLlxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGVUaW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFdEQsTUFBTUcsVUFBVSxHQUFHQyxlQUFTLENBQUNDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _floatn = _interopRequireDefault(require(\"./floatn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst Float = {\n  id: 0x3E,\n  type: 'FLT8',\n  name: 'Float',\n  declaration: function () {\n    return 'float';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_floatn.default.id, 0x08]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return Buffer.from([0x08]);\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(8);\n    buffer.writeDoubleLE(parseFloat(parameter.value), 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    return value;\n  }\n};\nvar _default = Float;\nexports.default = _default;\nmodule.exports = Float;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmxvYXRuIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkZsb2F0IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkZsb2F0TiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZURvdWJsZUxFIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9mbG9hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBGbG9hdE4gZnJvbSAnLi9mbG9hdG4nO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IEZsb2F0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4M0UsXG4gIHR5cGU6ICdGTFQ4JyxcbiAgbmFtZTogJ0Zsb2F0JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdmbG9hdCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0Zsb2F0Ti5pZCwgMHgwOF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOF0pO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVEb3VibGVMRShwYXJzZUZsb2F0KHBhcmFtZXRlci52YWx1ZSksIDApO1xuICAgIHlpZWxkIGJ1ZmZlcjtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRmxvYXQ7XG5tb2R1bGUuZXhwb3J0cyA9IEZsb2F0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFOUIsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLEtBQWUsR0FBRztFQUN0QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBSSxFQUFFLE9BQU87RUFFYkMsV0FBVyxFQUFFLFNBQUFBLENBQUEsRUFBVztJQUN0QixPQUFPLE9BQU87RUFDaEIsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixPQUFPUCxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDTyxlQUFNLENBQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN2QyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9iLFdBQVc7SUFDcEI7SUFFQSxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVCLENBQUM7RUFFRCxDQUFFWSxxQkFBcUJBLENBQUNILFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQjtJQUNGO0lBRUEsTUFBTUUsTUFBTSxHQUFHZCxNQUFNLENBQUNlLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDQyxVQUFVLENBQUNQLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU1FLE1BQU07RUFDZCxDQUFDO0VBRURJLFFBQVEsRUFBRSxTQUFBQSxDQUFTTixLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQUEsS0FBSyxHQUFHSyxVQUFVLENBQUNMLEtBQUssQ0FBQztJQUN6QixJQUFJTyxLQUFLLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBQ0EsT0FBT1IsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FFYW5CLEtBQUs7QUFBQW9CLE9BQUEsQ0FBQXhCLE9BQUEsR0FBQXVCLFFBQUE7QUFDcEJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsS0FBSyJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst DecimalN = {\n  id: 0x6A,\n  type: 'DECIMALN',\n  name: 'DecimalN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = DecimalN;\nexports.default = _default;\nmodule.exports = DecimalN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWNpbWFsTiIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsIkVycm9yIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGVjaW1hbG4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IERlY2ltYWxOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkEsXG4gIHR5cGU6ICdERUNJTUFMTicsXG4gIG5hbWU6ICdEZWNpbWFsTicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWNpbWFsTjtcbm1vZHVsZS5leHBvcnRzID0gRGVjaW1hbE47XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFFBQWtCLEdBQUc7RUFDekJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLFFBQVE7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDdkJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxRQUFRIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _decimaln = _interopRequireDefault(require(\"./decimaln\"));\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst Decimal = {\n  id: 0x37,\n  type: 'DECIMAL',\n  name: 'Decimal',\n  declaration: function (parameter) {\n    return 'decimal(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')';\n  },\n  resolvePrecision: function (parameter) {\n    if (parameter.precision != null) {\n      return parameter.precision;\n    } else if (parameter.value === null) {\n      return 1;\n    } else {\n      return 18;\n    }\n  },\n  resolveScale: function (parameter) {\n    if (parameter.scale != null) {\n      return parameter.scale;\n    } else {\n      return 0;\n    }\n  },\n  generateTypeInfo(parameter, _options) {\n    let precision;\n    if (parameter.precision <= 9) {\n      precision = 0x05;\n    } else if (parameter.precision <= 19) {\n      precision = 0x09;\n    } else if (parameter.precision <= 28) {\n      precision = 0x0D;\n    } else {\n      precision = 0x11;\n    }\n    return Buffer.from([_decimaln.default.id, precision, parameter.precision, parameter.scale]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const precision = parameter.precision;\n    if (precision <= 9) {\n      return Buffer.from([0x05]);\n    } else if (precision <= 19) {\n      return Buffer.from([0x09]);\n    } else if (precision <= 28) {\n      return Buffer.from([0x0D]);\n    } else {\n      return Buffer.from([0x11]);\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const sign = parameter.value < 0 ? 0 : 1;\n    const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale)));\n    const precision = parameter.precision;\n    if (precision <= 9) {\n      const buffer = Buffer.alloc(5);\n      buffer.writeUInt8(sign, 0);\n      buffer.writeUInt32LE(value, 1);\n      yield buffer;\n    } else if (precision <= 19) {\n      const buffer = new _writableTrackingBuffer.default(9);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      yield buffer.data;\n    } else if (precision <= 28) {\n      const buffer = new _writableTrackingBuffer.default(13);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      buffer.writeUInt32LE(0x00000000);\n      yield buffer.data;\n    } else {\n      const buffer = new _writableTrackingBuffer.default(17);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      buffer.writeUInt32LE(0x00000000);\n      buffer.writeUInt32LE(0x00000000);\n      yield buffer.data;\n    }\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    return value;\n  }\n};\nvar _default = Decimal;\nexports.default = _default;\nmodule.exports = Decimal;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVjaW1hbG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEZWNpbWFsIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsInByZWNpc2lvbiIsInZhbHVlIiwic2NhbGUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiX29wdGlvbnMiLCJEZWNpbWFsTiIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInNpZ24iLCJNYXRoIiwicm91bmQiLCJhYnMiLCJwb3ciLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQzMkxFIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIndyaXRlVUludDY0TEUiLCJkYXRhIiwidmFsaWRhdGUiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9kZWNpbWFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IERlY2ltYWxOIGZyb20gJy4vZGVjaW1hbG4nO1xuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgRGVjaW1hbDogRGF0YVR5cGUgJiB7IHJlc29sdmVQcmVjaXNpb246IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlUHJlY2lzaW9uJ10+LCByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4gfSA9IHtcbiAgaWQ6IDB4MzcsXG4gIHR5cGU6ICdERUNJTUFMJyxcbiAgbmFtZTogJ0RlY2ltYWwnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICByZXR1cm4gJ2RlY2ltYWwoJyArICh0aGlzLnJlc29sdmVQcmVjaXNpb24ocGFyYW1ldGVyKSkgKyAnLCAnICsgKHRoaXMucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuXG4gIHJlc29sdmVQcmVjaXNpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIucHJlY2lzaW9uO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDE4O1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyLCBfb3B0aW9ucykge1xuICAgIGxldCBwcmVjaXNpb247XG4gICAgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDkpIHtcbiAgICAgIHByZWNpc2lvbiA9IDB4MDU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgcHJlY2lzaW9uID0gMHgwOTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBwcmVjaXNpb24gPSAweDBEO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjaXNpb24gPSAweDExO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbRGVjaW1hbE4uaWQsIHByZWNpc2lvbiwgcGFyYW1ldGVyLnByZWNpc2lvbiEsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNV0pO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDldKTtcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8PSAyOCkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDBEXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgxMV0pO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gcGFyYW1ldGVyLnZhbHVlIDwgMCA/IDAgOiAxO1xuICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChNYXRoLmFicyhwYXJhbWV0ZXIudmFsdWUgKiBNYXRoLnBvdygxMCwgcGFyYW1ldGVyLnNjYWxlISkpKTtcbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg1KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24sIDApO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodmFsdWUsIDEpO1xuICAgICAgeWllbGQgYnVmZmVyO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcig5KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfSBlbHNlIGlmIChwcmVjaXNpb24gPD0gMjgpIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEzKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUoMHgwMDAwMDAwMCk7XG4gICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTcpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbik7XG4gICAgICBidWZmZXIud3JpdGVVSW50NjRMRSh2YWx1ZSk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDB4MDAwMDAwMDApO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfVxuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG51bWJlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWNpbWFsO1xubW9kdWxlLmV4cG9ydHMgPSBEZWNpbWFsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQWlGLFNBQUFELHVCQUFBRyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpGLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNQyxPQUF3SSxHQUFHO0VBQy9JQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUUsU0FBUztFQUVmQyxXQUFXLEVBQUUsU0FBQUEsQ0FBU0MsU0FBUyxFQUFFO0lBQy9CLE9BQU8sVUFBVSxHQUFJLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNELFNBQVMsQ0FBRSxHQUFHLElBQUksR0FBSSxJQUFJLENBQUNFLFlBQVksQ0FBQ0YsU0FBUyxDQUFFLEdBQUcsR0FBRztFQUN0RyxDQUFDO0VBRURDLGdCQUFnQixFQUFFLFNBQUFBLENBQVNELFNBQVMsRUFBRTtJQUNwQyxJQUFJQSxTQUFTLENBQUNHLFNBQVMsSUFBSSxJQUFJLEVBQUU7TUFDL0IsT0FBT0gsU0FBUyxDQUFDRyxTQUFTO0lBQzVCLENBQUMsTUFBTSxJQUFJSCxTQUFTLENBQUNJLEtBQUssS0FBSyxJ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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst NumericN = {\n  id: 0x6C,\n  type: 'NUMERICN',\n  name: 'NumericN',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = NumericN;\nexports.default = _default;\nmodule.exports = NumericN;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOdW1lcmljTiIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsIkVycm9yIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnVtZXJpY24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE51bWVyaWNOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkMsXG4gIHR5cGU6ICdOVU1FUklDTicsXG4gIG5hbWU6ICdOdW1lcmljTicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOdW1lcmljTjtcbm1vZHVsZS5leHBvcnRzID0gTnVtZXJpY047XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFFBQWtCLEdBQUc7RUFDekJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsVUFBVTtFQUVoQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBRWFWLFFBQVE7QUFBQVcsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDdkJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHWCxRQUFRIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _numericn = _interopRequireDefault(require(\"./numericn\"));\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst Numeric = {\n  id: 0x3F,\n  type: 'NUMERIC',\n  name: 'Numeric',\n  declaration: function (parameter) {\n    return 'numeric(' + this.resolvePrecision(parameter) + ', ' + this.resolveScale(parameter) + ')';\n  },\n  resolvePrecision: function (parameter) {\n    if (parameter.precision != null) {\n      return parameter.precision;\n    } else if (parameter.value === null) {\n      return 1;\n    } else {\n      return 18;\n    }\n  },\n  resolveScale: function (parameter) {\n    if (parameter.scale != null) {\n      return parameter.scale;\n    } else {\n      return 0;\n    }\n  },\n  generateTypeInfo(parameter) {\n    let precision;\n    if (parameter.precision <= 9) {\n      precision = 0x05;\n    } else if (parameter.precision <= 19) {\n      precision = 0x09;\n    } else if (parameter.precision <= 28) {\n      precision = 0x0D;\n    } else {\n      precision = 0x11;\n    }\n    return Buffer.from([_numericn.default.id, precision, parameter.precision, parameter.scale]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const precision = parameter.precision;\n    if (precision <= 9) {\n      return Buffer.from([0x05]);\n    } else if (precision <= 19) {\n      return Buffer.from([0x09]);\n    } else if (precision <= 28) {\n      return Buffer.from([0x0D]);\n    } else {\n      return Buffer.from([0x11]);\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const sign = parameter.value < 0 ? 0 : 1;\n    const value = Math.round(Math.abs(parameter.value * Math.pow(10, parameter.scale)));\n    if (parameter.precision <= 9) {\n      const buffer = Buffer.alloc(5);\n      buffer.writeUInt8(sign, 0);\n      buffer.writeUInt32LE(value, 1);\n      yield buffer;\n    } else if (parameter.precision <= 19) {\n      const buffer = new _writableTrackingBuffer.default(10);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      yield buffer.data;\n    } else if (parameter.precision <= 28) {\n      const buffer = new _writableTrackingBuffer.default(14);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      buffer.writeUInt32LE(0x00000000);\n      yield buffer.data;\n    } else {\n      const buffer = new _writableTrackingBuffer.default(18);\n      buffer.writeUInt8(sign);\n      buffer.writeUInt64LE(value);\n      buffer.writeUInt32LE(0x00000000);\n      buffer.writeUInt32LE(0x00000000);\n      yield buffer.data;\n    }\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    return value;\n  }\n};\nvar _default = Numeric;\nexports.default = _default;\nmodule.exports = Numeric;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbnVtZXJpY24iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl93cml0YWJsZVRyYWNraW5nQnVmZmVyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOdW1lcmljIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVByZWNpc2lvbiIsInJlc29sdmVTY2FsZSIsInByZWNpc2lvbiIsInZhbHVlIiwic2NhbGUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiTnVtZXJpY04iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJzaWduIiwiTWF0aCIsInJvdW5kIiwiYWJzIiwicG93IiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ2NExFIiwiZGF0YSIsInZhbGlkYXRlIiwicGFyc2VGbG9hdCIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnVtZXJpYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCBOdW1lcmljTiBmcm9tICcuL251bWVyaWNuJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IE51bWVyaWM6IERhdGFUeXBlICYgeyByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4sIHJlc29sdmVQcmVjaXNpb246IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlUHJlY2lzaW9uJ10+IH0gPSB7XG4gIGlkOiAweDNGLFxuICB0eXBlOiAnTlVNRVJJQycsXG4gIG5hbWU6ICdOdW1lcmljJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdudW1lcmljKCcgKyAodGhpcy5yZXNvbHZlUHJlY2lzaW9uKHBhcmFtZXRlcikpICsgJywgJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcblxuICByZXNvbHZlUHJlY2lzaW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnByZWNpc2lvbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLnByZWNpc2lvbjtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxODtcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIGxldCBwcmVjaXNpb247XG4gICAgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDkpIHtcbiAgICAgIHByZWNpc2lvbiA9IDB4MDU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgcHJlY2lzaW9uID0gMHgwOTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBwcmVjaXNpb24gPSAweDBEO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjaXNpb24gPSAweDExO1xuICAgIH1cblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShbTnVtZXJpY04uaWQsIHByZWNpc2lvbiwgcGFyYW1ldGVyLnByZWNpc2lvbiEsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVjaXNpb24gPSBwYXJhbWV0ZXIucHJlY2lzaW9uITtcbiAgICBpZiAocHJlY2lzaW9uIDw9IDkpIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNV0pO1xuICAgIH0gZWxzZSBpZiAocHJlY2lzaW9uIDw9IDE5KSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDldKTtcbiAgICB9IGVsc2UgaWYgKHByZWNpc2lvbiA8PSAyOCkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDBEXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgxMV0pO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduID0gcGFyYW1ldGVyLnZhbHVlIDwgMCA/IDAgOiAxO1xuICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChNYXRoLmFicyhwYXJhbWV0ZXIudmFsdWUgKiBNYXRoLnBvdygxMCwgcGFyYW1ldGVyLnNjYWxlISkpKTtcbiAgICBpZiAocGFyYW1ldGVyLnByZWNpc2lvbiEgPD0gOSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbiwgMCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSh2YWx1ZSwgMSk7XG4gICAgICB5aWVsZCBidWZmZXI7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIucHJlY2lzaW9uISA8PSAxOSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTApO1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoc2lnbik7XG4gICAgICBidWZmZXIud3JpdGVVSW50NjRMRSh2YWx1ZSk7XG4gICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci5wcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxNCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50OChzaWduKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ2NExFKHZhbHVlKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKDB4MDAwMDAwMDApO1xuICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDE4KTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHNpZ24pO1xuICAgICAgYnVmZmVyLndyaXRlVUludDY0TEUodmFsdWUpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUoMHgwMDAwMDAwMCk7XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwKTtcbiAgICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTnVtZXJpYztcbm1vZHVsZS5leHBvcnRzID0gTnVtZXJpYztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFpRixTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRixNQUFNRyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUMsT0FBd0ksR0FBRztFQUMvSUMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLFNBQVM7RUFFZkMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQixPQUFPLFVBQVUsR0FBSSxJQUFJLENBQUNDLGdCQUFnQixDQUFDRCxTQUFTLENBQUUsR0FBRyxJQUFJLEdBQUksSUFBSSxDQUFDRSxZQUFZLENBQUNGLFNBQVMsQ0FBRSxHQUFHLEdBQUc7RUFDdEcsQ0FBQztFQUVEQyxnQkFBZ0IsRUFBRSxTQUFBQSxDQUFTRCxTQUFTLEVBQUU7SUFDcEMsSUFBSUEsU0FBUyxDQUFDRyxTQUFTLElBQUksSUFBSSxFQUFFO01BQy9CLE9BQU9ILFNBQVMsQ0FBQ0csU0FBUztJQUM1QixDQUFDLE1BQU0sSUFBSUgsU0FBUyxDQUFDSSxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ25DLE9BQU8sQ0FBQztJQUNWLENB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _moneyn = _interopRequireDefault(require(\"./moneyn\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst DATA_LENGTH = Buffer.from([0x04]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst SmallMoney = {\n  id: 0x7A,\n  type: 'MONEY4',\n  name: 'SmallMoney',\n  declaration: function () {\n    return 'smallmoney';\n  },\n  generateTypeInfo: function () {\n    return Buffer.from([_moneyn.default.id, 0x04]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeInt32LE(parameter.value * 10000, 0);\n    yield buffer;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    value = parseFloat(value);\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    if (value < -214748.3648 || value > 214748.3647) {\n      throw new TypeError('Value must be between -214748.3648 and 214748.3647.');\n    }\n    return value;\n  }\n};\nvar _default = SmallMoney;\nexports.default = _default;\nmodule.exports = SmallMoney;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZXluIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkRBVEFfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIk5VTExfTEVOR1RIIiwiU21hbGxNb25leSIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJNb25leU4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVJbnQzMkxFIiwidmFsaWRhdGUiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zbWFsbG1vbmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IE1vbmV5TiBmcm9tICcuL21vbmV5bic7XG5cbmNvbnN0IERBVEFfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDRdKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgU21hbGxNb25leTogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDdBLFxuICB0eXBlOiAnTU9ORVk0JyxcbiAgbmFtZTogJ1NtYWxsTW9uZXknLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3NtYWxsbW9uZXknO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbTW9uZXlOLmlkLCAweDA0XSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIERBVEFfTEVOR1RIO1xuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci52YWx1ZSAqIDEwMDAwLCAwKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbnVtYmVyLicpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPCAtMjE0NzQ4LjM2NDggfHwgdmFsdWUgPiAyMTQ3NDguMzY0Nykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgbXVzdCBiZSBiZXR3ZWVuIC0yMTQ3NDguMzY0OCBhbmQgMjE0NzQ4LjM2NDcuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU21hbGxNb25leTtcbm1vZHVsZS5leHBvcnRzID0gU21hbGxNb25leTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQThCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRTlCLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsVUFBb0IsR0FBRztFQUMzQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFLFlBQVk7RUFFbEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxZQUFZO0VBQ3JCLENBQUM7RUFFREMsZ0JBQWdCLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQzNCLE9BQU9SLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLGVBQU0sQ0FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQ3ZDLENBQUM7RUFFRE0sdUJBQXVCQSxDQUFDQyxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsT0FBT1gsV0FBVztJQUNwQjtJQUVBLE9BQU9ILFdBQVc7RUFDcEIsQ0FBQztFQUVELENBQUVlLHFCQUFxQkEsQ0FBQ0gsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNRSxNQUFNLEdBQUdmLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDTixTQUFTLENBQUNFLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLE1BQU1FLE1BQU07RUFDZCxDQUFDO0VBRURHLFFBQVEsRUFBRSxTQUFBQSxDQUFTTCxLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQUEsS0FBSyxHQUFHTSxVQUFVLENBQUNOLEtBQUssQ0FBQztJQUN6QixJQUFJTyxLQUFLLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ2hCLE1BQU0sSUFBSVEsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBQ0EsSUFBSVIsS0FBSyxHQUFHLENBQUMsV0FBVyxJQUFJQSxLQUFLLEdBQUcsV0FBVyxFQUFFO01BQy9DLE1BQU0sSUFBSVEsU0FBUyxDQUFDLHFEQUFxRCxDQUFDO0lBQzVFO0lBQ0EsT0FBT1IsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFTLFFBQUEsR0FFYW5CLFVBQVU7QUFBQW9CLE9BQUEsQ0FBQXpCLE9BQUEsR0FBQXdCLFFBQUE7QUFDekJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHcEIsVUFBVSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _intn = _interopRequireDefault(require(\"./intn\"));\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst DATA_LENGTH = Buffer.from([0x08]);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst BigInt = {\n  id: 0x7F,\n  type: 'INT8',\n  name: 'BigInt',\n  declaration: function () {\n    return 'bigint';\n  },\n  generateTypeInfo() {\n    return Buffer.from([_intn.default.id, 0x08]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = new _writableTrackingBuffer.default(8);\n    buffer.writeInt64LE(Number(parameter.value));\n    yield buffer.data;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'number') {\n      value = Number(value);\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid number.');\n    }\n    if (value < Number.MIN_SAFE_INTEGER || value > Number.MAX_SAFE_INTEGER) {\n      throw new TypeError(`Value must be between ${Number.MIN_SAFE_INTEGER} and ${Number.MAX_SAFE_INTEGER}, inclusive.  For smaller or bigger numbers, use VarChar type.`);\n    }\n    return value;\n  }\n};\nvar _default = BigInt;\nexports.default = _default;\nmodule.exports = BigInt;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW50biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3dyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkRBVEFfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIk5VTExfTEVOR1RIIiwiQmlnSW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkludE4iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZUludDY0TEUiLCJOdW1iZXIiLCJkYXRhIiwidmFsaWRhdGUiLCJpc05hTiIsIlR5cGVFcnJvciIsIk1JTl9TQUZFX0lOVEVHRVIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvYmlnaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IEludE4gZnJvbSAnLi9pbnRuJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDA4XSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IEJpZ0ludDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDdGLFxuICB0eXBlOiAnSU5UOCcsXG4gIG5hbWU6ICdCaWdJbnQnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ2JpZ2ludCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW0ludE4uaWQsIDB4MDhdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gREFUQV9MRU5HVEg7XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoOCk7XG4gICAgYnVmZmVyLndyaXRlSW50NjRMRShOdW1iZXIocGFyYW1ldGVyLnZhbHVlKSk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBudW1iZXIuJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgfHwgdmFsdWUgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVmFsdWUgbXVzdCBiZSBiZXR3ZWVuICR7TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJ9IGFuZCAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfSwgaW5jbHVzaXZlLiAgRm9yIHNtYWxsZXIgb3IgYmlnZ2VyIG51bWJlcnMsIHVzZSBWYXJDaGFyIHR5cGUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCaWdJbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IEJpZ0ludDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsdUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFpRixTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRixNQUFNRyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsTUFBTUMsV0FBVyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1FLE1BQWdCLEdBQUc7RUFDdkJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxRQUFRO0VBRWRDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxRQUFRO0VBQ2pCLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1IsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQ1EsYUFBSSxDQUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7RUFDckMsQ0FBQztFQUVETSx1QkFBdUJBLENBQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQzFDLElBQUlELFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPWCxXQUFXO0lBQ3BCO0lBRUEsT0FBT0gsV0FBVztFQUNwQixDQUFDO0VBRUQsQ0FBRWUscUJBQXFCQSxDQUFDSCxTQUFTLEVBQUVDLE9BQU8sRUFBRTtJQUMxQyxJQUFJRCxTQUFTLENBQUNFLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1FLE1BQU0sR0FBRyxJQUFJQywrQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDNUNELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDQyxNQUFNLENBQUNQLFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTUUsTUFBTSxDQUFDSSxJQUFJO0VBQ25CLENBQUM7RUFFREMsUUFBUSxFQUFFLFNBQUFBLENBQVNQLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QkEsS0FBSyxHQUFHSyxNQUFNLENBQUNMLEtBQUssQ0FBQztJQUN2QjtJQUVBLElBQUlRLEtBQUssQ0FBQ1IsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJUyxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxJQUFJVCxLQUFLLEdBQUdLLE1BQU0sQ0FBQ0ssZ0JBQWdCLElBQUlWLEtBQUssR0FBR0ssTUFBTSxDQUFDTSxnQkFBZ0IsRUFBRTtNQUN0RSxNQUFNLElBQUlGLFNBQVMsQ0FBRSx5QkFBd0JKLE1BQU0sQ0FBQ0ssZ0JBQWlCLFFBQU9MLE1BQU0sQ0FBQ00sZ0JBQWlCLGdFQUErRCxDQUFDO0lBQ3RLO0lBRUEsT0FBT1gsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFZLFFBQUEsR0FFYXRCLE1BQU07QUFBQXVCLE9BQUEsQ0FBQTVCLE9BQUEsR0FBQTJCLFFBQUE7QUFDckJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHdkIsTUFBTSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\nconst Image = {\n  id: 0x22,\n  type: 'IMAGE',\n  name: 'Image',\n  hasTableName: true,\n  declaration: function () {\n    return 'image';\n  },\n  resolveLength: function (parameter) {\n    if (parameter.value != null) {\n      const value = parameter.value; // TODO: Temporary solution. Replace 'any' more with specific type;\n      return value.length;\n    } else {\n      return -1;\n    }\n  },\n  generateTypeInfo(parameter) {\n    const buffer = Buffer.alloc(5);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeInt32LE(parameter.length, 1);\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeInt32LE(parameter.value.length, 0);\n    return buffer;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield parameter.value;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!Buffer.isBuffer(value)) {\n      throw new TypeError('Invalid buffer.');\n    }\n    return value;\n  }\n};\nvar _default = Image;\nexports.default = _default;\nmodule.exports = Image;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJJbWFnZSIsImlkIiwidHlwZSIsIm5hbWUiLCJoYXNUYWJsZU5hbWUiLCJkZWNsYXJhdGlvbiIsInJlc29sdmVMZW5ndGgiLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsImdlbmVyYXRlVHlwZUluZm8iLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZUludDMyTEUiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsImlzQnVmZmVyIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2ltYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IEltYWdlOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjIsXG4gIHR5cGU6ICdJTUFHRScsXG4gIG5hbWU6ICdJbWFnZScsXG4gIGhhc1RhYmxlTmFtZTogdHJ1ZSxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdpbWFnZSc7XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSAhPSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRPRE86IFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVwbGFjZSAnYW55JyBtb3JlIHdpdGggc3BlY2lmaWMgdHlwZTtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pZCwgMCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShwYXJhbWV0ZXIubGVuZ3RoISwgMSk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShwYXJhbWV0ZXIudmFsdWUubGVuZ3RoISwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBwYXJhbWV0ZXIudmFsdWU7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IEJ1ZmZlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYnVmZmVyLicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBJbWFnZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXpELE1BQU1DLEtBQWUsR0FBRztFQUN0QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsWUFBWSxFQUFFLElBQUk7RUFFbEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxPQUFPO0VBQ2hCLENBQUM7RUFFREMsYUFBYSxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUNqQyxJQUFJQSxTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0IsTUFBTUEsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQVksQ0FBQyxDQUFDO01BQ3RDLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTTtJQUNyQixDQUFDLE1BQU07TUFDTCxPQUFPLENBQUMsQ0FBQztJQUNYO0VBQ0YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUNILFNBQVMsRUFBRTtJQUMxQixNQUFNSSxNQUFNLEdBQUdiLE1BQU0sQ0FBQ2MsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDWixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdCVSxNQUFNLENBQUNHLFlBQVksQ0FBQ1AsU0FBUyxDQUFDRSxNQUFNLEVBQUcsQ0FBQyxDQUFDO0lBQ3pDLE9BQU9FLE1BQU07RUFDZixDQUFDO0VBRURJLHVCQUF1QkEsQ0FBQ1IsU0FBUyxFQUFFUyxPQUFPLEVBQUU7SUFDMUMsSUFBSVQsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxNQUFNYyxNQUFNLEdBQUdiLE1BQU0sQ0FBQ2MsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRyxZQUFZLENBQUNQLFNBQVMsQ0FBQ0MsS0FBSyxDQUFDQyxNQUFNLEVBQUcsQ0FBQyxDQUFDO0lBQy9DLE9BQU9FLE1BQU07RUFDZixDQUFDO0VBRUQsQ0FBRU0scUJBQXFCQSxDQUFDVixTQUFTLEVBQUVTLE9BQU8sRUFBRTtJQUMxQyxJQUFJVCxTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1ELFNBQVMsQ0FBQ0MsS0FBSztFQUN2QixDQUFDO0VBRURVLFFBQVEsRUFBRSxTQUFBQSxDQUFTVixLQUFLLEVBQWlCO0lBQ3ZDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFDQSxJQUFJLENBQUNWLE1BQU0sQ0FBQ3FCLFFBQVEsQ0FBQ1gsS0FBSyxDQUFDLEVBQUU7TUFDM0IsTUFBTSxJQUFJWSxTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFDQSxPQUFPWixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQWEsUUFBQSxHQUVhckIsS0FBSztBQUFBc0IsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDcEJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHdEIsS0FBSyJ9","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n","\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: \"_internal\", bomAware: true},\n    cesu8:  { type: \"_internal\", bomAware: true},\n    unicode11utf8: \"utf8\",\n\n    ucs2:   { type: \"_internal\", bomAware: true},\n    utf16le: \"ucs2\",\n\n    binary: { type: \"_internal\" },\n    base64: { type: \"_internal\" },\n    hex:    { type: \"_internal\" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === \"base64\")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === \"cesu8\") {\n        this.enc = \"utf8\"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n    if (!Buffer.isBuffer(buf)) {\n        buf = Buffer.from(buf);\n    }\n\n    return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n    return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = '';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We're waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n","'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n    this.bomAware = true;\n    this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n    var src = Buffer.from(str, 'ucs2');\n    var dst = Buffer.alloc(src.length * 2);\n    var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n    var offset = 0;\n\n    for (var i = 0; i < src.length; i += 2) {\n        var code = src.readUInt16LE(i);\n        var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n        var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n        if (this.highSurrogate) {\n            if (isHighSurrogate || !isLowSurrogate) {\n                // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n                // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n                // (technically wrong, but expected by some applications, like Windows file names).\n                write32.call(dst, this.highSurrogate, offset);\n                offset += 4;\n            }\n            else {\n                // Create 32-bit value from high and low surrogates;\n                var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n                write32.call(dst, codepoint, offset);\n                offset += 4;\n                this.highSurrogate = 0;\n\n                continue;\n            }\n        }\n\n        if (isHighSurrogate)\n            this.highSurrogate = code;\n        else {\n            // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n            // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n            // unpaired high surrogates.\n            write32.call(dst, code, offset);\n            offset += 4;\n            this.highSurrogate = 0;\n        }\n    }\n\n    if (offset < dst.length)\n        dst = dst.slice(0, offset);\n\n    return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n    // Treat any leftover high surrogate as a semi-valid independent character.\n    if (!this.highSurrogate)\n        return;\n\n    var buf = Buffer.alloc(4);\n\n    if (this.isLE)\n        buf.writeUInt32LE(this.highSurrogate, 0);\n    else\n        buf.writeUInt32BE(this.highSurrogate, 0);\n\n    this.highSurrogate = 0;\n\n    return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n    this.isLE = codec.isLE;\n    this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n    this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n    if (src.length === 0)\n        return '';\n\n    var i = 0;\n    var codepoint = 0;\n    var dst = Buffer.alloc(src.length + 4);\n    var offset = 0;\n    var isLE = this.isLE;\n    var overflow = this.overflow;\n    var badChar = this.badChar;\n\n    if (overflow.length > 0) {\n        for (; i < src.length && overflow.length < 4; i++)\n            overflow.push(src[i]);\n        \n        if (overflow.length === 4) {\n            // NOTE: codepoint is a signed int32 and can be negative.\n            // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n            if (isLE) {\n                codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n            } else {\n                codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n            }\n            overflow.length = 0;\n\n            offset = _writeCodepoint(dst, offset, codepoint, badChar);\n        }\n    }\n\n    // Main loop. Should be as optimized as possible.\n    for (; i < src.length - 3; i += 4) {\n        // NOTE: codepoint is a signed int32 and can be negative.\n        if (isLE) {\n            codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n        } else {\n            codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n        }\n        offset = _writeCodepoint(dst, offset, codepoint, badChar);\n    }\n\n    // Keep overflowing bytes.\n    for (; i < src.length; i++) {\n        overflow.push(src[i]);\n    }\n\n    return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n    // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n    if (codepoint < 0 || codepoint > 0x10FFFF) {\n        // Not a valid Unicode codepoint\n        codepoint = badChar;\n    } \n\n    // Ephemeral Planes: Write high surrogate.\n    if (codepoint >= 0x10000) {\n        codepoint -= 0x10000;\n\n        var high = 0xD800 | (codepoint >> 10);\n        dst[offset++] = high & 0xff;\n        dst[offset++] = high >> 8;\n\n        // Low surrogate is written below.\n        var codepoint = 0xDC00 | (codepoint & 0x3FF);\n    }\n\n    // Write BMP char or low surrogate.\n    dst[offset++] = codepoint & 0xff;\n    dst[offset++] = codepoint >> 8;\n\n    return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n    this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n    this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n    options = options || {};\n\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n\n    this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n    return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n    if (!this.decoder) { \n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n\n        if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.\n    var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 4) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n                        return 'utf-32le';\n                    }\n                    if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n                        return 'utf-32be';\n                    }\n                }\n\n                if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n                if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n                if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n                if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';\n    if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-32le';\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n    this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBufs = [];\n    this.initialBufsLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBufs.push(buf);\n        this.initialBufsLen += buf.length;\n        \n        if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var resStr = '';\n        for (var i = 0; i < this.initialBufs.length; i++)\n            resStr += this.decoder.write(this.initialBufs[i]);\n\n        var trail = this.decoder.end();\n        if (trail)\n            resStr += trail;\n\n        this.initialBufs.length = this.initialBufsLen = 0;\n        return resStr;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n    var b = [];\n    var charsProcessed = 0;\n    var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n    outer_loop:\n    for (var i = 0; i < bufs.length; i++) {\n        var buf = bufs[i];\n        for (var j = 0; j < buf.length; j++) {\n            b.push(buf[j]);\n            if (b.length === 2) {\n                if (charsProcessed === 0) {\n                    // Check BOM first.\n                    if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n                    if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n                }\n\n                if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n                if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n                b.length = 0;\n                charsProcessed++;\n\n                if (charsProcessed >= 100) {\n                    break outer_loop;\n                }\n            }\n        }\n    }\n\n    // Make decisions.\n    // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n    // So, we count ASCII as if it was LE or BE, and decide from that.\n    if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n    if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n    // Couldn't decide (likely all zeros or not enough data).\n    return defaultEncoding || 'utf-16le';\n}\n\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n","\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    \"10029\": \"maccenteuro\",\n    \"maccenteuro\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n    },\n\n    \"808\": \"cp808\",\n    \"ibm808\": \"cp808\",\n    \"cp808\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n    },\n\n    \"mik\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n    },\n\n    \"cp720\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n    },\n\n    // Aliases of generated encodings.\n    \"ascii8bit\": \"ascii\",\n    \"usascii\": \"ascii\",\n    \"ansix34\": \"ascii\",\n    \"ansix341968\": \"ascii\",\n    \"ansix341986\": \"ascii\",\n    \"csascii\": \"ascii\",\n    \"cp367\": \"ascii\",\n    \"ibm367\": \"ascii\",\n    \"isoir6\": \"ascii\",\n    \"iso646us\": \"ascii\",\n    \"iso646irv\": \"ascii\",\n    \"us\": \"ascii\",\n\n    \"latin1\": \"iso88591\",\n    \"latin2\": \"iso88592\",\n    \"latin3\": \"iso88593\",\n    \"latin4\": \"iso88594\",\n    \"latin5\": \"iso88599\",\n    \"latin6\": \"iso885910\",\n    \"latin7\": \"iso885913\",\n    \"latin8\": \"iso885914\",\n    \"latin9\": \"iso885915\",\n    \"latin10\": \"iso885916\",\n\n    \"csisolatin1\": \"iso88591\",\n    \"csisolatin2\": \"iso88592\",\n    \"csisolatin3\": \"iso88593\",\n    \"csisolatin4\": \"iso88594\",\n    \"csisolatincyrillic\": \"iso88595\",\n    \"csisolatinarabic\": \"iso88596\",\n    \"csisolatingreek\" : \"iso88597\",\n    \"csisolatinhebrew\": \"iso88598\",\n    \"csisolatin5\": \"iso88599\",\n    \"csisolatin6\": \"iso885910\",\n\n    \"l1\": \"iso88591\",\n    \"l2\": \"iso88592\",\n    \"l3\": \"iso88593\",\n    \"l4\": \"iso88594\",\n    \"l5\": \"iso88599\",\n    \"l6\": \"iso885910\",\n    \"l7\": \"iso885913\",\n    \"l8\": \"iso885914\",\n    \"l9\": \"iso885915\",\n    \"l10\": \"iso885916\",\n\n    \"isoir14\": \"iso646jp\",\n    \"isoir57\": \"iso646cn\",\n    \"isoir100\": \"iso88591\",\n    \"isoir101\": \"iso88592\",\n    \"isoir109\": \"iso88593\",\n    \"isoir110\": \"iso88594\",\n    \"isoir144\": \"iso88595\",\n    \"isoir127\": \"iso88596\",\n    \"isoir126\": \"iso88597\",\n    \"isoir138\": \"iso88598\",\n    \"isoir148\": \"iso88599\",\n    \"isoir157\": \"iso885910\",\n    \"isoir166\": \"tis620\",\n    \"isoir179\": \"iso885913\",\n    \"isoir199\": \"iso885914\",\n    \"isoir203\": \"iso885915\",\n    \"isoir226\": \"iso885916\",\n\n    \"cp819\": \"iso88591\",\n    \"ibm819\": \"iso88591\",\n\n    \"cyrillic\": \"iso88595\",\n\n    \"arabic\": \"iso88596\",\n    \"arabic8\": \"iso88596\",\n    \"ecma114\": \"iso88596\",\n    \"asmo708\": \"iso88596\",\n\n    \"greek\" : \"iso88597\",\n    \"greek8\" : \"iso88597\",\n    \"ecma118\" : \"iso88597\",\n    \"elot928\" : \"iso88597\",\n\n    \"hebrew\": \"iso88598\",\n    \"hebrew8\": \"iso88598\",\n\n    \"turkish\": \"iso88599\",\n    \"turkish8\": \"iso88599\",\n\n    \"thai\": \"iso885911\",\n    \"thai8\": \"iso885911\",\n\n    \"celtic\": \"iso885914\",\n    \"celtic8\": \"iso885914\",\n    \"isoceltic\": \"iso885914\",\n\n    \"tis6200\": \"tis620\",\n    \"tis62025291\": \"tis620\",\n    \"tis62025330\": \"tis620\",\n\n    \"10000\": \"macroman\",\n    \"10006\": \"macgreek\",\n    \"10007\": \"maccyrillic\",\n    \"10079\": \"maciceland\",\n    \"10081\": \"macturkish\",\n\n    \"cspc8codepage437\": \"cp437\",\n    \"cspc775baltic\": \"cp775\",\n    \"cspc850multilingual\": \"cp850\",\n    \"cspcp852\": \"cp852\",\n    \"cspc862latinhebrew\": \"cp862\",\n    \"cpgr\": \"cp869\",\n\n    \"msee\": \"cp1250\",\n    \"mscyrl\": \"cp1251\",\n    \"msansi\": \"cp1252\",\n    \"msgreek\": \"cp1253\",\n    \"msturk\": \"cp1254\",\n    \"mshebr\": \"cp1255\",\n    \"msarab\": \"cp1256\",\n    \"winbaltrim\": \"cp1257\",\n\n    \"cp20866\": \"koi8r\",\n    \"20866\": \"koi8r\",\n    \"ibm878\": \"koi8r\",\n    \"cskoi8r\": \"koi8r\",\n\n    \"cp21866\": \"koi8u\",\n    \"21866\": \"koi8u\",\n    \"ibm1168\": \"koi8u\",\n\n    \"strk10482002\": \"rk1048\",\n\n    \"tcvn5712\": \"tcvn\",\n    \"tcvn57121\": \"tcvn\",\n\n    \"gb198880\": \"iso646cn\",\n    \"cn\": \"iso646cn\",\n\n    \"csiso14jisc6220ro\": \"iso646jp\",\n    \"jisc62201969ro\": \"iso646jp\",\n    \"jp\": \"iso646jp\",\n\n    \"cshproman8\": \"hproman8\",\n    \"r8\": \"hproman8\",\n    \"roman8\": \"hproman8\",\n    \"xroman8\": \"hproman8\",\n    \"ibm1051\": \"hproman8\",\n\n    \"mac\": \"macintosh\",\n    \"csmacintosh\": \"macintosh\",\n};\n\n","\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ﺈ×÷ﹱ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"€…‘’“”•–— กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู﻿​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \" ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n  }\n}","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error(\"DBCS codec is called without the data.\")\n    if (!codecOptions.table)\n        throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === 'function') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 common decode nodes.\n        var commonThirdByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        var commonFourthByteNodeIdx = this.decodeTables.length;\n        this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n        // Fill out the tree\n        var firstByteNode = this.decodeTables[0];\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n            for (var j = 0x30; j <= 0x39; j++) {\n                if (secondByteNode[j] === UNASSIGNED) {\n                    secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n                } else if (secondByteNode[j] > NODE_START) {\n                    throw new Error(\"gb18030 decode tables conflict at byte 2\");\n                }\n\n                var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n                for (var k = 0x81; k <= 0xFE; k++) {\n                    if (thirdByteNode[k] === UNASSIGNED) {\n                        thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n                    } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n                        continue;\n                    } else if (thirdByteNode[k] > NODE_START) {\n                        throw new Error(\"gb18030 decode tables conflict at byte 3\");\n                    }\n\n                    var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n                    for (var l = 0x30; l <= 0x39; l++) {\n                        if (fourthByteNode[l] === UNASSIGNED)\n                            fourthByteNode[l] = GB18030_CODE;\n                    }\n                }\n            }\n        }\n    }\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === 'number')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we'll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === \"string\") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error(\"Incorrect surrogate pair in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error(\"Incorrect type '\" + typeof part + \"' given in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error(\"Incorrect chunk in \"  + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There's already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === 'object')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    var hasValues = false;\n    var subNodeEmpty = {};\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0) {\n            this._setEncodeChar(uCode, mbCode);\n            hasValues = true;\n        } else if (uCode <= NODE_START) {\n            var subNodeIdx = NODE_START - uCode;\n            if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n                var newPrefix = (mbCode << 8) >>> 0;  // NOTE: '>>> 0' keeps 32-bit num positive.\n                if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n                    hasValues = true;\n                else\n                    subNodeEmpty[subNodeIdx] = true;\n            }\n        } else if (uCode <= SEQ_START) {\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n            hasValues = true;\n        }\n    }\n    return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We've got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We've got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === 'object') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn't do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else if (dbcsCode < 0x1000000) {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        } else {\n            newBuf[j++] = dbcsCode >>> 24;\n            newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n            newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We're in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBytes = [];\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n        seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n            i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n        }\n        else if (uCode === GB18030_CODE) {\n            if (i >= 3) {\n                var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n            } else {\n                var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n                          (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n                          (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n                          (curByte-0x30);\n            }\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode >= 0x10000) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 | (uCode >> 10);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 | (uCode & 0x3FF);\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBytes = (seqStart >= 0)\n        ? Array.prototype.slice.call(buf, seqStart)\n        : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n    return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = '';\n\n    // Try to parse all remaining chars.\n    while (this.prevBytes.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var bytesArr = this.prevBytes.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBytes = [];\n        this.nodeIdx = 0;\n        if (bytesArr.length > 0)\n            ret += this.write(bytesArr);\n    }\n\n    this.prevBytes = [];\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + ((r-l+1) >> 1);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n","\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return require('./tables/shiftjis.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return require('./tables/eucjp.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json') },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n        gb18030: function() { return require('./tables/gb18030-ranges.json') },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'€': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp949.json') },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json') },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n        encodeSkipVals: [\n            // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n            // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n            // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n            0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n            0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n            0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n            0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n            0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n            // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n            0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n        ],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n","\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    require(\"./internal\"),\n    require(\"./utf32\"),\n    require(\"./utf16\"),\n    require(\"./utf7\"),\n    require(\"./sbcs-codec\"),\n    require(\"./sbcs-data\"),\n    require(\"./sbcs-data-generated\"),\n    require(\"./dbcs-codec\"),\n    require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n    var Transform = stream_module.Transform;\n\n    // == Encoder stream =======================================================\n\n    function IconvLiteEncoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n        Transform.call(this, options);\n    }\n\n    IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteEncoderStream }\n    });\n\n    IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (typeof chunk != 'string')\n            return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteEncoderStream.prototype.collect = function(cb) {\n        var chunks = [];\n        this.on('error', cb);\n        this.on('data', function(chunk) { chunks.push(chunk); });\n        this.on('end', function() {\n            cb(null, Buffer.concat(chunks));\n        });\n        return this;\n    }\n\n\n    // == Decoder stream =======================================================\n\n    function IconvLiteDecoderStream(conv, options) {\n        this.conv = conv;\n        options = options || {};\n        options.encoding = this.encoding = 'utf8'; // We output strings.\n        Transform.call(this, options);\n    }\n\n    IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n        constructor: { value: IconvLiteDecoderStream }\n    });\n\n    IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n        if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n            return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n        try {\n            var res = this.conv.write(chunk);\n            if (res && res.length) this.push(res, this.encoding);\n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype._flush = function(done) {\n        try {\n            var res = this.conv.end();\n            if (res && res.length) this.push(res, this.encoding);                \n            done();\n        }\n        catch (e) {\n            done(e);\n        }\n    }\n\n    IconvLiteDecoderStream.prototype.collect = function(cb) {\n        var res = '';\n        this.on('error', cb);\n        this.on('data', function(chunk) { res += chunk; });\n        this.on('end', function() {\n            cb(null, res);\n        });\n        return this;\n    }\n\n    return {\n        IconvLiteEncoderStream: IconvLiteEncoderStream,\n        IconvLiteDecoderStream: IconvLiteDecoderStream,\n    };\n};\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = \"\" + (str || \"\"); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === 'string') {\n        if (!iconv.skipDecodeWarning) {\n            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case \"string\": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case \"object\": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case \"function\": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It'll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n    if (iconv.supportsStreams)\n        return;\n\n    // Dependency-inject stream module to create IconvLite stream classes.\n    var streams = require(\"./streams\")(stream_module);\n\n    // Not public API yet, but expose the stream classes.\n    iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n    // Streaming API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n    stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n    iconv.enableStreamingAPI(stream_module);\n\n} else {\n    // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n    iconv.encodeStream = iconv.decodeStream = function() {\n        throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n    };\n}\n\nif (\"Ā\" != \"\\u0100\") {\n    console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _iconvLite = _interopRequireDefault(require(\"iconv-lite\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\nconst Text = {\n  id: 0x23,\n  type: 'TEXT',\n  name: 'Text',\n  hasTableName: true,\n  declaration: function () {\n    return 'text';\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value;\n    if (value != null) {\n      return value.length;\n    } else {\n      return -1;\n    }\n  },\n  generateTypeInfo(parameter, _options) {\n    const buffer = Buffer.alloc(10);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeInt32LE(parameter.length, 1);\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 5, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    const value = parameter.value;\n    if (value == null) {\n      return NULL_LENGTH;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeInt32LE(value.length, 0);\n    return buffer;\n  },\n  generateParameterData: function* (parameter, options) {\n    const value = parameter.value;\n    if (value == null) {\n      return;\n    }\n    yield value;\n  },\n  validate: function (value, collation) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    if (!collation) {\n      throw new Error('No collation was set by the server for the current connection.');\n    }\n    if (!collation.codepage) {\n      throw new Error('The collation set by the server has no associated encoding.');\n    }\n    return _iconvLite.default.encode(value, collation.codepage);\n  }\n};\nvar _default = Text;\nexports.default = _default;\nmodule.exports = Text;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIlRleHQiLCJpZCIsInR5cGUiLCJuYW1lIiwiaGFzVGFibGVOYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiX29wdGlvbnMiLCJidWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDgiLCJ3cml0ZUludDMyTEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBUZXh0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjMsXG4gIHR5cGU6ICdURVhUJyxcbiAgbmFtZTogJ1RleHQnLFxuXG4gIGhhc1RhYmxlTmFtZTogdHJ1ZSxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICd0ZXh0JztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIsIF9vcHRpb25zKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEwKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDUsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIHZhbHVlO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbGxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2xsYXRpb24gd2FzIHNldCBieSB0aGUgc2VydmVyIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uLmNvZGVwYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb2xsYXRpb24gc2V0IGJ5IHRoZSBzZXJ2ZXIgaGFzIG5vIGFzc29jaWF0ZWQgZW5jb2RpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb252LmVuY29kZSh2YWx1ZSwgY29sbGF0aW9uLmNvZGVwYWdlKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbm1vZHVsZS5leHBvcnRzID0gVGV4dDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSS9CLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNQyxJQUFjLEdBQUc7RUFDckJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUksRUFBRSxNQUFN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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.bufferToLowerCaseGuid = bufferToLowerCaseGuid;\nexports.bufferToUpperCaseGuid = bufferToUpperCaseGuid;\nexports.guidToArray = guidToArray;\nconst UPPER_CASE_MAP = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D', '6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B', '8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF', 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF'];\nconst LOWER_CASE_MAP = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff'];\nfunction bufferToUpperCaseGuid(buffer) {\n  return UPPER_CASE_MAP[buffer[3]] + UPPER_CASE_MAP[buffer[2]] + UPPER_CASE_MAP[buffer[1]] + UPPER_CASE_MAP[buffer[0]] + '-' + UPPER_CASE_MAP[buffer[5]] + UPPER_CASE_MAP[buffer[4]] + '-' + UPPER_CASE_MAP[buffer[7]] + UPPER_CASE_MAP[buffer[6]] + '-' + UPPER_CASE_MAP[buffer[8]] + UPPER_CASE_MAP[buffer[9]] + '-' + UPPER_CASE_MAP[buffer[10]] + UPPER_CASE_MAP[buffer[11]] + UPPER_CASE_MAP[buffer[12]] + UPPER_CASE_MAP[buffer[13]] + UPPER_CASE_MAP[buffer[14]] + UPPER_CASE_MAP[buffer[15]];\n}\nfunction bufferToLowerCaseGuid(buffer) {\n  return LOWER_CASE_MAP[buffer[3]] + LOWER_CASE_MAP[buffer[2]] + LOWER_CASE_MAP[buffer[1]] + LOWER_CASE_MAP[buffer[0]] + '-' + LOWER_CASE_MAP[buffer[5]] + LOWER_CASE_MAP[buffer[4]] + '-' + LOWER_CASE_MAP[buffer[7]] + LOWER_CASE_MAP[buffer[6]] + '-' + LOWER_CASE_MAP[buffer[8]] + LOWER_CASE_MAP[buffer[9]] + '-' + LOWER_CASE_MAP[buffer[10]] + LOWER_CASE_MAP[buffer[11]] + LOWER_CASE_MAP[buffer[12]] + LOWER_CASE_MAP[buffer[13]] + LOWER_CASE_MAP[buffer[14]] + LOWER_CASE_MAP[buffer[15]];\n}\nconst CHARCODEMAP = {};\nconst hexDigits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F'].map(d => d.charCodeAt(0));\nfor (let i = 0; i < hexDigits.length; i++) {\n  const map = CHARCODEMAP[hexDigits[i]] = {};\n  for (let j = 0; j < hexDigits.length; j++) {\n    const hex = String.fromCharCode(hexDigits[i], hexDigits[j]);\n    const value = parseInt(hex, 16);\n    map[hexDigits[j]] = value;\n  }\n}\nfunction guidToArray(guid) {\n  return [CHARCODEMAP[guid.charCodeAt(6)][guid.charCodeAt(7)], CHARCODEMAP[guid.charCodeAt(4)][guid.charCodeAt(5)], CHARCODEMAP[guid.charCodeAt(2)][guid.charCodeAt(3)], CHARCODEMAP[guid.charCodeAt(0)][guid.charCodeAt(1)], CHARCODEMAP[guid.charCodeAt(11)][guid.charCodeAt(12)], CHARCODEMAP[guid.charCodeAt(9)][guid.charCodeAt(10)], CHARCODEMAP[guid.charCodeAt(16)][guid.charCodeAt(17)], CHARCODEMAP[guid.charCodeAt(14)][guid.charCodeAt(15)], CHARCODEMAP[guid.charCodeAt(19)][guid.charCodeAt(20)], CHARCODEMAP[guid.charCodeAt(21)][guid.charCodeAt(22)], CHARCODEMAP[guid.charCodeAt(24)][guid.charCodeAt(25)], CHARCODEMAP[guid.charCodeAt(26)][guid.charCodeAt(27)], CHARCODEMAP[guid.charCodeAt(28)][guid.charCodeAt(29)], CHARCODEMAP[guid.charCodeAt(30)][guid.charCodeAt(31)], CHARCODEMAP[guid.charCodeAt(32)][guid.charCodeAt(33)], CHARCODEMAP[guid.charCodeAt(34)][guid.charCodeAt(35)]];\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVUFBFUl9DQVNFX01BUCIsIkxPV0VSX0NBU0VfTUFQIiwiYnVmZmVyVG9VcHBlckNhc2VHdWlkIiwiYnVmZmVyIiwiYnVmZmVyVG9Mb3dlckNhc2VHdWlkIiwiQ0hBUkNPREVNQVAiLCJoZXhEaWdpdHMiLCJtYXAiLCJkIiwiY2hhckNvZGVBdCIsImkiLCJsZW5ndGgiLCJqIiwiaGV4IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwidmFsdWUiLCJwYXJzZUludCIsImd1aWRUb0FycmF5IiwiZ3VpZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ndWlkLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBVUFBFUl9DQVNFX01BUCA9IFtcbiAgJzAwJywgJzAxJywgJzAyJywgJzAzJywgJzA0JywgJzA1JywgJzA2JywgJzA3JywgJzA4JywgJzA5JywgJzBBJywgJzBCJywgJzBDJywgJzBEJywgJzBFJywgJzBGJyxcbiAgJzEwJywgJzExJywgJzEyJywgJzEzJywgJzE0JywgJzE1JywgJzE2JywgJzE3JywgJzE4JywgJzE5JywgJzFBJywgJzFCJywgJzFDJywgJzFEJywgJzFFJywgJzFGJyxcbiAgJzIwJywgJzIxJywgJzIyJywgJzIzJywgJzI0JywgJzI1JywgJzI2JywgJzI3JywgJzI4JywgJzI5JywgJzJBJywgJzJCJywgJzJDJywgJzJEJywgJzJFJywgJzJGJyxcbiAgJzMwJywgJzMxJywgJzMyJywgJzMzJywgJzM0JywgJzM1JywgJzM2JywgJzM3JywgJzM4JywgJzM5JywgJzNBJywgJzNCJywgJzNDJywgJzNEJywgJzNFJywgJzNGJyxcbiAgJzQwJywgJzQxJywgJzQyJywgJzQzJywgJzQ0JywgJzQ1JywgJzQ2JywgJzQ3JywgJzQ4JywgJzQ5JywgJzRBJywgJzRCJywgJzRDJywgJzREJywgJzRFJywgJzRGJyxcbiAgJzUwJywgJzUxJywgJzUyJywgJzUzJywgJzU0JywgJzU1JywgJzU2JywgJzU3JywgJzU4JywgJzU5JywgJzVBJywgJzVCJywgJzVDJywgJzVEJywgJzVFJywgJzVGJyxcbiAgJzYwJywgJzYxJywgJzYyJywgJzYzJywgJzY0JywgJzY1JywgJzY2JywgJzY3JywgJzY4JywgJzY5JywgJzZBJywgJzZCJywgJzZDJywgJzZEJywgJzZFJywgJzZGJyxcbiAgJzcwJywgJzcxJywgJzcyJywgJzczJywgJzc0JywgJzc1JywgJzc2JywgJzc3JywgJzc4JywgJzc5JywgJzdBJywgJzdCJywgJzdDJywgJzdEJywgJzdFJywgJzdGJyxcbiAgJzgwJywgJzgxJywgJzgyJywgJzgzJywgJzg0JywgJzg1JywgJzg2JywgJzg3JywgJzg4JywgJzg5JywgJzhBJywgJzhCJywgJzhDJywgJzhEJywgJzhFJywgJzhGJyxcbiAgJzkwJywgJzkxJywgJzkyJywgJzkzJywgJzk0JywgJzk1JywgJzk2JywgJzk3JywgJzk4JywgJzk5JywgJzlBJywgJzlCJywgJzlDJywgJzlEJywgJzlFJywgJzlGJyxcbiAgJ0EwJywgJ0ExJywgJ0EyJywgJ0EzJywgJ0E0JywgJ0E1JywgJ0E2JywgJ0E3JywgJ0E4JywgJ0E5JywgJ0FBJywgJ0FCJywgJ0FDJywgJ0FEJywgJ0FFJywgJ0FGJyxcbiAgJ0IwJywgJ0IxJywgJ0IyJywgJ0IzJywgJ0I0JywgJ0I1JywgJ0I2JywgJ0I3JywgJ0I4JywgJ0I5JywgJ0JBJywgJ0JCJywgJ0JDJywgJ0JEJywgJ0JFJywgJ0JGJyxcbiAgJ0MwJywgJ0MxJywgJ0MyJywgJ0MzJywgJ0M0JywgJ0M1JywgJ0M2JywgJ0M3JywgJ0M4JywgJ0M5JywgJ0NBJywgJ0NCJywgJ0NDJywgJ0NEJywgJ0NFJywgJ0NGJyxcbiAgJ0QwJywgJ0QxJywgJ0QyJywgJ0QzJywgJ0Q0JywgJ0Q1JywgJ0Q2JywgJ0Q3JywgJ0Q4JywgJ0Q5JywgJ0RBJywgJ0RCJywgJ0RDJywgJ0REJywgJ0RFJywgJ0RGJyxcbiAgJ0UwJywgJ0UxJywgJ0UyJywgJ0UzJywgJ0U0JywgJ0U1JywgJ0U2JywgJ0U3JywgJ0U4JywgJ0U5JywgJ0VBJywgJ0VCJywgJ0VDJywgJ0VEJywgJ0VFJywgJ0VGJyxcbiAgJ0YwJywgJ0YxJywgJ0YyJywgJ0YzJywgJ0Y0JywgJ0Y1JywgJ0Y2JywgJ0Y3JywgJ0Y4JywgJ0Y5JywgJ0ZBJywgJ0ZCJywgJ0ZDJywgJ0ZEJywgJ0ZFJywgJ0ZGJ1xuXTtcblxuY29uc3QgTE9XRVJfQ0FTRV9NQVAgPSBbXG4gICcwMCcsICcwMScsICcwMicsICcwMycsICcwNCcsICcwNScsICcwNicsICcwNycsICcwOCcsICcwOScsICcwYScsICcwYicsICcwYycsICcwZCcsICcwZScsICcwZicsXG4gICcxMCcsICcxMScsICcxMicsICcxMycsICcxNCcsICcxNScsICcxNicsICcxNycsICcxOCcsICcxOScsICcxYScsICcxYicsICcxYycsICcxZCcsICcxZScsICcxZicsXG4gICcyMCcsICcyMScsICcyMicsICcyMycsICcyNCcsICcyNScsICcyNicsICcyNycsICcyOCcsICcyOScsICcyYScsICcyYicsICcyYycsICcyZCcsICcyZScsICcyZicsXG4gICczMCcsICczMScsICczMicsICczMycsICczNCcsICczNScsICczNicsICczNycsICczOCcsICczOScsICczYScsICczYicsICczYycsICczZCcsICczZScsICczZicsXG4gICc0MCcsICc0MScsICc0MicsICc0MycsICc0NCcsICc0NScsICc0NicsICc0NycsICc0OCcsICc0OScsICc0YScsICc0YicsICc0YycsICc0ZCcsICc0ZScsICc0ZicsXG4gICc1MCcsICc1MScsICc1MicsICc1MycsICc1NCcsICc1NScsICc1NicsICc1NycsICc1OCcsICc1OScsICc1YScsICc1YicsICc1YycsICc1ZCcsICc1ZScsICc1ZicsXG4gICc2MCcsICc2MScsICc2MicsICc2MycsICc2NCcsICc2NScsICc2NicsICc2NycsICc2OCcsICc2OScsICc2YScsICc2YicsICc2YycsICc2ZCcsICc2ZScsICc2ZicsXG4gICc3MCcsICc3MScsICc3MicsICc3MycsICc3NCcsICc3NScsICc3NicsICc3NycsICc3OCcsICc3OScsICc3YScsICc3YicsICc3YycsICc3ZCcsICc3ZScsICc3ZicsXG4gICc4MCcsICc4MScsICc4MicsICc4MycsICc4NCcsICc4NScsICc4NicsICc4NycsICc4OCcsICc4OScsICc4YScsICc4YicsICc4YycsICc4ZCcsICc4ZScsICc4ZicsXG4gICc5MCcsICc5MScsICc5MicsICc5MycsICc5NCcsICc5NScsICc5NicsICc5NycsICc5OCcsICc5OScsICc5YScsICc5YicsICc5YycsICc5ZCcsICc5ZScsICc5ZicsXG4gICdhMCcsICdhMScsICdhMicsICdhMycsICdhNCcsICdhNScsICdhNicsICdhNycsICdhOCcsICdhOScsICdhYScsICdhYicsICdhYycsICdhZCcsICdhZScsICdhZicsXG4gICdiMCcsICdiMScsICdiMicsICdiMycsICdiNCcsICdiNScsICdiNicsICdiNycsICdiOCcsICdiOScsICdiYScsICdiYicsICdiYycsICdiZCcsICdiZScsICdiZicsXG4gICdjMCcsICdjMScsICdjMicsICdjMycsICdjNCcsICdjNScsICdjNicsICdjNycsICdjOCcsICdjOScsICdjYScsICdjYicsICdjYycsICdjZCcsICdjZScsICdjZicsXG4gICdkMCcsICdkMScsICdkMicsICdkMycsICdkNCcsICdkNScsICdkNicsICdkNycsICdkOCcsICdkOScsICdkYScsICdkYicsICdkYycsICdkZCcsICdkZScsICdkZicsXG4gICdlMCcsICdlMScsICdlMicsICdlMycsICdlNCcsICdlNScsICdlNicsICdlNycsICdlOCcsICdlOScsICdlYScsICdlYicsICdlYycsICdlZCcsICdlZScsICdlZicsXG4gICdmMCcsICdmMScsICdmMicsICdmMycsICdmNCcsICdmNScsICdmNicsICdmNycsICdmOCcsICdmOScsICdmYScsICdmYicsICdmYycsICdmZCcsICdmZScsICdmZidcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJUb1VwcGVyQ2FzZUd1aWQoYnVmZmVyOiBCdWZmZXIpIHtcbiAgcmV0dXJuIChcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbM11dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMl1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMV1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMF1dICtcbiAgICAnLScgK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlcls1XV0gK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlcls0XV0gK1xuICAgICctJyArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzddXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzZdXSArXG4gICAgJy0nICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbOF1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbOV1dICtcbiAgICAnLScgK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlclsxMF1dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMTFdXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzEyXV0gK1xuICAgIFVQUEVSX0NBU0VfTUFQW2J1ZmZlclsxM11dICtcbiAgICBVUFBFUl9DQVNFX01BUFtidWZmZXJbMTRdXSArXG4gICAgVVBQRVJfQ0FTRV9NQVBbYnVmZmVyWzE1XV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclRvTG93ZXJDYXNlR3VpZChidWZmZXI6IEJ1ZmZlcikge1xuICByZXR1cm4gKFxuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclszXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsyXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclswXV0gK1xuICAgICctJyArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzVdXSArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzRdXSArXG4gICAgJy0nICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbN11dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbNl1dICtcbiAgICAnLScgK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlcls4XV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlcls5XV0gK1xuICAgICctJyArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzEwXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxMV1dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbMTJdXSArXG4gICAgTE9XRVJfQ0FTRV9NQVBbYnVmZmVyWzEzXV0gK1xuICAgIExPV0VSX0NBU0VfTUFQW2J1ZmZlclsxNF1dICtcbiAgICBMT1dFUl9DQVNFX01BUFtidWZmZXJbMTVdXVxuICApO1xufVxuXG5jb25zdCBDSEFSQ09ERU1BUDogeyBba2V5OiBudW1iZXJdOiB7IFtrZXk6IG51bWJlcl06IG51bWJlciB9IH0gPSB7fTtcblxuY29uc3QgaGV4RGlnaXRzID0gW1xuICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsXG4gICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsXG4gICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRidcbl0ubWFwKChkKSA9PiBkLmNoYXJDb2RlQXQoMCkpO1xuXG5mb3IgKGxldCBpID0gMDsgaSA8IGhleERpZ2l0cy5sZW5ndGg7IGkrKykge1xuICBjb25zdCBtYXA6IHsgW2tleTogbnVtYmVyXTogbnVtYmVyIH0gPSBDSEFSQ09ERU1BUFtoZXhEaWdpdHNbaV1dID0ge307XG4gIGZvciAobGV0IGogPSAwOyBqIDwgaGV4RGlnaXRzLmxlbmd0aDsgaisrKSB7XG4gICAgY29uc3QgaGV4ID0gU3RyaW5nLmZyb21DaGFyQ29kZShoZXhEaWdpdHNbaV0sIGhleERpZ2l0c1tqXSk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUludChoZXgsIDE2KTtcbiAgICBtYXBbaGV4RGlnaXRzW2pdXSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBndWlkVG9BcnJheShndWlkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFtcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoNildW2d1aWQuY2hhckNvZGVBdCg3KV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDQpXVtndWlkLmNoYXJDb2RlQXQoNSldLFxuICAgIENIQVJDT0RFTUFQW2d1aWQuY2hhckNvZGVBdCgyKV1bZ3VpZC5jaGFyQ29kZUF0KDMpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMCldW2d1aWQuY2hhckNvZGVBdCgxKV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDExKV1bZ3VpZC5jaGFyQ29kZUF0KDEyKV0sXG4gICAgQ0hBUkNPREVNQVBbZ3VpZC5jaGFyQ29kZUF0KDkpXVtndWlkLmNoYXJDb2RlQXQoMTApXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTYpXVtndWlkLmNoYXJDb2RlQXQoMTcpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTQpXVtndWlkLmNoYXJDb2RlQXQoMTUpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMTkpXVtndWlkLmNoYXJDb2RlQXQoMjApXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjEpXVtndWlkLmNoYXJDb2RlQXQoMjIpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjQpXVtndWlkLmNoYXJDb2RlQXQoMjUpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjYpXVtndWlkLmNoYXJDb2RlQXQoMjcpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMjgpXVtndWlkLmNoYXJDb2RlQXQoMjkpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzApXVtndWlkLmNoYXJDb2RlQXQoMzEpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzIpXVtndWlkLmNoYXJDb2RlQXQoMzMpXSxcbiAgICBDSEFSQ09ERU1BUFtndWlkLmNoYXJDb2RlQXQoMzQpXVtndWlkLmNoYXJDb2RlQXQoMzUpXVxuICBdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU1BLGNBQWMsR0FBRyxDQUNyQixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQy9GO0FBRUQsTUFBTUMsY0FBYyxHQUFHLENBQ3JCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFDOUYsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM5RixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQzlGLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FDL0Y7QUFFTSxTQUFTQyxxQkFBcUJBLENBQUNDLE1BQWMsRUFBRTtFQUNwRCxPQUNFSCxj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QUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25ESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3JESixXQUFXLENBQUNjLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNVLElBQUksQ0FBQ1YsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3REO0FBQ0gifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _guidParser = require(\"../guid-parser\");\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x10]);\nconst UniqueIdentifier = {\n  id: 0x24,\n  type: 'GUIDN',\n  name: 'UniqueIdentifier',\n  declaration: function () {\n    return 'uniqueidentifier';\n  },\n  resolveLength: function () {\n    return 16;\n  },\n  generateTypeInfo() {\n    return Buffer.from([this.id, 0x10]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  generateParameterData: function* (parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield Buffer.from((0, _guidParser.guidToArray)(parameter.value));\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {\n      throw new TypeError('Invalid GUID.');\n    }\n    return value;\n  }\n};\nvar _default = UniqueIdentifier;\nexports.default = _default;\nmodule.exports = UniqueIdentifier;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3VpZFBhcnNlciIsInJlcXVpcmUiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsIlVuaXF1ZUlkZW50aWZpZXIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwicGFyYW1ldGVyIiwib3B0aW9ucyIsInZhbHVlIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiZ3VpZFRvQXJyYXkiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsInRlc3QiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdW5pcXVlaWRlbnRpZmllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCB7IGd1aWRUb0FycmF5IH0gZnJvbSAnLi4vZ3VpZC1wYXJzZXInO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDEwXSk7XG5cbmNvbnN0IFVuaXF1ZUlkZW50aWZpZXI6IERhdGFUeXBlID0ge1xuICBpZDogMHgyNCxcbiAgdHlwZTogJ0dVSUROJyxcbiAgbmFtZTogJ1VuaXF1ZUlkZW50aWZpZXInLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ3VuaXF1ZWlkZW50aWZpZXInO1xuICB9LFxuXG4gIHJlc29sdmVMZW5ndGg6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAxNjtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZCwgMHgxMF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGE6IGZ1bmN0aW9uKihwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBCdWZmZXIuZnJvbShndWlkVG9BcnJheShwYXJhbWV0ZXIudmFsdWUpKTtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIGlmICghL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgR1VJRC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFVuaXF1ZUlkZW50aWZpZXI7XG5tb2R1bGUuZXhwb3J0cyA9IFVuaXF1ZUlkZW50aWZpZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUUsZ0JBQTBCLEdBQUc7RUFDakNDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRSxrQkFBa0I7RUFFeEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxrQkFBa0I7RUFDM0IsQ0FBQztFQUVEQyxhQUFhLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3hCLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsT0FBT1QsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUNHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyQyxDQUFDO0VBRURNLHVCQUF1QkEsQ0FBQ0MsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDMUMsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9kLFdBQVc7SUFDcEI7SUFFQSxPQUFPRyxXQUFXO0VBQ3BCLENBQUM7RUFFRFkscUJBQXFCLEVBQUUsVUFBQUEsQ0FBVUgsU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDbkQsSUFBSUQsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCO0lBQ0Y7SUFFQSxNQUFNYixNQUFNLENBQUNDLElBQUksQ0FBQyxJQUFBYyx1QkFBVyxFQUFDSixTQUFTLENBQUNFLEtBQUssQ0FBQyxDQUFDO0VBQ2pELENBQUM7RUFFREcsUUFBUSxFQUFFLFNBQUFBLENBQVNILEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixNQUFNLElBQUlJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QztJQUVBLElBQUksQ0FBQyxpRUFBaUUsQ0FBQ0MsSUFBSSxDQUFDTCxLQUFLLENBQUMsRUFBRTtNQUNsRixNQUFNLElBQUlJLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDdEM7SUFFQSxPQUFPSixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQU0sUUFBQSxHQUVhaEIsZ0JBQWdCO0FBQUFpQixPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUMvQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdqQixnQkFBZ0IifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]);\nconst NText = {\n  id: 0x63,\n  type: 'NTEXT',\n  name: 'NText',\n  hasTableName: true,\n  declaration: function () {\n    return 'ntext';\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    if (value != null) {\n      return value.length;\n    } else {\n      return -1;\n    }\n  },\n  generateTypeInfo(parameter, _options) {\n    const buffer = Buffer.alloc(10);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeInt32LE(parameter.length, 1);\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 5, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const buffer = Buffer.alloc(4);\n    buffer.writeInt32LE(Buffer.byteLength(parameter.value, 'ucs2'), 0);\n    return buffer;\n  },\n  generateParameterData: function* (parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield Buffer.from(parameter.value.toString(), 'ucs2');\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    return value;\n  }\n};\nvar _default = NText;\nexports.default = _default;\nmodule.exports = NText;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOVGV4dCIsImlkIiwidHlwZSIsIm5hbWUiLCJoYXNUYWJsZU5hbWUiLCJkZWNsYXJhdGlvbiIsInJlc29sdmVMZW5ndGgiLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsImdlbmVyYXRlVHlwZUluZm8iLCJfb3B0aW9ucyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlSW50MzJMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImJ5dGVMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ0b1N0cmluZyIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL250ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IE5UZXh0OiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NjMsXG4gIHR5cGU6ICdOVEVYVCcsXG4gIG5hbWU6ICdOVGV4dCcsXG5cbiAgaGFzVGFibGVOYW1lOiB0cnVlLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ250ZXh0JztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIsIF9vcHRpb25zKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEwKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVJbnQzMkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDUsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGJ1ZmZlci53cml0ZUludDMyTEUoQnVmZmVyLmJ5dGVMZW5ndGgocGFyYW1ldGVyLnZhbHVlLCAndWNzMicpLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YTogZnVuY3Rpb24qKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHBhcmFtZXRlci52YWx1ZS50b1N0cmluZygpLCAndWNzMicpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOVGV4dDtcbm1vZHVsZS5leHBvcnRzID0gTlRleHQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUV6RCxNQUFNQyxLQUFlLEdBQUc7RUFDdEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRSxPQUFPO0VBRWJDLFlBQVksRUFBRSxJQUFJO0VBRWxCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBQSxFQUFXO0lBQ3RCLE9BQU8sT0FBTztFQUNoQixDQUFDO0VBRURDLGFBQWEsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDakMsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQVksQ0FBQyxDQUFDOztJQUV0QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTTtJQUNyQixDQUFDLE1BQU07TUFDTCxPQUFPLENBQUMsQ0FBQztJQUNYO0VBQ0YsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUNILFNBQVMsRUFBRUksUUFBUSxFQUFFO0lBQ3BDLE1BQU1DLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQy9CRCxNQUFNLENBQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUNiLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0JXLE1BQU0sQ0FBQ0csWUFBWSxDQUFDUixTQUFTLENBQUNFLE1BQU0sRUFBRyxDQUFDLENBQUM7SUFFekMsSUFBSUYsU0FBUyxDQUFDUyxTQUFTLEVBQUU7TUFDdkJULFNBQVMsQ0FBQ1MsU0FBUyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUNOLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RDtJQUVBLE9BQU9BLE1BQU07RUFDZixDQUFDO0VBRURPLHVCQUF1QkEsQ0FBQ1osU0FBUyxFQUFFYSxPQUFPLEVBQUU7SUFDMUMsSUFBSWIsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9YLFdBQVc7SUFDcEI7SUFFQSxNQUFNZSxNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QkQsTUFBTSxDQUFDRyxZQUFZLENBQUNqQixNQUFNLENBQUN1QixVQUFVLENBQUNkLFNBQVMsQ0FBQ0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxPQUFPSSxNQUFNO0VBQ2YsQ0FBQztFQUVEVSxxQkFBcUIsRUFBRSxVQUFBQSxDQUFVZixTQUFTLEVBQUVhLE9BQU8sRUFBRTtJQUNuRCxJQUFJYixTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1WLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDUSxTQUFTLENBQUNDLEtBQUssQ0FBQ2UsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7RUFDdkQsQ0FBQztFQUVEQyxRQUFRLEVBQUUsU0FBQUEsQ0FBU2hCLEtBQUssRUFBaUI7SUFDdkMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixNQUFNLElBQUlpQixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxPQUFPakIsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFrQixRQUFBLEdBRWExQixLQUFLO0FBQUEyQixPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNwQkcsTUFBTSxDQUFDRixPQUFPLEdBQUczQixLQUFLIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\nconst VarBinary = {\n  id: 0xA5,\n  type: 'BIGVARBIN',\n  name: 'VarBinary',\n  maximumLength: 8000,\n  declaration: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (value != null) {\n      length = value.length || 1;\n    } else if (value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    if (length <= this.maximumLength) {\n      return 'varbinary(' + length + ')';\n    } else {\n      return 'varbinary(max)';\n    }\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n    if (parameter.length != null) {\n      return parameter.length;\n    } else if (value != null) {\n      return value.length;\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo: function (parameter) {\n    const buffer = Buffer.alloc(3);\n    buffer.writeUInt8(this.id, 0);\n    if (parameter.length <= this.maximumLength) {\n      buffer.writeUInt16LE(parameter.length, 1);\n    } else {\n      buffer.writeUInt16LE(MAX, 1);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      if (parameter.length <= this.maximumLength) {\n        return NULL_LENGTH;\n      } else {\n        return MAX_NULL_LENGTH;\n      }\n    }\n    let value = parameter.value;\n    if (!Buffer.isBuffer(value)) {\n      value = value.toString();\n    }\n    const length = Buffer.byteLength(value, 'ucs2');\n    if (parameter.length <= this.maximumLength) {\n      const buffer = Buffer.alloc(2);\n      buffer.writeUInt16LE(length, 0);\n      return buffer;\n    } else {\n      // writePLPBody\n      return UNKNOWN_PLP_LEN;\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    let value = parameter.value;\n    if (parameter.length <= this.maximumLength) {\n      if (Buffer.isBuffer(value)) {\n        yield value;\n      } else {\n        yield Buffer.from(value.toString(), 'ucs2');\n      }\n    } else {\n      // writePLPBody\n      if (!Buffer.isBuffer(value)) {\n        value = value.toString();\n      }\n      const length = Buffer.byteLength(value, 'ucs2');\n      if (length > 0) {\n        const buffer = Buffer.alloc(4);\n        buffer.writeUInt32LE(length, 0);\n        yield buffer;\n        if (Buffer.isBuffer(value)) {\n          yield value;\n        } else {\n          yield Buffer.from(value, 'ucs2');\n        }\n      }\n      yield PLP_TERMINATOR;\n    }\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!Buffer.isBuffer(value)) {\n      throw new TypeError('Invalid buffer.');\n    }\n    return value;\n  }\n};\nvar _default = VarBinary;\nexports.default = _default;\nmodule.exports = VarBinary;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIlZhckJpbmFyeSIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImlzQnVmZmVyIiwidG9TdHJpbmciLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwid3JpdGVVSW50MzJMRSIsInZhbGlkYXRlIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmJpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBQTFBfVEVSTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcbmNvbnN0IE1BWF9OVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IFZhckJpbmFyeTogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhBNSxcbiAgdHlwZTogJ0JJR1ZBUkJJTicsXG4gIG5hbWU6ICdWYXJCaW5hcnknLFxuICBtYXhpbXVtTGVuZ3RoOiA4MDAwLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggfHwgMTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsICYmICFwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA8PSB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIHJldHVybiAndmFyYmluYXJ5KCcgKyBsZW5ndGggKyAnKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAndmFyYmluYXJ5KG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbzogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50MTZMRShNQVgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNQVhfTlVMTF9MRU5HVEg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLCAndWNzMicpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUobGVuZ3RoLCAwKTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHsgLy8gd3JpdGVQTFBCb2R5XG4gICAgICByZXR1cm4gVU5LTk9XTl9QTFBfTEVOO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLnRvU3RyaW5nKCksICd1Y3MyJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHsgLy8gd3JpdGVQTFBCb2R5XG4gICAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSwgJ3VjczInKTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRShsZW5ndGgsIDApO1xuICAgICAgICB5aWVsZCBidWZmZXI7XG5cbiAgICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZSwgJ3VjczInKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB5aWVsZCBQTFBfVEVSTUlOQVRPUjtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgYnVmZmVyLicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZhckJpbmFyeTtcbm1vZHVsZS5leHBvcnRzID0gVmFyQmluYXJ5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDekIsTUFBTUMsZUFBZSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRixNQUFNQyxjQUFjLEdBQUdGLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFNUQsTUFBTUUsV0FBVyxHQUFHSCxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxNQUFNRyxlQUFlLEdBQUdKLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXJGLE1BQU1JLFNBQStDLEdBQUc7RUFDdERDLEVB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _iconvLite = _interopRequireDefault(require(\"iconv-lite\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\nconst VarChar = {\n  id: 0xA7,\n  type: 'BIGVARCHR',\n  name: 'VarChar',\n  maximumLength: 8000,\n  declaration: function (parameter) {\n    const value = parameter.value;\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (value != null) {\n      length = value.length || 1;\n    } else if (value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    if (length <= this.maximumLength) {\n      return 'varchar(' + length + ')';\n    } else {\n      return 'varchar(max)';\n    }\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value;\n    if (parameter.length != null) {\n      return parameter.length;\n    } else if (value != null) {\n      return value.length || 1;\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo(parameter) {\n    const buffer = Buffer.alloc(8);\n    buffer.writeUInt8(this.id, 0);\n    if (parameter.length <= this.maximumLength) {\n      buffer.writeUInt16LE(parameter.length, 1);\n    } else {\n      buffer.writeUInt16LE(MAX, 1);\n    }\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    const value = parameter.value;\n    if (value == null) {\n      if (parameter.length <= this.maximumLength) {\n        return NULL_LENGTH;\n      } else {\n        return MAX_NULL_LENGTH;\n      }\n    }\n    if (parameter.length <= this.maximumLength) {\n      const buffer = Buffer.alloc(2);\n      buffer.writeUInt16LE(value.length, 0);\n      return buffer;\n    } else {\n      return UNKNOWN_PLP_LEN;\n    }\n  },\n  *generateParameterData(parameter, options) {\n    const value = parameter.value;\n    if (value == null) {\n      return;\n    }\n    if (parameter.length <= this.maximumLength) {\n      yield value;\n    } else {\n      if (value.length > 0) {\n        const buffer = Buffer.alloc(4);\n        buffer.writeUInt32LE(value.length, 0);\n        yield buffer;\n        yield value;\n      }\n      yield PLP_TERMINATOR;\n    }\n  },\n  validate: function (value, collation) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    if (!collation) {\n      throw new Error('No collation was set by the server for the current connection.');\n    }\n    if (!collation.codepage) {\n      throw new Error('The collation set by the server has no associated encoding.');\n    }\n    return _iconvLite.default.encode(value, collation.codepage);\n  }\n};\nvar _default = VarChar;\nexports.default = _default;\nmodule.exports = VarChar;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk1BWCIsIlVOS05PV05fUExQX0xFTiIsIkJ1ZmZlciIsImZyb20iLCJQTFBfVEVSTUlOQVRPUiIsIk5VTExfTEVOR1RIIiwiTUFYX05VTExfTEVOR1RIIiwiVmFyQ2hhciIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsIm91dHB1dCIsInJlc29sdmVMZW5ndGgiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsIndyaXRlVUludDMyTEUiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3ZhcmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuXG5pbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFVOS05PV05fUExQX0xFTiA9IEJ1ZmZlci5mcm9tKFsweGZlLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmXSk7XG5jb25zdCBQTFBfVEVSTUlOQVRPUiA9IEJ1ZmZlci5mcm9tKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcbmNvbnN0IE1BWF9OVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGXSk7XG5cbmNvbnN0IFZhckNoYXI6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QTcsXG4gIHR5cGU6ICdCSUdWQVJDSFInLFxuICBuYW1lOiAnVmFyQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDgwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ3ZhcmNoYXIoJyArIGxlbmd0aCArICcpJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd2YXJjaGFyKG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50MTZMRShNQVgsIDEpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDMsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNQVhfTlVMTF9MRU5HVEg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBVTktOT1dOX1BMUF9MRU47XG4gICAgfVxuICB9LFxuXG4gICpnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgeWllbGQgdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodmFsdWUubGVuZ3RoLCAwKTtcbiAgICAgICAgeWllbGQgYnVmZmVyO1xuXG4gICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICB5aWVsZCBQTFBfVEVSTUlOQVRPUjtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBjb2xsYXRpb24pOiBCdWZmZXIgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGNvbGxhdGlvbiB3YXMgc2V0IGJ5IHRoZSBzZXJ2ZXIgZm9yIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb2xsYXRpb24uY29kZXBhZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNvbGxhdGlvbiBzZXQgYnkgdGhlIHNlcnZlciBoYXMgbm8gYXNzb2NpYXRlZCBlbmNvZGluZy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbnYuZW5jb2RlKHZhbHVlLCBjb2xsYXRpb24uY29kZXBhZ2UpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBWYXJDaGFyO1xubW9kdWxlLmV4cG9ydHMgPSBWYXJDaGFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBK0IsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFJL0IsTUFBTUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3pCLE1BQU1DLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckYsTUFBTUMsY0FBYyxHQUFHRixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTVELE1BQU1FLFdBQVcsR0FBR0gsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsTUFBTUcsZUFBZSxHQUFHSixNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVyRixNQUFNSSxPQUE2QyxHQUFHO0VBQ3BEQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsYUFBYSxFQUFFLElBQUk7RUFFbkJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlDLE1BQU07SUFDVixJQUFJRixTQUFTLENBQUNFLE1BQU0sRUFBRTtNQUNwQkEsTUFBTSxHQUFHRixTQUFTLENBQUNFLE1BQU07SUFDM0IsQ0FBQyxNQUFNLElBQUlELEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDeEJDLE1BQU0sR0FBR0QsS0FBSyxDQUFDQyxNQUFNLElBQUksQ0FBQztJQUM1QixDQUFDLE1BQU0sSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDRCxTQUFTLENBQUNHLE1BQU0sRUFBRTtNQUM5Q0QsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDLE1BQU07TUFDTEEsTUFBTSxHQUFHLElBQUksQ0FBQ0osYUFBYTtJQUM3QjtJQUVBLElBQUlJLE1BQU0sSUFBSSxJQUFJLENBQUNKLGFBQWEsRUFBRTtNQUNoQyxPQUFPLFVBQVUsR0FBR0ksTUFBTSxHQUFHLEdBQUc7SUFDbEMsQ0FBQyxNQUFNO01BQ0wsT0FBTyxjQUFjO0lBQ3ZCO0VBQ0YsQ0FBQztFQUVERSxhQUFhLEVBQUUsU0FBQUEsQ0FBU0osU0FBUyxFQUFFO0lBQ2pDLE1BQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDQyxLQUFzQjtJQUU5QyxJQUFJRCxTQUFTLENBQUNFLE1BQU0sSUFBSSxJQUFJLEVBQUU7TUFDNUIsT0FBT0YsU0FBUyxDQUFDRSxNQUFNO0lBQ3pCLENBQUMsTUFBTSxJQUFJRCxLQUFLLElBQUksSUFBSSxFQUFFO01BQ3hCLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTSxJQUFJLENBQUM7SUFDMUIsQ0FBQyxNQUFNO01BQ0wsT0FBTyxJQUFJLENBQUNKLGFBQWE7SUFDM0I7RUFDRixDQUFDO0VBRURPLGdCQUFnQkEsQ0FBQ0wsU0FBUyxFQUFFO0lBQzFCLE1BQU1NLE1BQU0sR0FBR2pCLE1BQU0sQ0FBQ2tCLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUJELE1BQU0sQ0FBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQ2IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU3QixJQUFJSyxTQUFTLENBQUNFLE1BQU0sSUFBSyxJQUFJLENBQUNKLGFBQWEsRUFBRTtNQUMzQ1EsTUFBTSxDQUFDRyxhQUFhLENBQUNULFNBQVMsQ0FBQ0UsTUFBTSxFQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDLE1BQU07TUFDTEksTUFBTSxDQUFDRyxhQUFhLENBQUN0QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzlCO0lBRUEsSUFBSWEsU0FBUyxDQUFDVSxTQUFTLEVBQUU7TUFDdkJWLFNBQVMsQ0FBQ1UsU0FBUyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUNOLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RDtJQUVBLE9BQU9BLE1BQU07RUFDZixDQUFDO0VBRURPLHVCQUF1QkEsQ0FBQ2IsU0FBUyxFQUFFYyxPQUFPLEVBQUU7SUFDMUMsTUFBTWIsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsSUFBSUQsU0FBUyxDQUFDRSxNQUFNLElBQUssSUFBSSxDQUFDSixhQUFhLEVBQUU7UUFDM0MsT0FBT04sV0FBVztNQUNwQixDQUFDLE1BQU07UUFDTCxPQUFPQyxlQUFlO01BQ3hCO0lBQ0Y7SUFFQSxJQUFJTyxTQUFTLENBQUNFLE1BQU0sSUFBSyxJQUFJLENBQUNKLGFBQWEsRUFBRTtNQUMzQyxNQUFNUSxNQUFNLEdBQUdqQixNQUFNLENBQUNrQixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQzlCRCxNQUFNLENBQUNHLGFBQWEsQ0FBQ1IsS0FBSyxDQUFDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO01BQ3JDLE9BQU9JLE1BQU07SUFDZixDQUFDLE1BQU07TUFDTCxPQUFPbEIsZUFBZTtJQUN4QjtFQUNGLENBQUM7RUFFRCxDQUFDMkIscUJBQXFCQSxDQUFDZixTQUFTLEVBQUVjLE9BQU8sRUFBRTtJQUN6QyxNQUFNYixLQUFLLEdBQUdELFNBQVMsQ0FBQ0MsS0FBc0I7SUFFOUMsSUFBSUEsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQjtJQUNGO0lBRUEsSUFBSUQsU0FBUyxDQUFDRSxNQUFNLElBQUssSUFBSSxDQUFDSixhQUFhLEVBQUU7TUFDM0MsTUFBTUcsS0FBSztJQUNiLENBQUMsTUFBTTtNQUNMLElBQUlBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNwQixNQUFNSSxNQUFNLEdBQUdqQixNQUFNLENBQUNrQixLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlCRCxNQUFNLENBQUNVLGFBQWEsQ0FBQ2YsS0FBSyxDQUFDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE1BQU1JLE1BQU07UUFFWixNQUFNTCxLQUFLO01BQ2I7TUFFQSxNQUFNVixjQUFjO0lBQ3RCO0VBQ0YsQ0FBQztFQUVEMEIsUUFBUSxFQUFFLFNBQUFBLENBQVNoQixLQUFLLEVBQUVTLFNBQVMsRUFBaUI7SUFDbEQsSUFBSVQsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUM3QixNQUFNLElBQUlpQixTQUFTLENBQUMsaUJBQWlCLENBQUM7SUFDeEM7SUFFQSxJQUFJLENBQUNSLFNBQVMsRUFBRTtNQUNkLE1BQU0sSUFBSVMsS0FBSyxDQUFDLGdFQUFnRSxDQUFDO0lBQ25GO0lBRUEsSUFBSSxDQUFDVCxTQUFTLENBQUNVLFFBQVEsRUFBRTtNQUN2QixNQUFNLElBQUlELEtBQUssQ0FBQyw2REFBNkQsQ0FBQztJQUNoRjtJQUVBLE9BQU9FLGtCQUFLLENBQUNDLE1BQU0sQ0FBQ3JCLEtBQUssRUFBRVMsU0FBUyxDQUFDVSxRQUFRLENBQUM7RUFDaEQ7QUFDRixDQUFDO0FBQUMsSUFBQUcsUUFBQSxHQUVhN0IsT0FBTztBQUFBOEIsT0FBQSxDQUFBdEMsT0FBQSxHQUFBcUMsUUFBQTtBQUN0QkUsTUFBTSxDQUFDRCxPQUFPLEdBQUc5QixPQUFPIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst Binary = {\n  id: 0xAD,\n  type: 'BIGBinary',\n  name: 'Binary',\n  maximumLength: 8000,\n  declaration: function (parameter) {\n    const value = parameter.value;\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (value != null) {\n      length = value.length || 1;\n    } else if (value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    return 'binary(' + length + ')';\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value;\n    if (value != null) {\n      return value.length;\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo(parameter) {\n    const buffer = Buffer.alloc(3);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeUInt16LE(parameter.length, 1);\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const buffer = Buffer.alloc(2);\n    buffer.writeUInt16LE(parameter.length, 0);\n    return buffer;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield parameter.value.slice(0, parameter.length !== undefined ? Math.min(parameter.length, this.maximumLength) : this.maximumLength);\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!Buffer.isBuffer(value)) {\n      throw new TypeError('Invalid buffer.');\n    }\n    return value;\n  }\n};\nvar _default = Binary;\nexports.default = _default;\nmodule.exports = Binary;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJCaW5hcnkiLCJpZCIsInR5cGUiLCJuYW1lIiwibWF4aW11bUxlbmd0aCIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJzbGljZSIsInVuZGVmaW5lZCIsIk1hdGgiLCJtaW4iLCJ2YWxpZGF0ZSIsImlzQnVmZmVyIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2JpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBCaW5hcnk6IHsgbWF4aW11bUxlbmd0aDogbnVtYmVyIH0gJiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4QUQsXG4gIHR5cGU6ICdCSUdCaW5hcnknLFxuICBuYW1lOiAnQmluYXJ5JyxcbiAgbWF4aW11bUxlbmd0aDogODAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGggfHwgMTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsICYmICFwYXJhbWV0ZXIub3V0cHV0KSB7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuICdiaW5hcnkoJyArIGxlbmd0aCArICcpJztcbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShwYXJhbWV0ZXIubGVuZ3RoISwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBwYXJhbWV0ZXIudmFsdWUuc2xpY2UoMCwgcGFyYW1ldGVyLmxlbmd0aCAhPT0gdW5kZWZpbmVkID8gTWF0aC5taW4ocGFyYW1ldGVyLmxlbmd0aCwgdGhpcy5tYXhpbXVtTGVuZ3RoKSA6IHRoaXMubWF4aW11bUxlbmd0aCk7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBidWZmZXIuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCaW5hcnk7XG5tb2R1bGUuZXhwb3J0cyA9IEJpbmFyeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU3QyxNQUFNQyxNQUE0QyxHQUFHO0VBQ25EQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsYUFBYSxFQUFFLElBQUk7RUFFbkJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlDLE1BQU07SUFDVixJQUFJRixTQUFTLENBQUNFLE1BQU0sRUFBRTtNQUNwQkEsTUFBTSxHQUFHRixTQUFTLENBQUNFLE1BQU07SUFDM0IsQ0FBQyxNQUFNLElBQUlELEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDeEJDLE1BQU0sR0FBR0Qs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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _iconvLite = _interopRequireDefault(require(\"iconv-lite\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst Char = {\n  id: 0xAF,\n  type: 'BIGCHAR',\n  name: 'Char',\n  maximumLength: 8000,\n  declaration: function (parameter) {\n    const value = parameter.value;\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (value != null) {\n      length = value.length || 1;\n    } else if (value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    if (length < this.maximumLength) {\n      return 'char(' + length + ')';\n    } else {\n      return 'char(' + this.maximumLength + ')';\n    }\n  },\n  // ParameterData<any> is temporary solution. TODO: need to understand what type ParameterData<...> can be.\n  resolveLength: function (parameter) {\n    const value = parameter.value;\n    if (parameter.length != null) {\n      return parameter.length;\n    } else if (value != null) {\n      return value.length || 1;\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo(parameter) {\n    const buffer = Buffer.alloc(8);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeUInt16LE(parameter.length, 1);\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    const value = parameter.value;\n    if (value == null) {\n      return NULL_LENGTH;\n    }\n    const buffer = Buffer.alloc(2);\n    buffer.writeUInt16LE(value.length, 0);\n    return buffer;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    yield Buffer.from(parameter.value, 'ascii');\n  },\n  validate: function (value, collation) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    if (!collation) {\n      throw new Error('No collation was set by the server for the current connection.');\n    }\n    if (!collation.codepage) {\n      throw new Error('The collation set by the server has no associated encoding.');\n    }\n    return _iconvLite.default.encode(value, collation.codepage);\n  }\n};\nvar _default = Char;\nexports.default = _default;\nmodule.exports = Char;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaWNvbnZMaXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk5VTExfTEVOR1RIIiwiQnVmZmVyIiwiZnJvbSIsIkNoYXIiLCJpZCIsInR5cGUiLCJuYW1lIiwibWF4aW11bUxlbmd0aCIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwidmFsdWUiLCJsZW5ndGgiLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIlR5cGVFcnJvciIsIkVycm9yIiwiY29kZXBhZ2UiLCJpY29udiIsImVuY29kZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2NoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgQ2hhcjogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhBRixcbiAgdHlwZTogJ0JJR0NIQVInLFxuICBuYW1lOiAnQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDgwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIEJ1ZmZlciB8IG51bGw7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiAhcGFyYW1ldGVyLm91dHB1dCkge1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdGhpcy5tYXhpbXVtTGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPCB0aGlzLm1heGltdW1MZW5ndGgpIHtcbiAgICAgIHJldHVybiAnY2hhcignICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2NoYXIoJyArIHRoaXMubWF4aW11bUxlbmd0aCArICcpJztcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGFyYW1ldGVyRGF0YTxhbnk+IGlzIHRlbXBvcmFyeSBzb2x1dGlvbi4gVE9ETzogbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHlwZSBQYXJhbWV0ZXJEYXRhPC4uLj4gY2FuIGJlLlxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBCdWZmZXIgfCBudWxsO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHBhcmFtZXRlci5sZW5ndGghLCAxKTtcblxuICAgIGlmIChwYXJhbWV0ZXIuY29sbGF0aW9uKSB7XG4gICAgICBwYXJhbWV0ZXIuY29sbGF0aW9uLnRvQnVmZmVyKCkuY29weShidWZmZXIsIDMsIDAsIDUpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgQnVmZmVyIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKHZhbHVlLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB5aWVsZCBCdWZmZXIuZnJvbShwYXJhbWV0ZXIudmFsdWUsICdhc2NpaScpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSwgY29sbGF0aW9uKTogQnVmZmVyIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbGxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb2xsYXRpb24gd2FzIHNldCBieSB0aGUgc2VydmVyIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICghY29sbGF0aW9uLmNvZGVwYWdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBjb2xsYXRpb24gc2V0IGJ5IHRoZSBzZXJ2ZXIgaGFzIG5vIGFzc29jaWF0ZWQgZW5jb2RpbmcuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGljb252LmVuY29kZSh2YWx1ZSwgY29sbGF0aW9uLmNvZGVwYWdlKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hhcjtcbm1vZHVsZS5leHBvcnRzID0gQ2hhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRy9CLE1BQU1HLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFN0MsTUFBTUMsSUFBMEMsR0FBRztFQUNqREMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLE1BQU07RUFDWkMsYUFBYSxFQUFFLElBQUk7RUFFbkJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsTUFBTUMsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlDLE1BQU07SUFDVixJQUFJRixTQUFTLENBQUNFLE1BQU0sRUFBRTtNQUNwQkEsTUFBTSxHQUFHRixTQUFTLENBQUNFLE1BQU07SUFDM0IsQ0FBQyxNQUFNLElBQUlELEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDeEJDLE1BQU0sR0FBR0QsS0FBSyxDQUFDQyxNQUFNLElBQUksQ0FBQztJQUM1QixDQUFDLE1BQU0sSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDRCxTQUFTLENBQUNHLE1BQU0sRUFBRTtNQUM5Q0QsTUFBTSxHQUFHLENBQUM7SUFDWixDQUFDLE1BQU07TUFDTEEsTUFBTSxHQUFHLElBQUksQ0FBQ0osYUFBYTtJQUM3QjtJQUVBLElBQUlJLE1BQU0sR0FBRyxJQUFJLENBQUNKLGFBQWEsRUFBRTtNQUMvQixPQUFPLE9BQU8sR0FBR0ksTUFBTSxHQUFHLEdBQUc7SUFDL0IsQ0FBQyxNQUFNO01BQ0wsT0FBTyxPQUFPLEdBQUcsSUFBSSxDQUFDSixhQUFhLEdBQUcsR0FBRztJQUMzQztFQUNGLENBQUM7RUFFRDtFQUNBTSxhQUFhLEVBQUUsU0FBQUEsQ0FBU0osU0FBUyxFQUFFO0lBQ2pDLE1BQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDQyxLQUFzQjtJQUU5QyxJQUFJRCxTQUFTLENBQUNFLE1BQU0sSUFBSSxJQUFJLEVBQUU7TUFDNUIsT0FBT0YsU0FBUyxDQUFDRSxNQUFNO0lBQ3pCLENBQUMsTUFBTSxJQUFJRCxLQUFLLElBQUksSUFBSSxFQUFFO01BQ3hCLE9BQU9BLEtBQUssQ0FBQ0MsTUFBTSxJQUFJLENBQUM7SUFDMUIsQ0FBQyxNQUFNO01BQ0wsT0FBTyxJQUFJLENBQUNKLGFBQWE7SUFDM0I7RUFDRixDQUFDO0VBRURPLGdCQUFnQkEsQ0FBQ0wsU0FBUyxFQUFFO0lBQzFCLE1BQU1NLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUNiLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0JXLE1BQU0sQ0FBQ0csYUFBYSxDQUFDVCxTQUFTLENBQUNFLE1BQU0sRUFBRyxDQUFDLENBQUM7SUFFMUMsSUFBSUYsU0FBUyxDQUFDVSxTQUFTLEVBQUU7TUFDdkJWLFNBQVMsQ0FBQ1UsU0FBUyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUNOLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RDtJQUVBLE9BQU9BLE1BQU07RUFDZixDQUFDO0VBRURPLHVCQUF1QkEsQ0FBQ2IsU0FBUyxFQUFFYyxPQUFPLEVBQUU7SUFDMUMsTUFBTWIsS0FBSyxHQUFHRCxTQUFTLENBQUNDLEtBQXNCO0lBRTlDLElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBT1YsV0FBVztJQUNwQjtJQUVBLE1BQU1lLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCRCxNQUFNLENBQUNHLGFBQWEsQ0FBQ1IsS0FBSyxDQUFDQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLE9BQU9JLE1BQU07RUFDZixDQUFDO0VBRUQsQ0FBRVMscUJBQXFCQSxDQUFDZixTQUFTLEVBQUVjLE9BQU8sRUFBRTtJQUMxQyxJQUFJZCxTQUFTLENBQUNDLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDM0I7SUFDRjtJQUVBLE1BQU1ULE1BQU0sQ0FBQ0MsSUFBSSxDQUFDTyxTQUFTLENBQUNDLEtBQUssRUFBRSxPQUFPLENBQUM7RUFDN0MsQ0FBQztFQUVEZSxRQUFRLEVBQUUsU0FBQUEsQ0FBU2YsS0FBSyxFQUFFUyxTQUFTLEVBQWlCO0lBQ2xELElBQUlULEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakIsT0FBTyxJQUFJO0lBQ2I7SUFFQSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUU7TUFDN0IsTUFBTSxJQUFJZ0IsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hDO0lBRUEsSUFBSSxDQUFDUCxTQUFTLEVBQUU7TUFDZCxNQUFNLElBQUlRLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQztJQUNuRjtJQUVBLElBQUksQ0FBQ1IsU0FBUyxDQUFDUyxRQUFRLEVBQUU7TUFDdkIsTUFBTSxJQUFJRCxLQUFLLENBQUMsNkRBQTZELENBQUM7SUFDaEY7SUFFQSxPQUFPRSxrQkFBSyxDQUFDQyxNQUFNLENBQUNwQixLQUFLLEVBQUVTLFNBQVMsQ0FBQ1MsUUFBUSxDQUFDO0VBQ2hEO0FBQ0YsQ0FBQztBQUFDLElBQUFHLFFBQUEsR0FFYTVCLElBQUk7QUFBQTZCLE9BQUEsQ0FBQWpDLE9BQUEsR0FBQWdDLFFBQUE7QUFDbkJFLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHN0IsSUFBSSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst MAX = (1 << 16) - 1;\nconst UNKNOWN_PLP_LEN = Buffer.from([0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]);\nconst PLP_TERMINATOR = Buffer.from([0x00, 0x00, 0x00, 0x00]);\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst MAX_NULL_LENGTH = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);\nconst NVarChar = {\n  id: 0xE7,\n  type: 'NVARCHAR',\n  name: 'NVarChar',\n  maximumLength: 4000,\n  declaration: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (value != null) {\n      length = value.toString().length || 1;\n    } else if (value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    if (length <= this.maximumLength) {\n      return 'nvarchar(' + length + ')';\n    } else {\n      return 'nvarchar(max)';\n    }\n  },\n  resolveLength: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n    if (parameter.length != null) {\n      return parameter.length;\n    } else if (value != null) {\n      if (Buffer.isBuffer(value)) {\n        return value.length / 2 || 1;\n      } else {\n        return value.toString().length || 1;\n      }\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo(parameter) {\n    const buffer = Buffer.alloc(8);\n    buffer.writeUInt8(this.id, 0);\n    if (parameter.length <= this.maximumLength) {\n      buffer.writeUInt16LE(parameter.length * 2, 1);\n    } else {\n      buffer.writeUInt16LE(MAX, 1);\n    }\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      if (parameter.length <= this.maximumLength) {\n        return NULL_LENGTH;\n      } else {\n        return MAX_NULL_LENGTH;\n      }\n    }\n    let value = parameter.value;\n    if (parameter.length <= this.maximumLength) {\n      let length;\n      if (value instanceof Buffer) {\n        length = value.length;\n      } else {\n        value = value.toString();\n        length = Buffer.byteLength(value, 'ucs2');\n      }\n      const buffer = Buffer.alloc(2);\n      buffer.writeUInt16LE(length, 0);\n      return buffer;\n    } else {\n      return UNKNOWN_PLP_LEN;\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    let value = parameter.value;\n    if (parameter.length <= this.maximumLength) {\n      if (value instanceof Buffer) {\n        yield value;\n      } else {\n        value = value.toString();\n        yield Buffer.from(value, 'ucs2');\n      }\n    } else {\n      if (value instanceof Buffer) {\n        const length = value.length;\n        if (length > 0) {\n          const buffer = Buffer.alloc(4);\n          buffer.writeUInt32LE(length, 0);\n          yield buffer;\n          yield value;\n        }\n      } else {\n        value = value.toString();\n        const length = Buffer.byteLength(value, 'ucs2');\n        if (length > 0) {\n          const buffer = Buffer.alloc(4);\n          buffer.writeUInt32LE(length, 0);\n          yield buffer;\n          yield Buffer.from(value, 'ucs2');\n        }\n      }\n      yield PLP_TERMINATOR;\n    }\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    return value;\n  }\n};\nvar _default = NVarChar;\nexports.default = _default;\nmodule.exports = NVarChar;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVgiLCJVTktOT1dOX1BMUF9MRU4iLCJCdWZmZXIiLCJmcm9tIiwiUExQX1RFUk1JTkFUT1IiLCJOVUxMX0xFTkdUSCIsIk1BWF9OVUxMX0xFTkdUSCIsIk5WYXJDaGFyIiwiaWQiLCJ0eXBlIiwibmFtZSIsIm1heGltdW1MZW5ndGgiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwibGVuZ3RoIiwidG9TdHJpbmciLCJvdXRwdXQiLCJyZXNvbHZlTGVuZ3RoIiwiaXNCdWZmZXIiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiYnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MTZMRSIsImNvbGxhdGlvbiIsInRvQnVmZmVyIiwiY29weSIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsImJ5dGVMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ3cml0ZVVJbnQzMkxFIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbnZhcmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE1BWCA9ICgxIDw8IDE2KSAtIDE7XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSBCdWZmZXIuZnJvbShbMHhmZSwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZl0pO1xuY29uc3QgUExQX1RFUk1JTkFUT1IgPSBCdWZmZXIuZnJvbShbMHgwMCwgMHgwMCwgMHgwMCwgMHgwMF0pO1xuXG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweEZGLCAweEZGXSk7XG5jb25zdCBNQVhfTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRl0pO1xuXG5jb25zdCBOVmFyQ2hhcjogeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSAmIERhdGFUeXBlID0ge1xuICBpZDogMHhFNyxcbiAgdHlwZTogJ05WQVJDSEFSJyxcbiAgbmFtZTogJ05WYXJDaGFyJyxcbiAgbWF4aW11bUxlbmd0aDogNDAwMCxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGxldCBsZW5ndGg7XG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGgpIHtcbiAgICAgIGxlbmd0aCA9IHBhcmFtZXRlci5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZW5ndGggPSB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCB8fCAxO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwgJiYgIXBhcmFtZXRlci5vdXRwdXQpIHtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgcmV0dXJuICdudmFyY2hhcignICsgbGVuZ3RoICsgJyknO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ252YXJjaGFyKG1heCknO1xuICAgIH1cbiAgfSxcblxuICByZXNvbHZlTGVuZ3RoOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICh2YWx1ZS5sZW5ndGggLyAyKSB8fCAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQsIDApO1xuXG4gICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUocGFyYW1ldGVyLmxlbmd0aCEgKiAyLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDE2TEUoTUFYLCAxKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1ldGVyLmNvbGxhdGlvbikge1xuICAgICAgcGFyYW1ldGVyLmNvbGxhdGlvbi50b0J1ZmZlcigpLmNvcHkoYnVmZmVyLCAzLCAwLCA1KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgaWYgKHBhcmFtZXRlci5sZW5ndGghIDw9IHRoaXMubWF4aW11bUxlbmd0aCkge1xuICAgICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTUFYX05VTExfTEVOR1RIO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBsZXQgbGVuZ3RoO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgbGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsdWUsICd1Y3MyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVU5LTk9XTl9QTFBfTEVOO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG5cbiAgICBpZiAocGFyYW1ldGVyLmxlbmd0aCEgPD0gdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLCAndWNzMicpO1xuXG4gICAgICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgICAgICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGxlbmd0aCwgMCk7XG4gICAgICAgICAgeWllbGQgYnVmZmVyO1xuICAgICAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKHZhbHVlLCAndWNzMicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHlpZWxkIFBMUF9URVJNSU5BVE9SO1xuICAgIH1cbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWUpOiBudWxsIHwgc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyaW5nLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgTlZhckNoYXI7XG5tb2R1bGUuZXhwb3J0cyA9IE5WYXJDaGFyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst NChar = {\n  id: 0xEF,\n  type: 'NCHAR',\n  name: 'NChar',\n  maximumLength: 4000,\n  declaration: function (parameter) {\n    // const value = parameter.value as null | string | { toString(): string };\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    let length;\n    if (parameter.length) {\n      length = parameter.length;\n    } else if (parameter.value != null) {\n      length = value.toString().length || 1;\n    } else if (parameter.value === null && !parameter.output) {\n      length = 1;\n    } else {\n      length = this.maximumLength;\n    }\n    if (length < this.maximumLength) {\n      return 'nchar(' + length + ')';\n    } else {\n      return 'nchar(' + this.maximumLength + ')';\n    }\n  },\n  resolveLength: function (parameter) {\n    // const value = parameter.value as null | string | { toString(): string };\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    if (parameter.length != null) {\n      return parameter.length;\n    } else if (parameter.value != null) {\n      if (Buffer.isBuffer(parameter.value)) {\n        return parameter.value.length / 2 || 1;\n      } else {\n        return value.toString().length || 1;\n      }\n    } else {\n      return this.maximumLength;\n    }\n  },\n  generateTypeInfo: function (parameter) {\n    const buffer = Buffer.alloc(8);\n    buffer.writeUInt8(this.id, 0);\n    buffer.writeUInt16LE(parameter.length * 2, 1);\n    if (parameter.collation) {\n      parameter.collation.toBuffer().copy(buffer, 3, 0, 5);\n    }\n    return buffer;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const {\n      value\n    } = parameter;\n    if (value instanceof Buffer) {\n      const length = value.length;\n      const buffer = Buffer.alloc(2);\n      buffer.writeUInt16LE(length, 0);\n      return buffer;\n    } else {\n      const length = Buffer.byteLength(value.toString(), 'ucs2');\n      const buffer = Buffer.alloc(2);\n      buffer.writeUInt16LE(length, 0);\n      return buffer;\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value;\n    if (value instanceof Buffer) {\n      yield value;\n    } else {\n      yield Buffer.from(value, 'ucs2');\n    }\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'string') {\n      throw new TypeError('Invalid string.');\n    }\n    return value;\n  }\n};\nvar _default = NChar;\nexports.default = _default;\nmodule.exports = NChar;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJOQ2hhciIsImlkIiwidHlwZSIsIm5hbWUiLCJtYXhpbXVtTGVuZ3RoIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJ2YWx1ZSIsImxlbmd0aCIsInRvU3RyaW5nIiwib3V0cHV0IiwicmVzb2x2ZUxlbmd0aCIsImlzQnVmZmVyIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJjb2xsYXRpb24iLCJ0b0J1ZmZlciIsImNvcHkiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJieXRlTGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwidmFsaWRhdGUiLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvbmNoYXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgTkNoYXI6IERhdGFUeXBlICYgeyBtYXhpbXVtTGVuZ3RoOiBudW1iZXIgfSA9IHtcbiAgaWQ6IDB4RUYsXG4gIHR5cGU6ICdOQ0hBUicsXG4gIG5hbWU6ICdOQ2hhcicsXG4gIG1heGltdW1MZW5ndGg6IDQwMDAsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIC8vIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIG51bGwgfCBzdHJpbmcgfCB7IHRvU3RyaW5nKCk6IHN0cmluZyB9O1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoKSB7XG4gICAgICBsZW5ndGggPSBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIGxlbmd0aCA9IHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwgJiYgIXBhcmFtZXRlci5vdXRwdXQpIHtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRoaXMubWF4aW11bUxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoIDwgdGhpcy5tYXhpbXVtTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ25jaGFyKCcgKyBsZW5ndGggKyAnKSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnbmNoYXIoJyArIHRoaXMubWF4aW11bUxlbmd0aCArICcpJztcbiAgICB9XG4gIH0sXG5cbiAgcmVzb2x2ZUxlbmd0aDogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgLy8gY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgbnVsbCB8IHN0cmluZyB8IHsgdG9TdHJpbmcoKTogc3RyaW5nIH07XG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWUgYXMgYW55OyAvLyBUZW1wb3Jhcnkgc29sdXRpb24uIFJlbW92ZSAnYW55JyBsYXRlci5cblxuICAgIGlmIChwYXJhbWV0ZXIubGVuZ3RoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmIChCdWZmZXIuaXNCdWZmZXIocGFyYW1ldGVyLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gKHBhcmFtZXRlci52YWx1ZS5sZW5ndGggLyAyKSB8fCAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIHx8IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heGltdW1MZW5ndGg7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLmlkLCAwKTtcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShwYXJhbWV0ZXIubGVuZ3RoISAqIDIsIDEpO1xuXG4gICAgaWYgKHBhcmFtZXRlci5jb2xsYXRpb24pIHtcbiAgICAgIHBhcmFtZXRlci5jb2xsYXRpb24udG9CdWZmZXIoKS5jb3B5KGJ1ZmZlciwgMywgMCwgNSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHZhbHVlIH0gPSBwYXJhbWV0ZXI7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB2YWx1ZS5sZW5ndGg7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMik7XG5cbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG5cbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlLnRvU3RyaW5nKCksICd1Y3MyJyk7XG5cbiAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGxlbmd0aCwgMCk7XG4gICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIHlpZWxkIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB5aWVsZCBCdWZmZXIuZnJvbSh2YWx1ZSwgJ3VjczInKTtcbiAgICB9XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5DaGFyO1xubW9kdWxlLmV4cG9ydHMgPSBOQ2hhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU3QyxNQUFNQyxLQUEyQyxHQUFHO0VBQ2xEQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxhQUFhLEVBQUUsSUFBSTtFQUVuQkMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQjtJQUNBLE1BQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDQyxLQUFZ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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst XML = {\n  id: 0xF1,\n  type: 'XML',\n  name: 'Xml',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = XML;\nexports.default = _default;\nmodule.exports = XML;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJYTUwiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3htbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgWE1MOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjEsXG4gIHR5cGU6ICdYTUwnLFxuICBuYW1lOiAnWG1sJyxcblxuICBkZWNsYXJhdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyRGF0YSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFhNTDtcbm1vZHVsZS5leHBvcnRzID0gWE1MO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxHQUFhLEdBQUc7RUFDcEJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxLQUFLO0VBRVhDLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJRCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERSx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURHLHFCQUFxQkEsQ0FBQSxFQUFHO0lBQ3RCLE1BQU0sSUFBSUgsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREksUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsTUFBTSxJQUFJSixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEM7QUFDRixDQUFDO0FBQUMsSUFBQUssUUFBQSxHQUVhVixHQUFHO0FBQUFXLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ2xCRyxNQUFNLENBQUNGLE9BQU8sR0FBR1gsR0FBRyJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst Time = {\n  id: 0x29,\n  type: 'TIMEN',\n  name: 'Time',\n  declaration: function (parameter) {\n    return 'time(' + this.resolveScale(parameter) + ')';\n  },\n  resolveScale: function (parameter) {\n    if (parameter.scale != null) {\n      return parameter.scale;\n    } else if (parameter.value === null) {\n      return 0;\n    } else {\n      return 7;\n    }\n  },\n  generateTypeInfo(parameter) {\n    return Buffer.from([this.id, parameter.scale]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    switch (parameter.scale) {\n      case 0:\n      case 1:\n      case 2:\n        return Buffer.from([0x03]);\n      case 3:\n      case 4:\n        return Buffer.from([0x04]);\n      case 5:\n      case 6:\n      case 7:\n        return Buffer.from([0x05]);\n      default:\n        throw new Error('invalid scale');\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const buffer = new _writableTrackingBuffer.default(16);\n    const time = parameter.value;\n    let timestamp;\n    if (options.useUTC) {\n      timestamp = ((time.getUTCHours() * 60 + time.getUTCMinutes()) * 60 + time.getUTCSeconds()) * 1000 + time.getUTCMilliseconds();\n    } else {\n      timestamp = ((time.getHours() * 60 + time.getMinutes()) * 60 + time.getSeconds()) * 1000 + time.getMilliseconds();\n    }\n    timestamp = timestamp * Math.pow(10, parameter.scale - 3);\n    timestamp += (parameter.value.nanosecondDelta != null ? parameter.value.nanosecondDelta : 0) * Math.pow(10, parameter.scale);\n    timestamp = Math.round(timestamp);\n    switch (parameter.scale) {\n      case 0:\n      case 1:\n      case 2:\n        buffer.writeUInt24LE(timestamp);\n        break;\n      case 3:\n      case 4:\n        buffer.writeUInt32LE(timestamp);\n        break;\n      case 5:\n      case 6:\n      case 7:\n        buffer.writeUInt40LE(timestamp);\n    }\n    yield buffer.data;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof Date)) {\n      value = new Date(Date.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid time.');\n    }\n    return value;\n  }\n};\nvar _default = Time;\nexports.default = _default;\nmodule.exports = Time;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJUaW1lIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVNjYWxlIiwic2NhbGUiLCJ2YWx1ZSIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJFcnJvciIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ0aW1lIiwidGltZXN0YW1wIiwidXNlVVRDIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJNYXRoIiwicG93IiwibmFub3NlY29uZERlbHRhIiwicm91bmQiLCJ3cml0ZVVJbnQyNExFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDQwTEUiLCJkYXRhIiwidmFsaWRhdGUiLCJEYXRlIiwicGFyc2UiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3RpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBUaW1lOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4MjksXG4gIHR5cGU6ICdUSU1FTicsXG4gIG5hbWU6ICdUaW1lJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICd0aW1lKCcgKyAodGhpcy5yZXNvbHZlU2NhbGUhKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuXG4gIHJlc29sdmVTY2FsZTogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgaWYgKHBhcmFtZXRlci5zY2FsZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyLnNjYWxlO1xuICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDc7XG4gICAgfVxuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm8ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFt0aGlzLmlkLCBwYXJhbWV0ZXIuc2NhbGUhXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwYXJhbWV0ZXIuc2NhbGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDAzXSk7XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNF0pO1xuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDVdKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY2FsZScpO1xuICAgIH1cbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxNik7XG4gICAgY29uc3QgdGltZSA9IHBhcmFtZXRlci52YWx1ZTtcblxuICAgIGxldCB0aW1lc3RhbXA7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB0aW1lc3RhbXAgPSAoKHRpbWUuZ2V0VVRDSG91cnMoKSAqIDYwICsgdGltZS5nZXRVVENNaW51dGVzKCkpICogNjAgKyB0aW1lLmdldFVUQ1NlY29uZHMoKSkgKiAxMDAwICsgdGltZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGltZXN0YW1wID0gKCh0aW1lLmdldEhvdXJzKCkgKiA2MCArIHRpbWUuZ2V0TWludXRlcygpKSAqIDYwICsgdGltZS5nZXRTZWNvbmRzKCkpICogMTAwMCArIHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuXG4gICAgdGltZXN0YW1wID0gdGltZXN0YW1wICogTWF0aC5wb3coMTAsIHBhcmFtZXRlci5zY2FsZSEgLSAzKTtcbiAgICB0aW1lc3RhbXAgKz0gKHBhcmFtZXRlci52YWx1ZS5uYW5vc2Vjb25kRGVsdGEgIT0gbnVsbCA/IHBhcmFtZXRlci52YWx1ZS5uYW5vc2Vjb25kRGVsdGEgOiAwKSAqIE1hdGgucG93KDEwLCBwYXJhbWV0ZXIuc2NhbGUhKTtcbiAgICB0aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgICBzd2l0Y2ggKHBhcmFtZXRlci5zY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MjRMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ0MExFKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB8IERhdGUge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRpbWUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5cbmV4cG9ydCBkZWZhdWx0IFRpbWU7XG5tb2R1bGUuZXhwb3J0cyA9IFRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBaUYsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFakYsTUFBTUcsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZDLE1BQU1DLElBQWMsR0FBRztFQUNyQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLE9B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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _core = require(\"@js-joda/core\");\n// globalDate is to be used for JavaScript's global 'Date' object to avoid name clashing with the 'Date' constant below\nconst globalDate = global.Date;\nconst EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x03]);\nconst Date = {\n  id: 0x28,\n  type: 'DATEN',\n  name: 'Date',\n  declaration: function () {\n    return 'date';\n  },\n  generateTypeInfo: function () {\n    return Buffer.from([this.id]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    return DATA_LENGTH;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n\n    let date;\n    if (options.useUTC) {\n      date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n    } else {\n      date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n    }\n    const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);\n    const buffer = Buffer.alloc(3);\n    buffer.writeUIntLE(days, 0, 3);\n    yield buffer;\n  },\n  // TODO: value is technically of type 'unknown'.\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof globalDate)) {\n      value = new globalDate(globalDate.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid date.');\n    }\n    return value;\n  }\n};\nvar _default = Date;\nexports.default = _default;\nmodule.exports = Date;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJnbG9iYWxEYXRlIiwiZ2xvYmFsIiwiRGF0ZSIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEQVRBX0xFTkdUSCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsInBhcmFtZXRlciIsIm9wdGlvbnMiLCJ2YWx1ZSIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsImRhdGUiLCJ1c2VVVEMiLCJvZiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJkYXlzIiwidW50aWwiLCJDaHJvbm9Vbml0IiwiREFZUyIsImJ1ZmZlciIsImFsbG9jIiwid3JpdGVVSW50TEUiLCJ2YWxpZGF0ZSIsInBhcnNlIiwiaXNOYU4iLCJUeXBlRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCB7IENocm9ub1VuaXQsIExvY2FsRGF0ZSB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuXG4vLyBnbG9iYWxEYXRlIGlzIHRvIGJlIHVzZWQgZm9yIEphdmFTY3JpcHQncyBnbG9iYWwgJ0RhdGUnIG9iamVjdCB0byBhdm9pZCBuYW1lIGNsYXNoaW5nIHdpdGggdGhlICdEYXRlJyBjb25zdGFudCBiZWxvd1xuY29uc3QgZ2xvYmFsRGF0ZSA9IGdsb2JhbC5EYXRlO1xuY29uc3QgRVBPQ0hfREFURSA9IExvY2FsRGF0ZS5vZlllYXJEYXkoMSwgMSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5jb25zdCBEQVRBX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAzXSk7XG5cbmNvbnN0IERhdGU6IERhdGFUeXBlID0ge1xuICBpZDogMHgyOCxcbiAgdHlwZTogJ0RBVEVOJyxcbiAgbmFtZTogJ0RhdGUnLFxuXG4gIGRlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gJ2RhdGUnO1xuICB9LFxuXG4gIGdlbmVyYXRlVHlwZUluZm86IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZF0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHJldHVybiBEQVRBX0xFTkdUSDtcbiAgfSxcblxuICAqIGdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBhbnk7IC8vIFRlbXBvcmFyeSBzb2x1dGlvbi4gUmVtb3ZlICdhbnknIGxhdGVyLlxuXG4gICAgbGV0IGRhdGU7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCkgKyAxLCB2YWx1ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnRMRShkYXlzLCAwLCAzKTtcbiAgICB5aWVsZCBidWZmZXI7XG4gIH0sXG5cbiAgLy8gVE9ETzogdmFsdWUgaXMgdGVjaG5pY2FsbHkgb2YgdHlwZSAndW5rbm93bicuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBEYXRlIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBnbG9iYWxEYXRlKSkge1xuICAgICAgdmFsdWUgPSBuZXcgZ2xvYmFsRGF0ZShnbG9iYWxEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZTtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBRUE7QUFDQSxNQUFNQyxVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSTtBQUM5QixNQUFNQyxVQUFVLEdBQUdDLGVBQVMsQ0FBQ0MsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUMsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLE1BQU1DLFdBQVcsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNTixJQUFjLEdBQUc7RUFDckJRLEVBQUUsRUFBRSxJQUFJO0VBQ1JD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _core = require(\"@js-joda/core\");\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DateTime2 = {\n  id: 0x2A,\n  type: 'DATETIME2N',\n  name: 'DateTime2',\n  declaration: function (parameter) {\n    return 'datetime2(' + this.resolveScale(parameter) + ')';\n  },\n  resolveScale: function (parameter) {\n    if (parameter.scale != null) {\n      return parameter.scale;\n    } else if (parameter.value === null) {\n      return 0;\n    } else {\n      return 7;\n    }\n  },\n  generateTypeInfo(parameter, _options) {\n    return Buffer.from([this.id, parameter.scale]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    switch (parameter.scale) {\n      case 0:\n      case 1:\n      case 2:\n        return Buffer.from([0x06]);\n      case 3:\n      case 4:\n        return Buffer.from([0x07]);\n      case 5:\n      case 6:\n      case 7:\n        return Buffer.from([0x08]);\n      default:\n        throw new Error('invalid scale');\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value;\n    let scale = parameter.scale;\n    const buffer = new _writableTrackingBuffer.default(16);\n    scale = scale;\n    let timestamp;\n    if (options.useUTC) {\n      timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds();\n    } else {\n      timestamp = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds();\n    }\n    timestamp = timestamp * Math.pow(10, scale - 3);\n    timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n    timestamp = Math.round(timestamp);\n    switch (scale) {\n      case 0:\n      case 1:\n      case 2:\n        buffer.writeUInt24LE(timestamp);\n        break;\n      case 3:\n      case 4:\n        buffer.writeUInt32LE(timestamp);\n        break;\n      case 5:\n      case 6:\n      case 7:\n        buffer.writeUInt40LE(timestamp);\n    }\n    let date;\n    if (options.useUTC) {\n      date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n    } else {\n      date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n    }\n    const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);\n    buffer.writeUInt24LE(days);\n    yield buffer.data;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof Date)) {\n      value = new Date(Date.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid date.');\n    }\n    return value;\n  }\n};\nvar _default = DateTime2;\nexports.default = _default;\nmodule.exports = DateTime2;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEYXRlVGltZTIiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJyZXNvbHZlU2NhbGUiLCJzY2FsZSIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIl9vcHRpb25zIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJvcHRpb25zIiwiRXJyb3IiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwidGltZXN0YW1wIiwidXNlVVRDIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJNYXRoIiwicG93IiwibmFub3NlY29uZERlbHRhIiwicm91bmQiLCJ3cml0ZVVJbnQyNExFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDQwTEUiLCJkYXRlIiwib2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJkYXRhIiwidmFsaWRhdGUiLCJEYXRlIiwicGFyc2UiLCJpc05hTiIsIlR5cGVFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lMi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcbmltcG9ydCB7IENocm9ub1VuaXQsIExvY2FsRGF0ZSB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IEVQT0NIX0RBVEUgPSBMb2NhbERhdGUub2ZZZWFyRGF5KDEsIDEpO1xuY29uc3QgTlVMTF9MRU5HVEggPSBCdWZmZXIuZnJvbShbMHgwMF0pO1xuXG5jb25zdCBEYXRlVGltZTI6IERhdGFUeXBlICYgeyByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4gfSA9IHtcbiAgaWQ6IDB4MkEsXG4gIHR5cGU6ICdEQVRFVElNRTJOJyxcbiAgbmFtZTogJ0RhdGVUaW1lMicsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIHJldHVybiAnZGF0ZXRpbWUyKCcgKyAodGhpcy5yZXNvbHZlU2NhbGUocGFyYW1ldGVyKSkgKyAnKSc7XG4gIH0sXG5cbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gNztcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIsIF9vcHRpb25zKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFt0aGlzLmlkLCBwYXJhbWV0ZXIuc2NhbGUhXSk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwYXJhbWV0ZXIuc2NhbGUhKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwNl0pO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwN10pO1xuXG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOF0pO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NhbGUnKTtcbiAgICB9XG4gIH0sXG5cbiAgKmdlbmVyYXRlUGFyYW1ldGVyRGF0YShwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZTtcbiAgICBsZXQgc2NhbGUgPSBwYXJhbWV0ZXIuc2NhbGU7XG5cbiAgICBjb25zdCBidWZmZXIgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcigxNik7XG4gICAgc2NhbGUgPSBzY2FsZSE7XG5cbiAgICBsZXQgdGltZXN0YW1wO1xuICAgIGlmIChvcHRpb25zLnVzZVVUQykge1xuICAgICAgdGltZXN0YW1wID0gKCh2YWx1ZS5nZXRVVENIb3VycygpICogNjAgKyB2YWx1ZS5nZXRVVENNaW51dGVzKCkpICogNjAgKyB2YWx1ZS5nZXRVVENTZWNvbmRzKCkpICogMTAwMCArIHZhbHVlLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aW1lc3RhbXAgPSAoKHZhbHVlLmdldEhvdXJzKCkgKiA2MCArIHZhbHVlLmdldE1pbnV0ZXMoKSkgKiA2MCArIHZhbHVlLmdldFNlY29uZHMoKSkgKiAxMDAwICsgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgfVxuICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCAqIE1hdGgucG93KDEwLCBzY2FsZSAtIDMpO1xuICAgIHRpbWVzdGFtcCArPSAodmFsdWUubmFub3NlY29uZERlbHRhICE9IG51bGwgPyB2YWx1ZS5uYW5vc2Vjb25kRGVsdGEgOiAwKSAqIE1hdGgucG93KDEwLCBzY2FsZSk7XG4gICAgdGltZXN0YW1wID0gTWF0aC5yb3VuZCh0aW1lc3RhbXApO1xuXG4gICAgc3dpdGNoIChzY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MjRMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ0MExFKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgbGV0IGRhdGU7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCkgKyAxLCB2YWx1ZS5nZXREYXRlKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5cyk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgZGF0ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lMjtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWUyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWlGLFNBQUFFLHVCQUFBQyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpGLE1BQU1HLFVBQVUsR0FBR0MsZUFBUyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QyxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUMsU0FBNkUsR0FBRztFQUNwRkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFlBQVk7RUFDbEJDLElBQUksRUFBRSxXQUFXO0VBRWpCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBU0MsU0FBUyxFQUFFO0lBQy9CLE9B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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _core = require(\"@js-joda/core\");\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DateTimeOffset = {\n  id: 0x2B,\n  type: 'DATETIMEOFFSETN',\n  name: 'DateTimeOffset',\n  declaration: function (parameter) {\n    return 'datetimeoffset(' + this.resolveScale(parameter) + ')';\n  },\n  resolveScale: function (parameter) {\n    if (parameter.scale != null) {\n      return parameter.scale;\n    } else if (parameter.value === null) {\n      return 0;\n    } else {\n      return 7;\n    }\n  },\n  generateTypeInfo(parameter) {\n    return Buffer.from([this.id, parameter.scale]);\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    switch (parameter.scale) {\n      case 0:\n      case 1:\n      case 2:\n        return Buffer.from([0x08]);\n      case 3:\n      case 4:\n        return Buffer.from([0x09]);\n      case 5:\n      case 6:\n      case 7:\n        return Buffer.from([0x0A]);\n      default:\n        throw new Error('invalid scale');\n    }\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      return;\n    }\n    const value = parameter.value;\n    let scale = parameter.scale;\n    const buffer = new _writableTrackingBuffer.default(16);\n    scale = scale;\n    let timestamp;\n    timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getMilliseconds();\n    timestamp = timestamp * Math.pow(10, scale - 3);\n    timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n    timestamp = Math.round(timestamp);\n    switch (scale) {\n      case 0:\n      case 1:\n      case 2:\n        buffer.writeUInt24LE(timestamp);\n        break;\n      case 3:\n      case 4:\n        buffer.writeUInt32LE(timestamp);\n        break;\n      case 5:\n      case 6:\n      case 7:\n        buffer.writeUInt40LE(timestamp);\n    }\n    const date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n    const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);\n    buffer.writeUInt24LE(days);\n    const offset = -value.getTimezoneOffset();\n    buffer.writeInt16LE(offset);\n    yield buffer.data;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (!(value instanceof Date)) {\n      value = new Date(Date.parse(value));\n    }\n    if (isNaN(value)) {\n      throw new TypeError('Invalid date.');\n    }\n    return value;\n  }\n};\nvar _default = DateTimeOffset;\nexports.default = _default;\nmodule.exports = DateTimeOffset;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkVQT0NIX0RBVEUiLCJMb2NhbERhdGUiLCJvZlllYXJEYXkiLCJOVUxMX0xFTkdUSCIsIkJ1ZmZlciIsImZyb20iLCJEYXRlVGltZU9mZnNldCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInJlc29sdmVTY2FsZSIsInNjYWxlIiwidmFsdWUiLCJnZW5lcmF0ZVR5cGVJbmZvIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJvcHRpb25zIiwiRXJyb3IiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJidWZmZXIiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwidGltZXN0YW1wIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsIk1hdGgiLCJwb3ciLCJuYW5vc2Vjb25kRGVsdGEiLCJyb3VuZCIsIndyaXRlVUludDI0TEUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVVSW50NDBMRSIsImRhdGUiLCJvZiIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZGF5cyIsInVudGlsIiwiQ2hyb25vVW5pdCIsIkRBWVMiLCJvZmZzZXQiLCJnZXRUaW1lem9uZU9mZnNldCIsIndyaXRlSW50MTZMRSIsImRhdGEiLCJ2YWxpZGF0ZSIsIkRhdGUiLCJwYXJzZSIsImlzTmFOIiwiVHlwZUVycm9yIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBDaHJvbm9Vbml0LCBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCBXcml0YWJsZVRyYWNraW5nQnVmZmVyIGZyb20gJy4uL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuXG5jb25zdCBFUE9DSF9EQVRFID0gTG9jYWxEYXRlLm9mWWVhckRheSgxLCAxKTtcbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4MDBdKTtcblxuY29uc3QgRGF0ZVRpbWVPZmZzZXQ6IERhdGFUeXBlICYgeyByZXNvbHZlU2NhbGU6IE5vbk51bGxhYmxlPERhdGFUeXBlWydyZXNvbHZlU2NhbGUnXT4gfSA9IHtcbiAgaWQ6IDB4MkIsXG4gIHR5cGU6ICdEQVRFVElNRU9GRlNFVE4nLFxuICBuYW1lOiAnRGF0ZVRpbWVPZmZzZXQnLFxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdkYXRldGltZW9mZnNldCgnICsgKHRoaXMucmVzb2x2ZVNjYWxlKHBhcmFtZXRlcikpICsgJyknO1xuICB9LFxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA3O1xuICAgIH1cbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShbdGhpcy5pZCwgcGFyYW1ldGVyLnNjYWxlIV0pO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE5VTExfTEVOR1RIO1xuICAgIH1cblxuICAgIHN3aXRjaCAocGFyYW1ldGVyLnNjYWxlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOF0pO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwOV0pO1xuXG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShbMHgwQV0pO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2NhbGUnKTtcbiAgICB9XG4gIH0sXG5cbiAgKiBnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgbGV0IHNjYWxlID0gcGFyYW1ldGVyLnNjYWxlO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoMTYpO1xuICAgIHNjYWxlID0gc2NhbGUhO1xuXG4gICAgbGV0IHRpbWVzdGFtcDtcbiAgICB0aW1lc3RhbXAgPSAoKHZhbHVlLmdldFVUQ0hvdXJzKCkgKiA2MCArIHZhbHVlLmdldFVUQ01pbnV0ZXMoKSkgKiA2MCArIHZhbHVlLmdldFVUQ1NlY29uZHMoKSkgKiAxMDAwICsgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgdGltZXN0YW1wID0gdGltZXN0YW1wICogTWF0aC5wb3coMTAsIHNjYWxlIC0gMyk7XG4gICAgdGltZXN0YW1wICs9ICh2YWx1ZS5uYW5vc2Vjb25kRGVsdGEgIT0gbnVsbCA/IHZhbHVlLm5hbm9zZWNvbmREZWx0YSA6IDApICogTWF0aC5wb3coMTAsIHNjYWxlKTtcbiAgICB0aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgICBzd2l0Y2ggKHNjYWxlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQyNExFKHRpbWVzdGFtcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDQwTEUodGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gTG9jYWxEYXRlLm9mKHZhbHVlLmdldFVUQ0Z1bGxZZWFyKCksIHZhbHVlLmdldFVUQ01vbnRoKCkgKyAxLCB2YWx1ZS5nZXRVVENEYXRlKCkpO1xuICAgIGNvbnN0IGRheXMgPSBFUE9DSF9EQVRFLnVudGlsKGRhdGUsIENocm9ub1VuaXQuREFZUyk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5cyk7XG5cbiAgICBjb25zdCBvZmZzZXQgPSAtdmFsdWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICBidWZmZXIud3JpdGVJbnQxNkxFKG9mZnNldCk7XG4gICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gIH0sXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IG51bGwgfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGRhdGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZU9mZnNldDtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWVPZmZzZXQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBaUYsU0FBQUUsdUJBQUFDLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFakYsTUFBTUcsVUFBVSxHQUFHQyxlQUFTLENBQUNDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLE1BQU1DLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV2QyxNQUFNQyxjQUFrRixHQUFHO0VBQ3pGQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsaUJBQWlCO0VBQ3ZCQyxJQUFJLEVBQUUsZ0JBQWdCO0VBQ3RCQyxXQUFXLEVBQUUsU0FBQUEsQ0FBU0MsU0FBUyxFQUFFO0lBQy9CLE9BQU8saUJBQWlCLEdBQUksSUFBSSxDQUFDQyxZQUFZLENBQUNELFNBQVMsQ0FBRSxHQUFHLEdBQUc7RUFDakUsQ0FBQztFQUNEQyxZQUFZLEVBQUUsU0FBQUEsQ0FBU0QsU0FBUyxFQUFFO0lBQ2hDLElBQUlBLFNBQVMsQ0FBQ0UsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPRixTQUFTLENBQUNFLEtBQUs7SUFDeEIsQ0FBQyxNQUFNLElBQUlGLFNBQVMsQ0FBQ0csS0FBSyxLQUFLLElBQUksRUFBRTtNQUNuQyxPQUFPLENBQUM7SUFDVixDQUFDLE1BQU07TUFDTCxPQUFPLENBQUM7SUFDVjtFQUNG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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst UDT = {\n  id: 0xF0,\n  type: 'UDTTYPE',\n  name: 'UDT',\n  declaration() {\n    throw new Error('not implemented');\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = UDT;\nexports.default = _default;\nmodule.exports = UDT;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVRFQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL3VkdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgVURUOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjAsXG4gIHR5cGU6ICdVRFRUWVBFJyxcbiAgbmFtZTogJ1VEVCcsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckRhdGEoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBVRFQ7XG5tb2R1bGUuZXhwb3J0cyA9IFVEVDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsR0FBYSxHQUFHO0VBQ3BCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUUsS0FBSztFQUVYQyxXQUFXQSxDQUFBLEVBQUc7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLE1BQU0sSUFBSUQsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREUsdUJBQXVCQSxDQUFBLEVBQUc7SUFDeEIsTUFBTSxJQUFJRixLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERyxxQkFBcUJBLENBQUEsRUFBRztJQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURJLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUosS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFLLFFBQUEsR0FFYVYsR0FBRztBQUFBVyxPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUNsQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdYLEdBQUcifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"../tracking-buffer/writable-tracking-buffer\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst TVP_ROW_TOKEN = Buffer.from([0x01]);\nconst TVP_END_TOKEN = Buffer.from([0x00]);\nconst NULL_LENGTH = Buffer.from([0xFF, 0xFF]);\nconst TVP = {\n  id: 0xF3,\n  type: 'TVPTYPE',\n  name: 'TVP',\n  declaration: function (parameter) {\n    const value = parameter.value; // Temporary solution. Remove 'any' later.\n    return value.name + ' readonly';\n  },\n  generateTypeInfo(parameter) {\n    var _parameter$value, _parameter$value2;\n    const databaseName = '';\n    const schema = ((_parameter$value = parameter.value) === null || _parameter$value === void 0 ? void 0 : _parameter$value.schema) ?? '';\n    const typeName = ((_parameter$value2 = parameter.value) === null || _parameter$value2 === void 0 ? void 0 : _parameter$value2.name) ?? '';\n    const bufferLength = 1 + 1 + Buffer.byteLength(databaseName, 'ucs2') + 1 + Buffer.byteLength(schema, 'ucs2') + 1 + Buffer.byteLength(typeName, 'ucs2');\n    const buffer = new _writableTrackingBuffer.default(bufferLength, 'ucs2');\n    buffer.writeUInt8(this.id);\n    buffer.writeBVarchar(databaseName);\n    buffer.writeBVarchar(schema);\n    buffer.writeBVarchar(typeName);\n    return buffer.data;\n  },\n  generateParameterLength(parameter, options) {\n    if (parameter.value == null) {\n      return NULL_LENGTH;\n    }\n    const {\n      columns\n    } = parameter.value;\n    const buffer = Buffer.alloc(2);\n    buffer.writeUInt16LE(columns.length, 0);\n    return buffer;\n  },\n  *generateParameterData(parameter, options) {\n    if (parameter.value == null) {\n      yield TVP_END_TOKEN;\n      yield TVP_END_TOKEN;\n      return;\n    }\n    const {\n      columns,\n      rows\n    } = parameter.value;\n    for (let i = 0, len = columns.length; i < len; i++) {\n      const column = columns[i];\n      const buff = Buffer.alloc(6);\n      // UserType\n      buff.writeUInt32LE(0x00000000, 0);\n\n      // Flags\n      buff.writeUInt16LE(0x0000, 4);\n      yield buff;\n\n      // TYPE_INFO\n      yield column.type.generateTypeInfo(column);\n\n      // ColName\n      yield Buffer.from([0x00]);\n    }\n    yield TVP_END_TOKEN;\n    for (let i = 0, length = rows.length; i < length; i++) {\n      yield TVP_ROW_TOKEN;\n      const row = rows[i];\n      for (let k = 0, len2 = row.length; k < len2; k++) {\n        const column = columns[k];\n        const value = row[k];\n        const param = {\n          value: column.type.validate(value, parameter.collation),\n          length: column.length,\n          scale: column.scale,\n          precision: column.precision\n        };\n\n        // TvpColumnData\n        yield column.type.generateParameterLength(param, options);\n        yield* column.type.generateParameterData(param, options);\n      }\n    }\n    yield TVP_END_TOKEN;\n  },\n  validate: function (value) {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value !== 'object') {\n      throw new TypeError('Invalid table.');\n    }\n    if (!Array.isArray(value.columns)) {\n      throw new TypeError('Invalid table.');\n    }\n    if (!Array.isArray(value.rows)) {\n      throw new TypeError('Invalid table.');\n    }\n    return value;\n  }\n};\nvar _default = TVP;\nexports.default = _default;\nmodule.exports = TVP;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJUVlBfUk9XX1RPS0VOIiwiQnVmZmVyIiwiZnJvbSIsIlRWUF9FTkRfVE9LRU4iLCJOVUxMX0xFTkdUSCIsIlRWUCIsImlkIiwidHlwZSIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsInBhcmFtZXRlciIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIl9wYXJhbWV0ZXIkdmFsdWUiLCJfcGFyYW1ldGVyJHZhbHVlMiIsImRhdGFiYXNlTmFtZSIsInNjaGVtYSIsInR5cGVOYW1lIiwiYnVmZmVyTGVuZ3RoIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVCVmFyY2hhciIsImRhdGEiLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiYWxsb2MiLCJ3cml0ZVVJbnQxNkxFIiwibGVuZ3RoIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwicm93cyIsImkiLCJsZW4iLCJjb2x1bW4iLCJidWZmIiwid3JpdGVVSW50MzJMRSIsInJvdyIsImsiLCJsZW4yIiwicGFyYW0iLCJ2YWxpZGF0ZSIsImNvbGxhdGlvbiIsInNjYWxlIiwicHJlY2lzaW9uIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvdHZwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi4vdHJhY2tpbmctYnVmZmVyL3dyaXRhYmxlLXRyYWNraW5nLWJ1ZmZlcic7XG5cbmNvbnN0IFRWUF9ST1dfVE9LRU4gPSBCdWZmZXIuZnJvbShbMHgwMV0pO1xuY29uc3QgVFZQX0VORF9UT0tFTiA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IE5VTExfTEVOR1RIID0gQnVmZmVyLmZyb20oWzB4RkYsIDB4RkZdKTtcblxuY29uc3QgVFZQOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4RjMsXG4gIHR5cGU6ICdUVlBUWVBFJyxcbiAgbmFtZTogJ1RWUCcsXG5cbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIGFueTsgLy8gVGVtcG9yYXJ5IHNvbHV0aW9uLiBSZW1vdmUgJ2FueScgbGF0ZXIuXG4gICAgcmV0dXJuIHZhbHVlLm5hbWUgKyAnIHJlYWRvbmx5JztcbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGRhdGFiYXNlTmFtZSA9ICcnO1xuICAgIGNvbnN0IHNjaGVtYSA9IHBhcmFtZXRlci52YWx1ZT8uc2NoZW1hID8/ICcnO1xuICAgIGNvbnN0IHR5cGVOYW1lID0gcGFyYW1ldGVyLnZhbHVlPy5uYW1lID8/ICcnO1xuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gMSArXG4gICAgICAxICsgQnVmZmVyLmJ5dGVMZW5ndGgoZGF0YWJhc2VOYW1lLCAndWNzMicpICtcbiAgICAgIDEgKyBCdWZmZXIuYnl0ZUxlbmd0aChzY2hlbWEsICd1Y3MyJykgK1xuICAgICAgMSArIEJ1ZmZlci5ieXRlTGVuZ3RoKHR5cGVOYW1lLCAndWNzMicpO1xuXG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoYnVmZmVyTGVuZ3RoLCAndWNzMicpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQpO1xuICAgIGJ1ZmZlci53cml0ZUJWYXJjaGFyKGRhdGFiYXNlTmFtZSk7XG4gICAgYnVmZmVyLndyaXRlQlZhcmNoYXIoc2NoZW1hKTtcbiAgICBidWZmZXIud3JpdGVCVmFyY2hhcih0eXBlTmFtZSk7XG5cbiAgICByZXR1cm4gYnVmZmVyLmRhdGE7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gTlVMTF9MRU5HVEg7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSBwYXJhbWV0ZXIudmFsdWU7XG4gICAgY29uc3QgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDIpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKGNvbHVtbnMubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9LFxuXG4gICpnZW5lcmF0ZVBhcmFtZXRlckRhdGEocGFyYW1ldGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhcmFtZXRlci52YWx1ZSA9PSBudWxsKSB7XG4gICAgICB5aWVsZCBUVlBfRU5EX1RPS0VOO1xuICAgICAgeWllbGQgVFZQX0VORF9UT0tFTjtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNvbHVtbnMsIHJvd3MgfSA9IHBhcmFtZXRlci52YWx1ZTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2ldO1xuXG4gICAgICBjb25zdCBidWZmID0gQnVmZmVyLmFsbG9jKDYpO1xuICAgICAgLy8gVXNlclR5cGVcbiAgICAgIGJ1ZmYud3JpdGVVSW50MzJMRSgweDAwMDAwMDAwLCAwKTtcblxuICAgICAgLy8gRmxhZ3NcbiAgICAgIGJ1ZmYud3JpdGVVSW50MTZMRSgweDAwMDAsIDQpO1xuICAgICAgeWllbGQgYnVmZjtcblxuICAgICAgLy8gVFlQRV9JTkZPXG4gICAgICB5aWVsZCBjb2x1bW4udHlwZS5nZW5lcmF0ZVR5cGVJbmZvKGNvbHVtbik7XG5cbiAgICAgIC8vIENvbE5hbWVcbiAgICAgIHlpZWxkIEJ1ZmZlci5mcm9tKFsweDAwXSk7XG4gICAgfVxuXG4gICAgeWllbGQgVFZQX0VORF9UT0tFTjtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSByb3dzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB5aWVsZCBUVlBfUk9XX1RPS0VOO1xuXG4gICAgICBjb25zdCByb3cgPSByb3dzW2ldO1xuICAgICAgZm9yIChsZXQgayA9IDAsIGxlbjIgPSByb3cubGVuZ3RoOyBrIDwgbGVuMjsgaysrKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnNba107XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2tdO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtID0ge1xuICAgICAgICAgIHZhbHVlOiBjb2x1bW4udHlwZS52YWxpZGF0ZSh2YWx1ZSwgcGFyYW1ldGVyLmNvbGxhdGlvbiksXG4gICAgICAgICAgbGVuZ3RoOiBjb2x1bW4ubGVuZ3RoLFxuICAgICAgICAgIHNjYWxlOiBjb2x1bW4uc2NhbGUsXG4gICAgICAgICAgcHJlY2lzaW9uOiBjb2x1bW4ucHJlY2lzaW9uXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVHZwQ29sdW1uRGF0YVxuICAgICAgICB5aWVsZCBjb2x1bW4udHlwZS5nZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbSwgb3B0aW9ucyk7XG4gICAgICAgIHlpZWxkICogY29sdW1uLnR5cGUuZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB5aWVsZCBUVlBfRU5EX1RPS0VOO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZSk6IEJ1ZmZlciB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCB0YWJsZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUuY29sdW1ucykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgdGFibGUuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlLnJvd3MpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHRhYmxlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVFZQO1xubW9kdWxlLmV4cG9ydHMgPSBUVlA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBaUYsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFakYsTUFBTUcsYUFBYSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLE1BQU1DLGFBQWEsR0FBR0YsTUFBTSxDQUFDQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV6QyxNQUFNRSxXQUFXLEdBQUdILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTdDLE1BQU1HLEdBQWEsR0FBRztFQUNwQkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFLEtBQUs7RUFFWEMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQixNQUFNQyxLQUFLLEdBQUdELFNBQVMsQ0FBQ0MsS0FBWSxDQUFDLENBQUM7SUFDdEMsT0FBT0EsS0FBSyxDQUFDSCxJQUFJLEdBQUcsV0FBVztFQUNqQyxDQUFDO0VBRURJLGdCQUFnQkEsQ0FBQ0YsU0FBUyxFQUFFO0lBQUEsSUFBQUcsZ0JBQUEsRUFBQUMsaUJBQUE7SUFDMUIsTUFBTUMsWUFBWSxHQUFHLEVBQUU7SUFDdkIsTUFBTUMsTUFBTSxHQUFHLEVBQUFILGdCQUFBLEdBQUFILFNBQVMsQ0FBQ0MsS0FBSyxjQUFBRSxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUJHLE1BQU0sS0FBSSxFQUFFO0lBQzVDLE1BQU1DLFFBQVEsR0FBRyxFQUFBSCxpQkFBQSxHQUFBSixTQUFTLENBQUNDLEtBQUssY0FBQUcsaUJBQUEsdUJBQWZBLGlCQUFBLENBQWlCTixJQUFJLEtBQUksRUFBRTtJQUU1QyxNQUFNVSxZQUFZLEdBQUcsQ0FBQyxHQUNwQixDQUFDLEdBQUdqQixNQUFNLENBQUNrQixVQUFVLENBQUNKLFlBQVksRUFBRSxNQUFNLENBQUMsR0FDM0MsQ0FBQyxHQUFHZCxNQUFNLENBQUNrQixVQUFVLENBQUNILE1BQU0sRUFBRSxNQUFNLENBQUMsR0FDckMsQ0FBQyxHQUFHZixNQUFNLENBQUNrQixVQUFVLENBQUNGLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFFekMsTUFBTUcsTUFBTSxHQUFHLElBQUlDLCtCQUFzQixDQUFDSCxZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQy9ERSxNQUFNLENBQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUNoQixFQUFFLENBQUM7SUFDMUJjLE1BQU0sQ0FBQ0csYUFBYSxDQUFDUixZQUFZLENBQUM7SUFDbENLLE1BQU0sQ0FBQ0csYUFBYSxDQUFDUCxNQUFNLENBQUM7SUFDNUJJLE1BQU0sQ0FBQ0csYUFBYSxDQUFDTixRQUFRLENBQUM7SUFFOUIsT0FBT0csTUFBTSxDQUFDSSxJQUFJO0VBQ3BCLENBQUM7RUFFREMsdUJBQXVCQSxDQUFDZixTQUFTLEVBQUVnQixPQUFPLEVBQUU7SUFDMUMsSUFBSWhCLFNBQVMsQ0FBQ0MsS0FBSyxJQUFJLElBQUksRUFBRTtNQUMzQixPQUFPUCxXQUFXO0lBQ3BCO0lBRUEsTUFBTTtNQUFFdUI7SUFBUSxDQUFDLEdBQUdqQixTQUFTLENBQUNDLEtBQUs7SUFDbkMsTUFBTVMsTUFBTSxHQUFHbkIsTUFBTSxDQUFDMkIsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QlIsTUFBTSxDQUFDUyxhQUFhLENBQUNGLE9BQU8sQ0FBQ0csTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2QyxPQUFPVixNQUFNO0VBQ2YsQ0FBQztFQUVELENBQUNXLHFCQUFxQkEsQ0FBQ3JCLFNBQVMsRUFBRWdCLE9BQU8sRUFBRTtJQUN6QyxJQUFJaEIsU0FBUyxDQUFDQyxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE1BQU1SLGFBQWE7TUFDbkIsTUFBTUEsYUFBYTtNQUNuQjtJQUNGO0lBRUEsTUFBTTtNQUFFd0IsT0FBTztNQUFFSztJQUFLLENBQUMsR0FBR3RCLFNBQVMsQ0FBQ0MsS0FBSztJQUV6QyxLQUFLLElBQUlzQixDQUFDLEdBQUcsQ0FBQyxFQUFFQyxHQUFHLEdBQUdQLE9BQU8sQ0FBQ0csTUFBTSxFQUFFRyxDQUFDLEdBQUdDLEdBQUcsRUFBRUQsQ0FBQyxFQUFFLEVBQUU7TUFDbEQsTUFBTUUsTUFBTSxHQUFHUixPQUFPLENBQUNNLENBQUMsQ0FBQztNQUV6QixNQUFNRyxJQUFJLEdBQUduQyxNQUFNLENBQUMyQixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQzVCO01BQ0FRLElBQUksQ0FBQ0MsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7O01BRWpDO01BQ0FELElBQUksQ0FBQ1AsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7TUFDN0IsTUFBTU8sSUFBSTs7TUFFVjtNQUNBLE1BQU1ELE1BQU0sQ0FBQzVCLElBQUksQ0FBQ0ssZ0JBQWdCLENBQUN1QixNQUFNLENBQUM7O01BRTFDO01BQ0EsTUFBTWxDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0I7SUFFQSxNQUFNQyxhQUFhO0lBRW5CLEtBQUssSUFBSThCLENBQUMsR0FBRyxDQUFDLEVBQUVILE1BQU0sR0FBR0UsSUFBSSxDQUFDRixNQUFNLEVBQUVHLENBQUMsR0FBR0gsTUFBTSxFQUFFRyxDQUFDLEVBQUUsRUFBRTtNQUNyRCxNQUFNakMsYUFBYTtNQUVuQixNQUFNc0MsR0FBRyxHQUFHTixJQUFJLENBQUNDLENBQUMsQ0FBQztNQUNuQixLQUFLLElBQUlNLENBQUMsR0FBRyxDQUFDLEVBQUVDLElBQUksR0FBR0YsR0FBRyxDQUFDUixNQUFNLEVBQUVTLENBQUMsR0FBR0MsSUFBSSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtRQUNoRCxNQUFNSixNQUFNLEdBQUdSLE9BQU8sQ0FBQ1ksQ0FBQyxDQUFDO1FBQ3pCLE1BQU01QixLQUFLLEdBQUcyQixHQUFHLENBQUNDLENBQUMsQ0FBQztRQUVwQixNQUFNRSxLQUFLLEdBQUc7VUFDWjlCLEtBQUssRUFBRXdCLE1BQU0sQ0FBQzVCLElBQUksQ0FBQ21DLFFBQVEsQ0FBQy9CLEtBQUssRUFBRUQsU0FBUyxDQUFDaUMsU0FBUyxDQUFDO1VBQ3ZEYixNQUFNLEVBQUVLLE1BQU0sQ0FBQ0wsTUFBTTtVQUNyQmMsS0FBSyxFQUFFVCxNQUFNLENBQUNTLEtBQUs7VUFDbkJDLFNBQVMsRUFBRVYsTUFBTSxDQUFDVTtRQUNwQixDQUFDOztRQUVEO1FBQ0EsTUFBTVYsTUFBTSxDQUFDNUIsSUFBSSxDQUFDa0IsdUJBQXVCLENBQUNnQixLQUFLLEVBQUVmLE9BQU8sQ0FBQztRQUN6RCxPQUFRUyxNQUFNLENBQUM1QixJQUFJLENBQUN3QixxQkFBcUIsQ0FBQ1UsS0FBSyxFQUFFZixPQUFPLENBQUM7TUFDM0Q7SUFDRjtJQUVBLE1BQU12QixhQUFhO0VBQ3JCLENBQUM7RUFFRHVDLFFBQVEsRUFBRSxTQUFBQSxDQUFTL0IsS0FBSyxFQUFpQjtJQUN2QyxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzdCLE1BQU0sSUFBSW1DLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN2QztJQUVBLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNyQyxLQUFLLENBQUNnQixPQUFPLENBQUMsRUFBRTtNQUNqQyxNQUFNLElBQUltQixTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDdkM7SUFFQSxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDckMsS0FBSyxDQUFDcUIsSUFBSSxDQUFDLEVBQUU7TUFDOUIsTUFBTSxJQUFJYyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDdkM7SUFFQSxPQUFPbkMsS0FBSztFQUNkO0FBQ0YsQ0FBQztBQUFDLElBQUFzQyxRQUFBLEdBRWE1QyxHQUFHO0FBQUE2QyxPQUFBLENBQUFuRCxPQUFBLEdBQUFrRCxRQUFBO0FBQ2xCRSxNQUFNLENBQUNELE9BQU8sR0FBRzdDLEdBQUcifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst Variant = {\n  id: 0x62,\n  type: 'SSVARIANTTYPE',\n  name: 'Variant',\n  declaration: function () {\n    return 'sql_variant';\n  },\n  generateTypeInfo() {\n    throw new Error('not implemented');\n  },\n  generateParameterLength() {\n    throw new Error('not implemented');\n  },\n  generateParameterData() {\n    throw new Error('not implemented');\n  },\n  validate() {\n    throw new Error('not implemented');\n  }\n};\nvar _default = Variant;\nexports.default = _default;\nmodule.exports = Variant;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYXJpYW50IiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwiZ2VuZXJhdGVUeXBlSW5mbyIsIkVycm9yIiwiZ2VuZXJhdGVQYXJhbWV0ZXJMZW5ndGgiLCJnZW5lcmF0ZVBhcmFtZXRlckRhdGEiLCJ2YWxpZGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9zcWwtdmFyaWFudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgVmFyaWFudDogRGF0YVR5cGUgPSB7XG4gIGlkOiAweDYyLFxuICB0eXBlOiAnU1NWQVJJQU5UVFlQRScsXG4gIG5hbWU6ICdWYXJpYW50JyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdzcWxfdmFyaWFudCc7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVmFyaWFudDtcbm1vZHVsZS5leHBvcnRzID0gVmFyaWFudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsTUFBTUEsT0FBaUIsR0FBRztFQUN4QkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLGVBQWU7RUFDckJDLElBQUksRUFBRSxTQUFTO0VBRWZDLFdBQVcsRUFBRSxTQUFBQSxDQUFBLEVBQVc7SUFDdEIsT0FBTyxhQUFhO0VBQ3RCLENBQUM7RUFFREMsZ0JBQWdCQSxDQUFBLEVBQUc7SUFDakIsTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyx1QkFBdUJBLENBQUEsRUFBRztJQUN4QixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHFCQUFxQkEsQ0FBQSxFQUFHO0lBQ3RCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcsUUFBUUEsQ0FBQSxFQUFHO0lBQ1QsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEM7QUFDRixDQUFDO0FBQUMsSUFBQUksUUFBQSxHQUVhVixPQUFPO0FBQUFXLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ3RCRyxNQUFNLENBQUNGLE9BQU8sR0FBR1gsT0FBTyJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.typeByName = exports.TYPES = exports.TYPE = void 0;\nvar _null = _interopRequireDefault(require(\"./data-types/null\"));\nvar _tinyint = _interopRequireDefault(require(\"./data-types/tinyint\"));\nvar _bit = _interopRequireDefault(require(\"./data-types/bit\"));\nvar _smallint = _interopRequireDefault(require(\"./data-types/smallint\"));\nvar _int = _interopRequireDefault(require(\"./data-types/int\"));\nvar _smalldatetime = _interopRequireDefault(require(\"./data-types/smalldatetime\"));\nvar _real = _interopRequireDefault(require(\"./data-types/real\"));\nvar _money = _interopRequireDefault(require(\"./data-types/money\"));\nvar _datetime = _interopRequireDefault(require(\"./data-types/datetime\"));\nvar _float = _interopRequireDefault(require(\"./data-types/float\"));\nvar _decimal = _interopRequireDefault(require(\"./data-types/decimal\"));\nvar _numeric = _interopRequireDefault(require(\"./data-types/numeric\"));\nvar _smallmoney = _interopRequireDefault(require(\"./data-types/smallmoney\"));\nvar _bigint = _interopRequireDefault(require(\"./data-types/bigint\"));\nvar _image = _interopRequireDefault(require(\"./data-types/image\"));\nvar _text = _interopRequireDefault(require(\"./data-types/text\"));\nvar _uniqueidentifier = _interopRequireDefault(require(\"./data-types/uniqueidentifier\"));\nvar _intn = _interopRequireDefault(require(\"./data-types/intn\"));\nvar _ntext = _interopRequireDefault(require(\"./data-types/ntext\"));\nvar _bitn = _interopRequireDefault(require(\"./data-types/bitn\"));\nvar _decimaln = _interopRequireDefault(require(\"./data-types/decimaln\"));\nvar _numericn = _interopRequireDefault(require(\"./data-types/numericn\"));\nvar _floatn = _interopRequireDefault(require(\"./data-types/floatn\"));\nvar _moneyn = _interopRequireDefault(require(\"./data-types/moneyn\"));\nvar _datetimen = _interopRequireDefault(require(\"./data-types/datetimen\"));\nvar _varbinary = _interopRequireDefault(require(\"./data-types/varbinary\"));\nvar _varchar = _interopRequireDefault(require(\"./data-types/varchar\"));\nvar _binary = _interopRequireDefault(require(\"./data-types/binary\"));\nvar _char = _interopRequireDefault(require(\"./data-types/char\"));\nvar _nvarchar = _interopRequireDefault(require(\"./data-types/nvarchar\"));\nvar _nchar = _interopRequireDefault(require(\"./data-types/nchar\"));\nvar _xml = _interopRequireDefault(require(\"./data-types/xml\"));\nvar _time = _interopRequireDefault(require(\"./data-types/time\"));\nvar _date = _interopRequireDefault(require(\"./data-types/date\"));\nvar _datetime2 = _interopRequireDefault(require(\"./data-types/datetime2\"));\nvar _datetimeoffset = _interopRequireDefault(require(\"./data-types/datetimeoffset\"));\nvar _udt = _interopRequireDefault(require(\"./data-types/udt\"));\nvar _tvp = _interopRequireDefault(require(\"./data-types/tvp\"));\nvar _sqlVariant = _interopRequireDefault(require(\"./data-types/sql-variant\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst TYPE = {\n  [_null.default.id]: _null.default,\n  [_tinyint.default.id]: _tinyint.default,\n  [_bit.default.id]: _bit.default,\n  [_smallint.default.id]: _smallint.default,\n  [_int.default.id]: _int.default,\n  [_smalldatetime.default.id]: _smalldatetime.default,\n  [_real.default.id]: _real.default,\n  [_money.default.id]: _money.default,\n  [_datetime.default.id]: _datetime.default,\n  [_float.default.id]: _float.default,\n  [_decimal.default.id]: _decimal.default,\n  [_numeric.default.id]: _numeric.default,\n  [_smallmoney.default.id]: _smallmoney.default,\n  [_bigint.default.id]: _bigint.default,\n  [_image.default.id]: _image.default,\n  [_text.default.id]: _text.default,\n  [_uniqueidentifier.default.id]: _uniqueidentifier.default,\n  [_intn.default.id]: _intn.default,\n  [_ntext.default.id]: _ntext.default,\n  [_bitn.default.id]: _bitn.default,\n  [_decimaln.default.id]: _decimaln.default,\n  [_numericn.default.id]: _numericn.default,\n  [_floatn.default.id]: _floatn.default,\n  [_moneyn.default.id]: _moneyn.default,\n  [_datetimen.default.id]: _datetimen.default,\n  [_varbinary.default.id]: _varbinary.default,\n  [_varchar.default.id]: _varchar.default,\n  [_binary.default.id]: _binary.default,\n  [_char.default.id]: _char.default,\n  [_nvarchar.default.id]: _nvarchar.default,\n  [_nchar.default.id]: _nchar.default,\n  [_xml.default.id]: _xml.default,\n  [_time.default.id]: _time.default,\n  [_date.default.id]: _date.default,\n  [_datetime2.default.id]: _datetime2.default,\n  [_datetimeoffset.default.id]: _datetimeoffset.default,\n  [_udt.default.id]: _udt.default,\n  [_tvp.default.id]: _tvp.default,\n  [_sqlVariant.default.id]: _sqlVariant.default\n};\n\n/**\n * <table>\n * <thead>\n *   <tr>\n *     <th>Type</th>\n *     <th>Constant</th>\n *     <th>JavaScript</th>\n *     <th>Result set</th>\n *     <th>Parameter</th>\n *   </tr>\n * </thead>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"5\">Exact numerics</th>\n *   </tr>\n *   <tr>\n *     <td><code>bit</code></td>\n *     <td><code>[[TYPES.Bit]]</code></td>\n *     <td><code>boolean</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>tinyint</code></td>\n *     <td><code>[[TYPES.TinyInt]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>smallint</code></td>\n *     <td><code>[[TYPES.SmallInt]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>int</code></td>\n *     <td><code>[[TYPES.Int]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>bigint</code><sup>1</sup></td>\n *     <td><code>[[TYPES.BigInt]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>numeric</code><sup>2</sup></td>\n *     <td><code>[[TYPES.Numeric]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>decimal</code><sup>2</sup></td>\n *     <td><code>[[TYPES.Decimal]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>smallmoney</code></td>\n *     <td><code>[[TYPES.SmallMoney]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>money</code></td>\n *     <td><code>[[TYPES.Money]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"5\">Approximate numerics</th>\n *   </tr>\n *   <tr>\n *     <td><code>float</code></td>\n *     <td><code>[[TYPES.Float]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>real</code></td>\n *     <td><code>[[TYPES.Real]]</code></td>\n *     <td><code>number</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"4\">Date and Time</th>\n *   </tr>\n *   <tr>\n *     <td><code>smalldatetime</code></td>\n *     <td><code>[[TYPES.SmallDateTime]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>datetime</code></td>\n *     <td><code>[[TYPES.DateTime]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>datetime2</code></td>\n *     <td><code>[[TYPES.DateTime2]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>datetimeoffset</code></td>\n *     <td><code>[[TYPES.DateTimeOffset]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>time</code></td>\n *     <td><code>[[TYPES.Time]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>date</code></td>\n *     <td><code>[[TYPES.Date]]</code></td>\n *     <td><code>Date</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"4\">Character Strings</th>\n *   </tr>\n *   <tr>\n *     <td><code>char</code></td>\n *     <td><code>[[TYPES.Char]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>varchar</code><sup>3</sup></td>\n *     <td><code>[[TYPES.VarChar]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>text</code></td>\n *     <td><code>[[TYPES.Text]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"4\">Unicode Strings</th>\n *   </tr>\n *   <tr>\n *     <td><code>nchar</code></td>\n *     <td><code>[[TYPES.NChar]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>nvarchar</code><sup>3</sup></td>\n *     <td><code>[[TYPES.NVarChar]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>ntext</code></td>\n *     <td><code>[[TYPES.NText]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>-</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"5\">Binary Strings<sup>4</sup></th>\n *   </tr>\n *   <tr>\n *     <td><code>binary</code></td>\n *     <td><code>[[TYPES.Binary]]</code></td>\n *     <td><code>Buffer</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>varbinary</code></td>\n *     <td><code>[[TYPES.VarBinary]]</code></td>\n *     <td><code>Buffer</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>image</code></td>\n *     <td><code>[[TYPES.Image]]</code></td>\n *     <td><code>Buffer</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n * </tbody>\n *\n * <tbody>\n *   <tr class=\"group-heading\">\n *     <th colspan=\"5\">Other Data Types</th>\n *   </tr>\n *   <tr>\n *     <td><code>TVP</code></td>\n *     <td><code>[[TYPES.TVP]]</code></td>\n *     <td><code>Object</code></td>\n *     <td>-</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>UDT</code></td>\n *     <td><code>[[TYPES.UDT]]</code></td>\n *     <td><code>Buffer</code></td>\n *     <td>✓</td>\n *     <td>-</td>\n *   </tr>\n *   <tr>\n *     <td><code>uniqueidentifier</code><sup>4</sup></td>\n *     <td><code>[[TYPES.UniqueIdentifier]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>✓</td>\n *   </tr>\n *   <tr>\n *     <td><code>variant</code></td>\n *     <td><code>[[TYPES.Variant]]</code></td>\n *     <td><code>any</code></td>\n *     <td>✓</td>\n *     <td>-</td>\n *   </tr>\n *   <tr>\n *     <td><code>xml</code></td>\n *     <td><code>[[TYPES.Xml]]</code></td>\n *     <td><code>string</code></td>\n *     <td>✓</td>\n *     <td>-</td>\n *   </tr>\n * </tbody>\n * </table>\n *\n * <ol>\n *   <li>\n *     <h4>BigInt</h4>\n *     <p>\n *       Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a\n *       Javascript <code>number</code> type can represent as an integer.\n *     </p>\n *   </li>\n *   <li>\n *     <h4>Numerical, Decimal</h4>\n *     <p>\n *       For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19.\n *     </p>\n *   </li>\n *   <li>\n *     <h4>VarChar, NVarChar</h4>\n *     <p>\n *       <code>varchar(max)</code> and <code>nvarchar(max)</code> are also supported.\n *     </p>\n *   </li>\n *   <li>\n *     <h4>UniqueIdentifier</h4>\n *     <p>\n *       Values are returned as a 16 byte hexadecimal string.\n *     </p>\n *     <p>\n *       Note that the order of bytes is not the same as the character representation. See\n *       <a href=\"http://msdn.microsoft.com/en-us/library/ms190215.aspx\">Using uniqueidentifier Data</a>\n *       for an example of the different ordering of bytes.\n *     </p>\n *   </li>\n * </ol>\n */\nexports.TYPE = TYPE;\nconst TYPES = {\n  TinyInt: _tinyint.default,\n  Bit: _bit.default,\n  SmallInt: _smallint.default,\n  Int: _int.default,\n  SmallDateTime: _smalldatetime.default,\n  Real: _real.default,\n  Money: _money.default,\n  DateTime: _datetime.default,\n  Float: _float.default,\n  Decimal: _decimal.default,\n  Numeric: _numeric.default,\n  SmallMoney: _smallmoney.default,\n  BigInt: _bigint.default,\n  Image: _image.default,\n  Text: _text.default,\n  UniqueIdentifier: _uniqueidentifier.default,\n  NText: _ntext.default,\n  VarBinary: _varbinary.default,\n  VarChar: _varchar.default,\n  Binary: _binary.default,\n  Char: _char.default,\n  NVarChar: _nvarchar.default,\n  NChar: _nchar.default,\n  Xml: _xml.default,\n  Time: _time.default,\n  Date: _date.default,\n  DateTime2: _datetime2.default,\n  DateTimeOffset: _datetimeoffset.default,\n  UDT: _udt.default,\n  TVP: _tvp.default,\n  Variant: _sqlVariant.default\n};\nexports.TYPES = TYPES;\nconst typeByName = TYPES;\nexports.typeByName = typeByName;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbnVsbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3RpbnlpbnQiLCJfYml0IiwiX3NtYWxsaW50IiwiX2ludCIsIl9zbWFsbGRhdGV0aW1lIiwiX3JlYWwiLCJfbW9uZXkiLCJfZGF0ZXRpbWUiLCJfZmxvYXQiLCJfZGVjaW1hbCIsIl9udW1lcmljIiwiX3NtYWxsbW9uZXkiLCJfYmlnaW50IiwiX2ltYWdlIiwiX3RleHQiLCJfdW5pcXVlaWRlbnRpZmllciIsIl9pbnRuIiwiX250ZXh0IiwiX2JpdG4iLCJfZGVjaW1hbG4iLCJfbnVtZXJpY24iLCJfZmxvYXRuIiwiX21vbmV5biIsIl9kYXRldGltZW4iLCJfdmFyYmluYXJ5IiwiX3ZhcmNoYXIiLCJfYmluYXJ5IiwiX2NoYXIiLCJfbnZhcmNoYXIiLCJfbmNoYXIiLCJfeG1sIiwiX3RpbWUiLCJfZGF0ZSIsIl9kYXRldGltZTIiLCJfZGF0ZXRpbWVvZmZzZXQiLCJfdWR0IiwiX3R2cCIsIl9zcWxWYXJpYW50Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJUWVBFIiwiTnVsbCIsImlkIiwiVGlueUludCIsIkJpdCIsIlNtYWxsSW50IiwiSW50IiwiU21hbGxEYXRlVGltZSIsIlJlYWwiLCJNb25leSIsIkRhdGVUaW1lIiwiRmxvYXQiLCJEZWNpbWFsIiwiTnVtZXJpYyIsIlNtYWxsTW9uZXkiLCJCaWdJbnQiLCJJbWFnZSIsIlRleHQiLCJVbmlxdWVJZGVudGlmaWVyIiwiSW50TiIsIk5UZXh0IiwiQml0TiIsIkRlY2ltYWxOIiwiTnVtZXJpY04iLCJGbG9hdE4iLCJNb25leU4iLCJEYXRlVGltZU4iLCJWYXJCaW5hcnkiLCJWYXJDaGFyIiwiQmluYXJ5IiwiQ2hhciIsIk5WYXJDaGFyIiwiTkNoYXIiLCJYbWwiLCJUaW1lIiwiRGF0ZSIsIkRhdGVUaW1lMiIsIkRhdGVUaW1lT2Zmc2V0IiwiVURUIiwiVFZQIiwiVmFyaWFudCIsImV4cG9ydHMiLCJUWVBFUyIsInR5cGVCeU5hbWUiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS10eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBOdWxsIGZyb20gJy4vZGF0YS10eXBlcy9udWxsJztcbmltcG9ydCBUaW55SW50IGZyb20gJy4vZGF0YS10eXBlcy90aW55aW50JztcbmltcG9ydCBCaXQgZnJvbSAnLi9kYXRhLXR5cGVzL2JpdCc7XG5pbXBvcnQgU21hbGxJbnQgZnJvbSAnLi9kYXRhLXR5cGVzL3NtYWxsaW50JztcbmltcG9ydCBJbnQgZnJvbSAnLi9kYXRhLXR5cGVzL2ludCc7XG5pbXBvcnQgU21hbGxEYXRlVGltZSBmcm9tICcuL2RhdGEtdHlwZXMvc21hbGxkYXRldGltZSc7XG5pbXBvcnQgUmVhbCBmcm9tICcuL2RhdGEtdHlwZXMvcmVhbCc7XG5pbXBvcnQgTW9uZXkgZnJvbSAnLi9kYXRhLXR5cGVzL21vbmV5JztcbmltcG9ydCBEYXRlVGltZSBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWUnO1xuaW1wb3J0IEZsb2F0IGZyb20gJy4vZGF0YS10eXBlcy9mbG9hdCc7XG5pbXBvcnQgRGVjaW1hbCBmcm9tICcuL2RhdGEtdHlwZXMvZGVjaW1hbCc7XG5pbXBvcnQgTnVtZXJpYyBmcm9tICcuL2RhdGEtdHlwZXMvbnVtZXJpYyc7XG5pbXBvcnQgU21hbGxNb25leSBmcm9tICcuL2RhdGEtdHlwZXMvc21hbGxtb25leSc7XG5pbXBvcnQgQmlnSW50IGZyb20gJy4vZGF0YS10eXBlcy9iaWdpbnQnO1xuaW1wb3J0IEltYWdlIGZyb20gJy4vZGF0YS10eXBlcy9pbWFnZSc7XG5pbXBvcnQgVGV4dCBmcm9tICcuL2RhdGEtdHlwZXMvdGV4dCc7XG5pbXBvcnQgVW5pcXVlSWRlbnRpZmllciBmcm9tICcuL2RhdGEtdHlwZXMvdW5pcXVlaWRlbnRpZmllcic7XG5pbXBvcnQgSW50TiBmcm9tICcuL2RhdGEtdHlwZXMvaW50bic7XG5pbXBvcnQgTlRleHQgZnJvbSAnLi9kYXRhLXR5cGVzL250ZXh0JztcbmltcG9ydCBCaXROIGZyb20gJy4vZGF0YS10eXBlcy9iaXRuJztcbmltcG9ydCBEZWNpbWFsTiBmcm9tICcuL2RhdGEtdHlwZXMvZGVjaW1hbG4nO1xuaW1wb3J0IE51bWVyaWNOIGZyb20gJy4vZGF0YS10eXBlcy9udW1lcmljbic7XG5pbXBvcnQgRmxvYXROIGZyb20gJy4vZGF0YS10eXBlcy9mbG9hdG4nO1xuaW1wb3J0IE1vbmV5TiBmcm9tICcuL2RhdGEtdHlwZXMvbW9uZXluJztcbmltcG9ydCBEYXRlVGltZU4gZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGV0aW1lbic7XG5pbXBvcnQgVmFyQmluYXJ5IGZyb20gJy4vZGF0YS10eXBlcy92YXJiaW5hcnknO1xuaW1wb3J0IFZhckNoYXIgZnJvbSAnLi9kYXRhLXR5cGVzL3ZhcmNoYXInO1xuaW1wb3J0IEJpbmFyeSBmcm9tICcuL2RhdGEtdHlwZXMvYmluYXJ5JztcbmltcG9ydCBDaGFyIGZyb20gJy4vZGF0YS10eXBlcy9jaGFyJztcbmltcG9ydCBOVmFyQ2hhciBmcm9tICcuL2RhdGEtdHlwZXMvbnZhcmNoYXInO1xuaW1wb3J0IE5DaGFyIGZyb20gJy4vZGF0YS10eXBlcy9uY2hhcic7XG5pbXBvcnQgWG1sIGZyb20gJy4vZGF0YS10eXBlcy94bWwnO1xuaW1wb3J0IFRpbWUgZnJvbSAnLi9kYXRhLXR5cGVzL3RpbWUnO1xuaW1wb3J0IERhdGUgZnJvbSAnLi9kYXRhLXR5cGVzL2RhdGUnO1xuaW1wb3J0IERhdGVUaW1lMiBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWUyJztcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tICcuL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQnO1xuaW1wb3J0IFVEVCBmcm9tICcuL2RhdGEtdHlwZXMvdWR0JztcbmltcG9ydCBUVlAgZnJvbSAnLi9kYXRhLXR5cGVzL3R2cCc7XG5pbXBvcnQgVmFyaWFudCBmcm9tICcuL2RhdGEtdHlwZXMvc3FsLXZhcmlhbnQnO1xuaW1wb3J0IHsgdHlwZSBDcnlwdG9NZXRhZGF0YSB9IGZyb20gJy4vYWx3YXlzLWVuY3J5cHRlZC90eXBlcyc7XG5cbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBDb2xsYXRpb24gfSBmcm9tICcuL2NvbGxhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyIHtcbiAgdHlwZTogRGF0YVR5cGU7XG4gIG5hbWU6IHN0cmluZztcblxuICB2YWx1ZTogdW5rbm93bjtcblxuICBvdXRwdXQ6IGJvb2xlYW47XG4gIGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcHJlY2lzaW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBzY2FsZT86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBudWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgZm9yY2VFbmNyeXB0PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY3J5cHRvTWV0YWRhdGE/OiBDcnlwdG9NZXRhZGF0YSB8IHVuZGVmaW5lZDtcbiAgZW5jcnlwdGVkVmFsPzogQnVmZmVyIHwgdW5kZWZpbmVkO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1ldGVyRGF0YTxUID0gYW55PiB7XG4gIGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgc2NhbGU/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByZWNpc2lvbj86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb2xsYXRpb24/OiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgdmFsdWU6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVR5cGUge1xuICBpZDogbnVtYmVyO1xuICB0eXBlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcblxuICBkZWNsYXJhdGlvbihwYXJhbWV0ZXI6IFBhcmFtZXRlcik6IHN0cmluZztcbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXI6IFBhcmFtZXRlckRhdGEsIG9wdGlvbnM6IEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMpOiBCdWZmZXI7XG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKHBhcmFtZXRlcjogUGFyYW1ldGVyRGF0YSwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyk6IEJ1ZmZlcjtcbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlcjogUGFyYW1ldGVyRGF0YSwgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyk6IEdlbmVyYXRvcjxCdWZmZXIsIHZvaWQ+O1xuICB2YWxpZGF0ZSh2YWx1ZTogYW55LCBjb2xsYXRpb246IENvbGxhdGlvbiB8IHVuZGVmaW5lZCk6IGFueTsgLy8gVE9ETzogUmVmYWN0b3IgJ2FueScgYW5kIHJlcGxhY2Ugd2l0aCBtb3JlIHNwZWNpZmljIHR5cGUuXG5cbiAgaGFzVGFibGVOYW1lPzogYm9vbGVhbjtcblxuICByZXNvbHZlTGVuZ3RoPzogKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA9PiBudW1iZXI7XG4gIHJlc29sdmVQcmVjaXNpb24/OiAocGFyYW1ldGVyOiBQYXJhbWV0ZXIpID0+IG51bWJlcjtcbiAgcmVzb2x2ZVNjYWxlPzogKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBUWVBFID0ge1xuICBbTnVsbC5pZF06IE51bGwsXG4gIFtUaW55SW50LmlkXTogVGlueUludCxcbiAgW0JpdC5pZF06IEJpdCxcbiAgW1NtYWxsSW50LmlkXTogU21hbGxJbnQsXG4gIFtJbnQuaWRdOiBJbnQsXG4gIFtTbWFsbERhdGVUaW1lLmlkXTogU21hbGxEYXRlVGltZSxcbiAgW1JlYWwuaWRdOiBSZWFsLFxuICBbTW9uZXkuaWRdOiBNb25leSxcbiAgW0RhdGVUaW1lLmlkXTogRGF0ZVRpbWUsXG4gIFtGbG9hdC5pZF06IEZsb2F0LFxuICBbRGVjaW1hbC5pZF06IERlY2ltYWwsXG4gIFtOdW1lcmljLmlkXTogTnVtZXJpYyxcbiAgW1NtYWxsTW9uZXkuaWRdOiBTbWFsbE1vbmV5LFxuICBbQmlnSW50LmlkXTogQmlnSW50LFxuICBbSW1hZ2UuaWRdOiBJbWFnZSxcbiAgW1RleHQuaWRdOiBUZXh0LFxuICBbVW5pcXVlSWRlbnRpZmllci5pZF06IFVuaXF1ZUlkZW50aWZpZXIsXG4gIFtJbnROLmlkXTogSW50TixcbiAgW05UZXh0LmlkXTogTlRleHQsXG4gIFtCaXROLmlkXTogQml0TixcbiAgW0RlY2ltYWxOLmlkXTogRGVjaW1hbE4sXG4gIFtOdW1lcmljTi5pZF06IE51bWVyaWNOLFxuICBbRmxvYXROLmlkXTogRmxvYXROLFxuICBbTW9uZXlOLmlkXTogTW9uZXlOLFxuICBbRGF0ZVRpbWVOLmlkXTogRGF0ZVRpbWVOLFxuICBbVmFyQmluYXJ5LmlkXTogVmFyQmluYXJ5LFxuICBbVmFyQ2hhci5pZF06IFZhckNoYXIsXG4gIFtCaW5hcnkuaWRdOiBCaW5hcnksXG4gIFtDaGFyLmlkXTogQ2hhcixcbiAgW05WYXJDaGFyLmlkXTogTlZhckNoYXIsXG4gIFtOQ2hhci5pZF06IE5DaGFyLFxuICBbWG1sLmlkXTogWG1sLFxuICBbVGltZS5pZF06IFRpbWUsXG4gIFtEYXRlLmlkXTogRGF0ZSxcbiAgW0RhdGVUaW1lMi5pZF06IERhdGVUaW1lMixcbiAgW0RhdGVUaW1lT2Zmc2V0LmlkXTogRGF0ZVRpbWVPZmZzZXQsXG4gIFtVRFQuaWRdOiBVRFQsXG4gIFtUVlAuaWRdOiBUVlAsXG4gIFtWYXJpYW50LmlkXTogVmFyaWFudCxcbn07XG5cbi8qKlxuICogPHRhYmxlPlxuICogPHRoZWFkPlxuICogICA8dHI+XG4gKiAgICAgPHRoPlR5cGU8L3RoPlxuICogICAgIDx0aD5Db25zdGFudDwvdGg+XG4gKiAgICAgPHRoPkphdmFTY3JpcHQ8L3RoPlxuICogICAgIDx0aD5SZXN1bHQgc2V0PC90aD5cbiAqICAgICA8dGg+UGFyYW1ldGVyPC90aD5cbiAqICAgPC90cj5cbiAqIDwvdGhlYWQ+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI1XCI+RXhhY3QgbnVtZXJpY3M8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmJpdDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkJpdF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPmJvb2xlYW48L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT50aW55aW50PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVGlueUludF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnNtYWxsaW50PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuU21hbGxJbnRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5pbnQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5JbnRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5iaWdpbnQ8L2NvZGU+PHN1cD4xPC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5CaWdJbnRdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5udW1lcmljPC9jb2RlPjxzdXA+Mjwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuTnVtZXJpY11dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPm51bWJlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmRlY2ltYWw8L2NvZGU+PHN1cD4yPC9zdXA+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5EZWNpbWFsXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+c21hbGxtb25leTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlNtYWxsTW9uZXldXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5tb25leTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLk1vbmV5XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiA8L3Rib2R5PlxuICpcbiAqIDx0Ym9keT5cbiAqICAgPHRyIGNsYXNzPVwiZ3JvdXAtaGVhZGluZ1wiPlxuICogICAgIDx0aCBjb2xzcGFuPVwiNVwiPkFwcHJveGltYXRlIG51bWVyaWNzPC90aD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5mbG9hdDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkZsb2F0XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+bnVtYmVyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+cmVhbDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlJlYWxdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5udW1iZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI0XCI+RGF0ZSBhbmQgVGltZTwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+c21hbGxkYXRldGltZTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlNtYWxsRGF0ZVRpbWVdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZGF0ZXRpbWU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5EYXRlVGltZV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5kYXRldGltZTI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5EYXRlVGltZTJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5EYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+ZGF0ZXRpbWVvZmZzZXQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5EYXRlVGltZU9mZnNldF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT50aW1lPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVGltZV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5kYXRlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuRGF0ZV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkRhdGU8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI0XCI+Q2hhcmFjdGVyIFN0cmluZ3M8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmNoYXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5DaGFyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+dmFyY2hhcjwvY29kZT48c3VwPjM8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlZhckNoYXJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT50ZXh0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVGV4dF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogPC90Ym9keT5cbiAqXG4gKiA8dGJvZHk+XG4gKiAgIDx0ciBjbGFzcz1cImdyb3VwLWhlYWRpbmdcIj5cbiAqICAgICA8dGggY29sc3Bhbj1cIjRcIj5Vbmljb2RlIFN0cmluZ3M8L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPm5jaGFyPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuTkNoYXJdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5zdHJpbmc8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT5udmFyY2hhcjwvY29kZT48c3VwPjM8L3N1cD48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLk5WYXJDaGFyXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+c3RyaW5nPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+bnRleHQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5OVGV4dF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD4tPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI1XCI+QmluYXJ5IFN0cmluZ3M8c3VwPjQ8L3N1cD48L3RoPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmJpbmFyeTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLkJpbmFyeV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkJ1ZmZlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnZhcmJpbmFyeTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlZhckJpbmFyeV1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkJ1ZmZlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPmltYWdlPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuSW1hZ2VdXTwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5CdWZmZXI8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgICA8dGQ+4pyTPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKlxuICogPHRib2R5PlxuICogICA8dHIgY2xhc3M9XCJncm91cC1oZWFkaW5nXCI+XG4gKiAgICAgPHRoIGNvbHNwYW49XCI1XCI+T3RoZXIgRGF0YSBUeXBlczwvdGg+XG4gKiAgIDwvdHI+XG4gKiAgIDx0cj5cbiAqICAgICA8dGQ+PGNvZGU+VFZQPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVFZQXV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+T2JqZWN0PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPi08L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPlVEVDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlVEVF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPkJ1ZmZlcjwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD4tPC90ZD5cbiAqICAgPC90cj5cbiAqICAgPHRyPlxuICogICAgIDx0ZD48Y29kZT51bmlxdWVpZGVudGlmaWVyPC9jb2RlPjxzdXA+NDwvc3VwPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPltbVFlQRVMuVW5pcXVlSWRlbnRpZmllcl1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnZhcmlhbnQ8L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+W1tUWVBFUy5WYXJpYW50XV08L2NvZGU+PC90ZD5cbiAqICAgICA8dGQ+PGNvZGU+YW55PC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPuKckzwvdGQ+XG4gKiAgICAgPHRkPi08L3RkPlxuICogICA8L3RyPlxuICogICA8dHI+XG4gKiAgICAgPHRkPjxjb2RlPnhtbDwvY29kZT48L3RkPlxuICogICAgIDx0ZD48Y29kZT5bW1RZUEVTLlhtbF1dPC9jb2RlPjwvdGQ+XG4gKiAgICAgPHRkPjxjb2RlPnN0cmluZzwvY29kZT48L3RkPlxuICogICAgIDx0ZD7inJM8L3RkPlxuICogICAgIDx0ZD4tPC90ZD5cbiAqICAgPC90cj5cbiAqIDwvdGJvZHk+XG4gKiA8L3RhYmxlPlxuICpcbiAqIDxvbD5cbiAqICAgPGxpPlxuICogICAgIDxoND5CaWdJbnQ8L2g0PlxuICogICAgIDxwPlxuICogICAgICAgVmFsdWVzIGFyZSByZXR1cm5lZCBhcyBhIHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHZhbHVlcyBjYW4gZXhjZWVkIDUzIGJpdHMgb2Ygc2lnbmlmaWNhbnQgZGF0YSwgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIGFcbiAqICAgICAgIEphdmFzY3JpcHQgPGNvZGU+bnVtYmVyPC9jb2RlPiB0eXBlIGNhbiByZXByZXNlbnQgYXMgYW4gaW50ZWdlci5cbiAqICAgICA8L3A+XG4gKiAgIDwvbGk+XG4gKiAgIDxsaT5cbiAqICAgICA8aDQ+TnVtZXJpY2FsLCBEZWNpbWFsPC9oND5cbiAqICAgICA8cD5cbiAqICAgICAgIEZvciBpbnB1dCBwYXJhbWV0ZXJzLCBkZWZhdWx0IHByZWNpc2lvbiBpcyAxOCBhbmQgZGVmYXVsdCBzY2FsZSBpcyAwLiBNYXhpbXVtIHN1cHBvcnRlZCBwcmVjaXNpb24gaXMgMTkuXG4gKiAgICAgPC9wPlxuICogICA8L2xpPlxuICogICA8bGk+XG4gKiAgICAgPGg0PlZhckNoYXIsIE5WYXJDaGFyPC9oND5cbiAqICAgICA8cD5cbiAqICAgICAgIDxjb2RlPnZhcmNoYXIobWF4KTwvY29kZT4gYW5kIDxjb2RlPm52YXJjaGFyKG1heCk8L2NvZGU+IGFyZSBhbHNvIHN1cHBvcnRlZC5cbiAqICAgICA8L3A+XG4gKiAgIDwvbGk+XG4gKiAgIDxsaT5cbiAqICAgICA8aDQ+VW5pcXVlSWRlbnRpZmllcjwvaDQ+XG4gKiAgICAgPHA+XG4gKiAgICAgICBWYWx1ZXMgYXJlIHJldHVybmVkIGFzIGEgMTYgYnl0ZSBoZXhhZGVjaW1hbCBzdHJpbmcuXG4gKiAgICAgPC9wPlxuICogICAgIDxwPlxuICogICAgICAgTm90ZSB0aGF0IHRoZSBvcmRlciBvZiBieXRlcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGNoYXJhY3RlciByZXByZXNlbnRhdGlvbi4gU2VlXG4gKiAgICAgICA8YSBocmVmPVwiaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zMTkwMjE1LmFzcHhcIj5Vc2luZyB1bmlxdWVpZGVudGlmaWVyIERhdGE8L2E+XG4gKiAgICAgICBmb3IgYW4gZXhhbXBsZSBvZiB0aGUgZGlmZmVyZW50IG9yZGVyaW5nIG9mIGJ5dGVzLlxuICogICAgIDwvcD5cbiAqICAgPC9saT5cbiAqIDwvb2w+XG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFUyA9IHtcbiAgVGlueUludCxcbiAgQml0LFxuICBTbWFsbEludCxcbiAgSW50LFxuICBTbWFsbERhdGVUaW1lLFxuICBSZWFsLFxuICBNb25leSxcbiAgRGF0ZVRpbWUsXG4gIEZsb2F0LFxuICBEZWNpbWFsLFxuICBOdW1lcmljLFxuICBTbWFsbE1vbmV5LFxuICBCaWdJbnQsXG4gIEltYWdlLFxuICBUZXh0LFxuICBVbmlxdWVJZGVudGlmaWVyLFxuICBOVGV4dCxcbiAgVmFyQmluYXJ5LFxuICBWYXJDaGFyLFxuICBCaW5hcnksXG4gIENoYXIsXG4gIE5WYXJDaGFyLFxuICBOQ2hhcixcbiAgWG1sLFxuICBUaW1lLFxuICBEYXRlLFxuICBEYXRlVGltZTIsXG4gIERhdGVUaW1lT2Zmc2V0LFxuICBVRFQsXG4gIFRWUCxcbiAgVmFyaWFudFxufTtcblxuZXhwb3J0IGNvbnN0IHR5cGVCeU5hbWUgPSBUWVBFUztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsSUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksSUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsU0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsUUFBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVcsUUFBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBYixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWEsT0FBQSxHQUFBZCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWUsS0FBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQixpQkFBQSxHQUFBakIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFpQixLQUFBLEdBQUFsQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWtCLE1BQUEsR0FBQW5CLHNCQUFBLENBQUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhUQUMsT0FBQSxDQUFBekMsSUFBQSxHQUFBQSxJQUFBO0FBaVRPLE1BQU0wQyxLQUFLLEdBQUc7RUFDbkJ2QyxPQUFPLEVBQVBBLGdCQUFPO0VBQ1BDLEdBQUcsRUFBSEEsWUFBRztFQUNIQyxRQUFRLEVBQVJBLGlCQUFRO0VBQ1JDLEdBQUcsRUFBSEEsWUFBRztFQUNIQyxhQUFhLEVBQWJBLHNCQUFhO0VBQ2JDLElBQUksRUFBSkEsYUFBSTtFQUNKQyxLQUFLLEVBQUxBLGNBQUs7RUFDTEMsUUFBUSxFQUFSQSxpQkFBUTtFQUNSQyxLQUFLLEVBQUxBLGNBQUs7RUFDTEMsT0FBTyxFQUFQQSxnQkFBTztFQUNQQyxPQUFPLEVBQVBBLGdCQUFPO0VBQ1BDLFVBQVUsRUFBVkEsbUJBQVU7RUFDVkMsTUFBTSxFQUFOQSxlQUFNO0VBQ05DLEtBQUssRUFBTEEsY0FBSztFQUNMQyxJQUFJLEVBQUpBLGFBQUk7RUFDSkMsZ0JBQWdCLEVBQWhCQSx5QkFBZ0I7RUFDaEJFLEtBQUssRUFBTEEsY0FBSztFQUNMTyxTQUFTLEVBQVRBLGtCQUFTO0VBQ1RDLE9BQU8sRUFBUEEsZ0JBQU87RUFDUEMsTUFBTSxFQUFOQSxlQUFNO0VBQ05DLElBQUksRUFBSkEsYUFBSTtFQUNKQyxRQUFRLEVBQVJBLGlCQUFRO0VBQ1JDLEtBQUssRUFBTEEsY0FBSztFQUNMQyxHQUFHLEVBQUhBLFlBQUc7RUFDSEMsSUFBSSxFQUFKQSxhQUFJO0VBQ0pDLElBQUksRUFBSkEsYUFBSTtFQUNKQyxTQUFTLEVBQVRBLGtCQUFTO0VBQ1RDLGNBQWMsRUFBZEEsdUJBQWM7RUFDZEMsR0FBRyxFQUFIQSxZQUFHO0VBQ0hDLEdBQUcsRUFBSEEsWUFBRztFQUNIQyxPQUFPLEVBQVBBO0FBQ0YsQ0FBQztBQUFDQyxPQUFBLENBQUFDLEtBQUEsR0FBQUEsS0FBQTtBQUVLLE1BQU1DLFVBQVUsR0FBR0QsS0FBSztBQUFDRCxPQUFBLENBQUFFLFVBQUEsR0FBQUEsVUFBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Result = exports.NotEnoughDataError = void 0;\nexports.readBVarByte = readBVarByte;\nexports.readBVarChar = readBVarChar;\nexports.readBigInt64LE = readBigInt64LE;\nexports.readBigUInt64LE = readBigUInt64LE;\nexports.readDoubleLE = readDoubleLE;\nexports.readFloatLE = readFloatLE;\nexports.readInt16LE = readInt16LE;\nexports.readInt32LE = readInt32LE;\nexports.readUInt16LE = readUInt16LE;\nexports.readUInt24LE = readUInt24LE;\nexports.readUInt32BE = readUInt32BE;\nexports.readUInt32LE = readUInt32LE;\nexports.readUInt40LE = readUInt40LE;\nexports.readUInt8 = readUInt8;\nexports.readUNumeric128LE = readUNumeric128LE;\nexports.readUNumeric64LE = readUNumeric64LE;\nexports.readUNumeric96LE = readUNumeric96LE;\nexports.readUsVarByte = readUsVarByte;\nexports.readUsVarChar = readUsVarChar;\nclass Result {\n  constructor(value, offset) {\n    this.value = value;\n    this.offset = offset;\n  }\n}\nexports.Result = Result;\nclass NotEnoughDataError extends Error {\n  byteCount;\n  constructor(byteCount) {\n    super();\n    this.byteCount = byteCount;\n  }\n}\nexports.NotEnoughDataError = NotEnoughDataError;\nfunction readUInt8(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 1) {\n    throw new NotEnoughDataError(offset + 1);\n  }\n  return new Result(buf.readUInt8(offset), offset + 1);\n}\nfunction readUInt16LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 2) {\n    throw new NotEnoughDataError(offset + 2);\n  }\n  return new Result(buf.readUInt16LE(offset), offset + 2);\n}\nfunction readInt16LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 2) {\n    throw new NotEnoughDataError(offset + 2);\n  }\n  return new Result(buf.readInt16LE(offset), offset + 2);\n}\nfunction readUInt24LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 3) {\n    throw new NotEnoughDataError(offset + 3);\n  }\n  return new Result(buf.readUIntLE(offset, 3), offset + 3);\n}\nfunction readUInt32LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 4) {\n    throw new NotEnoughDataError(offset + 4);\n  }\n  return new Result(buf.readUInt32LE(offset), offset + 4);\n}\nfunction readUInt32BE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 4) {\n    throw new NotEnoughDataError(offset + 4);\n  }\n  return new Result(buf.readUInt32BE(offset), offset + 4);\n}\nfunction readUInt40LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 5) {\n    throw new NotEnoughDataError(offset + 5);\n  }\n  return new Result(buf.readUIntLE(offset, 5), offset + 5);\n}\nfunction readInt32LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 4) {\n    throw new NotEnoughDataError(offset + 4);\n  }\n  return new Result(buf.readInt32LE(offset), offset + 4);\n}\nfunction readBigUInt64LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 8) {\n    throw new NotEnoughDataError(offset + 8);\n  }\n  return new Result(buf.readBigUInt64LE(offset), offset + 8);\n}\nfunction readBigInt64LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 8) {\n    throw new NotEnoughDataError(offset + 8);\n  }\n  return new Result(buf.readBigInt64LE(offset), offset + 8);\n}\nfunction readFloatLE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 4) {\n    throw new NotEnoughDataError(offset + 4);\n  }\n  return new Result(buf.readFloatLE(offset), offset + 4);\n}\nfunction readDoubleLE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 8) {\n    throw new NotEnoughDataError(offset + 8);\n  }\n  return new Result(buf.readDoubleLE(offset), offset + 8);\n}\nfunction readBVarChar(buf, offset) {\n  offset = +offset;\n  let charCount;\n  ({\n    offset,\n    value: charCount\n  } = readUInt8(buf, offset));\n  const byteLength = charCount * 2;\n  if (buf.length < offset + byteLength) {\n    throw new NotEnoughDataError(offset + byteLength);\n  }\n  return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\nfunction readBVarByte(buf, offset) {\n  offset = +offset;\n  let byteLength;\n  ({\n    offset,\n    value: byteLength\n  } = readUInt8(buf, offset));\n  if (buf.length < offset + byteLength) {\n    throw new NotEnoughDataError(offset + byteLength);\n  }\n  return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\nfunction readUsVarChar(buf, offset) {\n  offset = +offset;\n  let charCount;\n  ({\n    offset,\n    value: charCount\n  } = readUInt16LE(buf, offset));\n  const byteLength = charCount * 2;\n  if (buf.length < offset + byteLength) {\n    throw new NotEnoughDataError(offset + byteLength);\n  }\n  return new Result(buf.toString('ucs2', offset, offset + byteLength), offset + byteLength);\n}\nfunction readUsVarByte(buf, offset) {\n  offset = +offset;\n  let byteLength;\n  ({\n    offset,\n    value: byteLength\n  } = readUInt16LE(buf, offset));\n  if (buf.length < offset + byteLength) {\n    throw new NotEnoughDataError(offset + byteLength);\n  }\n  return new Result(buf.slice(offset, offset + byteLength), offset + byteLength);\n}\nfunction readUNumeric64LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 8) {\n    throw new NotEnoughDataError(offset + 8);\n  }\n  const low = buf.readUInt32LE(offset);\n  const high = buf.readUInt32LE(offset + 4);\n  return new Result(0x100000000 * high + low, offset + 8);\n}\nfunction readUNumeric96LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 12) {\n    throw new NotEnoughDataError(offset + 12);\n  }\n  const dword1 = buf.readUInt32LE(offset);\n  const dword2 = buf.readUInt32LE(offset + 4);\n  const dword3 = buf.readUInt32LE(offset + 8);\n  return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3, offset + 12);\n}\nfunction readUNumeric128LE(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 16) {\n    throw new NotEnoughDataError(offset + 16);\n  }\n  const dword1 = buf.readUInt32LE(offset);\n  const dword2 = buf.readUInt32LE(offset + 4);\n  const dword3 = buf.readUInt32LE(offset + 8);\n  const dword4 = buf.readUInt32LE(offset + 12);\n  return new Result(dword1 + 0x100000000 * dword2 + 0x100000000 * 0x100000000 * dword3 + 0x100000000 * 0x100000000 * 0x100000000 * dword4, offset + 16);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXN1bHQiLCJjb25zdHJ1Y3RvciIsInZhbHVlIiwib2Zmc2V0IiwiZXhwb3J0cyIsIk5vdEVub3VnaERhdGFFcnJvciIsIkVycm9yIiwiYnl0ZUNvdW50IiwicmVhZFVJbnQ4IiwiYnVmIiwibGVuZ3RoIiwicmVhZFVJbnQxNkxFIiwicmVhZEludDE2TEUiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludExFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZFVJbnQ0MExFIiwicmVhZEludDMyTEUiLCJyZWFkQmlnVUludDY0TEUiLCJyZWFkQmlnSW50NjRMRSIsInJlYWRGbG9hdExFIiwicmVhZERvdWJsZUxFIiwicmVhZEJWYXJDaGFyIiwiY2hhckNvdW50IiwiYnl0ZUxlbmd0aCIsInRvU3RyaW5nIiwicmVhZEJWYXJCeXRlIiwic2xpY2UiLCJyZWFkVXNWYXJDaGFyIiwicmVhZFVzVmFyQnl0ZSIsInJlYWRVTnVtZXJpYzY0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVOdW1lcmljOTZMRSIsImR3b3JkMSIsImR3b3JkMiIsImR3b3JkMyIsInJlYWRVTnVtZXJpYzEyOExFIiwiZHdvcmQ0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2hlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFJlc3VsdDxUPiB7XG4gIGRlY2xhcmUgdmFsdWU6IFQ7XG4gIGRlY2xhcmUgb2Zmc2V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQsIG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RFbm91Z2hEYXRhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGJ5dGVDb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGJ5dGVDb3VudDogbnVtYmVyKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYnl0ZUNvdW50ID0gYnl0ZUNvdW50O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDgoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgMSkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQ4KG9mZnNldCksIG9mZnNldCArIDEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MTZMRShvZmZzZXQpLCBvZmZzZXQgKyAyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQxNkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDIpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDIpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQxNkxFKG9mZnNldCksIG9mZnNldCArIDIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQyNExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDMpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50TEUob2Zmc2V0LCAzKSwgb2Zmc2V0ICsgMyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZFVJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRVSW50MzJCRShvZmZzZXQpLCBvZmZzZXQgKyA0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVSW50NDBMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA1KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA1KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KGJ1Zi5yZWFkVUludExFKG9mZnNldCwgNSksIG9mZnNldCArIDUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnQzMkxFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDQpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDQpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRJbnQzMkxFKG9mZnNldCksIG9mZnNldCArIDQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdVSW50NjRMRShvZmZzZXQpLCBvZmZzZXQgKyA4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxiaWdpbnQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnJlYWRCaWdJbnQ2NExFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZsb2F0TEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgNCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgNCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZEZsb2F0TEUob2Zmc2V0KSwgb2Zmc2V0ICsgNCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRG91YmxlTEUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgOCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgOCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYucmVhZERvdWJsZUxFKG9mZnNldCksIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRCVmFyQnl0ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8QnVmZmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgbGV0IGJ5dGVMZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IGJ5dGVMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBieXRlTGVuZ3RoKSwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVXNWYXJDaGFyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxzdHJpbmc+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgY2hhckNvdW50O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjaGFyQ291bnQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGJ5dGVMZW5ndGggPSBjaGFyQ291bnQgKiAyO1xuXG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgYnl0ZUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYudG9TdHJpbmcoJ3VjczInLCBvZmZzZXQsIG9mZnNldCArIGJ5dGVMZW5ndGgpLCBvZmZzZXQgKyBieXRlTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVc1ZhckJ5dGUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PEJ1ZmZlcj4ge1xuICBvZmZzZXQgPSArb2Zmc2V0O1xuXG4gIGxldCBieXRlTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBieXRlTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIGJ5dGVMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIGJ5dGVMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgYnl0ZUxlbmd0aCksIG9mZnNldCArIGJ5dGVMZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljNjRMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyA4KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyA4KTtcbiAgfVxuXG4gIGNvbnN0IGxvdyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgY29uc3QgaGlnaCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3csIG9mZnNldCArIDgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVOdW1lcmljOTZMRShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIG9mZnNldCA9ICtvZmZzZXQ7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyAxMikge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgMTIpO1xuICB9XG5cbiAgY29uc3QgZHdvcmQxID0gYnVmLnJlYWRVSW50MzJMRShvZmZzZXQpO1xuICBjb25zdCBkd29yZDIgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDQpO1xuICBjb25zdCBkd29yZDMgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCArIDgpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMyksIG9mZnNldCArIDEyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRVTnVtZXJpYzEyOExFKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDE2KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyAxNik7XG4gIH1cblxuICBjb25zdCBkd29yZDEgPSBidWYucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIGNvbnN0IGR3b3JkMiA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgNCk7XG4gIGNvbnN0IGR3b3JkMyA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgOCk7XG4gIGNvbnN0IGR3b3JkNCA9IGJ1Zi5yZWFkVUludDMyTEUob2Zmc2V0ICsgMTIpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KGR3b3JkMSArICgweDEwMDAwMDAwMCAqIGR3b3JkMikgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkMykgKyAoMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQ0KSwgb2Zmc2V0ICsgMTYpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sTUFBTUEsTUFBTSxDQUFJO0VBSXJCQyxXQUFXQSxDQUFDQyxLQUFRLEVBQUVDLE1BQWMsRUFBRTtJQUNwQyxJQUFJLENBQUNELEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNDLE1BQU0sR0FBR0EsTUFBTTtFQUN0QjtBQUNGO0FBQUNDLE9BQUEsQ0FBQUosTUFBQSxHQUFBQSxNQUFBO0FBRU0sTUFBTUssa0JBQWtCLFNBQVNDLEtBQUssQ0FBQztFQUM1Q0MsU0FBUztFQUVUTixXQUFXQSxD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nexports.readCollation = readCollation;\nexports.readMetadata = readMetadata;\nvar _collation = require(\"./collation\");\nvar _dataType = require(\"./data-type\");\nvar _sprintfJs = require(\"sprintf-js\");\nvar _helpers = require(\"./token/helpers\");\nfunction readCollation(buf, offset) {\n  offset = +offset;\n  if (buf.length < offset + 5) {\n    throw new _helpers.NotEnoughDataError(offset + 5);\n  }\n  const collation = _collation.Collation.fromBuffer(buf.slice(offset, offset + 5));\n  return new _helpers.Result(collation, offset + 5);\n}\nfunction readSchema(buf, offset) {\n  offset = +offset;\n  let schemaPresent;\n  ({\n    offset,\n    value: schemaPresent\n  } = (0, _helpers.readUInt8)(buf, offset));\n  if (schemaPresent !== 0x01) {\n    return new _helpers.Result(undefined, offset);\n  }\n  let dbname;\n  ({\n    offset,\n    value: dbname\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let owningSchema;\n  ({\n    offset,\n    value: owningSchema\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let xmlSchemaCollection;\n  ({\n    offset,\n    value: xmlSchemaCollection\n  } = (0, _helpers.readUsVarChar)(buf, offset));\n  return new _helpers.Result({\n    dbname,\n    owningSchema,\n    xmlSchemaCollection\n  }, offset);\n}\nfunction readUDTInfo(buf, offset) {\n  let maxByteSize;\n  ({\n    offset,\n    value: maxByteSize\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  let dbname;\n  ({\n    offset,\n    value: dbname\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let owningSchema;\n  ({\n    offset,\n    value: owningSchema\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let typeName;\n  ({\n    offset,\n    value: typeName\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let assemblyName;\n  ({\n    offset,\n    value: assemblyName\n  } = (0, _helpers.readUsVarChar)(buf, offset));\n  return new _helpers.Result({\n    maxByteSize: maxByteSize,\n    dbname: dbname,\n    owningSchema: owningSchema,\n    typeName: typeName,\n    assemblyName: assemblyName\n  }, offset);\n}\nfunction readMetadata(buf, offset, options) {\n  let userType;\n  ({\n    offset,\n    value: userType\n  } = (options.tdsVersion < '7_2' ? _helpers.readUInt16LE : _helpers.readUInt32LE)(buf, offset));\n  let flags;\n  ({\n    offset,\n    value: flags\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  let typeNumber;\n  ({\n    offset,\n    value: typeNumber\n  } = (0, _helpers.readUInt8)(buf, offset));\n  const type = _dataType.TYPE[typeNumber];\n  if (!type) {\n    throw new Error((0, _sprintfJs.sprintf)('Unrecognised data type 0x%02X', typeNumber));\n  }\n  switch (type.name) {\n    case 'Null':\n    case 'TinyInt':\n    case 'SmallInt':\n    case 'Int':\n    case 'BigInt':\n    case 'Real':\n    case 'Float':\n    case 'SmallMoney':\n    case 'Money':\n    case 'Bit':\n    case 'SmallDateTime':\n    case 'DateTime':\n    case 'Date':\n      return new _helpers.Result({\n        userType: userType,\n        flags: flags,\n        type: type,\n        collation: undefined,\n        precision: undefined,\n        scale: undefined,\n        dataLength: undefined,\n        schema: undefined,\n        udtInfo: undefined\n      }, offset);\n    case 'IntN':\n    case 'FloatN':\n    case 'MoneyN':\n    case 'BitN':\n    case 'UniqueIdentifier':\n    case 'DateTimeN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'Variant':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'VarChar':\n    case 'Char':\n    case 'NVarChar':\n    case 'NChar':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        let collation;\n        ({\n          offset,\n          value: collation\n        } = readCollation(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: collation,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'Text':\n    case 'NText':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        let collation;\n        ({\n          offset,\n          value: collation\n        } = readCollation(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: collation,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'VarBinary':\n    case 'Binary':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'Image':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'Xml':\n      {\n        let schema;\n        ({\n          offset,\n          value: schema\n        } = readSchema(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: undefined,\n          schema: schema,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'Time':\n    case 'DateTime2':\n    case 'DateTimeOffset':\n      {\n        let scale;\n        ({\n          offset,\n          value: scale\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: scale,\n          dataLength: undefined,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'NumericN':\n    case 'DecimalN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        let precision;\n        ({\n          offset,\n          value: precision\n        } = (0, _helpers.readUInt8)(buf, offset));\n        let scale;\n        ({\n          offset,\n          value: scale\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: precision,\n          scale: scale,\n          dataLength: dataLength,\n          schema: undefined,\n          udtInfo: undefined\n        }, offset);\n      }\n    case 'UDT':\n      {\n        let udtInfo;\n        ({\n          offset,\n          value: udtInfo\n        } = readUDTInfo(buf, offset));\n        return new _helpers.Result({\n          userType: userType,\n          flags: flags,\n          type: type,\n          collation: undefined,\n          precision: undefined,\n          scale: undefined,\n          dataLength: undefined,\n          schema: undefined,\n          udtInfo: udtInfo\n        }, offset);\n      }\n    default:\n      throw new Error((0, _sprintfJs.sprintf)('Unrecognised type %s', type.name));\n  }\n}\nfunction metadataParse(parser, options, callback) {\n  (async () => {\n    while (true) {\n      let result;\n      try {\n        result = readMetadata(parser.buffer, parser.position, options);\n      } catch (err) {\n        if (err instanceof _helpers.NotEnoughDataError) {\n          await parser.waitForChunk();\n          continue;\n        }\n        throw err;\n      }\n      parser.position = result.offset;\n      return callback(result.value);\n    }\n  })();\n}\nvar _default = metadataParse;\nexports.default = _default;\nmodule.exports = metadataParse;\nmodule.exports.readCollation = readCollation;\nmodule.exports.readMetadata = readMetadata;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJfaGVscGVycyIsInJlYWRDb2xsYXRpb24iLCJidWYiLCJvZmZzZXQiLCJsZW5ndGgiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJjb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwic2xpY2UiLCJSZXN1bHQiLCJyZWFkU2NoZW1hIiwic2NoZW1hUHJlc2VudCIsInZhbHVlIiwicmVhZFVJbnQ4IiwidW5kZWZpbmVkIiwiZGJuYW1lIiwicmVhZEJWYXJDaGFyIiwib3duaW5nU2NoZW1hIiwieG1sU2NoZW1hQ29sbGVjdGlvbiIsInJlYWRVc1ZhckNoYXIiLCJyZWFkVURUSW5mbyIsIm1heEJ5dGVTaXplIiwicmVhZFVJbnQxNkxFIiwidHlwZU5hbWUiLCJhc3NlbWJseU5hbWUiLCJyZWFkTWV0YWRhdGEiLCJvcHRpb25zIiwidXNlclR5cGUiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIm1ldGFkYXRhUGFyc2UiLCJwYXJzZXIiLCJjYWxsYmFjayIsInJlc3VsdCIsImJ1ZmZlciIsInBvc2l0aW9uIiwiZXJyIiwid2FpdEZvckNodW5rIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVFlQRSwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmltcG9ydCB7IFJlc3VsdCwgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDgsIHJlYWRCVmFyQ2hhciwgcmVhZFVzVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyTEUgfSBmcm9tICcuL3Rva2VuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5mdW5jdGlvbiByZWFkQ29sbGF0aW9uKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxDb2xsYXRpb24+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDUpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDUpO1xuICB9XG5cbiAgY29uc3QgY29sbGF0aW9uID0gQ29sbGF0aW9uLmZyb21CdWZmZXIoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNSkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChjb2xsYXRpb24sIG9mZnNldCArIDUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxYbWxTY2hlbWEgfCB1bmRlZmluZWQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgc2NoZW1hUHJlc2VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NoZW1hUHJlc2VudCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKHNjaGVtYVByZXNlbnQgIT09IDB4MDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCk7XG4gIH1cblxuICBsZXQgZGJuYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYm5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBvd25pbmdTY2hlbWE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG93bmluZ1NjaGVtYSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHhtbFNjaGVtYUNvbGxlY3Rpb247XG4gICh7IG9mZnNldCwgdmFsdWU6IHhtbFNjaGVtYUNvbGxlY3Rpb24gfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IGRibmFtZSwgb3duaW5nU2NoZW1hLCB4bWxTY2hlbWFDb2xsZWN0aW9uIH0sIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxVZHRJbmZvPiB7XG4gIGxldCBtYXhCeXRlU2l6ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWF4Qnl0ZVNpemUgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBkYm5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRibmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IG93bmluZ1NjaGVtYTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogb3duaW5nU2NoZW1hIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHR5cGVOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYXNzZW1ibHlOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBhc3NlbWJseU5hbWUgfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgIGRibmFtZTogZGJuYW1lLFxuICAgIG93bmluZ1NjaGVtYTogb3duaW5nU2NoZW1hLFxuICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICB9LCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTWV0YWRhdGEoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PE1ldGFkYXRhPiB7XG4gIGxldCB1c2VyVHlwZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdXNlclR5cGUgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRSA6IHJlYWRVSW50MzJMRSkoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZmxhZ3M7XG4gICh7IG9mZnNldCwgdmFsdWU6IGZsYWdzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZTogRGF0YVR5cGUgPSBUWVBFW3R5cGVOdW1iZXJdO1xuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICBjYXNlICdJbnQnOlxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgY2FzZSAnUmVhbCc6XG4gICAgY2FzZSAnRmxvYXQnOlxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICBjYXNlICdCaXQnOlxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICBjYXNlICdNb25leU4nOlxuICAgIGNhc2UgJ0JpdE4nOlxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgIGNhc2UgJ0RhdGVUaW1lTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJpYW50Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBjb2xsYXRpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xsYXRpb24gfSA9IHJlYWRDb2xsYXRpb24oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IGNvbGxhdGlvbjtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbGxhdGlvbiB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICBjYXNlICdCaW5hcnknOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW1hZ2UnOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnWG1sJzoge1xuICAgICAgbGV0IHNjaGVtYTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHNjaGVtYSB9ID0gcmVhZFNjaGVtYShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICBjYXNlICdEYXRlVGltZTInOlxuICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0Jzoge1xuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NhbGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBwcmVjaXNpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwcmVjaXNpb24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBzY2FsZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIGxldCB1ZHRJbmZvO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdWR0SW5mbyB9ID0gcmVhZFVEVEluZm8oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAoYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gcmVhZE1ldGFkYXRhKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSk7XG4gICAgfVxuICB9KSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiwgcmVhZE1ldGFkYXRhIH07XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YWRhdGFQYXJzZTtcbm1vZHVsZS5leHBvcnRzLnJlYWRDb2xsYXRpb24gPSByZWFkQ29sbGF0aW9uO1xubW9kdWxlLmV4cG9ydHMucmVhZE1ldGFkYXRhID0gcmVhZE1ldGFkYXRhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQWtEQSxTQUFTSSxhQUFhQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBcUI7RUFDckVBLE1BQU0sR0FBRyxDQUFDQSxNQUFNO0VBRWhCLElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxHQUFHRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLE1BQU0sSUFBSUUsMkJBQWtCLENBQUNGLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDMUM7RUFFQSxNQUFNRyxTQUFTLEdBQUdDLG9C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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _metadataParser = require(\"../metadata-parser\");\nvar _token = require(\"./token\");\nvar _helpers = require(\"./helpers\");\nfunction readTableName(buf, offset, metadata, options) {\n  if (!metadata.type.hasTableName) {\n    return new _helpers.Result(undefined, offset);\n  }\n  if (options.tdsVersion < '7_2') {\n    return (0, _helpers.readUsVarChar)(buf, offset);\n  }\n  let numberOfTableNameParts;\n  ({\n    offset,\n    value: numberOfTableNameParts\n  } = (0, _helpers.readUInt8)(buf, offset));\n  const tableName = [];\n  for (let i = 0; i < numberOfTableNameParts; i++) {\n    let tableNamePart;\n    ({\n      offset,\n      value: tableNamePart\n    } = (0, _helpers.readUsVarChar)(buf, offset));\n    tableName.push(tableNamePart);\n  }\n  return new _helpers.Result(tableName, offset);\n}\nfunction readColumnName(buf, offset, index, metadata, options) {\n  let colName;\n  ({\n    offset,\n    value: colName\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  if (options.columnNameReplacer) {\n    return new _helpers.Result(options.columnNameReplacer(colName, index, metadata), offset);\n  } else if (options.camelCaseColumns) {\n    return new _helpers.Result(colName.replace(/^[A-Z]/, function (s) {\n      return s.toLowerCase();\n    }), offset);\n  } else {\n    return new _helpers.Result(colName, offset);\n  }\n}\nfunction readColumn(buf, offset, options, index) {\n  let metadata;\n  ({\n    offset,\n    value: metadata\n  } = (0, _metadataParser.readMetadata)(buf, offset, options));\n  let tableName;\n  ({\n    offset,\n    value: tableName\n  } = readTableName(buf, offset, metadata, options));\n  let colName;\n  ({\n    offset,\n    value: colName\n  } = readColumnName(buf, offset, index, metadata, options));\n  return new _helpers.Result({\n    userType: metadata.userType,\n    flags: metadata.flags,\n    type: metadata.type,\n    collation: metadata.collation,\n    precision: metadata.precision,\n    scale: metadata.scale,\n    udtInfo: metadata.udtInfo,\n    dataLength: metadata.dataLength,\n    schema: metadata.schema,\n    colName: colName,\n    tableName: tableName\n  }, offset);\n}\nasync function colMetadataParser(parser) {\n  let columnCount;\n  while (true) {\n    let offset;\n    try {\n      ({\n        offset,\n        value: columnCount\n      } = (0, _helpers.readUInt16LE)(parser.buffer, parser.position));\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        await parser.waitForChunk();\n        continue;\n      }\n      throw err;\n    }\n    parser.position = offset;\n    break;\n  }\n  const columns = [];\n  for (let i = 0; i < columnCount; i++) {\n    while (true) {\n      let column;\n      let offset;\n      try {\n        ({\n          offset,\n          value: column\n        } = readColumn(parser.buffer, parser.position, parser.options, i));\n      } catch (err) {\n        if (err instanceof _helpers.NotEnoughDataError) {\n          await parser.waitForChunk();\n          continue;\n        }\n        throw err;\n      }\n      parser.position = offset;\n      columns.push(column);\n      break;\n    }\n  }\n  return new _token.ColMetadataToken(columns);\n}\nvar _default = colMetadataParser;\nexports.default = _default;\nmodule.exports = colMetadataParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWV0YWRhdGFQYXJzZXIiLCJyZXF1aXJlIiwiX3Rva2VuIiwiX2hlbHBlcnMiLCJyZWFkVGFibGVOYW1lIiwiYnVmIiwib2Zmc2V0IiwibWV0YWRhdGEiLCJvcHRpb25zIiwidHlwZSIsImhhc1RhYmxlTmFtZSIsIlJlc3VsdCIsInVuZGVmaW5lZCIsInRkc1ZlcnNpb24iLCJyZWFkVXNWYXJDaGFyIiwibnVtYmVyT2ZUYWJsZU5hbWVQYXJ0cyIsInZhbHVlIiwicmVhZFVJbnQ4IiwidGFibGVOYW1lIiwiaSIsInRhYmxlTmFtZVBhcnQiLCJwdXNoIiwicmVhZENvbHVtbk5hbWUiLCJpbmRleCIsImNvbE5hbWUiLCJyZWFkQlZhckNoYXIiLCJjb2x1bW5OYW1lUmVwbGFjZXIiLCJjYW1lbENhc2VDb2x1bW5zIiwicmVwbGFjZSIsInMiLCJ0b0xvd2VyQ2FzZSIsInJlYWRDb2x1bW4iLCJyZWFkTWV0YWRhdGEiLCJ1c2VyVHlwZSIsImZsYWdzIiwiY29sbGF0aW9uIiwicHJlY2lzaW9uIiwic2NhbGUiLCJ1ZHRJbmZvIiwiZGF0YUxlbmd0aCIsInNjaGVtYSIsImNvbE1ldGFkYXRhUGFyc2VyIiwicGFyc2VyIiwiY29sdW1uQ291bnQiLCJyZWFkVUludDE2TEUiLCJidWZmZXIiLCJwb3NpdGlvbiIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIndhaXRGb3JDaHVuayIsImNvbHVtbnMiLCJjb2x1bW4iLCJDb2xNZXRhZGF0YVRva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZE1ldGFkYXRhLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCBSZXN1bHQsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDgsIHJlYWRVc1ZhckNoYXIgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk1ldGFkYXRhIGV4dGVuZHMgTWV0YWRhdGEge1xuICAvKipcbiAgICogVGhlIGNvbHVtbidzIG5hbWXjgIJcbiAgICovXG4gIGNvbE5hbWU6IHN0cmluZztcblxuICB0YWJsZU5hbWU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhYmxlTmFtZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSwgb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIW1ldGFkYXRhLnR5cGUuaGFzVGFibGVOYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgcmV0dXJuIHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpO1xuICB9XG5cbiAgbGV0IG51bWJlck9mVGFibGVOYW1lUGFydHM7XG4gICh7IG9mZnNldCwgdmFsdWU6IG51bWJlck9mVGFibGVOYW1lUGFydHMgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IHRhYmxlTmFtZTogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZlRhYmxlTmFtZVBhcnRzOyBpKyspIHtcbiAgICBsZXQgdGFibGVOYW1lUGFydDtcbiAgICAoeyBvZmZzZXQsIHZhbHVlOiB0YWJsZU5hbWVQYXJ0IH0gPSByZWFkVXNWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICB0YWJsZU5hbWUucHVzaCh0YWJsZU5hbWVQYXJ0KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KHRhYmxlTmFtZSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZENvbHVtbk5hbWUoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBpbmRleDogbnVtYmVyLCBtZXRhZGF0YTogTWV0YWRhdGEsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gIGxldCBjb2xOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAob3B0aW9ucy5jb2x1bW5OYW1lUmVwbGFjZXIpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdChvcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlcihjb2xOYW1lLCBpbmRleCwgbWV0YWRhdGEpLCBvZmZzZXQpO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucykge1xuICAgIHJldHVybiBuZXcgUmVzdWx0KGNvbE5hbWUucmVwbGFjZSgvXltBLVpdLywgZnVuY3Rpb24ocykge1xuICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKTtcbiAgICB9KSwgb2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdChjb2xOYW1lLCBvZmZzZXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRDb2x1bW4oYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBpbmRleDogbnVtYmVyKSB7XG4gIGxldCBtZXRhZGF0YTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWV0YWRhdGEgfSA9IHJlYWRNZXRhZGF0YShidWYsIG9mZnNldCwgb3B0aW9ucykpO1xuXG4gIGxldCB0YWJsZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRhYmxlTmFtZSB9ID0gcmVhZFRhYmxlTmFtZShidWYsIG9mZnNldCwgbWV0YWRhdGEsIG9wdGlvbnMpKTtcblxuICBsZXQgY29sTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sTmFtZSB9ID0gcmVhZENvbHVtbk5hbWUoYnVmLCBvZmZzZXQsIGluZGV4LCBtZXRhZGF0YSwgb3B0aW9ucykpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICB1c2VyVHlwZTogbWV0YWRhdGEudXNlclR5cGUsXG4gICAgZmxhZ3M6IG1ldGFkYXRhLmZsYWdzLFxuICAgIHR5cGU6IG1ldGFkYXRhLnR5cGUsXG4gICAgY29sbGF0aW9uOiBtZXRhZGF0YS5jb2xsYXRpb24sXG4gICAgcHJlY2lzaW9uOiBtZXRhZGF0YS5wcmVjaXNpb24sXG4gICAgc2NhbGU6IG1ldGFkYXRhLnNjYWxlLFxuICAgIHVkdEluZm86IG1ldGFkYXRhLnVkdEluZm8sXG4gICAgZGF0YUxlbmd0aDogbWV0YWRhdGEuZGF0YUxlbmd0aCxcbiAgICBzY2hlbWE6IG1ldGFkYXRhLnNjaGVtYSxcbiAgICBjb2xOYW1lOiBjb2xOYW1lLFxuICAgIHRhYmxlTmFtZTogdGFibGVOYW1lXG4gIH0sIG9mZnNldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbE1ldGFkYXRhUGFyc2VyKHBhcnNlcjogUGFyc2VyKTogUHJvbWlzZTxDb2xNZXRhZGF0YVRva2VuPiB7XG4gIGxldCBjb2x1bW5Db3VudDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGxldCBvZmZzZXQ7XG5cbiAgICB0cnkge1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uQ291bnQgfSA9IHJlYWRVSW50MTZMRShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbk1ldGFkYXRhW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBjb2x1bW46IENvbHVtbk1ldGFkYXRhO1xuICAgICAgbGV0IG9mZnNldDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uIH0gPSByZWFkQ29sdW1uKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgcGFyc2VyLm9wdGlvbnMsIGkpKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICBhd2FpdCBwYXJzZXIud2FpdEZvckNodW5rKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IENvbE1ldGFkYXRhVG9rZW4oY29sdW1ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbE1ldGFkYXRhUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBjb2xNZXRhZGF0YVBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBV0EsU0FBU0csYUFBYUEsQ0FBQ0MsR0FBVyxF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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.doneInProcParser = doneInProcParser;\nexports.doneParser = doneParser;\nexports.doneProcParser = doneProcParser;\nvar _token = require(\"./token\");\nvar _helpers = require(\"./helpers\");\n// s2.2.7.5/6/7\n\nconst STATUS = {\n  MORE: 0x0001,\n  ERROR: 0x0002,\n  // This bit is not yet in use by SQL Server, so is not exposed in the returned token\n  INXACT: 0x0004,\n  COUNT: 0x0010,\n  ATTN: 0x0020,\n  SRVERROR: 0x0100\n};\nfunction readToken(buf, offset, options) {\n  let status;\n  ({\n    offset,\n    value: status\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  const more = !!(status & STATUS.MORE);\n  const sqlError = !!(status & STATUS.ERROR);\n  const rowCountValid = !!(status & STATUS.COUNT);\n  const attention = !!(status & STATUS.ATTN);\n  const serverError = !!(status & STATUS.SRVERROR);\n  let curCmd;\n  ({\n    offset,\n    value: curCmd\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  let rowCount;\n  ({\n    offset,\n    value: rowCount\n  } = (options.tdsVersion < '7_2' ? _helpers.readUInt32LE : _helpers.readBigUInt64LE)(buf, offset));\n  return new _helpers.Result({\n    more: more,\n    sqlError: sqlError,\n    attention: attention,\n    serverError: serverError,\n    rowCount: rowCountValid ? Number(rowCount) : undefined,\n    curCmd: curCmd\n  }, offset);\n}\nfunction doneParser(buf, offset, options) {\n  let value;\n  ({\n    offset,\n    value\n  } = readToken(buf, offset, options));\n  return new _helpers.Result(new _token.DoneToken(value), offset);\n}\nfunction doneInProcParser(buf, offset, options) {\n  let value;\n  ({\n    offset,\n    value\n  } = readToken(buf, offset, options));\n  return new _helpers.Result(new _token.DoneInProcToken(value), offset);\n}\nfunction doneProcParser(buf, offset, options) {\n  let value;\n  ({\n    offset,\n    value\n  } = readToken(buf, offset, options));\n  return new _helpers.Result(new _token.DoneProcToken(value), offset);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJTVEFUVVMiLCJNT1JFIiwiRVJST1IiLCJJTlhBQ1QiLCJDT1VOVCIsIkFUVE4iLCJTUlZFUlJPUiIsInJlYWRUb2tlbiIsImJ1ZiIsIm9mZnNldCIsIm9wdGlvbnMiLCJzdGF0dXMiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsIm1vcmUiLCJzcWxFcnJvciIsInJvd0NvdW50VmFsaWQiLCJhdHRlbnRpb24iLCJzZXJ2ZXJFcnJvciIsImN1ckNtZCIsInJvd0NvdW50IiwidGRzVmVyc2lvbiIsInJlYWRVSW50MzJMRSIsInJlYWRCaWdVSW50NjRMRSIsIlJlc3VsdCIsIk51bWJlciIsInVuZGVmaW5lZCIsImRvbmVQYXJzZXIiLCJEb25lVG9rZW4iLCJkb25lSW5Qcm9jUGFyc2VyIiwiRG9uZUluUHJvY1Rva2VuIiwiZG9uZVByb2NQYXJzZXIiLCJEb25lUHJvY1Rva2VuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2RvbmUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyBEb25lVG9rZW4sIERvbmVJblByb2NUb2tlbiwgRG9uZVByb2NUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgUmVzdWx0LCByZWFkQmlnVUludDY0TEUsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQzMkxFIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLy8gczIuMi43LjUvNi83XG5cbmNvbnN0IFNUQVRVUyA9IHtcbiAgTU9SRTogMHgwMDAxLFxuICBFUlJPUjogMHgwMDAyLFxuICAvLyBUaGlzIGJpdCBpcyBub3QgeWV0IGluIHVzZSBieSBTUUwgU2VydmVyLCBzbyBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcmV0dXJuZWQgdG9rZW5cbiAgSU5YQUNUOiAweDAwMDQsXG4gIENPVU5UOiAweDAwMTAsXG4gIEFUVE46IDB4MDAyMCxcbiAgU1JWRVJST1I6IDB4MDEwMFxufTtcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG1vcmU6IGJvb2xlYW47XG4gIHNxbEVycm9yOiBib29sZWFuO1xuICBhdHRlbnRpb246IGJvb2xlYW47XG4gIHNlcnZlckVycm9yOiBib29sZWFuO1xuICByb3dDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjdXJDbWQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVhZFRva2VuKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxUb2tlbkRhdGE+IHtcbiAgbGV0IHN0YXR1cztcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc3RhdHVzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBjb25zdCBtb3JlID0gISEoc3RhdHVzICYgU1RBVFVTLk1PUkUpO1xuICBjb25zdCBzcWxFcnJvciA9ICEhKHN0YXR1cyAmIFNUQVRVUy5FUlJPUik7XG4gIGNvbnN0IHJvd0NvdW50VmFsaWQgPSAhIShzdGF0dXMgJiBTVEFUVVMuQ09VTlQpO1xuICBjb25zdCBhdHRlbnRpb24gPSAhIShzdGF0dXMgJiBTVEFUVVMuQVRUTik7XG4gIGNvbnN0IHNlcnZlckVycm9yID0gISEoc3RhdHVzICYgU1RBVFVTLlNSVkVSUk9SKTtcblxuICBsZXQgY3VyQ21kO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBjdXJDbWQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCByb3dDb3VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcm93Q291bnQgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MzJMRSA6IHJlYWRCaWdVSW50NjRMRSkoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbW9yZTogbW9yZSxcbiAgICBzcWxFcnJvcjogc3FsRXJyb3IsXG4gICAgYXR0ZW50aW9uOiBhdHRlbnRpb24sXG4gICAgc2VydmVyRXJyb3I6IHNlcnZlckVycm9yLFxuICAgIHJvd0NvdW50OiByb3dDb3VudFZhbGlkID8gTnVtYmVyKHJvd0NvdW50KSA6IHVuZGVmaW5lZCxcbiAgICBjdXJDbWQ6IGN1ckNtZFxuICB9LCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVBhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZVRva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZUluUHJvY1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RG9uZUluUHJvY1Rva2VuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEb25lSW5Qcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9uZVByb2NQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PERvbmVQcm9jVG9rZW4+IHtcbiAgbGV0IHZhbHVlO1xuICAoeyBvZmZzZXQsIHZhbHVlIH0gPSByZWFkVG9rZW4oYnVmLCBvZmZzZXQsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERvbmVQcm9jVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuIl0sIm1hcHBpbmdzIjoi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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _collation = require(\"../collation\");\nvar _token = require(\"./token\");\nvar _helpers = require(\"./helpers\");\nconst types = {\n  1: {\n    name: 'DATABASE',\n    event: 'databaseChange'\n  },\n  2: {\n    name: 'LANGUAGE',\n    event: 'languageChange'\n  },\n  3: {\n    name: 'CHARSET',\n    event: 'charsetChange'\n  },\n  4: {\n    name: 'PACKET_SIZE',\n    event: 'packetSizeChange'\n  },\n  7: {\n    name: 'SQL_COLLATION',\n    event: 'sqlCollationChange'\n  },\n  8: {\n    name: 'BEGIN_TXN',\n    event: 'beginTransaction'\n  },\n  9: {\n    name: 'COMMIT_TXN',\n    event: 'commitTransaction'\n  },\n  10: {\n    name: 'ROLLBACK_TXN',\n    event: 'rollbackTransaction'\n  },\n  13: {\n    name: 'DATABASE_MIRRORING_PARTNER',\n    event: 'partnerNode'\n  },\n  17: {\n    name: 'TXN_ENDED'\n  },\n  18: {\n    name: 'RESET_CONNECTION',\n    event: 'resetConnection'\n  },\n  20: {\n    name: 'ROUTING_CHANGE',\n    event: 'routingChange'\n  }\n};\nfunction _readNewAndOldValue(buf, offset, length, type) {\n  switch (type.name) {\n    case 'DATABASE':\n    case 'LANGUAGE':\n    case 'CHARSET':\n    case 'PACKET_SIZE':\n    case 'DATABASE_MIRRORING_PARTNER':\n      {\n        let newValue;\n        ({\n          offset,\n          value: newValue\n        } = (0, _helpers.readBVarChar)(buf, offset));\n        let oldValue;\n        ({\n          offset,\n          value: oldValue\n        } = (0, _helpers.readBVarChar)(buf, offset));\n        switch (type.name) {\n          case 'PACKET_SIZE':\n            return new _helpers.Result(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)), offset);\n          case 'DATABASE':\n            return new _helpers.Result(new _token.DatabaseEnvChangeToken(newValue, oldValue), offset);\n          case 'LANGUAGE':\n            return new _helpers.Result(new _token.LanguageEnvChangeToken(newValue, oldValue), offset);\n          case 'CHARSET':\n            return new _helpers.Result(new _token.CharsetEnvChangeToken(newValue, oldValue), offset);\n          case 'DATABASE_MIRRORING_PARTNER':\n            return new _helpers.Result(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue), offset);\n        }\n        throw new Error('unreachable');\n      }\n    case 'SQL_COLLATION':\n    case 'BEGIN_TXN':\n    case 'COMMIT_TXN':\n    case 'ROLLBACK_TXN':\n    case 'RESET_CONNECTION':\n      {\n        let newValue;\n        ({\n          offset,\n          value: newValue\n        } = (0, _helpers.readBVarByte)(buf, offset));\n        let oldValue;\n        ({\n          offset,\n          value: oldValue\n        } = (0, _helpers.readBVarByte)(buf, offset));\n        switch (type.name) {\n          case 'SQL_COLLATION':\n            {\n              const newCollation = newValue.length ? _collation.Collation.fromBuffer(newValue) : undefined;\n              const oldCollation = oldValue.length ? _collation.Collation.fromBuffer(oldValue) : undefined;\n              return new _helpers.Result(new _token.CollationChangeToken(newCollation, oldCollation), offset);\n            }\n          case 'BEGIN_TXN':\n            return new _helpers.Result(new _token.BeginTransactionEnvChangeToken(newValue, oldValue), offset);\n          case 'COMMIT_TXN':\n            return new _helpers.Result(new _token.CommitTransactionEnvChangeToken(newValue, oldValue), offset);\n          case 'ROLLBACK_TXN':\n            return new _helpers.Result(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue), offset);\n          case 'RESET_CONNECTION':\n            return new _helpers.Result(new _token.ResetConnectionEnvChangeToken(newValue, oldValue), offset);\n        }\n        throw new Error('unreachable');\n      }\n    case 'ROUTING_CHANGE':\n      {\n        let routePacket;\n        ({\n          offset,\n          value: routePacket\n        } = (0, _helpers.readUsVarByte)(buf, offset));\n        let oldValue;\n        ({\n          offset,\n          value: oldValue\n        } = (0, _helpers.readUsVarByte)(buf, offset));\n\n        // Routing Change:\n        // Byte 1: Protocol (must be 0)\n        // Bytes 2-3 (USHORT): Port number\n        // Bytes 4-5 (USHORT): Length of server data in unicode (2byte chars)\n        // Bytes 6-*: Server name in unicode characters\n        const protocol = routePacket.readUInt8(0);\n        if (protocol !== 0) {\n          throw new Error('Unknown protocol byte in routing change event');\n        }\n        const port = routePacket.readUInt16LE(1);\n        const serverLen = routePacket.readUInt16LE(3);\n        // 2 bytes per char, starting at offset 5\n        const server = routePacket.toString('ucs2', 5, 5 + serverLen * 2);\n        const newValue = {\n          protocol: protocol,\n          port: port,\n          server: server\n        };\n        return new _helpers.Result(new _token.RoutingEnvChangeToken(newValue, oldValue), offset);\n      }\n    default:\n      {\n        console.error('Tedious > Unsupported ENVCHANGE type ' + type.name);\n\n        // skip unknown bytes\n        return new _helpers.Result(undefined, offset + length - 1);\n      }\n  }\n}\nfunction envChangeParser(buf, offset, _options) {\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  if (buf.length < offset + tokenLength) {\n    throw new _helpers.NotEnoughDataError(offset + tokenLength);\n  }\n  let typeNumber;\n  ({\n    offset,\n    value: typeNumber\n  } = (0, _helpers.readUInt8)(buf, offset));\n  const type = types[typeNumber];\n  if (!type) {\n    console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber);\n    return new _helpers.Result(undefined, offset + tokenLength - 1);\n  }\n  return _readNewAndOldValue(buf, offset, tokenLength, type);\n}\nvar _default = envChangeParser;\nexports.default = _default;\nmodule.exports = envChangeParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl90b2tlbiIsIl9oZWxwZXJzIiwidHlwZXMiLCJuYW1lIiwiZXZlbnQiLCJfcmVhZE5ld0FuZE9sZFZhbHVlIiwiYnVmIiwib2Zmc2V0IiwibGVuZ3RoIiwidHlwZSIsIm5ld1ZhbHVlIiwidmFsdWUiLCJyZWFkQlZhckNoYXIiLCJvbGRWYWx1ZSIsIlJlc3VsdCIsIlBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbiIsInBhcnNlSW50IiwiRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbiIsIkxhbmd1YWdlRW52Q2hhbmdlVG9rZW4iLCJDaGFyc2V0RW52Q2hhbmdlVG9rZW4iLCJEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbiIsIkVycm9yIiwicmVhZEJWYXJCeXRlIiwibmV3Q29sbGF0aW9uIiwiQ29sbGF0aW9uIiwiZnJvbUJ1ZmZlciIsInVuZGVmaW5lZCIsIm9sZENvbGxhdGlvbiIsIkNvbGxhdGlvbkNoYW5nZVRva2VuIiwiQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuIiwiQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbiIsIlJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuIiwicm91dGVQYWNrZXQiLCJyZWFkVXNWYXJCeXRlIiwicHJvdG9jb2wiLCJyZWFkVUludDgiLCJwb3J0IiwicmVhZFVJbnQxNkxFIiwic2VydmVyTGVuIiwic2VydmVyIiwidG9TdHJpbmciLCJSb3V0aW5nRW52Q2hhbmdlVG9rZW4iLCJjb25zb2xlIiwiZXJyb3IiLCJlbnZDaGFuZ2VQYXJzZXIiLCJfb3B0aW9ucyIsInRva2VuTGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidHlwZU51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4uL2NvbGxhdGlvbic7XG5cbmltcG9ydCB7XG4gIERhdGFiYXNlRW52Q2hhbmdlVG9rZW4sXG4gIExhbmd1YWdlRW52Q2hhbmdlVG9rZW4sXG4gIENoYXJzZXRFbnZDaGFuZ2VUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuLFxuICBSb3V0aW5nRW52Q2hhbmdlVG9rZW4sXG4gIENvbGxhdGlvbkNoYW5nZVRva2VuLFxuICB0eXBlIEVudkNoYW5nZVRva2VuXG59IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQnl0ZSwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50OCwgcmVhZFVzVmFyQnl0ZSwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgdHlwZXM6IHsgW2tleTogbnVtYmVyXTogeyBuYW1lOiBzdHJpbmcsIGV2ZW50Pzogc3RyaW5nIH19ID0ge1xuICAxOiB7XG4gICAgbmFtZTogJ0RBVEFCQVNFJyxcbiAgICBldmVudDogJ2RhdGFiYXNlQ2hhbmdlJ1xuICB9LFxuICAyOiB7XG4gICAgbmFtZTogJ0xBTkdVQUdFJyxcbiAgICBldmVudDogJ2xhbmd1YWdlQ2hhbmdlJ1xuICB9LFxuICAzOiB7XG4gICAgbmFtZTogJ0NIQVJTRVQnLFxuICAgIGV2ZW50OiAnY2hhcnNldENoYW5nZSdcbiAgfSxcbiAgNDoge1xuICAgIG5hbWU6ICdQQUNLRVRfU0laRScsXG4gICAgZXZlbnQ6ICdwYWNrZXRTaXplQ2hhbmdlJ1xuICB9LFxuICA3OiB7XG4gICAgbmFtZTogJ1NRTF9DT0xMQVRJT04nLFxuICAgIGV2ZW50OiAnc3FsQ29sbGF0aW9uQ2hhbmdlJ1xuICB9LFxuICA4OiB7XG4gICAgbmFtZTogJ0JFR0lOX1RYTicsXG4gICAgZXZlbnQ6ICdiZWdpblRyYW5zYWN0aW9uJ1xuICB9LFxuICA5OiB7XG4gICAgbmFtZTogJ0NPTU1JVF9UWE4nLFxuICAgIGV2ZW50OiAnY29tbWl0VHJhbnNhY3Rpb24nXG4gIH0sXG4gIDEwOiB7XG4gICAgbmFtZTogJ1JPTExCQUNLX1RYTicsXG4gICAgZXZlbnQ6ICdyb2xsYmFja1RyYW5zYWN0aW9uJ1xuICB9LFxuICAxMzoge1xuICAgIG5hbWU6ICdEQVRBQkFTRV9NSVJST1JJTkdfUEFSVE5FUicsXG4gICAgZXZlbnQ6ICdwYXJ0bmVyTm9kZSdcbiAgfSxcbiAgMTc6IHtcbiAgICBuYW1lOiAnVFhOX0VOREVEJ1xuICB9LFxuICAxODoge1xuICAgIG5hbWU6ICdSRVNFVF9DT05ORUNUSU9OJyxcbiAgICBldmVudDogJ3Jlc2V0Q29ubmVjdGlvbidcbiAgfSxcbiAgMjA6IHtcbiAgICBuYW1lOiAnUk9VVElOR19DSEFOR0UnLFxuICAgIGV2ZW50OiAncm91dGluZ0NoYW5nZSdcbiAgfVxufTtcblxuZnVuY3Rpb24gX3JlYWROZXdBbmRPbGRWYWx1ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCB0eXBlOiB7IG5hbWU6IHN0cmluZywgZXZlbnQ/OiBzdHJpbmcgfSk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ0RBVEFCQVNFJzpcbiAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgY2FzZSAnQ0hBUlNFVCc6XG4gICAgY2FzZSAnUEFDS0VUX1NJWkUnOlxuICAgIGNhc2UgJ0RBVEFCQVNFX01JUlJPUklOR19QQVJUTkVSJzoge1xuICAgICAgbGV0IG5ld1ZhbHVlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogbmV3VmFsdWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgb2xkVmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBvbGRWYWx1ZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgJ1BBQ0tFVF9TSVpFJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKHBhcnNlSW50KG5ld1ZhbHVlKSwgcGFyc2VJbnQob2xkVmFsdWUpKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGFiYXNlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdMQU5HVUFHRSc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4obmV3VmFsdWUsIG9sZFZhbHVlKSwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlICdDSEFSU0VUJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgQ2hhcnNldEVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnREFUQUJBU0VfTUlSUk9SSU5HX1BBUlRORVInOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuXG4gICAgY2FzZSAnU1FMX0NPTExBVElPTic6XG4gICAgY2FzZSAnQkVHSU5fVFhOJzpcbiAgICBjYXNlICdDT01NSVRfVFhOJzpcbiAgICBjYXNlICdST0xMQkFDS19UWE4nOlxuICAgIGNhc2UgJ1JFU0VUX0NPTk5FQ1RJT04nOiB7XG4gICAgICBsZXQgbmV3VmFsdWU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBuZXdWYWx1ZSB9ID0gcmVhZEJWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkQlZhckJ5dGUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgY2FzZSAnU1FMX0NPTExBVElPTic6IHtcbiAgICAgICAgICBjb25zdCBuZXdDb2xsYXRpb24gPSBuZXdWYWx1ZS5sZW5ndGggPyBDb2xsYXRpb24uZnJvbUJ1ZmZlcihuZXdWYWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3Qgb2xkQ29sbGF0aW9uID0gb2xkVmFsdWUubGVuZ3RoID8gQ29sbGF0aW9uLmZyb21CdWZmZXIob2xkVmFsdWUpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IENvbGxhdGlvbkNoYW5nZVRva2VuKG5ld0NvbGxhdGlvbiwgb2xkQ29sbGF0aW9uKSwgb2Zmc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ0JFR0lOX1RYTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgJ0NPTU1JVF9UWE4nOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBDb21taXRUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUk9MTEJBQ0tfVFhOJzpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAnUkVTRVRfQ09OTkVDVElPTic6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJlc2V0Q29ubmVjdGlvbkVudkNoYW5nZVRva2VuKG5ld1ZhbHVlLCBvbGRWYWx1ZSksIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICB9XG5cbiAgICBjYXNlICdST1VUSU5HX0NIQU5HRSc6IHtcbiAgICAgIGxldCByb3V0ZVBhY2tldDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHJvdXRlUGFja2V0IH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG9sZFZhbHVlIH0gPSByZWFkVXNWYXJCeXRlKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIFJvdXRpbmcgQ2hhbmdlOlxuICAgICAgLy8gQnl0ZSAxOiBQcm90b2NvbCAobXVzdCBiZSAwKVxuICAgICAgLy8gQnl0ZXMgMi0zIChVU0hPUlQpOiBQb3J0IG51bWJlclxuICAgICAgLy8gQnl0ZXMgNC01IChVU0hPUlQpOiBMZW5ndGggb2Ygc2VydmVyIGRhdGEgaW4gdW5pY29kZSAoMmJ5dGUgY2hhcnMpXG4gICAgICAvLyBCeXRlcyA2LSo6IFNlcnZlciBuYW1lIGluIHVuaWNvZGUgY2hhcmFjdGVyc1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSByb3V0ZVBhY2tldC5yZWFkVUludDgoMCk7XG4gICAgICBpZiAocHJvdG9jb2wgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByb3RvY29sIGJ5dGUgaW4gcm91dGluZyBjaGFuZ2UgZXZlbnQnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcG9ydCA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgxKTtcbiAgICAgIGNvbnN0IHNlcnZlckxlbiA9IHJvdXRlUGFja2V0LnJlYWRVSW50MTZMRSgzKTtcbiAgICAgIC8vIDIgYnl0ZXMgcGVyIGNoYXIsIHN0YXJ0aW5nIGF0IG9mZnNldCA1XG4gICAgICBjb25zdCBzZXJ2ZXIgPSByb3V0ZVBhY2tldC50b1N0cmluZygndWNzMicsIDUsIDUgKyAoc2VydmVyTGVuICogMikpO1xuXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICBzZXJ2ZXI6IHNlcnZlclxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbihuZXdWYWx1ZSwgb2xkVmFsdWUpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZS5uYW1lKTtcblxuICAgICAgLy8gc2tpcCB1bmtub3duIGJ5dGVzXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCArIGxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlbnZDaGFuZ2VQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZD4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIHRva2VuTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyB0b2tlbkxlbmd0aCk7XG4gIH1cblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZSA9IHR5cGVzW3R5cGVOdW1iZXJdO1xuXG4gIGlmICghdHlwZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RlZGlvdXMgPiBVbnN1cHBvcnRlZCBFTlZDSEFOR0UgdHlwZSAnICsgdHlwZU51bWJlcik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodW5kZWZpbmVkLCBvZmZzZXQgKyB0b2tlbkxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIF9yZWFkTmV3QW5kT2xkVmFsdWUoYnVmLCBvZmZzZXQsIHRva2VuTGVuZ3RoLCB0eXBlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW52Q2hhbmdlUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBlbnZDaGFuZ2VQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQWVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLE1BQU1HLEtBQXlELEdBQUc7RUFDaEUsQ0FBQyxFQUFFO0lBQ0RDLElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxVQUFVO0lBQ2hCQyxLQUFLLEVBQUU7RUFDVCxDQUFDO0VBQ0QsQ0FBQyxFQUFFO0lBQ0RELElBQUksRUFBRSxTQUFTO0lBQ2ZDLEtBQUssRUFBRTtFQUNULENBQUM7RUFDRCxDQUFDLEVBQUU7SUFD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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.errorParser = errorParser;\nexports.infoParser = infoParser;\nvar _helpers = require(\"./helpers\");\nvar _token = require(\"./token\");\nfunction readToken(buf, offset, options) {\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  if (buf.length < tokenLength + offset) {\n    throw new _helpers.NotEnoughDataError(tokenLength + offset);\n  }\n  let number;\n  ({\n    offset,\n    value: number\n  } = (0, _helpers.readUInt32LE)(buf, offset));\n  let state;\n  ({\n    offset,\n    value: state\n  } = (0, _helpers.readUInt8)(buf, offset));\n  let clazz;\n  ({\n    offset,\n    value: clazz\n  } = (0, _helpers.readUInt8)(buf, offset));\n  let message;\n  ({\n    offset,\n    value: message\n  } = (0, _helpers.readUsVarChar)(buf, offset));\n  let serverName;\n  ({\n    offset,\n    value: serverName\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let procName;\n  ({\n    offset,\n    value: procName\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let lineNumber;\n  ({\n    offset,\n    value: lineNumber\n  } = options.tdsVersion < '7_2' ? (0, _helpers.readUInt16LE)(buf, offset) : (0, _helpers.readUInt32LE)(buf, offset));\n  return new _helpers.Result({\n    'number': number,\n    'state': state,\n    'class': clazz,\n    'message': message,\n    'serverName': serverName,\n    'procName': procName,\n    'lineNumber': lineNumber\n  }, offset);\n}\nfunction infoParser(buf, offset, options) {\n  let data;\n  ({\n    offset,\n    value: data\n  } = readToken(buf, offset, options));\n  return new _helpers.Result(new _token.InfoMessageToken(data), offset);\n}\nfunction errorParser(buf, offset, options) {\n  let data;\n  ({\n    offset,\n    value: data\n  } = readToken(buf, offset, options));\n  return new _helpers.Result(new _token.ErrorMessageToken(data), offset);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJyZWFkVG9rZW4iLCJidWYiLCJvZmZzZXQiLCJvcHRpb25zIiwidG9rZW5MZW5ndGgiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsIm51bWJlciIsInJlYWRVSW50MzJMRSIsInN0YXRlIiwicmVhZFVJbnQ4IiwiY2xhenoiLCJtZXNzYWdlIiwicmVhZFVzVmFyQ2hhciIsInNlcnZlck5hbWUiLCJyZWFkQlZhckNoYXIiLCJwcm9jTmFtZSIsImxpbmVOdW1iZXIiLCJ0ZHNWZXJzaW9uIiwiUmVzdWx0IiwiaW5mb1BhcnNlciIsImRhdGEiLCJJbmZvTWVzc2FnZVRva2VuIiwiZXJyb3JQYXJzZXIiLCJFcnJvck1lc3NhZ2VUb2tlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9pbmZvZXJyb3ItdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50MzJMRSwgcmVhZFVJbnQ4LCByZWFkVXNWYXJDaGFyLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgSW5mb01lc3NhZ2VUb2tlbiwgRXJyb3JNZXNzYWdlVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW50ZXJmYWNlIFRva2VuRGF0YSB7XG4gIG51bWJlcjogbnVtYmVyO1xuICBzdGF0ZTogbnVtYmVyO1xuICBjbGFzczogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlcnZlck5hbWU6IHN0cmluZztcbiAgcHJvY05hbWU6IHN0cmluZztcbiAgbGluZU51bWJlcjogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiByZWFkVG9rZW4oYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PFRva2VuRGF0YT4ge1xuICBsZXQgdG9rZW5MZW5ndGg7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRva2VuTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAoYnVmLmxlbmd0aCA8IHRva2VuTGVuZ3RoICsgb2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcih0b2tlbkxlbmd0aCArIG9mZnNldCk7XG4gIH1cblxuICBsZXQgbnVtYmVyO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBudW1iZXIgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBzdGF0ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc3RhdGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBjbGF6ejtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogY2xhenogfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtZXNzYWdlO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBtZXNzYWdlIH0gPSByZWFkVXNWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHNlcnZlck5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHNlcnZlck5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBwcm9jTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcHJvY05hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBsaW5lTnVtYmVyO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBsaW5lTnVtYmVyIH0gPSBvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkgOiByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgJ251bWJlcic6IG51bWJlcixcbiAgICAnc3RhdGUnOiBzdGF0ZSxcbiAgICAnY2xhc3MnOiBjbGF6eixcbiAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsXG4gICAgJ3NlcnZlck5hbWUnOiBzZXJ2ZXJOYW1lLFxuICAgICdwcm9jTmFtZSc6IHByb2NOYW1lLFxuICAgICdsaW5lTnVtYmVyJzogbGluZU51bWJlclxuICB9LCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8SW5mb01lc3NhZ2VUb2tlbj4ge1xuICBsZXQgZGF0YTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YSB9ID0gcmVhZFRva2VuKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEluZm9NZXNzYWdlVG9rZW4oZGF0YSksIG9mZnNldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclBhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8RXJyb3JNZXNzYWdlVG9rZW4+IHtcbiAgbGV0IGRhdGE7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRhdGEgfSA9IHJlYWRUb2tlbihidWYsIG9mZnNldCwgb3B0aW9ucykpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBFcnJvck1lc3NhZ2VUb2tlbihkYXRhKSwgb2Zmc2V0KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQVlBLFNBQVNFLFNBQVNBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxPQUFzQixFQUFxQjtFQUN6RixJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFRixNQUFNO0lBQUVHLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcs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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _helpers = require(\"./helpers\");\nvar _token = require(\"./token\");\nconst FEDAUTHINFOID = {\n  STSURL: 0x01,\n  SPN: 0x02\n};\nfunction readFedAuthInfo(data) {\n  let offset = 0;\n  let spn, stsurl;\n  const countOfInfoIDs = data.readUInt32LE(offset);\n  offset += 4;\n  for (let i = 0; i < countOfInfoIDs; i++) {\n    const fedauthInfoID = data.readUInt8(offset);\n    offset += 1;\n    const fedAuthInfoDataLen = data.readUInt32LE(offset);\n    offset += 4;\n    const fedAuthInfoDataOffset = data.readUInt32LE(offset);\n    offset += 4;\n    switch (fedauthInfoID) {\n      case FEDAUTHINFOID.SPN:\n        spn = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n        break;\n      case FEDAUTHINFOID.STSURL:\n        stsurl = data.toString('ucs2', fedAuthInfoDataOffset, fedAuthInfoDataOffset + fedAuthInfoDataLen);\n        break;\n\n      // ignoring unknown fedauthinfo options\n      default:\n        break;\n    }\n  }\n  return {\n    spn,\n    stsurl\n  };\n}\nfunction fedAuthInfoParser(buf, offset, _options) {\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt32LE)(buf, offset));\n  if (buf.length < offset + tokenLength) {\n    throw new _helpers.NotEnoughDataError(offset + tokenLength);\n  }\n  const data = buf.slice(offset, offset + tokenLength);\n  offset += tokenLength;\n  const {\n    spn,\n    stsurl\n  } = readFedAuthInfo(data);\n  return new _helpers.Result(new _token.FedAuthInfoToken(spn, stsurl), offset);\n}\nvar _default = fedAuthInfoParser;\nexports.default = _default;\nmodule.exports = fedAuthInfoParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRURBVVRISU5GT0lEIiwiU1RTVVJMIiwiU1BOIiwicmVhZEZlZEF1dGhJbmZvIiwiZGF0YSIsIm9mZnNldCIsInNwbiIsInN0c3VybCIsImNvdW50T2ZJbmZvSURzIiwicmVhZFVJbnQzMkxFIiwiaSIsImZlZGF1dGhJbmZvSUQiLCJyZWFkVUludDgiLCJmZWRBdXRoSW5mb0RhdGFMZW4iLCJmZWRBdXRoSW5mb0RhdGFPZmZzZXQiLCJ0b1N0cmluZyIsImZlZEF1dGhJbmZvUGFyc2VyIiwiYnVmIiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJSZXN1bHQiLCJGZWRBdXRoSW5mb1Rva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9mZWRhdXRoLWluZm8tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZFVJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IEZlZEF1dGhJbmZvVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuY29uc3QgRkVEQVVUSElORk9JRCA9IHtcbiAgU1RTVVJMOiAweDAxLFxuICBTUE46IDB4MDJcbn07XG5cbmZ1bmN0aW9uIHJlYWRGZWRBdXRoSW5mbyhkYXRhOiBCdWZmZXIpOiB7IHNwbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHN1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCBzcG4sIHN0c3VybDtcblxuICBjb25zdCBjb3VudE9mSW5mb0lEcyA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gIG9mZnNldCArPSA0O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnRPZkluZm9JRHM7IGkrKykge1xuICAgIGNvbnN0IGZlZGF1dGhJbmZvSUQgPSBkYXRhLnJlYWRVSW50OChvZmZzZXQpO1xuICAgIG9mZnNldCArPSAxO1xuXG4gICAgY29uc3QgZmVkQXV0aEluZm9EYXRhTGVuID0gZGF0YS5yZWFkVUludDMyTEUob2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gNDtcblxuICAgIGNvbnN0IGZlZEF1dGhJbmZvRGF0YU9mZnNldCA9IGRhdGEucmVhZFVJbnQzMkxFKG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IDQ7XG5cbiAgICBzd2l0Y2ggKGZlZGF1dGhJbmZvSUQpIHtcbiAgICAgIGNhc2UgRkVEQVVUSElORk9JRC5TUE46XG4gICAgICAgIHNwbiA9IGRhdGEudG9TdHJpbmcoJ3VjczInLCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQsIGZlZEF1dGhJbmZvRGF0YU9mZnNldCArIGZlZEF1dGhJbmZvRGF0YUxlbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEZFREFVVEhJTkZPSUQuU1RTVVJMOlxuICAgICAgICBzdHN1cmwgPSBkYXRhLnRvU3RyaW5nKCd1Y3MyJywgZmVkQXV0aEluZm9EYXRhT2Zmc2V0LCBmZWRBdXRoSW5mb0RhdGFPZmZzZXQgKyBmZWRBdXRoSW5mb0RhdGFMZW4pO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gaWdub3JpbmcgdW5rbm93biBmZWRhdXRoaW5mbyBvcHRpb25zXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzcG4sIHN0c3VybCB9O1xufVxuXG5mdW5jdGlvbiBmZWRBdXRoSW5mb1BhcnNlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIF9vcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PEZlZEF1dGhJbmZvVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIGNvbnN0IHsgc3BuLCBzdHN1cmwgfSA9IHJlYWRGZWRBdXRoSW5mbyhkYXRhKTtcbiAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IEZlZEF1dGhJbmZvVG9rZW4oc3BuLCBzdHN1cmwpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmZWRBdXRoSW5mb1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVkQXV0aEluZm9QYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUVBLE1BQU1FLGFBQWEsR0FBRztFQUNwQkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVELFNBQVNDLGVBQWVBLENBQUNDLElBQVksRUFBMkQ7RUFDOUYsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxHQUFHLEVBQUVDLE1BQU07RUFFZixNQUFNQyxjQUFjLEdBQUdKLElBQUksQ0FBQ0ssWUFBWSxDQUFDSixNQUFNLENBQUM7RUFDaERBLE1BQU0sSUFBSSxDQUFDO0VBRVgsS0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLGNBQWMsRUFBRUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsTUFBTUMsYUFBYSxHQUFHUCxJQUFJLENBQUNRLFNBQVMsQ0FBQ1AsTUFBTSxDQUFDO0lBQzVDQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1RLGtCQUFrQixHQUFHVCxJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3BEQSxNQUFNLElBQUksQ0FBQztJQUVYLE1BQU1TLHFCQUFxQixHQUFHVixJQUFJLENBQUNLLFlBQVksQ0FBQ0osTUFBTSxDQUFDO0lBQ3ZEQSxNQUFNLElBQUksQ0FBQztJQUVYLFFBQVFNLGFBQWE7TUFDbkIsS0FBS1gsYUFBYSxDQUFDRSxHQUFHO1FBQ3BCSSxHQUFHLEdBQUdGLElBQUksQ0FBQ1csUUFBUSxDQUFDLE1BQU0sRUFBRUQscUJBQXFCLEVBQUVBLHFCQUFxQixHQUFHRCxrQkFBa0IsQ0FBQztRQUM5RjtNQUVGLEtBQUtiLGFBQWEsQ0FBQ0MsTUFBTTtRQUN2Qk0sTUFBTSxHQUFHSCxJQUFJLENBQUNXLFFBQVEsQ0FBQyxNQUFNLEVBQUVELHFCQUFxQixFQUFFQSxxQkFBcUIsR0FBR0Qsa0JBQWtCLENBQUM7UUFDakc7O01BRUY7TUFDQTtRQUNFO0lBQ0o7RUFDRjtFQUVBLE9BQU87SUFBRVAsR0FBRztJQUFFQztFQUFPLENBQUM7QUFDeEI7QUFFQSxTQUFTUyxpQkFBaUJBLENBQUNDLEdBQVcsRUFBRVosTUFBYyxFQUFFYSxRQUF1QixFQUE0QjtFQUN6RyxJQUFJQyxXQUFXO0VBQ2YsQ0FBQztJQUFFZCxNQUFNO0lBQUVlLEtBQUssRUFBRUQ7RUFBWSxDQUFDLEdBQUcsSUFBQVYscUJBQVksRUFBQ1EsR0FBRyxFQUFFWixNQUFNLENBQUM7RUFFM0QsSUFBSVksR0FBRyxDQUFDSSxNQUFNLEdBQUdoQixNQUFNLEdBQUdjLFdBQVcsRUFBRTtJQUNyQyxNQUFNLElBQUlHLDJCQUFrQixDQUFDakIsTUFBTSxHQUFHYyxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNZixJQUFJLEdBQUdhLEdBQUcsQ0FBQ00sS0FBSyxDQUFDbEIsTUFBTSxFQUFFQSxNQUFNLEdBQUdjLFdBQVcsQ0FBQztFQUNwRGQsTUFBTSxJQUFJYyxXQUFXO0VBRXJCLE1BQU07SUFBRWIsR0FBRztJQUFFQztFQUFPLENBQUMsR0FBR0osZUFBZSxDQUFDQyxJQUFJLENBQUM7RUFDN0MsT0FBTyxJQUFJb0IsZUFBTSxDQUFDLElBQUlDLHVCQUFnQixDQUFDbkIsR0FBRyxFQUFFQyxNQUFNLENBQUMsRUFBRUYsTUFBTSxDQUFDO0FBQzlEO0FBQUMsSUFBQXFCLFFBQUEsR0FFY1YsaUJBQWlCO0FBQUFXLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ2hDRyxNQUFNLENBQUNGLE9BQU8sR0FBR1gsaUJBQWlCIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _helpers = require(\"./helpers\");\nvar _token = require(\"./token\");\nconst FEATURE_ID = {\n  SESSIONRECOVERY: 0x01,\n  FEDAUTH: 0x02,\n  COLUMNENCRYPTION: 0x04,\n  GLOBALTRANSACTIONS: 0x05,\n  AZURESQLSUPPORT: 0x08,\n  UTF8_SUPPORT: 0x0A,\n  TERMINATOR: 0xFF\n};\nfunction featureExtAckParser(buf, offset, _options) {\n  let fedAuth;\n  let utf8Support;\n  while (true) {\n    let featureId;\n    ({\n      value: featureId,\n      offset\n    } = (0, _helpers.readUInt8)(buf, offset));\n    if (featureId === FEATURE_ID.TERMINATOR) {\n      return new _helpers.Result(new _token.FeatureExtAckToken(fedAuth, utf8Support), offset);\n    }\n    let featureAckDataLen;\n    ({\n      value: featureAckDataLen,\n      offset\n    } = (0, _helpers.readUInt32LE)(buf, offset));\n    if (buf.length < offset + featureAckDataLen) {\n      throw new _helpers.NotEnoughDataError(offset + featureAckDataLen);\n    }\n    const featureData = buf.slice(offset, offset + featureAckDataLen);\n    offset += featureAckDataLen;\n    switch (featureId) {\n      case FEATURE_ID.FEDAUTH:\n        fedAuth = featureData;\n        break;\n      case FEATURE_ID.UTF8_SUPPORT:\n        utf8Support = !!featureData[0];\n        break;\n    }\n  }\n}\nvar _default = featureExtAckParser;\nexports.default = _default;\nmodule.exports = featureExtAckParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJGRUFUVVJFX0lEIiwiU0VTU0lPTlJFQ09WRVJZIiwiRkVEQVVUSCIsIkNPTFVNTkVOQ1JZUFRJT04iLCJHTE9CQUxUUkFOU0FDVElPTlMiLCJBWlVSRVNRTFNVUFBPUlQiLCJVVEY4X1NVUFBPUlQiLCJURVJNSU5BVE9SIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwiZmVkQXV0aCIsInV0ZjhTdXBwb3J0IiwiZmVhdHVyZUlkIiwidmFsdWUiLCJyZWFkVUludDgiLCJSZXN1bHQiLCJGZWF0dXJlRXh0QWNrVG9rZW4iLCJmZWF0dXJlQWNrRGF0YUxlbiIsInJlYWRVSW50MzJMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsImZlYXR1cmVEYXRhIiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDMyTEUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IEZlYXR1cmVFeHRBY2tUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5jb25zdCBGRUFUVVJFX0lEID0ge1xuICBTRVNTSU9OUkVDT1ZFUlk6IDB4MDEsXG4gIEZFREFVVEg6IDB4MDIsXG4gIENPTFVNTkVOQ1JZUFRJT046IDB4MDQsXG4gIEdMT0JBTFRSQU5TQUNUSU9OUzogMHgwNSxcbiAgQVpVUkVTUUxTVVBQT1JUOiAweDA4LFxuICBVVEY4X1NVUFBPUlQ6IDB4MEEsXG4gIFRFUk1JTkFUT1I6IDB4RkZcbn07XG5cbmZ1bmN0aW9uIGZlYXR1cmVFeHRBY2tQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgbGV0IGZlZEF1dGg6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcbiAgbGV0IHV0ZjhTdXBwb3J0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbGV0IGZlYXR1cmVJZDtcbiAgICAoeyB2YWx1ZTogZmVhdHVyZUlkLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGZlYXR1cmVJZCA9PT0gRkVBVFVSRV9JRC5URVJNSU5BVE9SKSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3VsdChuZXcgRmVhdHVyZUV4dEFja1Rva2VuKGZlZEF1dGgsIHV0ZjhTdXBwb3J0KSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBsZXQgZmVhdHVyZUFja0RhdGFMZW47XG4gICAgKHsgdmFsdWU6IGZlYXR1cmVBY2tEYXRhTGVuLCBvZmZzZXQgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbikge1xuICAgICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgfVxuXG4gICAgY29uc3QgZmVhdHVyZURhdGEgPSBidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBmZWF0dXJlQWNrRGF0YUxlbik7XG4gICAgb2Zmc2V0ICs9IGZlYXR1cmVBY2tEYXRhTGVuO1xuXG4gICAgc3dpdGNoIChmZWF0dXJlSWQpIHtcbiAgICAgIGNhc2UgRkVBVFVSRV9JRC5GRURBVVRIOlxuICAgICAgICBmZWRBdXRoID0gZmVhdHVyZURhdGE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGRUFUVVJFX0lELlVURjhfU1VQUE9SVDpcbiAgICAgICAgdXRmOFN1cHBvcnQgPSAhIWZlYXR1cmVEYXRhWzBdO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZmVhdHVyZUV4dEFja1BhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gZmVhdHVyZUV4dEFja1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsTUFBTUUsVUFBVSxHQUFHO0VBQ2pCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsT0FBTyxFQUFFLElBQUk7RUFDYkMsZ0JBQWdCLEVBQUUsSUFBSTtFQUN0QkMsa0JBQWtCLEVBQUUsSUFBSTtFQUN4QkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsU0FBU0MsbUJBQW1CQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBOEI7RUFDN0csSUFBSUMsT0FBMkI7RUFDL0IsSUFBSUMsV0FBZ0M7RUFFcEMsT0FBTyxJQUFJLEVBQUU7SUFDWCxJQUFJQyxTQUFTO0lBQ2IsQ0FBQztNQUFFQyxLQUFLLEVBQUVELFNBQVM7TUFBRUo7SUFBTyxDQUFDLEdBQUcsSUFBQU0sa0JBQVMsRUFBQ1AsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdEQsSUFBSUksU0FBUyxLQUFLZCxVQUFVLENBQUNPLFVBQVUsRUFBRTtNQUN2QyxPQUFPLElBQUlVLGVBQU0sQ0FBQyxJQUFJQyx5QkFBa0IsQ0FBQ04sT0FBTyxFQUFFQyxXQUFXLENBQUMsRUFBRUgsTUFBTSxDQUFDO0lBQ3pFO0lBRUEsSUFBSVMsaUJBQWlCO0lBQ3JCLENBQUM7TUFBRUosS0FBSyxFQUFFSSxpQkFBaUI7TUFBRVQ7SUFBTyxDQUFDLEdBQUcsSUFBQVUscUJBQVksRUFBQ1gsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFakUsSUFBSUQsR0FBRyxDQUFDWSxNQUFNLEdBQUdYLE1BQU0sR0FBR1MsaUJBQWlCLEVBQUU7TUFDM0MsTUFBTSxJQUFJRywyQkFBa0IsQ0FBQ1osTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUMxRDtJQUVBLE1BQU1JLFdBQVcsR0FBR2QsR0FBRyxDQUFDZSxLQUFLLENBQUNkLE1BQU0sRUFBRUEsTUFBTSxHQUFHUyxpQkFBaUIsQ0FBQztJQUNqRVQsTUFBTSxJQUFJUyxpQkFBaUI7SUFFM0IsUUFBUUwsU0FBUztNQUNmLEtBQUtkLFVBQVUsQ0FBQ0UsT0FBTztRQUNyQlUsT0FBTyxHQUFHVyxXQUFXO1FBQ3JCO01BQ0YsS0FBS3ZCLFVBQVUsQ0FBQ00sWUFBWTtRQUMxQk8sV0FBVyxHQUFHLENBQUMsQ0FBQ1UsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5QjtJQUNKO0VBQ0Y7QUFDRjtBQUFDLElBQUFFLFFBQUEsR0FFY2pCLG1CQUFtQjtBQUFBa0IsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDbENHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHbEIsbUJBQW1CIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar _tdsVersions = require(\"../tds-versions\");\nvar _helpers = require(\"./helpers\");\nconst interfaceTypes = {\n  0: 'SQL_DFLT',\n  1: 'SQL_TSQL'\n};\nfunction loginAckParser(buf, offset, _options) {\n  // length\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  if (buf.length < tokenLength + offset) {\n    throw new _helpers.NotEnoughDataError(tokenLength + offset);\n  }\n  let interfaceNumber;\n  ({\n    offset,\n    value: interfaceNumber\n  } = (0, _helpers.readUInt8)(buf, offset));\n  const interfaceType = interfaceTypes[interfaceNumber];\n  let tdsVersionNumber;\n  ({\n    offset,\n    value: tdsVersionNumber\n  } = (0, _helpers.readUInt32BE)(buf, offset));\n  const tdsVersion = _tdsVersions.versionsByValue[tdsVersionNumber];\n  let progName;\n  ({\n    offset,\n    value: progName\n  } = (0, _helpers.readBVarChar)(buf, offset));\n  let major;\n  ({\n    offset,\n    value: major\n  } = (0, _helpers.readUInt8)(buf, offset));\n  let minor;\n  ({\n    offset,\n    value: minor\n  } = (0, _helpers.readUInt8)(buf, offset));\n  let buildNumHi;\n  ({\n    offset,\n    value: buildNumHi\n  } = (0, _helpers.readUInt8)(buf, offset));\n  let buildNumLow;\n  ({\n    offset,\n    value: buildNumLow\n  } = (0, _helpers.readUInt8)(buf, offset));\n  return new _helpers.Result(new _token.LoginAckToken({\n    interface: interfaceType,\n    tdsVersion: tdsVersion,\n    progName: progName,\n    progVersion: {\n      major: major,\n      minor: minor,\n      buildNumHi: buildNumHi,\n      buildNumLow: buildNumLow\n    }\n  }), offset);\n}\nvar _default = loginAckParser;\nexports.default = _default;\nmodule.exports = loginAckParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX3Rkc1ZlcnNpb25zIiwiX2hlbHBlcnMiLCJpbnRlcmZhY2VUeXBlcyIsImxvZ2luQWNrUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiaW50ZXJmYWNlTnVtYmVyIiwicmVhZFVJbnQ4IiwiaW50ZXJmYWNlVHlwZSIsInRkc1ZlcnNpb25OdW1iZXIiLCJyZWFkVUludDMyQkUiLCJ0ZHNWZXJzaW9uIiwidmVyc2lvbnMiLCJwcm9nTmFtZSIsInJlYWRCVmFyQ2hhciIsIm1ham9yIiwibWlub3IiLCJidWlsZE51bUhpIiwiYnVpbGROdW1Mb3ciLCJSZXN1bHQiLCJMb2dpbkFja1Rva2VuIiwiaW50ZXJmYWNlIiwicHJvZ1ZlcnNpb24iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL2xvZ2luYWNrLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBMb2dpbkFja1Rva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCB7IHZlcnNpb25zQnlWYWx1ZSBhcyB2ZXJzaW9ucyB9IGZyb20gJy4uL3Rkcy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyQkUsIHJlYWRVSW50OCwgUmVzdWx0IH0gZnJvbSAnLi9oZWxwZXJzJztcblxuY29uc3QgaW50ZXJmYWNlVHlwZXM6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7XG4gIDA6ICdTUUxfREZMVCcsXG4gIDE6ICdTUUxfVFNRTCdcbn07XG5cbmZ1bmN0aW9uIGxvZ2luQWNrUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8TG9naW5BY2tUb2tlbj4ge1xuICAvLyBsZW5ndGhcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCB0b2tlbkxlbmd0aCArIG9mZnNldCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3IodG9rZW5MZW5ndGggKyBvZmZzZXQpO1xuICB9XG5cbiAgbGV0IGludGVyZmFjZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogaW50ZXJmYWNlTnVtYmVyIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICBjb25zdCBpbnRlcmZhY2VUeXBlID0gaW50ZXJmYWNlVHlwZXNbaW50ZXJmYWNlTnVtYmVyXTtcblxuICBsZXQgdGRzVmVyc2lvbk51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdGRzVmVyc2lvbk51bWJlciB9ID0gcmVhZFVJbnQzMkJFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdGRzVmVyc2lvbiA9IHZlcnNpb25zW3Rkc1ZlcnNpb25OdW1iZXJdO1xuXG4gIGxldCBwcm9nTmFtZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcHJvZ05hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtYWpvcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWFqb3IgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBtaW5vcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWlub3IgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGxldCBidWlsZE51bUhpO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBidWlsZE51bUhpIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYnVpbGROdW1Mb3c7XG4gICh7IG9mZnNldCwgdmFsdWU6IGJ1aWxkTnVtTG93IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgTG9naW5BY2tUb2tlbih7XG4gICAgaW50ZXJmYWNlOiBpbnRlcmZhY2VUeXBlLFxuICAgIHRkc1ZlcnNpb246IHRkc1ZlcnNpb24sXG4gICAgcHJvZ05hbWU6IHByb2dOYW1lLFxuICAgIHByb2dWZXJzaW9uOiB7XG4gICAgICBtYWpvcjogbWFqb3IsXG4gICAgICBtaW5vcjogbWlub3IsXG4gICAgICBidWlsZE51bUhpOiBidWlsZE51bUhpLFxuICAgICAgYnVpbGROdW1Mb3c6IGJ1aWxkTnVtTG93XG4gICAgfVxuICB9KSwgb2Zmc2V0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbG9naW5BY2tQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGxvZ2luQWNrUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxNQUFNRyxjQUF5QyxHQUFHO0VBQ2hELENBQUMsRUFBRSxVQUFVO0VBQ2IsQ0FBQyxFQUFFO0FBQ0wsQ0FBQztBQUVELFNBQVNDLGNBQWNBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxRQUF1QixFQUF5QjtFQUNuRztFQUNBLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0gsV0FBVyxHQUFHRixNQUFNLEVBQUU7SUFDckMsTUFBTSxJQUFJTSwyQkFBa0IsQ0FBQ0osV0FBVyxHQUFHRixNQUFNLENBQUM7RUFDcEQ7RUFFQSxJQUFJTyxlQUFlO0VBQ25CLENBQUM7SUFBRVAsTUFBTTtJQUFFRyxLQUFLLEVBQUVJO0VBQWdCLENBQUMsR0FBRyxJQUFBQyxrQkFBUyxFQUFDVCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUU1RCxNQUFNUyxhQUFhLEdBQUdaLGNBQWMsQ0FBQ1UsZUFBZSxDQUFDO0VBRXJELElBQUlHLGdCQUFnQjtFQUNwQixDQUFDO0lBQUVWLE1BQU07SUFBRUcsS0FBSyxFQUFFTztFQUFpQixDQUFDLEdBQUcsSUFBQUMscUJBQVksRUFBQ1osR0FBRyxFQUFFQyxNQUFNLENBQUM7RUFFaEUsTUFBTVksVUFBVSxHQUFHQyw0QkFBUSxDQUFDSCxnQkFBZ0IsQ0FBQztFQUU3QyxJQUFJSSxRQUFRO0VBQ1osQ0FBQztJQUFFZCxNQUFNO0lBQUVHLEtBQUssRUFBRVc7RUFBUyxDQUFDLEdBQUcsSUFBQUMscUJBQVksRUFBQ2hCLEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRXhELElBQUlnQixLQUFLO0VBQ1QsQ0FBQztJQUFFaEIsTUFBTTtJQUFFRyxLQUFLLEVBQUVhO0VBQU0sQ0FBQyxHQUFHLElBQUFSLGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRWxELElBQUlpQixLQUFLO0VBQ1QsQ0FBQztJQUFFakIsTUFBTTtJQUFFRyxLQUFLLEVBQUVjO0VBQU0sQ0FBQyxHQUFHLElBQUFULGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRWxELElBQUlrQixVQUFVO0VBQ2QsQ0FBQztJQUFFbEIsTUFBTTtJQUFFRyxLQUFLLEVBQUVlO0VBQVcsQ0FBQyxHQUFHLElBQUFWLGtCQUFTLEVBQUNULEdBQUcsRUFBRUMsTUFBTSxDQUFDO0VBRXZELElBQUltQixXQUFXO0VBQ2YsQ0FBQztJQUFFbkIsTUFBTTtJQUFFRyxLQUFLLEVBQUVnQjtFQUFZLENBQUMsR0FBRyxJQUFBWCxrQkFBUyxFQUFDVCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUV4RCxPQUFPLElBQUlvQixlQUFNLENBQUMsSUFBSUMsb0JBQWEsQ0FBQztJQUNsQ0MsU0FBUyxFQUFFYixhQUFhO0lBQ3hCRyxVQUFVLEVBQUVBLFVBQVU7SUFDdEJFLFFBQVEsRUFBRUEsUUFBUTtJQUNsQlMsV0FBVyxFQUFFO01BQ1hQLEtBQUssRUFBRUEsS0FBSztNQUNaQyxLQUFLLEVBQUVBLEtBQUs7TUFDWkMsVUFBVSxFQUFFQSxVQUFVO01BQ3RCQyxXQUFXLEVBQUVBO0lBQ2Y7RUFDRixDQUFDLENBQUMsRUFBRW5CLE1BQU0sQ0FBQztBQUNiO0FBQUMsSUFBQXdCLFFBQUEsR0FFYzFCLGNBQWM7QUFBQTJCLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQzdCRyxNQUFNLENBQUNGLE9BQU8sR0FBRzNCLGNBQWMifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar _helpers = require(\"./helpers\");\n// s2.2.7.14\n\nfunction orderParser(buf, offset, _options) {\n  // length\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  if (buf.length < offset + tokenLength) {\n    throw new _helpers.NotEnoughDataError(offset + tokenLength);\n  }\n  const orderColumns = [];\n  for (let i = 0; i < tokenLength; i += 2) {\n    let column;\n    ({\n      offset,\n      value: column\n    } = (0, _helpers.readUInt16LE)(buf, offset));\n    orderColumns.push(column);\n  }\n  return new _helpers.Result(new _token.OrderToken(orderColumns), offset);\n}\nvar _default = orderParser;\nexports.default = _default;\nmodule.exports = orderParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJvcmRlclBhcnNlciIsImJ1ZiIsIm9mZnNldCIsIl9vcHRpb25zIiwidG9rZW5MZW5ndGgiLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsImxlbmd0aCIsIk5vdEVub3VnaERhdGFFcnJvciIsIm9yZGVyQ29sdW1ucyIsImkiLCJjb2x1bW4iLCJwdXNoIiwiUmVzdWx0IiwiT3JkZXJUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vb3JkZXItdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4xNFxuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgT3JkZXJUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDE2TEUsIFJlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmZ1bmN0aW9uIG9yZGVyUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8T3JkZXJUb2tlbj4ge1xuICAvLyBsZW5ndGhcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3Qgb3JkZXJDb2x1bW5zOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5MZW5ndGg7IGkgKz0gMikge1xuICAgIGxldCBjb2x1bW47XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZTogY29sdW1uIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICAgIG9yZGVyQ29sdW1ucy5wdXNoKGNvbHVtbik7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgT3JkZXJUb2tlbihvcmRlckNvbHVtbnMpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvcmRlclBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gb3JkZXJQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUpBOztBQU1BLFNBQVNFLFdBQVdBLENBQUNDLEdBQVcsRUFBRUMsTUFBYyxFQUFFQyxRQUF1QixFQUFzQjtFQUM3RjtFQUNBLElBQUlDLFdBQVc7RUFDZixDQUFDO0lBQUVGLE1BQU07SUFBRUcsS0FBSyxFQUFFRDtFQUFZLENBQUMsR0FBRyxJQUFBRSxxQkFBWSxFQUFDTCxHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUUzRCxJQUFJRCxHQUFHLENBQUNNLE1BQU0sR0FBR0wsTUFBTSxHQUFHRSxXQUFXLEVBQUU7SUFDckMsTUFBTSxJQUFJSSwyQkFBa0IsQ0FBQ04sTUFBTSxHQUFHRSxXQUFXLENBQUM7RUFDcEQ7RUFFQSxNQUFNSyxZQUFzQixHQUFHLEVBQUU7RUFFakMsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdOLFdBQVcsRUFBRU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUN2QyxJQUFJQyxNQUFNO0lBQ1YsQ0FBQztNQUFFVCxNQUFNO01BQUVHLEtBQUssRUFBRU07SUFBTyxDQUFDLEdBQUcsSUFBQUwscUJBQVksRUFBQ0wsR0FBRyxFQUFFQyxNQUFNLENBQUM7SUFFdERPLFlBQVksQ0FBQ0csSUFBSSxDQUFDRCxNQUFNLENBQUM7RUFDM0I7RUFFQSxPQUFPLElBQUlFLGVBQU0sQ0FBQyxJQUFJQyxpQkFBVSxDQUFDTCxZQUFZLENBQUMsRUFBRVAsTUFBTSxDQUFDO0FBQ3pEO0FBQUMsSUFBQWEsUUFBQSxHQUVjZixXQUFXO0FBQUFnQixPQUFBLENBQUFDLE9BQUEsR0FBQUYsUUFBQTtBQUMxQkcsTUFBTSxDQUFDRixPQUFPLEdBQUdoQixXQUFXIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _helpers = require(\"./helpers\");\nvar _token = require(\"./token\");\n// s2.2.7.16\n\nfunction returnStatusParser(buf, offset, _options) {\n  let value;\n  ({\n    value,\n    offset\n  } = (0, _helpers.readInt32LE)(buf, offset));\n  return new _helpers.Result(new _token.ReturnStatusToken(value), offset);\n}\nvar _default = returnStatusParser;\nexports.default = _default;\nmodule.exports = returnStatusParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJidWYiLCJvZmZzZXQiLCJfb3B0aW9ucyIsInZhbHVlIiwicmVhZEludDMyTEUiLCJSZXN1bHQiLCJSZXR1cm5TdGF0dXNUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTZcbmltcG9ydCB7IHJlYWRJbnQzMkxFLCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgUmV0dXJuU3RhdHVzVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZnVuY3Rpb24gcmV0dXJuU3RhdHVzUGFyc2VyKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgX29wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8UmV0dXJuU3RhdHVzVG9rZW4+IHtcbiAgbGV0IHZhbHVlO1xuICAoeyB2YWx1ZSwgb2Zmc2V0IH0gPSByZWFkSW50MzJMRShidWYsIG9mZnNldCkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChuZXcgUmV0dXJuU3RhdHVzVG9rZW4odmFsdWUpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXR1cm5TdGF0dXNQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHJldHVyblN0YXR1c1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBSkE7O0FBTUEsU0FBU0Usa0JBQWtCQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBRUMsUUFBdUIsRUFBNkI7RUFDM0csSUFBSUMsS0FBSztFQUNULENBQUM7SUFBRUEsS0FBSztJQUFFRjtFQUFPLENBQUMsR0FBRyxJQUFBRyxvQkFBVyxFQUFDSixHQUFHLEVBQUVDLE1BQU0sQ0FBQztFQUM3QyxPQUFPLElBQUlJLGVBQU0sQ0FBQyxJQUFJQyx3QkFBaUIsQ0FBQ0gsS0FBSyxDQUFDLEVBQUVGLE1BQU0sQ0FBQztBQUN6RDtBQUFDLElBQUFNLFFBQUEsR0FFY1Isa0JBQWtCO0FBQUFTLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ2pDRyxNQUFNLENBQUNGLE9BQU8sR0FBR1Qsa0JBQWtCIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isPLPStream = isPLPStream;\nexports.readPLPStream = readPLPStream;\nexports.readValue = readValue;\nvar _metadataParser = require(\"./metadata-parser\");\nvar _dataType = require(\"./data-type\");\nvar _iconvLite = _interopRequireDefault(require(\"iconv-lite\"));\nvar _sprintfJs = require(\"sprintf-js\");\nvar _guidParser = require(\"./guid-parser\");\nvar _helpers = require(\"./token/helpers\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst NULL = (1 << 16) - 1;\nconst MAX = (1 << 16) - 1;\nconst THREE_AND_A_THIRD = 3 + 1 / 3;\nconst MONEY_DIVISOR = 10000;\nconst PLP_NULL = 0xFFFFFFFFFFFFFFFFn;\nconst UNKNOWN_PLP_LEN = 0xFFFFFFFFFFFFFFFEn;\nconst DEFAULT_ENCODING = 'utf8';\nfunction readTinyInt(buf, offset) {\n  return (0, _helpers.readUInt8)(buf, offset);\n}\nfunction readSmallInt(buf, offset) {\n  return (0, _helpers.readInt16LE)(buf, offset);\n}\nfunction readInt(buf, offset) {\n  return (0, _helpers.readInt32LE)(buf, offset);\n}\nfunction readBigInt(buf, offset) {\n  let value;\n  ({\n    offset,\n    value\n  } = (0, _helpers.readBigInt64LE)(buf, offset));\n  return new _helpers.Result(value.toString(), offset);\n}\nfunction readReal(buf, offset) {\n  return (0, _helpers.readFloatLE)(buf, offset);\n}\nfunction readFloat(buf, offset) {\n  return (0, _helpers.readDoubleLE)(buf, offset);\n}\nfunction readSmallMoney(buf, offset) {\n  let value;\n  ({\n    offset,\n    value\n  } = (0, _helpers.readInt32LE)(buf, offset));\n  return new _helpers.Result(value / MONEY_DIVISOR, offset);\n}\nfunction readMoney(buf, offset) {\n  let high;\n  ({\n    offset,\n    value: high\n  } = (0, _helpers.readInt32LE)(buf, offset));\n  let low;\n  ({\n    offset,\n    value: low\n  } = (0, _helpers.readUInt32LE)(buf, offset));\n  return new _helpers.Result((low + 0x100000000 * high) / MONEY_DIVISOR, offset);\n}\nfunction readBit(buf, offset) {\n  let value;\n  ({\n    offset,\n    value\n  } = (0, _helpers.readUInt8)(buf, offset));\n  return new _helpers.Result(!!value, offset);\n}\nfunction readValue(buf, offset, metadata, options) {\n  const type = metadata.type;\n  switch (type.name) {\n    case 'Null':\n      return new _helpers.Result(null, offset);\n    case 'TinyInt':\n      {\n        return readTinyInt(buf, offset);\n      }\n    case 'SmallInt':\n      {\n        return readSmallInt(buf, offset);\n      }\n    case 'Int':\n      {\n        return readInt(buf, offset);\n      }\n    case 'BigInt':\n      {\n        return readBigInt(buf, offset);\n      }\n    case 'IntN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 1:\n            return readTinyInt(buf, offset);\n          case 2:\n            return readSmallInt(buf, offset);\n          case 4:\n            return readInt(buf, offset);\n          case 8:\n            return readBigInt(buf, offset);\n          default:\n            throw new Error('Unsupported dataLength ' + dataLength + ' for IntN');\n        }\n      }\n    case 'Real':\n      {\n        return readReal(buf, offset);\n      }\n    case 'Float':\n      {\n        return readFloat(buf, offset);\n      }\n    case 'FloatN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 4:\n            return readReal(buf, offset);\n          case 8:\n            return readFloat(buf, offset);\n          default:\n            throw new Error('Unsupported dataLength ' + dataLength + ' for FloatN');\n        }\n      }\n    case 'SmallMoney':\n      {\n        return readSmallMoney(buf, offset);\n      }\n    case 'Money':\n      return readMoney(buf, offset);\n    case 'MoneyN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 4:\n            return readSmallMoney(buf, offset);\n          case 8:\n            return readMoney(buf, offset);\n          default:\n            throw new Error('Unsupported dataLength ' + dataLength + ' for MoneyN');\n        }\n      }\n    case 'Bit':\n      {\n        return readBit(buf, offset);\n      }\n    case 'BitN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 1:\n            return readBit(buf, offset);\n          default:\n            throw new Error('Unsupported dataLength ' + dataLength + ' for BitN');\n        }\n      }\n    case 'VarChar':\n    case 'Char':\n      {\n        const codepage = metadata.collation.codepage;\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        if (dataLength === NULL) {\n          return new _helpers.Result(null, offset);\n        }\n        return readChars(buf, offset, dataLength, codepage);\n      }\n    case 'NVarChar':\n    case 'NChar':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        if (dataLength === NULL) {\n          return new _helpers.Result(null, offset);\n        }\n        return readNChars(buf, offset, dataLength);\n      }\n    case 'VarBinary':\n    case 'Binary':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        if (dataLength === NULL) {\n          return new _helpers.Result(null, offset);\n        }\n        return readBinary(buf, offset, dataLength);\n      }\n    case 'Text':\n      {\n        let textPointerLength;\n        ({\n          offset,\n          value: textPointerLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (textPointerLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n\n        // Textpointer\n        ({\n          offset\n        } = readBinary(buf, offset, textPointerLength));\n\n        // Timestamp\n        ({\n          offset\n        } = readBinary(buf, offset, 8));\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        return readChars(buf, offset, dataLength, metadata.collation.codepage);\n      }\n    case 'NText':\n      {\n        let textPointerLength;\n        ({\n          offset,\n          value: textPointerLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (textPointerLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n\n        // Textpointer\n        ({\n          offset\n        } = readBinary(buf, offset, textPointerLength));\n\n        // Timestamp\n        ({\n          offset\n        } = readBinary(buf, offset, 8));\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        return readNChars(buf, offset, dataLength);\n      }\n    case 'Image':\n      {\n        let textPointerLength;\n        ({\n          offset,\n          value: textPointerLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (textPointerLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n\n        // Textpointer\n        ({\n          offset\n        } = readBinary(buf, offset, textPointerLength));\n\n        // Timestamp\n        ({\n          offset\n        } = readBinary(buf, offset, 8));\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        return readBinary(buf, offset, dataLength);\n      }\n    case 'SmallDateTime':\n      {\n        return readSmallDateTime(buf, offset, options.useUTC);\n      }\n    case 'DateTime':\n      {\n        return readDateTime(buf, offset, options.useUTC);\n      }\n    case 'DateTimeN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 4:\n            return readSmallDateTime(buf, offset, options.useUTC);\n          case 8:\n            return readDateTime(buf, offset, options.useUTC);\n          default:\n            throw new Error('Unsupported dataLength ' + dataLength + ' for DateTimeN');\n        }\n      }\n    case 'Time':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readTime(buf, offset, dataLength, metadata.scale, options.useUTC);\n      }\n    case 'Date':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readDate(buf, offset, options.useUTC);\n      }\n    case 'DateTime2':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readDateTime2(buf, offset, dataLength, metadata.scale, options.useUTC);\n      }\n    case 'DateTimeOffset':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readDateTimeOffset(buf, offset, dataLength, metadata.scale);\n      }\n    case 'NumericN':\n    case 'DecimalN':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readNumeric(buf, offset, dataLength, metadata.precision, metadata.scale);\n      }\n    case 'UniqueIdentifier':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt8)(buf, offset));\n        switch (dataLength) {\n          case 0:\n            return new _helpers.Result(null, offset);\n          case 0x10:\n            return readUniqueIdentifier(buf, offset, options);\n          default:\n            throw new Error((0, _sprintfJs.sprintf)('Unsupported guid size %d', dataLength - 1));\n        }\n      }\n    case 'Variant':\n      {\n        let dataLength;\n        ({\n          offset,\n          value: dataLength\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        if (dataLength === 0) {\n          return new _helpers.Result(null, offset);\n        }\n        return readVariant(buf, offset, options, dataLength);\n      }\n    default:\n      {\n        throw new Error('Invalid type!');\n      }\n  }\n}\nfunction isPLPStream(metadata) {\n  switch (metadata.type.name) {\n    case 'VarChar':\n    case 'NVarChar':\n    case 'VarBinary':\n      {\n        return metadata.dataLength === MAX;\n      }\n    case 'Xml':\n      {\n        return true;\n      }\n    case 'UDT':\n      {\n        return true;\n      }\n  }\n}\nfunction readUniqueIdentifier(buf, offset, options) {\n  let data;\n  ({\n    value: data,\n    offset\n  } = readBinary(buf, offset, 0x10));\n  return new _helpers.Result(options.lowerCaseGuids ? (0, _guidParser.bufferToLowerCaseGuid)(data) : (0, _guidParser.bufferToUpperCaseGuid)(data), offset);\n}\nfunction readNumeric(buf, offset, dataLength, _precision, scale) {\n  let sign;\n  ({\n    offset,\n    value: sign\n  } = (0, _helpers.readUInt8)(buf, offset));\n  sign = sign === 1 ? 1 : -1;\n  let value;\n  if (dataLength === 5) {\n    ({\n      offset,\n      value\n    } = (0, _helpers.readUInt32LE)(buf, offset));\n  } else if (dataLength === 9) {\n    ({\n      offset,\n      value\n    } = (0, _helpers.readUNumeric64LE)(buf, offset));\n  } else if (dataLength === 13) {\n    ({\n      offset,\n      value\n    } = (0, _helpers.readUNumeric96LE)(buf, offset));\n  } else if (dataLength === 17) {\n    ({\n      offset,\n      value\n    } = (0, _helpers.readUNumeric128LE)(buf, offset));\n  } else {\n    throw new Error((0, _sprintfJs.sprintf)('Unsupported numeric dataLength %d', dataLength));\n  }\n  return new _helpers.Result(value * sign / Math.pow(10, scale), offset);\n}\nfunction readVariant(buf, offset, options, dataLength) {\n  let baseType;\n  ({\n    value: baseType,\n    offset\n  } = (0, _helpers.readUInt8)(buf, offset));\n  const type = _dataType.TYPE[baseType];\n  let propBytes;\n  ({\n    value: propBytes,\n    offset\n  } = (0, _helpers.readUInt8)(buf, offset));\n  dataLength = dataLength - propBytes - 2;\n  switch (type.name) {\n    case 'UniqueIdentifier':\n      return readUniqueIdentifier(buf, offset, options);\n    case 'Bit':\n      return readBit(buf, offset);\n    case 'TinyInt':\n      return readTinyInt(buf, offset);\n    case 'SmallInt':\n      return readSmallInt(buf, offset);\n    case 'Int':\n      return readInt(buf, offset);\n    case 'BigInt':\n      return readBigInt(buf, offset);\n    case 'SmallDateTime':\n      return readSmallDateTime(buf, offset, options.useUTC);\n    case 'DateTime':\n      return readDateTime(buf, offset, options.useUTC);\n    case 'Real':\n      return readReal(buf, offset);\n    case 'Float':\n      return readFloat(buf, offset);\n    case 'SmallMoney':\n      return readSmallMoney(buf, offset);\n    case 'Money':\n      return readMoney(buf, offset);\n    case 'Date':\n      return readDate(buf, offset, options.useUTC);\n    case 'Time':\n      {\n        let scale;\n        ({\n          value: scale,\n          offset\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return readTime(buf, offset, dataLength, scale, options.useUTC);\n      }\n    case 'DateTime2':\n      {\n        let scale;\n        ({\n          value: scale,\n          offset\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return readDateTime2(buf, offset, dataLength, scale, options.useUTC);\n      }\n    case 'DateTimeOffset':\n      {\n        let scale;\n        ({\n          value: scale,\n          offset\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return readDateTimeOffset(buf, offset, dataLength, scale);\n      }\n    case 'VarBinary':\n    case 'Binary':\n      {\n        // maxLength (unused?)\n        ({\n          offset\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        return readBinary(buf, offset, dataLength);\n      }\n    case 'NumericN':\n    case 'DecimalN':\n      {\n        let precision;\n        ({\n          value: precision,\n          offset\n        } = (0, _helpers.readUInt8)(buf, offset));\n        let scale;\n        ({\n          value: scale,\n          offset\n        } = (0, _helpers.readUInt8)(buf, offset));\n        return readNumeric(buf, offset, dataLength, precision, scale);\n      }\n    case 'VarChar':\n    case 'Char':\n      {\n        // maxLength (unused?)\n        ({\n          offset\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n        let collation;\n        ({\n          value: collation,\n          offset\n        } = (0, _metadataParser.readCollation)(buf, offset));\n        return readChars(buf, offset, dataLength, collation.codepage);\n      }\n    case 'NVarChar':\n    case 'NChar':\n      {\n        // maxLength (unused?)\n        ({\n          offset\n        } = (0, _helpers.readUInt16LE)(buf, offset));\n\n        // collation (unused?)\n        ({\n          offset\n        } = (0, _metadataParser.readCollation)(buf, offset));\n        return readNChars(buf, offset, dataLength);\n      }\n    default:\n      throw new Error('Invalid type!');\n  }\n}\nfunction readBinary(buf, offset, dataLength) {\n  if (buf.length < offset + dataLength) {\n    throw new _helpers.NotEnoughDataError(offset + dataLength);\n  }\n  return new _helpers.Result(buf.slice(offset, offset + dataLength), offset + dataLength);\n}\nfunction readChars(buf, offset, dataLength, codepage) {\n  if (buf.length < offset + dataLength) {\n    throw new _helpers.NotEnoughDataError(offset + dataLength);\n  }\n  return new _helpers.Result(_iconvLite.default.decode(buf.slice(offset, offset + dataLength), codepage ?? DEFAULT_ENCODING), offset + dataLength);\n}\nfunction readNChars(buf, offset, dataLength) {\n  if (buf.length < offset + dataLength) {\n    throw new _helpers.NotEnoughDataError(offset + dataLength);\n  }\n  return new _helpers.Result(buf.toString('ucs2', offset, offset + dataLength), offset + dataLength);\n}\nasync function readPLPStream(parser) {\n  while (parser.buffer.length < parser.position + 8) {\n    await parser.waitForChunk();\n  }\n  const expectedLength = parser.buffer.readBigUInt64LE(parser.position);\n  parser.position += 8;\n  if (expectedLength === PLP_NULL) {\n    return null;\n  }\n  const chunks = [];\n  let currentLength = 0;\n  while (true) {\n    while (parser.buffer.length < parser.position + 4) {\n      await parser.waitForChunk();\n    }\n    const chunkLength = parser.buffer.readUInt32LE(parser.position);\n    parser.position += 4;\n    if (!chunkLength) {\n      break;\n    }\n    while (parser.buffer.length < parser.position + chunkLength) {\n      await parser.waitForChunk();\n    }\n    chunks.push(parser.buffer.slice(parser.position, parser.position + chunkLength));\n    parser.position += chunkLength;\n    currentLength += chunkLength;\n  }\n  if (expectedLength !== UNKNOWN_PLP_LEN) {\n    if (currentLength !== Number(expectedLength)) {\n      throw new Error('Partially Length-prefixed Bytes unmatched lengths : expected ' + expectedLength + ', but got ' + currentLength + ' bytes');\n    }\n  }\n  return chunks;\n}\nfunction readSmallDateTime(buf, offset, useUTC) {\n  let days;\n  ({\n    offset,\n    value: days\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  let minutes;\n  ({\n    offset,\n    value: minutes\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  let value;\n  if (useUTC) {\n    value = new Date(Date.UTC(1900, 0, 1 + days, 0, minutes));\n  } else {\n    value = new Date(1900, 0, 1 + days, 0, minutes);\n  }\n  return new _helpers.Result(value, offset);\n}\nfunction readDateTime(buf, offset, useUTC) {\n  let days;\n  ({\n    offset,\n    value: days\n  } = (0, _helpers.readInt32LE)(buf, offset));\n  let threeHundredthsOfSecond;\n  ({\n    offset,\n    value: threeHundredthsOfSecond\n  } = (0, _helpers.readInt32LE)(buf, offset));\n  const milliseconds = Math.round(threeHundredthsOfSecond * THREE_AND_A_THIRD);\n  let value;\n  if (useUTC) {\n    value = new Date(Date.UTC(1900, 0, 1 + days, 0, 0, 0, milliseconds));\n  } else {\n    value = new Date(1900, 0, 1 + days, 0, 0, 0, milliseconds);\n  }\n  return new _helpers.Result(value, offset);\n}\nfunction readTime(buf, offset, dataLength, scale, useUTC) {\n  let value;\n  switch (dataLength) {\n    case 3:\n      {\n        ({\n          value,\n          offset\n        } = (0, _helpers.readUInt24LE)(buf, offset));\n        break;\n      }\n    case 4:\n      {\n        ({\n          value,\n          offset\n        } = (0, _helpers.readUInt32LE)(buf, offset));\n        break;\n      }\n    case 5:\n      {\n        ({\n          value,\n          offset\n        } = (0, _helpers.readUInt40LE)(buf, offset));\n        break;\n      }\n    default:\n      {\n        throw new Error('unreachable');\n      }\n  }\n  if (scale < 7) {\n    for (let i = scale; i < 7; i++) {\n      value *= 10;\n    }\n  }\n  let date;\n  if (useUTC) {\n    date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, value / 10000));\n  } else {\n    date = new Date(1970, 0, 1, 0, 0, 0, value / 10000);\n  }\n  Object.defineProperty(date, 'nanosecondsDelta', {\n    enumerable: false,\n    value: value % 10000 / Math.pow(10, 7)\n  });\n  return new _helpers.Result(date, offset);\n}\nfunction readDate(buf, offset, useUTC) {\n  let days;\n  ({\n    offset,\n    value: days\n  } = (0, _helpers.readUInt24LE)(buf, offset));\n  if (useUTC) {\n    return new _helpers.Result(new Date(Date.UTC(2000, 0, days - 730118)), offset);\n  } else {\n    return new _helpers.Result(new Date(2000, 0, days - 730118), offset);\n  }\n}\nfunction readDateTime2(buf, offset, dataLength, scale, useUTC) {\n  let time;\n  ({\n    offset,\n    value: time\n  } = readTime(buf, offset, dataLength - 3, scale, useUTC));\n  let days;\n  ({\n    offset,\n    value: days\n  } = (0, _helpers.readUInt24LE)(buf, offset));\n  let date;\n  if (useUTC) {\n    date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time));\n  } else {\n    date = new Date(2000, 0, days - 730118, time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n  }\n  Object.defineProperty(date, 'nanosecondsDelta', {\n    enumerable: false,\n    value: time.nanosecondsDelta\n  });\n  return new _helpers.Result(date, offset);\n}\nfunction readDateTimeOffset(buf, offset, dataLength, scale) {\n  let time;\n  ({\n    offset,\n    value: time\n  } = readTime(buf, offset, dataLength - 5, scale, true));\n  let days;\n  ({\n    offset,\n    value: days\n  } = (0, _helpers.readUInt24LE)(buf, offset));\n\n  // time offset?\n  ({\n    offset\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  const date = new Date(Date.UTC(2000, 0, days - 730118, 0, 0, 0, +time));\n  Object.defineProperty(date, 'nanosecondsDelta', {\n    enumerable: false,\n    value: time.nanosecondsDelta\n  });\n  return new _helpers.Result(date, offset);\n}\nmodule.exports.readValue = readValue;\nmodule.exports.isPLPStream = isPLPStream;\nmodule.exports.readPLPStream = readPLPStream;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWV0YWRhdGFQYXJzZXIiLCJyZXF1aXJlIiwiX2RhdGFUeXBlIiwiX2ljb252TGl0ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3ByaW50ZkpzIiwiX2d1aWRQYXJzZXIiLCJfaGVscGVycyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTlVMTCIsIk1BWCIsIlRIUkVFX0FORF9BX1RISVJEIiwiTU9ORVlfRElWSVNPUiIsIlBMUF9OVUxMIiwiVU5LTk9XTl9QTFBfTEVOIiwiREVGQVVMVF9FTkNPRElORyIsInJlYWRUaW55SW50IiwiYnVmIiwib2Zmc2V0IiwicmVhZFVJbnQ4IiwicmVhZFNtYWxsSW50IiwicmVhZEludDE2TEUiLCJyZWFkSW50IiwicmVhZEludDMyTEUiLCJyZWFkQmlnSW50IiwidmFsdWUiLCJyZWFkQmlnSW50NjRMRSIsIlJlc3VsdCIsInRvU3RyaW5nIiwicmVhZFJlYWwiLCJyZWFkRmxvYXRMRSIsInJlYWRGbG9hdCIsInJlYWREb3VibGVMRSIsInJlYWRTbWFsbE1vbmV5IiwicmVhZE1vbmV5IiwiaGlnaCIsImxvdyIsInJlYWRVSW50MzJMRSIsInJlYWRCaXQiLCJyZWFkVmFsdWUiLCJtZXRhZGF0YSIsIm9wdGlvbnMiLCJ0eXBlIiwibmFtZSIsImRhdGFMZW5ndGgiLCJFcnJvciIsImNvZGVwYWdlIiwiY29sbGF0aW9uIiwicmVhZFVJbnQxNkxFIiwicmVhZENoYXJzIiwicmVhZE5DaGFycyIsInJlYWRCaW5hcnkiLCJ0ZXh0UG9pbnRlckxlbmd0aCIsInJlYWRTbWFsbERhdGVUaW1lIiwidXNlVVRDIiwicmVhZERhdGVUaW1lIiwicmVhZFRpbWUiLCJzY2FsZSIsInJlYWREYXRlIiwicmVhZERhdGVUaW1lMiIsInJlYWREYXRlVGltZU9mZnNldCIsInJlYWROdW1lcmljIiwicHJlY2lzaW9uIiwicmVhZFVuaXF1ZUlkZW50aWZpZXIiLCJzcHJpbnRmIiwicmVhZFZhcmlhbnQiLCJpc1BMUFN0cmVhbSIsImRhdGEiLCJsb3dlckNhc2VHdWlkcyIsImJ1ZmZlclRvTG93ZXJDYXNlR3VpZCIsImJ1ZmZlclRvVXBwZXJDYXNlR3VpZCIsIl9wcmVjaXNpb24iLCJzaWduIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJyZWFkVU51bWVyaWMxMjhMRSIsIk1hdGgiLCJwb3ciLCJiYXNlVHlwZSIsIlRZUEUiLCJwcm9wQnl0ZXMiLCJyZWFkQ29sbGF0aW9uIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwic2xpY2UiLCJpY29udiIsImRlY29kZSIsInJlYWRQTFBTdHJlYW0iLCJwYXJzZXIiLCJidWZmZXIiLCJwb3NpdGlvbiIsIndhaXRGb3JDaHVuayIsImV4cGVjdGVkTGVuZ3RoIiwicmVhZEJpZ1VJbnQ2NExFIiwiY2h1bmtzIiwiY3VycmVudExlbmd0aCIsImNodW5rTGVuZ3RoIiwicHVzaCIsIk51bWJlciIsImRheXMiLCJtaW51dGVzIiwiRGF0ZSIsIlVUQyIsInRocmVlSHVuZHJlZHRoc09mU2Vjb25kIiwibWlsbGlzZWNvbmRzIiwicm91bmQiLCJyZWFkVUludDI0TEUiLCJyZWFkVUludDQwTEUiLCJpIiwiZGF0ZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsInRpbWUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwibmFub3NlY29uZHNEZWx0YSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvdmFsdWUtcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIsIHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi90b2tlbi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IHR5cGUgTWV0YWRhdGEsIHJlYWRDb2xsYXRpb24gfSBmcm9tICcuL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBUWVBFIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuXG5pbXBvcnQgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5pbXBvcnQgeyBidWZmZXJUb0xvd2VyQ2FzZUd1aWQsIGJ1ZmZlclRvVXBwZXJDYXNlR3VpZCB9IGZyb20gJy4vZ3VpZC1wYXJzZXInO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCBSZXN1bHQsIHJlYWRCaWdJbnQ2NExFLCByZWFkRG91YmxlTEUsIHJlYWRGbG9hdExFLCByZWFkSW50MTZMRSwgcmVhZEludDMyTEUsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQzMkxFLCByZWFkVUludDgsIHJlYWRVSW50MjRMRSwgcmVhZFVJbnQ0MExFLCByZWFkVU51bWVyaWM2NExFLCByZWFkVU51bWVyaWM5NkxFLCByZWFkVU51bWVyaWMxMjhMRSB9IGZyb20gJy4vdG9rZW4vaGVscGVycyc7XG5cbmNvbnN0IE5VTEwgPSAoMSA8PCAxNikgLSAxO1xuY29uc3QgTUFYID0gKDEgPDwgMTYpIC0gMTtcbmNvbnN0IFRIUkVFX0FORF9BX1RISVJEID0gMyArICgxIC8gMyk7XG5jb25zdCBNT05FWV9ESVZJU09SID0gMTAwMDA7XG5jb25zdCBQTFBfTlVMTCA9IDB4RkZGRkZGRkZGRkZGRkZGRm47XG5jb25zdCBVTktOT1dOX1BMUF9MRU4gPSAweEZGRkZGRkZGRkZGRkZGRkVuO1xuY29uc3QgREVGQVVMVF9FTkNPRElORyA9ICd1dGY4JztcblxuZnVuY3Rpb24gcmVhZFRpbnlJbnQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsSW50KGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgcmV0dXJuIHJlYWRJbnQxNkxFKGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZEludChidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIpOiBSZXN1bHQ8bnVtYmVyPiB7XG4gIHJldHVybiByZWFkSW50MzJMRShidWYsIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRCaWdJbnQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PHN0cmluZz4ge1xuICBsZXQgdmFsdWU7XG4gICh7IG9mZnNldCwgdmFsdWUgfSA9IHJlYWRCaWdJbnQ2NExFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUudG9TdHJpbmcoKSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFJlYWwoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZEZsb2F0TEUoYnVmLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRmxvYXQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICByZXR1cm4gcmVhZERvdWJsZUxFKGJ1Ziwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFNtYWxsTW9uZXkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBsZXQgdmFsdWU7XG4gICh7IG9mZnNldCwgdmFsdWUgfSA9IHJlYWRJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUgLyBNT05FWV9ESVZJU09SLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTW9uZXkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyKTogUmVzdWx0PG51bWJlcj4ge1xuICBsZXQgaGlnaDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogaGlnaCB9ID0gcmVhZEludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgbG93O1xuICAoeyBvZmZzZXQsIHZhbHVlOiBsb3cgfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KChsb3cgKyAoMHgxMDAwMDAwMDAgKiBoaWdoKSkgLyBNT05FWV9ESVZJU09SLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkQml0KGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxib29sZWFuPiB7XG4gIGxldCB2YWx1ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoISF2YWx1ZSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFZhbHVlKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgbWV0YWRhdGE6IE1ldGFkYXRhLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PHVua25vd24+IHtcbiAgY29uc3QgdHlwZSA9IG1ldGFkYXRhLnR5cGU7XG5cbiAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICBjYXNlICdOdWxsJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICBjYXNlICdUaW55SW50Jzoge1xuICAgICAgcmV0dXJuIHJlYWRUaW55SW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdTbWFsbEludCc6IHtcbiAgICAgIHJldHVybiByZWFkU21hbGxJbnQoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0ludCc6IHtcbiAgICAgIHJldHVybiByZWFkSW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdCaWdJbnQnOiB7XG4gICAgICByZXR1cm4gcmVhZEJpZ0ludChidWYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW50Tic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuIHJlYWRUaW55SW50KGJ1Ziwgb2Zmc2V0KTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHJldHVybiByZWFkU21hbGxJbnQoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIHJlYWRJbnQoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRCaWdJbnQoYnVmLCBvZmZzZXQpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgSW50TicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNhc2UgJ1JlYWwnOiB7XG4gICAgICByZXR1cm4gcmVhZFJlYWwoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0Zsb2F0Jzoge1xuICAgICAgcmV0dXJuIHJlYWRGbG9hdChidWYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnRmxvYXROJzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdChudWxsLCBvZmZzZXQpO1xuXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gcmVhZFJlYWwoYnVmLCBvZmZzZXQpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRGbG9hdChidWYsIG9mZnNldCk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGRhdGFMZW5ndGggJyArIGRhdGFMZW5ndGggKyAnIGZvciBGbG9hdE4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdTbWFsbE1vbmV5Jzoge1xuICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdNb25leSc6XG4gICAgICByZXR1cm4gcmVhZE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ01vbmV5Tic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHN3aXRjaCAoZGF0YUxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcblxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIHJlYWRTbWFsbE1vbmV5KGJ1Ziwgb2Zmc2V0KTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiByZWFkTW9uZXkoYnVmLCBvZmZzZXQpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgTW9uZXlOJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnQml0Jzoge1xuICAgICAgcmV0dXJuIHJlYWRCaXQoYnVmLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ0JpdE4nOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiByZWFkQml0KGJ1Ziwgb2Zmc2V0KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZGF0YUxlbmd0aCAnICsgZGF0YUxlbmd0aCArICcgZm9yIEJpdE4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdWYXJDaGFyJzpcbiAgICBjYXNlICdDaGFyJzoge1xuICAgICAgY29uc3QgY29kZXBhZ2UgPSBtZXRhZGF0YS5jb2xsYXRpb24hLmNvZGVwYWdlITtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgaWYgKGRhdGFMZW5ndGggPT09IE5VTEwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWRDaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgY29kZXBhZ2UpO1xuICAgIH1cblxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkTkNoYXJzKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgIGNhc2UgJ0JpbmFyeSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdUZXh0Jzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRDaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgbWV0YWRhdGEuY29sbGF0aW9uIS5jb2RlcGFnZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWROQ2hhcnMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgpO1xuICAgIH1cblxuICAgIGNhc2UgJ0ltYWdlJzoge1xuICAgICAgbGV0IHRleHRQb2ludGVyTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdGV4dFBvaW50ZXJMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBpZiAodGV4dFBvaW50ZXJMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGV4dHBvaW50ZXJcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZEJpbmFyeShidWYsIG9mZnNldCwgdGV4dFBvaW50ZXJMZW5ndGgpKTtcblxuICAgICAgLy8gVGltZXN0YW1wXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIDgpKTtcblxuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRCaW5hcnkoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgpO1xuICAgIH1cblxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOiB7XG4gICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZSc6IHtcbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZU4nOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByZWFkU21hbGxEYXRlVGltZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWREYXRlVGltZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBkYXRhTGVuZ3RoICcgKyBkYXRhTGVuZ3RoICsgJyBmb3IgRGF0ZVRpbWVOJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnVGltZSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkVGltZShidWYsIG9mZnNldCwgZGF0YUxlbmd0aCwgbWV0YWRhdGEuc2NhbGUhLCBvcHRpb25zLnVzZVVUQyk7XG4gICAgfVxuXG4gICAgY2FzZSAnRGF0ZSc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuICAgIH1cblxuICAgIGNhc2UgJ0RhdGVUaW1lMic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUyKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBtZXRhZGF0YS5zY2FsZSEsIG9wdGlvbnMudXNlVVRDKTtcbiAgICB9XG5cbiAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIG1ldGFkYXRhLnNjYWxlISk7XG4gICAgfVxuXG4gICAgY2FzZSAnTnVtZXJpY04nOlxuICAgIGNhc2UgJ0RlY2ltYWxOJzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgaWYgKGRhdGFMZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQobnVsbCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWROdW1lcmljKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBtZXRhZGF0YS5wcmVjaXNpb24hLCBtZXRhZGF0YS5zY2FsZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG5cbiAgICAgICAgY2FzZSAweDEwOlxuICAgICAgICAgIHJldHVybiByZWFkVW5pcXVlSWRlbnRpZmllcihidWYsIG9mZnNldCwgb3B0aW9ucyk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5zdXBwb3J0ZWQgZ3VpZCBzaXplICVkJywgZGF0YUxlbmd0aCEgLSAxKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyaWFudCc6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGlmIChkYXRhTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzdWx0KG51bGwsIG9mZnNldCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkVmFyaWFudChidWYsIG9mZnNldCwgb3B0aW9ucywgZGF0YUxlbmd0aCk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGUhJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzUExQU3RyZWFtKG1ldGFkYXRhOiBNZXRhZGF0YSkge1xuICBzd2l0Y2ggKG1ldGFkYXRhLnR5cGUubmFtZSkge1xuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdWYXJCaW5hcnknOiB7XG4gICAgICByZXR1cm4gbWV0YWRhdGEuZGF0YUxlbmd0aCA9PT0gTUFYO1xuICAgIH1cblxuICAgIGNhc2UgJ1htbCc6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVW5pcXVlSWRlbnRpZmllcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gIGxldCBkYXRhO1xuICAoeyB2YWx1ZTogZGF0YSwgb2Zmc2V0IH0gPSByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCAweDEwKSk7XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQob3B0aW9ucy5sb3dlckNhc2VHdWlkcyA/IGJ1ZmZlclRvTG93ZXJDYXNlR3VpZChkYXRhKSA6IGJ1ZmZlclRvVXBwZXJDYXNlR3VpZChkYXRhKSwgb2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gcmVhZE51bWVyaWMoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIF9wcmVjaXNpb246IG51bWJlciwgc2NhbGU6IG51bWJlcik6IFJlc3VsdDxudW1iZXI+IHtcbiAgbGV0IHNpZ247XG4gICh7IG9mZnNldCwgdmFsdWU6IHNpZ24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIHNpZ24gPSBzaWduID09PSAxID8gMSA6IC0xO1xuXG4gIGxldCB2YWx1ZTtcbiAgaWYgKGRhdGFMZW5ndGggPT09IDUpIHtcbiAgICAoeyBvZmZzZXQsIHZhbHVlIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcbiAgfSBlbHNlIGlmIChkYXRhTGVuZ3RoID09PSA5KSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljNjRMRShidWYsIG9mZnNldCkpO1xuICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDEzKSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljOTZMRShidWYsIG9mZnNldCkpO1xuICB9IGVsc2UgaWYgKGRhdGFMZW5ndGggPT09IDE3KSB7XG4gICAgKHsgb2Zmc2V0LCB2YWx1ZSB9ID0gcmVhZFVOdW1lcmljMTI4TEUoYnVmLCBvZmZzZXQpKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5zdXBwb3J0ZWQgbnVtZXJpYyBkYXRhTGVuZ3RoICVkJywgZGF0YUxlbmd0aCkpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoKHZhbHVlICogc2lnbikgLyBNYXRoLnBvdygxMCwgc2NhbGUpLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkVmFyaWFudChidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMsIGRhdGFMZW5ndGg6IG51bWJlcik6IFJlc3VsdDx1bmtub3duPiB7XG4gIGxldCBiYXNlVHlwZTtcbiAgKHsgdmFsdWU6IGJhc2VUeXBlLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IHR5cGUgPSBUWVBFW2Jhc2VUeXBlXTtcblxuICBsZXQgcHJvcEJ5dGVzO1xuICAoeyB2YWx1ZTogcHJvcEJ5dGVzLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gIGRhdGFMZW5ndGggPSBkYXRhTGVuZ3RoIC0gcHJvcEJ5dGVzIC0gMjtcblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgcmV0dXJuIHJlYWRVbmlxdWVJZGVudGlmaWVyKGJ1Ziwgb2Zmc2V0LCBvcHRpb25zKTtcblxuICAgIGNhc2UgJ0JpdCc6XG4gICAgICByZXR1cm4gcmVhZEJpdChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdUaW55SW50JzpcbiAgICAgIHJldHVybiByZWFkVGlueUludChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsSW50KGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ0ludCc6XG4gICAgICByZXR1cm4gcmVhZEludChidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdCaWdJbnQnOlxuICAgICAgcmV0dXJuIHJlYWRCaWdJbnQoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnU21hbGxEYXRlVGltZSc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcblxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWUoYnVmLCBvZmZzZXQsIG9wdGlvbnMudXNlVVRDKTtcblxuICAgIGNhc2UgJ1JlYWwnOlxuICAgICAgcmV0dXJuIHJlYWRSZWFsKGJ1Ziwgb2Zmc2V0KTtcblxuICAgIGNhc2UgJ0Zsb2F0JzpcbiAgICAgIHJldHVybiByZWFkRmxvYXQoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnU21hbGxNb25leSc6XG4gICAgICByZXR1cm4gcmVhZFNtYWxsTW9uZXkoYnVmLCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnTW9uZXknOlxuICAgICAgcmV0dXJuIHJlYWRNb25leShidWYsIG9mZnNldCk7XG5cbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiByZWFkRGF0ZShidWYsIG9mZnNldCwgb3B0aW9ucy51c2VVVEMpO1xuXG4gICAgY2FzZSAnVGltZSc6IHtcbiAgICAgIGxldCBzY2FsZTtcbiAgICAgICh7IHZhbHVlOiBzY2FsZSwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWRUaW1lKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoLCBzY2FsZSwgb3B0aW9ucy51c2VVVEMpO1xuICAgIH1cblxuICAgIGNhc2UgJ0RhdGVUaW1lMic6IHtcbiAgICAgIGxldCBzY2FsZTtcbiAgICAgICh7IHZhbHVlOiBzY2FsZSwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIHJlYWREYXRlVGltZTIoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHNjYWxlLCBvcHRpb25zLnVzZVVUQyk7XG4gICAgfVxuXG4gICAgY2FzZSAnRGF0ZVRpbWVPZmZzZXQnOiB7XG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyB2YWx1ZTogc2NhbGUsIG9mZnNldCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHNjYWxlKTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgIGNhc2UgJ0JpbmFyeSc6IHtcbiAgICAgIC8vIG1heExlbmd0aCAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkQmluYXJ5KGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBjYXNlICdOdW1lcmljTic6XG4gICAgY2FzZSAnRGVjaW1hbE4nOiB7XG4gICAgICBsZXQgcHJlY2lzaW9uO1xuICAgICAgKHsgdmFsdWU6IHByZWNpc2lvbiwgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgdmFsdWU6IHNjYWxlLCBvZmZzZXQgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gcmVhZE51bWVyaWMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIHByZWNpc2lvbiwgc2NhbGUpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOiB7XG4gICAgICAvLyBtYXhMZW5ndGggKHVudXNlZD8pXG4gICAgICAoeyBvZmZzZXQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgY29sbGF0aW9uO1xuICAgICAgKHsgdmFsdWU6IGNvbGxhdGlvbiwgb2Zmc2V0IH0gPSByZWFkQ29sbGF0aW9uKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiByZWFkQ2hhcnMoYnVmLCBvZmZzZXQsIGRhdGFMZW5ndGgsIGNvbGxhdGlvbi5jb2RlcGFnZSEpO1xuICAgIH1cblxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIC8vIG1heExlbmd0aCAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIC8vIGNvbGxhdGlvbiAodW51c2VkPylcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gcmVhZE5DaGFycyhidWYsIG9mZnNldCwgZGF0YUxlbmd0aCk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0eXBlIScpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRCaW5hcnkoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIpOiBSZXN1bHQ8QnVmZmVyPiB7XG4gIGlmIChidWYubGVuZ3RoIDwgb2Zmc2V0ICsgZGF0YUxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3VsdChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgb2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRDaGFycyhidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgY29kZXBhZ2U6IHN0cmluZyk6IFJlc3VsdDxzdHJpbmc+IHtcbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IE5vdEVub3VnaERhdGFFcnJvcihvZmZzZXQgKyBkYXRhTGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzdWx0KGljb252LmRlY29kZShidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgY29kZXBhZ2UgPz8gREVGQVVMVF9FTkNPRElORyksIG9mZnNldCArIGRhdGFMZW5ndGgpO1xufVxuXG5mdW5jdGlvbiByZWFkTkNoYXJzKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlciwgZGF0YUxlbmd0aDogbnVtYmVyKTogUmVzdWx0PHN0cmluZz4ge1xuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIGRhdGFMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIGRhdGFMZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQoYnVmLnRvU3RyaW5nKCd1Y3MyJywgb2Zmc2V0LCBvZmZzZXQgKyBkYXRhTGVuZ3RoKSwgb2Zmc2V0ICsgZGF0YUxlbmd0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQTFBTdHJlYW0ocGFyc2VyOiBQYXJzZXIpOiBQcm9taXNlPG51bGwgfCBCdWZmZXJbXT4ge1xuICB3aGlsZSAocGFyc2VyLmJ1ZmZlci5sZW5ndGggPCBwYXJzZXIucG9zaXRpb24gKyA4KSB7XG4gICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSBwYXJzZXIuYnVmZmVyLnJlYWRCaWdVSW50NjRMRShwYXJzZXIucG9zaXRpb24pO1xuICBwYXJzZXIucG9zaXRpb24gKz0gODtcblxuICBpZiAoZXhwZWN0ZWRMZW5ndGggPT09IFBMUF9OVUxMKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaHVua3M6IEJ1ZmZlcltdID0gW107XG4gIGxldCBjdXJyZW50TGVuZ3RoID0gMDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHdoaWxlIChwYXJzZXIuYnVmZmVyLmxlbmd0aCA8IHBhcnNlci5wb3NpdGlvbiArIDQpIHtcbiAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaHVua0xlbmd0aCA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQzMkxFKHBhcnNlci5wb3NpdGlvbik7XG4gICAgcGFyc2VyLnBvc2l0aW9uICs9IDQ7XG5cbiAgICBpZiAoIWNodW5rTGVuZ3RoKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICB3aGlsZSAocGFyc2VyLmJ1ZmZlci5sZW5ndGggPCBwYXJzZXIucG9zaXRpb24gKyBjaHVua0xlbmd0aCkge1xuICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgIH1cblxuICAgIGNodW5rcy5wdXNoKHBhcnNlci5idWZmZXIuc2xpY2UocGFyc2VyLnBvc2l0aW9uLCBwYXJzZXIucG9zaXRpb24gKyBjaHVua0xlbmd0aCkpO1xuICAgIHBhcnNlci5wb3NpdGlvbiArPSBjaHVua0xlbmd0aDtcbiAgICBjdXJyZW50TGVuZ3RoICs9IGNodW5rTGVuZ3RoO1xuICB9XG5cbiAgaWYgKGV4cGVjdGVkTGVuZ3RoICE9PSBVTktOT1dOX1BMUF9MRU4pIHtcbiAgICBpZiAoY3VycmVudExlbmd0aCAhPT0gTnVtYmVyKGV4cGVjdGVkTGVuZ3RoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aWFsbHkgTGVuZ3RoLXByZWZpeGVkIEJ5dGVzIHVubWF0Y2hlZCBsZW5ndGhzIDogZXhwZWN0ZWQgJyArIGV4cGVjdGVkTGVuZ3RoICsgJywgYnV0IGdvdCAnICsgY3VycmVudExlbmd0aCArICcgYnl0ZXMnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2h1bmtzO1xufVxuXG5mdW5jdGlvbiByZWFkU21hbGxEYXRlVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgbWludXRlcztcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWludXRlcyB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHZhbHVlO1xuICBpZiAodXNlVVRDKSB7XG4gICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLlVUQygxOTAwLCAwLCAxICsgZGF5cywgMCwgbWludXRlcykpO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gbmV3IERhdGUoMTkwMCwgMCwgMSArIGRheXMsIDAsIG1pbnV0ZXMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUsIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCB0aHJlZUh1bmRyZWR0aHNPZlNlY29uZDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdGhyZWVIdW5kcmVkdGhzT2ZTZWNvbmQgfSA9IHJlYWRJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgbWlsbGlzZWNvbmRzID0gTWF0aC5yb3VuZCh0aHJlZUh1bmRyZWR0aHNPZlNlY29uZCAqIFRIUkVFX0FORF9BX1RISVJEKTtcblxuICBsZXQgdmFsdWU7XG4gIGlmICh1c2VVVEMpIHtcbiAgICB2YWx1ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCAwLCAwLCBtaWxsaXNlY29uZHMpKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IG5ldyBEYXRlKDE5MDAsIDAsIDEgKyBkYXlzLCAwLCAwLCAwLCBtaWxsaXNlY29uZHMpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXN1bHQodmFsdWUsIG9mZnNldCk7XG59XG5cbmludGVyZmFjZSBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGEgZXh0ZW5kcyBEYXRlIHtcbiAgbmFub3NlY29uZHNEZWx0YTogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiByZWFkVGltZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIGRhdGFMZW5ndGg6IG51bWJlciwgc2NhbGU6IG51bWJlciwgdXNlVVRDOiBib29sZWFuKTogUmVzdWx0PERhdGVXaXRoTmFub3NlY29uZHNEZWx0YT4ge1xuICBsZXQgdmFsdWU7XG5cbiAgc3dpdGNoIChkYXRhTGVuZ3RoKSB7XG4gICAgY2FzZSAzOiB7XG4gICAgICAoeyB2YWx1ZSwgb2Zmc2V0IH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgNDoge1xuICAgICAgKHsgdmFsdWUsIG9mZnNldCB9ID0gcmVhZFVJbnQzMkxFKGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIDU6IHtcbiAgICAgICh7IHZhbHVlLCBvZmZzZXQgfSA9IHJlYWRVSW50NDBMRShidWYsIG9mZnNldCkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzY2FsZSA8IDcpIHtcbiAgICBmb3IgKGxldCBpID0gc2NhbGU7IGkgPCA3OyBpKyspIHtcbiAgICAgIHZhbHVlICo9IDEwO1xuICAgIH1cbiAgfVxuXG4gIGxldCBkYXRlO1xuICBpZiAodXNlVVRDKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApKSBhcyBEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE7XG4gIH0gZWxzZSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDE5NzAsIDAsIDEsIDAsIDAsIDAsIHZhbHVlIC8gMTAwMDApIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0ZSwgJ25hbm9zZWNvbmRzRGVsdGEnLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6ICh2YWx1ZSAlIDEwMDAwKSAvIE1hdGgucG93KDEwLCA3KVxuICB9KTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChkYXRlLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRGF0ZShidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlPiB7XG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcblxuICBpZiAodXNlVVRDKSB7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQobmV3IERhdGUoRGF0ZS5VVEMoMjAwMCwgMCwgZGF5cyAtIDczMDExOCkpLCBvZmZzZXQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgUmVzdWx0KG5ldyBEYXRlKDIwMDAsIDAsIGRheXMgLSA3MzAxMTgpLCBvZmZzZXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRlVGltZTIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIsIHVzZVVUQzogYm9vbGVhbik6IFJlc3VsdDxEYXRlV2l0aE5hbm9zZWNvbmRzRGVsdGE+IHtcbiAgbGV0IHRpbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHRpbWUgfSA9IHJlYWRUaW1lKGJ1Ziwgb2Zmc2V0LCBkYXRhTGVuZ3RoIC0gMywgc2NhbGUsIHVzZVVUQykpO1xuXG4gIGxldCBkYXlzO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYXlzIH0gPSByZWFkVUludDI0TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZGF0ZTtcbiAgaWYgKHVzZVVUQykge1xuICAgIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfSBlbHNlIHtcbiAgICBkYXRlID0gbmV3IERhdGUoMjAwMCwgMCwgZGF5cyAtIDczMDExOCwgdGltZS5nZXRIb3VycygpLCB0aW1lLmdldE1pbnV0ZXMoKSwgdGltZS5nZXRTZWNvbmRzKCksIHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGF0ZSwgJ25hbm9zZWNvbmRzRGVsdGEnLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IHRpbWUubmFub3NlY29uZHNEZWx0YVxuICB9KTtcblxuICByZXR1cm4gbmV3IFJlc3VsdChkYXRlLCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkRGF0ZVRpbWVPZmZzZXQoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBkYXRhTGVuZ3RoOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpOiBSZXN1bHQ8RGF0ZVdpdGhOYW5vc2Vjb25kc0RlbHRhPiB7XG4gIGxldCB0aW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0aW1lIH0gPSByZWFkVGltZShidWYsIG9mZnNldCwgZGF0YUxlbmd0aCAtIDUsIHNjYWxlLCB0cnVlKSk7XG5cbiAgbGV0IGRheXM7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRheXMgfSA9IHJlYWRVSW50MjRMRShidWYsIG9mZnNldCkpO1xuXG4gIC8vIHRpbWUgb2Zmc2V0P1xuICAoeyBvZmZzZXQgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQygyMDAwLCAwLCBkYXlzIC0gNzMwMTE4LCAwLCAwLCAwLCArdGltZSkpIGFzIERhdGVXaXRoTmFub3NlY29uZHNEZWx0YTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRhdGUsICduYW5vc2Vjb25kc0RlbHRhJywge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHZhbHVlOiB0aW1lLm5hbm9zZWNvbmRzRGVsdGFcbiAgfSk7XG4gIHJldHVybiBuZXcgUmVzdWx0KGRhdGUsIG9mZnNldCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLnJlYWRWYWx1ZSA9IHJlYWRWYWx1ZTtcbm1vZHVsZS5leHBvcnRzLmlzUExQU3RyZWFtID0gaXNQTFBTdHJlYW07XG5tb2R1bGUuZXhwb3J0cy5yZWFkUExQU3RyZWFtID0gcmVhZFBMUFN0cmVhbTtcblxuZXhwb3J0IHsgcmVhZFZhbHVlLCBpc1BMUFN0cmVhbSwgcmVhZFBMUFN0cmVhbSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUNBLElBQUFBLGVBQUEsR0FBQUMsT0FBQTtBQUNB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar _metadataParser = require(\"../metadata-parser\");\nvar _valueParser = require(\"../value-parser\");\nvar _helpers = require(\"./helpers\");\nvar iconv = _interopRequireWildcard(require(\"iconv-lite\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n// s2.2.7.16\n\nasync function returnParser(parser) {\n  let paramName;\n  let paramOrdinal;\n  let metadata;\n  while (true) {\n    const buf = parser.buffer;\n    let offset = parser.position;\n    try {\n      ({\n        offset,\n        value: paramOrdinal\n      } = (0, _helpers.readUInt16LE)(buf, offset));\n      ({\n        offset,\n        value: paramName\n      } = (0, _helpers.readBVarChar)(buf, offset));\n      // status\n      ({\n        offset\n      } = (0, _helpers.readUInt8)(buf, offset));\n      ({\n        offset,\n        value: metadata\n      } = (0, _metadataParser.readMetadata)(buf, offset, parser.options));\n      if (paramName.charAt(0) === '@') {\n        paramName = paramName.slice(1);\n      }\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        await parser.waitForChunk();\n        continue;\n      }\n      throw err;\n    }\n    parser.position = offset;\n    break;\n  }\n  let value;\n  while (true) {\n    const buf = parser.buffer;\n    let offset = parser.position;\n    if ((0, _valueParser.isPLPStream)(metadata)) {\n      const chunks = await (0, _valueParser.readPLPStream)(parser);\n      if (chunks === null) {\n        value = chunks;\n      } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n        value = Buffer.concat(chunks).toString('ucs2');\n      } else if (metadata.type.name === 'VarChar') {\n        var _metadata$collation;\n        value = iconv.decode(Buffer.concat(chunks), ((_metadata$collation = metadata.collation) === null || _metadata$collation === void 0 ? void 0 : _metadata$collation.codepage) ?? 'utf8');\n      } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n        value = Buffer.concat(chunks);\n      }\n    } else {\n      try {\n        ({\n          value,\n          offset\n        } = (0, _valueParser.readValue)(buf, offset, metadata, parser.options));\n      } catch (err) {\n        if (err instanceof _helpers.NotEnoughDataError) {\n          await parser.waitForChunk();\n          continue;\n        }\n        throw err;\n      }\n      parser.position = offset;\n    }\n    break;\n  }\n  return new _token.ReturnValueToken({\n    paramOrdinal: paramOrdinal,\n    paramName: paramName,\n    metadata: metadata,\n    value: value\n  });\n}\nvar _default = returnParser;\nexports.default = _default;\nmodule.exports = returnParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX21ldGFkYXRhUGFyc2VyIiwiX3ZhbHVlUGFyc2VyIiwiX2hlbHBlcnMiLCJpY29udiIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInJldHVyblBhcnNlciIsInBhcnNlciIsInBhcmFtTmFtZSIsInBhcmFtT3JkaW5hbCIsIm1ldGFkYXRhIiwiYnVmIiwiYnVmZmVyIiwib2Zmc2V0IiwicG9zaXRpb24iLCJ2YWx1ZSIsInJlYWRVSW50MTZMRSIsInJlYWRCVmFyQ2hhciIsInJlYWRVSW50OCIsInJlYWRNZXRhZGF0YSIsIm9wdGlvbnMiLCJjaGFyQXQiLCJzbGljZSIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIndhaXRGb3JDaHVuayIsImlzUExQU3RyZWFtIiwiY2h1bmtzIiwicmVhZFBMUFN0cmVhbSIsInR5cGUiLCJuYW1lIiwiQnVmZmVyIiwiY29uY2F0IiwidG9TdHJpbmciLCJfbWV0YWRhdGEkY29sbGF0aW9uIiwiZGVjb2RlIiwiY29sbGF0aW9uIiwiY29kZXBhZ2UiLCJyZWFkVmFsdWUiLCJSZXR1cm5WYWx1ZVRva2VuIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTZcblxuaW1wb3J0IFBhcnNlciBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBSZXR1cm5WYWx1ZVRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCB7IHJlYWRNZXRhZGF0YSB9IGZyb20gJy4uL21ldGFkYXRhLXBhcnNlcic7XG5pbXBvcnQgeyBpc1BMUFN0cmVhbSwgcmVhZFBMUFN0cmVhbSwgcmVhZFZhbHVlIH0gZnJvbSAnLi4vdmFsdWUtcGFyc2VyJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciwgcmVhZEJWYXJDaGFyLCByZWFkVUludDE2TEUsIHJlYWRVSW50OCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgKiBhcyBpY29udiBmcm9tICdpY29udi1saXRlJztcblxuYXN5bmMgZnVuY3Rpb24gcmV0dXJuUGFyc2VyKHBhcnNlcjogUGFyc2VyKTogUHJvbWlzZTxSZXR1cm5WYWx1ZVRva2VuPiB7XG4gIGxldCBwYXJhbU5hbWU7XG4gIGxldCBwYXJhbU9yZGluYWw7XG4gIGxldCBtZXRhZGF0YTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IHBhcnNlci5idWZmZXI7XG4gICAgbGV0IG9mZnNldCA9IHBhcnNlci5wb3NpdGlvbjtcblxuICAgIHRyeSB7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwYXJhbU9yZGluYWwgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogcGFyYW1OYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcbiAgICAgIC8vIHN0YXR1c1xuICAgICAgKHsgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IG1ldGFkYXRhIH0gPSByZWFkTWV0YWRhdGEoYnVmLCBvZmZzZXQsIHBhcnNlci5vcHRpb25zKSk7XG5cbiAgICAgIGlmIChwYXJhbU5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgICAgcGFyYW1OYW1lID0gcGFyYW1OYW1lLnNsaWNlKDEpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICBhd2FpdCBwYXJzZXIud2FpdEZvckNodW5rKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcGFyc2VyLnBvc2l0aW9uID0gb2Zmc2V0O1xuICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IHZhbHVlO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IHBhcnNlci5idWZmZXI7XG4gICAgbGV0IG9mZnNldCA9IHBhcnNlci5wb3NpdGlvbjtcblxuICAgIGlmIChpc1BMUFN0cmVhbShtZXRhZGF0YSkpIHtcbiAgICAgIGNvbnN0IGNodW5rcyA9IGF3YWl0IHJlYWRQTFBTdHJlYW0ocGFyc2VyKTtcblxuICAgICAgaWYgKGNodW5rcyA9PT0gbnVsbCkge1xuICAgICAgICB2YWx1ZSA9IGNodW5rcztcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZS5uYW1lID09PSAnTlZhckNoYXInIHx8IG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1htbCcpIHtcbiAgICAgICAgdmFsdWUgPSBCdWZmZXIuY29uY2F0KGNodW5rcykudG9TdHJpbmcoJ3VjczInKTtcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZS5uYW1lID09PSAnVmFyQ2hhcicpIHtcbiAgICAgICAgdmFsdWUgPSBpY29udi5kZWNvZGUoQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YS5jb2xsYXRpb24/LmNvZGVwYWdlID8/ICd1dGY4Jyk7XG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckJpbmFyeScgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnVURUJykge1xuICAgICAgICB2YWx1ZSA9IEJ1ZmZlci5jb25jYXQoY2h1bmtzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgKHsgdmFsdWUsIG9mZnNldCB9ID0gcmVhZFZhbHVlKGJ1Ziwgb2Zmc2V0LCBtZXRhZGF0YSwgcGFyc2VyLm9wdGlvbnMpKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gbmV3IFJldHVyblZhbHVlVG9rZW4oe1xuICAgIHBhcmFtT3JkaW5hbDogcGFyYW1PcmRpbmFsLFxuICAgIHBhcmFtTmFtZTogcGFyYW1OYW1lLFxuICAgIG1ldGFkYXRhOiBtZXRhZGF0YSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJldHVyblBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gcmV0dXJuUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxlQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFBb0MsU0FBQU0seUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar iconv = _interopRequireWildcard(require(\"iconv-lite\"));\nvar _valueParser = require(\"../value-parser\");\nvar _helpers = require(\"./helpers\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n// s2.2.7.17\n\nasync function rowParser(parser) {\n  const columns = [];\n  for (const metadata of parser.colMetadata) {\n    while (true) {\n      if ((0, _valueParser.isPLPStream)(metadata)) {\n        const chunks = await (0, _valueParser.readPLPStream)(parser);\n        if (chunks === null) {\n          columns.push({\n            value: chunks,\n            metadata\n          });\n        } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n          columns.push({\n            value: Buffer.concat(chunks).toString('ucs2'),\n            metadata\n          });\n        } else if (metadata.type.name === 'VarChar') {\n          var _metadata$collation;\n          columns.push({\n            value: iconv.decode(Buffer.concat(chunks), ((_metadata$collation = metadata.collation) === null || _metadata$collation === void 0 ? void 0 : _metadata$collation.codepage) ?? 'utf8'),\n            metadata\n          });\n        } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n          columns.push({\n            value: Buffer.concat(chunks),\n            metadata\n          });\n        }\n      } else {\n        let result;\n        try {\n          result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);\n        } catch (err) {\n          if (err instanceof _helpers.NotEnoughDataError) {\n            await parser.waitForChunk();\n            continue;\n          }\n          throw err;\n        }\n        parser.position = result.offset;\n        columns.push({\n          value: result.value,\n          metadata\n        });\n      }\n      break;\n    }\n  }\n  if (parser.options.useColumnNames) {\n    const columnsMap = Object.create(null);\n    columns.forEach(column => {\n      const colName = column.metadata.colName;\n      if (columnsMap[colName] == null) {\n        columnsMap[colName] = column;\n      }\n    });\n    return new _token.RowToken(columnsMap);\n  } else {\n    return new _token.RowToken(columns);\n  }\n}\nvar _default = rowParser;\nexports.default = _default;\nmodule.exports = rowParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsInJvd1BhcnNlciIsInBhcnNlciIsImNvbHVtbnMiLCJtZXRhZGF0YSIsImNvbE1ldGFkYXRhIiwiaXNQTFBTdHJlYW0iLCJjaHVua3MiLCJyZWFkUExQU3RyZWFtIiwicHVzaCIsInZhbHVlIiwidHlwZSIsIm5hbWUiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsIl9tZXRhZGF0YSRjb2xsYXRpb24iLCJkZWNvZGUiLCJjb2xsYXRpb24iLCJjb2RlcGFnZSIsInJlc3VsdCIsInJlYWRWYWx1ZSIsImJ1ZmZlciIsInBvc2l0aW9uIiwib3B0aW9ucyIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIndhaXRGb3JDaHVuayIsIm9mZnNldCIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1uc01hcCIsImNyZWF0ZSIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xOYW1lIiwiUm93VG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcm93LXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTdcblxuaW1wb3J0IFBhcnNlciBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcblxuaW1wb3J0IHsgUm93VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCAqIGFzIGljb252IGZyb20gJ2ljb252LWxpdGUnO1xuXG5pbXBvcnQgeyBpc1BMUFN0cmVhbSwgcmVhZFBMUFN0cmVhbSwgcmVhZFZhbHVlIH0gZnJvbSAnLi4vdmFsdWUtcGFyc2VyJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5cbmludGVyZmFjZSBDb2x1bW4ge1xuICB2YWx1ZTogdW5rbm93bjtcbiAgbWV0YWRhdGE6IENvbHVtbk1ldGFkYXRhO1xufVxuXG5hc3luYyBmdW5jdGlvbiByb3dQYXJzZXIocGFyc2VyOiBQYXJzZXIpOiBQcm9taXNlPFJvd1Rva2VuPiB7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gW107XG5cbiAgZm9yIChjb25zdCBtZXRhZGF0YSBvZiBwYXJzZXIuY29sTWV0YWRhdGEpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzUExQU3RyZWFtKG1ldGFkYXRhKSkge1xuICAgICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgICAgaWYgKGNodW5rcyA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBjaHVua3MsIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKHsgdmFsdWU6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygndWNzMicpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJDaGFyJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBpY29udi5kZWNvZGUoQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YS5jb2xsYXRpb24/LmNvZGVwYWdlID8/ICd1dGY4JyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckJpbmFyeScgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnVURUJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlYWRWYWx1ZShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24sIG1ldGFkYXRhLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiByZXN1bHQudmFsdWUsIG1ldGFkYXRhIH0pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VyLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zTWFwOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2xOYW1lID0gY29sdW1uLm1ldGFkYXRhLmNvbE5hbWU7XG4gICAgICBpZiAoY29sdW1uc01hcFtjb2xOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGNvbHVtbnNNYXBbY29sTmFtZV0gPSBjb2x1bW47XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFJvd1Rva2VuKGNvbHVtbnNNYXApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgUm93VG9rZW4oY29sdW1ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgcm93UGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSByb3dQYXJzZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUErQyxTQUFBSyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZCxHQUFBLEVBQUFXLEdBQUEsU0FBQUksSUFBQSxHQUFBUixxQkFBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFWLEdBQUEsRUFBQVcsR0FBQSxjQUFBSSxJQUFBLEtBQUFBLElBQUEsQ0FBQVYsR0FBQSxJQUFBVSxJQUFBLENBQUFDLEdBQUEsS0FBQVIsTUFBQSxDQUFBQyxjQUFBLENBQUFILE1BQUEsRUFBQUssR0FBQSxFQUFBSSxJQUFBLFlBQUFULE1BQUEsQ0FBQUssR0FBQSxJQUFBWCxHQUFBLENBQUFXLEdBQUEsU0FBQUwsTUFBQSxDQUFBSixPQUFBLEdBQUFGLEdBQUEsTUFBQUcsS0FBQSxJQUFBQSxLQUFBLENBQUFhLEdBQUEsQ0FBQWhCLEdBQUEsRUFBQU0sTUFBQSxZQUFBQSxNQUFBO0FBVC9DOztBQWdCQSxlQUFlVyxTQUFTQSxDQUFDQyxNQUFjLEVBQXFCO0VBQzFELE1BQU1DLE9BQWlCLEdBQUcsRUFBRTtFQUU1QixLQUFLLE1BQU1DLFFBQVEsSUFBSUYsTUFBTSxDQUFDRyxXQUFXLEVBQUU7SUFDekMsT0FBTyxJQUFJLEVBQUU7TUFDWCxJQUFJLElBQUFDLHdCQUFXLEVBQUNGLFFBQVEsQ0FBQyxFQUFFO1FBQ3pCLE1BQU1HLE1BQU0sR0FBRyxNQUFNLElBQUFDLDBCQUFhLEVBQUNOLE1BQU0sQ0FBQztRQUUxQyxJQUFJSyxNQUFNLEtBQUssSUFBSSxFQUFFO1VBQ25CSixPQUFPLENBQUNNLElBQUksQ0FBQztZQUFFQyxLQUFLLEVBQUVILE1BQU07WUFBRUg7VUFBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxNQUFNLElBQUlBLFFBQVEsQ0FBQ08sSUFBSSxDQUFDQyxJQUFJLEtBQUssVUFBVSxJQUFJUixRQUFRLENBQUNPLElBQUksQ0FBQ0MsSUFBSSxLQUFLLEtBQUssRUFBRTtVQUM1RVQsT0FBTyxDQUFDTSxJQUFJLENBQUM7WUFBRUMsS0FBSyxFQUFFRyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1AsTUFBTSxDQUFDLENBQUNRLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFBRVg7VUFBUyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxNQUFNLElBQUlBLFFBQVEsQ0FBQ08sSUFBSSxDQUFDQyxJQUFJLEtBQUssU0FBUyxFQUFFO1VBQUEsSUFBQUksbUJBQUE7VUFDM0NiLE9BQU8sQ0FBQ00sSUFBSSxDQUFDO1lBQUVDLEtBQUssRUFBRW5DLEtBQUssQ0FBQzBDLE1BQU0sQ0FBQ0osTUFBTSxDQUFDQyxNQUFNLENBQUNQLE1BQU0sQ0FBQyxFQUFFLEVBQUFTLG1CQUFBLEdBQUFaLFFBQVEsQ0FBQ2MsU0FBUyxjQUFBRixtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CRyxRQUFRLEtBQUksTUFBTSxDQUFDO1lBQUVmO1VBQVMsQ0FBQyxDQUFDO1FBQ2hILENBQUMsTUFBTSxJQUFJQSxRQUFRLENBQUNPLElBQUksQ0FBQ0MsSUFBSSxLQUFLLFdBQVcsSUFBSVIsUUFBUSxDQUFDTyxJQUFJLENBQUNDLElBQUksS0FBSyxLQUFLLEVBQUU7VUFDN0VULE9BQU8sQ0FBQ00sSUFBSSxDQUFDO1lBQUVDLEtBQUssRUFBRUcsTUFBTSxDQUFDQyxNQUFNLENBQUNQLE1BQU0sQ0FBQztZQUFFSDtVQUFTLENBQUMsQ0FBQztRQUMxRDtNQUNGLENBQUMsTUFBTTtRQUNMLElBQUlnQixNQUFNO1FBQ1YsSUFBSTtVQUNGQSxNQUFNLEdBQUcsSUFBQUMsc0JBQVMsRUFBQ25CLE1BQU0sQ0FBQ29CLE1BQU0sRUFBRXBCLE1BQU0sQ0FBQ3FCLFFBQVEsRUFBRW5CLFFBQVEsRUFBRUYsTUFBTSxDQUFDc0IsT0FBTyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUU7VUFDWixJQUFJQSxHQUFHLFlBQVlDLDJCQUFrQixFQUFFO1lBQ3JDLE1BQU14QixNQUFNLENBQUN5QixZQUFZLENBQUMsQ0FBQztZQUMzQjtVQUNGO1VBRUEsTUFBTUYsR0FBRztRQUNYO1FBRUF2QixNQUFNLENBQUNxQixRQUFRLEdBQUdILE1BQU0sQ0FBQ1EsTUFBTTtRQUMvQnpCLE9BQU8sQ0FBQ00sSUFBSSxDQUFDO1VBQUVDLEtBQUssRUFBRVUsTUFBTSxDQUFDVixLQUFLO1VBQUVOO1FBQVMsQ0FBQyxDQUFDO01BQ2pEO01BRUE7SUFDRjtFQUNGO0VBRUEsSUFBSUYsTUFBTSxDQUFDc0IsT0FBTyxDQUFDSyxjQUFjLEVBQUU7SUFDakMsTUFBTUMsVUFBcUMsR0FBR3RDLE1BQU0sQ0FBQ3VDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFakU1QixPQUFPLENBQUM2QixPQUFPLENBQUVDLE1BQU0sSUFBSztNQUMxQixNQUFNQyxPQUFPLEdBQUdELE1BQU0sQ0FBQzdCLFFBQVEsQ0FBQzhCLE9BQU87TUFDdkMsSUFBSUosVUFBVSxDQUFDSSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDL0JKLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLEdBQUdELE1BQU07TUFDOUI7SUFDRixDQUFDLENBQUM7SUFFRixPQUFPLElBQUlFLGVBQVEsQ0FBQ0wsVUFBVSxDQUFDO0VBQ2pDLENBQUMsTUFBTTtJQUNMLE9BQU8sSUFBSUssZUFBUSxDQUFDaEMsT0FBTyxDQUFDO0VBQzlCO0FBQ0Y7QUFBQyxJQUFBaUMsUUFBQSxHQUVjbkMsU0FBUztBQUFBb0MsT0FBQSxDQUFBbkQsT0FBQSxHQUFBa0QsUUFBQTtBQUN4QkUsTUFBTSxDQUFDRCxPQUFPLEdBQUdwQyxTQUFTIn0=","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar iconv = _interopRequireWildcard(require(\"iconv-lite\"));\nvar _valueParser = require(\"../value-parser\");\nvar _helpers = require(\"./helpers\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n// s2.2.7.13 (introduced in TDS 7.3.B)\n\nasync function nbcRowParser(parser) {\n  const colMetadata = parser.colMetadata;\n  const columns = [];\n  const bitmap = [];\n  const bitmapByteLength = Math.ceil(colMetadata.length / 8);\n  while (parser.buffer.length - parser.position < bitmapByteLength) {\n    await parser.waitForChunk();\n  }\n  const bytes = parser.buffer.slice(parser.position, parser.position + bitmapByteLength);\n  parser.position += bitmapByteLength;\n  for (let i = 0, len = bytes.length; i < len; i++) {\n    const byte = bytes[i];\n    bitmap.push(byte & 0b1 ? true : false);\n    bitmap.push(byte & 0b10 ? true : false);\n    bitmap.push(byte & 0b100 ? true : false);\n    bitmap.push(byte & 0b1000 ? true : false);\n    bitmap.push(byte & 0b10000 ? true : false);\n    bitmap.push(byte & 0b100000 ? true : false);\n    bitmap.push(byte & 0b1000000 ? true : false);\n    bitmap.push(byte & 0b10000000 ? true : false);\n  }\n  for (let i = 0; i < colMetadata.length; i++) {\n    const metadata = colMetadata[i];\n    if (bitmap[i]) {\n      columns.push({\n        value: null,\n        metadata\n      });\n      continue;\n    }\n    while (true) {\n      if ((0, _valueParser.isPLPStream)(metadata)) {\n        const chunks = await (0, _valueParser.readPLPStream)(parser);\n        if (chunks === null) {\n          columns.push({\n            value: chunks,\n            metadata\n          });\n        } else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {\n          columns.push({\n            value: Buffer.concat(chunks).toString('ucs2'),\n            metadata\n          });\n        } else if (metadata.type.name === 'VarChar') {\n          var _metadata$collation;\n          columns.push({\n            value: iconv.decode(Buffer.concat(chunks), ((_metadata$collation = metadata.collation) === null || _metadata$collation === void 0 ? void 0 : _metadata$collation.codepage) ?? 'utf8'),\n            metadata\n          });\n        } else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {\n          columns.push({\n            value: Buffer.concat(chunks),\n            metadata\n          });\n        }\n      } else {\n        let result;\n        try {\n          result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);\n        } catch (err) {\n          if (err instanceof _helpers.NotEnoughDataError) {\n            await parser.waitForChunk();\n            continue;\n          }\n          throw err;\n        }\n        parser.position = result.offset;\n        columns.push({\n          value: result.value,\n          metadata\n        });\n      }\n      break;\n    }\n  }\n  if (parser.options.useColumnNames) {\n    const columnsMap = Object.create(null);\n    columns.forEach(column => {\n      const colName = column.metadata.colName;\n      if (columnsMap[colName] == null) {\n        columnsMap[colName] = column;\n      }\n    });\n    return new _token.NBCRowToken(columnsMap);\n  } else {\n    return new _token.NBCRowToken(columns);\n  }\n}\nvar _default = nbcRowParser;\nexports.default = _default;\nmodule.exports = nbcRowParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIm5iY1Jvd1BhcnNlciIsInBhcnNlciIsImNvbE1ldGFkYXRhIiwiY29sdW1ucyIsImJpdG1hcCIsImJpdG1hcEJ5dGVMZW5ndGgiLCJNYXRoIiwiY2VpbCIsImxlbmd0aCIsImJ1ZmZlciIsInBvc2l0aW9uIiwid2FpdEZvckNodW5rIiwiYnl0ZXMiLCJzbGljZSIsImkiLCJsZW4iLCJieXRlIiwicHVzaCIsIm1ldGFkYXRhIiwidmFsdWUiLCJpc1BMUFN0cmVhbSIsImNodW5rcyIsInJlYWRQTFBTdHJlYW0iLCJ0eXBlIiwibmFtZSIsIkJ1ZmZlciIsImNvbmNhdCIsInRvU3RyaW5nIiwiX21ldGFkYXRhJGNvbGxhdGlvbiIsImRlY29kZSIsImNvbGxhdGlvbiIsImNvZGVwYWdlIiwicmVzdWx0IiwicmVhZFZhbHVlIiwib3B0aW9ucyIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIm9mZnNldCIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1uc01hcCIsImNyZWF0ZSIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xOYW1lIiwiTkJDUm93VG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vbmJjcm93LXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTMgKGludHJvZHVjZWQgaW4gVERTIDcuMy5CKVxuXG5pbXBvcnQgUGFyc2VyIGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuXG5pbXBvcnQgeyBOQkNSb3dUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0ICogYXMgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5cbmltcG9ydCB7IGlzUExQU3RyZWFtLCByZWFkUExQU3RyZWFtLCByZWFkVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wYXJzZXInO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuaW50ZXJmYWNlIENvbHVtbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBtZXRhZGF0YTogQ29sdW1uTWV0YWRhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5iY1Jvd1BhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8TkJDUm93VG9rZW4+IHtcbiAgY29uc3QgY29sTWV0YWRhdGEgPSBwYXJzZXIuY29sTWV0YWRhdGE7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gW107XG4gIGNvbnN0IGJpdG1hcDogYm9vbGVhbltdID0gW107XG4gIGNvbnN0IGJpdG1hcEJ5dGVMZW5ndGggPSBNYXRoLmNlaWwoY29sTWV0YWRhdGEubGVuZ3RoIC8gOCk7XG5cbiAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoIC0gcGFyc2VyLnBvc2l0aW9uIDwgYml0bWFwQnl0ZUxlbmd0aCkge1xuICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgfVxuXG4gIGNvbnN0IGJ5dGVzID0gcGFyc2VyLmJ1ZmZlci5zbGljZShwYXJzZXIucG9zaXRpb24sIHBhcnNlci5wb3NpdGlvbiArIGJpdG1hcEJ5dGVMZW5ndGgpO1xuICBwYXJzZXIucG9zaXRpb24gKz0gYml0bWFwQnl0ZUxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYnl0ZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBieXRlID0gYnl0ZXNbaV07XG5cbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbE1ldGFkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBjb2xNZXRhZGF0YVtpXTtcbiAgICBpZiAoYml0bWFwW2ldKSB7XG4gICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogbnVsbCwgbWV0YWRhdGEgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzUExQU3RyZWFtKG1ldGFkYXRhKSkge1xuICAgICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgICAgaWYgKGNodW5rcyA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBjaHVua3MsIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKHsgdmFsdWU6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygndWNzMicpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJDaGFyJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBpY29udi5kZWNvZGUoQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YS5jb2xsYXRpb24/LmNvZGVwYWdlID8/ICd1dGY4JyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckJpbmFyeScgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnVURUJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlYWRWYWx1ZShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24sIG1ldGFkYXRhLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiByZXN1bHQudmFsdWUsIG1ldGFkYXRhIH0pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VyLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zTWFwOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2xOYW1lID0gY29sdW1uLm1ldGFkYXRhLmNvbE5hbWU7XG4gICAgICBpZiAoY29sdW1uc01hcFtjb2xOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGNvbHVtbnNNYXBbY29sTmFtZV0gPSBjb2x1bW47XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKGNvbHVtbnNNYXApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgTkJDUm93VG9rZW4oY29sdW1ucyk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBuYmNSb3dQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IG5iY1Jvd1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBQStDLFNBQUFLLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _helpers = require(\"./helpers\");\nvar _token = require(\"./token\");\nfunction parseChallenge(buffer) {\n  const challenge = {};\n  challenge.magic = buffer.slice(0, 8).toString('utf8');\n  challenge.type = buffer.readInt32LE(8);\n  challenge.domainLen = buffer.readInt16LE(12);\n  challenge.domainMax = buffer.readInt16LE(14);\n  challenge.domainOffset = buffer.readInt32LE(16);\n  challenge.flags = buffer.readInt32LE(20);\n  challenge.nonce = buffer.slice(24, 32);\n  challenge.zeroes = buffer.slice(32, 40);\n  challenge.targetLen = buffer.readInt16LE(40);\n  challenge.targetMax = buffer.readInt16LE(42);\n  challenge.targetOffset = buffer.readInt32LE(44);\n  challenge.oddData = buffer.slice(48, 56);\n  challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2');\n  challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen);\n  return challenge;\n}\nfunction sspiParser(buf, offset, _options) {\n  let tokenLength;\n  ({\n    offset,\n    value: tokenLength\n  } = (0, _helpers.readUInt16LE)(buf, offset));\n  if (buf.length < offset + tokenLength) {\n    throw new _helpers.NotEnoughDataError(offset + tokenLength);\n  }\n  const data = buf.slice(offset, offset + tokenLength);\n  offset += tokenLength;\n  return new _helpers.Result(new _token.SSPIToken(parseChallenge(data), data), offset);\n}\nvar _default = sspiParser;\nexports.default = _default;\nmodule.exports = sspiParser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVscGVycyIsInJlcXVpcmUiLCJfdG9rZW4iLCJwYXJzZUNoYWxsZW5nZSIsImJ1ZmZlciIsImNoYWxsZW5nZSIsIm1hZ2ljIiwic2xpY2UiLCJ0b1N0cmluZyIsInR5cGUiLCJyZWFkSW50MzJMRSIsImRvbWFpbkxlbiIsInJlYWRJbnQxNkxFIiwiZG9tYWluTWF4IiwiZG9tYWluT2Zmc2V0IiwiZmxhZ3MiLCJub25jZSIsInplcm9lcyIsInRhcmdldExlbiIsInRhcmdldE1heCIsInRhcmdldE9mZnNldCIsIm9kZERhdGEiLCJkb21haW4iLCJ0YXJnZXQiLCJzc3BpUGFyc2VyIiwiYnVmIiwib2Zmc2V0IiwiX29wdGlvbnMiLCJ0b2tlbkxlbmd0aCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwibGVuZ3RoIiwiTm90RW5vdWdoRGF0YUVycm9yIiwiZGF0YSIsIlJlc3VsdCIsIlNTUElUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vc3NwaS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDE2TEUsIFJlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3N0cmVhbS1wYXJzZXInO1xuXG5pbXBvcnQgeyBTU1BJVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW50ZXJmYWNlIERhdGEge1xuICBtYWdpYzogc3RyaW5nO1xuICB0eXBlOiBudW1iZXI7XG4gIGRvbWFpbkxlbjogbnVtYmVyO1xuICBkb21haW5NYXg6IG51bWJlcjtcbiAgZG9tYWluT2Zmc2V0OiBudW1iZXI7XG4gIGZsYWdzOiBudW1iZXI7XG4gIG5vbmNlOiBCdWZmZXI7XG4gIHplcm9lczogQnVmZmVyO1xuICB0YXJnZXRMZW46IG51bWJlcjtcbiAgdGFyZ2V0TWF4OiBudW1iZXI7XG4gIHRhcmdldE9mZnNldDogbnVtYmVyO1xuICBvZGREYXRhOiBCdWZmZXI7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB0YXJnZXQ6IEJ1ZmZlcjtcbn1cblxuZnVuY3Rpb24gcGFyc2VDaGFsbGVuZ2UoYnVmZmVyOiBCdWZmZXIpIHtcbiAgY29uc3QgY2hhbGxlbmdlOiBQYXJ0aWFsPERhdGE+ID0ge307XG5cbiAgY2hhbGxlbmdlLm1hZ2ljID0gYnVmZmVyLnNsaWNlKDAsIDgpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIGNoYWxsZW5nZS50eXBlID0gYnVmZmVyLnJlYWRJbnQzMkxFKDgpO1xuICBjaGFsbGVuZ2UuZG9tYWluTGVuID0gYnVmZmVyLnJlYWRJbnQxNkxFKDEyKTtcbiAgY2hhbGxlbmdlLmRvbWFpbk1heCA9IGJ1ZmZlci5yZWFkSW50MTZMRSgxNCk7XG4gIGNoYWxsZW5nZS5kb21haW5PZmZzZXQgPSBidWZmZXIucmVhZEludDMyTEUoMTYpO1xuICBjaGFsbGVuZ2UuZmxhZ3MgPSBidWZmZXIucmVhZEludDMyTEUoMjApO1xuICBjaGFsbGVuZ2Uubm9uY2UgPSBidWZmZXIuc2xpY2UoMjQsIDMyKTtcbiAgY2hhbGxlbmdlLnplcm9lcyA9IGJ1ZmZlci5zbGljZSgzMiwgNDApO1xuICBjaGFsbGVuZ2UudGFyZ2V0TGVuID0gYnVmZmVyLnJlYWRJbnQxNkxFKDQwKTtcbiAgY2hhbGxlbmdlLnRhcmdldE1heCA9IGJ1ZmZlci5yZWFkSW50MTZMRSg0Mik7XG4gIGNoYWxsZW5nZS50YXJnZXRPZmZzZXQgPSBidWZmZXIucmVhZEludDMyTEUoNDQpO1xuICBjaGFsbGVuZ2Uub2RkRGF0YSA9IGJ1ZmZlci5zbGljZSg0OCwgNTYpO1xuICBjaGFsbGVuZ2UuZG9tYWluID0gYnVmZmVyLnNsaWNlKDU2LCA1NiArIGNoYWxsZW5nZS5kb21haW5MZW4pLnRvU3RyaW5nKCd1Y3MyJyk7XG4gIGNoYWxsZW5nZS50YXJnZXQgPSBidWZmZXIuc2xpY2UoNTYgKyBjaGFsbGVuZ2UuZG9tYWluTGVuLCA1NiArIGNoYWxsZW5nZS5kb21haW5MZW4gKyBjaGFsbGVuZ2UudGFyZ2V0TGVuKTtcblxuICByZXR1cm4gY2hhbGxlbmdlIGFzIERhdGE7XG59XG5cbmZ1bmN0aW9uIHNzcGlQYXJzZXIoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBfb3B0aW9uczogUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxTU1BJVG9rZW4+IHtcbiAgbGV0IHRva2VuTGVuZ3RoO1xuICAoeyBvZmZzZXQsIHZhbHVlOiB0b2tlbkxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKGJ1Zi5sZW5ndGggPCBvZmZzZXQgKyB0b2tlbkxlbmd0aCkge1xuICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3Iob2Zmc2V0ICsgdG9rZW5MZW5ndGgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRva2VuTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IHRva2VuTGVuZ3RoO1xuXG4gIHJldHVybiBuZXcgUmVzdWx0KG5ldyBTU1BJVG9rZW4ocGFyc2VDaGFsbGVuZ2UoZGF0YSksIGRhdGEpLCBvZmZzZXQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzc3BpUGFyc2VyO1xubW9kdWxlLmV4cG9ydHMgPSBzc3BpUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFHQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFtQkEsU0FBU0UsY0FBY0EsQ0FBQ0MsTUFBYyxFQUFFO0VBQ3RDLE1BQU1DLFNBQXdCLEdBQUcsQ0FBQyxDQUFDO0VBRW5DQSxTQUFTLENBQUNDLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsTUFBTSxDQUFDO0VBQ3JESCxTQUFTLENBQUNJLElBQUksR0FBR0wsTUFBTSxDQUFDTSxXQUFXLENBQUMsQ0FB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _token = require(\"./token\");\nvar _colmetadataTokenParser = _interopRequireDefault(require(\"./colmetadata-token-parser\"));\nvar _doneTokenParser = require(\"./done-token-parser\");\nvar _envChangeTokenParser = _interopRequireDefault(require(\"./env-change-token-parser\"));\nvar _infoerrorTokenParser = require(\"./infoerror-token-parser\");\nvar _fedauthInfoParser = _interopRequireDefault(require(\"./fedauth-info-parser\"));\nvar _featureExtAckParser = _interopRequireDefault(require(\"./feature-ext-ack-parser\"));\nvar _loginackTokenParser = _interopRequireDefault(require(\"./loginack-token-parser\"));\nvar _orderTokenParser = _interopRequireDefault(require(\"./order-token-parser\"));\nvar _returnstatusTokenParser = _interopRequireDefault(require(\"./returnstatus-token-parser\"));\nvar _returnvalueTokenParser = _interopRequireDefault(require(\"./returnvalue-token-parser\"));\nvar _rowTokenParser = _interopRequireDefault(require(\"./row-token-parser\"));\nvar _nbcrowTokenParser = _interopRequireDefault(require(\"./nbcrow-token-parser\"));\nvar _sspiTokenParser = _interopRequireDefault(require(\"./sspi-token-parser\"));\nvar _helpers = require(\"./helpers\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass Parser {\n  debug;\n  colMetadata;\n  options;\n  iterator;\n  buffer;\n  position;\n  static async *parseTokens(iterable, debug, options, colMetadata = []) {\n    const parser = new Parser(iterable, debug, options);\n    parser.colMetadata = colMetadata;\n    while (true) {\n      try {\n        await parser.waitForChunk();\n      } catch (err) {\n        if (parser.position === parser.buffer.length) {\n          return;\n        }\n        throw err;\n      }\n      while (parser.buffer.length >= parser.position + 1) {\n        const type = parser.buffer.readUInt8(parser.position);\n        parser.position += 1;\n        const token = parser.readToken(type);\n        if (token !== undefined) {\n          yield token;\n        }\n      }\n    }\n  }\n  readToken(type) {\n    switch (type) {\n      case _token.TYPE.DONE:\n        {\n          return this.readDoneToken();\n        }\n      case _token.TYPE.DONEPROC:\n        {\n          return this.readDoneProcToken();\n        }\n      case _token.TYPE.DONEINPROC:\n        {\n          return this.readDoneInProcToken();\n        }\n      case _token.TYPE.ERROR:\n        {\n          return this.readErrorToken();\n        }\n      case _token.TYPE.INFO:\n        {\n          return this.readInfoToken();\n        }\n      case _token.TYPE.ENVCHANGE:\n        {\n          return this.readEnvChangeToken();\n        }\n      case _token.TYPE.LOGINACK:\n        {\n          return this.readLoginAckToken();\n        }\n      case _token.TYPE.RETURNSTATUS:\n        {\n          return this.readReturnStatusToken();\n        }\n      case _token.TYPE.ORDER:\n        {\n          return this.readOrderToken();\n        }\n      case _token.TYPE.FEDAUTHINFO:\n        {\n          return this.readFedAuthInfoToken();\n        }\n      case _token.TYPE.SSPI:\n        {\n          return this.readSSPIToken();\n        }\n      case _token.TYPE.COLMETADATA:\n        {\n          return this.readColMetadataToken();\n        }\n      case _token.TYPE.RETURNVALUE:\n        {\n          return this.readReturnValueToken();\n        }\n      case _token.TYPE.ROW:\n        {\n          return this.readRowToken();\n        }\n      case _token.TYPE.NBCROW:\n        {\n          return this.readNbcRowToken();\n        }\n      case _token.TYPE.FEATUREEXTACK:\n        {\n          return this.readFeatureExtAckToken();\n        }\n      default:\n        {\n          throw new Error('Unknown type: ' + type);\n        }\n    }\n  }\n  readFeatureExtAckToken() {\n    let result;\n    try {\n      result = (0, _featureExtAckParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readFeatureExtAckToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  async readNbcRowToken() {\n    return await (0, _nbcrowTokenParser.default)(this);\n  }\n  async readReturnValueToken() {\n    return await (0, _returnvalueTokenParser.default)(this);\n  }\n  async readColMetadataToken() {\n    const token = await (0, _colmetadataTokenParser.default)(this);\n    this.colMetadata = token.columns;\n    return token;\n  }\n  readSSPIToken() {\n    let result;\n    try {\n      result = (0, _sspiTokenParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readSSPIToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readFedAuthInfoToken() {\n    let result;\n    try {\n      result = (0, _fedauthInfoParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readFedAuthInfoToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readOrderToken() {\n    let result;\n    try {\n      result = (0, _orderTokenParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readOrderToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readReturnStatusToken() {\n    let result;\n    try {\n      result = (0, _returnstatusTokenParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readReturnStatusToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readLoginAckToken() {\n    let result;\n    try {\n      result = (0, _loginackTokenParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readLoginAckToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readEnvChangeToken() {\n    let result;\n    try {\n      result = (0, _envChangeTokenParser.default)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readEnvChangeToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readRowToken() {\n    return (0, _rowTokenParser.default)(this);\n  }\n  readInfoToken() {\n    let result;\n    try {\n      result = (0, _infoerrorTokenParser.infoParser)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readInfoToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readErrorToken() {\n    let result;\n    try {\n      result = (0, _infoerrorTokenParser.errorParser)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readErrorToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readDoneInProcToken() {\n    let result;\n    try {\n      result = (0, _doneTokenParser.doneInProcParser)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readDoneInProcToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readDoneProcToken() {\n    let result;\n    try {\n      result = (0, _doneTokenParser.doneProcParser)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readDoneProcToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  readDoneToken() {\n    let result;\n    try {\n      result = (0, _doneTokenParser.doneParser)(this.buffer, this.position, this.options);\n    } catch (err) {\n      if (err instanceof _helpers.NotEnoughDataError) {\n        return this.waitForChunk().then(() => {\n          return this.readDoneToken();\n        });\n      }\n      throw err;\n    }\n    this.position = result.offset;\n    return result.value;\n  }\n  constructor(iterable, debug, options) {\n    this.debug = debug;\n    this.colMetadata = [];\n    this.options = options;\n    this.iterator = (iterable[Symbol.asyncIterator] || iterable[Symbol.iterator]).call(iterable);\n    this.buffer = Buffer.alloc(0);\n    this.position = 0;\n  }\n  async waitForChunk() {\n    const result = await this.iterator.next();\n    if (result.done) {\n      throw new Error('unexpected end of data');\n    }\n    if (this.position === this.buffer.length) {\n      this.buffer = result.value;\n    } else {\n      this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n    }\n    this.position = 0;\n  }\n}\nvar _default = Parser;\nexports.default = _default;\nmodule.exports = Parser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIl9oZWxwZXJzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJQYXJzZXIiLCJkZWJ1ZyIsImNvbE1ldGFkYXRhIiwib3B0aW9ucyIsIml0ZXJhdG9yIiwiYnVmZmVyIiwicG9zaXRpb24iLCJwYXJzZVRva2VucyIsIml0ZXJhYmxlIiwicGFyc2VyIiwid2FpdEZvckNodW5rIiwiZXJyIiwibGVuZ3RoIiwidHlwZSIsInJlYWRVSW50OCIsInRva2VuIiwicmVhZFRva2VuIiwidW5kZWZpbmVkIiwiVFlQRSIsIkRPTkUiLCJyZWFkRG9uZVRva2VuIiwiRE9ORVBST0MiLCJyZWFkRG9uZVByb2NUb2tlbiIsIkRPTkVJTlBST0MiLCJyZWFkRG9uZUluUHJvY1Rva2VuIiwiRVJST1IiLCJyZWFkRXJyb3JUb2tlbiIsIklORk8iLCJyZWFkSW5mb1Rva2VuIiwiRU5WQ0hBTkdFIiwicmVhZEVudkNoYW5nZVRva2VuIiwiTE9HSU5BQ0siLCJyZWFkTG9naW5BY2tUb2tlbiIsIlJFVFVSTlNUQVRVUyIsInJlYWRSZXR1cm5TdGF0dXNUb2tlbiIsIk9SREVSIiwicmVhZE9yZGVyVG9rZW4iLCJGRURBVVRISU5GTyIsInJlYWRGZWRBdXRoSW5mb1Rva2VuIiwiU1NQSSIsInJlYWRTU1BJVG9rZW4iLCJDT0xNRVRBREFUQSIsInJlYWRDb2xNZXRhZGF0YVRva2VuIiwiUkVUVVJOVkFMVUUiLCJyZWFkUmV0dXJuVmFsdWVUb2tlbiIsIlJPVyIsInJlYWRSb3dUb2tlbiIsIk5CQ1JPVyIsInJlYWROYmNSb3dUb2tlbiIsIkZFQVRVUkVFWFRBQ0siLCJyZWFkRmVhdHVyZUV4dEFja1Rva2VuIiwiRXJyb3IiLCJyZXN1bHQiLCJmZWF0dXJlRXh0QWNrUGFyc2VyIiwiTm90RW5vdWdoRGF0YUVycm9yIiwidGhlbiIsIm9mZnNldCIsInZhbHVlIiwibmJjUm93UGFyc2VyIiwicmV0dXJuVmFsdWVQYXJzZXIiLCJjb2xNZXRhZGF0YVBhcnNlciIsImNvbHVtbnMiLCJzc3BpUGFyc2VyIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJvcmRlclBhcnNlciIsInJldHVyblN0YXR1c1BhcnNlciIsImxvZ2luQWNrUGFyc2VyIiwiZW52Q2hhbmdlUGFyc2VyIiwicm93UGFyc2VyIiwiaW5mb1BhcnNlciIsImVycm9yUGFyc2VyIiwiZG9uZUluUHJvY1BhcnNlciIsImRvbmVQcm9jUGFyc2VyIiwiZG9uZVBhcnNlciIsImNvbnN0cnVjdG9yIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsImNhbGwiLCJCdWZmZXIiLCJhbGxvYyIsIm5leHQiLCJkb25lIiwiY29uY2F0Iiwic2xpY2UiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vc3RyZWFtLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgdHlwZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vY29ubmVjdGlvbic7XG5cbmltcG9ydCB7IFRZUEUsIENvbE1ldGFkYXRhVG9rZW4sIERvbmVQcm9jVG9rZW4sIERvbmVUb2tlbiwgRG9uZUluUHJvY1Rva2VuLCBFcnJvck1lc3NhZ2VUb2tlbiwgSW5mb01lc3NhZ2VUb2tlbiwgUm93VG9rZW4sIHR5cGUgRW52Q2hhbmdlVG9rZW4sIExvZ2luQWNrVG9rZW4sIFJldHVyblN0YXR1c1Rva2VuLCBPcmRlclRva2VuLCBGZWRBdXRoSW5mb1Rva2VuLCBTU1BJVG9rZW4sIFJldHVyblZhbHVlVG9rZW4sIE5CQ1Jvd1Rva2VuLCBGZWF0dXJlRXh0QWNrVG9rZW4sIFRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmltcG9ydCBjb2xNZXRhZGF0YVBhcnNlciwgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZG9uZVBhcnNlciwgZG9uZUluUHJvY1BhcnNlciwgZG9uZVByb2NQYXJzZXIgfSBmcm9tICcuL2RvbmUtdG9rZW4tcGFyc2VyJztcbmltcG9ydCBlbnZDaGFuZ2VQYXJzZXIgZnJvbSAnLi9lbnYtY2hhbmdlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgeyBlcnJvclBhcnNlciwgaW5mb1BhcnNlciB9IGZyb20gJy4vaW5mb2Vycm9yLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZmVkQXV0aEluZm9QYXJzZXIgZnJvbSAnLi9mZWRhdXRoLWluZm8tcGFyc2VyJztcbmltcG9ydCBmZWF0dXJlRXh0QWNrUGFyc2VyIGZyb20gJy4vZmVhdHVyZS1leHQtYWNrLXBhcnNlcic7XG5pbXBvcnQgbG9naW5BY2tQYXJzZXIgZnJvbSAnLi9sb2dpbmFjay10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG9yZGVyUGFyc2VyIGZyb20gJy4vb3JkZXItdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5TdGF0dXNQYXJzZXIgZnJvbSAnLi9yZXR1cm5zdGF0dXMtdG9rZW4tcGFyc2VyJztcbmltcG9ydCByZXR1cm5WYWx1ZVBhcnNlciBmcm9tICcuL3JldHVybnZhbHVlLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcm93UGFyc2VyIGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgbmJjUm93UGFyc2VyIGZyb20gJy4vbmJjcm93LXRva2VuLXBhcnNlcic7XG5pbXBvcnQgc3NwaVBhcnNlciBmcm9tICcuL3NzcGktdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlck9wdGlvbnMgPSBQaWNrPEludGVybmFsQ29ubmVjdGlvbk9wdGlvbnMsICd1c2VVVEMnIHwgJ2xvd2VyQ2FzZUd1aWRzJyB8ICd0ZHNWZXJzaW9uJyB8ICd1c2VDb2x1bW5OYW1lcycgfCAnY29sdW1uTmFtZVJlcGxhY2VyJyB8ICdjYW1lbENhc2VDb2x1bW5zJz47XG5cbmNsYXNzIFBhcnNlciB7XG4gIGRlYnVnOiBEZWJ1ZztcbiAgY29sTWV0YWRhdGE6IENvbHVtbk1ldGFkYXRhW107XG4gIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG5cbiAgaXRlcmF0b3I6IEFzeW5jSXRlcmF0b3I8QnVmZmVyLCBhbnksIHVuZGVmaW5lZD4gfCBJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPjtcbiAgYnVmZmVyOiBCdWZmZXI7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgc3RhdGljIGFzeW5jICpwYXJzZVRva2VucyhpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPiwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXSA9IFtdKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihpdGVyYWJsZSwgZGVidWcsIG9wdGlvbnMpO1xuICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IGNvbE1ldGFkYXRhO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgICBpZiAocGFyc2VyLnBvc2l0aW9uID09PSBwYXJzZXIuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoID49IHBhcnNlci5wb3NpdGlvbiArIDEpIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcnNlci5idWZmZXIucmVhZFVJbnQ4KHBhcnNlci5wb3NpdGlvbik7XG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiArPSAxO1xuXG4gICAgICAgIGNvbnN0IHRva2VuID0gcGFyc2VyLnJlYWRUb2tlbih0eXBlKTtcbiAgICAgICAgaWYgKHRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB5aWVsZCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYWRUb2tlbih0eXBlOiBudW1iZXIpOiBUb2tlbiB8IHVuZGVmaW5lZCB8IFByb21pc2U8VG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgVFlQRS5ET05FOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkRPTkVQUk9DOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lUHJvY1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5ET05FSU5QUk9DOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lSW5Qcm9jVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkVSUk9SOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRFcnJvclRva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5JTkZPOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRJbmZvVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkVOVkNIQU5HRToge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkRW52Q2hhbmdlVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLkxPR0lOQUNLOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRMb2dpbkFja1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5SRVRVUk5TVEFUVVM6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJldHVyblN0YXR1c1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5PUkRFUjoge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkT3JkZXJUb2tlbigpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRZUEUuRkVEQVVUSElORk86IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZEZlZEF1dGhJbmZvVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLlNTUEk6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFNTUElUb2tlbigpO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRZUEUuQ09MTUVUQURBVEE6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZENvbE1ldGFkYXRhVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBUWVBFLlJFVFVSTlZBTFVFOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRSZXR1cm5WYWx1ZVRva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5ST1c6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJvd1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5OQkNST1c6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZE5iY1Jvd1Rva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVFlQRS5GRUFUVVJFRVhUQUNLOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRGZWF0dXJlRXh0QWNrVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZTogJyArIHR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYWRGZWF0dXJlRXh0QWNrVG9rZW4oKTogRmVhdHVyZUV4dEFja1Rva2VuIHwgUHJvbWlzZTxGZWF0dXJlRXh0QWNrVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGZlYXR1cmVFeHRBY2tQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEZlYXR1cmVFeHRBY2tUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICBhc3luYyByZWFkTmJjUm93VG9rZW4oKTogUHJvbWlzZTxOQkNSb3dUb2tlbj4ge1xuICAgIHJldHVybiBhd2FpdCBuYmNSb3dQYXJzZXIodGhpcyk7XG4gIH1cblxuICBhc3luYyByZWFkUmV0dXJuVmFsdWVUb2tlbigpOiBQcm9taXNlPFJldHVyblZhbHVlVG9rZW4+IHtcbiAgICByZXR1cm4gYXdhaXQgcmV0dXJuVmFsdWVQYXJzZXIodGhpcyk7XG4gIH1cblxuICBhc3luYyByZWFkQ29sTWV0YWRhdGFUb2tlbigpOiBQcm9taXNlPENvbE1ldGFkYXRhVG9rZW4+IHtcbiAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGNvbE1ldGFkYXRhUGFyc2VyKHRoaXMpO1xuICAgIHRoaXMuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIHJlYWRTU1BJVG9rZW4oKTogU1NQSVRva2VuIHwgUHJvbWlzZTxTU1BJVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IHNzcGlQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFNTUElUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRmVkQXV0aEluZm9Ub2tlbigpOiBGZWRBdXRoSW5mb1Rva2VuIHwgUHJvbWlzZTxGZWRBdXRoSW5mb1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBmZWRBdXRoSW5mb1BhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRmVkQXV0aEluZm9Ub2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkT3JkZXJUb2tlbigpOiBPcmRlclRva2VuIHwgUHJvbWlzZTxPcmRlclRva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBvcmRlclBhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT3JkZXJUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkUmV0dXJuU3RhdHVzVG9rZW4oKTogUmV0dXJuU3RhdHVzVG9rZW4gfCBQcm9taXNlPFJldHVyblN0YXR1c1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSByZXR1cm5TdGF0dXNQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZFJldHVyblN0YXR1c1Rva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWRMb2dpbkFja1Rva2VuKCk6IExvZ2luQWNrVG9rZW4gfCBQcm9taXNlPExvZ2luQWNrVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGxvZ2luQWNrUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRMb2dpbkFja1Rva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWRFbnZDaGFuZ2VUb2tlbigpOiBFbnZDaGFuZ2VUb2tlbiB8IHVuZGVmaW5lZCB8IFByb21pc2U8RW52Q2hhbmdlVG9rZW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGVudkNoYW5nZVBhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRW52Q2hhbmdlVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gcmVzdWx0Lm9mZnNldDtcbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgcmVhZFJvd1Rva2VuKCk6IFJvd1Rva2VuIHwgUHJvbWlzZTxSb3dUb2tlbj4ge1xuICAgIHJldHVybiByb3dQYXJzZXIodGhpcyk7XG4gIH1cblxuICByZWFkSW5mb1Rva2VuKCk6IEluZm9NZXNzYWdlVG9rZW4gfCBQcm9taXNlPEluZm9NZXNzYWdlVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGluZm9QYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZEluZm9Ub2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRXJyb3JUb2tlbigpOiBFcnJvck1lc3NhZ2VUb2tlbiB8IFByb21pc2U8RXJyb3JNZXNzYWdlVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGVycm9yUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFcnJvclRva2VuKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgdGhpcy5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxuXG4gIHJlYWREb25lSW5Qcm9jVG9rZW4oKTogRG9uZUluUHJvY1Rva2VuIHwgUHJvbWlzZTxEb25lSW5Qcm9jVG9rZW4+IHtcbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGRvbmVJblByb2NQYXJzZXIodGhpcy5idWZmZXIsIHRoaXMucG9zaXRpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2FpdEZvckNodW5rKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVhZERvbmVJblByb2NUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRG9uZVByb2NUb2tlbigpOiBEb25lUHJvY1Rva2VuIHwgUHJvbWlzZTxEb25lUHJvY1Rva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBkb25lUHJvY1BhcnNlcih0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgdGhpcy5vcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICByZXR1cm4gdGhpcy53YWl0Rm9yQ2h1bmsoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkRG9uZVByb2NUb2tlbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH1cblxuICByZWFkRG9uZVRva2VuKCk6IERvbmVUb2tlbiB8IFByb21pc2U8RG9uZVRva2VuPiB7XG4gICAgbGV0IHJlc3VsdDtcblxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBkb25lUGFyc2VyKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndhaXRGb3JDaHVuaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWREb25lVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gcmVzdWx0Lm9mZnNldDtcbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8QnVmZmVyPiB8IEl0ZXJhYmxlPEJ1ZmZlcj4sIGRlYnVnOiBEZWJ1Zywgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmNvbE1ldGFkYXRhID0gW107XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMuaXRlcmF0b3IgPSAoKGl0ZXJhYmxlIGFzIEFzeW5jSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdIHx8IChpdGVyYWJsZSBhcyBJdGVyYWJsZTxCdWZmZXI+KVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKGl0ZXJhYmxlKTtcblxuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvckNodW5rKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaXRlcmF0b3IubmV4dCgpO1xuICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBkYXRhJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgdGhpcy5idWZmZXIgPSByZXN1bHQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbdGhpcy5idWZmZXIuc2xpY2UodGhpcy5wb3NpdGlvbiksIHJlc3VsdC52YWx1ZV0pO1xuICAgIH1cblxuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJ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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Parser = void 0;\nvar _events = require(\"events\");\nvar _streamParser = _interopRequireDefault(require(\"./stream-parser\"));\nvar _stream = require(\"stream\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass Parser extends _events.EventEmitter {\n  constructor(message, debug, handler, options) {\n    super();\n    this.debug = debug;\n    this.options = options;\n    this.parser = _stream.Readable.from(_streamParser.default.parseTokens(message, this.debug, this.options));\n    this.parser.on('data', token => {\n      handler[token.handlerName](token);\n    });\n    this.parser.on('drain', () => {\n      this.emit('drain');\n    });\n    this.parser.on('end', () => {\n      this.emit('end');\n    });\n  }\n  pause() {\n    return this.parser.pause();\n  }\n  resume() {\n    return this.parser.resume();\n  }\n}\nexports.Parser = Parser;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9zdHJlYW1QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0cmVhbSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2VyIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwiZGVidWciLCJoYW5kbGVyIiwib3B0aW9ucyIsInBhcnNlciIsIlJlYWRhYmxlIiwiZnJvbSIsIlN0cmVhbVBhcnNlciIsInBhcnNlVG9rZW5zIiwib24iLCJ0b2tlbiIsImhhbmRsZXJOYW1lIiwiZW1pdCIsInBhdXNlIiwicmVzdW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi90b2tlbi1zdHJlYW0tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgU3RyZWFtUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4uL21lc3NhZ2UnO1xuaW1wb3J0IHsgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIFBhcnNlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuICBkZWNsYXJlIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG4gIGRlY2xhcmUgcGFyc2VyOiBSZWFkYWJsZTtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBNZXNzYWdlLCBkZWJ1ZzogRGVidWcsIGhhbmRsZXI6IFRva2VuSGFuZGxlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMucGFyc2VyID0gUmVhZGFibGUuZnJvbShTdHJlYW1QYXJzZXIucGFyc2VUb2tlbnMobWVzc2FnZSwgdGhpcy5kZWJ1ZywgdGhpcy5vcHRpb25zKSk7XG4gICAgdGhpcy5wYXJzZXIub24oJ2RhdGEnLCAodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICBoYW5kbGVyW3Rva2VuLmhhbmRsZXJOYW1lIGFzIGtleW9mIFRva2VuSGFuZGxlcl0odG9rZW4gYXMgYW55KTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdkcmFpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZHJhaW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVjbGFyZSBvbjogKFxuICAgICgoZXZlbnQ6ICdlbmQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4gdGhpcykgJlxuICAgICgoZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcylcbiAgKTtcblxuICBwYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGF1c2UoKTtcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucmVzdW1lKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQWtDLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSTNCLE1BQU1HLE1BQU0sU0FBU0Msb0JBQVksQ0FBQztFQUt2Q0MsV0FBV0EsQ0FBQ0MsT0FBZ0IsRUFBRUMsS0FBWSxFQUFFQyxPQUFxQixFQUFFQyxPQUFzQixFQUFFO0lBQ3pGLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRixLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDRSxPQUFPLEdBQUdBLE9BQU87SUFFdEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdDLGdCQUFRLENBQUNDLElBQUksQ0FBQ0MscUJBQVksQ0FBQ0MsV0FBVyxDQUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDQyxLQUFLLEVBQUUsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUNDLE1BQU0sQ0FBQ0ssRUFBRSxDQUFDLE1BQU0sRUFBR0MsS0FBWSxJQUFLO01BQ3ZDUixPQUFPLENBQUNRLEtBQUssQ0FBQ0MsV0FBVyxDQUF1QixDQUFDRCxLQUFZLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDTixNQUFNLENBQUNLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUM1QixJQUFJLENBQUNHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDUixNQUFNLENBQUNLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtNQUMxQixJQUFJLENBQUNHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ0o7RUFPQUMsS0FBS0EsQ0FBQSxFQUFHO0lBQ04sT0FBTyxJQUFJLENBQUNULE1BQU0sQ0FBQ1MsS0FBSyxDQUFDLENBQUM7RUFDNUI7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNWLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDLENBQUM7RUFDN0I7QUFDRjtBQUFDQyxPQUFBLENBQUFsQixNQUFBLEdBQUFBLE1BQUEifQ==","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Transaction = exports.OPERATION_TYPE = exports.ISOLATION_LEVEL = void 0;\nexports.assertValidIsolationLevel = assertValidIsolationLevel;\nexports.isolationLevelByValue = void 0;\nvar _writableTrackingBuffer = _interopRequireDefault(require(\"./tracking-buffer/writable-tracking-buffer\"));\nvar _allHeaders = require(\"./all-headers\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/*\n  s2.2.6.8\n */\n\nconst OPERATION_TYPE = {\n  TM_GET_DTC_ADDRESS: 0x00,\n  TM_PROPAGATE_XACT: 0x01,\n  TM_BEGIN_XACT: 0x05,\n  TM_PROMOTE_XACT: 0x06,\n  TM_COMMIT_XACT: 0x07,\n  TM_ROLLBACK_XACT: 0x08,\n  TM_SAVE_XACT: 0x09\n};\nexports.OPERATION_TYPE = OPERATION_TYPE;\nconst ISOLATION_LEVEL = {\n  NO_CHANGE: 0x00,\n  READ_UNCOMMITTED: 0x01,\n  READ_COMMITTED: 0x02,\n  REPEATABLE_READ: 0x03,\n  SERIALIZABLE: 0x04,\n  SNAPSHOT: 0x05\n};\nexports.ISOLATION_LEVEL = ISOLATION_LEVEL;\nconst isolationLevelByValue = {};\nexports.isolationLevelByValue = isolationLevelByValue;\nfor (const name in ISOLATION_LEVEL) {\n  const value = ISOLATION_LEVEL[name];\n  isolationLevelByValue[value] = name;\n}\nfunction assertValidIsolationLevel(isolationLevel, name) {\n  if (typeof isolationLevel !== 'number') {\n    throw new TypeError(`The \"${name}\" ${name.includes('.') ? 'property' : 'argument'} must be of type number. Received type ${typeof isolationLevel} (${isolationLevel})`);\n  }\n  if (!Number.isInteger(isolationLevel)) {\n    throw new RangeError(`The value of \"${name}\" is out of range. It must be an integer. Received: ${isolationLevel}`);\n  }\n  if (!(isolationLevel >= 0 && isolationLevel <= 5)) {\n    throw new RangeError(`The value of \"${name}\" is out of range. It must be >= 0 && <= 5. Received: ${isolationLevel}`);\n  }\n}\nclass Transaction {\n  constructor(name, isolationLevel = ISOLATION_LEVEL.NO_CHANGE) {\n    this.name = name;\n    this.isolationLevel = isolationLevel;\n    this.outstandingRequestCount = 1;\n  }\n  beginPayload(txnDescriptor) {\n    const buffer = new _writableTrackingBuffer.default(100, 'ucs2');\n    (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount);\n    buffer.writeUShort(OPERATION_TYPE.TM_BEGIN_XACT);\n    buffer.writeUInt8(this.isolationLevel);\n    buffer.writeUInt8(this.name.length * 2);\n    buffer.writeString(this.name, 'ucs2');\n    return {\n      *[Symbol.iterator]() {\n        yield buffer.data;\n      },\n      toString: () => {\n        return 'Begin Transaction: name=' + this.name + ', isolationLevel=' + isolationLevelByValue[this.isolationLevel];\n      }\n    };\n  }\n  commitPayload(txnDescriptor) {\n    const buffer = new _writableTrackingBuffer.default(100, 'ascii');\n    (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount);\n    buffer.writeUShort(OPERATION_TYPE.TM_COMMIT_XACT);\n    buffer.writeUInt8(this.name.length * 2);\n    buffer.writeString(this.name, 'ucs2');\n    // No fBeginXact flag, so no new transaction is started.\n    buffer.writeUInt8(0);\n    return {\n      *[Symbol.iterator]() {\n        yield buffer.data;\n      },\n      toString: () => {\n        return 'Commit Transaction: name=' + this.name;\n      }\n    };\n  }\n  rollbackPayload(txnDescriptor) {\n    const buffer = new _writableTrackingBuffer.default(100, 'ascii');\n    (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount);\n    buffer.writeUShort(OPERATION_TYPE.TM_ROLLBACK_XACT);\n    buffer.writeUInt8(this.name.length * 2);\n    buffer.writeString(this.name, 'ucs2');\n    // No fBeginXact flag, so no new transaction is started.\n    buffer.writeUInt8(0);\n    return {\n      *[Symbol.iterator]() {\n        yield buffer.data;\n      },\n      toString: () => {\n        return 'Rollback Transaction: name=' + this.name;\n      }\n    };\n  }\n  savePayload(txnDescriptor) {\n    const buffer = new _writableTrackingBuffer.default(100, 'ascii');\n    (0, _allHeaders.writeToTrackingBuffer)(buffer, txnDescriptor, this.outstandingRequestCount);\n    buffer.writeUShort(OPERATION_TYPE.TM_SAVE_XACT);\n    buffer.writeUInt8(this.name.length * 2);\n    buffer.writeString(this.name, 'ucs2');\n    return {\n      *[Symbol.iterator]() {\n        yield buffer.data;\n      },\n      toString: () => {\n        return 'Save Transaction: name=' + this.name;\n      }\n    };\n  }\n  isolationLevelToTSQL() {\n    switch (this.isolationLevel) {\n      case ISOLATION_LEVEL.READ_UNCOMMITTED:\n        return 'READ UNCOMMITTED';\n      case ISOLATION_LEVEL.READ_COMMITTED:\n        return 'READ COMMITTED';\n      case ISOLATION_LEVEL.REPEATABLE_READ:\n        return 'REPEATABLE READ';\n      case ISOLATION_LEVEL.SERIALIZABLE:\n        return 'SERIALIZABLE';\n      case ISOLATION_LEVEL.SNAPSHOT:\n        return 'SNAPSHOT';\n    }\n    return '';\n  }\n}\nexports.Transaction = Transaction;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FsbEhlYWRlcnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIk9QRVJBVElPTl9UWVBFIiwiVE1fR0VUX0RUQ19BRERSRVNTIiwiVE1fUFJPUEFHQVRFX1hBQ1QiLCJUTV9CRUdJTl9YQUNUIiwiVE1fUFJPTU9URV9YQUNUIiwiVE1fQ09NTUlUX1hBQ1QiLCJUTV9ST0xMQkFDS19YQUNUIiwiVE1fU0FWRV9YQUNUIiwiZXhwb3J0cyIsIklTT0xBVElPTl9MRVZFTCIsIk5PX0NIQU5HRSIsIlJFQURfVU5DT01NSVRURUQiLCJSRUFEX0NPTU1JVFRFRCIsIlJFUEVBVEFCTEVfUkVBRCIsIlNFUklBTElaQUJMRSIsIlNOQVBTSE9UIiwiaXNvbGF0aW9uTGV2ZWxCeVZhbHVlIiwibmFtZSIsInZhbHVlIiwiYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbCIsImlzb2xhdGlvbkxldmVsIiwiVHlwZUVycm9yIiwiaW5jbHVkZXMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJSYW5nZUVycm9yIiwiVHJhbnNhY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm91dHN0YW5kaW5nUmVxdWVzdENvdW50IiwiYmVnaW5QYXlsb2FkIiwidHhuRGVzY3JpcHRvciIsImJ1ZmZlciIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVRvVHJhY2tpbmdCdWZmZXIiLCJ3cml0ZVVTaG9ydCIsIndyaXRlVUludDgiLCJsZW5ndGgiLCJ3cml0ZVN0cmluZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZGF0YSIsInRvU3RyaW5nIiwiY29tbWl0UGF5bG9hZCIsInJvbGxiYWNrUGF5bG9hZCIsInNhdmVQYXlsb2FkIiwiaXNvbGF0aW9uTGV2ZWxUb1RTUUwiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCB7IHdyaXRlVG9UcmFja2luZ0J1ZmZlciB9IGZyb20gJy4vYWxsLWhlYWRlcnMnO1xuXG4vKlxuICBzMi4yLjYuOFxuICovXG5cbmV4cG9ydCBjb25zdCBPUEVSQVRJT05fVFlQRSA9IHtcbiAgVE1fR0VUX0RUQ19BRERSRVNTOiAweDAwLFxuICBUTV9QUk9QQUdBVEVfWEFDVDogMHgwMSxcbiAgVE1fQkVHSU5fWEFDVDogMHgwNSxcbiAgVE1fUFJPTU9URV9YQUNUOiAweDA2LFxuICBUTV9DT01NSVRfWEFDVDogMHgwNyxcbiAgVE1fUk9MTEJBQ0tfWEFDVDogMHgwOCxcbiAgVE1fU0FWRV9YQUNUOiAweDA5XG59O1xuXG5leHBvcnQgY29uc3QgSVNPTEFUSU9OX0xFVkVMOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICBOT19DSEFOR0U6IDB4MDAsXG4gIFJFQURfVU5DT01NSVRURUQ6IDB4MDEsXG4gIFJFQURfQ09NTUlUVEVEOiAweDAyLFxuICBSRVBFQVRBQkxFX1JFQUQ6IDB4MDMsXG4gIFNFUklBTElaQUJMRTogMHgwNCxcbiAgU05BUFNIT1Q6IDB4MDVcbn07XG5cbmV4cG9ydCBjb25zdCBpc29sYXRpb25MZXZlbEJ5VmFsdWU6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7fTtcbmZvciAoY29uc3QgbmFtZSBpbiBJU09MQVRJT05fTEVWRUwpIHtcbiAgY29uc3QgdmFsdWUgPSBJU09MQVRJT05fTEVWRUxbbmFtZV07XG4gIGlzb2xhdGlvbkxldmVsQnlWYWx1ZVt2YWx1ZV0gPSBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbChpc29sYXRpb25MZXZlbDogYW55LCBuYW1lOiBzdHJpbmcpOiBhc3NlcnRzIGlzb2xhdGlvbkxldmVsIGlzIDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB7XG4gIGlmICh0eXBlb2YgaXNvbGF0aW9uTGV2ZWwgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgVGhlIFwiJHtuYW1lfVwiICR7bmFtZS5pbmNsdWRlcygnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCd9IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgaXNvbGF0aW9uTGV2ZWx9ICgke2lzb2xhdGlvbkxldmVsfSlgKTtcbiAgfVxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihpc29sYXRpb25MZXZlbCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlIHZhbHVlIG9mIFwiJHtuYW1lfVwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhbiBpbnRlZ2VyLiBSZWNlaXZlZDogJHtpc29sYXRpb25MZXZlbH1gKTtcbiAgfVxuXG4gIGlmICghKGlzb2xhdGlvbkxldmVsID49IDAgJiYgaXNvbGF0aW9uTGV2ZWwgPD0gNSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlIHZhbHVlIG9mIFwiJHtuYW1lfVwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSA+PSAwICYmIDw9IDUuIFJlY2VpdmVkOiAke2lzb2xhdGlvbkxldmVsfWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiB7XG4gIGRlY2xhcmUgbmFtZTogc3RyaW5nO1xuICBkZWNsYXJlIGlzb2xhdGlvbkxldmVsOiBudW1iZXI7XG4gIGRlY2xhcmUgb3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGlzb2xhdGlvbkxldmVsID0gSVNPTEFUSU9OX0xFVkVMLk5PX0NIQU5HRSkge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5pc29sYXRpb25MZXZlbCA9IGlzb2xhdGlvbkxldmVsO1xuICAgIHRoaXMub3V0c3RhbmRpbmdSZXF1ZXN0Q291bnQgPSAxO1xuICB9XG5cbiAgYmVnaW5QYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ3VjczInKTtcbiAgICB3cml0ZVRvVHJhY2tpbmdCdWZmZXIoYnVmZmVyLCB0eG5EZXNjcmlwdG9yLCB0aGlzLm91dHN0YW5kaW5nUmVxdWVzdENvdW50KTtcbiAgICBidWZmZXIud3JpdGVVU2hvcnQoT1BFUkFUSU9OX1RZUEUuVE1fQkVHSU5fWEFDVCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pc29sYXRpb25MZXZlbCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5uYW1lLmxlbmd0aCAqIDIpO1xuICAgIGJ1ZmZlci53cml0ZVN0cmluZyh0aGlzLm5hbWUsICd1Y3MyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ0JlZ2luIFRyYW5zYWN0aW9uOiBuYW1lPScgKyB0aGlzLm5hbWUgKyAnLCBpc29sYXRpb25MZXZlbD0nICsgaXNvbGF0aW9uTGV2ZWxCeVZhbHVlW3RoaXMuaXNvbGF0aW9uTGV2ZWxdO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb21taXRQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX0NPTU1JVF9YQUNUKTtcbiAgICBidWZmZXIud3JpdGVVSW50OCh0aGlzLm5hbWUubGVuZ3RoICogMik7XG4gICAgYnVmZmVyLndyaXRlU3RyaW5nKHRoaXMubmFtZSwgJ3VjczInKTtcbiAgICAvLyBObyBmQmVnaW5YYWN0IGZsYWcsIHNvIG5vIG5ldyB0cmFuc2FjdGlvbiBpcyBzdGFydGVkLlxuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgeWllbGQgYnVmZmVyLmRhdGE7XG4gICAgICB9LFxuICAgICAgdG9TdHJpbmc6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuICdDb21taXQgVHJhbnNhY3Rpb246IG5hbWU9JyArIHRoaXMubmFtZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcm9sbGJhY2tQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX1JPTExCQUNLX1hBQ1QpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMubmFtZS5sZW5ndGggKiAyKTtcbiAgICBidWZmZXIud3JpdGVTdHJpbmcodGhpcy5uYW1lLCAndWNzMicpO1xuICAgIC8vIE5vIGZCZWdpblhhY3QgZmxhZywgc28gbm8gbmV3IHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQuXG4gICAgYnVmZmVyLndyaXRlVUludDgoMCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ1JvbGxiYWNrIFRyYW5zYWN0aW9uOiBuYW1lPScgKyB0aGlzLm5hbWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNhdmVQYXlsb2FkKHR4bkRlc2NyaXB0b3I6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKDEwMCwgJ2FzY2lpJyk7XG4gICAgd3JpdGVUb1RyYWNraW5nQnVmZmVyKGJ1ZmZlciwgdHhuRGVzY3JpcHRvciwgdGhpcy5vdXRzdGFuZGluZ1JlcXVlc3RDb3VudCk7XG4gICAgYnVmZmVyLndyaXRlVVNob3J0KE9QRVJBVElPTl9UWVBFLlRNX1NBVkVfWEFDVCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5uYW1lLmxlbmd0aCAqIDIpO1xuICAgIGJ1ZmZlci53cml0ZVN0cmluZyh0aGlzLm5hbWUsICd1Y3MyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgICAgIH0sXG4gICAgICB0b1N0cmluZzogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ1NhdmUgVHJhbnNhY3Rpb246IG5hbWU9JyArIHRoaXMubmFtZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaXNvbGF0aW9uTGV2ZWxUb1RTUUwoKSB7XG4gICAgc3dpdGNoICh0aGlzLmlzb2xhdGlvbkxldmVsKSB7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5SRUFEX1VOQ09NTUlUVEVEOlxuICAgICAgICByZXR1cm4gJ1JFQUQgVU5DT01NSVRURUQnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuUkVBRF9DT01NSVRURUQ6XG4gICAgICAgIHJldHVybiAnUkVBRCBDT01NSVRURUQnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuUkVQRUFUQUJMRV9SRUFEOlxuICAgICAgICByZXR1cm4gJ1JFUEVBVEFCTEUgUkVBRCc7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5TRVJJQUxJWkFCTEU6XG4gICAgICAgIHJldHVybiAnU0VSSUFMSVpBQkxFJztcbiAgICAgIGNhc2UgSVNPTEFUSU9OX0xFVkVMLlNOQVBTSE9UOlxuICAgICAgICByZXR1cm4gJ1NOQVBTSE9UJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUFzRCxTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV0RDtBQUNBO0FBQ0E7O0FBRU8sTUFBTUcsY0FBYyxHQUFHO0VBQzVCQyxrQkFBa0IsRUFBRSxJQUFJO0VBQ3hCQyxpQkFBaUIsRUFBRSxJQUFJO0VBQ3ZCQyxhQUFhLEVBQUUsSUFBSTtFQUNuQkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCQyxZQUFZLEVBQUU7QUFDaEIsQ0FBQztBQUFDQyxPQUFBLENBQUFSLGNBQUEsR0FBQUEsY0FBQTtBQUVLLE1BQU1TLGVBQTBDLEdBQUc7RUFDeERDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLGdCQUFnQixFQUFFLElBQUk7RUFDdEJDLGNBQWMsRUFBRSxJQUFJO0VBQ3BCQyxlQUFlLEVBQUUsSUFBSTtFQUNyQkMsWUFBWSxFQUFFLElBQUk7RUFDbEJDLFFBQVEsRUFBRTtBQUNaLENBQUM7QUFBQ1AsT0FBQSxDQUFBQyxlQUFBLEdBQUFBLGVBQUE7QUFFSyxNQUFNTyxxQkFBZ0QsR0FBRyxDQUFDLENBQUM7QUFBQ1IsT0FBQSxDQUFBUSxxQkFBQSxHQUFBQSxxQkFBQTtBQUNuRSxLQUFLLE1BQU1DLElBQUksSUFBSVIsZUFBZSxFQUFFO0VBQ2xDLE1BQU1TLEtBQUssR0FBR1QsZUFB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","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = TypeError;\n\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(fn, 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(fn, 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\n// https://262.ecma-international.org/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar hasOwn = require('hasown');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nmodule.exports = function IsPropertyDescriptor(ES, Desc) {\n\tif (ES.Type(Desc) !== 'Object') {\n\t\treturn false;\n\t}\n\tvar allowed = {\n\t\t'[[Configurable]]': true,\n\t\t'[[Enumerable]]': true,\n\t\t'[[Get]]': true,\n\t\t'[[Set]]': true,\n\t\t'[[Value]]': true,\n\t\t'[[Writable]]': true\n\t};\n\n\tfor (var key in Desc) { // eslint-disable-line no-restricted-syntax\n\t\tif (hasOwn(Desc, key) && !allowed[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) {\n\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t}\n\treturn true;\n};\n","'use strict';\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n","'use strict';\n\nvar ES5Type = require('../5/Type');\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\nmodule.exports = function (x) { return (typeof x === 'number' || typeof x === 'bigint') && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $abs = GetIntrinsic('%Math.abs%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\nvar $isNaN = require('./isNaN');\nvar $isFinite = require('./isFinite');\n\nmodule.exports = function isInteger(argument) {\n\tif (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {\n\t\treturn false;\n\t}\n\tvar absValue = $abs(argument);\n\treturn $floor(absValue) === absValue;\n};\n\n","'use strict';\n\nvar hasOwn = require('hasown');\n\n// https://262.ecma-international.org/13.0/#sec-match-records\n\nmodule.exports = function isMatchRecord(record) {\n\treturn (\n\t\thasOwn(record, '[[StartIndex]]')\n        && hasOwn(record, '[[EndIndex]]')\n        && record['[[StartIndex]]'] >= 0\n        && record['[[EndIndex]]'] >= record['[[StartIndex]]']\n        && String(parseInt(record['[[StartIndex]]'], 10)) === String(record['[[StartIndex]]'])\n        && String(parseInt(record['[[EndIndex]]'], 10)) === String(record['[[EndIndex]]'])\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar hasOwn = require('hasown');\nvar isInteger = require('./isInteger');\n\nvar isMatchRecord = require('./isMatchRecord');\n\nvar predicates = {\n\t// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type\n\t'Property Descriptor': function isPropertyDescriptor(Desc) {\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tif (!Desc) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (hasOwn(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = hasOwn(Desc, '[[Value]]');\n\t\tvar IsAccessor = hasOwn(Desc, '[[Get]]') || hasOwn(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t},\n\t// https://262.ecma-international.org/13.0/#sec-match-records\n\t'Match Record': isMatchRecord,\n\t'Iterator Record': function isIteratorRecord(value) {\n\t\treturn hasOwn(value, '[[Iterator]]') && hasOwn(value, '[[NextMethod]]') && hasOwn(value, '[[Done]]');\n\t},\n\t'PromiseCapability Record': function isPromiseCapabilityRecord(value) {\n\t\treturn !!value\n\t\t\t&& hasOwn(value, '[[Resolve]]')\n\t\t\t&& typeof value['[[Resolve]]'] === 'function'\n\t\t\t&& hasOwn(value, '[[Reject]]')\n\t\t\t&& typeof value['[[Reject]]'] === 'function'\n\t\t\t&& hasOwn(value, '[[Promise]]')\n\t\t\t&& value['[[Promise]]']\n\t\t\t&& typeof value['[[Promise]]'].then === 'function';\n\t},\n\t'AsyncGeneratorRequest Record': function isAsyncGeneratorRequestRecord(value) {\n\t\treturn !!value\n\t\t\t&& hasOwn(value, '[[Completion]]') // TODO: confirm is a completion record\n\t\t\t&& hasOwn(value, '[[Capability]]')\n\t\t\t&& predicates['PromiseCapability Record'](value['[[Capability]]']);\n\t},\n\t'RegExp Record': function isRegExpRecord(value) {\n\t\treturn value\n\t\t\t&& hasOwn(value, '[[IgnoreCase]]')\n\t\t\t&& typeof value['[[IgnoreCase]]'] === 'boolean'\n\t\t\t&& hasOwn(value, '[[Multiline]]')\n\t\t\t&& typeof value['[[Multiline]]'] === 'boolean'\n\t\t\t&& hasOwn(value, '[[DotAll]]')\n\t\t\t&& typeof value['[[DotAll]]'] === 'boolean'\n\t\t\t&& hasOwn(value, '[[Unicode]]')\n\t\t\t&& typeof value['[[Unicode]]'] === 'boolean'\n\t\t\t&& hasOwn(value, '[[CapturingGroupsCount]]')\n\t\t\t&& typeof value['[[CapturingGroupsCount]]'] === 'number'\n\t\t\t&& isInteger(value['[[CapturingGroupsCount]]'])\n\t\t\t&& value['[[CapturingGroupsCount]]'] >= 0;\n\t}\n};\n\nmodule.exports = function assertRecord(Type, recordType, argumentName, value) {\n\tvar predicate = predicates[recordType];\n\tif (typeof predicate !== 'function') {\n\t\tthrow new $SyntaxError('unknown record type: ' + recordType);\n\t}\n\tif (Type(value) !== 'Object' || !predicate(value)) {\n\t\tthrow new $TypeError(argumentName + ' must be a ' + recordType);\n\t}\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\n\nvar Type = require('./Type');\n\nvar assertRecord = require('../helpers/assertRecord');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.1\n\nmodule.exports = function IsAccessorDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!hasOwn(Desc, '[[Get]]') && !hasOwn(Desc, '[[Set]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\n\nvar Type = require('./Type');\n\nvar assertRecord = require('../helpers/assertRecord');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.2\n\nmodule.exports = function IsDataDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!hasOwn(Desc, '[[Value]]') && !hasOwn(Desc, '[[Writable]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $preventExtensions = GetIntrinsic('%Object.preventExtensions%', true);\nvar $isExtensible = GetIntrinsic('%Object.isExtensible%', true);\n\nvar isPrimitive = require('../helpers/isPrimitive');\n\n// https://262.ecma-international.org/6.0/#sec-isextensible-o\n\nmodule.exports = $preventExtensions\n\t? function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj) && $isExtensible(obj);\n\t}\n\t: function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj);\n\t};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.2\n\nmodule.exports = function ToBoolean(value) { return !!value; };\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = require('is-callable');\n","'use strict';\n\nvar hasOwn = require('hasown');\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Type = require('./Type');\nvar ToBoolean = require('./ToBoolean');\nvar IsCallable = require('./IsCallable');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.5\n\nmodule.exports = function ToPropertyDescriptor(Obj) {\n\tif (Type(Obj) !== 'Object') {\n\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t}\n\n\tvar desc = {};\n\tif (hasOwn(Obj, 'enumerable')) {\n\t\tdesc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);\n\t}\n\tif (hasOwn(Obj, 'configurable')) {\n\t\tdesc['[[Configurable]]'] = ToBoolean(Obj.configurable);\n\t}\n\tif (hasOwn(Obj, 'value')) {\n\t\tdesc['[[Value]]'] = Obj.value;\n\t}\n\tif (hasOwn(Obj, 'writable')) {\n\t\tdesc['[[Writable]]'] = ToBoolean(Obj.writable);\n\t}\n\tif (hasOwn(Obj, 'get')) {\n\t\tvar getter = Obj.get;\n\t\tif (typeof getter !== 'undefined' && !IsCallable(getter)) {\n\t\t\tthrow new $TypeError('getter must be a function');\n\t\t}\n\t\tdesc['[[Get]]'] = getter;\n\t}\n\tif (hasOwn(Obj, 'set')) {\n\t\tvar setter = Obj.set;\n\t\tif (typeof setter !== 'undefined' && !IsCallable(setter)) {\n\t\t\tthrow new $TypeError('setter must be a function');\n\t\t}\n\t\tdesc['[[Set]]'] = setter;\n\t}\n\n\tif ((hasOwn(desc, '[[Get]]') || hasOwn(desc, '[[Set]]')) && (hasOwn(desc, '[[Value]]') || hasOwn(desc, '[[Writable]]'))) {\n\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t}\n\treturn desc;\n};\n","'use strict';\n\nvar $isNaN = require('../helpers/isNaN');\n\n// http://262.ecma-international.org/5.1/#sec-9.12\n\nmodule.exports = function SameValue(x, y) {\n\tif (x === y) { // 0 === -0, but they are not identical.\n\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\treturn true;\n\t}\n\treturn $isNaN(x) && $isNaN(y);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {<T extends Func = Func>(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors');\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors() && GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasArrayLengthDefineBug = hasPropertyDescriptors.hasArrayLengthDefineBug();\n\n// eslint-disable-next-line global-require\nvar isArray = hasArrayLengthDefineBug && require('../helpers/IsArray');\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\n// eslint-disable-next-line max-params\nmodule.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {\n\tif (!$defineProperty) {\n\t\tif (!IsDataDescriptor(desc)) {\n\t\t\t// ES3 does not support getters/setters\n\t\t\treturn false;\n\t\t}\n\t\tif (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// fallback for ES3\n\t\tif (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {\n\t\t\t// a non-enumerable existing property\n\t\t\treturn false;\n\t\t}\n\n\t\t// property does not exist at all, or exists but is enumerable\n\t\tvar V = desc['[[Value]]'];\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tO[P] = V; // will use [[Define]]\n\t\treturn SameValue(O[P], V);\n\t}\n\tif (\n\t\thasArrayLengthDefineBug\n\t\t&& P === 'length'\n\t\t&& '[[Value]]' in desc\n\t\t&& isArray(O)\n\t\t&& O.length !== desc['[[Value]]']\n\t) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tO.length = desc['[[Value]]'];\n\t\treturn O.length === desc['[[Value]]'];\n\t}\n\n\t$defineProperty(O, P, FromPropertyDescriptor(desc));\n\treturn true;\n};\n","'use strict';\n\nmodule.exports = function isFullyPopulatedPropertyDescriptor(ES, Desc) {\n\treturn !!Desc\n\t\t&& typeof Desc === 'object'\n\t\t&& '[[Enumerable]]' in Desc\n\t\t&& '[[Configurable]]' in Desc\n\t\t&& (ES.IsAccessorDescriptor(Desc) || ES.IsDataDescriptor(Desc));\n};\n","'use strict';\n\nmodule.exports = function fromPropertyDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn Desc;\n\t}\n\tvar obj = {};\n\tif ('[[Value]]' in Desc) {\n\t\tobj.value = Desc['[[Value]]'];\n\t}\n\tif ('[[Writable]]' in Desc) {\n\t\tobj.writable = !!Desc['[[Writable]]'];\n\t}\n\tif ('[[Get]]' in Desc) {\n\t\tobj.get = Desc['[[Get]]'];\n\t}\n\tif ('[[Set]]' in Desc) {\n\t\tobj.set = Desc['[[Set]]'];\n\t}\n\tif ('[[Enumerable]]' in Desc) {\n\t\tobj.enumerable = !!Desc['[[Enumerable]]'];\n\t}\n\tif ('[[Configurable]]' in Desc) {\n\t\tobj.configurable = !!Desc['[[Configurable]]'];\n\t}\n\treturn obj;\n};\n","'use strict';\n\nvar assertRecord = require('../helpers/assertRecord');\nvar fromPropertyDescriptor = require('../helpers/fromPropertyDescriptor');\n\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-frompropertydescriptor\n\nmodule.exports = function FromPropertyDescriptor(Desc) {\n\tif (typeof Desc !== 'undefined') {\n\t\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\t}\n\n\treturn fromPropertyDescriptor(Desc);\n};\n","'use strict';\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar IsAccessorDescriptor = require('./IsAccessorDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-isgenericdescriptor\n\nmodule.exports = function IsGenericDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\nvar isFullyPopulatedPropertyDescriptor = require('../helpers/isFullyPopulatedPropertyDescriptor');\nvar isPropertyDescriptor = require('../helpers/isPropertyDescriptor');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar IsAccessorDescriptor = require('./IsAccessorDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsGenericDescriptor = require('./IsGenericDescriptor');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/13.0/#sec-validateandapplypropertydescriptor\n\n// see https://github.com/tc39/ecma262/pull/2468 for ES2022 changes\n\n// eslint-disable-next-line max-lines-per-function, max-statements\nmodule.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) {\n\tvar oType = Type(O);\n\tif (oType !== 'Undefined' && oType !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be undefined or an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P must be a Property Key');\n\t}\n\tif (Type(extensible) !== 'Boolean') {\n\t\tthrow new $TypeError('Assertion failed: extensible must be a Boolean');\n\t}\n\tif (!isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, Desc)) {\n\t\tthrow new $TypeError('Assertion failed: Desc must be a Property Descriptor');\n\t}\n\tif (Type(current) !== 'Undefined' && !isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, current)) {\n\t\tthrow new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined');\n\t}\n\n\tif (Type(current) === 'Undefined') { // step 2\n\t\tif (!extensible) {\n\t\t\treturn false; // step 2.a\n\t\t}\n\t\tif (oType === 'Undefined') {\n\t\t\treturn true; // step 2.b\n\t\t}\n\t\tif (IsAccessorDescriptor(Desc)) { // step 2.c\n\t\t\treturn DefineOwnProperty(\n\t\t\t\tIsDataDescriptor,\n\t\t\t\tSameValue,\n\t\t\t\tFromPropertyDescriptor,\n\t\t\t\tO,\n\t\t\t\tP,\n\t\t\t\tDesc\n\t\t\t);\n\t\t}\n\t\t// step 2.d\n\t\treturn DefineOwnProperty(\n\t\t\tIsDataDescriptor,\n\t\t\tSameValue,\n\t\t\tFromPropertyDescriptor,\n\t\t\tO,\n\t\t\tP,\n\t\t\t{\n\t\t\t\t'[[Configurable]]': !!Desc['[[Configurable]]'],\n\t\t\t\t'[[Enumerable]]': !!Desc['[[Enumerable]]'],\n\t\t\t\t'[[Value]]': Desc['[[Value]]'],\n\t\t\t\t'[[Writable]]': !!Desc['[[Writable]]']\n\t\t\t}\n\t\t);\n\t}\n\n\t// 3. Assert: current is a fully populated Property Descriptor.\n\tif (!isFullyPopulatedPropertyDescriptor({\n\t\tIsAccessorDescriptor: IsAccessorDescriptor,\n\t\tIsDataDescriptor: IsDataDescriptor\n\t}, current)) {\n\t\tthrow new $TypeError('`current`, when present, must be a fully populated and valid Property Descriptor');\n\t}\n\n\t// 4. If every field in Desc is absent, return true.\n\t// this can't really match the assertion that it's a Property Descriptor in our JS implementation\n\n\t// 5. If current.[[Configurable]] is false, then\n\tif (!current['[[Configurable]]']) {\n\t\tif ('[[Configurable]]' in Desc && Desc['[[Configurable]]']) {\n\t\t\t// step 5.a\n\t\t\treturn false;\n\t\t}\n\t\tif ('[[Enumerable]]' in Desc && !SameValue(Desc['[[Enumerable]]'], current['[[Enumerable]]'])) {\n\t\t\t// step 5.b\n\t\t\treturn false;\n\t\t}\n\t\tif (!IsGenericDescriptor(Desc) && !SameValue(IsAccessorDescriptor(Desc), IsAccessorDescriptor(current))) {\n\t\t\t// step 5.c\n\t\t\treturn false;\n\t\t}\n\t\tif (IsAccessorDescriptor(current)) { // step 5.d\n\t\t\tif ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (!current['[[Writable]]']) { // step 5.e\n\t\t\tif ('[[Writable]]' in Desc && Desc['[[Writable]]']) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t// 6. If O is not undefined, then\n\tif (oType !== 'Undefined') {\n\t\tvar configurable;\n\t\tvar enumerable;\n\t\tif (IsDataDescriptor(current) && IsAccessorDescriptor(Desc)) { // step 6.a\n\t\t\tconfigurable = ('[[Configurable]]' in Desc ? Desc : current)['[[Configurable]]'];\n\t\t\tenumerable = ('[[Enumerable]]' in Desc ? Desc : current)['[[Enumerable]]'];\n\t\t\t// Replace the property named P of object O with an accessor property having [[Configurable]] and [[Enumerable]] attributes as described by current and each other attribute set to its default value.\n\t\t\treturn DefineOwnProperty(\n\t\t\t\tIsDataDescriptor,\n\t\t\t\tSameValue,\n\t\t\t\tFromPropertyDescriptor,\n\t\t\t\tO,\n\t\t\t\tP,\n\t\t\t\t{\n\t\t\t\t\t'[[Configurable]]': !!configurable,\n\t\t\t\t\t'[[Enumerable]]': !!enumerable,\n\t\t\t\t\t'[[Get]]': ('[[Get]]' in Desc ? Desc : current)['[[Get]]'],\n\t\t\t\t\t'[[Set]]': ('[[Set]]' in Desc ? Desc : current)['[[Set]]']\n\t\t\t\t}\n\t\t\t);\n\t\t} else if (IsAccessorDescriptor(current) && IsDataDescriptor(Desc)) {\n\t\t\tconfigurable = ('[[Configurable]]' in Desc ? Desc : current)['[[Configurable]]'];\n\t\t\tenumerable = ('[[Enumerable]]' in Desc ? Desc : current)['[[Enumerable]]'];\n\t\t\t// i. Replace the property named P of object O with a data property having [[Configurable]] and [[Enumerable]] attributes as described by current and each other attribute set to its default value.\n\t\t\treturn DefineOwnProperty(\n\t\t\t\tIsDataDescriptor,\n\t\t\t\tSameValue,\n\t\t\t\tFromPropertyDescriptor,\n\t\t\t\tO,\n\t\t\t\tP,\n\t\t\t\t{\n\t\t\t\t\t'[[Configurable]]': !!configurable,\n\t\t\t\t\t'[[Enumerable]]': !!enumerable,\n\t\t\t\t\t'[[Value]]': ('[[Value]]' in Desc ? Desc : current)['[[Value]]'],\n\t\t\t\t\t'[[Writable]]': !!('[[Writable]]' in Desc ? Desc : current)['[[Writable]]']\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// For each field of Desc that is present, set the corresponding attribute of the property named P of object O to the value of the field.\n\t\treturn DefineOwnProperty(\n\t\t\tIsDataDescriptor,\n\t\t\tSameValue,\n\t\t\tFromPropertyDescriptor,\n\t\t\tO,\n\t\t\tP,\n\t\t\tDesc\n\t\t);\n\t}\n\n\treturn true; // step 7\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = require('gopd');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar isPropertyDescriptor = require('../helpers/isPropertyDescriptor');\n\nvar IsAccessorDescriptor = require('./IsAccessorDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsExtensible = require('./IsExtensible');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\nvar ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor');\n\n// https://262.ecma-international.org/6.0/#sec-ordinarydefineownproperty\n\nmodule.exports = function OrdinaryDefineOwnProperty(O, P, Desc) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P must be a Property Key');\n\t}\n\tif (!isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, Desc)) {\n\t\tthrow new $TypeError('Assertion failed: Desc must be a Property Descriptor');\n\t}\n\tif (!$gOPD) {\n\t\t// ES3/IE 8 fallback\n\t\tif (IsAccessorDescriptor(Desc)) {\n\t\t\tthrow new $SyntaxError('This environment does not support accessor property descriptors.');\n\t\t}\n\t\tvar creatingNormalDataProperty = !(P in O)\n\t\t\t&& Desc['[[Writable]]']\n\t\t\t&& Desc['[[Enumerable]]']\n\t\t\t&& Desc['[[Configurable]]']\n\t\t\t&& '[[Value]]' in Desc;\n\t\tvar settingExistingDataProperty = (P in O)\n\t\t\t&& (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]'])\n\t\t\t&& (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]'])\n\t\t\t&& (!('[[Writable]]' in Desc) || Desc['[[Writable]]'])\n\t\t\t&& '[[Value]]' in Desc;\n\t\tif (creatingNormalDataProperty || settingExistingDataProperty) {\n\t\t\tO[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign\n\t\t\treturn SameValue(O[P], Desc['[[Value]]']);\n\t\t}\n\t\tthrow new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties');\n\t}\n\tvar desc = $gOPD(O, P);\n\tvar current = desc && ToPropertyDescriptor(desc);\n\tvar extensible = IsExtensible(O);\n\treturn ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-createdataproperty\n\nmodule.exports = function CreateDataProperty(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar newDesc = {\n\t\t'[[Configurable]]': true,\n\t\t'[[Enumerable]]': true,\n\t\t'[[Value]]': V,\n\t\t'[[Writable]]': true\n\t};\n\treturn OrdinaryDefineOwnProperty(O, P, newDesc);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar CreateDataProperty = require('./CreateDataProperty');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// // https://262.ecma-international.org/14.0/#sec-createdatapropertyorthrow\n\nmodule.exports = function CreateDataPropertyOrThrow(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar success = CreateDataProperty(O, P, V);\n\tif (!success) {\n\t\tthrow new $TypeError('unable to create data property');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-createmethodproperty\n\nmodule.exports = function CreateMethodProperty(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\n\tvar newDesc = {\n\t\t'[[Configurable]]': true,\n\t\t'[[Enumerable]]': false,\n\t\t'[[Value]]': V,\n\t\t'[[Writable]]': true\n\t};\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\tnewDesc\n\t);\n};\n","module.exports = require('util').inspect;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (obj === global) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","'use strict';\n\nmodule.exports = function isLeadingSurrogate(charCode) {\n\treturn typeof charCode === 'number' && charCode >= 0xD800 && charCode <= 0xDBFF;\n};\n","'use strict';\n\nmodule.exports = function isTrailingSurrogate(charCode) {\n\treturn typeof charCode === 'number' && charCode >= 0xDC00 && charCode <= 0xDFFF;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $fromCharCode = GetIntrinsic('%String.fromCharCode%');\n\nvar isLeadingSurrogate = require('../helpers/isLeadingSurrogate');\nvar isTrailingSurrogate = require('../helpers/isTrailingSurrogate');\n\n// https://tc39.es/ecma262/2020/#sec-utf16decodesurrogatepair\n\nmodule.exports = function UTF16SurrogatePairToCodePoint(lead, trail) {\n\tif (!isLeadingSurrogate(lead) || !isTrailingSurrogate(trail)) {\n\t\tthrow new $TypeError('Assertion failed: `lead` must be a leading surrogate char code, and `trail` must be a trailing surrogate char code');\n\t}\n\t// var cp = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n\treturn $fromCharCode(lead) + $fromCharCode(trail);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar callBound = require('call-bind/callBound');\nvar isLeadingSurrogate = require('../helpers/isLeadingSurrogate');\nvar isTrailingSurrogate = require('../helpers/isTrailingSurrogate');\n\nvar Type = require('./Type');\nvar UTF16SurrogatePairToCodePoint = require('./UTF16SurrogatePairToCodePoint');\n\nvar $charAt = callBound('String.prototype.charAt');\nvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\n// https://262.ecma-international.org/12.0/#sec-codepointat\n\nmodule.exports = function CodePointAt(string, position) {\n\tif (Type(string) !== 'String') {\n\t\tthrow new $TypeError('Assertion failed: `string` must be a String');\n\t}\n\tvar size = string.length;\n\tif (position < 0 || position >= size) {\n\t\tthrow new $TypeError('Assertion failed: `position` must be >= 0, and < the length of `string`');\n\t}\n\tvar first = $charCodeAt(string, position);\n\tvar cp = $charAt(string, position);\n\tvar firstIsLeading = isLeadingSurrogate(first);\n\tvar firstIsTrailing = isTrailingSurrogate(first);\n\tif (!firstIsLeading && !firstIsTrailing) {\n\t\treturn {\n\t\t\t'[[CodePoint]]': cp,\n\t\t\t'[[CodeUnitCount]]': 1,\n\t\t\t'[[IsUnpairedSurrogate]]': false\n\t\t};\n\t}\n\tif (firstIsTrailing || (position + 1 === size)) {\n\t\treturn {\n\t\t\t'[[CodePoint]]': cp,\n\t\t\t'[[CodeUnitCount]]': 1,\n\t\t\t'[[IsUnpairedSurrogate]]': true\n\t\t};\n\t}\n\tvar second = $charCodeAt(string, position + 1);\n\tif (!isTrailingSurrogate(second)) {\n\t\treturn {\n\t\t\t'[[CodePoint]]': cp,\n\t\t\t'[[CodeUnitCount]]': 1,\n\t\t\t'[[IsUnpairedSurrogate]]': true\n\t\t};\n\t}\n\n\treturn {\n\t\t'[[CodePoint]]': UTF16SurrogatePairToCodePoint(first, second),\n\t\t'[[CodeUnitCount]]': 2,\n\t\t'[[IsUnpairedSurrogate]]': false\n\t};\n};\n","'use strict';\n\nmodule.exports = Number.MAX_SAFE_INTEGER || 9007199254740991; // Math.pow(2, 53) - 1;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar CodePointAt = require('./CodePointAt');\nvar Type = require('./Type');\n\nvar isInteger = require('../helpers/isInteger');\nvar MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// https://262.ecma-international.org/12.0/#sec-advancestringindex\n\nmodule.exports = function AdvanceStringIndex(S, index, unicode) {\n\tif (Type(S) !== 'String') {\n\t\tthrow new $TypeError('Assertion failed: `S` must be a String');\n\t}\n\tif (!isInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {\n\t\tthrow new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');\n\t}\n\tif (Type(unicode) !== 'Boolean') {\n\t\tthrow new $TypeError('Assertion failed: `unicode` must be a Boolean');\n\t}\n\tif (!unicode) {\n\t\treturn index + 1;\n\t}\n\tvar length = S.length;\n\tif ((index + 1) >= length) {\n\t\treturn index + 1;\n\t}\n\tvar cp = CodePointAt(S, index);\n\treturn index + cp['[[CodeUnitCount]]'];\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-createiterresultobject\n\nmodule.exports = function CreateIterResultObject(value, done) {\n\tif (Type(done) !== 'Boolean') {\n\t\tthrow new $TypeError('Assertion failed: Type(done) is not Boolean');\n\t}\n\treturn {\n\t\tvalue: value,\n\t\tdone: done\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = require('object-inspect');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-get-o-p\n\nmodule.exports = function Get(O, P) {\n\t// 7.3.1.1\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\t// 7.3.1.2\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\t// 7.3.1.3\n\treturn O[P];\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar ToBoolean = require('./ToBoolean');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-iteratorcomplete\n\nmodule.exports = function IteratorComplete(iterResult) {\n\tif (Type(iterResult) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t}\n\treturn ToBoolean(Get(iterResult, 'done'));\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/6.0/#sec-iteratorvalue\n\nmodule.exports = function IteratorValue(iterResult) {\n\tif (Type(iterResult) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t}\n\treturn Get(iterResult, 'value');\n};\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBind = require('call-bind');\n\nvar $resolve = GetIntrinsic('%Promise.resolve%', true);\nvar $PromiseResolve = $resolve && callBind($resolve);\n\n// https://262.ecma-international.org/9.0/#sec-promise-resolve\n\nmodule.exports = function PromiseResolve(C, x) {\n\tif (!$PromiseResolve) {\n\t\tthrow new SyntaxError('This environment does not support Promises.');\n\t}\n\treturn $PromiseResolve(C, x);\n};\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $Promise = GetIntrinsic('%Promise%', true);\n\nvar callBound = require('call-bind/callBound');\n\nvar CreateIterResultObject = require('./CreateIterResultObject');\nvar IteratorComplete = require('./IteratorComplete');\nvar IteratorValue = require('./IteratorValue');\nvar PromiseResolve = require('./PromiseResolve');\nvar Type = require('./Type');\n\nvar $then = callBound('Promise.prototype.then', true);\n\n// https://262.ecma-international.org/10.0/#sec-asyncfromsynciteratorcontinuation\n\nmodule.exports = function AsyncFromSyncIteratorContinuation(result) {\n\tif (Type(result) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\n\tif (arguments.length > 1) {\n\t\tthrow new $SyntaxError('although AsyncFromSyncIteratorContinuation should take a second argument, it is not used in this implementation');\n\t}\n\n\tif (!$Promise) {\n\t\tthrow new $SyntaxError('This environment does not support Promises.');\n\t}\n\n\treturn new Promise(function (resolve) {\n\t\tvar done = IteratorComplete(result); // step 2\n\t\tvar value = IteratorValue(result); // step 4\n\t\tvar valueWrapper = PromiseResolve($Promise, value); // step 6\n\n\t\t// eslint-disable-next-line no-shadow\n\t\tvar onFulfilled = function (value) { // steps 8-9\n\t\t\treturn CreateIterResultObject(value, done); // step 8.a\n\t\t};\n\t\tresolve($then(valueWrapper, onFulfilled)); // step 11\n\t}); // step 12\n};\n","'use strict';\n\n// https://262.ecma-international.org/6.0/#sec-isarray\nmodule.exports = require('../helpers/IsArray');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsArray = require('./IsArray');\n\nvar $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('Function.prototype.apply');\n\n// https://262.ecma-international.org/6.0/#sec-call\n\nmodule.exports = function Call(F, V) {\n\tvar argumentsList = arguments.length > 2 ? arguments[2] : [];\n\tif (!IsArray(argumentsList)) {\n\t\tthrow new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');\n\t}\n\treturn $apply(F, V, argumentsList);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = require('object-inspect');\n\nvar IsPropertyKey = require('./IsPropertyKey');\n// var ToObject = require('./ToObject');\n\n// https://262.ecma-international.org/6.0/#sec-getv\n\nmodule.exports = function GetV(V, P) {\n\t// 7.3.2.1\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\n\t// 7.3.2.2-3\n\t// var O = ToObject(V);\n\n\t// 7.3.2.4\n\treturn V[P];\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar GetV = require('./GetV');\nvar IsCallable = require('./IsCallable');\nvar IsPropertyKey = require('./IsPropertyKey');\n\nvar inspect = require('object-inspect');\n\n// https://262.ecma-international.org/6.0/#sec-getmethod\n\nmodule.exports = function GetMethod(O, P) {\n\t// 7.3.9.1\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\n\t// 7.3.9.2\n\tvar func = GetV(O, P);\n\n\t// 7.3.9.4\n\tif (func == null) {\n\t\treturn void 0;\n\t}\n\n\t// 7.3.9.5\n\tif (!IsCallable(func)) {\n\t\tthrow new $TypeError(inspect(P) + ' is not a function: ' + inspect(func));\n\t}\n\n\t// 7.3.9.6\n\treturn func;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Call = require('./Call');\nvar Type = require('./Type');\n\nvar assertRecord = require('../helpers/assertRecord');\n\n// https://262.ecma-international.org/14.0/#sec-iteratornext\n\nmodule.exports = function IteratorNext(iteratorRecord) {\n\tassertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord);\n\n\tvar result;\n\tif (arguments.length < 2) { // step 1\n\t\tresult = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]']); // step 1.a\n\t} else { // step 2\n\t\tresult = Call(iteratorRecord['[[NextMethod]]'], iteratorRecord['[[Iterator]]'], [arguments[1]]); // step 2.a\n\t}\n\n\tif (Type(result) !== 'Object') {\n\t\tthrow new $TypeError('iterator next must return an object'); // step 3\n\t}\n\treturn result; // step 4\n};\n","'use strict';\n\nmodule.exports = function forEach(array, callback) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tcallback(array[i], i, array); // eslint-disable-line callback-return\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ObjectCreate = GetIntrinsic('%Object.create%', true);\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar IsArray = require('./IsArray');\nvar Type = require('./Type');\n\nvar forEach = require('../helpers/forEach');\n\nvar SLOT = require('internal-slot');\n\nvar hasProto = require('has-proto')();\n\n// https://262.ecma-international.org/11.0/#sec-objectcreate\n\nmodule.exports = function OrdinaryObjectCreate(proto) {\n\tif (proto !== null && Type(proto) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `proto` must be null or an object');\n\t}\n\tvar additionalInternalSlotsList = arguments.length < 2 ? [] : arguments[1];\n\tif (!IsArray(additionalInternalSlotsList)) {\n\t\tthrow new $TypeError('Assertion failed: `additionalInternalSlotsList` must be an Array');\n\t}\n\n\t// var internalSlotsList = ['[[Prototype]]', '[[Extensible]]']; // step 1\n\t// internalSlotsList.push(...additionalInternalSlotsList); // step 2\n\t// var O = MakeBasicObject(internalSlotsList); // step 3\n\t// setProto(O, proto); // step 4\n\t// return O; // step 5\n\n\tvar O;\n\tif ($ObjectCreate) {\n\t\tO = $ObjectCreate(proto);\n\t} else if (hasProto) {\n\t\tO = { __proto__: proto };\n\t} else {\n\t\tif (proto === null) {\n\t\t\tthrow new $SyntaxError('native Object.create support is required to create null objects');\n\t\t}\n\t\tvar T = function T() {};\n\t\tT.prototype = proto;\n\t\tO = new T();\n\t}\n\n\tif (additionalInternalSlotsList.length > 0) {\n\t\tforEach(additionalInternalSlotsList, function (slot) {\n\t\t\tSLOT.set(O, slot, void undefined);\n\t\t});\n\t}\n\n\treturn O;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar AsyncFromSyncIteratorContinuation = require('./AsyncFromSyncIteratorContinuation');\nvar Call = require('./Call');\nvar CreateIterResultObject = require('./CreateIterResultObject');\nvar Get = require('./Get');\nvar GetMethod = require('./GetMethod');\nvar IteratorNext = require('./IteratorNext');\nvar OrdinaryObjectCreate = require('./OrdinaryObjectCreate');\nvar Type = require('./Type');\n\nvar SLOT = require('internal-slot');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar $AsyncFromSyncIteratorPrototype = GetIntrinsic('%AsyncFromSyncIteratorPrototype%', true) || {\n\tnext: function next(value) {\n\t\tvar O = this; // step 1\n\n\t\tSLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2\n\n\t\tvar argsLength = arguments.length;\n\n\t\treturn new Promise(function (resolve) { // step 3\n\t\t\tvar syncIteratorRecord = SLOT.get(O, '[[SyncIteratorRecord]]'); // step 4\n\t\t\tvar result;\n\t\t\tif (argsLength > 0) {\n\t\t\t\tresult = IteratorNext(syncIteratorRecord, value); // step 5.a\n\t\t\t} else { // step 6\n\t\t\t\tresult = IteratorNext(syncIteratorRecord);// step 6.a\n\t\t\t}\n\t\t\tresolve(AsyncFromSyncIteratorContinuation(result)); // step 8\n\t\t});\n\t},\n\t'return': function () {\n\t\tvar O = this; // step 1\n\n\t\tSLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2\n\n\t\tvar valueIsPresent = arguments.length > 0;\n\t\tvar value = valueIsPresent ? arguments[0] : void undefined;\n\n\t\treturn new Promise(function (resolve, reject) { // step 3\n\t\t\tvar syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4\n\t\t\tvar iteratorReturn = GetMethod(syncIterator, 'return'); // step 5\n\n\t\t\tif (typeof iteratorReturn === 'undefined') { // step 7\n\t\t\t\tvar iterResult = CreateIterResultObject(value, true); // step 7.a\n\t\t\t\tCall(resolve, undefined, [iterResult]); // step 7.b\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar result;\n\t\t\tif (valueIsPresent) { // step 8\n\t\t\t\tresult = Call(iteratorReturn, syncIterator, [value]); // step 8.a\n\t\t\t} else { // step 9\n\t\t\t\tresult = Call(iteratorReturn, syncIterator); // step 9.a\n\t\t\t}\n\t\t\tif (Type(result) !== 'Object') { // step 11\n\t\t\t\tCall(reject, undefined, [new $TypeError('Iterator `return` method returned a non-object value.')]); // step 11.a\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(AsyncFromSyncIteratorContinuation(result)); // step 12\n\t\t});\n\t},\n\t'throw': function () {\n\t\tvar O = this; // step 1\n\n\t\tSLOT.assert(O, '[[SyncIteratorRecord]]'); // step 2\n\n\t\tvar valueIsPresent = arguments.length > 0;\n\t\tvar value = valueIsPresent ? arguments[0] : void undefined;\n\n\t\treturn new Promise(function (resolve, reject) { // step 3\n\t\t\tvar syncIterator = SLOT.get(O, '[[SyncIteratorRecord]]')['[[Iterator]]']; // step 4\n\n\t\t\tvar throwMethod = GetMethod(syncIterator, 'throw'); // step 5\n\n\t\t\tif (typeof throwMethod === 'undefined') { // step 7\n\t\t\t\tCall(reject, undefined, [value]); // step 7.a\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar result;\n\t\t\tif (valueIsPresent) { // step 8\n\t\t\t\tresult = Call(throwMethod, syncIterator, [value]); // step 8.a\n\t\t\t} else { // step 9\n\t\t\t\tresult = Call(throwMethod, syncIterator); // step 9.a\n\t\t\t}\n\t\t\tif (Type(result) !== 'Object') { // step 11\n\t\t\t\tCall(reject, undefined, [new $TypeError('Iterator `throw` method returned a non-object value.')]); // step 11.a\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(AsyncFromSyncIteratorContinuation(result/* , promiseCapability */)); // step 12\n\t\t});\n\t}\n};\n\n// https://262.ecma-international.org/14.0/#sec-createasyncfromsynciterator\n\nmodule.exports = function CreateAsyncFromSyncIterator(syncIteratorRecord) {\n\tassertRecord(Type, 'Iterator Record', 'syncIteratorRecord', syncIteratorRecord);\n\n\t// var asyncIterator = OrdinaryObjectCreate(%AsyncFromSyncIteratorPrototype%, « [[SyncIteratorRecord]] »); // step 1\n\tvar asyncIterator = OrdinaryObjectCreate($AsyncFromSyncIteratorPrototype);\n\n\tSLOT.set(asyncIterator, '[[SyncIteratorRecord]]', syncIteratorRecord); // step 2\n\n\tvar nextMethod = Get(asyncIterator, 'next'); // step 3\n\n\treturn { // steps 3-4\n\t\t'[[Iterator]]': asyncIterator,\n\t\t'[[NextMethod]]': nextMethod,\n\t\t'[[Done]]': false\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Call = require('./Call');\nvar GetV = require('./GetV');\nvar IsCallable = require('./IsCallable');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/14.0/#sec-getiteratorfrommethod\n\nmodule.exports = function GetIteratorFromMethod(obj, method) {\n\tif (!IsCallable(method)) {\n\t\tthrow new $TypeError('method must be a function');\n\t}\n\n\tvar iterator = Call(method, obj); // step 1\n\tif (Type(iterator) !== 'Object') {\n\t\tthrow new $TypeError('iterator must return an object'); // step 2\n\t}\n\n\tvar nextMethod = GetV(iterator, 'next'); // step 3\n\treturn { // steps 4-5\n\t\t'[[Iterator]]': iterator,\n\t\t'[[NextMethod]]': nextMethod,\n\t\t'[[Done]]': false\n\t};\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols')();\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar isString = require('is-string');\n\nvar $iterator = GetIntrinsic('%Symbol.iterator%', true);\nvar $stringSlice = callBound('String.prototype.slice');\nvar $String = GetIntrinsic('%String%');\n\nmodule.exports = function getIteratorMethod(ES, iterable) {\n\tvar usingIterator;\n\tif (hasSymbols) {\n\t\tusingIterator = ES.GetMethod(iterable, $iterator);\n\t} else if (ES.IsArray(iterable)) {\n\t\tusingIterator = function () {\n\t\t\tvar i = -1;\n\t\t\tvar arr = this; // eslint-disable-line no-invalid-this\n\t\t\treturn {\n\t\t\t\tnext: function () {\n\t\t\t\t\ti += 1;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: i >= arr.length,\n\t\t\t\t\t\tvalue: arr[i]\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t} else if (isString(iterable)) {\n\t\tusingIterator = function () {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function () {\n\t\t\t\t\tvar nextIndex = ES.AdvanceStringIndex($String(iterable), i, true);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t}\n\treturn usingIterator;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $asyncIterator = GetIntrinsic('%Symbol.asyncIterator%', true);\n\nvar inspect = require('object-inspect');\nvar hasSymbols = require('has-symbols')();\n\nvar AdvanceStringIndex = require('./AdvanceStringIndex');\nvar CreateAsyncFromSyncIterator = require('./CreateAsyncFromSyncIterator');\nvar GetIteratorFromMethod = require('./GetIteratorFromMethod');\nvar GetMethod = require('./GetMethod');\nvar IsArray = require('./IsArray');\n\nvar getIteratorMethod = require('../helpers/getIteratorMethod');\n\n// https://262.ecma-international.org/14.0/#sec-getiterator\n\nmodule.exports = function GetIterator(obj, kind) {\n\tif (kind !== 'sync' && kind !== 'async') {\n\t\tthrow new $TypeError(\"Assertion failed: `kind` must be one of 'sync' or 'async', got \" + inspect(kind));\n\t}\n\n\tvar method;\n\tif (kind === 'async') { // step 1\n\t\tif (hasSymbols && $asyncIterator) {\n\t\t\tmethod = GetMethod(obj, $asyncIterator); // step 1.a\n\t\t}\n\t}\n\tif (typeof method === 'undefined') { // step 1.b\n\t\t// var syncMethod = GetMethod(obj, $iterator); // step 1.b.i\n\t\tvar syncMethod = getIteratorMethod(\n\t\t\t{\n\t\t\t\tAdvanceStringIndex: AdvanceStringIndex,\n\t\t\t\tGetMethod: GetMethod,\n\t\t\t\tIsArray: IsArray\n\t\t\t},\n\t\t\tobj\n\t\t);\n\t\tif (kind === 'async') {\n\t\t\tif (typeof syncMethod === 'undefined') {\n\t\t\t\tthrow new $TypeError('iterator method is `undefined`'); // step 1.b.ii\n\t\t\t}\n\t\t\tvar syncIteratorRecord = GetIteratorFromMethod(obj, syncMethod); // step 1.b.iii\n\t\t\treturn CreateAsyncFromSyncIterator(syncIteratorRecord); // step 1.b.iv\n\t\t}\n\t\tmethod = syncMethod; // step 2, kind of\n\t}\n\n\tif (typeof method === 'undefined') {\n\t\tthrow new $TypeError('iterator method is `undefined`'); // step 3\n\t}\n\treturn GetIteratorFromMethod(obj, method); // step 4\n};\n","'use strict';\n\nvar IteratorComplete = require('./IteratorComplete');\nvar IteratorNext = require('./IteratorNext');\nvar Type = require('./Type');\n\nvar assertRecord = require('../helpers/assertRecord');\n\n// https://262.ecma-international.org/14.0/#sec-iteratorstep\n\nmodule.exports = function IteratorStep(iteratorRecord) {\n\tassertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord);\n\n\tvar result = IteratorNext(iteratorRecord); // step 1\n\tvar done = IteratorComplete(result); // step 2\n\treturn done === true ? false : result; // steps 3-4\n};\n\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $arrayPush = callBound('Array.prototype.push');\n\nvar IteratorStep = require('./IteratorStep');\nvar IteratorValue = require('./IteratorValue');\nvar Type = require('./Type');\n\nvar assertRecord = require('../helpers/assertRecord');\n\n// https://262.ecma-international.org/14.0/#sec-iteratortolist\n\nmodule.exports = function IteratorToList(iteratorRecord) {\n\tassertRecord(Type, 'Iterator Record', 'iteratorRecord', iteratorRecord);\n\n\tvar values = []; // step 1\n\tvar next = true; // step 2\n\twhile (next) { // step 3\n\t\tnext = IteratorStep(iteratorRecord); // step 3.a\n\t\tif (next) {\n\t\t\tvar nextValue = IteratorValue(next); // step 3.b.i\n\t\t\t$arrayPush(values, nextValue); // step 3.b.ii\n\t\t}\n\t}\n\treturn values; // step 4\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar originalSetProto = GetIntrinsic('%Object.setPrototypeOf%', true);\n\nvar hasProto = require('has-proto')();\n\nmodule.exports = originalSetProto || (\n\n\thasProto\n\t\t? function (O, proto) {\n\t\t\tO.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign\n\t\t\treturn O;\n\t\t}\n\t\t: null\n);\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar originalGetProto = GetIntrinsic('%Object.getPrototypeOf%', true);\n\nvar hasProto = require('has-proto')();\n\nmodule.exports = originalGetProto || (\n\thasProto\n\t\t? function (O) {\n\t\t\treturn O.__proto__; // eslint-disable-line no-proto\n\t\t}\n\t\t: null\n);\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar $getProto = require('../helpers/getProto');\n\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/7.0/#sec-ordinarygetprototypeof\n\nmodule.exports = function OrdinaryGetPrototypeOf(O) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be an Object');\n\t}\n\tif (!$getProto) {\n\t\tthrow new $TypeError('This environment does not support fetching prototypes.');\n\t}\n\treturn $getProto(O);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar $setProto = require('../helpers/setProto');\n\nvar OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/7.0/#sec-ordinarysetprototypeof\n\nmodule.exports = function OrdinarySetPrototypeOf(O, V) {\n\tif (Type(V) !== 'Object' && Type(V) !== 'Null') {\n\t\tthrow new $TypeError('Assertion failed: V must be Object or Null');\n\t}\n\t/*\n\tvar extensible = IsExtensible(O);\n\tvar current = OrdinaryGetPrototypeOf(O);\n\tif (SameValue(V, current)) {\n\t\treturn true;\n\t}\n\tif (!extensible) {\n\t\treturn false;\n\t}\n\t*/\n\ttry {\n\t\t$setProto(O, V);\n\t} catch (e) {\n\t\treturn false;\n\t}\n\treturn OrdinaryGetPrototypeOf(O) === V;\n\t/*\n\tvar p = V;\n\tvar done = false;\n\twhile (!done) {\n\t\tif (p === null) {\n\t\t\tdone = true;\n\t\t} else if (SameValue(p, O)) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tif (wat) {\n\t\t\t\tdone = true;\n\t\t\t} else {\n\t\t\t\tp = p.[[Prototype]];\n\t\t\t}\n\t\t}\n\t}\n\tO.[[Prototype]] = V;\n\treturn true;\n\t*/\n};\n","'use strict';\n\nvar CreateDataPropertyOrThrow = require('es-abstract/2023/CreateDataPropertyOrThrow');\nvar CreateMethodProperty = require('es-abstract/2023/CreateMethodProperty');\nvar GetIterator = require('es-abstract/2023/GetIterator');\nvar hasPropertyDescriptors = require('has-property-descriptors')();\nvar IteratorToList = require('es-abstract/2023/IteratorToList');\nvar OrdinarySetPrototypeOf = require('es-abstract/2023/OrdinarySetPrototypeOf');\n\nvar $Error = require('es-errors');\n\n// eslint-disable-next-line func-style\nfunction AggregateError(errors, message) {\n\tvar error = new $Error(message);\n\tOrdinarySetPrototypeOf(error, proto); // eslint-disable-line no-use-before-define\n\tdelete error.constructor;\n\n\tvar errorsList = IteratorToList(GetIterator(errors, 'sync'));\n\tCreateDataPropertyOrThrow(error, 'errors', errorsList);\n\n\treturn error;\n}\nif (hasPropertyDescriptors) {\n\tObject.defineProperty(AggregateError, 'prototype', { writable: false });\n}\nvar proto = AggregateError.prototype;\n\nif (\n\t!CreateMethodProperty(proto, 'constructor', AggregateError)\n\t|| !CreateMethodProperty(proto, 'message', '')\n\t|| !CreateMethodProperty(proto, 'name', 'AggregateError')\n) {\n\tthrow new $Error('unable to install AggregateError.prototype properties; please report this!');\n}\n\nOrdinarySetPrototypeOf(AggregateError.prototype, Error.prototype);\n\nmodule.exports = AggregateError;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof AggregateError === 'function' ? AggregateError : implementation;\n};\n","'use strict';\n\nmodule.exports = global;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (typeof global !== 'object' || !global || global.Math !== Math || global.Array !== Array) {\n\t\treturn implementation;\n\t}\n\treturn global;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimGlobal() {\n\tvar polyfill = getPolyfill();\n\tif (define.supportsDescriptors) {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(polyfill, 'globalThis');\n\t\tif (!descriptor || (descriptor.configurable && (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill))) { // eslint-disable-line max-len\n\t\t\tObject.defineProperty(polyfill, 'globalThis', {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: polyfill,\n\t\t\t\twritable: true\n\t\t\t});\n\t\t}\n\t} else if (typeof globalThis !== 'object' || globalThis !== polyfill) {\n\t\tpolyfill.globalThis = polyfill;\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = getPolyfill();\n\nvar getGlobal = function () { return polyfill; };\n\ndefineProperties(getGlobal, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = getGlobal;\n","'use strict';\n\nvar define = require('define-properties');\nvar globalThis = require('globalthis')();\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAggregateError() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tglobalThis,\n\t\t{ AggregateError: polyfill },\n\t\t{\n\t\t\tAggregateError: function testAggregateError() {\n\t\t\t\treturn globalThis.AggregateError !== polyfill;\n\t\t\t}\n\t\t}\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar define = require('define-properties');\nvar setFunctionName = require('set-function-name');\nvar defineDataProperty = require('define-data-property');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = getPolyfill();\nvar bound = setFunctionName(bind.call(polyfill), polyfill.name, true);\n\ndefineDataProperty(bound, 'prototype', polyfill.prototype, true, true, true, true);\n\ndefine(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.connectInParallel = connectInParallel;\nexports.connectInSequence = connectInSequence;\nexports.lookupAllAddresses = lookupAllAddresses;\nvar _net = _interopRequireDefault(require(\"net\"));\nvar punycode = _interopRequireWildcard(require(\"punycode\"));\nvar _abortError = _interopRequireDefault(require(\"./errors/abort-error\"));\nvar _esAggregateError = _interopRequireDefault(require(\"es-aggregate-error\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nasync function connectInParallel(options, lookup, signal) {\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  const addresses = await lookupAllAddresses(options.host, lookup, signal);\n  return await new Promise((resolve, reject) => {\n    const sockets = new Array(addresses.length);\n    const errors = [];\n    function onError(err) {\n      errors.push(err);\n      this.removeListener('error', onError);\n      this.removeListener('connect', onConnect);\n      this.destroy();\n      if (errors.length === addresses.length) {\n        signal.removeEventListener('abort', onAbort);\n        reject(new _esAggregateError.default(errors, 'Could not connect (parallel)'));\n      }\n    }\n    function onConnect() {\n      signal.removeEventListener('abort', onAbort);\n      for (let j = 0; j < sockets.length; j++) {\n        const socket = sockets[j];\n        if (this === socket) {\n          continue;\n        }\n        socket.removeListener('error', onError);\n        socket.removeListener('connect', onConnect);\n        socket.destroy();\n      }\n      resolve(this);\n    }\n    const onAbort = () => {\n      for (let j = 0; j < sockets.length; j++) {\n        const socket = sockets[j];\n        socket.removeListener('error', onError);\n        socket.removeListener('connect', onConnect);\n        socket.destroy();\n      }\n      reject(new _abortError.default());\n    };\n    for (let i = 0, len = addresses.length; i < len; i++) {\n      const socket = sockets[i] = _net.default.connect({\n        ...options,\n        host: addresses[i].address,\n        family: addresses[i].family\n      });\n      socket.on('error', onError);\n      socket.on('connect', onConnect);\n    }\n    signal.addEventListener('abort', onAbort, {\n      once: true\n    });\n  });\n}\nasync function connectInSequence(options, lookup, signal) {\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  const errors = [];\n  const addresses = await lookupAllAddresses(options.host, lookup, signal);\n  for (const address of addresses) {\n    try {\n      return await new Promise((resolve, reject) => {\n        const socket = _net.default.connect({\n          ...options,\n          host: address.address,\n          family: address.family\n        });\n        const onAbort = () => {\n          socket.removeListener('error', onError);\n          socket.removeListener('connect', onConnect);\n          socket.destroy();\n          reject(new _abortError.default());\n        };\n        const onError = err => {\n          signal.removeEventListener('abort', onAbort);\n          socket.removeListener('error', onError);\n          socket.removeListener('connect', onConnect);\n          socket.destroy();\n          reject(err);\n        };\n        const onConnect = () => {\n          signal.removeEventListener('abort', onAbort);\n          socket.removeListener('error', onError);\n          socket.removeListener('connect', onConnect);\n          resolve(socket);\n        };\n        signal.addEventListener('abort', onAbort, {\n          once: true\n        });\n        socket.on('error', onError);\n        socket.on('connect', onConnect);\n      });\n    } catch (err) {\n      if (err instanceof Error && err.name === 'AbortError') {\n        throw err;\n      }\n      errors.push(err);\n      continue;\n    }\n  }\n  throw new _esAggregateError.default(errors, 'Could not connect (sequence)');\n}\n\n/**\n * Look up all addresses for the given hostname.\n */\nasync function lookupAllAddresses(host, lookup, signal) {\n  if (signal.aborted) {\n    throw new _abortError.default();\n  }\n  if (_net.default.isIPv6(host)) {\n    return [{\n      address: host,\n      family: 6\n    }];\n  } else if (_net.default.isIPv4(host)) {\n    return [{\n      address: host,\n      family: 4\n    }];\n  } else {\n    return await new Promise((resolve, reject) => {\n      const onAbort = () => {\n        reject(new _abortError.default());\n      };\n      signal.addEventListener('abort', onAbort);\n      lookup(punycode.toASCII(host), {\n        all: true\n      }, (err, addresses) => {\n        signal.removeEventListener('abort', onAbort);\n        err ? reject(err) : resolve(addresses);\n      });\n    });\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmV0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJwdW55Y29kZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2Fib3J0RXJyb3IiLCJfZXNBZ2dyZWdhdGVFcnJvciIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJjb25uZWN0SW5QYXJhbGxlbCIsIm9wdGlvbnMiLCJsb29rdXAiLCJzaWduYWwiLCJhYm9ydGVkIiwiQWJvcnRFcnJvciIsImFkZHJlc3NlcyIsImxvb2t1cEFsbEFkZHJlc3NlcyIsImhvc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNvY2tldHMiLCJBcnJheSIsImxlbmd0aCIsImVycm9ycyIsIm9uRXJyb3IiLCJlcnIiLCJwdXNoIiwicmVtb3ZlTGlzdGVuZXIiLCJvbkNvbm5lY3QiLCJkZXN0cm95IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uQWJvcnQiLCJBZ2dyZWdhdGVFcnJvciIsImoiLCJzb2NrZXQiLCJpIiwibGVuIiwibmV0IiwiY29ubmVjdCIsImFkZHJlc3MiLCJmYW1pbHkiLCJvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwiY29ubmVjdEluU2VxdWVuY2UiLCJFcnJvciIsIm5hbWUiLCJpc0lQdjYiLCJpc0lQdjQiLCJ0b0FTQ0lJIiwiYWxsIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Nvbm5lY3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgZG5zLCB7IHR5cGUgTG9va3VwQWRkcmVzcyB9IGZyb20gJ2Rucyc7XG5cbmltcG9ydCAqIGFzIHB1bnljb2RlIGZyb20gJ3B1bnljb2RlJztcbmltcG9ydCB7IEFib3J0U2lnbmFsIH0gZnJvbSAnbm9kZS1hYm9ydC1jb250cm9sbGVyJztcbmltcG9ydCBBYm9ydEVycm9yIGZyb20gJy4vZXJyb3JzL2Fib3J0LWVycm9yJztcblxuaW1wb3J0IEFnZ3JlZ2F0ZUVycm9yIGZyb20gJ2VzLWFnZ3JlZ2F0ZS1lcnJvcic7XG5cbnR5cGUgTG9va3VwRnVuY3Rpb24gPSAoaG9zdG5hbWU6IHN0cmluZywgb3B0aW9uczogZG5zLkxvb2t1cEFsbE9wdGlvbnMsIGNhbGxiYWNrOiAoZXJyOiBOb2RlSlMuRXJybm9FeGNlcHRpb24gfCBudWxsLCBhZGRyZXNzZXM6IGRucy5Mb29rdXBBZGRyZXNzW10pID0+IHZvaWQpID0+IHZvaWQ7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0SW5QYXJhbGxlbChvcHRpb25zOiB7IGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCBsb2NhbEFkZHJlc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQgfSwgbG9va3VwOiBMb29rdXBGdW5jdGlvbiwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcigpO1xuICB9XG5cbiAgY29uc3QgYWRkcmVzc2VzID0gYXdhaXQgbG9va3VwQWxsQWRkcmVzc2VzKG9wdGlvbnMuaG9zdCwgbG9va3VwLCBzaWduYWwpO1xuXG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZTxuZXQuU29ja2V0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc29ja2V0cyA9IG5ldyBBcnJheShhZGRyZXNzZXMubGVuZ3RoKTtcblxuICAgIGNvbnN0IGVycm9yczogRXJyb3JbXSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gb25FcnJvcih0aGlzOiBuZXQuU29ja2V0LCBlcnI6IEVycm9yKSB7XG4gICAgICBlcnJvcnMucHVzaChlcnIpO1xuXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gYWRkcmVzc2VzLmxlbmd0aCkge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgICByZWplY3QobmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgJ0NvdWxkIG5vdCBjb25uZWN0IChwYXJhbGxlbCknKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Db25uZWN0KHRoaXM6IG5ldC5Tb2NrZXQpIHtcbiAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNvY2tldHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gc29ja2V0c1tqXTtcblxuICAgICAgICBpZiAodGhpcyA9PT0gc29ja2V0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG4gICAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb25BYm9ydCA9ICgpID0+IHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc29ja2V0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBjb25zdCBzb2NrZXQgPSBzb2NrZXRzW2pdO1xuXG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgc29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcblxuICAgICAgICBzb2NrZXQuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICByZWplY3QobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgfTtcblxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhZGRyZXNzZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHNvY2tldCA9IHNvY2tldHNbaV0gPSBuZXQuY29ubmVjdCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGhvc3Q6IGFkZHJlc3Nlc1tpXS5hZGRyZXNzLFxuICAgICAgICBmYW1pbHk6IGFkZHJlc3Nlc1tpXS5mYW1pbHlcbiAgICAgIH0pO1xuXG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBzb2NrZXQub24oJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuICAgIH1cblxuICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0SW5TZXF1ZW5jZShvcHRpb25zOiB7IGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCBsb2NhbEFkZHJlc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQgfSwgbG9va3VwOiBMb29rdXBGdW5jdGlvbiwgc2lnbmFsOiBBYm9ydFNpZ25hbCkge1xuICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQWJvcnRFcnJvcigpO1xuICB9XG5cbiAgY29uc3QgZXJyb3JzOiBhbnlbXSA9IFtdO1xuICBjb25zdCBhZGRyZXNzZXMgPSBhd2FpdCBsb29rdXBBbGxBZGRyZXNzZXMob3B0aW9ucy5ob3N0LCBsb29rdXAsIHNpZ25hbCk7XG5cbiAgZm9yIChjb25zdCBhZGRyZXNzIG9mIGFkZHJlc3Nlcykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8bmV0LlNvY2tldD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBzb2NrZXQgPSBuZXQuY29ubmVjdCh7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBob3N0OiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgZmFtaWx5OiBhZGRyZXNzLmZhbWlseVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcblxuICAgICAgICAgIHJlamVjdChuZXcgQWJvcnRFcnJvcigpKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcblxuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uQ29ubmVjdCA9ICgpID0+IHtcbiAgICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgICAgcmVzb2x2ZShzb2NrZXQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcblxuICAgICAgICBzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNvY2tldC5vbignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgZXJyb3JzLnB1c2goZXJyKTtcblxuICAgICAgY29udGludWU7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgJ0NvdWxkIG5vdCBjb25uZWN0IChzZXF1ZW5jZSknKTtcbn1cblxuLyoqXG4gKiBMb29rIHVwIGFsbCBhZGRyZXNzZXMgZm9yIHRoZSBnaXZlbiBob3N0bmFtZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvb2t1cEFsbEFkZHJlc3Nlcyhob3N0OiBzdHJpbmcsIGxvb2t1cDogTG9va3VwRnVuY3Rpb24sIHNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPGRucy5Mb29rdXBBZGRyZXNzW10+IHtcbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IEFib3J0RXJyb3IoKTtcbiAgfVxuXG4gIGlmIChuZXQuaXNJUHY2KGhvc3QpKSB7XG4gICAgcmV0dXJuIFt7IGFkZHJlc3M6IGhvc3QsIGZhbWlseTogNiB9XTtcbiAgfSBlbHNlIGlmIChuZXQuaXNJUHY0KGhvc3QpKSB7XG4gICAgcmV0dXJuIFt7IGFkZHJlc3M6IGhvc3QsIGZhbWlseTogNCB9XTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8TG9va3VwQWRkcmVzc1tdPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgICByZWplY3QobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgICB9O1xuXG4gICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgbG9va3VwKHB1bnljb2RlLnRvQVNDSUkoaG9zdCksIHsgYWxsOiB0cnVlIH0sIChlcnIsIGFkZHJlc3NlcykgPT4ge1xuICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcblxuICAgICAgICBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoYWRkcmVzc2VzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsUUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsV0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksaUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUFnRCxTQUFBSyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxH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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.name = void 0;\nconst name = 'Tedious';\nexports.name = name;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuYW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9saWJyYXJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBuYW1lID0gJ1RlZGlvdXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSxJQUFJLEdBQUcsU0FBUztBQUFDQyxPQUFBLENBQUFELElBQUEsR0FBQUEsSUFBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createNTLMRequest = createNTLMRequest;\nconst NTLMFlags = {\n  NTLM_NegotiateUnicode: 0x00000001,\n  NTLM_NegotiateOEM: 0x00000002,\n  NTLM_RequestTarget: 0x00000004,\n  NTLM_Unknown9: 0x00000008,\n  NTLM_NegotiateSign: 0x00000010,\n  NTLM_NegotiateSeal: 0x00000020,\n  NTLM_NegotiateDatagram: 0x00000040,\n  NTLM_NegotiateLanManagerKey: 0x00000080,\n  NTLM_Unknown8: 0x00000100,\n  NTLM_NegotiateNTLM: 0x00000200,\n  NTLM_NegotiateNTOnly: 0x00000400,\n  NTLM_Anonymous: 0x00000800,\n  NTLM_NegotiateOemDomainSupplied: 0x00001000,\n  NTLM_NegotiateOemWorkstationSupplied: 0x00002000,\n  NTLM_Unknown6: 0x00004000,\n  NTLM_NegotiateAlwaysSign: 0x00008000,\n  NTLM_TargetTypeDomain: 0x00010000,\n  NTLM_TargetTypeServer: 0x00020000,\n  NTLM_TargetTypeShare: 0x00040000,\n  NTLM_NegotiateExtendedSecurity: 0x00080000,\n  NTLM_NegotiateIdentify: 0x00100000,\n  NTLM_Unknown5: 0x00200000,\n  NTLM_RequestNonNTSessionKey: 0x00400000,\n  NTLM_NegotiateTargetInfo: 0x00800000,\n  NTLM_Unknown4: 0x01000000,\n  NTLM_NegotiateVersion: 0x02000000,\n  NTLM_Unknown3: 0x04000000,\n  NTLM_Unknown2: 0x08000000,\n  NTLM_Unknown1: 0x10000000,\n  NTLM_Negotiate128: 0x20000000,\n  NTLM_NegotiateKeyExchange: 0x40000000,\n  NTLM_Negotiate56: 0x80000000\n};\nfunction createNTLMRequest(options) {\n  const domain = escape(options.domain.toUpperCase());\n  const workstation = options.workstation ? escape(options.workstation.toUpperCase()) : '';\n  let type1flags = NTLMFlags.NTLM_NegotiateUnicode + NTLMFlags.NTLM_NegotiateOEM + NTLMFlags.NTLM_RequestTarget + NTLMFlags.NTLM_NegotiateNTLM + NTLMFlags.NTLM_NegotiateOemDomainSupplied + NTLMFlags.NTLM_NegotiateOemWorkstationSupplied + NTLMFlags.NTLM_NegotiateAlwaysSign + NTLMFlags.NTLM_NegotiateVersion + NTLMFlags.NTLM_NegotiateExtendedSecurity + NTLMFlags.NTLM_Negotiate128 + NTLMFlags.NTLM_Negotiate56;\n  if (workstation === '') {\n    type1flags -= NTLMFlags.NTLM_NegotiateOemWorkstationSupplied;\n  }\n  const fixedData = Buffer.alloc(40);\n  const buffers = [fixedData];\n  let offset = 0;\n  offset += fixedData.write('NTLMSSP', offset, 7, 'ascii');\n  offset = fixedData.writeUInt8(0, offset);\n  offset = fixedData.writeUInt32LE(1, offset);\n  offset = fixedData.writeUInt32LE(type1flags, offset);\n  offset = fixedData.writeUInt16LE(domain.length, offset);\n  offset = fixedData.writeUInt16LE(domain.length, offset);\n  offset = fixedData.writeUInt32LE(fixedData.length + workstation.length, offset);\n  offset = fixedData.writeUInt16LE(workstation.length, offset);\n  offset = fixedData.writeUInt16LE(workstation.length, offset);\n  offset = fixedData.writeUInt32LE(fixedData.length, offset);\n  offset = fixedData.writeUInt8(5, offset);\n  offset = fixedData.writeUInt8(0, offset);\n  offset = fixedData.writeUInt16LE(2195, offset);\n  offset = fixedData.writeUInt8(0, offset);\n  offset = fixedData.writeUInt8(0, offset);\n  offset = fixedData.writeUInt8(0, offset);\n  fixedData.writeUInt8(15, offset);\n  buffers.push(Buffer.from(workstation, 'ascii'));\n  buffers.push(Buffer.from(domain, 'ascii'));\n  return Buffer.concat(buffers);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOVExNRmxhZ3MiLCJOVExNX05lZ290aWF0ZVVuaWNvZGUiLCJOVExNX05lZ290aWF0ZU9FTSIsIk5UTE1fUmVxdWVzdFRhcmdldCIsIk5UTE1fVW5rbm93bjkiLCJOVExNX05lZ290aWF0ZVNpZ24iLCJOVExNX05lZ290aWF0ZVNlYWwiLCJOVExNX05lZ290aWF0ZURhdGFncmFtIiwiTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5IiwiTlRMTV9Vbmtub3duOCIsIk5UTE1fTmVnb3RpYXRlTlRMTSIsIk5UTE1fTmVnb3RpYXRlTlRPbmx5IiwiTlRMTV9Bbm9ueW1vdXMiLCJOVExNX05lZ290aWF0ZU9lbURvbWFpblN1cHBsaWVkIiwiTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkIiwiTlRMTV9Vbmtub3duNiIsIk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiIsIk5UTE1fVGFyZ2V0VHlwZURvbWFpbiIsIk5UTE1fVGFyZ2V0VHlwZVNlcnZlciIsIk5UTE1fVGFyZ2V0VHlwZVNoYXJlIiwiTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5IiwiTlRMTV9OZWdvdGlhdGVJZGVudGlmeSIsIk5UTE1fVW5rbm93bjUiLCJOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXkiLCJOVExNX05lZ290aWF0ZVRhcmdldEluZm8iLCJOVExNX1Vua25vd240IiwiTlRMTV9OZWdvdGlhdGVWZXJzaW9uIiwiTlRMTV9Vbmtub3duMyIsIk5UTE1fVW5rbm93bjIiLCJOVExNX1Vua25vd24xIiwiTlRMTV9OZWdvdGlhdGUxMjgiLCJOVExNX05lZ290aWF0ZUtleUV4Y2hhbmdlIiwiTlRMTV9OZWdvdGlhdGU1NiIsImNyZWF0ZU5UTE1SZXF1ZXN0Iiwib3B0aW9ucyIsImRvbWFpbiIsImVzY2FwZSIsInRvVXBwZXJDYXNlIiwid29ya3N0YXRpb24iLCJ0eXBlMWZsYWdzIiwiZml4ZWREYXRhIiwiQnVmZmVyIiwiYWxsb2MiLCJidWZmZXJzIiwib2Zmc2V0Iiwid3JpdGUiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDE2TEUiLCJsZW5ndGgiLCJwdXNoIiwiZnJvbSIsImNvbmNhdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE5UTE1GbGFncyA9IHtcbiAgTlRMTV9OZWdvdGlhdGVVbmljb2RlOiAweDAwMDAwMDAxLFxuICBOVExNX05lZ290aWF0ZU9FTTogMHgwMDAwMDAwMixcbiAgTlRMTV9SZXF1ZXN0VGFyZ2V0OiAweDAwMDAwMDA0LFxuICBOVExNX1Vua25vd245OiAweDAwMDAwMDA4LFxuICBOVExNX05lZ290aWF0ZVNpZ246IDB4MDAwMDAwMTAsXG4gIE5UTE1fTmVnb3RpYXRlU2VhbDogMHgwMDAwMDAyMCxcbiAgTlRMTV9OZWdvdGlhdGVEYXRhZ3JhbTogMHgwMDAwMDA0MCxcbiAgTlRMTV9OZWdvdGlhdGVMYW5NYW5hZ2VyS2V5OiAweDAwMDAwMDgwLFxuICBOVExNX1Vua25vd244OiAweDAwMDAwMTAwLFxuICBOVExNX05lZ290aWF0ZU5UTE06IDB4MDAwMDAyMDAsXG4gIE5UTE1fTmVnb3RpYXRlTlRPbmx5OiAweDAwMDAwNDAwLFxuICBOVExNX0Fub255bW91czogMHgwMDAwMDgwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Eb21haW5TdXBwbGllZDogMHgwMDAwMTAwMCxcbiAgTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkOiAweDAwMDAyMDAwLFxuICBOVExNX1Vua25vd242OiAweDAwMDA0MDAwLFxuICBOVExNX05lZ290aWF0ZUFsd2F5c1NpZ246IDB4MDAwMDgwMDAsXG4gIE5UTE1fVGFyZ2V0VHlwZURvbWFpbjogMHgwMDAxMDAwMCxcbiAgTlRMTV9UYXJnZXRUeXBlU2VydmVyOiAweDAwMDIwMDAwLFxuICBOVExNX1RhcmdldFR5cGVTaGFyZTogMHgwMDA0MDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5OiAweDAwMDgwMDAwLFxuICBOVExNX05lZ290aWF0ZUlkZW50aWZ5OiAweDAwMTAwMDAwLFxuICBOVExNX1Vua25vd241OiAweDAwMjAwMDAwLFxuICBOVExNX1JlcXVlc3ROb25OVFNlc3Npb25LZXk6IDB4MDA0MDAwMDAsXG4gIE5UTE1fTmVnb3RpYXRlVGFyZ2V0SW5mbzogMHgwMDgwMDAwMCxcbiAgTlRMTV9Vbmtub3duNDogMHgwMTAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVWZXJzaW9uOiAweDAyMDAwMDAwLFxuICBOVExNX1Vua25vd24zOiAweDA0MDAwMDAwLFxuICBOVExNX1Vua25vd24yOiAweDA4MDAwMDAwLFxuICBOVExNX1Vua25vd24xOiAweDEwMDAwMDAwLFxuICBOVExNX05lZ290aWF0ZTEyODogMHgyMDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGVLZXlFeGNoYW5nZTogMHg0MDAwMDAwMCxcbiAgTlRMTV9OZWdvdGlhdGU1NjogMHg4MDAwMDAwMFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5UTE1SZXF1ZXN0KG9wdGlvbnM6IHsgZG9tYWluOiBzdHJpbmcsIHdvcmtzdGF0aW9uPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgZG9tYWluID0gZXNjYXBlKG9wdGlvbnMuZG9tYWluLnRvVXBwZXJDYXNlKCkpO1xuICBjb25zdCB3b3Jrc3RhdGlvbiA9IG9wdGlvbnMud29ya3N0YXRpb24gPyBlc2NhcGUob3B0aW9ucy53b3Jrc3RhdGlvbi50b1VwcGVyQ2FzZSgpKSA6ICcnO1xuXG4gIGxldCB0eXBlMWZsYWdzID0gTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlVW5pY29kZSArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9FTSArIE5UTE1GbGFncy5OVExNX1JlcXVlc3RUYXJnZXQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVOVExNICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlT2VtRG9tYWluU3VwcGxpZWQgKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVPZW1Xb3Jrc3RhdGlvblN1cHBsaWVkICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlQWx3YXlzU2lnbiArIE5UTE1GbGFncy5OVExNX05lZ290aWF0ZVZlcnNpb24gKyBOVExNRmxhZ3MuTlRMTV9OZWdvdGlhdGVFeHRlbmRlZFNlY3VyaXR5ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlMTI4ICsgTlRMTUZsYWdzLk5UTE1fTmVnb3RpYXRlNTY7XG4gIGlmICh3b3Jrc3RhdGlvbiA9PT0gJycpIHtcbiAgICB0eXBlMWZsYWdzIC09IE5UTE1GbGFncy5OVExNX05lZ290aWF0ZU9lbVdvcmtzdGF0aW9uU3VwcGxpZWQ7XG4gIH1cblxuICBjb25zdCBmaXhlZERhdGEgPSBCdWZmZXIuYWxsb2MoNDApO1xuICBjb25zdCBidWZmZXJzID0gW2ZpeGVkRGF0YV07XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIG9mZnNldCArPSBmaXhlZERhdGEud3JpdGUoJ05UTE1TU1AnLCBvZmZzZXQsIDcsICdhc2NpaScpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50OCgwLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSgxLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRSh0eXBlMWZsYWdzLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MzJMRShmaXhlZERhdGEubGVuZ3RoICsgd29ya3N0YXRpb24ubGVuZ3RoLCBvZmZzZXQpO1xuICBvZmZzZXQgPSBmaXhlZERhdGEud3JpdGVVSW50MTZMRSh3b3Jrc3RhdGlvbi5sZW5ndGgsIG9mZnNldCk7XG4gIG9mZnNldCA9IGZpeGVkRGF0YS53cml0ZVVJbnQxNkxFKHdvcmtzdGF0aW9uLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDMyTEUoZml4ZWREYXRhLmxlbmd0aCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoNSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDE2TEUoMjE5NSwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgb2Zmc2V0ID0gZml4ZWREYXRhLndyaXRlVUludDgoMCwgb2Zmc2V0KTtcbiAgZml4ZWREYXRhLndyaXRlVUludDgoMTUsIG9mZnNldCk7XG5cbiAgYnVmZmVycy5wdXNoKEJ1ZmZlci5mcm9tKHdvcmtzdGF0aW9uLCAnYXNjaWknKSk7XG4gIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShkb21haW4sICdhc2NpaScpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZmZXJzKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsU0FBUyxHQUFHO0VBQ2hCQyxxQkFBcUIsRUFBRSxVQUFVO0VBQ2pDQyxpQkFBaUIsRUFBRSxVQUFVO0VBQzdCQyxrQkFBa0IsRUFBRSxVQUFVO0VBQzlCQyxhQUFhLEVBQUUsVUFBVTtFQUN6QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsa0JBQWtCLEVBQUUsVUFBVTtFQUM5QkMsc0JBQXNCLEVBQUUsVUFBVTtFQUNsQ0MsMkJBQTJCLEVBQUUsVUFBVTtFQUN2Q0MsYUFBYSxFQUFFLFVBQVU7RUFDekJDLGtCQUFrQixFQUFFLFVBQVU7RUFDOUJDLG9CQUFvQixFQUFFLFVBQVU7RUFDaENDLGNBQWMsRUFBRSxVQUFVO0VBQzFCQywrQkFBK0IsRUFBRSxVQUFVO0VBQzNDQyxvQ0FB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.BulkLoadPayload = void 0;\nclass BulkLoadPayload {\n  constructor(bulkLoad) {\n    this.bulkLoad = bulkLoad;\n\n    // We need to grab the iterator here so that `error` event handlers are set up\n    // as early as possible (and are not potentially lost).\n    this.iterator = this.bulkLoad.rowToPacketTransform[Symbol.asyncIterator]();\n  }\n  [Symbol.asyncIterator]() {\n    return this.iterator;\n  }\n  toString(indent = '') {\n    return indent + 'BulkLoad';\n  }\n}\nexports.BulkLoadPayload = BulkLoadPayload;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWxrTG9hZFBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImJ1bGtMb2FkIiwiaXRlcmF0b3IiLCJyb3dUb1BhY2tldFRyYW5zZm9ybSIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZyIsImluZGVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvYnVsay1sb2FkLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1bGtMb2FkIGZyb20gJy4vYnVsay1sb2FkJztcblxuZXhwb3J0IGNsYXNzIEJ1bGtMb2FkUGF5bG9hZCBpbXBsZW1lbnRzIEFzeW5jSXRlcmFibGU8QnVmZmVyPiB7XG4gIGRlY2xhcmUgYnVsa0xvYWQ6IEJ1bGtMb2FkO1xuICBkZWNsYXJlIGl0ZXJhdG9yOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8QnVmZmVyPjtcblxuICBjb25zdHJ1Y3RvcihidWxrTG9hZDogQnVsa0xvYWQpIHtcbiAgICB0aGlzLmJ1bGtMb2FkID0gYnVsa0xvYWQ7XG5cbiAgICAvLyBXZSBuZWVkIHRvIGdyYWIgdGhlIGl0ZXJhdG9yIGhlcmUgc28gdGhhdCBgZXJyb3JgIGV2ZW50IGhhbmRsZXJzIGFyZSBzZXQgdXBcbiAgICAvLyBhcyBlYXJseSBhcyBwb3NzaWJsZSAoYW5kIGFyZSBub3QgcG90ZW50aWFsbHkgbG9zdCkuXG4gICAgdGhpcy5pdGVyYXRvciA9IHRoaXMuYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIHJldHVybiB0aGlzLml0ZXJhdG9yO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgKCdCdWxrTG9hZCcpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVPLE1BQU1BLGVBQWUsQ0FBa0M7RUFJNURDLFdBQVdBLENBQUNDLFFBQWtCLEVBQUU7SUFDOUIsSUFBSSxDQUFDQSxRQUFRLEdBQUdBLFFBQVE7O0lBRXhCO0lBQ0E7SUFDQSxJQUFJLENBQUNDLFFBQVEsR0FBRyxJQUFJLENBQUNELFFBQVEsQ0FBQ0Usb0JBQW9CLENBQUNDLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDLENBQUMsQ0FBQztFQUM1RTtFQUVBLENBQUNELE1BQU0sQ0FBQ0MsYUFBYSxJQUFJO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDSCxRQUFRO0VBQ3RCO0VBRUFJLFFBQVFBLENBQUNDLE1BQU0sR0FBRyxFQUFFLEVBQUU7SUFDcEIsT0FBT0EsTUFBTSxHQUFJLFVBQVc7RUFDOUI7QUFDRjtBQUFDQyxPQUFBLENBQUFULGVBQUEsR0FBQUEsZUFBQSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nconst procedures = {\n  Sp_Cursor: 1,\n  Sp_CursorOpen: 2,\n  Sp_CursorPrepare: 3,\n  Sp_CursorExecute: 4,\n  Sp_CursorPrepExec: 5,\n  Sp_CursorUnprepare: 6,\n  Sp_CursorFetch: 7,\n  Sp_CursorOption: 8,\n  Sp_CursorClose: 9,\n  Sp_ExecuteSql: 10,\n  Sp_Prepare: 11,\n  Sp_Execute: 12,\n  Sp_PrepExec: 13,\n  Sp_PrepExecRpc: 14,\n  Sp_Unprepare: 15\n};\nvar _default = procedures;\nexports.default = _default;\nmodule.exports = procedures;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9jZWR1cmVzIiwiU3BfQ3Vyc29yIiwiU3BfQ3Vyc29yT3BlbiIsIlNwX0N1cnNvclByZXBhcmUiLCJTcF9DdXJzb3JFeGVjdXRlIiwiU3BfQ3Vyc29yUHJlcEV4ZWMiLCJTcF9DdXJzb3JVbnByZXBhcmUiLCJTcF9DdXJzb3JGZXRjaCIsIlNwX0N1cnNvck9wdGlvbiIsIlNwX0N1cnNvckNsb3NlIiwiU3BfRXhlY3V0ZVNxbCIsIlNwX1ByZXBhcmUiLCJTcF9FeGVjdXRlIiwiU3BfUHJlcEV4ZWMiLCJTcF9QcmVwRXhlY1JwYyIsIlNwX1VucHJlcGFyZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvc3BlY2lhbC1zdG9yZWQtcHJvY2VkdXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb2NlZHVyZXMgPSB7XG4gIFNwX0N1cnNvcjogMSxcbiAgU3BfQ3Vyc29yT3BlbjogMixcbiAgU3BfQ3Vyc29yUHJlcGFyZTogMyxcbiAgU3BfQ3Vyc29yRXhlY3V0ZTogNCxcbiAgU3BfQ3Vyc29yUHJlcEV4ZWM6IDUsXG4gIFNwX0N1cnNvclVucHJlcGFyZTogNixcbiAgU3BfQ3Vyc29yRmV0Y2g6IDcsXG4gIFNwX0N1cnNvck9wdGlvbjogOCxcbiAgU3BfQ3Vyc29yQ2xvc2U6IDksXG4gIFNwX0V4ZWN1dGVTcWw6IDEwLFxuICBTcF9QcmVwYXJlOiAxMSxcbiAgU3BfRXhlY3V0ZTogMTIsXG4gIFNwX1ByZXBFeGVjOiAxMyxcbiAgU3BfUHJlcEV4ZWNScGM6IDE0LFxuICBTcF9VbnByZXBhcmU6IDE1XG59O1xuXG5leHBvcnQgZGVmYXVsdCBwcm9jZWR1cmVzO1xubW9kdWxlLmV4cG9ydHMgPSBwcm9jZWR1cmVzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxVQUFVLEdBQUc7RUFDakJDLFNBQVMsRUFBRSxDQUFDO0VBQ1pDLGFBQWEsRUFBRSxDQUFDO0VBQ2hCQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxpQkFBaUIsRUFBRSxDQUFDO0VBQ3BCQyxrQkFBa0IsRUFBRSxDQUFDO0VBQ3JCQyxjQUFjLEVBQUUsQ0FBQztFQUNqQkMsZUFBZSxFQUFFLENBQUM7RUFDbEJDLGNBQWMsRUFBRSxDQUFDO0VBQ2pCQyxhQUFhLEVBQUUsRUFBRTtFQUNqQkMsVUFBVSxFQUFFLEVBQUU7RUFDZEMsVUFBVSxFQUFFLEVBQUU7RUFDZEMsV0FBVyxFQUFFLEVBQUU7RUFDZkMsY0FBYyxFQUFFLEVBQUU7RUFDbEJDLFlBQVksRUFBRTtBQUNoQixDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUVhaEIsVUFBVTtBQUFBaUIsT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUE7QUFDekJHLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHakIsVUFBVSJ9","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UnexpectedTokenError = exports.TokenHandler = exports.RequestTokenHandler = exports.Login7TokenHandler = exports.InitialSqlTokenHandler = exports.AttentionTokenHandler = void 0;\nvar _request = _interopRequireDefault(require(\"../request\"));\nvar _errors = require(\"../errors\");\nvar _esAggregateError = _interopRequireDefault(require(\"es-aggregate-error\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nclass UnexpectedTokenError extends Error {\n  constructor(handler, token) {\n    super('Unexpected token `' + token.name + '` in `' + handler.constructor.name + '`');\n  }\n}\nexports.UnexpectedTokenError = UnexpectedTokenError;\nclass TokenHandler {\n  onInfoMessage(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onErrorMessage(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onSSPI(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onDatabaseChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onLanguageChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onCharsetChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onSqlCollationChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onRoutingChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onPacketSizeChange(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onResetConnection(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onBeginTransaction(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onCommitTransaction(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onRollbackTransaction(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onFedAuthInfo(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onFeatureExtAck(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onLoginAck(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onColMetadata(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onOrder(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onRow(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onReturnStatus(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onReturnValue(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onDoneProc(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onDoneInProc(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onDone(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n  onDatabaseMirroringPartner(token) {\n    throw new UnexpectedTokenError(this, token);\n  }\n}\n\n/**\n * A handler for tokens received in the response message to the initial SQL Batch request\n * that sets up different connection settings.\n */\nexports.TokenHandler = TokenHandler;\nclass InitialSqlTokenHandler extends TokenHandler {\n  constructor(connection) {\n    super();\n    this.connection = connection;\n  }\n  onInfoMessage(token) {\n    this.connection.emit('infoMessage', token);\n  }\n  onErrorMessage(token) {\n    this.connection.emit('errorMessage', token);\n  }\n  onDatabaseChange(token) {\n    this.connection.emit('databaseChange', token.newValue);\n  }\n  onLanguageChange(token) {\n    this.connection.emit('languageChange', token.newValue);\n  }\n  onCharsetChange(token) {\n    this.connection.emit('charsetChange', token.newValue);\n  }\n  onSqlCollationChange(token) {\n    this.connection.databaseCollation = token.newValue;\n  }\n  onPacketSizeChange(token) {\n    this.connection.messageIo.packetSize(token.newValue);\n  }\n  onBeginTransaction(token) {\n    this.connection.transactionDescriptors.push(token.newValue);\n    this.connection.inTransaction = true;\n  }\n  onCommitTransaction(token) {\n    this.connection.transactionDescriptors.length = 1;\n    this.connection.inTransaction = false;\n  }\n  onRollbackTransaction(token) {\n    this.connection.transactionDescriptors.length = 1;\n    // An outermost transaction was rolled back. Reset the transaction counter\n    this.connection.inTransaction = false;\n    this.connection.emit('rollbackTransaction');\n  }\n  onColMetadata(token) {\n    this.connection.emit('error', new Error(\"Received 'columnMetadata' when no sqlRequest is in progress\"));\n    this.connection.close();\n  }\n  onOrder(token) {\n    this.connection.emit('error', new Error(\"Received 'order' when no sqlRequest is in progress\"));\n    this.connection.close();\n  }\n  onRow(token) {\n    this.connection.emit('error', new Error(\"Received 'row' when no sqlRequest is in progress\"));\n    this.connection.close();\n  }\n  onReturnStatus(token) {\n    // Do nothing\n  }\n  onReturnValue(token) {\n    // Do nothing\n  }\n  onDoneProc(token) {\n    // Do nothing\n  }\n  onDoneInProc(token) {\n    // Do nothing\n  }\n  onDone(token) {\n    // Do nothing\n  }\n  onResetConnection(token) {\n    this.connection.emit('resetConnection');\n  }\n}\n\n/**\n * A handler for tokens received in the response message to a Login7 message.\n */\nexports.InitialSqlTokenHandler = InitialSqlTokenHandler;\nclass Login7TokenHandler extends TokenHandler {\n  constructor(connection) {\n    super();\n    this.loginAckReceived = false;\n    this.connection = connection;\n  }\n  onInfoMessage(token) {\n    this.connection.emit('infoMessage', token);\n  }\n  onErrorMessage(token) {\n    this.connection.emit('errorMessage', token);\n    const error = new _errors.ConnectionError(token.message, 'ELOGIN');\n    const isLoginErrorTransient = this.connection.transientErrorLookup.isTransientError(token.number);\n    if (isLoginErrorTransient && this.connection.curTransientRetryCount !== this.connection.config.options.maxRetriesOnTransientErrors) {\n      error.isTransient = true;\n    }\n    this.connection.loginError = error;\n  }\n  onSSPI(token) {\n    if (token.ntlmpacket) {\n      this.connection.ntlmpacket = token.ntlmpacket;\n      this.connection.ntlmpacketBuffer = token.ntlmpacketBuffer;\n    }\n  }\n  onDatabaseChange(token) {\n    this.connection.emit('databaseChange', token.newValue);\n  }\n  onLanguageChange(token) {\n    this.connection.emit('languageChange', token.newValue);\n  }\n  onCharsetChange(token) {\n    this.connection.emit('charsetChange', token.newValue);\n  }\n  onSqlCollationChange(token) {\n    this.connection.databaseCollation = token.newValue;\n  }\n  onFedAuthInfo(token) {\n    this.fedAuthInfoToken = token;\n  }\n  onFeatureExtAck(token) {\n    const {\n      authentication\n    } = this.connection.config;\n    if (authentication.type === 'azure-active-directory-password' || authentication.type === 'azure-active-directory-access-token' || authentication.type === 'azure-active-directory-msi-vm' || authentication.type === 'azure-active-directory-msi-app-service' || authentication.type === 'azure-active-directory-service-principal-secret' || authentication.type === 'azure-active-directory-default') {\n      if (token.fedAuth === undefined) {\n        this.connection.loginError = new _errors.ConnectionError('Did not receive Active Directory authentication acknowledgement');\n      } else if (token.fedAuth.length !== 0) {\n        this.connection.loginError = new _errors.ConnectionError(`Active Directory authentication acknowledgment for ${authentication.type} authentication method includes extra data`);\n      }\n    } else if (token.fedAuth === undefined && token.utf8Support === undefined) {\n      this.connection.loginError = new _errors.ConnectionError('Received acknowledgement for unknown feature');\n    } else if (token.fedAuth) {\n      this.connection.loginError = new _errors.ConnectionError('Did not request Active Directory authentication, but received the acknowledgment');\n    }\n  }\n  onLoginAck(token) {\n    if (!token.tdsVersion) {\n      // unsupported TDS version\n      this.connection.loginError = new _errors.ConnectionError('Server responded with unknown TDS version.', 'ETDS');\n      return;\n    }\n    if (!token.interface) {\n      // unsupported interface\n      this.connection.loginError = new _errors.ConnectionError('Server responded with unsupported interface.', 'EINTERFACENOTSUPP');\n      return;\n    }\n\n    // use negotiated version\n    this.connection.config.options.tdsVersion = token.tdsVersion;\n    this.loginAckReceived = true;\n  }\n  onRoutingChange(token) {\n    // Removes instance name attached to the redirect url. E.g., redirect.db.net\\instance1 --> redirect.db.net\n    const [server] = token.newValue.server.split('\\\\');\n    this.routingData = {\n      server,\n      port: token.newValue.port\n    };\n  }\n  onDoneInProc(token) {\n    // Do nothing\n  }\n  onDone(token) {\n    // Do nothing\n  }\n  onPacketSizeChange(token) {\n    this.connection.messageIo.packetSize(token.newValue);\n  }\n  onDatabaseMirroringPartner(token) {\n    // Do nothing\n  }\n}\n\n/**\n * A handler for tokens received in the response message to a RPC Request,\n * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request.\n */\nexports.Login7TokenHandler = Login7TokenHandler;\nclass RequestTokenHandler extends TokenHandler {\n  constructor(connection, request) {\n    super();\n    this.connection = connection;\n    this.request = request;\n    this.errors = [];\n  }\n  onInfoMessage(token) {\n    this.connection.emit('infoMessage', token);\n  }\n  onErrorMessage(token) {\n    this.connection.emit('errorMessage', token);\n    if (!this.request.canceled) {\n      const error = new _errors.RequestError(token.message, 'EREQUEST');\n      error.number = token.number;\n      error.state = token.state;\n      error.class = token.class;\n      error.serverName = token.serverName;\n      error.procName = token.procName;\n      error.lineNumber = token.lineNumber;\n      this.errors.push(error);\n      this.request.error = error;\n      if (this.request instanceof _request.default && this.errors.length > 1) {\n        this.request.error = new _esAggregateError.default(this.errors);\n      }\n    }\n  }\n  onDatabaseChange(token) {\n    this.connection.emit('databaseChange', token.newValue);\n  }\n  onLanguageChange(token) {\n    this.connection.emit('languageChange', token.newValue);\n  }\n  onCharsetChange(token) {\n    this.connection.emit('charsetChange', token.newValue);\n  }\n  onSqlCollationChange(token) {\n    this.connection.databaseCollation = token.newValue;\n  }\n  onPacketSizeChange(token) {\n    this.connection.messageIo.packetSize(token.newValue);\n  }\n  onBeginTransaction(token) {\n    this.connection.transactionDescriptors.push(token.newValue);\n    this.connection.inTransaction = true;\n  }\n  onCommitTransaction(token) {\n    this.connection.transactionDescriptors.length = 1;\n    this.connection.inTransaction = false;\n  }\n  onRollbackTransaction(token) {\n    this.connection.transactionDescriptors.length = 1;\n    // An outermost transaction was rolled back. Reset the transaction counter\n    this.connection.inTransaction = false;\n    this.connection.emit('rollbackTransaction');\n  }\n  onColMetadata(token) {\n    if (!this.request.canceled) {\n      if (this.connection.config.options.useColumnNames) {\n        const columns = Object.create(null);\n        for (let j = 0, len = token.columns.length; j < len; j++) {\n          const col = token.columns[j];\n          if (columns[col.colName] == null) {\n            columns[col.colName] = col;\n          }\n        }\n        this.request.emit('columnMetadata', columns);\n      } else {\n        this.request.emit('columnMetadata', token.columns);\n      }\n    }\n  }\n  onOrder(token) {\n    if (!this.request.canceled) {\n      this.request.emit('order', token.orderColumns);\n    }\n  }\n  onRow(token) {\n    if (!this.request.canceled) {\n      if (this.connection.config.options.rowCollectionOnRequestCompletion) {\n        this.request.rows.push(token.columns);\n      }\n      if (this.connection.config.options.rowCollectionOnDone) {\n        this.request.rst.push(token.columns);\n      }\n      this.request.emit('row', token.columns);\n    }\n  }\n  onReturnStatus(token) {\n    if (!this.request.canceled) {\n      // Keep value for passing in 'doneProc' event.\n      this.connection.procReturnStatusValue = token.value;\n    }\n  }\n  onReturnValue(token) {\n    if (!this.request.canceled) {\n      this.request.emit('returnValue', token.paramName, token.value, token.metadata);\n    }\n  }\n  onDoneProc(token) {\n    if (!this.request.canceled) {\n      if (token.sqlError && !this.request.error) {\n        // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n        this.request.error = new _errors.RequestError('An unknown error has occurred.', 'UNKNOWN');\n      }\n      this.request.emit('doneProc', token.rowCount, token.more, this.connection.procReturnStatusValue, this.request.rst);\n      this.connection.procReturnStatusValue = undefined;\n      if (token.rowCount !== undefined) {\n        this.request.rowCount += token.rowCount;\n      }\n      if (this.connection.config.options.rowCollectionOnDone) {\n        this.request.rst = [];\n      }\n    }\n  }\n  onDoneInProc(token) {\n    if (!this.request.canceled) {\n      this.request.emit('doneInProc', token.rowCount, token.more, this.request.rst);\n      if (token.rowCount !== undefined) {\n        this.request.rowCount += token.rowCount;\n      }\n      if (this.connection.config.options.rowCollectionOnDone) {\n        this.request.rst = [];\n      }\n    }\n  }\n  onDone(token) {\n    if (!this.request.canceled) {\n      if (token.sqlError && !this.request.error) {\n        // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n        this.request.error = new _errors.RequestError('An unknown error has occurred.', 'UNKNOWN');\n      }\n      this.request.emit('done', token.rowCount, token.more, this.request.rst);\n      if (token.rowCount !== undefined) {\n        this.request.rowCount += token.rowCount;\n      }\n      if (this.connection.config.options.rowCollectionOnDone) {\n        this.request.rst = [];\n      }\n    }\n  }\n  onResetConnection(token) {\n    this.connection.emit('resetConnection');\n  }\n}\n\n/**\n * A handler for the attention acknowledgement message.\n *\n * This message only contains a `DONE` token that acknowledges\n * that the attention message was received by the server.\n */\nexports.RequestTokenHandler = RequestTokenHandler;\nclass AttentionTokenHandler extends TokenHandler {\n  /**\n   * Returns whether an attention acknowledgement was received.\n   */\n\n  constructor(connection, request) {\n    super();\n    this.connection = connection;\n    this.request = request;\n    this.attentionReceived = false;\n  }\n  onDone(token) {\n    if (token.attention) {\n      this.attentionReceived = true;\n    }\n  }\n}\nexports.AttentionTokenHandler = AttentionTokenHandler;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVxdWVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Vycm9ycyIsIl9lc0FnZ3JlZ2F0ZUVycm9yIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJVbmV4cGVjdGVkVG9rZW5FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJoYW5kbGVyIiwidG9rZW4iLCJuYW1lIiwiZXhwb3J0cyIsIlRva2VuSGFuZGxlciIsIm9uSW5mb01lc3NhZ2UiLCJvbkVycm9yTWVzc2FnZSIsIm9uU1NQSSIsIm9uRGF0YWJhc2VDaGFuZ2UiLCJvbkxhbmd1YWdlQ2hhbmdlIiwib25DaGFyc2V0Q2hhbmdlIiwib25TcWxDb2xsYXRpb25DaGFuZ2UiLCJvblJvdXRpbmdDaGFuZ2UiLCJvblBhY2tldFNpemVDaGFuZ2UiLCJvblJlc2V0Q29ubmVjdGlvbiIsIm9uQmVnaW5UcmFuc2FjdGlvbiIsIm9uQ29tbWl0VHJhbnNhY3Rpb24iLCJvblJvbGxiYWNrVHJhbnNhY3Rpb24iLCJvbkZlZEF1dGhJbmZvIiwib25GZWF0dXJlRXh0QWNrIiwib25Mb2dpbkFjayIsIm9uQ29sTWV0YWRhdGEiLCJvbk9yZGVyIiwib25Sb3ciLCJvblJldHVyblN0YXR1cyIsIm9uUmV0dXJuVmFsdWUiLCJvbkRvbmVQcm9jIiwib25Eb25lSW5Qcm9jIiwib25Eb25lIiwib25EYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXIiLCJJbml0aWFsU3FsVG9rZW5IYW5kbGVyIiwiY29ubmVjdGlvbiIsImVtaXQiLCJuZXdWYWx1ZSIsImRhdGFiYXNlQ29sbGF0aW9uIiwibWVzc2FnZUlvIiwicGFja2V0U2l6ZSIsInRyYW5zYWN0aW9uRGVzY3JpcHRvcnMiLCJwdXNoIiwiaW5UcmFuc2FjdGlvbiIsImxlbmd0aCIsImNsb3NlIiwiTG9naW43VG9rZW5IYW5kbGVyIiwibG9naW5BY2tSZWNlaXZlZCIsImVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwibWVzc2FnZSIsImlzTG9naW5FcnJvclRyYW5zaWVudCIsInRyYW5zaWVudEVycm9yTG9va3VwIiwiaXNUcmFuc2llbnRFcnJvciIsIm51bWJlciIsImN1clRyYW5zaWVudFJldHJ5Q291bnQiLCJjb25maWciLCJvcHRpb25zIiwibWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzIiwiaXNUcmFuc2llbnQiLCJsb2dpbkVycm9yIiwibnRsbXBhY2tldCIsIm50bG1wYWNrZXRCdWZmZXIiLCJmZWRBdXRoSW5mb1Rva2VuIiwiYXV0aGVudGljYXRpb24iLCJ0eXBlIiwiZmVkQXV0aCIsInVuZGVmaW5lZCIsInV0ZjhTdXBwb3J0IiwidGRzVmVyc2lvbiIsImludGVyZmFjZSIsInNlcnZlciIsInNwbGl0Iiwicm91dGluZ0RhdGEiLCJwb3J0IiwiUmVxdWVzdFRva2VuSGFuZGxlciIsInJlcXVlc3QiLCJlcnJvcnMiLCJjYW5jZWxlZCIsIlJlcXVlc3RFcnJvciIsInN0YXRlIiwiY2xhc3MiLCJzZXJ2ZXJOYW1lIiwicHJvY05hbWUiLCJsaW5lTnVtYmVyIiwiUmVxdWVzdCIsIkFnZ3JlZ2F0ZUVycm9yIiwidXNlQ29sdW1uTmFtZXMiLCJjb2x1bW5zIiwiT2JqZWN0IiwiY3JlYXRlIiwiaiIsImxlbiIsImNvbCIsImNvbE5hbWUiLCJvcmRlckNvbHVtbnMiLCJyb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbiIsInJvd3MiLCJyb3dDb2xsZWN0aW9uT25Eb25lIiwicnN0IiwicHJvY1JldHVyblN0YXR1c1ZhbHVlIiwidmFsdWUiLCJwYXJhbU5hbWUiLCJtZXRhZGF0YSIsInNxbEVycm9yIiwicm93Q291bnQiLCJtb3JlIiwiQXR0ZW50aW9uVG9rZW5IYW5kbGVyIiwiYXR0ZW50aW9uUmVjZWl2ZWQiLCJhdHRlbnRpb24iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29ubmVjdGlvbiBmcm9tICcuLi9jb25uZWN0aW9uJztcbmltcG9ydCBSZXF1ZXN0IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yLCBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7XG4gIEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgQ2hhcnNldEVudkNoYW5nZVRva2VuLFxuICBDb2xsYXRpb25DaGFuZ2VUb2tlbixcbiAgQ29sTWV0YWRhdGFUb2tlbixcbiAgQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbixcbiAgRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyRW52Q2hhbmdlVG9rZW4sXG4gIERvbmVJblByb2NUb2tlbixcbiAgRG9uZVByb2NUb2tlbixcbiAgRG9uZVRva2VuLFxuICBFcnJvck1lc3NhZ2VUb2tlbixcbiAgRmVhdHVyZUV4dEFja1Rva2VuLFxuICBGZWRBdXRoSW5mb1Rva2VuLFxuICBJbmZvTWVzc2FnZVRva2VuLFxuICBMYW5ndWFnZUVudkNoYW5nZVRva2VuLFxuICBMb2dpbkFja1Rva2VuLFxuICBOQkNSb3dUb2tlbixcbiAgT3JkZXJUb2tlbixcbiAgUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuLFxuICBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgUmV0dXJuU3RhdHVzVG9rZW4sXG4gIFJldHVyblZhbHVlVG9rZW4sXG4gIFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbixcbiAgUm91dGluZ0VudkNoYW5nZVRva2VuLFxuICBSb3dUb2tlbixcbiAgU1NQSVRva2VuLFxuICBUb2tlblxufSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCBCdWxrTG9hZCBmcm9tICcuLi9idWxrLWxvYWQnO1xuXG5pbXBvcnQgQWdncmVnYXRlRXJyb3IgZnJvbSAnZXMtYWdncmVnYXRlLWVycm9yJztcblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRUb2tlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihoYW5kbGVyOiBUb2tlbkhhbmRsZXIsIHRva2VuOiBUb2tlbikge1xuICAgIHN1cGVyKCdVbmV4cGVjdGVkIHRva2VuIGAnICsgdG9rZW4ubmFtZSArICdgIGluIGAnICsgaGFuZGxlci5jb25zdHJ1Y3Rvci5uYW1lICsgJ2AnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVG9rZW5IYW5kbGVyIHtcbiAgb25JbmZvTWVzc2FnZSh0b2tlbjogSW5mb01lc3NhZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25TU1BJKHRva2VuOiBTU1BJVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkxhbmd1YWdlQ2hhbmdlKHRva2VuOiBMYW5ndWFnZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uQ2hhcnNldENoYW5nZSh0b2tlbjogQ2hhcnNldEVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uU3FsQ29sbGF0aW9uQ2hhbmdlKHRva2VuOiBDb2xsYXRpb25DaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJvdXRpbmdDaGFuZ2UodG9rZW46IFJvdXRpbmdFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblBhY2tldFNpemVDaGFuZ2UodG9rZW46IFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJlc2V0Q29ubmVjdGlvbih0b2tlbjogUmVzZXRDb25uZWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25CZWdpblRyYW5zYWN0aW9uKHRva2VuOiBCZWdpblRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Db21taXRUcmFuc2FjdGlvbih0b2tlbjogQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJvbGxiYWNrVHJhbnNhY3Rpb24odG9rZW46IFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbkZlZEF1dGhJbmZvKHRva2VuOiBGZWRBdXRoSW5mb1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uRmVhdHVyZUV4dEFjayh0b2tlbjogRmVhdHVyZUV4dEFja1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uTG9naW5BY2sodG9rZW46IExvZ2luQWNrVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Db2xNZXRhZGF0YSh0b2tlbjogQ29sTWV0YWRhdGFUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvbk9yZGVyKHRva2VuOiBPcmRlclRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uUm93KHRva2VuOiBSb3dUb2tlbiB8IE5CQ1Jvd1Rva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uUmV0dXJuU3RhdHVzKHRva2VuOiBSZXR1cm5TdGF0dXNUb2tlbikge1xuICAgIHRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FcnJvcih0aGlzLCB0b2tlbik7XG4gIH1cblxuICBvblJldHVyblZhbHVlKHRva2VuOiBSZXR1cm5WYWx1ZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxuXG4gIG9uRG9uZVByb2ModG9rZW46IERvbmVQcm9jVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25Eb25lKHRva2VuOiBEb25lVG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXJyb3IodGhpcywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXIodG9rZW46IERhdGFiYXNlTWlycm9yaW5nUGFydG5lckVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkVycm9yKHRoaXMsIHRva2VuKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIHRoZSBpbml0aWFsIFNRTCBCYXRjaCByZXF1ZXN0XG4gKiB0aGF0IHNldHMgdXAgZGlmZmVyZW50IGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbml0aWFsU3FsVG9rZW5IYW5kbGVyIGV4dGVuZHMgVG9rZW5IYW5kbGVyIHtcbiAgZGVjbGFyZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIG9uSW5mb01lc3NhZ2UodG9rZW46IEluZm9NZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnaW5mb01lc3NhZ2UnLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnZXJyb3JNZXNzYWdlJywgdG9rZW4pO1xuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdkYXRhYmFzZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UodG9rZW46IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnbGFuZ3VhZ2VDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkNoYXJzZXRDaGFuZ2UodG9rZW46IENoYXJzZXRFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdjaGFyc2V0Q2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25TcWxDb2xsYXRpb25DaGFuZ2UodG9rZW46IENvbGxhdGlvbkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmRhdGFiYXNlQ29sbGF0aW9uID0gdG9rZW4ubmV3VmFsdWU7XG4gIH1cblxuICBvblBhY2tldFNpemVDaGFuZ2UodG9rZW46IFBhY2tldFNpemVFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5tZXNzYWdlSW8ucGFja2V0U2l6ZSh0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkJlZ2luVHJhbnNhY3Rpb24odG9rZW46IEJlZ2luVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLnB1c2godG9rZW4ubmV3VmFsdWUpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQ29tbWl0VHJhbnNhY3Rpb24odG9rZW46IENvbW1pdFRyYW5zYWN0aW9uRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24udHJhbnNhY3Rpb25EZXNjcmlwdG9ycy5sZW5ndGggPSAxO1xuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBvblJvbGxiYWNrVHJhbnNhY3Rpb24odG9rZW46IFJvbGxiYWNrVHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aCA9IDE7XG4gICAgLy8gQW4gb3V0ZXJtb3N0IHRyYW5zYWN0aW9uIHdhcyByb2xsZWQgYmFjay4gUmVzZXQgdGhlIHRyYW5zYWN0aW9uIGNvdW50ZXJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyb2xsYmFja1RyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBvbkNvbE1ldGFkYXRhKHRva2VuOiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiUmVjZWl2ZWQgJ2NvbHVtbk1ldGFkYXRhJyB3aGVuIG5vIHNxbFJlcXVlc3QgaXMgaW4gcHJvZ3Jlc3NcIikpO1xuICAgIHRoaXMuY29ubmVjdGlvbi5jbG9zZSgpO1xuICB9XG5cbiAgb25PcmRlcih0b2tlbjogT3JkZXJUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcihcIlJlY2VpdmVkICdvcmRlcicgd2hlbiBubyBzcWxSZXF1ZXN0IGlzIGluIHByb2dyZXNzXCIpKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIG9uUm93KHRva2VuOiBSb3dUb2tlbiB8IE5CQ1Jvd1Rva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKFwiUmVjZWl2ZWQgJ3Jvdycgd2hlbiBubyBzcWxSZXF1ZXN0IGlzIGluIHByb2dyZXNzXCIpKTtcbiAgICB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxuXG4gIG9uUmV0dXJuU3RhdHVzKHRva2VuOiBSZXR1cm5TdGF0dXNUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUmV0dXJuVmFsdWUodG9rZW46IFJldHVyblZhbHVlVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmVQcm9jKHRva2VuOiBEb25lUHJvY1Rva2VuKSB7XG4gICAgLy8gRG8gbm90aGluZ1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUmVzZXRDb25uZWN0aW9uKHRva2VuOiBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyZXNldENvbm5lY3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIGEgTG9naW43IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpbjdUb2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG5cbiAgZGVjbGFyZSBmZWRBdXRoSW5mb1Rva2VuOiBGZWRBdXRoSW5mb1Rva2VuIHwgdW5kZWZpbmVkO1xuICBkZWNsYXJlIHJvdXRpbmdEYXRhOiB7IHNlcnZlcjogc3RyaW5nLCBwb3J0OiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcblxuICBkZWNsYXJlIGxvZ2luQWNrUmVjZWl2ZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dpbkFja1JlY2VpdmVkID0gZmFsc2U7XG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIG9uSW5mb01lc3NhZ2UodG9rZW46IEluZm9NZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnaW5mb01lc3NhZ2UnLCB0b2tlbik7XG4gIH1cblxuICBvbkVycm9yTWVzc2FnZSh0b2tlbjogRXJyb3JNZXNzYWdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnZXJyb3JNZXNzYWdlJywgdG9rZW4pO1xuXG4gICAgY29uc3QgZXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKHRva2VuLm1lc3NhZ2UsICdFTE9HSU4nKTtcblxuICAgIGNvbnN0IGlzTG9naW5FcnJvclRyYW5zaWVudCA9IHRoaXMuY29ubmVjdGlvbi50cmFuc2llbnRFcnJvckxvb2t1cC5pc1RyYW5zaWVudEVycm9yKHRva2VuLm51bWJlcik7XG4gICAgaWYgKGlzTG9naW5FcnJvclRyYW5zaWVudCAmJiB0aGlzLmNvbm5lY3Rpb24uY3VyVHJhbnNpZW50UmV0cnlDb3VudCAhPT0gdGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycykge1xuICAgICAgZXJyb3IuaXNUcmFuc2llbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbi5sb2dpbkVycm9yID0gZXJyb3I7XG4gIH1cblxuICBvblNTUEkodG9rZW46IFNTUElUb2tlbikge1xuICAgIGlmICh0b2tlbi5udGxtcGFja2V0KSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubnRsbXBhY2tldCA9IHRva2VuLm50bG1wYWNrZXQ7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubnRsbXBhY2tldEJ1ZmZlciA9IHRva2VuLm50bG1wYWNrZXRCdWZmZXI7XG4gICAgfVxuICB9XG5cbiAgb25EYXRhYmFzZUNoYW5nZSh0b2tlbjogRGF0YWJhc2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdkYXRhYmFzZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uTGFuZ3VhZ2VDaGFuZ2UodG9rZW46IExhbmd1YWdlRW52Q2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZW1pdCgnbGFuZ3VhZ2VDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvbkNoYXJzZXRDaGFuZ2UodG9rZW46IENoYXJzZXRFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdjaGFyc2V0Q2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25TcWxDb2xsYXRpb25DaGFuZ2UodG9rZW46IENvbGxhdGlvbkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmRhdGFiYXNlQ29sbGF0aW9uID0gdG9rZW4ubmV3VmFsdWU7XG4gIH1cblxuICBvbkZlZEF1dGhJbmZvKHRva2VuOiBGZWRBdXRoSW5mb1Rva2VuKSB7XG4gICAgdGhpcy5mZWRBdXRoSW5mb1Rva2VuID0gdG9rZW47XG4gIH1cblxuICBvbkZlYXR1cmVFeHRBY2sodG9rZW46IEZlYXR1cmVFeHRBY2tUb2tlbikge1xuICAgIGNvbnN0IHsgYXV0aGVudGljYXRpb24gfSA9IHRoaXMuY29ubmVjdGlvbi5jb25maWc7XG5cbiAgICBpZiAoYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmQnIHx8IGF1dGhlbnRpY2F0aW9uLnR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbicgfHwgYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLXZtJyB8fCBhdXRoZW50aWNhdGlvbi50eXBlID09PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnIHx8IGF1dGhlbnRpY2F0aW9uLnR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCcgfHwgYXV0aGVudGljYXRpb24udHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdCcpIHtcbiAgICAgIGlmICh0b2tlbi5mZWRBdXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdEaWQgbm90IHJlY2VpdmUgQWN0aXZlIERpcmVjdG9yeSBhdXRoZW50aWNhdGlvbiBhY2tub3dsZWRnZW1lbnQnKTtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW4uZmVkQXV0aC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKGBBY3RpdmUgRGlyZWN0b3J5IGF1dGhlbnRpY2F0aW9uIGFja25vd2xlZGdtZW50IGZvciAke2F1dGhlbnRpY2F0aW9uLnR5cGV9IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpbmNsdWRlcyBleHRyYSBkYXRhYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbi5mZWRBdXRoID09PSB1bmRlZmluZWQgJiYgdG9rZW4udXRmOFN1cHBvcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdSZWNlaXZlZCBhY2tub3dsZWRnZW1lbnQgZm9yIHVua25vd24gZmVhdHVyZScpO1xuICAgIH0gZWxzZSBpZiAodG9rZW4uZmVkQXV0aCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdEaWQgbm90IHJlcXVlc3QgQWN0aXZlIERpcmVjdG9yeSBhdXRoZW50aWNhdGlvbiwgYnV0IHJlY2VpdmVkIHRoZSBhY2tub3dsZWRnbWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9naW5BY2sodG9rZW46IExvZ2luQWNrVG9rZW4pIHtcbiAgICBpZiAoIXRva2VuLnRkc1ZlcnNpb24pIHtcbiAgICAgIC8vIHVuc3VwcG9ydGVkIFREUyB2ZXJzaW9uXG4gICAgICB0aGlzLmNvbm5lY3Rpb24ubG9naW5FcnJvciA9IG5ldyBDb25uZWN0aW9uRXJyb3IoJ1NlcnZlciByZXNwb25kZWQgd2l0aCB1bmtub3duIFREUyB2ZXJzaW9uLicsICdFVERTJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0b2tlbi5pbnRlcmZhY2UpIHtcbiAgICAgIC8vIHVuc3VwcG9ydGVkIGludGVyZmFjZVxuICAgICAgdGhpcy5jb25uZWN0aW9uLmxvZ2luRXJyb3IgPSBuZXcgQ29ubmVjdGlvbkVycm9yKCdTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggdW5zdXBwb3J0ZWQgaW50ZXJmYWNlLicsICdFSU5URVJGQUNFTk9UU1VQUCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVzZSBuZWdvdGlhdGVkIHZlcnNpb25cbiAgICB0aGlzLmNvbm5lY3Rpb24uY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA9IHRva2VuLnRkc1ZlcnNpb247XG5cbiAgICB0aGlzLmxvZ2luQWNrUmVjZWl2ZWQgPSB0cnVlO1xuICB9XG5cbiAgb25Sb3V0aW5nQ2hhbmdlKHRva2VuOiBSb3V0aW5nRW52Q2hhbmdlVG9rZW4pIHtcbiAgICAvLyBSZW1vdmVzIGluc3RhbmNlIG5hbWUgYXR0YWNoZWQgdG8gdGhlIHJlZGlyZWN0IHVybC4gRS5nLiwgcmVkaXJlY3QuZGIubmV0XFxpbnN0YW5jZTEgLS0+IHJlZGlyZWN0LmRiLm5ldFxuICAgIGNvbnN0IFsgc2VydmVyIF0gPSB0b2tlbi5uZXdWYWx1ZS5zZXJ2ZXIuc3BsaXQoJ1xcXFwnKTtcblxuICAgIHRoaXMucm91dGluZ0RhdGEgPSB7XG4gICAgICBzZXJ2ZXIsIHBvcnQ6IHRva2VuLm5ld1ZhbHVlLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgb25Eb25lSW5Qcm9jKHRva2VuOiBEb25lSW5Qcm9jVG9rZW4pIHtcbiAgICAvLyBEbyBub3RoaW5nXG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUGFja2V0U2l6ZUNoYW5nZSh0b2tlbjogUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLm1lc3NhZ2VJby5wYWNrZXRTaXplKHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uRGF0YWJhc2VNaXJyb3JpbmdQYXJ0bmVyKHRva2VuOiBEYXRhYmFzZU1pcnJvcmluZ1BhcnRuZXJFbnZDaGFuZ2VUb2tlbikge1xuICAgIC8vIERvIG5vdGhpbmdcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdG9rZW5zIHJlY2VpdmVkIGluIHRoZSByZXNwb25zZSBtZXNzYWdlIHRvIGEgUlBDIFJlcXVlc3QsXG4gKiBhIFNRTCBCYXRjaCBSZXF1ZXN0LCBhIEJ1bGsgTG9hZCBCQ1AgUmVxdWVzdCBvciBhIFRyYW5zYWN0aW9uIE1hbmFnZXIgUmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlcXVlc3RUb2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGRlY2xhcmUgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkO1xuICBkZWNsYXJlIGVycm9yczogUmVxdWVzdEVycm9yW107XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICB9XG5cbiAgb25JbmZvTWVzc2FnZSh0b2tlbjogSW5mb01lc3NhZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdpbmZvTWVzc2FnZScsIHRva2VuKTtcbiAgfVxuXG4gIG9uRXJyb3JNZXNzYWdlKHRva2VuOiBFcnJvck1lc3NhZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdlcnJvck1lc3NhZ2UnLCB0b2tlbik7XG5cbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgUmVxdWVzdEVycm9yKHRva2VuLm1lc3NhZ2UsICdFUkVRVUVTVCcpO1xuXG4gICAgICBlcnJvci5udW1iZXIgPSB0b2tlbi5udW1iZXI7XG4gICAgICBlcnJvci5zdGF0ZSA9IHRva2VuLnN0YXRlO1xuICAgICAgZXJyb3IuY2xhc3MgPSB0b2tlbi5jbGFzcztcbiAgICAgIGVycm9yLnNlcnZlck5hbWUgPSB0b2tlbi5zZXJ2ZXJOYW1lO1xuICAgICAgZXJyb3IucHJvY05hbWUgPSB0b2tlbi5wcm9jTmFtZTtcbiAgICAgIGVycm9yLmxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyO1xuICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICB0aGlzLnJlcXVlc3QuZXJyb3IgPSBlcnJvcjtcbiAgICAgIGlmICh0aGlzLnJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0ICYmIHRoaXMuZXJyb3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVycm9yID0gbmV3IEFnZ3JlZ2F0ZUVycm9yKHRoaXMuZXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRhdGFiYXNlQ2hhbmdlKHRva2VuOiBEYXRhYmFzZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2RhdGFiYXNlQ2hhbmdlJywgdG9rZW4ubmV3VmFsdWUpO1xuICB9XG5cbiAgb25MYW5ndWFnZUNoYW5nZSh0b2tlbjogTGFuZ3VhZ2VFbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdsYW5ndWFnZUNoYW5nZScsIHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhcnNldENoYW5nZSh0b2tlbjogQ2hhcnNldEVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ2NoYXJzZXRDaGFuZ2UnLCB0b2tlbi5uZXdWYWx1ZSk7XG4gIH1cblxuICBvblNxbENvbGxhdGlvbkNoYW5nZSh0b2tlbjogQ29sbGF0aW9uQ2hhbmdlVG9rZW4pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZGF0YWJhc2VDb2xsYXRpb24gPSB0b2tlbi5uZXdWYWx1ZTtcbiAgfVxuXG4gIG9uUGFja2V0U2l6ZUNoYW5nZSh0b2tlbjogUGFja2V0U2l6ZUVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLm1lc3NhZ2VJby5wYWNrZXRTaXplKHRva2VuLm5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uQmVnaW5UcmFuc2FjdGlvbih0b2tlbjogQmVnaW5UcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMucHVzaCh0b2tlbi5uZXdWYWx1ZSk7XG4gICAgdGhpcy5jb25uZWN0aW9uLmluVHJhbnNhY3Rpb24gPSB0cnVlO1xuICB9XG5cbiAgb25Db21taXRUcmFuc2FjdGlvbih0b2tlbjogQ29tbWl0VHJhbnNhY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aCA9IDE7XG4gICAgdGhpcy5jb25uZWN0aW9uLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG9uUm9sbGJhY2tUcmFuc2FjdGlvbih0b2tlbjogUm9sbGJhY2tUcmFuc2FjdGlvbkVudkNoYW5nZVRva2VuKSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnMubGVuZ3RoID0gMTtcbiAgICAvLyBBbiBvdXRlcm1vc3QgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrLiBSZXNldCB0aGUgdHJhbnNhY3Rpb24gY291bnRlclxuICAgIHRoaXMuY29ubmVjdGlvbi5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jb25uZWN0aW9uLmVtaXQoJ3JvbGxiYWNrVHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIG9uQ29sTWV0YWRhdGEodG9rZW46IENvbE1ldGFkYXRhVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lcykge1xuICAgICAgICBjb25zdCBjb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbk1ldGFkYXRhIH0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwLCBsZW4gPSB0b2tlbi5jb2x1bW5zLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgICAgY29uc3QgY29sID0gdG9rZW4uY29sdW1uc1tqXTtcbiAgICAgICAgICBpZiAoY29sdW1uc1tjb2wuY29sTmFtZV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgY29sdW1uc1tjb2wuY29sTmFtZV0gPSBjb2w7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ2NvbHVtbk1ldGFkYXRhJywgY29sdW1ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlcXVlc3QuZW1pdCgnY29sdW1uTWV0YWRhdGEnLCB0b2tlbi5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbk9yZGVyKHRva2VuOiBPcmRlclRva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdvcmRlcicsIHRva2VuLm9yZGVyQ29sdW1ucyk7XG4gICAgfVxuICB9XG5cbiAgb25Sb3codG9rZW46IFJvd1Rva2VuIHwgTkJDUm93VG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbikge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93cyEucHVzaCh0b2tlbi5jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5jb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25Eb25lKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdC5yc3QhLnB1c2godG9rZW4uY29sdW1ucyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdyb3cnLCB0b2tlbi5jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICBvblJldHVyblN0YXR1cyh0b2tlbjogUmV0dXJuU3RhdHVzVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgLy8gS2VlcCB2YWx1ZSBmb3IgcGFzc2luZyBpbiAnZG9uZVByb2MnIGV2ZW50LlxuICAgICAgdGhpcy5jb25uZWN0aW9uLnByb2NSZXR1cm5TdGF0dXNWYWx1ZSA9IHRva2VuLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG9uUmV0dXJuVmFsdWUodG9rZW46IFJldHVyblZhbHVlVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ3JldHVyblZhbHVlJywgdG9rZW4ucGFyYW1OYW1lLCB0b2tlbi52YWx1ZSwgdG9rZW4ubWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG9uRG9uZVByb2ModG9rZW46IERvbmVQcm9jVG9rZW4pIHtcbiAgICBpZiAoIXRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgaWYgKHRva2VuLnNxbEVycm9yICYmICF0aGlzLnJlcXVlc3QuZXJyb3IpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIERPTkVfRVJST1IgZmxhZ3Mgd2FzIHNldCwgYnV0IGFuIEVSUk9SIHRva2VuIHdhcyBub3Qgc2VudC5cbiAgICAgICAgdGhpcy5yZXF1ZXN0LmVycm9yID0gbmV3IFJlcXVlc3RFcnJvcignQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWQuJywgJ1VOS05PV04nKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXF1ZXN0LmVtaXQoJ2RvbmVQcm9jJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMuY29ubmVjdGlvbi5wcm9jUmV0dXJuU3RhdHVzVmFsdWUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICB0aGlzLmNvbm5lY3Rpb24ucHJvY1JldHVyblN0YXR1c1ZhbHVlID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRG9uZUluUHJvYyh0b2tlbjogRG9uZUluUHJvY1Rva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdkb25lSW5Qcm9jJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRG9uZSh0b2tlbjogRG9uZVRva2VuKSB7XG4gICAgaWYgKCF0aGlzLnJlcXVlc3QuY2FuY2VsZWQpIHtcbiAgICAgIGlmICh0b2tlbi5zcWxFcnJvciAmJiAhdGhpcy5yZXF1ZXN0LmVycm9yKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBET05FX0VSUk9SIGZsYWdzIHdhcyBzZXQsIGJ1dCBhbiBFUlJPUiB0b2tlbiB3YXMgbm90IHNlbnQuXG4gICAgICAgIHRoaXMucmVxdWVzdC5lcnJvciA9IG5ldyBSZXF1ZXN0RXJyb3IoJ0FuIHVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLicsICdVTktOT1dOJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVxdWVzdC5lbWl0KCdkb25lJywgdG9rZW4ucm93Q291bnQsIHRva2VuLm1vcmUsIHRoaXMucmVxdWVzdC5yc3QpO1xuXG4gICAgICBpZiAodG9rZW4ucm93Q291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnJlcXVlc3Qucm93Q291bnQhICs9IHRva2VuLnJvd0NvdW50O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUpIHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnJzdCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUmVzZXRDb25uZWN0aW9uKHRva2VuOiBSZXNldENvbm5lY3Rpb25FbnZDaGFuZ2VUb2tlbikge1xuICAgIHRoaXMuY29ubmVjdGlvbi5lbWl0KCdyZXNldENvbm5lY3Rpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgdGhlIGF0dGVudGlvbiBhY2tub3dsZWRnZW1lbnQgbWVzc2FnZS5cbiAqXG4gKiBUaGlzIG1lc3NhZ2Ugb25seSBjb250YWlucyBhIGBET05FYCB0b2tlbiB0aGF0IGFja25vd2xlZGdlc1xuICogdGhhdCB0aGUgYXR0ZW50aW9uIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkIGJ5IHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRlbnRpb25Ub2tlbkhhbmRsZXIgZXh0ZW5kcyBUb2tlbkhhbmRsZXIge1xuICBkZWNsYXJlIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG4gIGRlY2xhcmUgcmVxdWVzdDogUmVxdWVzdCB8IEJ1bGtMb2FkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYW4gYXR0ZW50aW9uIGFja25vd2xlZGdlbWVudCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICBkZWNsYXJlIGF0dGVudGlvblJlY2VpdmVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24sIHJlcXVlc3Q6IFJlcXVlc3QgfCBCdWxrTG9hZCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3Q7XG5cbiAgICB0aGlzLmF0dGVudGlvblJlY2VpdmVkID0gZmFsc2U7XG4gIH1cblxuICBvbkRvbmUodG9rZW46IERvbmVUb2tlbikge1xuICAgIGlmICh0b2tlbi5hdHRlbnRpb24pIHtcbiAgICAgIHRoaXMuYXR0ZW50aW9uUmVjZWl2ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFpQ0EsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQUksR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV6QyxNQUFNRyxvQkFBb0IsU0FBU0MsS0FBSyxDQUFDO0VBQzlDQyxXQUFXQSxDQUFDQyxPQUFxQixFQUFFQyxLQUFZLEVBQUU7SUFDL0MsS0FBSyxDQUFDLG9CQUFvQixHQUFHQSxLQUFLLENBQUNDLElBQUksR0FBRyxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0QsV0FB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\nvar _os = _interopRequireDefault(require(\"os\"));\nvar tls = _interopRequireWildcard(require(\"tls\"));\nvar net = _interopRequireWildcard(require(\"net\"));\nvar _dns = _interopRequireDefault(require(\"dns\"));\nvar _constants = _interopRequireDefault(require(\"constants\"));\nvar _stream = require(\"stream\");\nvar _identity = require(\"@azure/identity\");\nvar _bulkLoad = _interopRequireDefault(require(\"./bulk-load\"));\nvar _debug = _interopRequireDefault(require(\"./debug\"));\nvar _events = require(\"events\");\nvar _instanceLookup = require(\"./instance-lookup\");\nvar _transientErrorLookup = require(\"./transient-error-lookup\");\nvar _packet = require(\"./packet\");\nvar _preloginPayload = _interopRequireDefault(require(\"./prelogin-payload\"));\nvar _login7Payload = _interopRequireDefault(require(\"./login7-payload\"));\nvar _ntlmPayload = _interopRequireDefault(require(\"./ntlm-payload\"));\nvar _request = _interopRequireDefault(require(\"./request\"));\nvar _rpcrequestPayload = _interopRequireDefault(require(\"./rpcrequest-payload\"));\nvar _sqlbatchPayload = _interopRequireDefault(require(\"./sqlbatch-payload\"));\nvar _messageIo = _interopRequireDefault(require(\"./message-io\"));\nvar _tokenStreamParser = require(\"./token/token-stream-parser\");\nvar _transaction = require(\"./transaction\");\nvar _errors = require(\"./errors\");\nvar _connector = require(\"./connector\");\nvar _library = require(\"./library\");\nvar _tdsVersions = require(\"./tds-versions\");\nvar _message = _interopRequireDefault(require(\"./message\"));\nvar _ntlm = require(\"./ntlm\");\nvar _nodeAbortController = require(\"node-abort-controller\");\nvar _dataType = require(\"./data-type\");\nvar _bulkLoadPayload = require(\"./bulk-load-payload\");\nvar _specialStoredProcedure = _interopRequireDefault(require(\"./special-stored-procedure\"));\nvar _esAggregateError = _interopRequireDefault(require(\"es-aggregate-error\"));\nvar _package = require(\"../package.json\");\nvar _url = require(\"url\");\nvar _handler = require(\"./token/handler\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n/**\n * @private\n */\nconst KEEP_ALIVE_INITIAL_DELAY = 30 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CONNECT_TIMEOUT = 15 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CLIENT_REQUEST_TIMEOUT = 15 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CANCEL_TIMEOUT = 5 * 1000;\n/**\n * @private\n */\nconst DEFAULT_CONNECT_RETRY_INTERVAL = 500;\n/**\n * @private\n */\nconst DEFAULT_PACKET_SIZE = 4 * 1024;\n/**\n * @private\n */\nconst DEFAULT_TEXTSIZE = 2147483647;\n/**\n * @private\n */\nconst DEFAULT_DATEFIRST = 7;\n/**\n * @private\n */\nconst DEFAULT_PORT = 1433;\n/**\n * @private\n */\nconst DEFAULT_TDS_VERSION = '7_4';\n/**\n * @private\n */\nconst DEFAULT_LANGUAGE = 'us_english';\n/**\n * @private\n */\nconst DEFAULT_DATEFORMAT = 'mdy';\n\n/**\n * @private\n */\n\n/**\n * @private\n */\nconst CLEANUP_TYPE = {\n  NORMAL: 0,\n  REDIRECT: 1,\n  RETRY: 2\n};\n/**\n * A [[Connection]] instance represents a single connection to a database server.\n *\n * ```js\n * var Connection = require('tedious').Connection;\n * var config = {\n *  \"authentication\": {\n *    ...,\n *    \"options\": {...}\n *  },\n *  \"options\": {...}\n * };\n * var connection = new Connection(config);\n * ```\n *\n * Only one request at a time may be executed on a connection. Once a [[Request]]\n * has been initiated (with [[Connection.callProcedure]], [[Connection.execSql]],\n * or [[Connection.execSqlBatch]]), another should not be initiated until the\n * [[Request]]'s completion callback is called.\n */\nclass Connection extends _events.EventEmitter {\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n  _cancelAfterRequestSent;\n\n  /**\n   * @private\n   */\n\n  /**\n   * Note: be aware of the different options field:\n   * 1. config.authentication.options\n   * 2. config.options\n   *\n   * ```js\n   * const { Connection } = require('tedious');\n   *\n   * const config = {\n   *  \"authentication\": {\n   *    ...,\n   *    \"options\": {...}\n   *  },\n   *  \"options\": {...}\n   * };\n   *\n   * const connection = new Connection(config);\n   * ```\n   *\n   * @param config\n   */\n  constructor(config) {\n    super();\n    if (typeof config !== 'object' || config === null) {\n      throw new TypeError('The \"config\" argument is required and must be of type Object.');\n    }\n    if (typeof config.server !== 'string') {\n      throw new TypeError('The \"config.server\" property is required and must be of type string.');\n    }\n    this.fedAuthRequired = false;\n    let authentication;\n    if (config.authentication !== undefined) {\n      if (typeof config.authentication !== 'object' || config.authentication === null) {\n        throw new TypeError('The \"config.authentication\" property must be of type Object.');\n      }\n      const type = config.authentication.type;\n      const options = config.authentication.options === undefined ? {} : config.authentication.options;\n      if (typeof type !== 'string') {\n        throw new TypeError('The \"config.authentication.type\" property must be of type string.');\n      }\n      if (type !== 'default' && type !== 'ntlm' && type !== 'azure-active-directory-password' && type !== 'azure-active-directory-access-token' && type !== 'azure-active-directory-msi-vm' && type !== 'azure-active-directory-msi-app-service' && type !== 'azure-active-directory-service-principal-secret' && type !== 'azure-active-directory-default') {\n        throw new TypeError('The \"type\" property must one of \"default\", \"ntlm\", \"azure-active-directory-password\", \"azure-active-directory-access-token\", \"azure-active-directory-default\", \"azure-active-directory-msi-vm\" or \"azure-active-directory-msi-app-service\" or \"azure-active-directory-service-principal-secret\".');\n      }\n      if (typeof options !== 'object' || options === null) {\n        throw new TypeError('The \"config.authentication.options\" property must be of type object.');\n      }\n      if (type === 'ntlm') {\n        if (typeof options.domain !== 'string') {\n          throw new TypeError('The \"config.authentication.options.domain\" property must be of type string.');\n        }\n        if (options.userName !== undefined && typeof options.userName !== 'string') {\n          throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n        }\n        if (options.password !== undefined && typeof options.password !== 'string') {\n          throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n        }\n        authentication = {\n          type: 'ntlm',\n          options: {\n            userName: options.userName,\n            password: options.password,\n            domain: options.domain && options.domain.toUpperCase()\n          }\n        };\n      } else if (type === 'azure-active-directory-password') {\n        if (typeof options.clientId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n        }\n        if (options.userName !== undefined && typeof options.userName !== 'string') {\n          throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n        }\n        if (options.password !== undefined && typeof options.password !== 'string') {\n          throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n        }\n        if (options.tenantId !== undefined && typeof options.tenantId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.tenantId\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-password',\n          options: {\n            userName: options.userName,\n            password: options.password,\n            tenantId: options.tenantId,\n            clientId: options.clientId\n          }\n        };\n      } else if (type === 'azure-active-directory-access-token') {\n        if (typeof options.token !== 'string') {\n          throw new TypeError('The \"config.authentication.options.token\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-access-token',\n          options: {\n            token: options.token\n          }\n        };\n      } else if (type === 'azure-active-directory-msi-vm') {\n        if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-msi-vm',\n          options: {\n            clientId: options.clientId\n          }\n        };\n      } else if (type === 'azure-active-directory-default') {\n        if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-default',\n          options: {\n            clientId: options.clientId\n          }\n        };\n      } else if (type === 'azure-active-directory-msi-app-service') {\n        if (options.clientId !== undefined && typeof options.clientId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-msi-app-service',\n          options: {\n            clientId: options.clientId\n          }\n        };\n      } else if (type === 'azure-active-directory-service-principal-secret') {\n        if (typeof options.clientId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientId\" property must be of type string.');\n        }\n        if (typeof options.clientSecret !== 'string') {\n          throw new TypeError('The \"config.authentication.options.clientSecret\" property must be of type string.');\n        }\n        if (typeof options.tenantId !== 'string') {\n          throw new TypeError('The \"config.authentication.options.tenantId\" property must be of type string.');\n        }\n        authentication = {\n          type: 'azure-active-directory-service-principal-secret',\n          options: {\n            clientId: options.clientId,\n            clientSecret: options.clientSecret,\n            tenantId: options.tenantId\n          }\n        };\n      } else {\n        if (options.userName !== undefined && typeof options.userName !== 'string') {\n          throw new TypeError('The \"config.authentication.options.userName\" property must be of type string.');\n        }\n        if (options.password !== undefined && typeof options.password !== 'string') {\n          throw new TypeError('The \"config.authentication.options.password\" property must be of type string.');\n        }\n        authentication = {\n          type: 'default',\n          options: {\n            userName: options.userName,\n            password: options.password\n          }\n        };\n      }\n    } else {\n      authentication = {\n        type: 'default',\n        options: {\n          userName: undefined,\n          password: undefined\n        }\n      };\n    }\n    this.config = {\n      server: config.server,\n      authentication: authentication,\n      options: {\n        abortTransactionOnError: false,\n        appName: undefined,\n        camelCaseColumns: false,\n        cancelTimeout: DEFAULT_CANCEL_TIMEOUT,\n        columnEncryptionKeyCacheTTL: 2 * 60 * 60 * 1000,\n        // Units: milliseconds\n        columnEncryptionSetting: false,\n        columnNameReplacer: undefined,\n        connectionRetryInterval: DEFAULT_CONNECT_RETRY_INTERVAL,\n        connectTimeout: DEFAULT_CONNECT_TIMEOUT,\n        connector: undefined,\n        connectionIsolationLevel: _transaction.ISOLATION_LEVEL.READ_COMMITTED,\n        cryptoCredentialsDetails: {},\n        database: undefined,\n        datefirst: DEFAULT_DATEFIRST,\n        dateFormat: DEFAULT_DATEFORMAT,\n        debug: {\n          data: false,\n          packet: false,\n          payload: false,\n          token: false\n        },\n        enableAnsiNull: true,\n        enableAnsiNullDefault: true,\n        enableAnsiPadding: true,\n        enableAnsiWarnings: true,\n        enableArithAbort: true,\n        enableConcatNullYieldsNull: true,\n        enableCursorCloseOnCommit: null,\n        enableImplicitTransactions: false,\n        enableNumericRoundabort: false,\n        enableQuotedIdentifier: true,\n        encrypt: true,\n        fallbackToDefaultDb: false,\n        encryptionKeyStoreProviders: undefined,\n        instanceName: undefined,\n        isolationLevel: _transaction.ISOLATION_LEVEL.READ_COMMITTED,\n        language: DEFAULT_LANGUAGE,\n        localAddress: undefined,\n        maxRetriesOnTransientErrors: 3,\n        multiSubnetFailover: false,\n        packetSize: DEFAULT_PACKET_SIZE,\n        port: DEFAULT_PORT,\n        readOnlyIntent: false,\n        requestTimeout: DEFAULT_CLIENT_REQUEST_TIMEOUT,\n        rowCollectionOnDone: false,\n        rowCollectionOnRequestCompletion: false,\n        serverName: undefined,\n        serverSupportsColumnEncryption: false,\n        tdsVersion: DEFAULT_TDS_VERSION,\n        textsize: DEFAULT_TEXTSIZE,\n        trustedServerNameAE: undefined,\n        trustServerCertificate: false,\n        useColumnNames: false,\n        useUTC: true,\n        workstationId: undefined,\n        lowerCaseGuids: false\n      }\n    };\n    if (config.options) {\n      if (config.options.port && config.options.instanceName) {\n        throw new Error('Port and instanceName are mutually exclusive, but ' + config.options.port + ' and ' + config.options.instanceName + ' provided');\n      }\n      if (config.options.abortTransactionOnError !== undefined) {\n        if (typeof config.options.abortTransactionOnError !== 'boolean' && config.options.abortTransactionOnError !== null) {\n          throw new TypeError('The \"config.options.abortTransactionOnError\" property must be of type string or null.');\n        }\n        this.config.options.abortTransactionOnError = config.options.abortTransactionOnError;\n      }\n      if (config.options.appName !== undefined) {\n        if (typeof config.options.appName !== 'string') {\n          throw new TypeError('The \"config.options.appName\" property must be of type string.');\n        }\n        this.config.options.appName = config.options.appName;\n      }\n      if (config.options.camelCaseColumns !== undefined) {\n        if (typeof config.options.camelCaseColumns !== 'boolean') {\n          throw new TypeError('The \"config.options.camelCaseColumns\" property must be of type boolean.');\n        }\n        this.config.options.camelCaseColumns = config.options.camelCaseColumns;\n      }\n      if (config.options.cancelTimeout !== undefined) {\n        if (typeof config.options.cancelTimeout !== 'number') {\n          throw new TypeError('The \"config.options.cancelTimeout\" property must be of type number.');\n        }\n        this.config.options.cancelTimeout = config.options.cancelTimeout;\n      }\n      if (config.options.columnNameReplacer) {\n        if (typeof config.options.columnNameReplacer !== 'function') {\n          throw new TypeError('The \"config.options.cancelTimeout\" property must be of type function.');\n        }\n        this.config.options.columnNameReplacer = config.options.columnNameReplacer;\n      }\n      if (config.options.connectionIsolationLevel !== undefined) {\n        (0, _transaction.assertValidIsolationLevel)(config.options.connectionIsolationLevel, 'config.options.connectionIsolationLevel');\n        this.config.options.connectionIsolationLevel = config.options.connectionIsolationLevel;\n      }\n      if (config.options.connectTimeout !== undefined) {\n        if (typeof config.options.connectTimeout !== 'number') {\n          throw new TypeError('The \"config.options.connectTimeout\" property must be of type number.');\n        }\n        this.config.options.connectTimeout = config.options.connectTimeout;\n      }\n      if (config.options.connector !== undefined) {\n        if (typeof config.options.connector !== 'function') {\n          throw new TypeError('The \"config.options.connector\" property must be a function.');\n        }\n        this.config.options.connector = config.options.connector;\n      }\n      if (config.options.cryptoCredentialsDetails !== undefined) {\n        if (typeof config.options.cryptoCredentialsDetails !== 'object' || config.options.cryptoCredentialsDetails === null) {\n          throw new TypeError('The \"config.options.cryptoCredentialsDetails\" property must be of type Object.');\n        }\n        this.config.options.cryptoCredentialsDetails = config.options.cryptoCredentialsDetails;\n      }\n      if (config.options.database !== undefined) {\n        if (typeof config.options.database !== 'string') {\n          throw new TypeError('The \"config.options.database\" property must be of type string.');\n        }\n        this.config.options.database = config.options.database;\n      }\n      if (config.options.datefirst !== undefined) {\n        if (typeof config.options.datefirst !== 'number' && config.options.datefirst !== null) {\n          throw new TypeError('The \"config.options.datefirst\" property must be of type number.');\n        }\n        if (config.options.datefirst !== null && (config.options.datefirst < 1 || config.options.datefirst > 7)) {\n          throw new RangeError('The \"config.options.datefirst\" property must be >= 1 and <= 7');\n        }\n        this.config.options.datefirst = config.options.datefirst;\n      }\n      if (config.options.dateFormat !== undefined) {\n        if (typeof config.options.dateFormat !== 'string' && config.options.dateFormat !== null) {\n          throw new TypeError('The \"config.options.dateFormat\" property must be of type string or null.');\n        }\n        this.config.options.dateFormat = config.options.dateFormat;\n      }\n      if (config.options.debug) {\n        if (config.options.debug.data !== undefined) {\n          if (typeof config.options.debug.data !== 'boolean') {\n            throw new TypeError('The \"config.options.debug.data\" property must be of type boolean.');\n          }\n          this.config.options.debug.data = config.options.debug.data;\n        }\n        if (config.options.debug.packet !== undefined) {\n          if (typeof config.options.debug.packet !== 'boolean') {\n            throw new TypeError('The \"config.options.debug.packet\" property must be of type boolean.');\n          }\n          this.config.options.debug.packet = config.options.debug.packet;\n        }\n        if (config.options.debug.payload !== undefined) {\n          if (typeof config.options.debug.payload !== 'boolean') {\n            throw new TypeError('The \"config.options.debug.payload\" property must be of type boolean.');\n          }\n          this.config.options.debug.payload = config.options.debug.payload;\n        }\n        if (config.options.debug.token !== undefined) {\n          if (typeof config.options.debug.token !== 'boolean') {\n            throw new TypeError('The \"config.options.debug.token\" property must be of type boolean.');\n          }\n          this.config.options.debug.token = config.options.debug.token;\n        }\n      }\n      if (config.options.enableAnsiNull !== undefined) {\n        if (typeof config.options.enableAnsiNull !== 'boolean' && config.options.enableAnsiNull !== null) {\n          throw new TypeError('The \"config.options.enableAnsiNull\" property must be of type boolean or null.');\n        }\n        this.config.options.enableAnsiNull = config.options.enableAnsiNull;\n      }\n      if (config.options.enableAnsiNullDefault !== undefined) {\n        if (typeof config.options.enableAnsiNullDefault !== 'boolean' && config.options.enableAnsiNullDefault !== null) {\n          throw new TypeError('The \"config.options.enableAnsiNullDefault\" property must be of type boolean or null.');\n        }\n        this.config.options.enableAnsiNullDefault = config.options.enableAnsiNullDefault;\n      }\n      if (config.options.enableAnsiPadding !== undefined) {\n        if (typeof config.options.enableAnsiPadding !== 'boolean' && config.options.enableAnsiPadding !== null) {\n          throw new TypeError('The \"config.options.enableAnsiPadding\" property must be of type boolean or null.');\n        }\n        this.config.options.enableAnsiPadding = config.options.enableAnsiPadding;\n      }\n      if (config.options.enableAnsiWarnings !== undefined) {\n        if (typeof config.options.enableAnsiWarnings !== 'boolean' && config.options.enableAnsiWarnings !== null) {\n          throw new TypeError('The \"config.options.enableAnsiWarnings\" property must be of type boolean or null.');\n        }\n        this.config.options.enableAnsiWarnings = config.options.enableAnsiWarnings;\n      }\n      if (config.options.enableArithAbort !== undefined) {\n        if (typeof config.options.enableArithAbort !== 'boolean' && config.options.enableArithAbort !== null) {\n          throw new TypeError('The \"config.options.enableArithAbort\" property must be of type boolean or null.');\n        }\n        this.config.options.enableArithAbort = config.options.enableArithAbort;\n      }\n      if (config.options.enableConcatNullYieldsNull !== undefined) {\n        if (typeof config.options.enableConcatNullYieldsNull !== 'boolean' && config.options.enableConcatNullYieldsNull !== null) {\n          throw new TypeError('The \"config.options.enableConcatNullYieldsNull\" property must be of type boolean or null.');\n        }\n        this.config.options.enableConcatNullYieldsNull = config.options.enableConcatNullYieldsNull;\n      }\n      if (config.options.enableCursorCloseOnCommit !== undefined) {\n        if (typeof config.options.enableCursorCloseOnCommit !== 'boolean' && config.options.enableCursorCloseOnCommit !== null) {\n          throw new TypeError('The \"config.options.enableCursorCloseOnCommit\" property must be of type boolean or null.');\n        }\n        this.config.options.enableCursorCloseOnCommit = config.options.enableCursorCloseOnCommit;\n      }\n      if (config.options.enableImplicitTransactions !== undefined) {\n        if (typeof config.options.enableImplicitTransactions !== 'boolean' && config.options.enableImplicitTransactions !== null) {\n          throw new TypeError('The \"config.options.enableImplicitTransactions\" property must be of type boolean or null.');\n        }\n        this.config.options.enableImplicitTransactions = config.options.enableImplicitTransactions;\n      }\n      if (config.options.enableNumericRoundabort !== undefined) {\n        if (typeof config.options.enableNumericRoundabort !== 'boolean' && config.options.enableNumericRoundabort !== null) {\n          throw new TypeError('The \"config.options.enableNumericRoundabort\" property must be of type boolean or null.');\n        }\n        this.config.options.enableNumericRoundabort = config.options.enableNumericRoundabort;\n      }\n      if (config.options.enableQuotedIdentifier !== undefined) {\n        if (typeof config.options.enableQuotedIdentifier !== 'boolean' && config.options.enableQuotedIdentifier !== null) {\n          throw new TypeError('The \"config.options.enableQuotedIdentifier\" property must be of type boolean or null.');\n        }\n        this.config.options.enableQuotedIdentifier = config.options.enableQuotedIdentifier;\n      }\n      if (config.options.encrypt !== undefined) {\n        if (typeof config.options.encrypt !== 'boolean') {\n          if (config.options.encrypt !== 'strict') {\n            throw new TypeError('The \"encrypt\" property must be set to \"strict\", or of type boolean.');\n          }\n        }\n        this.config.options.encrypt = config.options.encrypt;\n      }\n      if (config.options.fallbackToDefaultDb !== undefined) {\n        if (typeof config.options.fallbackToDefaultDb !== 'boolean') {\n          throw new TypeError('The \"config.options.fallbackToDefaultDb\" property must be of type boolean.');\n        }\n        this.config.options.fallbackToDefaultDb = config.options.fallbackToDefaultDb;\n      }\n      if (config.options.instanceName !== undefined) {\n        if (typeof config.options.instanceName !== 'string') {\n          throw new TypeError('The \"config.options.instanceName\" property must be of type string.');\n        }\n        this.config.options.instanceName = config.options.instanceName;\n        this.config.options.port = undefined;\n      }\n      if (config.options.isolationLevel !== undefined) {\n        (0, _transaction.assertValidIsolationLevel)(config.options.isolationLevel, 'config.options.isolationLevel');\n        this.config.options.isolationLevel = config.options.isolationLevel;\n      }\n      if (config.options.language !== undefined) {\n        if (typeof config.options.language !== 'string' && config.options.language !== null) {\n          throw new TypeError('The \"config.options.language\" property must be of type string or null.');\n        }\n        this.config.options.language = config.options.language;\n      }\n      if (config.options.localAddress !== undefined) {\n        if (typeof config.options.localAddress !== 'string') {\n          throw new TypeError('The \"config.options.localAddress\" property must be of type string.');\n        }\n        this.config.options.localAddress = config.options.localAddress;\n      }\n      if (config.options.multiSubnetFailover !== undefined) {\n        if (typeof config.options.multiSubnetFailover !== 'boolean') {\n          throw new TypeError('The \"config.options.multiSubnetFailover\" property must be of type boolean.');\n        }\n        this.config.options.multiSubnetFailover = config.options.multiSubnetFailover;\n      }\n      if (config.options.packetSize !== undefined) {\n        if (typeof config.options.packetSize !== 'number') {\n          throw new TypeError('The \"config.options.packetSize\" property must be of type number.');\n        }\n        this.config.options.packetSize = config.options.packetSize;\n      }\n      if (config.options.port !== undefined) {\n        if (typeof config.options.port !== 'number') {\n          throw new TypeError('The \"config.options.port\" property must be of type number.');\n        }\n        if (config.options.port <= 0 || config.options.port >= 65536) {\n          throw new RangeError('The \"config.options.port\" property must be > 0 and < 65536');\n        }\n        this.config.options.port = config.options.port;\n        this.config.options.instanceName = undefined;\n      }\n      if (config.options.readOnlyIntent !== undefined) {\n        if (typeof config.options.readOnlyIntent !== 'boolean') {\n          throw new TypeError('The \"config.options.readOnlyIntent\" property must be of type boolean.');\n        }\n        this.config.options.readOnlyIntent = config.options.readOnlyIntent;\n      }\n      if (config.options.requestTimeout !== undefined) {\n        if (typeof config.options.requestTimeout !== 'number') {\n          throw new TypeError('The \"config.options.requestTimeout\" property must be of type number.');\n        }\n        this.config.options.requestTimeout = config.options.requestTimeout;\n      }\n      if (config.options.maxRetriesOnTransientErrors !== undefined) {\n        if (typeof config.options.maxRetriesOnTransientErrors !== 'number') {\n          throw new TypeError('The \"config.options.maxRetriesOnTransientErrors\" property must be of type number.');\n        }\n        if (config.options.maxRetriesOnTransientErrors < 0) {\n          throw new TypeError('The \"config.options.maxRetriesOnTransientErrors\" property must be equal or greater than 0.');\n        }\n        this.config.options.maxRetriesOnTransientErrors = config.options.maxRetriesOnTransientErrors;\n      }\n      if (config.options.connectionRetryInterval !== undefined) {\n        if (typeof config.options.connectionRetryInterval !== 'number') {\n          throw new TypeError('The \"config.options.connectionRetryInterval\" property must be of type number.');\n        }\n        if (config.options.connectionRetryInterval <= 0) {\n          throw new TypeError('The \"config.options.connectionRetryInterval\" property must be greater than 0.');\n        }\n        this.config.options.connectionRetryInterval = config.options.connectionRetryInterval;\n      }\n      if (config.options.rowCollectionOnDone !== undefined) {\n        if (typeof config.options.rowCollectionOnDone !== 'boolean') {\n          throw new TypeError('The \"config.options.rowCollectionOnDone\" property must be of type boolean.');\n        }\n        this.config.options.rowCollectionOnDone = config.options.rowCollectionOnDone;\n      }\n      if (config.options.rowCollectionOnRequestCompletion !== undefined) {\n        if (typeof config.options.rowCollectionOnRequestCompletion !== 'boolean') {\n          throw new TypeError('The \"config.options.rowCollectionOnRequestCompletion\" property must be of type boolean.');\n        }\n        this.config.options.rowCollectionOnRequestCompletion = config.options.rowCollectionOnRequestCompletion;\n      }\n      if (config.options.tdsVersion !== undefined) {\n        if (typeof config.options.tdsVersion !== 'string') {\n          throw new TypeError('The \"config.options.tdsVersion\" property must be of type string.');\n        }\n        this.config.options.tdsVersion = config.options.tdsVersion;\n      }\n      if (config.options.textsize !== undefined) {\n        if (typeof config.options.textsize !== 'number' && config.options.textsize !== null) {\n          throw new TypeError('The \"config.options.textsize\" property must be of type number or null.');\n        }\n        if (config.options.textsize > 2147483647) {\n          throw new TypeError('The \"config.options.textsize\" can\\'t be greater than 2147483647.');\n        } else if (config.options.textsize < -1) {\n          throw new TypeError('The \"config.options.textsize\" can\\'t be smaller than -1.');\n        }\n        this.config.options.textsize = config.options.textsize | 0;\n      }\n      if (config.options.trustServerCertificate !== undefined) {\n        if (typeof config.options.trustServerCertificate !== 'boolean') {\n          throw new TypeError('The \"config.options.trustServerCertificate\" property must be of type boolean.');\n        }\n        this.config.options.trustServerCertificate = config.options.trustServerCertificate;\n      }\n      if (config.options.serverName !== undefined) {\n        if (typeof config.options.serverName !== 'string') {\n          throw new TypeError('The \"config.options.serverName\" property must be of type string.');\n        }\n        this.config.options.serverName = config.options.serverName;\n      }\n      if (config.options.useColumnNames !== undefined) {\n        if (typeof config.options.useColumnNames !== 'boolean') {\n          throw new TypeError('The \"config.options.useColumnNames\" property must be of type boolean.');\n        }\n        this.config.options.useColumnNames = config.options.useColumnNames;\n      }\n      if (config.options.useUTC !== undefined) {\n        if (typeof config.options.useUTC !== 'boolean') {\n          throw new TypeError('The \"config.options.useUTC\" property must be of type boolean.');\n        }\n        this.config.options.useUTC = config.options.useUTC;\n      }\n      if (config.options.workstationId !== undefined) {\n        if (typeof config.options.workstationId !== 'string') {\n          throw new TypeError('The \"config.options.workstationId\" property must be of type string.');\n        }\n        this.config.options.workstationId = config.options.workstationId;\n      }\n      if (config.options.lowerCaseGuids !== undefined) {\n        if (typeof config.options.lowerCaseGuids !== 'boolean') {\n          throw new TypeError('The \"config.options.lowerCaseGuids\" property must be of type boolean.');\n        }\n        this.config.options.lowerCaseGuids = config.options.lowerCaseGuids;\n      }\n    }\n    this.secureContextOptions = this.config.options.cryptoCredentialsDetails;\n    if (this.secureContextOptions.secureOptions === undefined) {\n      // If the caller has not specified their own `secureOptions`,\n      // we set `SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS` here.\n      // Older SQL Server instances running on older Windows versions have\n      // trouble with the BEAST workaround in OpenSSL.\n      // As BEAST is a browser specific exploit, we can just disable this option here.\n      this.secureContextOptions = Object.create(this.secureContextOptions, {\n        secureOptions: {\n          value: _constants.default.SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS\n        }\n      });\n    }\n    this.debug = this.createDebug();\n    this.inTransaction = false;\n    this.transactionDescriptors = [Buffer.from([0, 0, 0, 0, 0, 0, 0, 0])];\n\n    // 'beginTransaction', 'commitTransaction' and 'rollbackTransaction'\n    // events are utilized to maintain inTransaction property state which in\n    // turn is used in managing transactions. These events are only fired for\n    // TDS version 7.2 and beyond. The properties below are used to emulate\n    // equivalent behavior for TDS versions before 7.2.\n    this.transactionDepth = 0;\n    this.isSqlBatch = false;\n    this.closed = false;\n    this.messageBuffer = Buffer.alloc(0);\n    this.curTransientRetryCount = 0;\n    this.transientErrorLookup = new _transientErrorLookup.TransientErrorLookup();\n    this.state = this.STATE.INITIALIZED;\n    this._cancelAfterRequestSent = () => {\n      this.messageIo.sendMessage(_packet.TYPE.ATTENTION);\n      this.createCancelTimer();\n    };\n  }\n  connect(connectListener) {\n    if (this.state !== this.STATE.INITIALIZED) {\n      throw new _errors.ConnectionError('`.connect` can not be called on a Connection in `' + this.state.name + '` state.');\n    }\n    if (connectListener) {\n      const onConnect = err => {\n        this.removeListener('error', onError);\n        connectListener(err);\n      };\n      const onError = err => {\n        this.removeListener('connect', onConnect);\n        connectListener(err);\n      };\n      this.once('connect', onConnect);\n      this.once('error', onError);\n    }\n    this.transitionTo(this.STATE.CONNECTING);\n  }\n\n  /**\n   * The server has reported that the charset has changed.\n   */\n\n  /**\n   * The attempt to connect and validate has completed.\n   */\n\n  /**\n   * The server has reported that the active database has changed.\n   * This may be as a result of a successful login, or a `use` statement.\n   */\n\n  /**\n   * A debug message is available. It may be logged or ignored.\n   */\n\n  /**\n   * Internal error occurs.\n   */\n\n  /**\n   * The server has issued an error message.\n   */\n\n  /**\n   * The connection has ended.\n   *\n   * This may be as a result of the client calling [[close]], the server\n   * closing the connection, or a network error.\n   */\n\n  /**\n   * The server has issued an information message.\n   */\n\n  /**\n   * The server has reported that the language has changed.\n   */\n\n  /**\n   * The connection was reset.\n   */\n\n  /**\n   * A secure connection has been established.\n   */\n\n  on(event, listener) {\n    return super.on(event, listener);\n  }\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  /**\n   * @private\n   */\n\n  emit(event, ...args) {\n    return super.emit(event, ...args);\n  }\n\n  /**\n   * Closes the connection to the database.\n   *\n   * The [[Event_end]] will be emitted once the connection has been closed.\n   */\n  close() {\n    this.transitionTo(this.STATE.FINAL);\n  }\n\n  /**\n   * @private\n   */\n  initialiseConnection() {\n    const signal = this.createConnectTimer();\n    if (this.config.options.port) {\n      return this.connectOnPort(this.config.options.port, this.config.options.multiSubnetFailover, signal, this.config.options.connector);\n    } else {\n      return (0, _instanceLookup.instanceLookup)({\n        server: this.config.server,\n        instanceName: this.config.options.instanceName,\n        timeout: this.config.options.connectTimeout,\n        signal: signal\n      }).then(port => {\n        process.nextTick(() => {\n          this.connectOnPort(port, this.config.options.multiSubnetFailover, signal, this.config.options.connector);\n        });\n      }, err => {\n        this.clearConnectTimer();\n        if (signal.aborted) {\n          // Ignore the AbortError for now, this is still handled by the connectTimer firing\n          return;\n        }\n        process.nextTick(() => {\n          this.emit('connect', new _errors.ConnectionError(err.message, 'EINSTLOOKUP'));\n        });\n      });\n    }\n  }\n\n  /**\n   * @private\n   */\n  cleanupConnection(cleanupType) {\n    if (!this.closed) {\n      this.clearConnectTimer();\n      this.clearRequestTimer();\n      this.clearRetryTimer();\n      this.closeConnection();\n      if (cleanupType === CLEANUP_TYPE.REDIRECT) {\n        this.emit('rerouting');\n      } else if (cleanupType !== CLEANUP_TYPE.RETRY) {\n        process.nextTick(() => {\n          this.emit('end');\n        });\n      }\n      const request = this.request;\n      if (request) {\n        const err = new _errors.RequestError('Connection closed before request completed.', 'ECLOSE');\n        request.callback(err);\n        this.request = undefined;\n      }\n      this.closed = true;\n      this.loginError = undefined;\n    }\n  }\n\n  /**\n   * @private\n   */\n  createDebug() {\n    const debug = new _debug.default(this.config.options.debug);\n    debug.on('debug', message => {\n      this.emit('debug', message);\n    });\n    return debug;\n  }\n\n  /**\n   * @private\n   */\n  createTokenStreamParser(message, handler) {\n    return new _tokenStreamParser.Parser(message, this.debug, handler, this.config.options);\n  }\n  socketHandlingForSendPreLogin(socket) {\n    socket.on('error', error => {\n      this.socketError(error);\n    });\n    socket.on('close', () => {\n      this.socketClose();\n    });\n    socket.on('end', () => {\n      this.socketEnd();\n    });\n    socket.setKeepAlive(true, KEEP_ALIVE_INITIAL_DELAY);\n    this.messageIo = new _messageIo.default(socket, this.config.options.packetSize, this.debug);\n    this.messageIo.on('secure', cleartext => {\n      this.emit('secure', cleartext);\n    });\n    this.socket = socket;\n    this.closed = false;\n    this.debug.log('connected to ' + this.config.server + ':' + this.config.options.port);\n    this.sendPreLogin();\n    this.transitionTo(this.STATE.SENT_PRELOGIN);\n  }\n  wrapWithTls(socket, signal) {\n    signal.throwIfAborted();\n    return new Promise((resolve, reject) => {\n      const secureContext = tls.createSecureContext(this.secureContextOptions);\n      // If connect to an ip address directly,\n      // need to set the servername to an empty string\n      // if the user has not given a servername explicitly\n      const serverName = !net.isIP(this.config.server) ? this.config.server : '';\n      const encryptOptions = {\n        host: this.config.server,\n        socket: socket,\n        ALPNProtocols: ['tds/8.0'],\n        secureContext: secureContext,\n        servername: this.config.options.serverName ? this.config.options.serverName : serverName\n      };\n      const encryptsocket = tls.connect(encryptOptions);\n      const onAbort = () => {\n        encryptsocket.removeListener('error', onError);\n        encryptsocket.removeListener('connect', onConnect);\n        encryptsocket.destroy();\n        reject(signal.reason);\n      };\n      const onError = err => {\n        signal.removeEventListener('abort', onAbort);\n        encryptsocket.removeListener('error', onError);\n        encryptsocket.removeListener('connect', onConnect);\n        encryptsocket.destroy();\n        reject(err);\n      };\n      const onConnect = () => {\n        signal.removeEventListener('abort', onAbort);\n        encryptsocket.removeListener('error', onError);\n        encryptsocket.removeListener('connect', onConnect);\n        resolve(encryptsocket);\n      };\n      signal.addEventListener('abort', onAbort, {\n        once: true\n      });\n      encryptsocket.on('error', onError);\n      encryptsocket.on('secureConnect', onConnect);\n    });\n  }\n  connectOnPort(port, multiSubnetFailover, signal, customConnector) {\n    const connectOpts = {\n      host: this.routingData ? this.routingData.server : this.config.server,\n      port: this.routingData ? this.routingData.port : port,\n      localAddress: this.config.options.localAddress\n    };\n    const connect = customConnector || (multiSubnetFailover ? _connector.connectInParallel : _connector.connectInSequence);\n    (async () => {\n      let socket = await connect(connectOpts, _dns.default.lookup, signal);\n      if (this.config.options.encrypt === 'strict') {\n        try {\n          // Wrap the socket with TLS for TDS 8.0\n          socket = await this.wrapWithTls(socket, signal);\n        } catch (err) {\n          socket.end();\n          throw err;\n        }\n      }\n      this.socketHandlingForSendPreLogin(socket);\n    })().catch(err => {\n      this.clearConnectTimer();\n      if (signal.aborted) {\n        return;\n      }\n      process.nextTick(() => {\n        this.socketError(err);\n      });\n    });\n  }\n\n  /**\n   * @private\n   */\n  closeConnection() {\n    if (this.socket) {\n      this.socket.destroy();\n    }\n  }\n\n  /**\n   * @private\n   */\n  createConnectTimer() {\n    const controller = new _nodeAbortController.AbortController();\n    this.connectTimer = setTimeout(() => {\n      controller.abort();\n      this.connectTimeout();\n    }, this.config.options.connectTimeout);\n    return controller.signal;\n  }\n\n  /**\n   * @private\n   */\n  createCancelTimer() {\n    this.clearCancelTimer();\n    const timeout = this.config.options.cancelTimeout;\n    if (timeout > 0) {\n      this.cancelTimer = setTimeout(() => {\n        this.cancelTimeout();\n      }, timeout);\n    }\n  }\n\n  /**\n   * @private\n   */\n  createRequestTimer() {\n    this.clearRequestTimer(); // release old timer, just to be safe\n    const request = this.request;\n    const timeout = request.timeout !== undefined ? request.timeout : this.config.options.requestTimeout;\n    if (timeout) {\n      this.requestTimer = setTimeout(() => {\n        this.requestTimeout();\n      }, timeout);\n    }\n  }\n\n  /**\n   * @private\n   */\n  createRetryTimer() {\n    this.clearRetryTimer();\n    this.retryTimer = setTimeout(() => {\n      this.retryTimeout();\n    }, this.config.options.connectionRetryInterval);\n  }\n\n  /**\n   * @private\n   */\n  connectTimeout() {\n    const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\\\${this.config.options.instanceName}`;\n    // If we have routing data stored, this connection has been redirected\n    const server = this.routingData ? this.routingData.server : this.config.server;\n    const port = this.routingData ? `:${this.routingData.port}` : hostPostfix;\n    // Grab the target host from the connection configuration, and from a redirect message\n    // otherwise, leave the message empty.\n    const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : '';\n    const message = `Failed to connect to ${server}${port}${routingMessage} in ${this.config.options.connectTimeout}ms`;\n    this.debug.log(message);\n    this.emit('connect', new _errors.ConnectionError(message, 'ETIMEOUT'));\n    this.connectTimer = undefined;\n    this.dispatchEvent('connectTimeout');\n  }\n\n  /**\n   * @private\n   */\n  cancelTimeout() {\n    const message = `Failed to cancel request in ${this.config.options.cancelTimeout}ms`;\n    this.debug.log(message);\n    this.dispatchEvent('socketError', new _errors.ConnectionError(message, 'ETIMEOUT'));\n  }\n\n  /**\n   * @private\n   */\n  requestTimeout() {\n    this.requestTimer = undefined;\n    const request = this.request;\n    request.cancel();\n    const timeout = request.timeout !== undefined ? request.timeout : this.config.options.requestTimeout;\n    const message = 'Timeout: Request failed to complete in ' + timeout + 'ms';\n    request.error = new _errors.RequestError(message, 'ETIMEOUT');\n  }\n\n  /**\n   * @private\n   */\n  retryTimeout() {\n    this.retryTimer = undefined;\n    this.emit('retry');\n    this.transitionTo(this.STATE.CONNECTING);\n  }\n\n  /**\n   * @private\n   */\n  clearConnectTimer() {\n    if (this.connectTimer) {\n      clearTimeout(this.connectTimer);\n      this.connectTimer = undefined;\n    }\n  }\n\n  /**\n   * @private\n   */\n  clearCancelTimer() {\n    if (this.cancelTimer) {\n      clearTimeout(this.cancelTimer);\n      this.cancelTimer = undefined;\n    }\n  }\n\n  /**\n   * @private\n   */\n  clearRequestTimer() {\n    if (this.requestTimer) {\n      clearTimeout(this.requestTimer);\n      this.requestTimer = undefined;\n    }\n  }\n\n  /**\n   * @private\n   */\n  clearRetryTimer() {\n    if (this.retryTimer) {\n      clearTimeout(this.retryTimer);\n      this.retryTimer = undefined;\n    }\n  }\n\n  /**\n   * @private\n   */\n  transitionTo(newState) {\n    if (this.state === newState) {\n      this.debug.log('State is already ' + newState.name);\n      return;\n    }\n    if (this.state && this.state.exit) {\n      this.state.exit.call(this, newState);\n    }\n    this.debug.log('State change: ' + (this.state ? this.state.name : 'undefined') + ' -> ' + newState.name);\n    this.state = newState;\n    if (this.state.enter) {\n      this.state.enter.apply(this);\n    }\n  }\n\n  /**\n   * @private\n   */\n  getEventHandler(eventName) {\n    const handler = this.state.events[eventName];\n    if (!handler) {\n      throw new Error(`No event '${eventName}' in state '${this.state.name}'`);\n    }\n    return handler;\n  }\n\n  /**\n   * @private\n   */\n  dispatchEvent(eventName, ...args) {\n    const handler = this.state.events[eventName];\n    if (handler) {\n      handler.apply(this, args);\n    } else {\n      this.emit('error', new Error(`No event '${eventName}' in state '${this.state.name}'`));\n      this.close();\n    }\n  }\n\n  /**\n   * @private\n   */\n  socketError(error) {\n    if (this.state === this.STATE.CONNECTING || this.state === this.STATE.SENT_TLSSSLNEGOTIATION) {\n      const hostPostfix = this.config.options.port ? `:${this.config.options.port}` : `\\\\${this.config.options.instanceName}`;\n      // If we have routing data stored, this connection has been redirected\n      const server = this.routingData ? this.routingData.server : this.config.server;\n      const port = this.routingData ? `:${this.routingData.port}` : hostPostfix;\n      // Grab the target host from the connection configuration, and from a redirect message\n      // otherwise, leave the message empty.\n      const routingMessage = this.routingData ? ` (redirected from ${this.config.server}${hostPostfix})` : '';\n      const message = `Failed to connect to ${server}${port}${routingMessage} - ${error.message}`;\n      this.debug.log(message);\n      this.emit('connect', new _errors.ConnectionError(message, 'ESOCKET'));\n    } else {\n      const message = `Connection lost - ${error.message}`;\n      this.debug.log(message);\n      this.emit('error', new _errors.ConnectionError(message, 'ESOCKET'));\n    }\n    this.dispatchEvent('socketError', error);\n  }\n\n  /**\n   * @private\n   */\n  socketEnd() {\n    this.debug.log('socket ended');\n    if (this.state !== this.STATE.FINAL) {\n      const error = new Error('socket hang up');\n      error.code = 'ECONNRESET';\n      this.socketError(error);\n    }\n  }\n\n  /**\n   * @private\n   */\n  socketClose() {\n    this.debug.log('connection to ' + this.config.server + ':' + this.config.options.port + ' closed');\n    if (this.state === this.STATE.REROUTING) {\n      this.debug.log('Rerouting to ' + this.routingData.server + ':' + this.routingData.port);\n      this.dispatchEvent('reconnect');\n    } else if (this.state === this.STATE.TRANSIENT_FAILURE_RETRY) {\n      const server = this.routingData ? this.routingData.server : this.config.server;\n      const port = this.routingData ? this.routingData.port : this.config.options.port;\n      this.debug.log('Retry after transient failure connecting to ' + server + ':' + port);\n      this.dispatchEvent('retry');\n    } else {\n      this.transitionTo(this.STATE.FINAL);\n    }\n  }\n\n  /**\n   * @private\n   */\n  sendPreLogin() {\n    const [, major, minor, build] = /^(\\d+)\\.(\\d+)\\.(\\d+)/.exec(_package.version) ?? ['0.0.0', '0', '0', '0'];\n    const payload = new _preloginPayload.default({\n      // If encrypt setting is set to 'strict', then we should have already done the encryption before calling\n      // this function. Therefore, the encrypt will be set to false here.\n      // Otherwise, we will set encrypt here based on the encrypt Boolean value from the configuration.\n      encrypt: typeof this.config.options.encrypt === 'boolean' && this.config.options.encrypt,\n      version: {\n        major: Number(major),\n        minor: Number(minor),\n        build: Number(build),\n        subbuild: 0\n      }\n    });\n    this.messageIo.sendMessage(_packet.TYPE.PRELOGIN, payload.data);\n    this.debug.payload(function () {\n      return payload.toString('  ');\n    });\n  }\n\n  /**\n   * @private\n   */\n  sendLogin7Packet() {\n    const payload = new _login7Payload.default({\n      tdsVersion: _tdsVersions.versions[this.config.options.tdsVersion],\n      packetSize: this.config.options.packetSize,\n      clientProgVer: 0,\n      clientPid: process.pid,\n      connectionId: 0,\n      clientTimeZone: new Date().getTimezoneOffset(),\n      clientLcid: 0x00000409\n    });\n    const {\n      authentication\n    } = this.config;\n    switch (authentication.type) {\n      case 'azure-active-directory-password':\n        payload.fedAuth = {\n          type: 'ADAL',\n          echo: this.fedAuthRequired,\n          workflow: 'default'\n        };\n        break;\n      case 'azure-active-directory-access-token':\n        payload.fedAuth = {\n          type: 'SECURITYTOKEN',\n          echo: this.fedAuthRequired,\n          fedAuthToken: authentication.options.token\n        };\n        break;\n      case 'azure-active-directory-msi-vm':\n      case 'azure-active-directory-default':\n      case 'azure-active-directory-msi-app-service':\n      case 'azure-active-directory-service-principal-secret':\n        payload.fedAuth = {\n          type: 'ADAL',\n          echo: this.fedAuthRequired,\n          workflow: 'integrated'\n        };\n        break;\n      case 'ntlm':\n        payload.sspi = (0, _ntlm.createNTLMRequest)({\n          domain: authentication.options.domain\n        });\n        break;\n      default:\n        payload.userName = authentication.options.userName;\n        payload.password = authentication.options.password;\n    }\n    payload.hostname = this.config.options.workstationId || _os.default.hostname();\n    payload.serverName = this.routingData ? this.routingData.server : this.config.server;\n    payload.appName = this.config.options.appName || 'Tedious';\n    payload.libraryName = _library.name;\n    payload.language = this.config.options.language;\n    payload.database = this.config.options.database;\n    payload.clientId = Buffer.from([1, 2, 3, 4, 5, 6]);\n    payload.readOnlyIntent = this.config.options.readOnlyIntent;\n    payload.initDbFatal = !this.config.options.fallbackToDefaultDb;\n    this.routingData = undefined;\n    this.messageIo.sendMessage(_packet.TYPE.LOGIN7, payload.toBuffer());\n    this.debug.payload(function () {\n      return payload.toString('  ');\n    });\n  }\n\n  /**\n   * @private\n   */\n  sendFedAuthTokenMessage(token) {\n    const accessTokenLen = Buffer.byteLength(token, 'ucs2');\n    const data = Buffer.alloc(8 + accessTokenLen);\n    let offset = 0;\n    offset = data.writeUInt32LE(accessTokenLen + 4, offset);\n    offset = data.writeUInt32LE(accessTokenLen, offset);\n    data.write(token, offset, 'ucs2');\n    this.messageIo.sendMessage(_packet.TYPE.FEDAUTH_TOKEN, data);\n    // sent the fedAuth token message, the rest is similar to standard login 7\n    this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN);\n  }\n\n  /**\n   * @private\n   */\n  sendInitialSql() {\n    const payload = new _sqlbatchPayload.default(this.getInitialSql(), this.currentTransactionDescriptor(), this.config.options);\n    const message = new _message.default({\n      type: _packet.TYPE.SQL_BATCH\n    });\n    this.messageIo.outgoingMessageStream.write(message);\n    _stream.Readable.from(payload).pipe(message);\n  }\n\n  /**\n   * @private\n   */\n  getInitialSql() {\n    const options = [];\n    if (this.config.options.enableAnsiNull === true) {\n      options.push('set ansi_nulls on');\n    } else if (this.config.options.enableAnsiNull === false) {\n      options.push('set ansi_nulls off');\n    }\n    if (this.config.options.enableAnsiNullDefault === true) {\n      options.push('set ansi_null_dflt_on on');\n    } else if (this.config.options.enableAnsiNullDefault === false) {\n      options.push('set ansi_null_dflt_on off');\n    }\n    if (this.config.options.enableAnsiPadding === true) {\n      options.push('set ansi_padding on');\n    } else if (this.config.options.enableAnsiPadding === false) {\n      options.push('set ansi_padding off');\n    }\n    if (this.config.options.enableAnsiWarnings === true) {\n      options.push('set ansi_warnings on');\n    } else if (this.config.options.enableAnsiWarnings === false) {\n      options.push('set ansi_warnings off');\n    }\n    if (this.config.options.enableArithAbort === true) {\n      options.push('set arithabort on');\n    } else if (this.config.options.enableArithAbort === false) {\n      options.push('set arithabort off');\n    }\n    if (this.config.options.enableConcatNullYieldsNull === true) {\n      options.push('set concat_null_yields_null on');\n    } else if (this.config.options.enableConcatNullYieldsNull === false) {\n      options.push('set concat_null_yields_null off');\n    }\n    if (this.config.options.enableCursorCloseOnCommit === true) {\n      options.push('set cursor_close_on_commit on');\n    } else if (this.config.options.enableCursorCloseOnCommit === false) {\n      options.push('set cursor_close_on_commit off');\n    }\n    if (this.config.options.datefirst !== null) {\n      options.push(`set datefirst ${this.config.options.datefirst}`);\n    }\n    if (this.config.options.dateFormat !== null) {\n      options.push(`set dateformat ${this.config.options.dateFormat}`);\n    }\n    if (this.config.options.enableImplicitTransactions === true) {\n      options.push('set implicit_transactions on');\n    } else if (this.config.options.enableImplicitTransactions === false) {\n      options.push('set implicit_transactions off');\n    }\n    if (this.config.options.language !== null) {\n      options.push(`set language ${this.config.options.language}`);\n    }\n    if (this.config.options.enableNumericRoundabort === true) {\n      options.push('set numeric_roundabort on');\n    } else if (this.config.options.enableNumericRoundabort === false) {\n      options.push('set numeric_roundabort off');\n    }\n    if (this.config.options.enableQuotedIdentifier === true) {\n      options.push('set quoted_identifier on');\n    } else if (this.config.options.enableQuotedIdentifier === false) {\n      options.push('set quoted_identifier off');\n    }\n    if (this.config.options.textsize !== null) {\n      options.push(`set textsize ${this.config.options.textsize}`);\n    }\n    if (this.config.options.connectionIsolationLevel !== null) {\n      options.push(`set transaction isolation level ${this.getIsolationLevelText(this.config.options.connectionIsolationLevel)}`);\n    }\n    if (this.config.options.abortTransactionOnError === true) {\n      options.push('set xact_abort on');\n    } else if (this.config.options.abortTransactionOnError === false) {\n      options.push('set xact_abort off');\n    }\n    return options.join('\\n');\n  }\n\n  /**\n   * @private\n   */\n  processedInitialSql() {\n    this.clearConnectTimer();\n    this.emit('connect');\n  }\n\n  /**\n   * Execute the SQL batch represented by [[Request]].\n   * There is no param support, and unlike [[Request.execSql]],\n   * it is not likely that SQL Server will reuse the execution plan it generates for the SQL.\n   *\n   * In almost all cases, [[Request.execSql]] will be a better choice.\n   *\n   * @param request A [[Request]] object representing the request.\n   */\n  execSqlBatch(request) {\n    this.makeRequest(request, _packet.TYPE.SQL_BATCH, new _sqlbatchPayload.default(request.sqlTextOrProcedure, this.currentTransactionDescriptor(), this.config.options));\n  }\n\n  /**\n   *  Execute the SQL represented by [[Request]].\n   *\n   * As `sp_executesql` is used to execute the SQL, if the same SQL is executed multiples times\n   * using this function, the SQL Server query optimizer is likely to reuse the execution plan it generates\n   * for the first execution. This may also result in SQL server treating the request like a stored procedure\n   * which can result in the [[Event_doneInProc]] or [[Event_doneProc]] events being emitted instead of the\n   * [[Event_done]] event you might expect. Using [[execSqlBatch]] will prevent this from occurring but may have a negative performance impact.\n   *\n   * Beware of the way that scoping rules apply, and how they may [affect local temp tables](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx)\n   * If you're running in to scoping issues, then [[execSqlBatch]] may be a better choice.\n   * See also [issue #24](https://github.com/pekim/tedious/issues/24)\n   *\n   * @param request A [[Request]] object representing the request.\n   */\n  execSql(request) {\n    try {\n      request.validateParameters(this.databaseCollation);\n    } catch (error) {\n      request.error = error;\n      process.nextTick(() => {\n        this.debug.log(error.message);\n        request.callback(error);\n      });\n      return;\n    }\n    const parameters = [];\n    parameters.push({\n      type: _dataType.TYPES.NVarChar,\n      name: 'statement',\n      value: request.sqlTextOrProcedure,\n      output: false,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    if (request.parameters.length) {\n      parameters.push({\n        type: _dataType.TYPES.NVarChar,\n        name: 'params',\n        value: request.makeParamsParameter(request.parameters),\n        output: false,\n        length: undefined,\n        precision: undefined,\n        scale: undefined\n      });\n      parameters.push(...request.parameters);\n    }\n    this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_ExecuteSql, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n  }\n\n  /**\n   * Creates a new BulkLoad instance.\n   *\n   * @param table The name of the table to bulk-insert into.\n   * @param options A set of bulk load options.\n   */\n\n  newBulkLoad(table, callbackOrOptions, callback) {\n    let options;\n    if (callback === undefined) {\n      callback = callbackOrOptions;\n      options = {};\n    } else {\n      options = callbackOrOptions;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('\"options\" argument must be an object');\n    }\n    return new _bulkLoad.default(table, this.databaseCollation, this.config.options, options, callback);\n  }\n\n  /**\n   * Execute a [[BulkLoad]].\n   *\n   * ```js\n   * // We want to perform a bulk load into a table with the following format:\n   * // CREATE TABLE employees (first_name nvarchar(255), last_name nvarchar(255), day_of_birth date);\n   *\n   * const bulkLoad = connection.newBulkLoad('employees', (err, rowCount) => {\n   *   // ...\n   * });\n   *\n   * // First, we need to specify the columns that we want to write to,\n   * // and their definitions. These definitions must match the actual table,\n   * // otherwise the bulk load will fail.\n   * bulkLoad.addColumn('first_name', TYPES.NVarchar, { nullable: false });\n   * bulkLoad.addColumn('last_name', TYPES.NVarchar, { nullable: false });\n   * bulkLoad.addColumn('date_of_birth', TYPES.Date, { nullable: false });\n   *\n   * // Execute a bulk load with a predefined list of rows.\n   * //\n   * // Note that these rows are held in memory until the\n   * // bulk load was performed, so if you need to write a large\n   * // number of rows (e.g. by reading from a CSV file),\n   * // passing an `AsyncIterable` is advisable to keep memory usage low.\n   * connection.execBulkLoad(bulkLoad, [\n   *   { 'first_name': 'Steve', 'last_name': 'Jobs', 'day_of_birth': new Date('02-24-1955') },\n   *   { 'first_name': 'Bill', 'last_name': 'Gates', 'day_of_birth': new Date('10-28-1955') }\n   * ]);\n   * ```\n   *\n   * @param bulkLoad A previously created [[BulkLoad]].\n   * @param rows A [[Iterable]] or [[AsyncIterable]] that contains the rows that should be bulk loaded.\n   */\n\n  execBulkLoad(bulkLoad, rows) {\n    bulkLoad.executionStarted = true;\n    if (rows) {\n      if (bulkLoad.streamingMode) {\n        throw new Error(\"Connection.execBulkLoad can't be called with a BulkLoad that was put in streaming mode.\");\n      }\n      if (bulkLoad.firstRowWritten) {\n        throw new Error(\"Connection.execBulkLoad can't be called with a BulkLoad that already has rows written to it.\");\n      }\n      const rowStream = _stream.Readable.from(rows);\n\n      // Destroy the packet transform if an error happens in the row stream,\n      // e.g. if an error is thrown from within a generator or stream.\n      rowStream.on('error', err => {\n        bulkLoad.rowToPacketTransform.destroy(err);\n      });\n\n      // Destroy the row stream if an error happens in the packet transform,\n      // e.g. if the bulk load is cancelled.\n      bulkLoad.rowToPacketTransform.on('error', err => {\n        rowStream.destroy(err);\n      });\n      rowStream.pipe(bulkLoad.rowToPacketTransform);\n    } else if (!bulkLoad.streamingMode) {\n      // If the bulkload was not put into streaming mode by the user,\n      // we end the rowToPacketTransform here for them.\n      //\n      // If it was put into streaming mode, it's the user's responsibility\n      // to end the stream.\n      bulkLoad.rowToPacketTransform.end();\n    }\n    const onCancel = () => {\n      request.cancel();\n    };\n    const payload = new _bulkLoadPayload.BulkLoadPayload(bulkLoad);\n    const request = new _request.default(bulkLoad.getBulkInsertSql(), error => {\n      bulkLoad.removeListener('cancel', onCancel);\n      if (error) {\n        if (error.code === 'UNKNOWN') {\n          error.message += ' This is likely because the schema of the BulkLoad does not match the schema of the table you are attempting to insert into.';\n        }\n        bulkLoad.error = error;\n        bulkLoad.callback(error);\n        return;\n      }\n      this.makeRequest(bulkLoad, _packet.TYPE.BULK_LOAD, payload);\n    });\n    bulkLoad.once('cancel', onCancel);\n    this.execSqlBatch(request);\n  }\n\n  /**\n   * Prepare the SQL represented by the request.\n   *\n   * The request can then be used in subsequent calls to\n   * [[execute]] and [[unprepare]]\n   *\n   * @param request A [[Request]] object representing the request.\n   *   Parameters only require a name and type. Parameter values are ignored.\n   */\n  prepare(request) {\n    const parameters = [];\n    parameters.push({\n      type: _dataType.TYPES.Int,\n      name: 'handle',\n      value: undefined,\n      output: true,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    parameters.push({\n      type: _dataType.TYPES.NVarChar,\n      name: 'params',\n      value: request.parameters.length ? request.makeParamsParameter(request.parameters) : null,\n      output: false,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    parameters.push({\n      type: _dataType.TYPES.NVarChar,\n      name: 'stmt',\n      value: request.sqlTextOrProcedure,\n      output: false,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    request.preparing = true;\n\n    // TODO: We need to clean up this event handler, otherwise this leaks memory\n    request.on('returnValue', (name, value) => {\n      if (name === 'handle') {\n        request.handle = value;\n      } else {\n        request.error = new _errors.RequestError(`Tedious > Unexpected output parameter ${name} from sp_prepare`);\n      }\n    });\n    this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Prepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n  }\n\n  /**\n   * Release the SQL Server resources associated with a previously prepared request.\n   *\n   * @param request A [[Request]] object representing the request.\n   *   Parameters only require a name and type.\n   *   Parameter values are ignored.\n   */\n  unprepare(request) {\n    const parameters = [];\n    parameters.push({\n      type: _dataType.TYPES.Int,\n      name: 'handle',\n      // TODO: Abort if `request.handle` is not set\n      value: request.handle,\n      output: false,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Unprepare, parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n  }\n\n  /**\n   * Execute previously prepared SQL, using the supplied parameters.\n   *\n   * @param request A previously prepared [[Request]].\n   * @param parameters  An object whose names correspond to the names of\n   *   parameters that were added to the [[Request]] before it was prepared.\n   *   The object's values are passed as the parameters' values when the\n   *   request is executed.\n   */\n  execute(request, parameters) {\n    const executeParameters = [];\n    executeParameters.push({\n      type: _dataType.TYPES.Int,\n      name: '',\n      // TODO: Abort if `request.handle` is not set\n      value: request.handle,\n      output: false,\n      length: undefined,\n      precision: undefined,\n      scale: undefined\n    });\n    try {\n      for (let i = 0, len = request.parameters.length; i < len; i++) {\n        const parameter = request.parameters[i];\n        executeParameters.push({\n          ...parameter,\n          value: parameter.type.validate(parameters ? parameters[parameter.name] : null, this.databaseCollation)\n        });\n      }\n    } catch (error) {\n      request.error = error;\n      process.nextTick(() => {\n        this.debug.log(error.message);\n        request.callback(error);\n      });\n      return;\n    }\n    this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(_specialStoredProcedure.default.Sp_Execute, executeParameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n  }\n\n  /**\n   * Call a stored procedure represented by [[Request]].\n   *\n   * @param request A [[Request]] object representing the request.\n   */\n  callProcedure(request) {\n    try {\n      request.validateParameters(this.databaseCollation);\n    } catch (error) {\n      request.error = error;\n      process.nextTick(() => {\n        this.debug.log(error.message);\n        request.callback(error);\n      });\n      return;\n    }\n    this.makeRequest(request, _packet.TYPE.RPC_REQUEST, new _rpcrequestPayload.default(request.sqlTextOrProcedure, request.parameters, this.currentTransactionDescriptor(), this.config.options, this.databaseCollation));\n  }\n\n  /**\n   * Start a transaction.\n   *\n   * @param callback\n   * @param name A string representing a name to associate with the transaction.\n   *   Optional, and defaults to an empty string. Required when `isolationLevel`\n   *   is present.\n   * @param isolationLevel The isolation level that the transaction is to be run with.\n   *\n   *   The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n   *   * `READ_UNCOMMITTED`\n   *   * `READ_COMMITTED`\n   *   * `REPEATABLE_READ`\n   *   * `SERIALIZABLE`\n   *   * `SNAPSHOT`\n   *\n   *   Optional, and defaults to the Connection's isolation level.\n   */\n  beginTransaction(callback, name = '', isolationLevel = this.config.options.isolationLevel) {\n    (0, _transaction.assertValidIsolationLevel)(isolationLevel, 'isolationLevel');\n    const transaction = new _transaction.Transaction(name, isolationLevel);\n    if (this.config.options.tdsVersion < '7_2') {\n      return this.execSqlBatch(new _request.default('SET TRANSACTION ISOLATION LEVEL ' + transaction.isolationLevelToTSQL() + ';BEGIN TRAN ' + transaction.name, err => {\n        this.transactionDepth++;\n        if (this.transactionDepth === 1) {\n          this.inTransaction = true;\n        }\n        callback(err);\n      }));\n    }\n    const request = new _request.default(undefined, err => {\n      return callback(err, this.currentTransactionDescriptor());\n    });\n    return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.beginPayload(this.currentTransactionDescriptor()));\n  }\n\n  /**\n   * Commit a transaction.\n   *\n   * There should be an active transaction - that is, [[beginTransaction]]\n   * should have been previously called.\n   *\n   * @param callback\n   * @param name A string representing a name to associate with the transaction.\n   *   Optional, and defaults to an empty string. Required when `isolationLevel`is present.\n   */\n  commitTransaction(callback, name = '') {\n    const transaction = new _transaction.Transaction(name);\n    if (this.config.options.tdsVersion < '7_2') {\n      return this.execSqlBatch(new _request.default('COMMIT TRAN ' + transaction.name, err => {\n        this.transactionDepth--;\n        if (this.transactionDepth === 0) {\n          this.inTransaction = false;\n        }\n        callback(err);\n      }));\n    }\n    const request = new _request.default(undefined, callback);\n    return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.commitPayload(this.currentTransactionDescriptor()));\n  }\n\n  /**\n   * Rollback a transaction.\n   *\n   * There should be an active transaction - that is, [[beginTransaction]]\n   * should have been previously called.\n   *\n   * @param callback\n   * @param name A string representing a name to associate with the transaction.\n   *   Optional, and defaults to an empty string.\n   *   Required when `isolationLevel` is present.\n   */\n  rollbackTransaction(callback, name = '') {\n    const transaction = new _transaction.Transaction(name);\n    if (this.config.options.tdsVersion < '7_2') {\n      return this.execSqlBatch(new _request.default('ROLLBACK TRAN ' + transaction.name, err => {\n        this.transactionDepth--;\n        if (this.transactionDepth === 0) {\n          this.inTransaction = false;\n        }\n        callback(err);\n      }));\n    }\n    const request = new _request.default(undefined, callback);\n    return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.rollbackPayload(this.currentTransactionDescriptor()));\n  }\n\n  /**\n   * Set a savepoint within a transaction.\n   *\n   * There should be an active transaction - that is, [[beginTransaction]]\n   * should have been previously called.\n   *\n   * @param callback\n   * @param name A string representing a name to associate with the transaction.\\\n   *   Optional, and defaults to an empty string.\n   *   Required when `isolationLevel` is present.\n   */\n  saveTransaction(callback, name) {\n    const transaction = new _transaction.Transaction(name);\n    if (this.config.options.tdsVersion < '7_2') {\n      return this.execSqlBatch(new _request.default('SAVE TRAN ' + transaction.name, err => {\n        this.transactionDepth++;\n        callback(err);\n      }));\n    }\n    const request = new _request.default(undefined, callback);\n    return this.makeRequest(request, _packet.TYPE.TRANSACTION_MANAGER, transaction.savePayload(this.currentTransactionDescriptor()));\n  }\n\n  /**\n   * Run the given callback after starting a transaction, and commit or\n   * rollback the transaction afterwards.\n   *\n   * This is a helper that employs [[beginTransaction]], [[commitTransaction]],\n   * [[rollbackTransaction]], and [[saveTransaction]] to greatly simplify the\n   * use of database transactions and automatically handle transaction nesting.\n   *\n   * @param cb\n   * @param isolationLevel\n   *   The isolation level that the transaction is to be run with.\n   *\n   *   The isolation levels are available from `require('tedious').ISOLATION_LEVEL`.\n   *   * `READ_UNCOMMITTED`\n   *   * `READ_COMMITTED`\n   *   * `REPEATABLE_READ`\n   *   * `SERIALIZABLE`\n   *   * `SNAPSHOT`\n   *\n   *   Optional, and defaults to the Connection's isolation level.\n   */\n  transaction(cb, isolationLevel) {\n    if (typeof cb !== 'function') {\n      throw new TypeError('`cb` must be a function');\n    }\n    const useSavepoint = this.inTransaction;\n    const name = '_tedious_' + _crypto.default.randomBytes(10).toString('hex');\n    const txDone = (err, done, ...args) => {\n      if (err) {\n        if (this.inTransaction && this.state === this.STATE.LOGGED_IN) {\n          this.rollbackTransaction(txErr => {\n            done(txErr || err, ...args);\n          }, name);\n        } else {\n          done(err, ...args);\n        }\n      } else if (useSavepoint) {\n        if (this.config.options.tdsVersion < '7_2') {\n          this.transactionDepth--;\n        }\n        done(null, ...args);\n      } else {\n        this.commitTransaction(txErr => {\n          done(txErr, ...args);\n        }, name);\n      }\n    };\n    if (useSavepoint) {\n      return this.saveTransaction(err => {\n        if (err) {\n          return cb(err);\n        }\n        if (isolationLevel) {\n          return this.execSqlBatch(new _request.default('SET transaction isolation level ' + this.getIsolationLevelText(isolationLevel), err => {\n            return cb(err, txDone);\n          }));\n        } else {\n          return cb(null, txDone);\n        }\n      }, name);\n    } else {\n      return this.beginTransaction(err => {\n        if (err) {\n          return cb(err);\n        }\n        return cb(null, txDone);\n      }, name, isolationLevel);\n    }\n  }\n\n  /**\n   * @private\n   */\n  makeRequest(request, packetType, payload) {\n    if (this.state !== this.STATE.LOGGED_IN) {\n      const message = 'Requests can only be made in the ' + this.STATE.LOGGED_IN.name + ' state, not the ' + this.state.name + ' state';\n      this.debug.log(message);\n      request.callback(new _errors.RequestError(message, 'EINVALIDSTATE'));\n    } else if (request.canceled) {\n      process.nextTick(() => {\n        request.callback(new _errors.RequestError('Canceled.', 'ECANCEL'));\n      });\n    } else {\n      if (packetType === _packet.TYPE.SQL_BATCH) {\n        this.isSqlBatch = true;\n      } else {\n        this.isSqlBatch = false;\n      }\n      this.request = request;\n      request.connection = this;\n      request.rowCount = 0;\n      request.rows = [];\n      request.rst = [];\n      const onCancel = () => {\n        payloadStream.unpipe(message);\n        payloadStream.destroy(new _errors.RequestError('Canceled.', 'ECANCEL'));\n\n        // set the ignore bit and end the message.\n        message.ignore = true;\n        message.end();\n        if (request instanceof _request.default && request.paused) {\n          // resume the request if it was paused so we can read the remaining tokens\n          request.resume();\n        }\n      };\n      request.once('cancel', onCancel);\n      this.createRequestTimer();\n      const message = new _message.default({\n        type: packetType,\n        resetConnection: this.resetConnectionOnNextRequest\n      });\n      this.messageIo.outgoingMessageStream.write(message);\n      this.transitionTo(this.STATE.SENT_CLIENT_REQUEST);\n      message.once('finish', () => {\n        request.removeListener('cancel', onCancel);\n        request.once('cancel', this._cancelAfterRequestSent);\n        this.resetConnectionOnNextRequest = false;\n        this.debug.payload(function () {\n          return payload.toString('  ');\n        });\n      });\n      const payloadStream = _stream.Readable.from(payload);\n      payloadStream.once('error', error => {\n        payloadStream.unpipe(message);\n\n        // Only set a request error if no error was set yet.\n        request.error ??= error;\n        message.ignore = true;\n        message.end();\n      });\n      payloadStream.pipe(message);\n    }\n  }\n\n  /**\n   * Cancel currently executed request.\n   */\n  cancel() {\n    if (!this.request) {\n      return false;\n    }\n    if (this.request.canceled) {\n      return false;\n    }\n    this.request.cancel();\n    return true;\n  }\n\n  /**\n   * Reset the connection to its initial state.\n   * Can be useful for connection pool implementations.\n   *\n   * @param callback\n   */\n  reset(callback) {\n    const request = new _request.default(this.getInitialSql(), err => {\n      if (this.config.options.tdsVersion < '7_2') {\n        this.inTransaction = false;\n      }\n      callback(err);\n    });\n    this.resetConnectionOnNextRequest = true;\n    this.execSqlBatch(request);\n  }\n\n  /**\n   * @private\n   */\n  currentTransactionDescriptor() {\n    return this.transactionDescriptors[this.transactionDescriptors.length - 1];\n  }\n\n  /**\n   * @private\n   */\n  getIsolationLevelText(isolationLevel) {\n    switch (isolationLevel) {\n      case _transaction.ISOLATION_LEVEL.READ_UNCOMMITTED:\n        return 'read uncommitted';\n      case _transaction.ISOLATION_LEVEL.REPEATABLE_READ:\n        return 'repeatable read';\n      case _transaction.ISOLATION_LEVEL.SERIALIZABLE:\n        return 'serializable';\n      case _transaction.ISOLATION_LEVEL.SNAPSHOT:\n        return 'snapshot';\n      default:\n        return 'read committed';\n    }\n  }\n}\nfunction isTransientError(error) {\n  if (error instanceof _esAggregateError.default) {\n    error = error.errors[0];\n  }\n  return error instanceof _errors.ConnectionError && !!error.isTransient;\n}\nvar _default = Connection;\nexports.default = _default;\nmodule.exports = Connection;\nConnection.prototype.STATE = {\n  INITIALIZED: {\n    name: 'Initialized',\n    events: {}\n  },\n  CONNECTING: {\n    name: 'Connecting',\n    enter: function () {\n      this.initialiseConnection();\n    },\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  SENT_PRELOGIN: {\n    name: 'SentPrelogin',\n    enter: function () {\n      (async () => {\n        let messageBuffer = Buffer.alloc(0);\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        for await (const data of message) {\n          messageBuffer = Buffer.concat([messageBuffer, data]);\n        }\n        const preloginPayload = new _preloginPayload.default(messageBuffer);\n        this.debug.payload(function () {\n          return preloginPayload.toString('  ');\n        });\n        if (preloginPayload.fedAuthRequired === 1) {\n          this.fedAuthRequired = true;\n        }\n        if ('strict' !== this.config.options.encrypt && (preloginPayload.encryptionString === 'ON' || preloginPayload.encryptionString === 'REQ')) {\n          if (!this.config.options.encrypt) {\n            this.emit('connect', new _errors.ConnectionError(\"Server requires encryption, set 'encrypt' config option to true.\", 'EENCRYPT'));\n            return this.close();\n          }\n          try {\n            var _this$routingData;\n            this.transitionTo(this.STATE.SENT_TLSSSLNEGOTIATION);\n            await this.messageIo.startTls(this.secureContextOptions, this.config.options.serverName ? this.config.options.serverName : ((_this$routingData = this.routingData) === null || _this$routingData === void 0 ? void 0 : _this$routingData.server) ?? this.config.server, this.config.options.trustServerCertificate);\n          } catch (err) {\n            return this.socketError(err);\n          }\n        }\n        this.sendLogin7Packet();\n        const {\n          authentication\n        } = this.config;\n        switch (authentication.type) {\n          case 'azure-active-directory-password':\n          case 'azure-active-directory-msi-vm':\n          case 'azure-active-directory-msi-app-service':\n          case 'azure-active-directory-service-principal-secret':\n          case 'azure-active-directory-default':\n            this.transitionTo(this.STATE.SENT_LOGIN7_WITH_FEDAUTH);\n            break;\n          case 'ntlm':\n            this.transitionTo(this.STATE.SENT_LOGIN7_WITH_NTLM);\n            break;\n          default:\n            this.transitionTo(this.STATE.SENT_LOGIN7_WITH_STANDARD_LOGIN);\n            break;\n        }\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  REROUTING: {\n    name: 'ReRouting',\n    enter: function () {\n      this.cleanupConnection(CLEANUP_TYPE.REDIRECT);\n    },\n    events: {\n      message: function () {},\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      reconnect: function () {\n        this.transitionTo(this.STATE.CONNECTING);\n      }\n    }\n  },\n  TRANSIENT_FAILURE_RETRY: {\n    name: 'TRANSIENT_FAILURE_RETRY',\n    enter: function () {\n      this.curTransientRetryCount++;\n      this.cleanupConnection(CLEANUP_TYPE.RETRY);\n    },\n    events: {\n      message: function () {},\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      retry: function () {\n        this.createRetryTimer();\n      }\n    }\n  },\n  SENT_TLSSSLNEGOTIATION: {\n    name: 'SentTLSSSLNegotiation',\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  SENT_LOGIN7_WITH_STANDARD_LOGIN: {\n    name: 'SentLogin7WithStandardLogin',\n    enter: function () {\n      (async () => {\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        const handler = new _handler.Login7TokenHandler(this);\n        const tokenStreamParser = this.createTokenStreamParser(message, handler);\n        await (0, _events.once)(tokenStreamParser, 'end');\n        if (handler.loginAckReceived) {\n          if (handler.routingData) {\n            this.routingData = handler.routingData;\n            this.transitionTo(this.STATE.REROUTING);\n          } else {\n            this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n          }\n        } else if (this.loginError) {\n          if (isTransientError(this.loginError)) {\n            this.debug.log('Initiating retry on transient error');\n            this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n          } else {\n            this.emit('connect', this.loginError);\n            this.transitionTo(this.STATE.FINAL);\n          }\n        } else {\n          this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN'));\n          this.transitionTo(this.STATE.FINAL);\n        }\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  SENT_LOGIN7_WITH_NTLM: {\n    name: 'SentLogin7WithNTLMLogin',\n    enter: function () {\n      (async () => {\n        while (true) {\n          let message;\n          try {\n            message = await this.messageIo.readMessage();\n          } catch (err) {\n            return this.socketError(err);\n          }\n          const handler = new _handler.Login7TokenHandler(this);\n          const tokenStreamParser = this.createTokenStreamParser(message, handler);\n          await (0, _events.once)(tokenStreamParser, 'end');\n          if (handler.loginAckReceived) {\n            if (handler.routingData) {\n              this.routingData = handler.routingData;\n              return this.transitionTo(this.STATE.REROUTING);\n            } else {\n              return this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n            }\n          } else if (this.ntlmpacket) {\n            const authentication = this.config.authentication;\n            const payload = new _ntlmPayload.default({\n              domain: authentication.options.domain,\n              userName: authentication.options.userName,\n              password: authentication.options.password,\n              ntlmpacket: this.ntlmpacket\n            });\n            this.messageIo.sendMessage(_packet.TYPE.NTLMAUTH_PKT, payload.data);\n            this.debug.payload(function () {\n              return payload.toString('  ');\n            });\n            this.ntlmpacket = undefined;\n          } else if (this.loginError) {\n            if (isTransientError(this.loginError)) {\n              this.debug.log('Initiating retry on transient error');\n              return this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n            } else {\n              this.emit('connect', this.loginError);\n              return this.transitionTo(this.STATE.FINAL);\n            }\n          } else {\n            this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN'));\n            return this.transitionTo(this.STATE.FINAL);\n          }\n        }\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  SENT_LOGIN7_WITH_FEDAUTH: {\n    name: 'SentLogin7Withfedauth',\n    enter: function () {\n      (async () => {\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        const handler = new _handler.Login7TokenHandler(this);\n        const tokenStreamParser = this.createTokenStreamParser(message, handler);\n        await (0, _events.once)(tokenStreamParser, 'end');\n        if (handler.loginAckReceived) {\n          if (handler.routingData) {\n            this.routingData = handler.routingData;\n            this.transitionTo(this.STATE.REROUTING);\n          } else {\n            this.transitionTo(this.STATE.LOGGED_IN_SENDING_INITIAL_SQL);\n          }\n          return;\n        }\n        const fedAuthInfoToken = handler.fedAuthInfoToken;\n        if (fedAuthInfoToken && fedAuthInfoToken.stsurl && fedAuthInfoToken.spn) {\n          const authentication = this.config.authentication;\n          const tokenScope = new _url.URL('/.default', fedAuthInfoToken.spn).toString();\n          let credentials;\n          switch (authentication.type) {\n            case 'azure-active-directory-password':\n              credentials = new _identity.UsernamePasswordCredential(authentication.options.tenantId ?? 'common', authentication.options.clientId, authentication.options.userName, authentication.options.password);\n              break;\n            case 'azure-active-directory-msi-vm':\n            case 'azure-active-directory-msi-app-service':\n              const msiArgs = authentication.options.clientId ? [authentication.options.clientId, {}] : [{}];\n              credentials = new _identity.ManagedIdentityCredential(...msiArgs);\n              break;\n            case 'azure-active-directory-default':\n              const args = authentication.options.clientId ? {\n                managedIdentityClientId: authentication.options.clientId\n              } : {};\n              credentials = new _identity.DefaultAzureCredential(args);\n              break;\n            case 'azure-active-directory-service-principal-secret':\n              credentials = new _identity.ClientSecretCredential(authentication.options.tenantId, authentication.options.clientId, authentication.options.clientSecret);\n              break;\n          }\n          let tokenResponse;\n          try {\n            tokenResponse = await credentials.getToken(tokenScope);\n          } catch (err) {\n            this.loginError = new _esAggregateError.default([new _errors.ConnectionError('Security token could not be authenticated or authorized.', 'EFEDAUTH'), err]);\n            this.emit('connect', this.loginError);\n            this.transitionTo(this.STATE.FINAL);\n            return;\n          }\n          const token = tokenResponse.token;\n          this.sendFedAuthTokenMessage(token);\n        } else if (this.loginError) {\n          if (isTransientError(this.loginError)) {\n            this.debug.log('Initiating retry on transient error');\n            this.transitionTo(this.STATE.TRANSIENT_FAILURE_RETRY);\n          } else {\n            this.emit('connect', this.loginError);\n            this.transitionTo(this.STATE.FINAL);\n          }\n        } else {\n          this.emit('connect', new _errors.ConnectionError('Login failed.', 'ELOGIN'));\n          this.transitionTo(this.STATE.FINAL);\n        }\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  LOGGED_IN_SENDING_INITIAL_SQL: {\n    name: 'LoggedInSendingInitialSql',\n    enter: function () {\n      (async () => {\n        this.sendInitialSql();\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        const tokenStreamParser = this.createTokenStreamParser(message, new _handler.InitialSqlTokenHandler(this));\n        await (0, _events.once)(tokenStreamParser, 'end');\n        this.transitionTo(this.STATE.LOGGED_IN);\n        this.processedInitialSql();\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function socketError() {\n        this.transitionTo(this.STATE.FINAL);\n      },\n      connectTimeout: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  LOGGED_IN: {\n    name: 'LoggedIn',\n    events: {\n      socketError: function () {\n        this.transitionTo(this.STATE.FINAL);\n      }\n    }\n  },\n  SENT_CLIENT_REQUEST: {\n    name: 'SentClientRequest',\n    enter: function () {\n      (async (_this$request, _this$request3, _this$request10) => {\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        // request timer is stopped on first data package\n        this.clearRequestTimer();\n        const tokenStreamParser = this.createTokenStreamParser(message, new _handler.RequestTokenHandler(this, this.request));\n\n        // If the request was canceled and we have a `cancelTimer`\n        // defined, we send a attention message after the\n        // request message was fully sent off.\n        //\n        // We already started consuming the current message\n        // (but all the token handlers should be no-ops), and\n        // need to ensure the next message is handled by the\n        // `SENT_ATTENTION` state.\n        if ((_this$request = this.request) !== null && _this$request !== void 0 && _this$request.canceled && this.cancelTimer) {\n          return this.transitionTo(this.STATE.SENT_ATTENTION);\n        }\n        const onResume = () => {\n          tokenStreamParser.resume();\n        };\n        const onPause = () => {\n          var _this$request2;\n          tokenStreamParser.pause();\n          (_this$request2 = this.request) === null || _this$request2 === void 0 ? void 0 : _this$request2.once('resume', onResume);\n        };\n        (_this$request3 = this.request) === null || _this$request3 === void 0 ? void 0 : _this$request3.on('pause', onPause);\n        if (this.request instanceof _request.default && this.request.paused) {\n          onPause();\n        }\n        const onCancel = () => {\n          var _this$request4, _this$request5;\n          tokenStreamParser.removeListener('end', onEndOfMessage);\n          if (this.request instanceof _request.default && this.request.paused) {\n            // resume the request if it was paused so we can read the remaining tokens\n            this.request.resume();\n          }\n          (_this$request4 = this.request) === null || _this$request4 === void 0 ? void 0 : _this$request4.removeListener('pause', onPause);\n          (_this$request5 = this.request) === null || _this$request5 === void 0 ? void 0 : _this$request5.removeListener('resume', onResume);\n\n          // The `_cancelAfterRequestSent` callback will have sent a\n          // attention message, so now we need to also switch to\n          // the `SENT_ATTENTION` state to make sure the attention ack\n          // message is processed correctly.\n          this.transitionTo(this.STATE.SENT_ATTENTION);\n        };\n        const onEndOfMessage = () => {\n          var _this$request6, _this$request7, _this$request8, _this$request9;\n          (_this$request6 = this.request) === null || _this$request6 === void 0 ? void 0 : _this$request6.removeListener('cancel', this._cancelAfterRequestSent);\n          (_this$request7 = this.request) === null || _this$request7 === void 0 ? void 0 : _this$request7.removeListener('cancel', onCancel);\n          (_this$request8 = this.request) === null || _this$request8 === void 0 ? void 0 : _this$request8.removeListener('pause', onPause);\n          (_this$request9 = this.request) === null || _this$request9 === void 0 ? void 0 : _this$request9.removeListener('resume', onResume);\n          this.transitionTo(this.STATE.LOGGED_IN);\n          const sqlRequest = this.request;\n          this.request = undefined;\n          if (this.config.options.tdsVersion < '7_2' && sqlRequest.error && this.isSqlBatch) {\n            this.inTransaction = false;\n          }\n          sqlRequest.callback(sqlRequest.error, sqlRequest.rowCount, sqlRequest.rows);\n        };\n        tokenStreamParser.once('end', onEndOfMessage);\n        (_this$request10 = this.request) === null || _this$request10 === void 0 ? void 0 : _this$request10.once('cancel', onCancel);\n      })();\n    },\n    exit: function (nextState) {\n      this.clearRequestTimer();\n    },\n    events: {\n      socketError: function (err) {\n        const sqlRequest = this.request;\n        this.request = undefined;\n        this.transitionTo(this.STATE.FINAL);\n        sqlRequest.callback(err);\n      }\n    }\n  },\n  SENT_ATTENTION: {\n    name: 'SentAttention',\n    enter: function () {\n      (async () => {\n        let message;\n        try {\n          message = await this.messageIo.readMessage();\n        } catch (err) {\n          return this.socketError(err);\n        }\n        const handler = new _handler.AttentionTokenHandler(this, this.request);\n        const tokenStreamParser = this.createTokenStreamParser(message, handler);\n        await (0, _events.once)(tokenStreamParser, 'end');\n        // 3.2.5.7 Sent Attention State\n        // Discard any data contained in the response, until we receive the attention response\n        if (handler.attentionReceived) {\n          this.clearCancelTimer();\n          const sqlRequest = this.request;\n          this.request = undefined;\n          this.transitionTo(this.STATE.LOGGED_IN);\n          if (sqlRequest.error && sqlRequest.error instanceof _errors.RequestError && sqlRequest.error.code === 'ETIMEOUT') {\n            sqlRequest.callback(sqlRequest.error);\n          } else {\n            sqlRequest.callback(new _errors.RequestError('Canceled.', 'ECANCEL'));\n          }\n        }\n      })().catch(err => {\n        process.nextTick(() => {\n          throw err;\n        });\n      });\n    },\n    events: {\n      socketError: function (err) {\n        const sqlRequest = this.request;\n        this.request = undefined;\n        this.transitionTo(this.STATE.FINAL);\n        sqlRequest.callback(err);\n      }\n    }\n  },\n  FINAL: {\n    name: 'Final',\n    enter: function () {\n      this.cleanupConnection(CLEANUP_TYPE.NORMAL);\n    },\n    events: {\n      connectTimeout: function () {\n        // Do nothing, as the timer should be cleaned up.\n      },\n      message: function () {\n        // Do nothing\n      },\n      socketError: function () {\n        // Do nothing\n      }\n    }\n  }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfb3MiLCJ0bHMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIm5ldCIsIl9kbnMiLCJfY29uc3RhbnRzIiwiX3N0cmVhbSIsIl9pZGVudGl0eSIsIl9idWxrTG9hZCIsIl9kZWJ1ZyIsIl9ldmVudHMiLCJfaW5zdGFuY2VMb29rdXAiLCJfdHJhbnNpZW50RXJyb3JMb29rdXAiLCJfcGFja2V0IiwiX3ByZWxvZ2luUGF5bG9hZCIsIl9sb2dpbjdQYXlsb2FkIiwiX250bG1QYXlsb2FkIiwiX3JlcXVlc3QiLCJfcnBjcmVxdWVzdFBheWxvYWQiLCJfc3FsYmF0Y2hQYXlsb2FkIiwiX21lc3NhZ2VJbyIsIl90b2tlblN0cmVhbVBhcnNlciIsIl90cmFuc2FjdGlvbiIsIl9lcnJvcnMiLCJfY29ubmVjdG9yIiwiX2xpYnJhcnkiLCJfdGRzVmVyc2lvbnMiLCJfbWVzc2FnZSIsIl9udGxtIiwiX25vZGVBYm9ydENvbnRyb2xsZXIiLCJfZGF0YVR5cGUiLCJfYnVsa0xvYWRQYXlsb2FkIiwiX3NwZWNpYWxTdG9yZWRQcm9jZWR1cmUiLCJfZXNBZ2dyZWdhdGVFcnJvciIsIl9wYWNrYWdlIiwiX3VybCIsIl9oYW5kbGVyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIktFRVBfQUxJVkVfSU5JVElBTF9ERUxBWSIsIkRFRkFVTFRfQ09OTkVDVF9USU1FT1VUIiwiREVGQVVMVF9DTElFTlRfUkVRVUVTVF9USU1FT1VUIiwiREVGQVVMVF9DQU5DRUxfVElNRU9VVCIsIkRFRkFVTFRfQ09OTkVDVF9SRVRSWV9JTlRFUlZBTCIsIkRFRkFVTFRfUEFDS0VUX1NJWkUiLCJERUZBVUxUX1RFWFRTSVpFIiwiREVGQVVMVF9EQVRFRklSU1QiLCJERUZBVUxUX1BPUlQiLCJERUZBVUxUX1REU19WRVJTSU9OIiwiREVGQVVMVF9MQU5HVUFHRSIsIkRFRkFVTFRfREFURUZPUk1BVCIsIkNMRUFOVVBfVFlQRSIsIk5PUk1BTCIsIlJFRElSRUNUIiwiUkVUUlkiLCJDb25uZWN0aW9uIiwiRXZlbnRFbWl0dGVyIiwiX2NhbmNlbEFmdGVyUmVxdWVzdFNlbnQiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsIlR5cGVFcnJvciIsInNlcnZlciIsImZlZEF1dGhSZXF1aXJlZCIsImF1dGhlbnRpY2F0aW9uIiwidW5kZWZpbmVkIiwidHlwZSIsIm9wdGlvbnMiLCJkb21haW4iLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwidG9VcHBlckNhc2UiLCJjbGllbnRJZCIsInRlbmFudElkIiwidG9rZW4iLCJjbGllbnRTZWNyZXQiLCJhYm9ydFRyYW5zYWN0aW9uT25FcnJvciIsImFwcE5hbWUiLCJjYW1lbENhc2VDb2x1bW5zIiwiY2FuY2VsVGltZW91dCIsImNvbHVtbkVuY3J5cHRpb25LZXlDYWNoZVRUTCIsImNvbHVtbkVuY3J5cHRpb25TZXR0aW5nIiwiY29sdW1uTmFtZVJlcGxhY2VyIiwiY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwiLCJjb25uZWN0VGltZW91dCIsImNvbm5lY3RvciIsImNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbCIsIklTT0xBVElPTl9MRVZFTCIsIlJFQURfQ09NTUlUVEVEIiwiY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzIiwiZGF0YWJhc2UiLCJkYXRlZmlyc3QiLCJkYXRlRm9ybWF0IiwiZGVidWciLCJkYXRhIiwicGFja2V0IiwicGF5bG9hZCIsImVuYWJsZUFuc2lOdWxsIiwiZW5hYmxlQW5zaU51bGxEZWZhdWx0IiwiZW5hYmxlQW5zaVBhZGRpbmciLCJlbmFibGVBbnNpV2FybmluZ3MiLCJlbmFibGVBcml0aEFib3J0IiwiZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwiLCJlbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0IiwiZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnMiLCJlbmFibGVOdW1lcmljUm91bmRhYm9ydCIsImVuYWJsZVF1b3RlZElkZW50aWZpZXIiLCJlbmNyeXB0IiwiZmFsbGJhY2tUb0RlZmF1bHREYiIsImVuY3J5cHRpb25LZXlTdG9yZVByb3ZpZGVycyIsImluc3RhbmNlTmFtZSIsImlzb2xhdGlvbkxldmVsIiwibGFuZ3VhZ2UiLCJsb2NhbEFkZHJlc3MiLCJtYXhSZXRyaWVzT25UcmFuc2llbnRFcnJvcnMiLCJtdWx0aVN1Ym5ldEZhaWxvdmVyIiwicGFja2V0U2l6ZSIsInBvcnQiLCJyZWFkT25seUludGVudCIsInJlcXVlc3RUaW1lb3V0Iiwicm93Q29sbGVjdGlvbk9uRG9uZSIsInJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uIiwic2VydmVyTmFtZSIsInNlcnZlclN1cHBvcnRzQ29sdW1uRW5jcnlwdGlvbiIsInRkc1ZlcnNpb24iLCJ0ZXh0c2l6ZSIsInRydXN0ZWRTZXJ2ZXJOYW1lQUUiLCJ0cnVzdFNlcnZlckNlcnRpZmljYXRlIiwidXNlQ29sdW1uTmFtZXMiLCJ1c2VVVEMiLCJ3b3Jrc3RhdGlvbklkIiwibG93ZXJDYXNlR3VpZHMiLCJFcnJvciIsImFzc2VydFZhbGlkSXNvbGF0aW9uTGV2ZWwiLCJSYW5nZUVycm9yIiwic2VjdXJlQ29udGV4dE9wdGlvbnMiLCJzZWN1cmVPcHRpb25zIiwiY3JlYXRlIiwidmFsdWUiLCJjb25zdGFudHMiLCJTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTIiwiY3JlYXRlRGVidWciLCJpblRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25EZXNjcmlwdG9ycyIsIkJ1ZmZlciIsImZyb20iLCJ0cmFuc2FjdGlvbkRlcHRoIiwiaXNTcWxCYXRjaCIsImNsb3NlZCIsIm1lc3NhZ2VCdWZmZXIiLCJhbGxvYyIsImN1clRyYW5zaWVudFJldHJ5Q291bnQiLCJ0cmFuc2llbnRFcnJvckxvb2t1cCIsIlRyYW5zaWVudEVycm9yTG9va3VwIiwic3RhdGUiLCJTVEFURSIsIklOSVRJQUxJWkVEIiwibWVzc2FnZUlvIiwic2VuZE1lc3NhZ2UiLCJUWVBFIiwiQVRURU5USU9OIiwiY3JlYXRlQ2FuY2VsVGltZXIiLCJjb25uZWN0IiwiY29ubmVjdExpc3RlbmVyIiwiQ29ubmVjdGlvbkVycm9yIiwibmFtZSIsIm9uQ29ubmVjdCIsImVyciIsInJlbW92ZUxpc3RlbmVyIiwib25FcnJvciIsIm9uY2UiLCJ0cmFuc2l0aW9uVG8iLCJDT05ORUNUSU5HIiwib24iLCJldmVudCIsImxpc3RlbmVyIiwiZW1pdCIsImFyZ3MiLCJjbG9zZSIsIkZJTkFMIiwiaW5pdGlhbGlzZUNvbm5lY3Rpb24iLCJzaWduYWwiLCJjcmVhdGVDb25uZWN0VGltZXIiLCJjb25uZWN0T25Qb3J0IiwiaW5zdGFuY2VMb29rdXAiLCJ0aW1lb3V0IiwidGhlbiIsInByb2Nlc3MiLCJuZXh0VGljayIsImNsZWFyQ29ubmVjdFRpbWVyIiwiYWJvcnRlZCIsIm1lc3NhZ2UiLCJjbGVhbnVwQ29ubmVjdGlvbiIsImNsZWFudXBUeXBlIiwiY2xlYXJSZXF1ZXN0VGltZXIiLCJjbGVhclJldHJ5VGltZXIiLCJjbG9zZUNvbm5lY3Rpb24iLCJyZXF1ZXN0IiwiUmVxdWVzdEVycm9yIiwiY2FsbGJhY2siLCJsb2dpbkVycm9yIiwiRGVidWciLCJjcmVhdGVUb2tlblN0cmVhbVBhcnNlciIsImhhbmRsZXIiLCJUb2tlblN0cmVhbVBhcnNlciIsInNvY2tldEhhbmRsaW5nRm9yU2VuZFByZUxvZ2luIiwic29ja2V0IiwiZXJyb3IiLCJzb2NrZXRFcnJvciIsInNvY2tldENsb3NlIiwic29ja2V0RW5kIiwic2V0S2VlcEFsaXZlIiwiTWVzc2FnZUlPIiwiY2xlYXJ0ZXh0IiwibG9nIiwic2VuZFByZUxvZ2luIiwiU0VOVF9QUkVMT0dJTiIsIndyYXBXaXRoVGxzIiwidGhyb3dJZkFib3J0ZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNlY3VyZUNvbnRleHQiLCJjcmVhdGVTZWN1cmVDb250ZXh0IiwiaXNJUCIsImVuY3J5cHRPcHRpb25zIiwiaG9zdCIsIkFMUE5Qcm90b2NvbHMiLCJzZXJ2ZXJuYW1lIiwiZW5jcnlwdHNvY2tldCIsIm9uQWJvcnQiLCJkZXN0cm95IiwicmVhc29uIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjdXN0b21Db25uZWN0b3IiLCJjb25uZWN0T3B0cyIsInJvdXRpbmdEYXRhIiwiY29ubmVjdEluUGFyYWxsZWwiLCJjb25uZWN0SW5TZXF1ZW5jZSIsImRucyIsImxvb2t1cCIsImVuZCIsImNhdGNoIiwiY29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsImNvbm5lY3RUaW1lciIsInNldFRpbWVvdXQiLCJhYm9ydCIsImNsZWFyQ2FuY2VsVGltZXIiLCJjYW5jZWxUaW1lciIsImNyZWF0ZVJlcXVlc3RUaW1lciIsInJlcXVlc3RUaW1lciIsImNyZWF0ZVJldHJ5VGltZXIiLCJyZXRyeVRpbWVyIiwicmV0cnlUaW1lb3V0IiwiaG9zdFBvc3RmaXgiLCJyb3V0aW5nTWVzc2FnZSIsImRpc3BhdGNoRXZlbnQiLCJjYW5jZWwiLCJjbGVhclRpbWVvdXQiLCJuZXdTdGF0ZSIsImV4aXQiLCJlbnRlciIsImFwcGx5IiwiZ2V0RXZlbnRIYW5kbGVyIiwiZXZlbnROYW1lIiwiZXZlbnRzIiwiU0VOVF9UTFNTU0xORUdPVElBVElPTiIsImNvZGUiLCJSRVJPVVRJTkciLCJUUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSIsIm1ham9yIiwibWlub3IiLCJidWlsZCIsImV4ZWMiLCJ2ZXJzaW9uIiwiUHJlbG9naW5QYXlsb2FkIiwiTnVtYmVyIiwic3ViYnVpbGQiLCJQUkVMT0dJTiIsInRvU3RyaW5nIiwic2VuZExvZ2luN1BhY2tldCIsIkxvZ2luN1BheWxvYWQiLCJ2ZXJzaW9ucyIsImNsaWVudFByb2dWZXIiLCJjbGllbnRQaWQiLCJwaWQiLCJjb25uZWN0aW9uSWQiLCJjbGllbnRUaW1lWm9uZSIsIkRhdGUiLCJnZXRUaW1lem9uZU9mZnNldCIsImNsaWVudExjaWQiLCJmZWRBdXRoIiwiZWNobyIsIndvcmtmbG93IiwiZmVkQXV0aFRva2VuIiwic3NwaSIsImNyZWF0ZU5UTE1SZXF1ZXN0IiwiaG9zdG5hbWUiLCJvcyIsImxpYnJhcnlOYW1lIiwiaW5pdERiRmF0YWwiLCJMT0dJTjciLCJ0b0J1ZmZlciIsInNlbmRGZWRBdXRoVG9rZW5NZXNzYWdlIiwiYWNjZXNzVG9rZW5MZW4iLCJieXRlTGVuZ3RoIiwib2Zmc2V0Iiwid3JpdGVVSW50MzJMRSIsIndyaXRlIiwiRkVEQVVUSF9UT0tFTiIsIlNFTlRfTE9HSU43X1dJVEhfU1RBTkRBUkRfTE9HSU4iLCJzZW5kSW5pdGlhbFNxbCIsIlNxbEJhdGNoUGF5bG9hZCIsImdldEluaXRpYWxTcWwiLCJjdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yIiwiTWVzc2FnZSIsIlNRTF9CQVRDSCIsIm91dGdvaW5nTWVzc2FnZVN0cmVhbSIsIlJlYWRhYmxlIiwicGlwZSIsInB1c2giLCJnZXRJc29sYXRpb25MZXZlbFRleHQiLCJqb2luIiwicHJvY2Vzc2VkSW5pdGlhbFNxbCIsImV4ZWNTcWxCYXRjaCIsIm1ha2VSZXF1ZXN0Iiwic3FsVGV4dE9yUHJvY2VkdXJlIiwiZXhlY1NxbCIsInZhbGlkYXRlUGFyYW1ldGVycyIsImRhdGFiYXNlQ29sbGF0aW9uIiwicGFyYW1ldGVycyIsIlRZUEVTIiwiTlZhckNoYXIiLCJvdXRwdXQiLCJsZW5ndGgiLCJwcmVjaXNpb24iLCJzY2FsZSIsIm1ha2VQYXJhbXNQYXJhbWV0ZXIiLCJSUENfUkVRVUVTVCIsIlJwY1JlcXVlc3RQYXlsb2FkIiwiUHJvY2VkdXJlcyIsIlNwX0V4ZWN1dGVTcWwiLCJuZXdCdWxrTG9hZCIsInRhYmxlIiwiY2FsbGJhY2tPck9wdGlvbnMiLCJCdWxrTG9hZCIsImV4ZWNCdWxrTG9hZCIsImJ1bGtMb2FkIiwicm93cyIsImV4ZWN1dGlvblN0YXJ0ZWQiLCJzdHJlYW1pbmdNb2RlIiwiZmlyc3RSb3dXcml0dGVuIiwicm93U3RyZWFtIiwicm93VG9QYWNrZXRUcmFuc2Zvcm0iLCJvbkNhbmNlbCIsIkJ1bGtMb2FkUGF5bG9hZCIsIlJlcXVlc3QiLCJnZXRCdWxrSW5zZXJ0U3FsIiwiQlVMS19MT0FEIiwicHJlcGFyZSIsIkludCIsInByZXBhcmluZyIsImhhbmRsZSIsIlNwX1ByZXBhcmUiLCJ1bnByZXBhcmUiLCJTcF9VbnByZXBhcmUiLCJleGVjdXRlIiwiZXhlY3V0ZVBhcmFtZXRlcnMiLCJpIiwibGVuIiwicGFyYW1ldGVyIiwidmFsaWRhdGUiLCJTcF9FeGVjdXRlIiwiY2FsbFByb2NlZHVyZSIsImJlZ2luVHJhbnNhY3Rpb24iLCJ0cmFuc2FjdGlvbiIsIlRyYW5zYWN0aW9uIiwiaXNvbGF0aW9uTGV2ZWxUb1RTUUwiLCJUUkFOU0FDVElPTl9NQU5BR0VSIiwiYmVnaW5QYXlsb2FkIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJjb21taXRQYXlsb2FkIiwicm9sbGJhY2tUcmFuc2FjdGlvbiIsInJvbGxiYWNrUGF5bG9hZCIsInNhdmVUcmFuc2FjdGlvbiIsInNhdmVQYXlsb2FkIiwiY2IiLCJ1c2VTYXZlcG9pbnQiLCJjcnlwdG8iLCJyYW5kb21CeXRlcyIsInR4RG9uZSIsImRvbmUiLCJMT0dHRURfSU4iLCJ0eEVyciIsInBhY2tldFR5cGUiLCJjYW5jZWxlZCIsImNvbm5lY3Rpb24iLCJyb3dDb3VudCIsInJzdCIsInBheWxvYWRTdHJlYW0iLCJ1bnBpcGUiLCJpZ25vcmUiLCJwYXVzZWQiLCJyZXN1bWUiLCJyZXNldENvbm5lY3Rpb24iLCJyZXNldENvbm5lY3Rpb25Pbk5leHRSZXF1ZXN0IiwiU0VOVF9DTElFTlRfUkVRVUVTVCIsInJlc2V0IiwiUkVBRF9VTkNPTU1JVFRFRCIsIlJFUEVBVEFCTEVfUkVBRCIsIlNFUklBTElaQUJMRSIsIlNOQVBTSE9UIiwiaXNUcmFuc2llbnRFcnJvciIsIkFnZ3JlZ2F0ZUVycm9yIiwiZXJyb3JzIiwiaXNUcmFuc2llbnQiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiLCJyZWFkTWVzc2FnZSIsImNvbmNhdCIsInByZWxvZ2luUGF5bG9hZCIsImVuY3J5cHRpb25TdHJpbmciLCJfdGhpcyRyb3V0aW5nRGF0YSIsInN0YXJ0VGxzIiwiU0VOVF9MT0dJTjdfV0lUSF9GRURBVVRIIiwiU0VOVF9MT0dJTjdfV0lUSF9OVExNIiwicmVjb25uZWN0IiwicmV0cnkiLCJMb2dpbjdUb2tlbkhhbmRsZXIiLCJ0b2tlblN0cmVhbVBhcnNlciIsImxvZ2luQWNrUmVjZWl2ZWQiLCJMT0dHRURfSU5fU0VORElOR19JTklUSUFMX1NRTCIsIm50bG1wYWNrZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiTlRMTUFVVEhfUEtUIiwiZmVkQXV0aEluZm9Ub2tlbiIsInN0c3VybCIsInNwbiIsInRva2VuU2NvcGUiLCJVUkwiLCJjcmVkZW50aWFscyIsIlVzZXJuYW1lUGFzc3dvcmRDcmVkZW50aWFsIiwibXNpQXJncyIsIk1hbmFnZWRJZGVudGl0eUNyZWRlbnRpYWwiLCJtYW5hZ2VkSWRlbnRpdHlDbGllbnRJZCIsIkRlZmF1bHRBenVyZUNyZWRlbnRpYWwiLCJDbGllbnRTZWNyZXRDcmVkZW50aWFsIiwidG9rZW5SZXNwb25zZSIsImdldFRva2VuIiwiSW5pdGlhbFNxbFRva2VuSGFuZGxlciIsIl90aGlzJHJlcXVlc3QiLCJfdGhpcyRyZXF1ZXN0MyIsIl90aGlzJHJlcXVlc3QxMCIsIlJlcXVlc3RUb2tlbkhhbmRsZXIiLCJTRU5UX0FUVEVOVElPTiIsIm9uUmVzdW1lIiwib25QYXVzZSIsIl90aGlzJHJlcXVlc3QyIiwicGF1c2UiLCJfdGhpcyRyZXF1ZXN0NCIsIl90aGlzJHJlcXVlc3Q1Iiwib25FbmRPZk1lc3NhZ2UiLCJfdGhpcyRyZXF1ZXN0NiIsIl90aGlzJHJlcXVlc3Q3IiwiX3RoaXMkcmVxdWVzdDgiLCJfdGhpcyRyZXF1ZXN0OSIsInNxbFJlcXVlc3QiLCJuZXh0U3RhdGUiLCJBdHRlbnRpb25Ub2tlbkhhbmRsZXIiLCJhdHRlbnRpb25SZWNlaXZlZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25uZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyB0bHMgZnJvbSAndGxzJztcbmltcG9ydCAqIGFzIG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IGRucyBmcm9tICdkbnMnO1xuXG5pbXBvcnQgY29uc3RhbnRzIGZyb20gJ2NvbnN0YW50cyc7XG5pbXBvcnQgeyB0eXBlIFNlY3VyZUNvbnRleHRPcHRpb25zIH0gZnJvbSAndGxzJztcblxuaW1wb3J0IHsgUmVhZGFibGUgfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQge1xuICBEZWZhdWx0QXp1cmVDcmVkZW50aWFsLFxuICBDbGllbnRTZWNyZXRDcmVkZW50aWFsLFxuICBNYW5hZ2VkSWRlbnRpdHlDcmVkZW50aWFsLFxuICBVc2VybmFtZVBhc3N3b3JkQ3JlZGVudGlhbCxcbn0gZnJvbSAnQGF6dXJlL2lkZW50aXR5JztcblxuaW1wb3J0IEJ1bGtMb2FkLCB7IHR5cGUgT3B0aW9ucyBhcyBCdWxrTG9hZE9wdGlvbnMsIHR5cGUgQ2FsbGJhY2sgYXMgQnVsa0xvYWRDYWxsYmFjayB9IGZyb20gJy4vYnVsay1sb2FkJztcbmltcG9ydCBEZWJ1ZyBmcm9tICcuL2RlYnVnJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgb25jZSB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBpbnN0YW5jZUxvb2t1cCB9IGZyb20gJy4vaW5zdGFuY2UtbG9va3VwJztcbmltcG9ydCB7IFRyYW5zaWVudEVycm9yTG9va3VwIH0gZnJvbSAnLi90cmFuc2llbnQtZXJyb3ItbG9va3VwJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuL3BhY2tldCc7XG5pbXBvcnQgUHJlbG9naW5QYXlsb2FkIGZyb20gJy4vcHJlbG9naW4tcGF5bG9hZCc7XG5pbXBvcnQgTG9naW43UGF5bG9hZCBmcm9tICcuL2xvZ2luNy1wYXlsb2FkJztcbmltcG9ydCBOVExNUmVzcG9uc2VQYXlsb2FkIGZyb20gJy4vbnRsbS1wYXlsb2FkJztcbmltcG9ydCBSZXF1ZXN0IGZyb20gJy4vcmVxdWVzdCc7XG5pbXBvcnQgUnBjUmVxdWVzdFBheWxvYWQgZnJvbSAnLi9ycGNyZXF1ZXN0LXBheWxvYWQnO1xuaW1wb3J0IFNxbEJhdGNoUGF5bG9hZCBmcm9tICcuL3NxbGJhdGNoLXBheWxvYWQnO1xuaW1wb3J0IE1lc3NhZ2VJTyBmcm9tICcuL21lc3NhZ2UtaW8nO1xuaW1wb3J0IHsgUGFyc2VyIGFzIFRva2VuU3RyZWFtUGFyc2VyIH0gZnJvbSAnLi90b2tlbi90b2tlbi1zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBJU09MQVRJT05fTEVWRUwsIGFzc2VydFZhbGlkSXNvbGF0aW9uTGV2ZWwgfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENvbm5lY3Rpb25FcnJvciwgUmVxdWVzdEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgY29ubmVjdEluUGFyYWxsZWwsIGNvbm5lY3RJblNlcXVlbmNlIH0gZnJvbSAnLi9jb25uZWN0b3InO1xuaW1wb3J0IHsgbmFtZSBhcyBsaWJyYXJ5TmFtZSB9IGZyb20gJy4vbGlicmFyeSc7XG5pbXBvcnQgeyB2ZXJzaW9ucyB9IGZyb20gJy4vdGRzLXZlcnNpb25zJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4vbWVzc2FnZSc7XG5pbXBvcnQgeyB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi9tZXRhZGF0YS1wYXJzZXInO1xuaW1wb3J0IHsgY3JlYXRlTlRMTVJlcXVlc3QgfSBmcm9tICcuL250bG0nO1xuaW1wb3J0IHsgQ29sdW1uRW5jcnlwdGlvbkF6dXJlS2V5VmF1bHRQcm92aWRlciB9IGZyb20gJy4vYWx3YXlzLWVuY3J5cHRlZC9rZXlzdG9yZS1wcm92aWRlci1henVyZS1rZXktdmF1bHQnO1xuXG5pbXBvcnQgeyBBYm9ydENvbnRyb2xsZXIsIEFib3J0U2lnbmFsIH0gZnJvbSAnbm9kZS1hYm9ydC1jb250cm9sbGVyJztcbmltcG9ydCB7IHR5cGUgUGFyYW1ldGVyLCBUWVBFUyB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IEJ1bGtMb2FkUGF5bG9hZCB9IGZyb20gJy4vYnVsay1sb2FkLXBheWxvYWQnO1xuaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFByb2NlZHVyZXMgZnJvbSAnLi9zcGVjaWFsLXN0b3JlZC1wcm9jZWR1cmUnO1xuXG5pbXBvcnQgQWdncmVnYXRlRXJyb3IgZnJvbSAnZXMtYWdncmVnYXRlLWVycm9yJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCB7IEF0dGVudGlvblRva2VuSGFuZGxlciwgSW5pdGlhbFNxbFRva2VuSGFuZGxlciwgTG9naW43VG9rZW5IYW5kbGVyLCBSZXF1ZXN0VG9rZW5IYW5kbGVyLCBUb2tlbkhhbmRsZXIgfSBmcm9tICcuL3Rva2VuL2hhbmRsZXInO1xuXG50eXBlIEJlZ2luVHJhbnNhY3Rpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgdG8gc3RhcnQgdGhlIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQsXG4gICAqIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICogSWYgYW4gZXJyb3Igb2NjdXJyZWQgdGhlbiBgZXJyYCB3aWxsIGRlc2NyaWJlIHRoZSBlcnJvci5cbiAgICpcbiAgICogQXMgb25seSBvbmUgcmVxdWVzdCBhdCBhIHRpbWUgbWF5IGJlIGV4ZWN1dGVkIG9uIGEgY29ubmVjdGlvbiwgYW5vdGhlciByZXF1ZXN0IHNob3VsZCBub3RcbiAgICogYmUgaW5pdGlhdGVkIHVudGlsIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIElmIGFuIGVycm9yIG9jY3VycmVkLCBhbiBbW0Vycm9yXV0gb2JqZWN0IHdpdGggZGV0YWlscyBvZiB0aGUgZXJyb3IuXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbkRlc2NyaXB0b3IgQSBCdWZmZXIgdGhhdCBkZXNjcmliZSB0aGUgdHJhbnNhY3Rpb25cbiAgICovXG4gIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgdHJhbnNhY3Rpb25EZXNjcmlwdG9yPzogQnVmZmVyKSA9PiB2b2lkXG5cbnR5cGUgU2F2ZVRyYW5zYWN0aW9uQ2FsbGJhY2sgPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IHRvIHNldCBhIHNhdmVwb2ludCB3aXRoaW4gdGhlXG4gICAqIHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQsIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICogSWYgYW4gZXJyb3Igb2NjdXJyZWQgdGhlbiBgZXJyYCB3aWxsIGRlc2NyaWJlIHRoZSBlcnJvci5cbiAgICpcbiAgICogQXMgb25seSBvbmUgcmVxdWVzdCBhdCBhIHRpbWUgbWF5IGJlIGV4ZWN1dGVkIG9uIGEgY29ubmVjdGlvbiwgYW5vdGhlciByZXF1ZXN0IHNob3VsZCBub3RcbiAgICogYmUgaW5pdGlhdGVkIHVudGlsIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIElmIGFuIGVycm9yIG9jY3VycmVkLCBhbiBbW0Vycm9yXV0gb2JqZWN0IHdpdGggZGV0YWlscyBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG5cbnR5cGUgQ29tbWl0VHJhbnNhY3Rpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgdG8gY29tbWl0IHRoZSB0cmFuc2FjdGlvbiBoYXMgY29tcGxldGVkLFxuICAgKiBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG9yIHdpdGggYW4gZXJyb3IuXG4gICAqIElmIGFuIGVycm9yIG9jY3VycmVkIHRoZW4gYGVycmAgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gICAqIGJlIGluaXRpYXRlZCB1bnRpbCB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gW1tFcnJvcl1dIG9iamVjdCB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXG50eXBlIFJvbGxiYWNrVHJhbnNhY3Rpb25DYWxsYmFjayA9XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgdG8gcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uIGhhc1xuICAgKiBjb21wbGV0ZWQsIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICogSWYgYW4gZXJyb3Igb2NjdXJyZWQgdGhlbiBlcnIgd2lsbCBkZXNjcmliZSB0aGUgZXJyb3IuXG4gICAqXG4gICAqIEFzIG9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24sIGFub3RoZXIgcmVxdWVzdCBzaG91bGQgbm90XG4gICAqIGJlIGluaXRpYXRlZCB1bnRpbCB0aGlzIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gW1tFcnJvcl1dIG9iamVjdCB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKi9cbiAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXG50eXBlIFJlc2V0Q2FsbGJhY2sgPVxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBjb25uZWN0aW9uIHJlc2V0IGhhcyBjb21wbGV0ZWQsXG4gICAqIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICpcbiAgICogSWYgYW4gZXJyb3Igb2NjdXJyZWQgdGhlbiBgZXJyYCB3aWxsIGRlc2NyaWJlIHRoZSBlcnJvci5cbiAgICpcbiAgICogQXMgb25seSBvbmUgcmVxdWVzdCBhdCBhIHRpbWUgbWF5IGJlIGV4ZWN1dGVkIG9uIGEgY29ubmVjdGlvbiwgYW5vdGhlclxuICAgKiByZXF1ZXN0IHNob3VsZCBub3QgYmUgaW5pdGlhdGVkIHVudGlsIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkXG4gICAqXG4gICAqIEBwYXJhbSBlcnIgSWYgYW4gZXJyb3Igb2NjdXJyZWQsIGFuIFtbRXJyb3JdXSBvYmplY3Qgd2l0aCBkZXRhaWxzIG9mIHRoZSBlcnJvci5cbiAgICovXG4gIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xudHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrPFQgZXh0ZW5kcyAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPiA9XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgdG8gc3RhcnQgYSB0cmFuc2FjdGlvbiAob3IgY3JlYXRlIGEgc2F2ZXBvaW50LCBpblxuICAgKiB0aGUgY2FzZSBvZiBhIG5lc3RlZCB0cmFuc2FjdGlvbikgaGFzIGNvbXBsZXRlZCwgZWl0aGVyIHN1Y2Nlc3NmdWxseSBvciB3aXRoIGFuIGVycm9yLlxuICAgKiBJZiBhbiBlcnJvciBvY2N1cnJlZCwgdGhlbiBgZXJyYCB3aWxsIGRlc2NyaWJlIHRoZSBlcnJvci5cbiAgICogSWYgbm8gZXJyb3Igb2NjdXJyZWQsIHRoZSBjYWxsYmFjayBzaG91bGQgcGVyZm9ybSBpdHMgd29yayBhbmQgZXZlbnR1YWxseSBjYWxsXG4gICAqIGBkb25lYCB3aXRoIGFuIGVycm9yIG9yIG51bGwgKHRvIHRyaWdnZXIgYSB0cmFuc2FjdGlvbiByb2xsYmFjayBvciBhXG4gICAqIHRyYW5zYWN0aW9uIGNvbW1pdCkgYW5kIGFuIGFkZGl0aW9uYWwgY29tcGxldGlvbiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3RcbiAgICogdG8gcm9sbGJhY2sgb3IgY29tbWl0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGhhcyBjb21wbGV0ZWQsIGVpdGhlciBzdWNjZXNzZnVsbHkgb3Igd2l0aCBhbiBlcnJvci5cbiAgICogQWRkaXRpb25hbCBhcmd1bWVudHMgZ2l2ZW4gdG8gYGRvbmVgIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdG8gdGhpcyBjYWxsYmFjay5cbiAgICpcbiAgICogQXMgb25seSBvbmUgcmVxdWVzdCBhdCBhIHRpbWUgbWF5IGJlIGV4ZWN1dGVkIG9uIGEgY29ubmVjdGlvbiwgYW5vdGhlciByZXF1ZXN0IHNob3VsZCBub3RcbiAgICogYmUgaW5pdGlhdGVkIHVudGlsIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnJvciBvY2N1cnJlZCwgYW4gW1tFcnJvcl1dIG9iamVjdCB3aXRoIGRldGFpbHMgb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0gdHhEb25lIElmIG5vIGVycm9yIG9jY3VycmVkLCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byBjb21taXQgb3Igcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCB0eERvbmU/OiBUcmFuc2FjdGlvbkRvbmU8VD4pID0+IHZvaWQ7XG5cbnR5cGUgVHJhbnNhY3Rpb25Eb25lQ2FsbGJhY2sgPSAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xudHlwZSBDYWxsYmFja1BhcmFtZXRlcnM8VCBleHRlbmRzIChlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgLi4uYXJnczogYW55W10pID0+IGFueT4gPSBUIGV4dGVuZHMgKGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCAuLi5hcmdzOiBpbmZlciBQKSA9PiBhbnkgPyBQIDogbmV2ZXI7XG5cbnR5cGUgVHJhbnNhY3Rpb25Eb25lPFQgZXh0ZW5kcyAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPiA9XG4gIC8qKlxuICAgKiBJZiBubyBlcnJvciBvY2N1cnJlZCwgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gY29tbWl0IG9yIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGVyciBJZiBhbiBlcnIgb2NjdXJyZWQsIGEgc3RyaW5nIHdpdGggZGV0YWlscyBvZiB0aGUgZXJyb3IuXG4gICAqL1xuICAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIGRvbmU6IFQsIC4uLmFyZ3M6IENhbGxiYWNrUGFyYW1ldGVyczxUPikgPT4gdm9pZDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBLRUVQX0FMSVZFX0lOSVRJQUxfREVMQVkgPSAzMCAqIDEwMDA7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09OTkVDVF9USU1FT1VUID0gMTUgKiAxMDAwO1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX0NMSUVOVF9SRVFVRVNUX1RJTUVPVVQgPSAxNSAqIDEwMDA7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfQ0FOQ0VMX1RJTUVPVVQgPSA1ICogMTAwMDtcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9DT05ORUNUX1JFVFJZX0lOVEVSVkFMID0gNTAwO1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX1BBQ0tFVF9TSVpFID0gNCAqIDEwMjQ7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfVEVYVFNJWkUgPSAyMTQ3NDgzNjQ3O1xuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBERUZBVUxUX0RBVEVGSVJTVCA9IDc7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfUE9SVCA9IDE0MzM7XG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IERFRkFVTFRfVERTX1ZFUlNJT04gPSAnN180Jztcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9MQU5HVUFHRSA9ICd1c19lbmdsaXNoJztcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgREVGQVVMVF9EQVRFRk9STUFUID0gJ21keSc7XG5cbmludGVyZmFjZSBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZSc7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBJZiB5b3UgdXNlciB3YW50IHRvIGNvbm5lY3QgdG8gYW4gQXp1cmUgYXBwIHNlcnZpY2UgdXNpbmcgYSBzcGVjaWZpYyBjbGllbnQgYWNjb3VudFxuICAgICAqIHRoZXkgbmVlZCB0byBwcm92aWRlIGBjbGllbnRJZGAgYXNzb2NpYXRlIHRvIHRoZWlyIGNyZWF0ZWQgaWRlbnRpdHkuXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIG9wdGlvbmFsIGZvciByZXRyaWV2ZSB0b2tlbiBmcm9tIGF6dXJlIHdlYiBhcHAgc2VydmljZVxuICAgICAqL1xuICAgIGNsaWVudElkPzogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgQXp1cmVBY3RpdmVEaXJlY3RvcnlNc2lWbUF1dGhlbnRpY2F0aW9uIHtcbiAgdHlwZTogJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLXZtJztcbiAgb3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGNvbm5lY3QgdXNpbmcgYSBzcGVjaWZpYyBjbGllbnQgYWNjb3VudFxuICAgICAqIHRoZXkgbmVlZCB0byBwcm92aWRlIGBjbGllbnRJZGAgYXNzb2NpYXRlZCB0byB0aGVpciBjcmVhdGVkIGlkZW50aXR5LlxuICAgICAqXG4gICAgICogVGhpcyBpcyBvcHRpb25hbCBmb3IgcmV0cmlldmUgYSB0b2tlblxuICAgICAqL1xuICAgIGNsaWVudElkPzogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgQXp1cmVBY3RpdmVEaXJlY3RvcnlEZWZhdWx0QXV0aGVudGljYXRpb24ge1xuICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0JztcbiAgb3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGNvbm5lY3QgdXNpbmcgYSBzcGVjaWZpYyBjbGllbnQgYWNjb3VudFxuICAgICAqIHRoZXkgbmVlZCB0byBwcm92aWRlIGBjbGllbnRJZGAgYXNzb2NpYXRlZCB0byB0aGVpciBjcmVhdGVkIGlkZW50aXR5LlxuICAgICAqXG4gICAgICogVGhpcyBpcyBvcHRpb25hbCBmb3IgcmV0cmlldmluZyBhIHRva2VuXG4gICAgICovXG4gICAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIH07XG59XG5cblxuaW50ZXJmYWNlIEF6dXJlQWN0aXZlRGlyZWN0b3J5QWNjZXNzVG9rZW5BdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbic7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBBIHVzZXIgbmVlZCB0byBwcm92aWRlIGB0b2tlbmAgd2hpY2ggdGhleSByZXRyaWV2ZWQgZWxzZSB3aGVyZVxuICAgICAqIHRvIGZvcm1pbmcgdGhlIGNvbm5lY3Rpb24uXG4gICAgICovXG4gICAgdG9rZW46IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEF6dXJlQWN0aXZlRGlyZWN0b3J5UGFzc3dvcmRBdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJztcbiAgb3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIEEgdXNlciBuZWVkIHRvIHByb3ZpZGUgYHVzZXJOYW1lYCBhc3NvY2lhdGUgdG8gdGhlaXIgYWNjb3VudC5cbiAgICAgKi9cbiAgICB1c2VyTmFtZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQSB1c2VyIG5lZWQgdG8gcHJvdmlkZSBgcGFzc3dvcmRgIGFzc29jaWF0ZSB0byB0aGVpciBhY2NvdW50LlxuICAgICAqL1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIGNsaWVudCBpZCB0byB1c2UuXG4gICAgICovXG4gICAgY2xpZW50SWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHBhcmFtZXRlciBmb3Igc3BlY2lmaWMgQXp1cmUgdGVuYW50IElEXG4gICAgICovXG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEF6dXJlQWN0aXZlRGlyZWN0b3J5U2VydmljZVByaW5jaXBhbFNlY3JldCB7XG4gIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCc7XG4gIG9wdGlvbnM6IHtcbiAgICAvKipcbiAgICAgKiBBcHBsaWNhdGlvbiAoYGNsaWVudGApIElEIGZyb20geW91ciByZWdpc3RlcmVkIEF6dXJlIGFwcGxpY2F0aW9uXG4gICAgICovXG4gICAgY2xpZW50SWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgY3JlYXRlZCBgY2xpZW50IHNlY3JldGAgZm9yIHRoaXMgcmVnaXN0ZXJlZCBBenVyZSBhcHBsaWNhdGlvblxuICAgICAqL1xuICAgIGNsaWVudFNlY3JldDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIERpcmVjdG9yeSAoYHRlbmFudGApIElEIGZyb20geW91ciByZWdpc3RlcmVkIEF6dXJlIGFwcGxpY2F0aW9uXG4gICAgICovXG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIE50bG1BdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdudGxtJztcbiAgb3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIFVzZXIgbmFtZSBmcm9tIHlvdXIgd2luZG93cyBhY2NvdW50LlxuICAgICAqL1xuICAgIHVzZXJOYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGFzc3dvcmQgZnJvbSB5b3VyIHdpbmRvd3MgYWNjb3VudC5cbiAgICAgKi9cbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9uY2UgeW91IHNldCBkb21haW4gZm9yIG50bG0gYXV0aGVudGljYXRpb24gdHlwZSwgZHJpdmVyIHdpbGwgY29ubmVjdCB0byBTUUwgU2VydmVyIHVzaW5nIGRvbWFpbiBsb2dpbi5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBmb3JtaW5nIGEgY29ubmVjdGlvbiB1c2luZyBudGxtIHR5cGVcbiAgICAgKi9cbiAgICBkb21haW46IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIERlZmF1bHRBdXRoZW50aWNhdGlvbiB7XG4gIHR5cGU6ICdkZWZhdWx0JztcbiAgb3B0aW9uczoge1xuICAgIC8qKlxuICAgICAqIFVzZXIgbmFtZSB0byB1c2UgZm9yIHNxbCBzZXJ2ZXIgbG9naW4uXG4gICAgICovXG4gICAgdXNlck5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogUGFzc3dvcmQgdG8gdXNlIGZvciBzcWwgc2VydmVyIGxvZ2luLlxuICAgICAqL1xuICAgIHBhc3N3b3JkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgRXJyb3JXaXRoQ29kZSBleHRlbmRzIEVycm9yIHtcbiAgY29kZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEludGVybmFsQ29ubmVjdGlvbkNvbmZpZyB7XG4gIHNlcnZlcjogc3RyaW5nO1xuICBhdXRoZW50aWNhdGlvbjogRGVmYXVsdEF1dGhlbnRpY2F0aW9uIHwgTnRsbUF1dGhlbnRpY2F0aW9uIHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlQYXNzd29yZEF1dGhlbnRpY2F0aW9uIHwgQXp1cmVBY3RpdmVEaXJlY3RvcnlNc2lBcHBTZXJ2aWNlQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaVZtQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeUFjY2Vzc1Rva2VuQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeVNlcnZpY2VQcmluY2lwYWxTZWNyZXQgfCBBenVyZUFjdGl2ZURpcmVjdG9yeURlZmF1bHRBdXRoZW50aWNhdGlvbjtcbiAgb3B0aW9uczogSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbENvbm5lY3Rpb25PcHRpb25zIHtcbiAgYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3I6IGJvb2xlYW47XG4gIGFwcE5hbWU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgY2FtZWxDYXNlQ29sdW1uczogYm9vbGVhbjtcbiAgY2FuY2VsVGltZW91dDogbnVtYmVyO1xuICBjb2x1bW5FbmNyeXB0aW9uS2V5Q2FjaGVUVEw6IG51bWJlcjtcbiAgY29sdW1uRW5jcnlwdGlvblNldHRpbmc6IGJvb2xlYW47XG4gIGNvbHVtbk5hbWVSZXBsYWNlcjogdW5kZWZpbmVkIHwgKChjb2xOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gc3RyaW5nKTtcbiAgY29ubmVjdGlvblJldHJ5SW50ZXJ2YWw6IG51bWJlcjtcbiAgY29ubmVjdG9yOiB1bmRlZmluZWQgfCAoKCkgPT4gUHJvbWlzZTxuZXQuU29ja2V0Pik7XG4gIGNvbm5lY3RUaW1lb3V0OiBudW1iZXI7XG4gIGNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbDogdHlwZW9mIElTT0xBVElPTl9MRVZFTFtrZXlvZiB0eXBlb2YgSVNPTEFUSU9OX0xFVkVMXTtcbiAgY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzOiBTZWN1cmVDb250ZXh0T3B0aW9ucztcbiAgZGF0YWJhc2U6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgZGF0ZWZpcnN0OiBudW1iZXI7XG4gIGRhdGVGb3JtYXQ6IHN0cmluZztcbiAgZGVidWc6IHtcbiAgICBkYXRhOiBib29sZWFuO1xuICAgIHBhY2tldDogYm9vbGVhbjtcbiAgICBwYXlsb2FkOiBib29sZWFuO1xuICAgIHRva2VuOiBib29sZWFuO1xuICB9O1xuICBlbmFibGVBbnNpTnVsbDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUFuc2lOdWxsRGVmYXVsdDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUFuc2lQYWRkaW5nOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQW5zaVdhcm5pbmdzOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQXJpdGhBYm9ydDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdDogbnVsbCB8IGJvb2xlYW47XG4gIGVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ6IG51bGwgfCBib29sZWFuO1xuICBlbmFibGVRdW90ZWRJZGVudGlmaWVyOiBudWxsIHwgYm9vbGVhbjtcbiAgZW5jcnlwdDogc3RyaW5nIHwgYm9vbGVhbjtcbiAgZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzOiBLZXlTdG9yZVByb3ZpZGVyTWFwIHwgdW5kZWZpbmVkO1xuICBmYWxsYmFja1RvRGVmYXVsdERiOiBib29sZWFuO1xuICBpbnN0YW5jZU5hbWU6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgaXNvbGF0aW9uTGV2ZWw6IHR5cGVvZiBJU09MQVRJT05fTEVWRUxba2V5b2YgdHlwZW9mIElTT0xBVElPTl9MRVZFTF07XG4gIGxhbmd1YWdlOiBzdHJpbmc7XG4gIGxvY2FsQWRkcmVzczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICBtYXhSZXRyaWVzT25UcmFuc2llbnRFcnJvcnM6IG51bWJlcjtcbiAgbXVsdGlTdWJuZXRGYWlsb3ZlcjogYm9vbGVhbjtcbiAgcGFja2V0U2l6ZTogbnVtYmVyO1xuICBwb3J0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gIHJlYWRPbmx5SW50ZW50OiBib29sZWFuO1xuICByZXF1ZXN0VGltZW91dDogbnVtYmVyO1xuICByb3dDb2xsZWN0aW9uT25Eb25lOiBib29sZWFuO1xuICByb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbjogYm9vbGVhbjtcbiAgc2VydmVyTmFtZTogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICBzZXJ2ZXJTdXBwb3J0c0NvbHVtbkVuY3J5cHRpb246IGJvb2xlYW47XG4gIHRkc1ZlcnNpb246IHN0cmluZztcbiAgdGV4dHNpemU6IG51bWJlcjtcbiAgdHJ1c3RlZFNlcnZlck5hbWVBRTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB0cnVzdFNlcnZlckNlcnRpZmljYXRlOiBib29sZWFuO1xuICB1c2VDb2x1bW5OYW1lczogYm9vbGVhbjtcbiAgdXNlVVRDOiBib29sZWFuO1xuICB3b3Jrc3RhdGlvbklkOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gIGxvd2VyQ2FzZUd1aWRzOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgS2V5U3RvcmVQcm92aWRlck1hcCB7XG4gIFtrZXk6IHN0cmluZ106IENvbHVtbkVuY3J5cHRpb25BenVyZUtleVZhdWx0UHJvdmlkZXI7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuaW50ZXJmYWNlIFN0YXRlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBlbnRlcj8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gIGV4aXQ/KHRoaXM6IENvbm5lY3Rpb24sIG5ld1N0YXRlOiBTdGF0ZSk6IHZvaWQ7XG4gIGV2ZW50czoge1xuICAgIHNvY2tldEVycm9yPyh0aGlzOiBDb25uZWN0aW9uLCBlcnI6IEVycm9yKTogdm9pZDtcbiAgICBjb25uZWN0VGltZW91dD8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gICAgbWVzc2FnZT8odGhpczogQ29ubmVjdGlvbiwgbWVzc2FnZTogTWVzc2FnZSk6IHZvaWQ7XG4gICAgcmV0cnk/KHRoaXM6IENvbm5lY3Rpb24pOiB2b2lkO1xuICAgIHJlY29ubmVjdD8odGhpczogQ29ubmVjdGlvbik6IHZvaWQ7XG4gIH07XG59XG5cbnR5cGUgQXV0aGVudGljYXRpb24gPSBEZWZhdWx0QXV0aGVudGljYXRpb24gfFxuICBOdGxtQXV0aGVudGljYXRpb24gfFxuICBBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24gfFxuICBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbiB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5TXNpVm1BdXRoZW50aWNhdGlvbiB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5QWNjZXNzVG9rZW5BdXRoZW50aWNhdGlvbiB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5U2VydmljZVByaW5jaXBhbFNlY3JldCB8XG4gIEF6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uO1xuXG50eXBlIEF1dGhlbnRpY2F0aW9uVHlwZSA9IEF1dGhlbnRpY2F0aW9uWyd0eXBlJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogSG9zdG5hbWUgdG8gY29ubmVjdCB0by5cbiAgICovXG4gIHNlcnZlcjogc3RyaW5nO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBmb3JtaW5nIHRoZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgb3B0aW9ucz86IENvbm5lY3Rpb25PcHRpb25zO1xuICAvKipcbiAgICogQXV0aGVudGljYXRpb24gcmVsYXRlZCBvcHRpb25zIGZvciBjb25uZWN0aW9uLlxuICAgKi9cbiAgYXV0aGVudGljYXRpb24/OiBBdXRoZW50aWNhdGlvbk9wdGlvbnM7XG59XG5cbmludGVyZmFjZSBEZWJ1Z09wdGlvbnMge1xuICAvKipcbiAgICogQSBib29sZWFuLCBjb250cm9sbGluZyB3aGV0aGVyIFtbZGVidWddXSBldmVudHMgd2lsbCBiZSBlbWl0dGVkIHdpdGggdGV4dCBkZXNjcmliaW5nIHBhY2tldCBkYXRhIGRldGFpbHNcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBkYXRhOiBib29sZWFuO1xuICAvKipcbiAgICogQSBib29sZWFuLCBjb250cm9sbGluZyB3aGV0aGVyIFtbZGVidWddXSBldmVudHMgd2lsbCBiZSBlbWl0dGVkIHdpdGggdGV4dCBkZXNjcmliaW5nIHBhY2tldCBkZXRhaWxzXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgcGFja2V0OiBib29sZWFuO1xuICAvKipcbiAgICogQSBib29sZWFuLCBjb250cm9sbGluZyB3aGV0aGVyIFtbZGVidWddXSBldmVudHMgd2lsbCBiZSBlbWl0dGVkIHdpdGggdGV4dCBkZXNjcmliaW5nIHBhY2tldCBwYXlsb2FkIGRldGFpbHNcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBwYXlsb2FkOiBib29sZWFuO1xuICAvKipcbiAgICogQSBib29sZWFuLCBjb250cm9sbGluZyB3aGV0aGVyIFtbZGVidWddXSBldmVudHMgd2lsbCBiZSBlbWl0dGVkIHdpdGggdGV4dCBkZXNjcmliaW5nIHRva2VuIHN0cmVhbSB0b2tlbnNcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICB0b2tlbjogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEF1dGhlbnRpY2F0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QsIHZhbGlkIHR5cGVzIGFyZSBgZGVmYXVsdGAsIGBudGxtYCxcbiAgICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmRgLCBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1hY2Nlc3MtdG9rZW5gLFxuICAgKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm1gLCBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2VgLFxuICAgKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0YFxuICAgKiBvciBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXRgXG4gICAqL1xuICB0eXBlPzogQXV0aGVudGljYXRpb25UeXBlO1xuICAvKipcbiAgICogRGlmZmVyZW50IG9wdGlvbnMgZm9yIGF1dGhlbnRpY2F0aW9uIHR5cGVzOlxuICAgKlxuICAgKiAqIGBkZWZhdWx0YDogW1tEZWZhdWx0QXV0aGVudGljYXRpb24ub3B0aW9uc11dXG4gICAqICogYG50bG1gIDpbW050bG1BdXRoZW50aWNhdGlvbl1dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmRgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24ub3B0aW9uc11dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuYCA6IFtbQXp1cmVBY3RpdmVEaXJlY3RvcnlBY2Nlc3NUb2tlbkF1dGhlbnRpY2F0aW9uLm9wdGlvbnNdXVxuICAgKiAqIGBhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bWAgOiBbW0F6dXJlQWN0aXZlRGlyZWN0b3J5TXNpVm1BdXRoZW50aWNhdGlvbi5vcHRpb25zXV1cbiAgICogKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2VgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbi5vcHRpb25zXV1cbiAgICogKiBgYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXRgIDogW1tBenVyZUFjdGl2ZURpcmVjdG9yeVNlcnZpY2VQcmluY2lwYWxTZWNyZXQub3B0aW9uc11dXG4gICAqICogYGF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktZGVmYXVsdGAgOiBbW0F6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uLm9wdGlvbnNdXVxuICAgKi9cbiAgb3B0aW9ucz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0byByb2xsYmFjayBhIHRyYW5zYWN0aW9uIGF1dG9tYXRpY2FsbHkgaWYgYW55IGVycm9yIGlzIGVuY291bnRlcmVkXG4gICAqIGR1cmluZyB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24ncyBleGVjdXRpb24uIFRoaXMgc2V0cyB0aGUgdmFsdWUgZm9yIGBTRVQgWEFDVF9BQk9SVGAgZHVyaW5nIHRoZVxuICAgKiBpbml0aWFsIFNRTCBwaGFzZSBvZiBhIGNvbm5lY3Rpb24gW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC14YWN0LWFib3J0LXRyYW5zYWN0LXNxbCkuXG4gICAqL1xuICBhYm9ydFRyYW5zYWN0aW9uT25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIG5hbWUgdXNlZCBmb3IgaWRlbnRpZnlpbmcgYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBpbiBwcm9maWxpbmcsIGxvZ2dpbmcgb3IgdHJhY2luZyB0b29scyBvZiBTUUxTZXJ2ZXIuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgVGVkaW91c2ApXG4gICAqL1xuICBhcHBOYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xsaW5nIHdoZXRoZXIgdGhlIGNvbHVtbiBuYW1lcyByZXR1cm5lZCB3aWxsIGhhdmUgdGhlIGZpcnN0IGxldHRlciBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZVxuICAgKiAoYHRydWVgKSBvciBub3QuIFRoaXMgdmFsdWUgaXMgaWdub3JlZCBpZiB5b3UgcHJvdmlkZSBhIFtbY29sdW1uTmFtZVJlcGxhY2VyXV0uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKS5cbiAgICovXG4gIGNhbWVsQ2FzZUNvbHVtbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIFtbUmVxdWVzdC5jYW5jZWxdXSAoYWJvcnQpIG9mIGEgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZhaWxlZFxuICAgKlxuICAgKiAoZGVmYXVsdDogYDUwMDBgKS5cbiAgICovXG4gIGNhbmNlbFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIGAoY29sdW1uTmFtZSwgaW5kZXgsIGNvbHVtbk1ldGFEYXRhKWAgYW5kIHJldHVybmluZyBhIHN0cmluZy4gSWYgcHJvdmlkZWQsXG4gICAqIHRoaXMgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIgY29sdW1uIHBlciByZXN1bHQtc2V0LiBUaGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIFNRTC1wcm92aWRlZFxuICAgKiBjb2x1bW4gbmFtZSBvbiByb3cgYW5kIG1ldGEgZGF0YSBvYmplY3RzLiBUaGlzIGFsbG93cyB5b3UgdG8gZHluYW1pY2FsbHkgY29udmVydCBiZXR3ZWVuIG5hbWluZyBjb252ZW50aW9ucy5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBudWxsYClcbiAgICovXG4gIGNvbHVtbk5hbWVSZXBsYWNlcj86IChjb2xOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJlZm9yZSByZXRyeWluZyB0byBlc3RhYmxpc2ggY29ubmVjdGlvbiwgaW4gY2FzZSBvZiB0cmFuc2llbnQgZmFpbHVyZS5cbiAgICpcbiAgICogKGRlZmF1bHQ6YDUwMGApXG4gICAqL1xuICBjb25uZWN0aW9uUmV0cnlJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3VzdG9tIGNvbm5lY3RvciBmYWN0b3J5IG1ldGhvZC5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGB1bmRlZmluZWRgKVxuICAgKi9cbiAgY29ubmVjdG9yPzogKCkgPT4gUHJvbWlzZTxuZXQuU29ja2V0PjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIHRoZSBhdHRlbXB0IHRvIGNvbm5lY3QgaXMgY29uc2lkZXJlZCBmYWlsZWRcbiAgICpcbiAgICogKGRlZmF1bHQ6IGAxNTAwMGApLlxuICAgKi9cbiAgY29ubmVjdFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGlzb2xhdGlvbiBsZXZlbCBmb3IgbmV3IGNvbm5lY3Rpb25zLiBBbGwgb3V0LW9mLXRyYW5zYWN0aW9uIHF1ZXJpZXMgYXJlIGV4ZWN1dGVkIHdpdGggdGhpcyBzZXR0aW5nLlxuICAgKlxuICAgKiBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAqIGBSRUFEX0NPTU1JVFRFRGBcbiAgICogKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICogYFNOQVBTSE9UYFxuICAgKlxuICAgKiAoZGVmYXVsdDogYFJFQURfQ09NTUlURURgKS5cbiAgICovXG4gIGNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbD86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiBlbmNyeXB0aW9uIGlzIHVzZWQsIGFuIG9iamVjdCBtYXkgYmUgc3VwcGxpZWQgdGhhdCB3aWxsIGJlIHVzZWRcbiAgICogZm9yIHRoZSBmaXJzdCBhcmd1bWVudCB3aGVuIGNhbGxpbmcgW2B0bHMuY3JlYXRlU2VjdXJlUGFpcmBdKGh0dHA6Ly9ub2RlanMub3JnL2RvY3MvbGF0ZXN0L2FwaS90bHMuaHRtbCN0bHNfdGxzX2NyZWF0ZXNlY3VyZXBhaXJfY3JlZGVudGlhbHNfaXNzZXJ2ZXJfcmVxdWVzdGNlcnRfcmVqZWN0dW5hdXRob3JpemVkKVxuICAgKlxuICAgKiAoZGVmYXVsdDogYHt9YClcbiAgICovXG4gIGNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscz86IFNlY3VyZUNvbnRleHRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSB0byBjb25uZWN0IHRvIChkZWZhdWx0OiBkZXBlbmRlbnQgb24gc2VydmVyIGNvbmZpZ3VyYXRpb24pLlxuICAgKi9cbiAgZGF0YWJhc2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayB0byBhIG51bWJlciBmcm9tIDEgdGhyb3VnaCA3LlxuICAgKi9cbiAgZGF0ZWZpcnN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgcG9zaXRpb24gb2YgbW9udGgsIGRheSBhbmQgeWVhciBpbiB0ZW1wb3JhbCBkYXRhdHlwZXMuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgbWR5YClcbiAgICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgZGVidWc/OiBEZWJ1Z09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiwgY29udHJvbHMgdGhlIHdheSBudWxsIHZhbHVlcyBzaG91bGQgYmUgdXNlZCBkdXJpbmcgY29tcGFyaXNvbiBvcGVyYXRpb24uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVBbnNpTnVsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIGBTRVQgQU5TSV9OVUxMX0RGTFRfT04gT05gIHdpbGwgYmUgc2V0IGluIHRoZSBpbml0aWFsIHNxbC4gVGhpcyBtZWFucyBuZXcgY29sdW1ucyB3aWxsIGJlXG4gICAqIG51bGxhYmxlIGJ5IGRlZmF1bHQuIFNlZSB0aGUgW1QtU1FMIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXMxODczNzUuYXNweClcbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYCkuXG4gICAqL1xuICBlbmFibGVBbnNpTnVsbERlZmF1bHQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xzIGlmIHBhZGRpbmcgc2hvdWxkIGJlIGFwcGxpZWQgZm9yIHZhbHVlcyBzaG9ydGVyIHRoYW4gdGhlIHNpemUgb2YgZGVmaW5lZCBjb2x1bW4uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVBbnNpUGFkZGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIFNRTCBTZXJ2ZXIgd2lsbCBmb2xsb3cgSVNPIHN0YW5kYXJkIGJlaGF2aW9yIGR1cmluZyB2YXJpb3VzIGVycm9yIGNvbmRpdGlvbnMuIEZvciBkZXRhaWxzLFxuICAgKiBzZWUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC1hbnNpLXdhcm5pbmdzLXRyYW5zYWN0LXNxbClcbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYClcbiAgICovXG4gIGVuYWJsZUFuc2lXYXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuZHMgYSBxdWVyeSB3aGVuIGFuIG92ZXJmbG93IG9yIGRpdmlkZS1ieS16ZXJvIGVycm9yIG9jY3VycyBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLlxuICAgKiBTZWUgW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3NxbC90LXNxbC9zdGF0ZW1lbnRzL3NldC1hcml0aGFib3J0LXRyYW5zYWN0LXNxbD92aWV3PXNxbC1zZXJ2ZXItMjAxNylcbiAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGB0cnVlYClcbiAgICovXG4gIGVuYWJsZUFyaXRoQWJvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGRldGVybWluZXMgaWYgY29uY2F0ZW5hdGlvbiB3aXRoIE5VTEwgc2hvdWxkIHJlc3VsdCBpbiBOVUxMIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSwgbW9yZSBkZXRhaWxzIGluXG4gICAqIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9zcWwvdC1zcWwvc3RhdGVtZW50cy9zZXQtY29uY2F0LW51bGwteWllbGRzLW51bGwtdHJhbnNhY3Qtc3FsKVxuICAgKlxuICAgKiAoZGVmYXVsdDogYHRydWVgKVxuICAgKi9cbiAgZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGNvbnRyb2xzIHdoZXRoZXIgY3Vyc29yIHNob3VsZCBiZSBjbG9zZWQsIGlmIHRoZSB0cmFuc2FjdGlvbiBvcGVuaW5nIGl0IGdldHMgY29tbWl0dGVkIG9yIHJvbGxlZFxuICAgKiBiYWNrLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYG51bGxgKVxuICAgKi9cbiAgZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdD86IGJvb2xlYW4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIHNldHMgdGhlIGNvbm5lY3Rpb24gdG8gZWl0aGVyIGltcGxpY2l0IG9yIGF1dG9jb21taXQgdHJhbnNhY3Rpb24gbW9kZS5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBlbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBlcnJvciBpcyBub3QgZ2VuZXJhdGVkIGR1cmluZyBsb3NzIG9mIHByZWNlc3Npb24uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKi9cbiAgZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBjaGFyYWN0ZXJzIGVuY2xvc2VkIGluIHNpbmdsZSBxdW90ZXMgYXJlIHRyZWF0ZWQgYXMgbGl0ZXJhbHMgYW5kIHRob3NlIGVuY2xvc2VkIGRvdWJsZSBxdW90ZXMgYXJlIHRyZWF0ZWQgYXMgaWRlbnRpZmllcnMuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmFibGVRdW90ZWRJZGVudGlmaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBzdHJpbmcgdmFsdWUgdGhhdCBjYW4gYmUgb25seSBzZXQgdG8gJ3N0cmljdCcsIHdoaWNoIGluZGljYXRlcyB0aGUgdXNhZ2UgVERTIDguMCBwcm90b2NvbC4gT3RoZXJ3aXNlLFxuICAgKiBhIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdGhlIGNvbm5lY3Rpb24gd2lsbCBiZSBlbmNyeXB0ZWQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICBlbmNyeXB0Pzogc3RyaW5nIHwgYm9vbGVhbjtcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCwgaWYgdGhlIGRhdGFiYXNlIHJlcXVlc3RlZCBieSBbW2RhdGFiYXNlXV0gY2Fubm90IGJlIGFjY2Vzc2VkLFxuICAgKiB0aGUgY29ubmVjdGlvbiB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvci4gSG93ZXZlciwgaWYgW1tmYWxsYmFja1RvRGVmYXVsdERiXV0gaXNcbiAgICogc2V0IHRvIGB0cnVlYCwgdGhlbiB0aGUgdXNlcidzIGRlZmF1bHQgZGF0YWJhc2Ugd2lsbCBiZSB1c2VkIGluc3RlYWRcbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBmYWxsYmFja1RvRGVmYXVsdERiPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIG5hbWUgdG8gY29ubmVjdCB0by5cbiAgICogVGhlIFNRTCBTZXJ2ZXIgQnJvd3NlciBzZXJ2aWNlIG11c3QgYmUgcnVubmluZyBvbiB0aGUgZGF0YWJhc2Ugc2VydmVyLFxuICAgKiBhbmQgVURQIHBvcnQgMTQzNCBvbiB0aGUgZGF0YWJhc2Ugc2VydmVyIG11c3QgYmUgcmVhY2hhYmxlLlxuICAgKlxuICAgKiAobm8gZGVmYXVsdClcbiAgICpcbiAgICogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggW1twb3J0XV0uXG4gICAqL1xuICBpbnN0YW5jZU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGlzb2xhdGlvbiBsZXZlbCB0aGF0IHRyYW5zYWN0aW9ucyB3aWxsIGJlIHJ1biB3aXRoLlxuICAgKlxuICAgKiBUaGUgaXNvbGF0aW9uIGxldmVscyBhcmUgYXZhaWxhYmxlIGZyb20gYHJlcXVpcmUoJ3RlZGlvdXMnKS5JU09MQVRJT05fTEVWRUxgLlxuICAgKiAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAqIGBSRUFEX0NPTU1JVFRFRGBcbiAgICogKiBgUkVQRUFUQUJMRV9SRUFEYFxuICAgKiAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICogYFNOQVBTSE9UYFxuICAgKlxuICAgKiAoZGVmYXVsdDogYFJFQURfQ09NTUlURURgKS5cbiAgICovXG4gIGlzb2xhdGlvbkxldmVsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxhbmd1YWdlIGVudmlyb25tZW50IGZvciB0aGUgc2Vzc2lvbi4gVGhlIHNlc3Npb24gbGFuZ3VhZ2UgZGV0ZXJtaW5lcyB0aGUgZGF0ZXRpbWUgZm9ybWF0cyBhbmQgc3lzdGVtIG1lc3NhZ2VzLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYHVzX2VuZ2xpc2hgKS5cbiAgICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBpbmRpY2F0aW5nIHdoaWNoIG5ldHdvcmsgaW50ZXJmYWNlIChpcCBhZGRyZXNzKSB0byB1c2Ugd2hlbiBjb25uZWN0aW5nIHRvIFNRTCBTZXJ2ZXIuXG4gICAqL1xuICBsb2NhbEFkZHJlc3M/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHBhcnNlIHVuaXF1ZSBpZGVudGlmaWVyIHR5cGUgd2l0aCBsb3dlcmNhc2UgY2FzZSBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYCkuXG4gICAqL1xuICBsb3dlckNhc2VHdWlkcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9uIHJldHJpZXMgZm9yIHRyYW5zaWVudCBlcnJvcnMu44CBXG4gICAqXG4gICAqIChkZWZhdWx0OiBgM2ApLlxuICAgKi9cbiAgbWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBNdWx0aVN1Ym5ldEZhaWxvdmVyID0gVHJ1ZSBwYXJhbWV0ZXIsIHdoaWNoIGNhbiBoZWxwIG1pbmltaXplIHRoZSBjbGllbnQgcmVjb3ZlcnkgbGF0ZW5jeSB3aGVuIGZhaWxvdmVycyBvY2N1ci5cbiAgICpcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApLlxuICAgKi9cbiAgbXVsdGlTdWJuZXRGYWlsb3Zlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIFREUyBwYWNrZXRzIChzdWJqZWN0IHRvIG5lZ290aWF0aW9uIHdpdGggdGhlIHNlcnZlcikuXG4gICAqIFNob3VsZCBiZSBhIHBvd2VyIG9mIDIuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgNDA5NmApLlxuICAgKi9cbiAgcGFja2V0U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogUG9ydCB0byBjb25uZWN0IHRvIChkZWZhdWx0OiBgMTQzM2ApLlxuICAgKlxuICAgKiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBbW2luc3RhbmNlTmFtZV1dXG4gICAqL1xuICBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGNvbm5lY3Rpb24gd2lsbCByZXF1ZXN0IHJlYWQgb25seSBhY2Nlc3MgZnJvbSBhIFNRTCBTZXJ2ZXIgQXZhaWxhYmlsaXR5XG4gICAqIEdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtoZXJlXShodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaGg3MTAwNTQuYXNweCBcIk1pY3Jvc29mdDogQ29uZmlndXJlIFJlYWQtT25seSBSb3V0aW5nIGZvciBhbiBBdmFpbGFiaWxpdHkgR3JvdXAgKFNRTCBTZXJ2ZXIpXCIpXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKS5cbiAgICovXG4gIHJlYWRPbmx5SW50ZW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIGEgcmVxdWVzdCBpcyBjb25zaWRlcmVkIGZhaWxlZCwgb3IgYDBgIGZvciBubyB0aW1lb3V0LlxuICAgKlxuICAgKiBBcyBzb29uIGFzIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIHRoZSB0aW1lb3V0IGlzIGNsZWFyZWQuIFRoaXMgbWVhbnMgdGhhdCBxdWVyaWVzIHRoYXQgaW1tZWRpYXRlbHkgcmV0dXJuIGEgcmVzcG9uc2UgaGF2ZSBhYmlsaXR5IHRvIHJ1biBsb25nZXIgdGhhbiB0aGlzIHRpbWVvdXQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgMTUwMDBgKS5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIHRoYXQgd2hlbiB0cnVlIHdpbGwgZXhwb3NlIHJlY2VpdmVkIHJvd3MgaW4gUmVxdWVzdHMgZG9uZSByZWxhdGVkIGV2ZW50czpcbiAgICogKiBbW1JlcXVlc3QuRXZlbnRfZG9uZUluUHJvY11dXG4gICAqICogW1tSZXF1ZXN0LkV2ZW50X2RvbmVQcm9jXV1cbiAgICogKiBbW1JlcXVlc3QuRXZlbnRfZG9uZV1dXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKlxuICAgKiBDYXV0aW9uOiBJZiBtYW55IHJvdyBhcmUgcmVjZWl2ZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNvdWxkIHJlc3VsdCBpblxuICAgKiBleGNlc3NpdmUgbWVtb3J5IHVzYWdlLlxuICAgKi9cbiAgcm93Q29sbGVjdGlvbk9uRG9uZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiwgdGhhdCB3aGVuIHRydWUgd2lsbCBleHBvc2UgcmVjZWl2ZWQgcm93cyBpbiBSZXF1ZXN0cycgY29tcGxldGlvbiBjYWxsYmFjay5TZWUgW1tSZXF1ZXN0LmNvbnN0cnVjdG9yXV0uXG4gICAqXG4gICAqIChkZWZhdWx0OiBgZmFsc2VgKVxuICAgKlxuICAgKiBDYXV0aW9uOiBJZiBtYW55IHJvdyBhcmUgcmVjZWl2ZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIGNvdWxkIHJlc3VsdCBpblxuICAgKiBleGNlc3NpdmUgbWVtb3J5IHVzYWdlLlxuICAgKi9cbiAgcm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiBURFMgdG8gdXNlLiBJZiBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IHNwZWNpZmllZCB2ZXJzaW9uLCBuZWdvdGlhdGVkIHZlcnNpb24gaXMgdXNlZCBpbnN0ZWFkLlxuICAgKlxuICAgKiBUaGUgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBmcm9tIGByZXF1aXJlKCd0ZWRpb3VzJykuVERTX1ZFUlNJT05gLlxuICAgKiAqIGA3XzFgXG4gICAqICogYDdfMmBcbiAgICogKiBgN18zX0FgXG4gICAqICogYDdfM19CYFxuICAgKiAqIGA3XzRgXG4gICAqXG4gICAqIChkZWZhdWx0OiBgN180YClcbiAgICovXG4gIHRkc1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB2YXJjaGFyKG1heCksIG52YXJjaGFyKG1heCksIHZhcmJpbmFyeShtYXgpLCB0ZXh0LCBudGV4dCwgYW5kIGltYWdlIGRhdGEgcmV0dXJuZWQgYnkgYSBTRUxFQ1Qgc3RhdGVtZW50LlxuICAgKlxuICAgKiAoZGVmYXVsdDogYDIxNDc0ODM2NDdgKVxuICAgKi9cbiAgdGV4dHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIFwidHJ1ZVwiLCB0aGUgU1FMIFNlcnZlciBTU0wgY2VydGlmaWNhdGUgaXMgYXV0b21hdGljYWxseSB0cnVzdGVkIHdoZW4gdGhlIGNvbW11bmljYXRpb24gbGF5ZXIgaXMgZW5jcnlwdGVkIHVzaW5nIFNTTC5cbiAgICpcbiAgICogSWYgXCJmYWxzZVwiLCB0aGUgU1FMIFNlcnZlciB2YWxpZGF0ZXMgdGhlIHNlcnZlciBTU0wgY2VydGlmaWNhdGUuIElmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBmYWlscyxcbiAgICogdGhlIGRyaXZlciByYWlzZXMgYW4gZXJyb3IgYW5kIHRlcm1pbmF0ZXMgdGhlIGNvbm5lY3Rpb24uIE1ha2Ugc3VyZSB0aGUgdmFsdWUgcGFzc2VkIHRvIHNlcnZlck5hbWUgZXhhY3RseVxuICAgKiBtYXRjaGVzIHRoZSBDb21tb24gTmFtZSAoQ04pIG9yIEROUyBuYW1lIGluIHRoZSBTdWJqZWN0IEFsdGVybmF0ZSBOYW1lIGluIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIGFuIFNTTCBjb25uZWN0aW9uIHRvIHN1Y2NlZWQuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApXG4gICAqL1xuICB0cnVzdFNlcnZlckNlcnRpZmljYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICovXG4gIHNlcnZlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0byByZXR1cm4gcm93cyBhcyBhcnJheXMgb3Iga2V5LXZhbHVlIGNvbGxlY3Rpb25zLlxuICAgKlxuICAgKiAoZGVmYXVsdDogYGZhbHNlYCkuXG4gICAqL1xuICB1c2VDb2x1bW5OYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHBhc3MgdGltZSB2YWx1ZXMgaW4gVVRDIG9yIGxvY2FsIHRpbWUuXG4gICAqXG4gICAqIChkZWZhdWx0OiBgdHJ1ZWApLlxuICAgKi9cbiAgdXNlVVRDPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHdvcmtzdGF0aW9uIElEIChXU0lEKSBvZiB0aGUgY2xpZW50LCBkZWZhdWx0IG9zLmhvc3RuYW1lKCkuXG4gICAqIFVzZWQgZm9yIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgY2xpZW50IGluIHByb2ZpbGluZywgbG9nZ2luZyBvclxuICAgKiB0cmFjaW5nIGNsaWVudCBhY3Rpdml0eSBpbiBTUUxTZXJ2ZXIuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBpcyByZXBvcnRlZCBieSB0aGUgVFNRTCBmdW5jdGlvbiBIT1NUX05BTUUoKS5cbiAgICovXG4gIHdvcmtzdGF0aW9uSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY29uc3QgQ0xFQU5VUF9UWVBFID0ge1xuICBOT1JNQUw6IDAsXG4gIFJFRElSRUNUOiAxLFxuICBSRVRSWTogMlxufTtcblxuaW50ZXJmYWNlIFJvdXRpbmdEYXRhIHtcbiAgc2VydmVyOiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIFtbQ29ubmVjdGlvbl1dIGluc3RhbmNlIHJlcHJlc2VudHMgYSBzaW5nbGUgY29ubmVjdGlvbiB0byBhIGRhdGFiYXNlIHNlcnZlci5cbiAqXG4gKiBgYGBqc1xuICogdmFyIENvbm5lY3Rpb24gPSByZXF1aXJlKCd0ZWRpb3VzJykuQ29ubmVjdGlvbjtcbiAqIHZhciBjb25maWcgPSB7XG4gKiAgXCJhdXRoZW50aWNhdGlvblwiOiB7XG4gKiAgICAuLi4sXG4gKiAgICBcIm9wdGlvbnNcIjogey4uLn1cbiAqICB9LFxuICogIFwib3B0aW9uc1wiOiB7Li4ufVxuICogfTtcbiAqIHZhciBjb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oY29uZmlnKTtcbiAqIGBgYFxuICpcbiAqIE9ubHkgb25lIHJlcXVlc3QgYXQgYSB0aW1lIG1heSBiZSBleGVjdXRlZCBvbiBhIGNvbm5lY3Rpb24uIE9uY2UgYSBbW1JlcXVlc3RdXVxuICogaGFzIGJlZW4gaW5pdGlhdGVkICh3aXRoIFtbQ29ubmVjdGlvbi5jYWxsUHJvY2VkdXJlXV0sIFtbQ29ubmVjdGlvbi5leGVjU3FsXV0sXG4gKiBvciBbW0Nvbm5lY3Rpb24uZXhlY1NxbEJhdGNoXV0pLCBhbm90aGVyIHNob3VsZCBub3QgYmUgaW5pdGlhdGVkIHVudGlsIHRoZVxuICogW1tSZXF1ZXN0XV0ncyBjb21wbGV0aW9uIGNhbGxiYWNrIGlzIGNhbGxlZC5cbiAqL1xuY2xhc3MgQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBmZWRBdXRoUmVxdWlyZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjb25maWc6IEludGVybmFsQ29ubmVjdGlvbkNvbmZpZztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHNlY3VyZUNvbnRleHRPcHRpb25zOiBTZWN1cmVDb250ZXh0T3B0aW9ucztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGluVHJhbnNhY3Rpb246IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0cmFuc2FjdGlvbkRlc2NyaXB0b3JzOiBCdWZmZXJbXTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHRyYW5zYWN0aW9uRGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGlzU3FsQmF0Y2g6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjdXJUcmFuc2llbnRSZXRyeUNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSB0cmFuc2llbnRFcnJvckxvb2t1cDogVHJhbnNpZW50RXJyb3JMb29rdXA7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBjbG9zZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBsb2dpbkVycm9yOiB1bmRlZmluZWQgfCBBZ2dyZWdhdGVFcnJvciB8IENvbm5lY3Rpb25FcnJvcjtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGRlYnVnOiBEZWJ1ZztcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG50bG1wYWNrZXQ6IHVuZGVmaW5lZCB8IGFueTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG50bG1wYWNrZXRCdWZmZXI6IHVuZGVmaW5lZCB8IEJ1ZmZlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgU1RBVEU6IHtcbiAgICBJTklUSUFMSVpFRDogU3RhdGU7XG4gICAgQ09OTkVDVElORzogU3RhdGU7XG4gICAgU0VOVF9QUkVMT0dJTjogU3RhdGU7XG4gICAgUkVST1VUSU5HOiBTdGF0ZTtcbiAgICBUUkFOU0lFTlRfRkFJTFVSRV9SRVRSWTogU3RhdGU7XG4gICAgU0VOVF9UTFNTU0xORUdPVElBVElPTjogU3RhdGU7XG4gICAgU0VOVF9MT0dJTjdfV0lUSF9TVEFOREFSRF9MT0dJTjogU3RhdGU7XG4gICAgU0VOVF9MT0dJTjdfV0lUSF9OVExNOiBTdGF0ZTtcbiAgICBTRU5UX0xPR0lON19XSVRIX0ZFREFVVEg6IFN0YXRlO1xuICAgIExPR0dFRF9JTl9TRU5ESU5HX0lOSVRJQUxfU1FMOiBTdGF0ZTtcbiAgICBMT0dHRURfSU46IFN0YXRlO1xuICAgIFNFTlRfQ0xJRU5UX1JFUVVFU1Q6IFN0YXRlO1xuICAgIFNFTlRfQVRURU5USU9OOiBTdGF0ZTtcbiAgICBGSU5BTDogU3RhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJvdXRpbmdEYXRhOiB1bmRlZmluZWQgfCBSb3V0aW5nRGF0YTtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgbWVzc2FnZUlvOiBNZXNzYWdlSU87XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBzdGF0ZTogU3RhdGU7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXNldENvbm5lY3Rpb25Pbk5leHRSZXF1ZXN0OiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXF1ZXN0OiB1bmRlZmluZWQgfCBSZXF1ZXN0IHwgQnVsa0xvYWQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBwcm9jUmV0dXJuU3RhdHVzVmFsdWU6IHVuZGVmaW5lZCB8IGFueTtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHNvY2tldDogdW5kZWZpbmVkIHwgbmV0LlNvY2tldDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIG1lc3NhZ2VCdWZmZXI6IEJ1ZmZlcjtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRlY2xhcmUgY29ubmVjdFRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIGNhbmNlbFRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBkZWNsYXJlIHJlcXVlc3RUaW1lcjogdW5kZWZpbmVkIHwgTm9kZUpTLlRpbWVvdXQ7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSByZXRyeVRpbWVyOiB1bmRlZmluZWQgfCBOb2RlSlMuVGltZW91dDtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9jYW5jZWxBZnRlclJlcXVlc3RTZW50OiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZGVjbGFyZSBkYXRhYmFzZUNvbGxhdGlvbjogQ29sbGF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOb3RlOiBiZSBhd2FyZSBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgZmllbGQ6XG4gICAqIDEuIGNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zXG4gICAqIDIuIGNvbmZpZy5vcHRpb25zXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNvbnN0IHsgQ29ubmVjdGlvbiB9ID0gcmVxdWlyZSgndGVkaW91cycpO1xuICAgKlxuICAgKiBjb25zdCBjb25maWcgPSB7XG4gICAqICBcImF1dGhlbnRpY2F0aW9uXCI6IHtcbiAgICogICAgLi4uLFxuICAgKiAgICBcIm9wdGlvbnNcIjogey4uLn1cbiAgICogIH0sXG4gICAqICBcIm9wdGlvbnNcIjogey4uLn1cbiAgICogfTtcbiAgICpcbiAgICogY29uc3QgY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGNvbmZpZyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbm5lY3Rpb25Db25maWd1cmF0aW9uKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnb2JqZWN0JyB8fCBjb25maWcgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZ1wiIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnNlcnZlciAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5zZXJ2ZXJcIiBwcm9wZXJ0eSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgbGV0IGF1dGhlbnRpY2F0aW9uOiBJbnRlcm5hbENvbm5lY3Rpb25Db25maWdbJ2F1dGhlbnRpY2F0aW9uJ107XG4gICAgaWYgKGNvbmZpZy5hdXRoZW50aWNhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZy5hdXRoZW50aWNhdGlvbiAhPT0gJ29iamVjdCcgfHwgY29uZmlnLmF1dGhlbnRpY2F0aW9uID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvblwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBjb25maWcuYXV0aGVudGljYXRpb24udHlwZTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucyA9PT0gdW5kZWZpbmVkID8ge30gOiBjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucztcblxuICAgICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24udHlwZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlICE9PSAnZGVmYXVsdCcgJiYgdHlwZSAhPT0gJ250bG0nICYmIHR5cGUgIT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJyAmJiB0eXBlICE9PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1hY2Nlc3MtdG9rZW4nICYmIHR5cGUgIT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bScgJiYgdHlwZSAhPT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLWFwcC1zZXJ2aWNlJyAmJiB0eXBlICE9PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXQnICYmIHR5cGUgIT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInR5cGVcIiBwcm9wZXJ0eSBtdXN0IG9uZSBvZiBcImRlZmF1bHRcIiwgXCJudGxtXCIsIFwiYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZFwiLCBcImF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktYWNjZXNzLXRva2VuXCIsIFwiYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0XCIsIFwiYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm1cIiBvciBcImF6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLWFwcC1zZXJ2aWNlXCIgb3IgXCJhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldFwiLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnIHx8IG9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgb2JqZWN0LicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ250bG0nKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kb21haW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuZG9tYWluXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnVzZXJOYW1lICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMudXNlck5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudXNlck5hbWVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy5wYXNzd29yZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5wYXNzd29yZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnbnRsbScsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgdXNlck5hbWU6IG9wdGlvbnMudXNlck5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgIGRvbWFpbjogb3B0aW9ucy5kb21haW4gJiYgb3B0aW9ucy5kb21haW4udG9VcHBlckNhc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktcGFzc3dvcmQnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jbGllbnRJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy51c2VyTmFtZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLnVzZXJOYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnVzZXJOYW1lXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnBhc3N3b3JkICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMucGFzc3dvcmQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMucGFzc3dvcmRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudGVuYW50SWQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy50ZW5hbnRJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy50ZW5hbnRJZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCcsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgdXNlck5hbWU6IG9wdGlvbnMudXNlck5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgIHRlbmFudElkOiBvcHRpb25zLnRlbmFudElkLFxuICAgICAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnRva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnRva2VuXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbicsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgdG9rZW46IG9wdGlvbnMudG9rZW5cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bScpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy5jbGllbnRJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm0nLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0Jykge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmNsaWVudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0JyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjbGllbnRJZDogb3B0aW9ucy5jbGllbnRJZFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLWFwcC1zZXJ2aWNlJykge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmNsaWVudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZScsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY2xpZW50SWQ6IG9wdGlvbnMuY2xpZW50SWRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmNsaWVudElkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jbGllbnRTZWNyZXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLmF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50U2VjcmV0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50ZW5hbnRJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy50ZW5hbnRJZFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXQnLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNsaWVudElkOiBvcHRpb25zLmNsaWVudElkLFxuICAgICAgICAgICAgY2xpZW50U2VjcmV0OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICAgICAgICAgIHRlbmFudElkOiBvcHRpb25zLnRlbmFudElkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlck5hbWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy51c2VyTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucy51c2VyTmFtZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5wYXNzd29yZCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLnBhc3N3b3JkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5hdXRoZW50aWNhdGlvbi5vcHRpb25zLnBhc3N3b3JkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICAgIHR5cGU6ICdkZWZhdWx0JyxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICB1c2VyTmFtZTogb3B0aW9ucy51c2VyTmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgdHlwZTogJ2RlZmF1bHQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdXNlck5hbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwYXNzd29yZDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBzZXJ2ZXI6IGNvbmZpZy5zZXJ2ZXIsXG4gICAgICBhdXRoZW50aWNhdGlvbjogYXV0aGVudGljYXRpb24sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGFib3J0VHJhbnNhY3Rpb25PbkVycm9yOiBmYWxzZSxcbiAgICAgICAgYXBwTmFtZTogdW5kZWZpbmVkLFxuICAgICAgICBjYW1lbENhc2VDb2x1bW5zOiBmYWxzZSxcbiAgICAgICAgY2FuY2VsVGltZW91dDogREVGQVVMVF9DQU5DRUxfVElNRU9VVCxcbiAgICAgICAgY29sdW1uRW5jcnlwdGlvbktleUNhY2hlVFRMOiAyICogNjAgKiA2MCAqIDEwMDAsICAvLyBVbml0czogbWlsbGlzZWNvbmRzXG4gICAgICAgIGNvbHVtbkVuY3J5cHRpb25TZXR0aW5nOiBmYWxzZSxcbiAgICAgICAgY29sdW1uTmFtZVJlcGxhY2VyOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbm5lY3Rpb25SZXRyeUludGVydmFsOiBERUZBVUxUX0NPTk5FQ1RfUkVUUllfSU5URVJWQUwsXG4gICAgICAgIGNvbm5lY3RUaW1lb3V0OiBERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCxcbiAgICAgICAgY29ubmVjdG9yOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbDogSVNPTEFUSU9OX0xFVkVMLlJFQURfQ09NTUlUVEVELFxuICAgICAgICBjcnlwdG9DcmVkZW50aWFsc0RldGFpbHM6IHt9LFxuICAgICAgICBkYXRhYmFzZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlZmlyc3Q6IERFRkFVTFRfREFURUZJUlNULFxuICAgICAgICBkYXRlRm9ybWF0OiBERUZBVUxUX0RBVEVGT1JNQVQsXG4gICAgICAgIGRlYnVnOiB7XG4gICAgICAgICAgZGF0YTogZmFsc2UsXG4gICAgICAgICAgcGFja2V0OiBmYWxzZSxcbiAgICAgICAgICBwYXlsb2FkOiBmYWxzZSxcbiAgICAgICAgICB0b2tlbjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlQW5zaU51bGw6IHRydWUsXG4gICAgICAgIGVuYWJsZUFuc2lOdWxsRGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQW5zaVBhZGRpbmc6IHRydWUsXG4gICAgICAgIGVuYWJsZUFuc2lXYXJuaW5nczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQXJpdGhBYm9ydDogdHJ1ZSxcbiAgICAgICAgZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGw6IHRydWUsXG4gICAgICAgIGVuYWJsZUN1cnNvckNsb3NlT25Db21taXQ6IG51bGwsXG4gICAgICAgIGVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ6IGZhbHNlLFxuICAgICAgICBlbmFibGVRdW90ZWRJZGVudGlmaWVyOiB0cnVlLFxuICAgICAgICBlbmNyeXB0OiB0cnVlLFxuICAgICAgICBmYWxsYmFja1RvRGVmYXVsdERiOiBmYWxzZSxcbiAgICAgICAgZW5jcnlwdGlvbktleVN0b3JlUHJvdmlkZXJzOiB1bmRlZmluZWQsXG4gICAgICAgIGluc3RhbmNlTmFtZTogdW5kZWZpbmVkLFxuICAgICAgICBpc29sYXRpb25MZXZlbDogSVNPTEFUSU9OX0xFVkVMLlJFQURfQ09NTUlUVEVELFxuICAgICAgICBsYW5ndWFnZTogREVGQVVMVF9MQU5HVUFHRSxcbiAgICAgICAgbG9jYWxBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgICAgIG1heFJldHJpZXNPblRyYW5zaWVudEVycm9yczogMyxcbiAgICAgICAgbXVsdGlTdWJuZXRGYWlsb3ZlcjogZmFsc2UsXG4gICAgICAgIHBhY2tldFNpemU6IERFRkFVTFRfUEFDS0VUX1NJWkUsXG4gICAgICAgIHBvcnQ6IERFRkFVTFRfUE9SVCxcbiAgICAgICAgcmVhZE9ubHlJbnRlbnQ6IGZhbHNlLFxuICAgICAgICByZXF1ZXN0VGltZW91dDogREVGQVVMVF9DTElFTlRfUkVRVUVTVF9USU1FT1VULFxuICAgICAgICByb3dDb2xsZWN0aW9uT25Eb25lOiBmYWxzZSxcbiAgICAgICAgcm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb246IGZhbHNlLFxuICAgICAgICBzZXJ2ZXJOYW1lOiB1bmRlZmluZWQsXG4gICAgICAgIHNlcnZlclN1cHBvcnRzQ29sdW1uRW5jcnlwdGlvbjogZmFsc2UsXG4gICAgICAgIHRkc1ZlcnNpb246IERFRkFVTFRfVERTX1ZFUlNJT04sXG4gICAgICAgIHRleHRzaXplOiBERUZBVUxUX1RFWFRTSVpFLFxuICAgICAgICB0cnVzdGVkU2VydmVyTmFtZUFFOiB1bmRlZmluZWQsXG4gICAgICAgIHRydXN0U2VydmVyQ2VydGlmaWNhdGU6IGZhbHNlLFxuICAgICAgICB1c2VDb2x1bW5OYW1lczogZmFsc2UsXG4gICAgICAgIHVzZVVUQzogdHJ1ZSxcbiAgICAgICAgd29ya3N0YXRpb25JZDogdW5kZWZpbmVkLFxuICAgICAgICBsb3dlckNhc2VHdWlkczogZmFsc2VcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZy5vcHRpb25zKSB7XG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucG9ydCAmJiBjb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3J0IGFuZCBpbnN0YW5jZU5hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgYnV0ICcgKyBjb25maWcub3B0aW9ucy5wb3J0ICsgJyBhbmQgJyArIGNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSArICcgcHJvdmlkZWQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmFib3J0VHJhbnNhY3Rpb25PbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5hYm9ydFRyYW5zYWN0aW9uT25FcnJvciAhPT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5vcHRpb25zLmFib3J0VHJhbnNhY3Rpb25PbkVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3JcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmFib3J0VHJhbnNhY3Rpb25PbkVycm9yID0gY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3I7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5hcHBOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5hcHBOYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmFwcE5hbWVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5hcHBOYW1lID0gY29uZmlnLm9wdGlvbnMuYXBwTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNhbWVsQ2FzZUNvbHVtbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmNhbWVsQ2FzZUNvbHVtbnMgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNhbWVsQ2FzZUNvbHVtbnNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuY2FtZWxDYXNlQ29sdW1ucyA9IGNvbmZpZy5vcHRpb25zLmNhbWVsQ2FzZUNvbHVtbnM7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5jYW5jZWxUaW1lb3V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5jYW5jZWxUaW1lb3V0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jYW5jZWxUaW1lb3V0ID0gY29uZmlnLm9wdGlvbnMuY2FuY2VsVGltZW91dDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlcikge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgZnVuY3Rpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlciA9IGNvbmZpZy5vcHRpb25zLmNvbHVtbk5hbWVSZXBsYWNlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFzc2VydFZhbGlkSXNvbGF0aW9uTGV2ZWwoY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvbklzb2xhdGlvbkxldmVsLCAnY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvbklzb2xhdGlvbkxldmVsJyk7XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWwgPSBjb25maWcub3B0aW9ucy5jb25uZWN0aW9uSXNvbGF0aW9uTGV2ZWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5jb25uZWN0VGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jb25uZWN0VGltZW91dCA9IGNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY29ubmVjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5jb25uZWN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5jb25uZWN0b3JcIiBwcm9wZXJ0eSBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3RvciA9IGNvbmZpZy5vcHRpb25zLmNvbm5lY3RvcjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNyeXB0b0NyZWRlbnRpYWxzRGV0YWlscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzICE9PSAnb2JqZWN0JyB8fCBjb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHMgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgT2JqZWN0LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHMgPSBjb25maWcub3B0aW9ucy5jcnlwdG9DcmVkZW50aWFsc0RldGFpbHM7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5kYXRhYmFzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZGF0YWJhc2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGF0YWJhc2VcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5kYXRhYmFzZSA9IGNvbmZpZy5vcHRpb25zLmRhdGFiYXNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kYXRlZmlyc3QgIT09ICdudW1iZXInICYmIGNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0ICE9PSBudWxsICYmIChjb25maWcub3B0aW9ucy5kYXRlZmlyc3QgPCAxIHx8IGNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdCA+IDcpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmRhdGVmaXJzdFwiIHByb3BlcnR5IG11c3QgYmUgPj0gMSBhbmQgPD0gNycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5kYXRlZmlyc3QgPSBjb25maWcub3B0aW9ucy5kYXRlZmlyc3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5kYXRlRm9ybWF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kYXRlRm9ybWF0ICE9PSAnc3RyaW5nJyAmJiBjb25maWcub3B0aW9ucy5kYXRlRm9ybWF0ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGF0ZUZvcm1hdFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZGF0ZUZvcm1hdCA9IGNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGVidWcuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kZWJ1Zy5kYXRhICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmRlYnVnLmRhdGFcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRlYnVnLmRhdGEgPSBjb25maWcub3B0aW9ucy5kZWJ1Zy5kYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmRlYnVnLnBhY2tldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kZWJ1Zy5wYWNrZXQgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZGVidWcucGFja2V0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5kZWJ1Zy5wYWNrZXQgPSBjb25maWcub3B0aW9ucy5kZWJ1Zy5wYWNrZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZGVidWcucGF5bG9hZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5kZWJ1Zy5wYXlsb2FkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmRlYnVnLnBheWxvYWRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmRlYnVnLnBheWxvYWQgPSBjb25maWcub3B0aW9ucy5kZWJ1Zy5wYXlsb2FkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmRlYnVnLnRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmRlYnVnLnRva2VuICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmRlYnVnLnRva2VuXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5kZWJ1Zy50b2tlbiA9IGNvbmZpZy5vcHRpb25zLmRlYnVnLnRva2VuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGwgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGwgPSBjb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lOdWxsRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0ICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4gb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0ID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lQYWRkaW5nICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVBbnNpUGFkZGluZ1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lQYWRkaW5nID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaVBhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVBbnNpV2FybmluZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyAhPT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5nc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyA9IGNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQgIT09ICdib29sZWFuJyAmJiBjb25maWcub3B0aW9ucy5lbmFibGVBcml0aEFib3J0ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQgPSBjb25maWcub3B0aW9ucy5lbmFibGVBcml0aEFib3J0O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVDb25jYXROdWxsWWllbGRzTnVsbFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZUN1cnNvckNsb3NlT25Db21taXRcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbiBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucyAhPT0gJ2Jvb2xlYW4nICYmIGNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbiBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucyA9IGNvbmZpZy5vcHRpb25zLmVuYWJsZUltcGxpY2l0VHJhbnNhY3Rpb25zO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmVuYWJsZU51bWVyaWNSb3VuZGFib3J0ICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5lbmFibGVOdW1lcmljUm91bmRhYm9ydFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuIG9yIG51bGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZU51bWVyaWNSb3VuZGFib3J0ID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyICE9PSAnYm9vbGVhbicgJiYgY29uZmlnLm9wdGlvbnMuZW5hYmxlUXVvdGVkSWRlbnRpZmllciAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmVuYWJsZVF1b3RlZElkZW50aWZpZXJcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbiBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVRdW90ZWRJZGVudGlmaWVyID0gY29uZmlnLm9wdGlvbnMuZW5hYmxlUXVvdGVkSWRlbnRpZmllcjtcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5lbmNyeXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5lbmNyeXB0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuZW5jcnlwdCAhPT0gJ3N0cmljdCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVuY3J5cHRcIiBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byBcInN0cmljdFwiLCBvciBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0ID0gY29uZmlnLm9wdGlvbnMuZW5jcnlwdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmZhbGxiYWNrVG9EZWZhdWx0RGIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmZhbGxiYWNrVG9EZWZhdWx0RGIgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmZhbGxiYWNrVG9EZWZhdWx0RGJcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuZmFsbGJhY2tUb0RlZmF1bHREYiA9IGNvbmZpZy5vcHRpb25zLmZhbGxiYWNrVG9EZWZhdWx0RGI7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWUgPSBjb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWU7XG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmlzb2xhdGlvbkxldmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXNzZXJ0VmFsaWRJc29sYXRpb25MZXZlbChjb25maWcub3B0aW9ucy5pc29sYXRpb25MZXZlbCwgJ2NvbmZpZy5vcHRpb25zLmlzb2xhdGlvbkxldmVsJyk7XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5pc29sYXRpb25MZXZlbCA9IGNvbmZpZy5vcHRpb25zLmlzb2xhdGlvbkxldmVsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMubGFuZ3VhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLmxhbmd1YWdlICE9PSAnc3RyaW5nJyAmJiBjb25maWcub3B0aW9ucy5sYW5ndWFnZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmxhbmd1YWdlXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBudWxsLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5sYW5ndWFnZSA9IGNvbmZpZy5vcHRpb25zLmxhbmd1YWdlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMubG9jYWxBZGRyZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3MgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubG9jYWxBZGRyZXNzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMubG9jYWxBZGRyZXNzID0gY29uZmlnLm9wdGlvbnMubG9jYWxBZGRyZXNzO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMubXVsdGlTdWJuZXRGYWlsb3ZlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMubXVsdGlTdWJuZXRGYWlsb3ZlciAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMubXVsdGlTdWJuZXRGYWlsb3ZlclwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyID0gY29uZmlnLm9wdGlvbnMubXVsdGlTdWJuZXRGYWlsb3ZlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnBhY2tldFNpemUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnBhY2tldFNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMucGFja2V0U2l6ZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnBhY2tldFNpemUgPSBjb25maWcub3B0aW9ucy5wYWNrZXRTaXplO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucG9ydCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5wb3J0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy5wb3J0IDw9IDAgfHwgY29uZmlnLm9wdGlvbnMucG9ydCA+PSA2NTUzNikge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5wb3J0XCIgcHJvcGVydHkgbXVzdCBiZSA+IDAgYW5kIDwgNjU1MzYnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCA9IGNvbmZpZy5vcHRpb25zLnBvcnQ7XG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuaW5zdGFuY2VOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucmVhZE9ubHlJbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnJlYWRPbmx5SW50ZW50ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5yZWFkT25seUludGVudFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5yZWFkT25seUludGVudCA9IGNvbmZpZy5vcHRpb25zLnJlYWRPbmx5SW50ZW50O1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMucmVxdWVzdFRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnJlcXVlc3RUaW1lb3V0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnJlcXVlc3RUaW1lb3V0XCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucmVxdWVzdFRpbWVvdXQgPSBjb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9yc1wiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMubWF4UmV0cmllc09uVHJhbnNpZW50RXJyb3JzIDwgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9yc1wiIHByb3BlcnR5IG11c3QgYmUgZXF1YWwgb3IgZ3JlYXRlciB0aGFuIDAuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycyA9IGNvbmZpZy5vcHRpb25zLm1heFJldHJpZXNPblRyYW5zaWVudEVycm9ycztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25SZXRyeUludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy5jb25uZWN0aW9uUmV0cnlJbnRlcnZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy5jb25uZWN0aW9uUmV0cnlJbnRlcnZhbFwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwgPD0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25SZXRyeUludGVydmFsXCIgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwgPSBjb25maWcub3B0aW9ucy5jb25uZWN0aW9uUmV0cnlJbnRlcnZhbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmVcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uRG9uZSA9IGNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PbkRvbmU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5yb3dDb2xsZWN0aW9uT25SZXF1ZXN0Q29tcGxldGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb24gIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnJvd0NvbGxlY3Rpb25PblJlcXVlc3RDb21wbGV0aW9uID0gY29uZmlnLm9wdGlvbnMucm93Q29sbGVjdGlvbk9uUmVxdWVzdENvbXBsZXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy50ZHNWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy50ZHNWZXJzaW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb25cIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy50ZHNWZXJzaW9uID0gY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnRleHRzaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy50ZXh0c2l6ZSAhPT0gJ251bWJlcicgJiYgY29uZmlnLm9wdGlvbnMudGV4dHNpemUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy50ZXh0c2l6ZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBudW1iZXIgb3IgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcub3B0aW9ucy50ZXh0c2l6ZSA+IDIxNDc0ODM2NDcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy50ZXh0c2l6ZVwiIGNhblxcJ3QgYmUgZ3JlYXRlciB0aGFuIDIxNDc0ODM2NDcuJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLm9wdGlvbnMudGV4dHNpemUgPCAtMSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLnRleHRzaXplXCIgY2FuXFwndCBiZSBzbWFsbGVyIHRoYW4gLTEuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnRleHRzaXplID0gY29uZmlnLm9wdGlvbnMudGV4dHNpemUgfCAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBib29sZWFuLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlID0gY29uZmlnLm9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnNlcnZlck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy5vcHRpb25zLnNlcnZlck5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZVwiIHByb3BlcnR5IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucy5zZXJ2ZXJOYW1lID0gY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnVzZUNvbHVtbk5hbWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiY29uZmlnLm9wdGlvbnMudXNlQ29sdW1uTmFtZXNcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMgPSBjb25maWcub3B0aW9ucy51c2VDb2x1bW5OYW1lcztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5vcHRpb25zLnVzZVVUQyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMudXNlVVRDICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy51c2VVVENcIiBwcm9wZXJ0eSBtdXN0IGJlIG9mIHR5cGUgYm9vbGVhbi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMudXNlVVRDID0gY29uZmlnLm9wdGlvbnMudXNlVVRDO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLm9wdGlvbnMud29ya3N0YXRpb25JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMud29ya3N0YXRpb25JZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJjb25maWcub3B0aW9ucy53b3Jrc3RhdGlvbklkXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMud29ya3N0YXRpb25JZCA9IGNvbmZpZy5vcHRpb25zLndvcmtzdGF0aW9uSWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcub3B0aW9ucy5sb3dlckNhc2VHdWlkcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnLm9wdGlvbnMubG93ZXJDYXNlR3VpZHMgIT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImNvbmZpZy5vcHRpb25zLmxvd2VyQ2FzZUd1aWRzXCIgcHJvcGVydHkgbXVzdCBiZSBvZiB0eXBlIGJvb2xlYW4uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLmxvd2VyQ2FzZUd1aWRzID0gY29uZmlnLm9wdGlvbnMubG93ZXJDYXNlR3VpZHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZWN1cmVDb250ZXh0T3B0aW9ucyA9IHRoaXMuY29uZmlnLm9wdGlvbnMuY3J5cHRvQ3JlZGVudGlhbHNEZXRhaWxzO1xuICAgIGlmICh0aGlzLnNlY3VyZUNvbnRleHRPcHRpb25zLnNlY3VyZU9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgbm90IHNwZWNpZmllZCB0aGVpciBvd24gYHNlY3VyZU9wdGlvbnNgLFxuICAgICAgLy8gd2Ugc2V0IGBTU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTYCBoZXJlLlxuICAgICAgLy8gT2xkZXIgU1FMIFNlcnZlciBpbnN0YW5jZXMgcnVubmluZyBvbiBvbGRlciBXaW5kb3dzIHZlcnNpb25zIGhhdmVcbiAgICAgIC8vIHRyb3VibGUgd2l0aCB0aGUgQkVBU1Qgd29ya2Fyb3VuZCBpbiBPcGVuU1NMLlxuICAgICAgLy8gQXMgQkVBU1QgaXMgYSBicm93c2VyIHNwZWNpZmljIGV4cGxvaXQsIHdlIGNhbiBqdXN0IGRpc2FibGUgdGhpcyBvcHRpb24gaGVyZS5cbiAgICAgIHRoaXMuc2VjdXJlQ29udGV4dE9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKHRoaXMuc2VjdXJlQ29udGV4dE9wdGlvbnMsIHtcbiAgICAgICAgc2VjdXJlT3B0aW9uczoge1xuICAgICAgICAgIHZhbHVlOiBjb25zdGFudHMuU1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UU1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYnVnID0gdGhpcy5jcmVhdGVEZWJ1ZygpO1xuICAgIHRoaXMuaW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb25EZXNjcmlwdG9ycyA9IFtCdWZmZXIuZnJvbShbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pXTtcblxuICAgIC8vICdiZWdpblRyYW5zYWN0aW9uJywgJ2NvbW1pdFRyYW5zYWN0aW9uJyBhbmQgJ3JvbGxiYWNrVHJhbnNhY3Rpb24nXG4gICAgLy8gZXZlbnRzIGFyZSB1dGlsaXplZCB0byBtYWludGFpbiBpblRyYW5zYWN0aW9uIHByb3BlcnR5IHN0YXRlIHdoaWNoIGluXG4gICAgLy8gdHVybiBpcyB1c2VkIGluIG1hbmFnaW5nIHRyYW5zYWN0aW9ucy4gVGhlc2UgZXZlbnRzIGFyZSBvbmx5IGZpcmVkIGZvclxuICAgIC8vIFREUyB2ZXJzaW9uIDcuMiBhbmQgYmV5b25kLiBUaGUgcHJvcGVydGllcyBiZWxvdyBhcmUgdXNlZCB0byBlbXVsYXRlXG4gICAgLy8gZXF1aXZhbGVudCBiZWhhdmlvciBmb3IgVERTIHZlcnNpb25zIGJlZm9yZSA3LjIuXG4gICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoID0gMDtcbiAgICB0aGlzLmlzU3FsQmF0Y2ggPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMubWVzc2FnZUJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygwKTtcblxuICAgIHRoaXMuY3VyVHJhbnNpZW50UmV0cnlDb3VudCA9IDA7XG4gICAgdGhpcy50cmFuc2llbnRFcnJvckxvb2t1cCA9IG5ldyBUcmFuc2llbnRFcnJvckxvb2t1cCgpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuU1RBVEUuSU5JVElBTElaRUQ7XG5cbiAgICB0aGlzLl9jYW5jZWxBZnRlclJlcXVlc3RTZW50ID0gKCkgPT4ge1xuICAgICAgdGhpcy5tZXNzYWdlSW8uc2VuZE1lc3NhZ2UoVFlQRS5BVFRFTlRJT04pO1xuICAgICAgdGhpcy5jcmVhdGVDYW5jZWxUaW1lcigpO1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0KGNvbm5lY3RMaXN0ZW5lcj86IChlcnI/OiBFcnJvcikgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSB0aGlzLlNUQVRFLklOSVRJQUxJWkVEKSB7XG4gICAgICB0aHJvdyBuZXcgQ29ubmVjdGlvbkVycm9yKCdgLmNvbm5lY3RgIGNhbiBub3QgYmUgY2FsbGVkIG9uIGEgQ29ubmVjdGlvbiBpbiBgJyArIHRoaXMuc3RhdGUubmFtZSArICdgIHN0YXRlLicpO1xuICAgIH1cblxuICAgIGlmIChjb25uZWN0TGlzdGVuZXIpIHtcbiAgICAgIGNvbnN0IG9uQ29ubmVjdCA9IChlcnI/OiBFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBjb25uZWN0TGlzdGVuZXIoZXJyKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcbiAgICAgICAgY29ubmVjdExpc3RlbmVyKGVycik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLm9uY2UoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuICAgICAgdGhpcy5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgIH1cblxuICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuQ09OTkVDVElORyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcnZlciBoYXMgcmVwb3J0ZWQgdGhhdCB0aGUgY2hhcnNldCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIG9uKGV2ZW50OiAnY2hhcnNldENoYW5nZScsIGxpc3RlbmVyOiAoY2hhcnNldDogc3RyaW5nKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgYXR0ZW1wdCB0byBjb25uZWN0IGFuZCB2YWxpZGF0ZSBoYXMgY29tcGxldGVkLlxuICAgKi9cbiAgb24oXG4gICAgZXZlbnQ6ICdjb25uZWN0JyxcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZXJyIElmIHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQsIHdpbGwgYmUgZmFsc2V5LiBJZiB0aGVyZSB3YXMgYVxuICAgICAqICAgcHJvYmxlbSAod2l0aCBlaXRoZXIgY29ubmVjdGluZyBvciB2YWxpZGF0aW9uKSwgd2lsbCBiZSBhbiBbW0Vycm9yXV0gb2JqZWN0LlxuICAgICAqL1xuICAgIGxpc3RlbmVyOiAoZXJyOiBFcnJvciB8IHVuZGVmaW5lZCkgPT4gdm9pZFxuICApOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIHJlcG9ydGVkIHRoYXQgdGhlIGFjdGl2ZSBkYXRhYmFzZSBoYXMgY2hhbmdlZC5cbiAgICogVGhpcyBtYXkgYmUgYXMgYSByZXN1bHQgb2YgYSBzdWNjZXNzZnVsIGxvZ2luLCBvciBhIGB1c2VgIHN0YXRlbWVudC5cbiAgICovXG4gIG9uKGV2ZW50OiAnZGF0YWJhc2VDaGFuZ2UnLCBsaXN0ZW5lcjogKGRhdGFiYXNlTmFtZTogc3RyaW5nKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBBIGRlYnVnIG1lc3NhZ2UgaXMgYXZhaWxhYmxlLiBJdCBtYXkgYmUgbG9nZ2VkIG9yIGlnbm9yZWQuXG4gICAqL1xuICBvbihldmVudDogJ2RlYnVnJywgbGlzdGVuZXI6IChtZXNzYWdlVGV4dDogc3RyaW5nKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBlcnJvciBvY2N1cnMuXG4gICAqL1xuICBvbihldmVudDogJ2Vycm9yJywgbGlzdGVuZXI6IChlcnI6IEVycm9yKSA9PiB2b2lkKTogdGhpc1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIGhhcyBpc3N1ZWQgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIG9uKGV2ZW50OiAnZXJyb3JNZXNzYWdlJywgbGlzdGVuZXI6IChtZXNzYWdlOiBpbXBvcnQoJy4vdG9rZW4vdG9rZW4nKS5FcnJvck1lc3NhZ2VUb2tlbikgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIGNvbm5lY3Rpb24gaGFzIGVuZGVkLlxuICAgKlxuICAgKiBUaGlzIG1heSBiZSBhcyBhIHJlc3VsdCBvZiB0aGUgY2xpZW50IGNhbGxpbmcgW1tjbG9zZV1dLCB0aGUgc2VydmVyXG4gICAqIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24sIG9yIGEgbmV0d29yayBlcnJvci5cbiAgICovXG4gIG9uKGV2ZW50OiAnZW5kJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB0aGlzXG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGlzc3VlZCBhbiBpbmZvcm1hdGlvbiBtZXNzYWdlLlxuICAgKi9cbiAgb24oZXZlbnQ6ICdpbmZvTWVzc2FnZScsIGxpc3RlbmVyOiAobWVzc2FnZTogaW1wb3J0KCcuL3Rva2VuL3Rva2VuJykuSW5mb01lc3NhZ2VUb2tlbikgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIHNlcnZlciBoYXMgcmVwb3J0ZWQgdGhhdCB0aGUgbGFuZ3VhZ2UgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBvbihldmVudDogJ2xhbmd1YWdlQ2hhbmdlJywgbGlzdGVuZXI6IChsYW5ndWFnZU5hbWU6IHN0cmluZykgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogVGhlIGNvbm5lY3Rpb24gd2FzIHJlc2V0LlxuICAgKi9cbiAgb24oZXZlbnQ6ICdyZXNldENvbm5lY3Rpb24nLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHRoaXNcblxuICAvKipcbiAgICogQSBzZWN1cmUgY29ubmVjdGlvbiBoYXMgYmVlbiBlc3RhYmxpc2hlZC5cbiAgICovXG4gIG9uKGV2ZW50OiAnc2VjdXJlJywgbGlzdGVuZXI6IChjbGVhcnRleHQ6IGltcG9ydCgndGxzJykuVExTU29ja2V0KSA9PiB2b2lkKTogdGhpc1xuXG4gIG9uKGV2ZW50OiBzdHJpbmcgfCBzeW1ib2wsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICByZXR1cm4gc3VwZXIub24oZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2NoYXJzZXRDaGFuZ2UnLCBjaGFyc2V0OiBzdHJpbmcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2Nvbm5lY3QnLCBlcnJvcj86IEVycm9yKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkYXRhYmFzZUNoYW5nZScsIGRhdGFiYXNlTmFtZTogc3RyaW5nKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdkZWJ1ZycsIG1lc3NhZ2VUZXh0OiBzdHJpbmcpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ2Vycm9yJywgZXJyb3I6IEVycm9yKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdlcnJvck1lc3NhZ2UnLCBtZXNzYWdlOiBpbXBvcnQoJy4vdG9rZW4vdG9rZW4nKS5FcnJvck1lc3NhZ2VUb2tlbik6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnZW5kJyk6IGJvb2xlYW5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBlbWl0KGV2ZW50OiAnaW5mb01lc3NhZ2UnLCBtZXNzYWdlOiBpbXBvcnQoJy4vdG9rZW4vdG9rZW4nKS5JbmZvTWVzc2FnZVRva2VuKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdsYW5ndWFnZUNoYW5nZScsIGxhbmd1YWdlTmFtZTogc3RyaW5nKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdzZWN1cmUnLCBjbGVhcnRleHQ6IGltcG9ydCgndGxzJykuVExTU29ja2V0KTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXJvdXRpbmcnKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXNldENvbm5lY3Rpb24nKTogYm9vbGVhblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGVtaXQoZXZlbnQ6ICdyZXRyeScpOiBib29sZWFuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZW1pdChldmVudDogJ3JvbGxiYWNrVHJhbnNhY3Rpb24nKTogYm9vbGVhblxuXG4gIGVtaXQoZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gc3VwZXIuZW1pdChldmVudCwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogVGhlIFtbRXZlbnRfZW5kXV0gd2lsbCBiZSBlbWl0dGVkIG9uY2UgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkLlxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGluaXRpYWxpc2VDb25uZWN0aW9uKCkge1xuICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuY3JlYXRlQ29ubmVjdFRpbWVyKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5wb3J0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0T25Qb3J0KHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCwgdGhpcy5jb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyLCBzaWduYWwsIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGluc3RhbmNlTG9va3VwKHtcbiAgICAgICAgc2VydmVyOiB0aGlzLmNvbmZpZy5zZXJ2ZXIsXG4gICAgICAgIGluc3RhbmNlTmFtZTogdGhpcy5jb25maWcub3B0aW9ucy5pbnN0YW5jZU5hbWUhLFxuICAgICAgICB0aW1lb3V0OiB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0LFxuICAgICAgICBzaWduYWw6IHNpZ25hbFxuICAgICAgfSkudGhlbigocG9ydCkgPT4ge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3RPblBvcnQocG9ydCwgdGhpcy5jb25maWcub3B0aW9ucy5tdWx0aVN1Ym5ldEZhaWxvdmVyLCBzaWduYWwsIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJDb25uZWN0VGltZXIoKTtcblxuICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgdGhlIEFib3J0RXJyb3IgZm9yIG5vdywgdGhpcyBpcyBzdGlsbCBoYW5kbGVkIGJ5IHRoZSBjb25uZWN0VGltZXIgZmlyaW5nXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcihlcnIubWVzc2FnZSwgJ0VJTlNUTE9PS1VQJykpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYW51cENvbm5lY3Rpb24oY2xlYW51cFR5cGU6IHR5cGVvZiBDTEVBTlVQX1RZUEVba2V5b2YgdHlwZW9mIENMRUFOVVBfVFlQRV0pIHtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB0aGlzLmNsZWFyQ29ubmVjdFRpbWVyKCk7XG4gICAgICB0aGlzLmNsZWFyUmVxdWVzdFRpbWVyKCk7XG4gICAgICB0aGlzLmNsZWFyUmV0cnlUaW1lcigpO1xuICAgICAgdGhpcy5jbG9zZUNvbm5lY3Rpb24oKTtcbiAgICAgIGlmIChjbGVhbnVwVHlwZSA9PT0gQ0xFQU5VUF9UWVBFLlJFRElSRUNUKSB7XG4gICAgICAgIHRoaXMuZW1pdCgncmVyb3V0aW5nJyk7XG4gICAgICB9IGVsc2UgaWYgKGNsZWFudXBUeXBlICE9PSBDTEVBTlVQX1RZUEUuUkVUUlkpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlbmQnKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3Q7XG4gICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgUmVxdWVzdEVycm9yKCdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVxdWVzdCBjb21wbGV0ZWQuJywgJ0VDTE9TRScpO1xuICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKGVycik7XG4gICAgICAgIHRoaXMucmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgdGhpcy5sb2dpbkVycm9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlRGVidWcoKSB7XG4gICAgY29uc3QgZGVidWcgPSBuZXcgRGVidWcodGhpcy5jb25maWcub3B0aW9ucy5kZWJ1Zyk7XG4gICAgZGVidWcub24oJ2RlYnVnJywgKG1lc3NhZ2UpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZGVidWcnLCBtZXNzYWdlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGVidWc7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2U6IE1lc3NhZ2UsIGhhbmRsZXI6IFRva2VuSGFuZGxlcikge1xuICAgIHJldHVybiBuZXcgVG9rZW5TdHJlYW1QYXJzZXIobWVzc2FnZSwgdGhpcy5kZWJ1ZywgaGFuZGxlciwgdGhpcy5jb25maWcub3B0aW9ucyk7XG4gIH1cblxuICBzb2NrZXRIYW5kbGluZ0ZvclNlbmRQcmVMb2dpbihzb2NrZXQ6IG5ldC5Tb2NrZXQpIHtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgKGVycm9yKSA9PiB7IHRoaXMuc29ja2V0RXJyb3IoZXJyb3IpOyB9KTtcbiAgICBzb2NrZXQub24oJ2Nsb3NlJywgKCkgPT4geyB0aGlzLnNvY2tldENsb3NlKCk7IH0pO1xuICAgIHNvY2tldC5vbignZW5kJywgKCkgPT4geyB0aGlzLnNvY2tldEVuZCgpOyB9KTtcbiAgICBzb2NrZXQuc2V0S2VlcEFsaXZlKHRydWUsIEtFRVBfQUxJVkVfSU5JVElBTF9ERUxBWSk7XG5cbiAgICB0aGlzLm1lc3NhZ2VJbyA9IG5ldyBNZXNzYWdlSU8oc29ja2V0LCB0aGlzLmNvbmZpZy5vcHRpb25zLnBhY2tldFNpemUsIHRoaXMuZGVidWcpO1xuICAgIHRoaXMubWVzc2FnZUlvLm9uKCdzZWN1cmUnLCAoY2xlYXJ0ZXh0KSA9PiB7IHRoaXMuZW1pdCgnc2VjdXJlJywgY2xlYXJ0ZXh0KTsgfSk7XG5cbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldDtcblxuICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgdGhpcy5kZWJ1Zy5sb2coJ2Nvbm5lY3RlZCB0byAnICsgdGhpcy5jb25maWcuc2VydmVyICsgJzonICsgdGhpcy5jb25maWcub3B0aW9ucy5wb3J0KTtcblxuICAgIHRoaXMuc2VuZFByZUxvZ2luKCk7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX1BSRUxPR0lOKTtcbiAgfVxuXG4gIHdyYXBXaXRoVGxzKHNvY2tldDogbmV0LlNvY2tldCwgc2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dGxzLlRMU1NvY2tldD4ge1xuICAgIHNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUNvbnRleHQgPSB0bHMuY3JlYXRlU2VjdXJlQ29udGV4dCh0aGlzLnNlY3VyZUNvbnRleHRPcHRpb25zKTtcbiAgICAgIC8vIElmIGNvbm5lY3QgdG8gYW4gaXAgYWRkcmVzcyBkaXJlY3RseSxcbiAgICAgIC8vIG5lZWQgdG8gc2V0IHRoZSBzZXJ2ZXJuYW1lIHRvIGFuIGVtcHR5IHN0cmluZ1xuICAgICAgLy8gaWYgdGhlIHVzZXIgaGFzIG5vdCBnaXZlbiBhIHNlcnZlcm5hbWUgZXhwbGljaXRseVxuICAgICAgY29uc3Qgc2VydmVyTmFtZSA9ICFuZXQuaXNJUCh0aGlzLmNvbmZpZy5zZXJ2ZXIpID8gdGhpcy5jb25maWcuc2VydmVyIDogJyc7XG4gICAgICBjb25zdCBlbmNyeXB0T3B0aW9ucyA9IHtcbiAgICAgICAgaG9zdDogdGhpcy5jb25maWcuc2VydmVyLFxuICAgICAgICBzb2NrZXQ6IHNvY2tldCxcbiAgICAgICAgQUxQTlByb3RvY29sczogWyd0ZHMvOC4wJ10sXG4gICAgICAgIHNlY3VyZUNvbnRleHQ6IHNlY3VyZUNvbnRleHQsXG4gICAgICAgIHNlcnZlcm5hbWU6IHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA/IHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA6IHNlcnZlck5hbWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlbmNyeXB0c29ja2V0ID0gdGxzLmNvbm5lY3QoZW5jcnlwdE9wdGlvbnMpO1xuXG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgICBlbmNyeXB0c29ja2V0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBlbmNyeXB0c29ja2V0LnJlbW92ZUxpc3RlbmVyKCdjb25uZWN0Jywgb25Db25uZWN0KTtcblxuICAgICAgICBlbmNyeXB0c29ja2V0LmRlc3Ryb3koKTtcblxuICAgICAgICByZWplY3Qoc2lnbmFsLnJlYXNvbik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgICAgZW5jcnlwdHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVycm9yKTtcbiAgICAgICAgZW5jcnlwdHNvY2tldC5yZW1vdmVMaXN0ZW5lcignY29ubmVjdCcsIG9uQ29ubmVjdCk7XG5cbiAgICAgICAgZW5jcnlwdHNvY2tldC5kZXN0cm95KCk7XG5cbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNvbm5lY3QgPSAoKSA9PiB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpO1xuXG4gICAgICAgIGVuY3J5cHRzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIGVuY3J5cHRzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Nvbm5lY3QnLCBvbkNvbm5lY3QpO1xuXG4gICAgICAgIHJlc29sdmUoZW5jcnlwdHNvY2tldCk7XG4gICAgICB9O1xuXG4gICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICAgIGVuY3J5cHRzb2NrZXQub24oJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICBlbmNyeXB0c29ja2V0Lm9uKCdzZWN1cmVDb25uZWN0Jywgb25Db25uZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbm5lY3RPblBvcnQocG9ydDogbnVtYmVyLCBtdWx0aVN1Ym5ldEZhaWxvdmVyOiBib29sZWFuLCBzaWduYWw6IEFib3J0U2lnbmFsLCBjdXN0b21Db25uZWN0b3I/OiAoKSA9PiBQcm9taXNlPG5ldC5Tb2NrZXQ+KSB7XG4gICAgY29uc3QgY29ubmVjdE9wdHMgPSB7XG4gICAgICBob3N0OiB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXIsXG4gICAgICBwb3J0OiB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5wb3J0IDogcG9ydCxcbiAgICAgIGxvY2FsQWRkcmVzczogdGhpcy5jb25maWcub3B0aW9ucy5sb2NhbEFkZHJlc3NcbiAgICB9O1xuXG4gICAgY29uc3QgY29ubmVjdCA9IGN1c3RvbUNvbm5lY3RvciB8fCAobXVsdGlTdWJuZXRGYWlsb3ZlciA/IGNvbm5lY3RJblBhcmFsbGVsIDogY29ubmVjdEluU2VxdWVuY2UpO1xuXG4gICAgKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBzb2NrZXQgPSBhd2FpdCBjb25uZWN0KGNvbm5lY3RPcHRzLCBkbnMubG9va3VwLCBzaWduYWwpO1xuXG4gICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0ID09PSAnc3RyaWN0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFdyYXAgdGhlIHNvY2tldCB3aXRoIFRMUyBmb3IgVERTIDguMFxuICAgICAgICAgIHNvY2tldCA9IGF3YWl0IHRoaXMud3JhcFdpdGhUbHMoc29ja2V0LCBzaWduYWwpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBzb2NrZXQuZW5kKCk7XG5cbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zb2NrZXRIYW5kbGluZ0ZvclNlbmRQcmVMb2dpbihzb2NrZXQpO1xuICAgIH0pKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgdGhpcy5jbGVhckNvbm5lY3RUaW1lcigpO1xuXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHsgdGhpcy5zb2NrZXRFcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xvc2VDb25uZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNvY2tldCkge1xuICAgICAgdGhpcy5zb2NrZXQuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY3JlYXRlQ29ubmVjdFRpbWVyKCkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5jb25uZWN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIHRoaXMuY29ubmVjdFRpbWVvdXQoKTtcbiAgICB9LCB0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3RUaW1lb3V0KTtcbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNyZWF0ZUNhbmNlbFRpbWVyKCkge1xuICAgIHRoaXMuY2xlYXJDYW5jZWxUaW1lcigpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmNhbmNlbFRpbWVvdXQ7XG4gICAgaWYgKHRpbWVvdXQgPiAwKSB7XG4gICAgICB0aGlzLmNhbmNlbFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsVGltZW91dCgpO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjcmVhdGVSZXF1ZXN0VGltZXIoKSB7XG4gICAgdGhpcy5jbGVhclJlcXVlc3RUaW1lcigpOyAvLyByZWxlYXNlIG9sZCB0aW1lciwganVzdCB0byBiZSBzYWZlXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucmVxdWVzdCBhcyBSZXF1ZXN0O1xuICAgIGNvbnN0IHRpbWVvdXQgPSAocmVxdWVzdC50aW1lb3V0ICE9PSB1bmRlZmluZWQpID8gcmVxdWVzdC50aW1lb3V0IDogdGhpcy5jb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dDtcbiAgICBpZiAodGltZW91dCkge1xuICAgICAgdGhpcy5yZXF1ZXN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXF1ZXN0VGltZW91dCgpO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjcmVhdGVSZXRyeVRpbWVyKCkge1xuICAgIHRoaXMuY2xlYXJSZXRyeVRpbWVyKCk7XG4gICAgdGhpcy5yZXRyeVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJldHJ5VGltZW91dCgpO1xuICAgIH0sIHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvblJldHJ5SW50ZXJ2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25uZWN0VGltZW91dCgpIHtcbiAgICBjb25zdCBob3N0UG9zdGZpeCA9IHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCA/IGA6JHt0aGlzLmNvbmZpZy5vcHRpb25zLnBvcnR9YCA6IGBcXFxcJHt0aGlzLmNvbmZpZy5vcHRpb25zLmluc3RhbmNlTmFtZX1gO1xuICAgIC8vIElmIHdlIGhhdmUgcm91dGluZyBkYXRhIHN0b3JlZCwgdGhpcyBjb25uZWN0aW9uIGhhcyBiZWVuIHJlZGlyZWN0ZWRcbiAgICBjb25zdCBzZXJ2ZXIgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXI7XG4gICAgY29uc3QgcG9ydCA9IHRoaXMucm91dGluZ0RhdGEgPyBgOiR7dGhpcy5yb3V0aW5nRGF0YS5wb3J0fWAgOiBob3N0UG9zdGZpeDtcbiAgICAvLyBHcmFiIHRoZSB0YXJnZXQgaG9zdCBmcm9tIHRoZSBjb25uZWN0aW9uIGNvbmZpZ3VyYXRpb24sIGFuZCBmcm9tIGEgcmVkaXJlY3QgbWVzc2FnZVxuICAgIC8vIG90aGVyd2lzZSwgbGVhdmUgdGhlIG1lc3NhZ2UgZW1wdHkuXG4gICAgY29uc3Qgcm91dGluZ01lc3NhZ2UgPSB0aGlzLnJvdXRpbmdEYXRhID8gYCAocmVkaXJlY3RlZCBmcm9tICR7dGhpcy5jb25maWcuc2VydmVyfSR7aG9zdFBvc3RmaXh9KWAgOiAnJztcbiAgICBjb25zdCBtZXNzYWdlID0gYEZhaWxlZCB0byBjb25uZWN0IHRvICR7c2VydmVyfSR7cG9ydH0ke3JvdXRpbmdNZXNzYWdlfSBpbiAke3RoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdFRpbWVvdXR9bXNgO1xuICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VUSU1FT1VUJykpO1xuICAgIHRoaXMuY29ubmVjdFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnY29ubmVjdFRpbWVvdXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2FuY2VsVGltZW91dCgpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYEZhaWxlZCB0byBjYW5jZWwgcmVxdWVzdCBpbiAke3RoaXMuY29uZmlnLm9wdGlvbnMuY2FuY2VsVGltZW91dH1tc2A7XG4gICAgdGhpcy5kZWJ1Zy5sb2cobWVzc2FnZSk7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdzb2NrZXRFcnJvcicsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VUSU1FT1VUJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICByZXF1ZXN0VGltZW91dCgpIHtcbiAgICB0aGlzLnJlcXVlc3RUaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICByZXF1ZXN0LmNhbmNlbCgpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSAocmVxdWVzdC50aW1lb3V0ICE9PSB1bmRlZmluZWQpID8gcmVxdWVzdC50aW1lb3V0IDogdGhpcy5jb25maWcub3B0aW9ucy5yZXF1ZXN0VGltZW91dDtcbiAgICBjb25zdCBtZXNzYWdlID0gJ1RpbWVvdXQ6IFJlcXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlIGluICcgKyB0aW1lb3V0ICsgJ21zJztcbiAgICByZXF1ZXN0LmVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihtZXNzYWdlLCAnRVRJTUVPVVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcmV0cnlUaW1lb3V0KCkge1xuICAgIHRoaXMucmV0cnlUaW1lciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmVtaXQoJ3JldHJ5Jyk7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5DT05ORUNUSU5HKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYXJDb25uZWN0VGltZXIoKSB7XG4gICAgaWYgKHRoaXMuY29ubmVjdFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jb25uZWN0VGltZXIpO1xuICAgICAgdGhpcy5jb25uZWN0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjbGVhckNhbmNlbFRpbWVyKCkge1xuICAgIGlmICh0aGlzLmNhbmNlbFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jYW5jZWxUaW1lcik7XG4gICAgICB0aGlzLmNhbmNlbFRpbWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY2xlYXJSZXF1ZXN0VGltZXIoKSB7XG4gICAgaWYgKHRoaXMucmVxdWVzdFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXF1ZXN0VGltZXIpO1xuICAgICAgdGhpcy5yZXF1ZXN0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjbGVhclJldHJ5VGltZXIoKSB7XG4gICAgaWYgKHRoaXMucmV0cnlUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmV0cnlUaW1lcik7XG4gICAgICB0aGlzLnJldHJ5VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICB0cmFuc2l0aW9uVG8obmV3U3RhdGU6IFN0YXRlKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKSB7XG4gICAgICB0aGlzLmRlYnVnLmxvZygnU3RhdGUgaXMgYWxyZWFkeSAnICsgbmV3U3RhdGUubmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5leGl0KSB7XG4gICAgICB0aGlzLnN0YXRlLmV4aXQuY2FsbCh0aGlzLCBuZXdTdGF0ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJ1Zy5sb2coJ1N0YXRlIGNoYW5nZTogJyArICh0aGlzLnN0YXRlID8gdGhpcy5zdGF0ZS5uYW1lIDogJ3VuZGVmaW5lZCcpICsgJyAtPiAnICsgbmV3U3RhdGUubmFtZSk7XG4gICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuZW50ZXIpIHtcbiAgICAgIHRoaXMuc3RhdGUuZW50ZXIuYXBwbHkodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRFdmVudEhhbmRsZXI8VCBleHRlbmRzIGtleW9mIFN0YXRlWydldmVudHMnXT4oZXZlbnROYW1lOiBUKTogTm9uTnVsbGFibGU8U3RhdGVbJ2V2ZW50cyddW1RdPiB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc3RhdGUuZXZlbnRzW2V2ZW50TmFtZV07XG5cbiAgICBpZiAoIWhhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gZXZlbnQgJyR7ZXZlbnROYW1lfScgaW4gc3RhdGUgJyR7dGhpcy5zdGF0ZS5uYW1lfSdgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlciE7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRpc3BhdGNoRXZlbnQ8VCBleHRlbmRzIGtleW9mIFN0YXRlWydldmVudHMnXT4oZXZlbnROYW1lOiBULCAuLi5hcmdzOiBQYXJhbWV0ZXJzPE5vbk51bGxhYmxlPFN0YXRlWydldmVudHMnXVtUXT4+KSB7XG4gICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc3RhdGUuZXZlbnRzW2V2ZW50TmFtZV0gYXMgKCh0aGlzOiBDb25uZWN0aW9uLCAuLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoYE5vIGV2ZW50ICcke2V2ZW50TmFtZX0nIGluIHN0YXRlICcke3RoaXMuc3RhdGUubmFtZX0nYCkpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc29ja2V0RXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuQ09OTkVDVElORyB8fCB0aGlzLnN0YXRlID09PSB0aGlzLlNUQVRFLlNFTlRfVExTU1NMTkVHT1RJQVRJT04pIHtcbiAgICAgIGNvbnN0IGhvc3RQb3N0Zml4ID0gdGhpcy5jb25maWcub3B0aW9ucy5wb3J0ID8gYDoke3RoaXMuY29uZmlnLm9wdGlvbnMucG9ydH1gIDogYFxcXFwke3RoaXMuY29uZmlnLm9wdGlvbnMuaW5zdGFuY2VOYW1lfWA7XG4gICAgICAvLyBJZiB3ZSBoYXZlIHJvdXRpbmcgZGF0YSBzdG9yZWQsIHRoaXMgY29ubmVjdGlvbiBoYXMgYmVlbiByZWRpcmVjdGVkXG4gICAgICBjb25zdCBzZXJ2ZXIgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5zZXJ2ZXIgOiB0aGlzLmNvbmZpZy5zZXJ2ZXI7XG4gICAgICBjb25zdCBwb3J0ID0gdGhpcy5yb3V0aW5nRGF0YSA/IGA6JHt0aGlzLnJvdXRpbmdEYXRhLnBvcnR9YCA6IGhvc3RQb3N0Zml4O1xuICAgICAgLy8gR3JhYiB0aGUgdGFyZ2V0IGhvc3QgZnJvbSB0aGUgY29ubmVjdGlvbiBjb25maWd1cmF0aW9uLCBhbmQgZnJvbSBhIHJlZGlyZWN0IG1lc3NhZ2VcbiAgICAgIC8vIG90aGVyd2lzZSwgbGVhdmUgdGhlIG1lc3NhZ2UgZW1wdHkuXG4gICAgICBjb25zdCByb3V0aW5nTWVzc2FnZSA9IHRoaXMucm91dGluZ0RhdGEgPyBgIChyZWRpcmVjdGVkIGZyb20gJHt0aGlzLmNvbmZpZy5zZXJ2ZXJ9JHtob3N0UG9zdGZpeH0pYCA6ICcnO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBGYWlsZWQgdG8gY29ubmVjdCB0byAke3NlcnZlcn0ke3BvcnR9JHtyb3V0aW5nTWVzc2FnZX0gLSAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcihtZXNzYWdlLCAnRVNPQ0tFVCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBDb25uZWN0aW9uIGxvc3QgLSAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgJ0VTT0NLRVQnKSk7XG4gICAgfVxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudCgnc29ja2V0RXJyb3InLCBlcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHNvY2tldEVuZCgpIHtcbiAgICB0aGlzLmRlYnVnLmxvZygnc29ja2V0IGVuZGVkJyk7XG4gICAgaWYgKHRoaXMuc3RhdGUgIT09IHRoaXMuU1RBVEUuRklOQUwpIHtcbiAgICAgIGNvbnN0IGVycm9yOiBFcnJvcldpdGhDb2RlID0gbmV3IEVycm9yKCdzb2NrZXQgaGFuZyB1cCcpO1xuICAgICAgZXJyb3IuY29kZSA9ICdFQ09OTlJFU0VUJztcbiAgICAgIHRoaXMuc29ja2V0RXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc29ja2V0Q2xvc2UoKSB7XG4gICAgdGhpcy5kZWJ1Zy5sb2coJ2Nvbm5lY3Rpb24gdG8gJyArIHRoaXMuY29uZmlnLnNlcnZlciArICc6JyArIHRoaXMuY29uZmlnLm9wdGlvbnMucG9ydCArICcgY2xvc2VkJyk7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuUkVST1VUSU5HKSB7XG4gICAgICB0aGlzLmRlYnVnLmxvZygnUmVyb3V0aW5nIHRvICcgKyB0aGlzLnJvdXRpbmdEYXRhIS5zZXJ2ZXIgKyAnOicgKyB0aGlzLnJvdXRpbmdEYXRhIS5wb3J0KTtcblxuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KCdyZWNvbm5lY3QnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuVFJBTlNJRU5UX0ZBSUxVUkVfUkVUUlkpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHRoaXMucm91dGluZ0RhdGEgPyB0aGlzLnJvdXRpbmdEYXRhLnNlcnZlciA6IHRoaXMuY29uZmlnLnNlcnZlcjtcbiAgICAgIGNvbnN0IHBvcnQgPSB0aGlzLnJvdXRpbmdEYXRhID8gdGhpcy5yb3V0aW5nRGF0YS5wb3J0IDogdGhpcy5jb25maWcub3B0aW9ucy5wb3J0O1xuICAgICAgdGhpcy5kZWJ1Zy5sb2coJ1JldHJ5IGFmdGVyIHRyYW5zaWVudCBmYWlsdXJlIGNvbm5lY3RpbmcgdG8gJyArIHNlcnZlciArICc6JyArIHBvcnQpO1xuXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoJ3JldHJ5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc2VuZFByZUxvZ2luKCkge1xuICAgIGNvbnN0IFssIG1ham9yLCBtaW5vciwgYnVpbGRdID0gL14oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvLmV4ZWModmVyc2lvbikgPz8gWycwLjAuMCcsICcwJywgJzAnLCAnMCddO1xuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgUHJlbG9naW5QYXlsb2FkKHtcbiAgICAgIC8vIElmIGVuY3J5cHQgc2V0dGluZyBpcyBzZXQgdG8gJ3N0cmljdCcsIHRoZW4gd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBkb25lIHRoZSBlbmNyeXB0aW9uIGJlZm9yZSBjYWxsaW5nXG4gICAgICAvLyB0aGlzIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBlbmNyeXB0IHdpbGwgYmUgc2V0IHRvIGZhbHNlIGhlcmUuXG4gICAgICAvLyBPdGhlcndpc2UsIHdlIHdpbGwgc2V0IGVuY3J5cHQgaGVyZSBiYXNlZCBvbiB0aGUgZW5jcnlwdCBCb29sZWFuIHZhbHVlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24uXG4gICAgICBlbmNyeXB0OiB0eXBlb2YgdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0ID09PSAnYm9vbGVhbicgJiYgdGhpcy5jb25maWcub3B0aW9ucy5lbmNyeXB0LFxuICAgICAgdmVyc2lvbjogeyBtYWpvcjogTnVtYmVyKG1ham9yKSwgbWlub3I6IE51bWJlcihtaW5vciksIGJ1aWxkOiBOdW1iZXIoYnVpbGQpLCBzdWJidWlsZDogMCB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm1lc3NhZ2VJby5zZW5kTWVzc2FnZShUWVBFLlBSRUxPR0lOLCBwYXlsb2FkLmRhdGEpO1xuICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkLnRvU3RyaW5nKCcgICcpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzZW5kTG9naW43UGFja2V0KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgTG9naW43UGF5bG9hZCh7XG4gICAgICB0ZHNWZXJzaW9uOiB2ZXJzaW9uc1t0aGlzLmNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb25dLFxuICAgICAgcGFja2V0U2l6ZTogdGhpcy5jb25maWcub3B0aW9ucy5wYWNrZXRTaXplLFxuICAgICAgY2xpZW50UHJvZ1ZlcjogMCxcbiAgICAgIGNsaWVudFBpZDogcHJvY2Vzcy5waWQsXG4gICAgICBjb25uZWN0aW9uSWQ6IDAsXG4gICAgICBjbGllbnRUaW1lWm9uZTogbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpLFxuICAgICAgY2xpZW50TGNpZDogMHgwMDAwMDQwOVxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gdGhpcy5jb25maWc7XG4gICAgc3dpdGNoIChhdXRoZW50aWNhdGlvbi50eXBlKSB7XG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXBhc3N3b3JkJzpcbiAgICAgICAgcGF5bG9hZC5mZWRBdXRoID0ge1xuICAgICAgICAgIHR5cGU6ICdBREFMJyxcbiAgICAgICAgICBlY2hvOiB0aGlzLmZlZEF1dGhSZXF1aXJlZCxcbiAgICAgICAgICB3b3JrZmxvdzogJ2RlZmF1bHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWFjY2Vzcy10b2tlbic6XG4gICAgICAgIHBheWxvYWQuZmVkQXV0aCA9IHtcbiAgICAgICAgICB0eXBlOiAnU0VDVVJJVFlUT0tFTicsXG4gICAgICAgICAgZWNobzogdGhpcy5mZWRBdXRoUmVxdWlyZWQsXG4gICAgICAgICAgZmVkQXV0aFRva2VuOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnRva2VuXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bSc6XG4gICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LWRlZmF1bHQnOlxuICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktYXBwLXNlcnZpY2UnOlxuICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1zZXJ2aWNlLXByaW5jaXBhbC1zZWNyZXQnOlxuICAgICAgICBwYXlsb2FkLmZlZEF1dGggPSB7XG4gICAgICAgICAgdHlwZTogJ0FEQUwnLFxuICAgICAgICAgIGVjaG86IHRoaXMuZmVkQXV0aFJlcXVpcmVkLFxuICAgICAgICAgIHdvcmtmbG93OiAnaW50ZWdyYXRlZCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ250bG0nOlxuICAgICAgICBwYXlsb2FkLnNzcGkgPSBjcmVhdGVOVExNUmVxdWVzdCh7IGRvbWFpbjogYXV0aGVudGljYXRpb24ub3B0aW9ucy5kb21haW4gfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXlsb2FkLnVzZXJOYW1lID0gYXV0aGVudGljYXRpb24ub3B0aW9ucy51c2VyTmFtZTtcbiAgICAgICAgcGF5bG9hZC5wYXNzd29yZCA9IGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMucGFzc3dvcmQ7XG4gICAgfVxuXG4gICAgcGF5bG9hZC5ob3N0bmFtZSA9IHRoaXMuY29uZmlnLm9wdGlvbnMud29ya3N0YXRpb25JZCB8fCBvcy5ob3N0bmFtZSgpO1xuICAgIHBheWxvYWQuc2VydmVyTmFtZSA9IHRoaXMucm91dGluZ0RhdGEgPyB0aGlzLnJvdXRpbmdEYXRhLnNlcnZlciA6IHRoaXMuY29uZmlnLnNlcnZlcjtcbiAgICBwYXlsb2FkLmFwcE5hbWUgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmFwcE5hbWUgfHwgJ1RlZGlvdXMnO1xuICAgIHBheWxvYWQubGlicmFyeU5hbWUgPSBsaWJyYXJ5TmFtZTtcbiAgICBwYXlsb2FkLmxhbmd1YWdlID0gdGhpcy5jb25maWcub3B0aW9ucy5sYW5ndWFnZTtcbiAgICBwYXlsb2FkLmRhdGFiYXNlID0gdGhpcy5jb25maWcub3B0aW9ucy5kYXRhYmFzZTtcbiAgICBwYXlsb2FkLmNsaWVudElkID0gQnVmZmVyLmZyb20oWzEsIDIsIDMsIDQsIDUsIDZdKTtcblxuICAgIHBheWxvYWQucmVhZE9ubHlJbnRlbnQgPSB0aGlzLmNvbmZpZy5vcHRpb25zLnJlYWRPbmx5SW50ZW50O1xuICAgIHBheWxvYWQuaW5pdERiRmF0YWwgPSAhdGhpcy5jb25maWcub3B0aW9ucy5mYWxsYmFja1RvRGVmYXVsdERiO1xuXG4gICAgdGhpcy5yb3V0aW5nRGF0YSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1lc3NhZ2VJby5zZW5kTWVzc2FnZShUWVBFLkxPR0lONywgcGF5bG9hZC50b0J1ZmZlcigpKTtcblxuICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBwYXlsb2FkLnRvU3RyaW5nKCcgICcpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzZW5kRmVkQXV0aFRva2VuTWVzc2FnZSh0b2tlbjogc3RyaW5nKSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW5MZW4gPSBCdWZmZXIuYnl0ZUxlbmd0aCh0b2tlbiwgJ3VjczInKTtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDggKyBhY2Nlc3NUb2tlbkxlbik7XG4gICAgbGV0IG9mZnNldCA9IDA7XG4gICAgb2Zmc2V0ID0gZGF0YS53cml0ZVVJbnQzMkxFKGFjY2Vzc1Rva2VuTGVuICsgNCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgPSBkYXRhLndyaXRlVUludDMyTEUoYWNjZXNzVG9rZW5MZW4sIG9mZnNldCk7XG4gICAgZGF0YS53cml0ZSh0b2tlbiwgb2Zmc2V0LCAndWNzMicpO1xuICAgIHRoaXMubWVzc2FnZUlvLnNlbmRNZXNzYWdlKFRZUEUuRkVEQVVUSF9UT0tFTiwgZGF0YSk7XG4gICAgLy8gc2VudCB0aGUgZmVkQXV0aCB0b2tlbiBtZXNzYWdlLCB0aGUgcmVzdCBpcyBzaW1pbGFyIHRvIHN0YW5kYXJkIGxvZ2luIDdcbiAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfTE9HSU43X1dJVEhfU1RBTkRBUkRfTE9HSU4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzZW5kSW5pdGlhbFNxbCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gbmV3IFNxbEJhdGNoUGF5bG9hZCh0aGlzLmdldEluaXRpYWxTcWwoKSwgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCksIHRoaXMuY29uZmlnLm9wdGlvbnMpO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogVFlQRS5TUUxfQkFUQ0ggfSk7XG4gICAgdGhpcy5tZXNzYWdlSW8ub3V0Z29pbmdNZXNzYWdlU3RyZWFtLndyaXRlKG1lc3NhZ2UpO1xuICAgIFJlYWRhYmxlLmZyb20ocGF5bG9hZCkucGlwZShtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZ2V0SW5pdGlhbFNxbCgpIHtcbiAgICBjb25zdCBvcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYW5zaV9udWxscyBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbCA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFuc2lfbnVsbHMgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQW5zaU51bGxEZWZhdWx0ID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX251bGxfZGZsdF9vbiBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpTnVsbERlZmF1bHQgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX251bGxfZGZsdF9vbiBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpUGFkZGluZyA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYW5zaV9wYWRkaW5nIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lQYWRkaW5nID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYW5zaV9wYWRkaW5nIG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFuc2lXYXJuaW5ncyA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgYW5zaV93YXJuaW5ncyBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVBbnNpV2FybmluZ3MgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBhbnNpX3dhcm5pbmdzIG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUFyaXRoQWJvcnQgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFyaXRoYWJvcnQgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQXJpdGhBYm9ydCA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGFyaXRoYWJvcnQgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQ29uY2F0TnVsbFlpZWxkc051bGwgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGNvbmNhdF9udWxsX3lpZWxkc19udWxsIG9uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZUNvbmNhdE51bGxZaWVsZHNOdWxsID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgY29uY2F0X251bGxfeWllbGRzX251bGwgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlQ3Vyc29yQ2xvc2VPbkNvbW1pdCA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgY3Vyc29yX2Nsb3NlX29uX2NvbW1pdCBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVDdXJzb3JDbG9zZU9uQ29tbWl0ID09PSBmYWxzZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgY3Vyc29yX2Nsb3NlX29uX2NvbW1pdCBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5kYXRlZmlyc3QgIT09IG51bGwpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgc2V0IGRhdGVmaXJzdCAke3RoaXMuY29uZmlnLm9wdGlvbnMuZGF0ZWZpcnN0fWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXQgIT09IG51bGwpIHtcbiAgICAgIG9wdGlvbnMucHVzaChgc2V0IGRhdGVmb3JtYXQgJHt0aGlzLmNvbmZpZy5vcHRpb25zLmRhdGVGb3JtYXR9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlSW1wbGljaXRUcmFuc2FjdGlvbnMgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGltcGxpY2l0X3RyYW5zYWN0aW9ucyBvbicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcub3B0aW9ucy5lbmFibGVJbXBsaWNpdFRyYW5zYWN0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IGltcGxpY2l0X3RyYW5zYWN0aW9ucyBvZmYnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5sYW5ndWFnZSAhPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5wdXNoKGBzZXQgbGFuZ3VhZ2UgJHt0aGlzLmNvbmZpZy5vcHRpb25zLmxhbmd1YWdlfWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLmVuYWJsZU51bWVyaWNSb3VuZGFib3J0ID09PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBudW1lcmljX3JvdW5kYWJvcnQgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlTnVtZXJpY1JvdW5kYWJvcnQgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCBudW1lcmljX3JvdW5kYWJvcnQgb2ZmJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlUXVvdGVkSWRlbnRpZmllciA9PT0gdHJ1ZSkge1xuICAgICAgb3B0aW9ucy5wdXNoKCdzZXQgcXVvdGVkX2lkZW50aWZpZXIgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuZW5hYmxlUXVvdGVkSWRlbnRpZmllciA9PT0gZmFsc2UpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IHF1b3RlZF9pZGVudGlmaWVyIG9mZicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLnRleHRzaXplICE9PSBudWxsKSB7XG4gICAgICBvcHRpb25zLnB1c2goYHNldCB0ZXh0c2l6ZSAke3RoaXMuY29uZmlnLm9wdGlvbnMudGV4dHNpemV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuY29ubmVjdGlvbklzb2xhdGlvbkxldmVsICE9PSBudWxsKSB7XG4gICAgICBvcHRpb25zLnB1c2goYHNldCB0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgJHt0aGlzLmdldElzb2xhdGlvbkxldmVsVGV4dCh0aGlzLmNvbmZpZy5vcHRpb25zLmNvbm5lY3Rpb25Jc29sYXRpb25MZXZlbCl9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IgPT09IHRydWUpIHtcbiAgICAgIG9wdGlvbnMucHVzaCgnc2V0IHhhY3RfYWJvcnQgb24nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMuYWJvcnRUcmFuc2FjdGlvbk9uRXJyb3IgPT09IGZhbHNlKSB7XG4gICAgICBvcHRpb25zLnB1c2goJ3NldCB4YWN0X2Fib3J0IG9mZicpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcm9jZXNzZWRJbml0aWFsU3FsKCkge1xuICAgIHRoaXMuY2xlYXJDb25uZWN0VGltZXIoKTtcbiAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBTUUwgYmF0Y2ggcmVwcmVzZW50ZWQgYnkgW1tSZXF1ZXN0XV0uXG4gICAqIFRoZXJlIGlzIG5vIHBhcmFtIHN1cHBvcnQsIGFuZCB1bmxpa2UgW1tSZXF1ZXN0LmV4ZWNTcWxdXSxcbiAgICogaXQgaXMgbm90IGxpa2VseSB0aGF0IFNRTCBTZXJ2ZXIgd2lsbCByZXVzZSB0aGUgZXhlY3V0aW9uIHBsYW4gaXQgZ2VuZXJhdGVzIGZvciB0aGUgU1FMLlxuICAgKlxuICAgKiBJbiBhbG1vc3QgYWxsIGNhc2VzLCBbW1JlcXVlc3QuZXhlY1NxbF1dIHdpbGwgYmUgYSBiZXR0ZXIgY2hvaWNlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBBIFtbUmVxdWVzdF1dIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBleGVjU3FsQmF0Y2gocmVxdWVzdDogUmVxdWVzdCkge1xuICAgIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5TUUxfQkFUQ0gsIG5ldyBTcWxCYXRjaFBheWxvYWQocmVxdWVzdC5zcWxUZXh0T3JQcm9jZWR1cmUhLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgdGhpcy5jb25maWcub3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqICBFeGVjdXRlIHRoZSBTUUwgcmVwcmVzZW50ZWQgYnkgW1tSZXF1ZXN0XV0uXG4gICAqXG4gICAqIEFzIGBzcF9leGVjdXRlc3FsYCBpcyB1c2VkIHRvIGV4ZWN1dGUgdGhlIFNRTCwgaWYgdGhlIHNhbWUgU1FMIGlzIGV4ZWN1dGVkIG11bHRpcGxlcyB0aW1lc1xuICAgKiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGUgU1FMIFNlcnZlciBxdWVyeSBvcHRpbWl6ZXIgaXMgbGlrZWx5IHRvIHJldXNlIHRoZSBleGVjdXRpb24gcGxhbiBpdCBnZW5lcmF0ZXNcbiAgICogZm9yIHRoZSBmaXJzdCBleGVjdXRpb24uIFRoaXMgbWF5IGFsc28gcmVzdWx0IGluIFNRTCBzZXJ2ZXIgdHJlYXRpbmcgdGhlIHJlcXVlc3QgbGlrZSBhIHN0b3JlZCBwcm9jZWR1cmVcbiAgICogd2hpY2ggY2FuIHJlc3VsdCBpbiB0aGUgW1tFdmVudF9kb25lSW5Qcm9jXV0gb3IgW1tFdmVudF9kb25lUHJvY11dIGV2ZW50cyBiZWluZyBlbWl0dGVkIGluc3RlYWQgb2YgdGhlXG4gICAqIFtbRXZlbnRfZG9uZV1dIGV2ZW50IHlvdSBtaWdodCBleHBlY3QuIFVzaW5nIFtbZXhlY1NxbEJhdGNoXV0gd2lsbCBwcmV2ZW50IHRoaXMgZnJvbSBvY2N1cnJpbmcgYnV0IG1heSBoYXZlIGEgbmVnYXRpdmUgcGVyZm9ybWFuY2UgaW1wYWN0LlxuICAgKlxuICAgKiBCZXdhcmUgb2YgdGhlIHdheSB0aGF0IHNjb3BpbmcgcnVsZXMgYXBwbHksIGFuZCBob3cgdGhleSBtYXkgW2FmZmVjdCBsb2NhbCB0ZW1wIHRhYmxlc10oaHR0cDovL3dlYmxvZ3Muc3FsdGVhbS5jb20vbWxhZGVucC9hcmNoaXZlLzIwMDYvMTEvMDMvMTcxOTcuYXNweClcbiAgICogSWYgeW91J3JlIHJ1bm5pbmcgaW4gdG8gc2NvcGluZyBpc3N1ZXMsIHRoZW4gW1tleGVjU3FsQmF0Y2hdXSBtYXkgYmUgYSBiZXR0ZXIgY2hvaWNlLlxuICAgKiBTZWUgYWxzbyBbaXNzdWUgIzI0XShodHRwczovL2dpdGh1Yi5jb20vcGVraW0vdGVkaW91cy9pc3N1ZXMvMjQpXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IEEgW1tSZXF1ZXN0XV0gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGV4ZWNTcWwocmVxdWVzdDogUmVxdWVzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0LnZhbGlkYXRlUGFyYW1ldGVycyh0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICByZXF1ZXN0LmVycm9yID0gZXJyb3I7XG5cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmRlYnVnLmxvZyhlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdID0gW107XG5cbiAgICBwYXJhbWV0ZXJzLnB1c2goe1xuICAgICAgdHlwZTogVFlQRVMuTlZhckNoYXIsXG4gICAgICBuYW1lOiAnc3RhdGVtZW50JyxcbiAgICAgIHZhbHVlOiByZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSxcbiAgICAgIG91dHB1dDogZmFsc2UsXG4gICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgaWYgKHJlcXVlc3QucGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICAgIHR5cGU6IFRZUEVTLk5WYXJDaGFyLFxuICAgICAgICBuYW1lOiAncGFyYW1zJyxcbiAgICAgICAgdmFsdWU6IHJlcXVlc3QubWFrZVBhcmFtc1BhcmFtZXRlcihyZXF1ZXN0LnBhcmFtZXRlcnMpLFxuICAgICAgICBvdXRwdXQ6IGZhbHNlLFxuICAgICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuXG4gICAgICBwYXJhbWV0ZXJzLnB1c2goLi4ucmVxdWVzdC5wYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLm1ha2VSZXF1ZXN0KHJlcXVlc3QsIFRZUEUuUlBDX1JFUVVFU1QsIG5ldyBScGNSZXF1ZXN0UGF5bG9hZChQcm9jZWR1cmVzLlNwX0V4ZWN1dGVTcWwsIHBhcmFtZXRlcnMsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBCdWxrTG9hZCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHRhYmxlIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBidWxrLWluc2VydCBpbnRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBBIHNldCBvZiBidWxrIGxvYWQgb3B0aW9ucy5cbiAgICovXG4gIG5ld0J1bGtMb2FkKHRhYmxlOiBzdHJpbmcsIGNhbGxiYWNrOiBCdWxrTG9hZENhbGxiYWNrKTogQnVsa0xvYWRcbiAgbmV3QnVsa0xvYWQodGFibGU6IHN0cmluZywgb3B0aW9uczogQnVsa0xvYWRPcHRpb25zLCBjYWxsYmFjazogQnVsa0xvYWRDYWxsYmFjayk6IEJ1bGtMb2FkXG4gIG5ld0J1bGtMb2FkKHRhYmxlOiBzdHJpbmcsIGNhbGxiYWNrT3JPcHRpb25zOiBCdWxrTG9hZE9wdGlvbnMgfCBCdWxrTG9hZENhbGxiYWNrLCBjYWxsYmFjaz86IEJ1bGtMb2FkQ2FsbGJhY2spIHtcbiAgICBsZXQgb3B0aW9uczogQnVsa0xvYWRPcHRpb25zO1xuXG4gICAgaWYgKGNhbGxiYWNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2tPck9wdGlvbnMgYXMgQnVsa0xvYWRDYWxsYmFjaztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucyA9IGNhbGxiYWNrT3JPcHRpb25zIGFzIEJ1bGtMb2FkT3B0aW9ucztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcIm9wdGlvbnNcIiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJ1bGtMb2FkKHRhYmxlLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uLCB0aGlzLmNvbmZpZy5vcHRpb25zLCBvcHRpb25zLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIFtbQnVsa0xvYWRdXS5cbiAgICpcbiAgICogYGBganNcbiAgICogLy8gV2Ugd2FudCB0byBwZXJmb3JtIGEgYnVsayBsb2FkIGludG8gYSB0YWJsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKiAvLyBDUkVBVEUgVEFCTEUgZW1wbG95ZWVzIChmaXJzdF9uYW1lIG52YXJjaGFyKDI1NSksIGxhc3RfbmFtZSBudmFyY2hhcigyNTUpLCBkYXlfb2ZfYmlydGggZGF0ZSk7XG4gICAqXG4gICAqIGNvbnN0IGJ1bGtMb2FkID0gY29ubmVjdGlvbi5uZXdCdWxrTG9hZCgnZW1wbG95ZWVzJywgKGVyciwgcm93Q291bnQpID0+IHtcbiAgICogICAvLyAuLi5cbiAgICogfSk7XG4gICAqXG4gICAqIC8vIEZpcnN0LCB3ZSBuZWVkIHRvIHNwZWNpZnkgdGhlIGNvbHVtbnMgdGhhdCB3ZSB3YW50IHRvIHdyaXRlIHRvLFxuICAgKiAvLyBhbmQgdGhlaXIgZGVmaW5pdGlvbnMuIFRoZXNlIGRlZmluaXRpb25zIG11c3QgbWF0Y2ggdGhlIGFjdHVhbCB0YWJsZSxcbiAgICogLy8gb3RoZXJ3aXNlIHRoZSBidWxrIGxvYWQgd2lsbCBmYWlsLlxuICAgKiBidWxrTG9hZC5hZGRDb2x1bW4oJ2ZpcnN0X25hbWUnLCBUWVBFUy5OVmFyY2hhciwgeyBudWxsYWJsZTogZmFsc2UgfSk7XG4gICAqIGJ1bGtMb2FkLmFkZENvbHVtbignbGFzdF9uYW1lJywgVFlQRVMuTlZhcmNoYXIsIHsgbnVsbGFibGU6IGZhbHNlIH0pO1xuICAgKiBidWxrTG9hZC5hZGRDb2x1bW4oJ2RhdGVfb2ZfYmlydGgnLCBUWVBFUy5EYXRlLCB7IG51bGxhYmxlOiBmYWxzZSB9KTtcbiAgICpcbiAgICogLy8gRXhlY3V0ZSBhIGJ1bGsgbG9hZCB3aXRoIGEgcHJlZGVmaW5lZCBsaXN0IG9mIHJvd3MuXG4gICAqIC8vXG4gICAqIC8vIE5vdGUgdGhhdCB0aGVzZSByb3dzIGFyZSBoZWxkIGluIG1lbW9yeSB1bnRpbCB0aGVcbiAgICogLy8gYnVsayBsb2FkIHdhcyBwZXJmb3JtZWQsIHNvIGlmIHlvdSBuZWVkIHRvIHdyaXRlIGEgbGFyZ2VcbiAgICogLy8gbnVtYmVyIG9mIHJvd3MgKGUuZy4gYnkgcmVhZGluZyBmcm9tIGEgQ1NWIGZpbGUpLFxuICAgKiAvLyBwYXNzaW5nIGFuIGBBc3luY0l0ZXJhYmxlYCBpcyBhZHZpc2FibGUgdG8ga2VlcCBtZW1vcnkgdXNhZ2UgbG93LlxuICAgKiBjb25uZWN0aW9uLmV4ZWNCdWxrTG9hZChidWxrTG9hZCwgW1xuICAgKiAgIHsgJ2ZpcnN0X25hbWUnOiAnU3RldmUnLCAnbGFzdF9uYW1lJzogJ0pvYnMnLCAnZGF5X29mX2JpcnRoJzogbmV3IERhdGUoJzAyLTI0LTE5NTUnKSB9LFxuICAgKiAgIHsgJ2ZpcnN0X25hbWUnOiAnQmlsbCcsICdsYXN0X25hbWUnOiAnR2F0ZXMnLCAnZGF5X29mX2JpcnRoJzogbmV3IERhdGUoJzEwLTI4LTE5NTUnKSB9XG4gICAqIF0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGJ1bGtMb2FkIEEgcHJldmlvdXNseSBjcmVhdGVkIFtbQnVsa0xvYWRdXS5cbiAgICogQHBhcmFtIHJvd3MgQSBbW0l0ZXJhYmxlXV0gb3IgW1tBc3luY0l0ZXJhYmxlXV0gdGhhdCBjb250YWlucyB0aGUgcm93cyB0aGF0IHNob3VsZCBiZSBidWxrIGxvYWRlZC5cbiAgICovXG4gIGV4ZWNCdWxrTG9hZChidWxrTG9hZDogQnVsa0xvYWQsIHJvd3M6IEFzeW5jSXRlcmFibGU8dW5rbm93bltdIHwgeyBbY29sdW1uTmFtZTogc3RyaW5nXTogdW5rbm93biB9PiB8IEl0ZXJhYmxlPHVua25vd25bXSB8IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IHVua25vd24gfT4pOiB2b2lkXG5cbiAgZXhlY0J1bGtMb2FkKGJ1bGtMb2FkOiBCdWxrTG9hZCwgcm93cz86IEFzeW5jSXRlcmFibGU8dW5rbm93bltdIHwgeyBbY29sdW1uTmFtZTogc3RyaW5nXTogdW5rbm93biB9PiB8IEl0ZXJhYmxlPHVua25vd25bXSB8IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IHVua25vd24gfT4pIHtcbiAgICBidWxrTG9hZC5leGVjdXRpb25TdGFydGVkID0gdHJ1ZTtcblxuICAgIGlmIChyb3dzKSB7XG4gICAgICBpZiAoYnVsa0xvYWQuc3RyZWFtaW5nTW9kZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb25uZWN0aW9uLmV4ZWNCdWxrTG9hZCBjYW4ndCBiZSBjYWxsZWQgd2l0aCBhIEJ1bGtMb2FkIHRoYXQgd2FzIHB1dCBpbiBzdHJlYW1pbmcgbW9kZS5cIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChidWxrTG9hZC5maXJzdFJvd1dyaXR0ZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29ubmVjdGlvbi5leGVjQnVsa0xvYWQgY2FuJ3QgYmUgY2FsbGVkIHdpdGggYSBCdWxrTG9hZCB0aGF0IGFscmVhZHkgaGFzIHJvd3Mgd3JpdHRlbiB0byBpdC5cIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvd1N0cmVhbSA9IFJlYWRhYmxlLmZyb20ocm93cyk7XG5cbiAgICAgIC8vIERlc3Ryb3kgdGhlIHBhY2tldCB0cmFuc2Zvcm0gaWYgYW4gZXJyb3IgaGFwcGVucyBpbiB0aGUgcm93IHN0cmVhbSxcbiAgICAgIC8vIGUuZy4gaWYgYW4gZXJyb3IgaXMgdGhyb3duIGZyb20gd2l0aGluIGEgZ2VuZXJhdG9yIG9yIHN0cmVhbS5cbiAgICAgIHJvd1N0cmVhbS5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgIGJ1bGtMb2FkLnJvd1RvUGFja2V0VHJhbnNmb3JtLmRlc3Ryb3koZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBEZXN0cm95IHRoZSByb3cgc3RyZWFtIGlmIGFuIGVycm9yIGhhcHBlbnMgaW4gdGhlIHBhY2tldCB0cmFuc2Zvcm0sXG4gICAgICAvLyBlLmcuIGlmIHRoZSBidWxrIGxvYWQgaXMgY2FuY2VsbGVkLlxuICAgICAgYnVsa0xvYWQucm93VG9QYWNrZXRUcmFuc2Zvcm0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICByb3dTdHJlYW0uZGVzdHJveShlcnIpO1xuICAgICAgfSk7XG5cbiAgICAgIHJvd1N0cmVhbS5waXBlKGJ1bGtMb2FkLnJvd1RvUGFja2V0VHJhbnNmb3JtKTtcbiAgICB9IGVsc2UgaWYgKCFidWxrTG9hZC5zdHJlYW1pbmdNb2RlKSB7XG4gICAgICAvLyBJZiB0aGUgYnVsa2xvYWQgd2FzIG5vdCBwdXQgaW50byBzdHJlYW1pbmcgbW9kZSBieSB0aGUgdXNlcixcbiAgICAgIC8vIHdlIGVuZCB0aGUgcm93VG9QYWNrZXRUcmFuc2Zvcm0gaGVyZSBmb3IgdGhlbS5cbiAgICAgIC8vXG4gICAgICAvLyBJZiBpdCB3YXMgcHV0IGludG8gc3RyZWFtaW5nIG1vZGUsIGl0J3MgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eVxuICAgICAgLy8gdG8gZW5kIHRoZSBzdHJlYW0uXG4gICAgICBidWxrTG9hZC5yb3dUb1BhY2tldFRyYW5zZm9ybS5lbmQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkNhbmNlbCA9ICgpID0+IHtcbiAgICAgIHJlcXVlc3QuY2FuY2VsKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgQnVsa0xvYWRQYXlsb2FkKGJ1bGtMb2FkKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChidWxrTG9hZC5nZXRCdWxrSW5zZXJ0U3FsKCksIChlcnJvcjogKEVycm9yICYgeyBjb2RlPzogc3RyaW5nIH0pIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgYnVsa0xvYWQucmVtb3ZlTGlzdGVuZXIoJ2NhbmNlbCcsIG9uQ2FuY2VsKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSAnVU5LTk9XTicpIHtcbiAgICAgICAgICBlcnJvci5tZXNzYWdlICs9ICcgVGhpcyBpcyBsaWtlbHkgYmVjYXVzZSB0aGUgc2NoZW1hIG9mIHRoZSBCdWxrTG9hZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2NoZW1hIG9mIHRoZSB0YWJsZSB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gaW5zZXJ0IGludG8uJztcbiAgICAgICAgfVxuICAgICAgICBidWxrTG9hZC5lcnJvciA9IGVycm9yO1xuICAgICAgICBidWxrTG9hZC5jYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYWtlUmVxdWVzdChidWxrTG9hZCwgVFlQRS5CVUxLX0xPQUQsIHBheWxvYWQpO1xuICAgIH0pO1xuXG4gICAgYnVsa0xvYWQub25jZSgnY2FuY2VsJywgb25DYW5jZWwpO1xuXG4gICAgdGhpcy5leGVjU3FsQmF0Y2gocmVxdWVzdCk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSB0aGUgU1FMIHJlcHJlc2VudGVkIGJ5IHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBUaGUgcmVxdWVzdCBjYW4gdGhlbiBiZSB1c2VkIGluIHN1YnNlcXVlbnQgY2FsbHMgdG9cbiAgICogW1tleGVjdXRlXV0gYW5kIFtbdW5wcmVwYXJlXV1cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgQSBbW1JlcXVlc3RdXSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0LlxuICAgKiAgIFBhcmFtZXRlcnMgb25seSByZXF1aXJlIGEgbmFtZSBhbmQgdHlwZS4gUGFyYW1ldGVyIHZhbHVlcyBhcmUgaWdub3JlZC5cbiAgICovXG4gIHByZXBhcmUocmVxdWVzdDogUmVxdWVzdCkge1xuICAgIGNvbnN0IHBhcmFtZXRlcnM6IFBhcmFtZXRlcltdID0gW107XG5cbiAgICBwYXJhbWV0ZXJzLnB1c2goe1xuICAgICAgdHlwZTogVFlQRVMuSW50LFxuICAgICAgbmFtZTogJ2hhbmRsZScsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgb3V0cHV0OiB0cnVlLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgIHNjYWxlOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICB0eXBlOiBUWVBFUy5OVmFyQ2hhcixcbiAgICAgIG5hbWU6ICdwYXJhbXMnLFxuICAgICAgdmFsdWU6IHJlcXVlc3QucGFyYW1ldGVycy5sZW5ndGggPyByZXF1ZXN0Lm1ha2VQYXJhbXNQYXJhbWV0ZXIocmVxdWVzdC5wYXJhbWV0ZXJzKSA6IG51bGwsXG4gICAgICBvdXRwdXQ6IGZhbHNlLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgIHNjYWxlOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHBhcmFtZXRlcnMucHVzaCh7XG4gICAgICB0eXBlOiBUWVBFUy5OVmFyQ2hhcixcbiAgICAgIG5hbWU6ICdzdG10JyxcbiAgICAgIHZhbHVlOiByZXF1ZXN0LnNxbFRleHRPclByb2NlZHVyZSxcbiAgICAgIG91dHB1dDogZmFsc2UsXG4gICAgICBsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgc2NhbGU6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgcmVxdWVzdC5wcmVwYXJpbmcgPSB0cnVlO1xuXG4gICAgLy8gVE9ETzogV2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGV2ZW50IGhhbmRsZXIsIG90aGVyd2lzZSB0aGlzIGxlYWtzIG1lbW9yeVxuICAgIHJlcXVlc3Qub24oJ3JldHVyblZhbHVlJywgKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgICAgaWYgKG5hbWUgPT09ICdoYW5kbGUnKSB7XG4gICAgICAgIHJlcXVlc3QuaGFuZGxlID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0LmVycm9yID0gbmV3IFJlcXVlc3RFcnJvcihgVGVkaW91cyA+IFVuZXhwZWN0ZWQgb3V0cHV0IHBhcmFtZXRlciAke25hbWV9IGZyb20gc3BfcHJlcGFyZWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlJQQ19SRVFVRVNULCBuZXcgUnBjUmVxdWVzdFBheWxvYWQoUHJvY2VkdXJlcy5TcF9QcmVwYXJlLCBwYXJhbWV0ZXJzLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgdGhpcy5jb25maWcub3B0aW9ucywgdGhpcy5kYXRhYmFzZUNvbGxhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2UgdGhlIFNRTCBTZXJ2ZXIgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhIHByZXZpb3VzbHkgcHJlcGFyZWQgcmVxdWVzdC5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgQSBbW1JlcXVlc3RdXSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSByZXF1ZXN0LlxuICAgKiAgIFBhcmFtZXRlcnMgb25seSByZXF1aXJlIGEgbmFtZSBhbmQgdHlwZS5cbiAgICogICBQYXJhbWV0ZXIgdmFsdWVzIGFyZSBpZ25vcmVkLlxuICAgKi9cbiAgdW5wcmVwYXJlKHJlcXVlc3Q6IFJlcXVlc3QpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXSA9IFtdO1xuXG4gICAgcGFyYW1ldGVycy5wdXNoKHtcbiAgICAgIHR5cGU6IFRZUEVTLkludCxcbiAgICAgIG5hbWU6ICdoYW5kbGUnLFxuICAgICAgLy8gVE9ETzogQWJvcnQgaWYgYHJlcXVlc3QuaGFuZGxlYCBpcyBub3Qgc2V0XG4gICAgICB2YWx1ZTogcmVxdWVzdC5oYW5kbGUsXG4gICAgICBvdXRwdXQ6IGZhbHNlLFxuICAgICAgbGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgIHNjYWxlOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5SUENfUkVRVUVTVCwgbmV3IFJwY1JlcXVlc3RQYXlsb2FkKFByb2NlZHVyZXMuU3BfVW5wcmVwYXJlLCBwYXJhbWV0ZXJzLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgdGhpcy5jb25maWcub3B0aW9ucywgdGhpcy5kYXRhYmFzZUNvbGxhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgcHJldmlvdXNseSBwcmVwYXJlZCBTUUwsIHVzaW5nIHRoZSBzdXBwbGllZCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdCBBIHByZXZpb3VzbHkgcHJlcGFyZWQgW1tSZXF1ZXN0XV0uXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzICBBbiBvYmplY3Qgd2hvc2UgbmFtZXMgY29ycmVzcG9uZCB0byB0aGUgbmFtZXMgb2ZcbiAgICogICBwYXJhbWV0ZXJzIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgW1tSZXF1ZXN0XV0gYmVmb3JlIGl0IHdhcyBwcmVwYXJlZC5cbiAgICogICBUaGUgb2JqZWN0J3MgdmFsdWVzIGFyZSBwYXNzZWQgYXMgdGhlIHBhcmFtZXRlcnMnIHZhbHVlcyB3aGVuIHRoZVxuICAgKiAgIHJlcXVlc3QgaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBleGVjdXRlKHJlcXVlc3Q6IFJlcXVlc3QsIHBhcmFtZXRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSkge1xuICAgIGNvbnN0IGV4ZWN1dGVQYXJhbWV0ZXJzOiBQYXJhbWV0ZXJbXSA9IFtdO1xuXG4gICAgZXhlY3V0ZVBhcmFtZXRlcnMucHVzaCh7XG4gICAgICB0eXBlOiBUWVBFUy5JbnQsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIC8vIFRPRE86IEFib3J0IGlmIGByZXF1ZXN0LmhhbmRsZWAgaXMgbm90IHNldFxuICAgICAgdmFsdWU6IHJlcXVlc3QuaGFuZGxlLFxuICAgICAgb3V0cHV0OiBmYWxzZSxcbiAgICAgIGxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICBzY2FsZTogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHJlcXVlc3QucGFyYW1ldGVycy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSByZXF1ZXN0LnBhcmFtZXRlcnNbaV07XG5cbiAgICAgICAgZXhlY3V0ZVBhcmFtZXRlcnMucHVzaCh7XG4gICAgICAgICAgLi4ucGFyYW1ldGVyLFxuICAgICAgICAgIHZhbHVlOiBwYXJhbWV0ZXIudHlwZS52YWxpZGF0ZShwYXJhbWV0ZXJzID8gcGFyYW1ldGVyc1twYXJhbWV0ZXIubmFtZV0gOiBudWxsLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICByZXF1ZXN0LmVycm9yID0gZXJyb3I7XG5cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmRlYnVnLmxvZyhlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5SUENfUkVRVUVTVCwgbmV3IFJwY1JlcXVlc3RQYXlsb2FkKFByb2NlZHVyZXMuU3BfRXhlY3V0ZSwgZXhlY3V0ZVBhcmFtZXRlcnMsIHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpLCB0aGlzLmNvbmZpZy5vcHRpb25zLCB0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBhIHN0b3JlZCBwcm9jZWR1cmUgcmVwcmVzZW50ZWQgYnkgW1tSZXF1ZXN0XV0uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IEEgW1tSZXF1ZXN0XV0gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIGNhbGxQcm9jZWR1cmUocmVxdWVzdDogUmVxdWVzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXF1ZXN0LnZhbGlkYXRlUGFyYW1ldGVycyh0aGlzLmRhdGFiYXNlQ29sbGF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICByZXF1ZXN0LmVycm9yID0gZXJyb3I7XG5cbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmRlYnVnLmxvZyhlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5SUENfUkVRVUVTVCwgbmV3IFJwY1JlcXVlc3RQYXlsb2FkKHJlcXVlc3Quc3FsVGV4dE9yUHJvY2VkdXJlISwgcmVxdWVzdC5wYXJhbWV0ZXJzLCB0aGlzLmN1cnJlbnRUcmFuc2FjdGlvbkRlc2NyaXB0b3IoKSwgdGhpcy5jb25maWcub3B0aW9ucywgdGhpcy5kYXRhYmFzZUNvbGxhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZSBBIHN0cmluZyByZXByZXNlbnRpbmcgYSBuYW1lIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy4gUmVxdWlyZWQgd2hlbiBgaXNvbGF0aW9uTGV2ZWxgXG4gICAqICAgaXMgcHJlc2VudC5cbiAgICogQHBhcmFtIGlzb2xhdGlvbkxldmVsIFRoZSBpc29sYXRpb24gbGV2ZWwgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgdG8gYmUgcnVuIHdpdGguXG4gICAqXG4gICAqICAgVGhlIGlzb2xhdGlvbiBsZXZlbHMgYXJlIGF2YWlsYWJsZSBmcm9tIGByZXF1aXJlKCd0ZWRpb3VzJykuSVNPTEFUSU9OX0xFVkVMYC5cbiAgICogICAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAgICogYFJFQURfQ09NTUlUVEVEYFxuICAgKiAgICogYFJFUEVBVEFCTEVfUkVBRGBcbiAgICogICAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICAgKiBgU05BUFNIT1RgXG4gICAqXG4gICAqICAgT3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB0aGUgQ29ubmVjdGlvbidzIGlzb2xhdGlvbiBsZXZlbC5cbiAgICovXG4gIGJlZ2luVHJhbnNhY3Rpb24oY2FsbGJhY2s6IEJlZ2luVHJhbnNhY3Rpb25DYWxsYmFjaywgbmFtZSA9ICcnLCBpc29sYXRpb25MZXZlbCA9IHRoaXMuY29uZmlnLm9wdGlvbnMuaXNvbGF0aW9uTGV2ZWwpIHtcbiAgICBhc3NlcnRWYWxpZElzb2xhdGlvbkxldmVsKGlzb2xhdGlvbkxldmVsLCAnaXNvbGF0aW9uTGV2ZWwnKTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKG5hbWUsIGlzb2xhdGlvbkxldmVsKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgcmV0dXJuIHRoaXMuZXhlY1NxbEJhdGNoKG5ldyBSZXF1ZXN0KCdTRVQgVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMICcgKyAodHJhbnNhY3Rpb24uaXNvbGF0aW9uTGV2ZWxUb1RTUUwoKSkgKyAnO0JFR0lOIFRSQU4gJyArIHRyYW5zYWN0aW9uLm5hbWUsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoKys7XG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRGVwdGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmluVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVuZGVmaW5lZCwgKGVycikgPT4ge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgdGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm1ha2VSZXF1ZXN0KHJlcXVlc3QsIFRZUEUuVFJBTlNBQ1RJT05fTUFOQUdFUiwgdHJhbnNhY3Rpb24uYmVnaW5QYXlsb2FkKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0IGEgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdHJhbnNhY3Rpb24gLSB0aGF0IGlzLCBbW2JlZ2luVHJhbnNhY3Rpb25dXVxuICAgKiBzaG91bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgY2FsbGVkLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWUgQSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgdHJhbnNhY3Rpb24uXG4gICAqICAgT3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuIFJlcXVpcmVkIHdoZW4gYGlzb2xhdGlvbkxldmVsYGlzIHByZXNlbnQuXG4gICAqL1xuICBjb21taXRUcmFuc2FjdGlvbihjYWxsYmFjazogQ29tbWl0VHJhbnNhY3Rpb25DYWxsYmFjaywgbmFtZSA9ICcnKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24obmFtZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjU3FsQmF0Y2gobmV3IFJlcXVlc3QoJ0NPTU1JVCBUUkFOICcgKyB0cmFuc2FjdGlvbi5uYW1lLCAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25EZXB0aC0tO1xuICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvbkRlcHRoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5pblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodW5kZWZpbmVkLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5UUkFOU0FDVElPTl9NQU5BR0VSLCB0cmFuc2FjdGlvbi5jb21taXRQYXlsb2FkKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpKSk7XG4gIH1cblxuICAvKipcbiAgICogUm9sbGJhY2sgYSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogVGhlcmUgc2hvdWxkIGJlIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiAtIHRoYXQgaXMsIFtbYmVnaW5UcmFuc2FjdGlvbl1dXG4gICAqIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBjYWxsZWQuXG4gICAqXG4gICAqIEBwYXJhbSBjYWxsYmFja1xuICAgKiBAcGFyYW0gbmFtZSBBIHN0cmluZyByZXByZXNlbnRpbmcgYSBuYW1lIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICogICBSZXF1aXJlZCB3aGVuIGBpc29sYXRpb25MZXZlbGAgaXMgcHJlc2VudC5cbiAgICovXG4gIHJvbGxiYWNrVHJhbnNhY3Rpb24oY2FsbGJhY2s6IFJvbGxiYWNrVHJhbnNhY3Rpb25DYWxsYmFjaywgbmFtZSA9ICcnKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24obmFtZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjU3FsQmF0Y2gobmV3IFJlcXVlc3QoJ1JPTExCQUNLIFRSQU4gJyArIHRyYW5zYWN0aW9uLm5hbWUsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoLS07XG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRGVwdGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QodW5kZWZpbmVkLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXMubWFrZVJlcXVlc3QocmVxdWVzdCwgVFlQRS5UUkFOU0FDVElPTl9NQU5BR0VSLCB0cmFuc2FjdGlvbi5yb2xsYmFja1BheWxvYWQodGhpcy5jdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBzYXZlcG9pbnQgd2l0aGluIGEgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdHJhbnNhY3Rpb24gLSB0aGF0IGlzLCBbW2JlZ2luVHJhbnNhY3Rpb25dXVxuICAgKiBzaG91bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgY2FsbGVkLlxuICAgKlxuICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICogQHBhcmFtIG5hbWUgQSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbmFtZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgdHJhbnNhY3Rpb24uXFxcbiAgICogICBPcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICogICBSZXF1aXJlZCB3aGVuIGBpc29sYXRpb25MZXZlbGAgaXMgcHJlc2VudC5cbiAgICovXG4gIHNhdmVUcmFuc2FjdGlvbihjYWxsYmFjazogU2F2ZVRyYW5zYWN0aW9uQ2FsbGJhY2ssIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJykge1xuICAgICAgcmV0dXJuIHRoaXMuZXhlY1NxbEJhdGNoKG5ldyBSZXF1ZXN0KCdTQVZFIFRSQU4gJyArIHRyYW5zYWN0aW9uLm5hbWUsIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoKys7XG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1bmRlZmluZWQsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcy5tYWtlUmVxdWVzdChyZXF1ZXN0LCBUWVBFLlRSQU5TQUNUSU9OX01BTkFHRVIsIHRyYW5zYWN0aW9uLnNhdmVQYXlsb2FkKHRoaXMuY3VycmVudFRyYW5zYWN0aW9uRGVzY3JpcHRvcigpKSk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSBnaXZlbiBjYWxsYmFjayBhZnRlciBzdGFydGluZyBhIHRyYW5zYWN0aW9uLCBhbmQgY29tbWl0IG9yXG4gICAqIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBhZnRlcndhcmRzLlxuICAgKlxuICAgKiBUaGlzIGlzIGEgaGVscGVyIHRoYXQgZW1wbG95cyBbW2JlZ2luVHJhbnNhY3Rpb25dXSwgW1tjb21taXRUcmFuc2FjdGlvbl1dLFxuICAgKiBbW3JvbGxiYWNrVHJhbnNhY3Rpb25dXSwgYW5kIFtbc2F2ZVRyYW5zYWN0aW9uXV0gdG8gZ3JlYXRseSBzaW1wbGlmeSB0aGVcbiAgICogdXNlIG9mIGRhdGFiYXNlIHRyYW5zYWN0aW9ucyBhbmQgYXV0b21hdGljYWxseSBoYW5kbGUgdHJhbnNhY3Rpb24gbmVzdGluZy5cbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqIEBwYXJhbSBpc29sYXRpb25MZXZlbFxuICAgKiAgIFRoZSBpc29sYXRpb24gbGV2ZWwgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgdG8gYmUgcnVuIHdpdGguXG4gICAqXG4gICAqICAgVGhlIGlzb2xhdGlvbiBsZXZlbHMgYXJlIGF2YWlsYWJsZSBmcm9tIGByZXF1aXJlKCd0ZWRpb3VzJykuSVNPTEFUSU9OX0xFVkVMYC5cbiAgICogICAqIGBSRUFEX1VOQ09NTUlUVEVEYFxuICAgKiAgICogYFJFQURfQ09NTUlUVEVEYFxuICAgKiAgICogYFJFUEVBVEFCTEVfUkVBRGBcbiAgICogICAqIGBTRVJJQUxJWkFCTEVgXG4gICAqICAgKiBgU05BUFNIT1RgXG4gICAqXG4gICAqICAgT3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB0aGUgQ29ubmVjdGlvbidzIGlzb2xhdGlvbiBsZXZlbC5cbiAgICovXG4gIHRyYW5zYWN0aW9uKGNiOiAoZXJyOiBFcnJvciB8IG51bGwgfCB1bmRlZmluZWQsIHR4RG9uZT86IDxUIGV4dGVuZHMgVHJhbnNhY3Rpb25Eb25lQ2FsbGJhY2s+KGVycjogRXJyb3IgfCBudWxsIHwgdW5kZWZpbmVkLCBkb25lOiBULCAuLi5hcmdzOiBDYWxsYmFja1BhcmFtZXRlcnM8VD4pID0+IHZvaWQpID0+IHZvaWQsIGlzb2xhdGlvbkxldmVsPzogdHlwZW9mIElTT0xBVElPTl9MRVZFTFtrZXlvZiB0eXBlb2YgSVNPTEFUSU9OX0xFVkVMXSkge1xuICAgIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BjYmAgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlU2F2ZXBvaW50ID0gdGhpcy5pblRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IG5hbWUgPSAnX3RlZGlvdXNfJyArIChjcnlwdG8ucmFuZG9tQnl0ZXMoMTApLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgY29uc3QgdHhEb25lOiA8VCBleHRlbmRzIFRyYW5zYWN0aW9uRG9uZUNhbGxiYWNrPihlcnI6IEVycm9yIHwgbnVsbCB8IHVuZGVmaW5lZCwgZG9uZTogVCwgLi4uYXJnczogQ2FsbGJhY2tQYXJhbWV0ZXJzPFQ+KSA9PiB2b2lkID0gKGVyciwgZG9uZSwgLi4uYXJncykgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBpZiAodGhpcy5pblRyYW5zYWN0aW9uICYmIHRoaXMuc3RhdGUgPT09IHRoaXMuU1RBVEUuTE9HR0VEX0lOKSB7XG4gICAgICAgICAgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKCh0eEVycikgPT4ge1xuICAgICAgICAgICAgZG9uZSh0eEVyciB8fCBlcnIsIC4uLmFyZ3MpO1xuICAgICAgICAgIH0sIG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRvbmUoZXJyLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh1c2VTYXZlcG9pbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRlcHRoLS07XG4gICAgICAgIH1cbiAgICAgICAgZG9uZShudWxsLCAuLi5hcmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29tbWl0VHJhbnNhY3Rpb24oKHR4RXJyKSA9PiB7XG4gICAgICAgICAgZG9uZSh0eEVyciwgLi4uYXJncyk7XG4gICAgICAgIH0sIG5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodXNlU2F2ZXBvaW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5zYXZlVHJhbnNhY3Rpb24oKGVycikgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNvbGF0aW9uTGV2ZWwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5leGVjU3FsQmF0Y2gobmV3IFJlcXVlc3QoJ1NFVCB0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgJyArIHRoaXMuZ2V0SXNvbGF0aW9uTGV2ZWxUZXh0KGlzb2xhdGlvbkxldmVsKSwgKGVycikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVyciwgdHhEb25lKTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHR4RG9uZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWdpblRyYW5zYWN0aW9uKChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNiKG51bGwsIHR4RG9uZSk7XG4gICAgICB9LCBuYW1lLCBpc29sYXRpb25MZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBtYWtlUmVxdWVzdChyZXF1ZXN0OiBSZXF1ZXN0IHwgQnVsa0xvYWQsIHBhY2tldFR5cGU6IG51bWJlciwgcGF5bG9hZDogKEl0ZXJhYmxlPEJ1ZmZlcj4gfCBBc3luY0l0ZXJhYmxlPEJ1ZmZlcj4pICYgeyB0b1N0cmluZzogKGluZGVudD86IHN0cmluZykgPT4gc3RyaW5nIH0pIHtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gdGhpcy5TVEFURS5MT0dHRURfSU4pIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnUmVxdWVzdHMgY2FuIG9ubHkgYmUgbWFkZSBpbiB0aGUgJyArIHRoaXMuU1RBVEUuTE9HR0VEX0lOLm5hbWUgKyAnIHN0YXRlLCBub3QgdGhlICcgKyB0aGlzLnN0YXRlLm5hbWUgKyAnIHN0YXRlJztcbiAgICAgIHRoaXMuZGVidWcubG9nKG1lc3NhZ2UpO1xuICAgICAgcmVxdWVzdC5jYWxsYmFjayhuZXcgUmVxdWVzdEVycm9yKG1lc3NhZ2UsICdFSU5WQUxJRFNUQVRFJykpO1xuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHJlcXVlc3QuY2FsbGJhY2sobmV3IFJlcXVlc3RFcnJvcignQ2FuY2VsZWQuJywgJ0VDQU5DRUwnKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhY2tldFR5cGUgPT09IFRZUEUuU1FMX0JBVENIKSB7XG4gICAgICAgIHRoaXMuaXNTcWxCYXRjaCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzU3FsQmF0Y2ggPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICAgIHJlcXVlc3QuY29ubmVjdGlvbiEgPSB0aGlzO1xuICAgICAgcmVxdWVzdC5yb3dDb3VudCEgPSAwO1xuICAgICAgcmVxdWVzdC5yb3dzISA9IFtdO1xuICAgICAgcmVxdWVzdC5yc3QhID0gW107XG5cbiAgICAgIGNvbnN0IG9uQ2FuY2VsID0gKCkgPT4ge1xuICAgICAgICBwYXlsb2FkU3RyZWFtLnVucGlwZShtZXNzYWdlKTtcbiAgICAgICAgcGF5bG9hZFN0cmVhbS5kZXN0cm95KG5ldyBSZXF1ZXN0RXJyb3IoJ0NhbmNlbGVkLicsICdFQ0FOQ0VMJykpO1xuXG4gICAgICAgIC8vIHNldCB0aGUgaWdub3JlIGJpdCBhbmQgZW5kIHRoZSBtZXNzYWdlLlxuICAgICAgICBtZXNzYWdlLmlnbm9yZSA9IHRydWU7XG4gICAgICAgIG1lc3NhZ2UuZW5kKCk7XG5cbiAgICAgICAgaWYgKHJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0ICYmIHJlcXVlc3QucGF1c2VkKSB7XG4gICAgICAgICAgLy8gcmVzdW1lIHRoZSByZXF1ZXN0IGlmIGl0IHdhcyBwYXVzZWQgc28gd2UgY2FuIHJlYWQgdGhlIHJlbWFpbmluZyB0b2tlbnNcbiAgICAgICAgICByZXF1ZXN0LnJlc3VtZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uY2UoJ2NhbmNlbCcsIG9uQ2FuY2VsKTtcblxuICAgICAgdGhpcy5jcmVhdGVSZXF1ZXN0VGltZXIoKTtcblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogcGFja2V0VHlwZSwgcmVzZXRDb25uZWN0aW9uOiB0aGlzLnJlc2V0Q29ubmVjdGlvbk9uTmV4dFJlcXVlc3QgfSk7XG4gICAgICB0aGlzLm1lc3NhZ2VJby5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfQ0xJRU5UX1JFUVVFU1QpO1xuXG4gICAgICBtZXNzYWdlLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgICAgcmVxdWVzdC5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgb25DYW5jZWwpO1xuICAgICAgICByZXF1ZXN0Lm9uY2UoJ2NhbmNlbCcsIHRoaXMuX2NhbmNlbEFmdGVyUmVxdWVzdFNlbnQpO1xuXG4gICAgICAgIHRoaXMucmVzZXRDb25uZWN0aW9uT25OZXh0UmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRlYnVnLnBheWxvYWQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBheWxvYWQhLnRvU3RyaW5nKCcgICcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwYXlsb2FkU3RyZWFtID0gUmVhZGFibGUuZnJvbShwYXlsb2FkKTtcbiAgICAgIHBheWxvYWRTdHJlYW0ub25jZSgnZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgICAgcGF5bG9hZFN0cmVhbS51bnBpcGUobWVzc2FnZSk7XG5cbiAgICAgICAgLy8gT25seSBzZXQgYSByZXF1ZXN0IGVycm9yIGlmIG5vIGVycm9yIHdhcyBzZXQgeWV0LlxuICAgICAgICByZXF1ZXN0LmVycm9yID8/PSBlcnJvcjtcblxuICAgICAgICBtZXNzYWdlLmlnbm9yZSA9IHRydWU7XG4gICAgICAgIG1lc3NhZ2UuZW5kKCk7XG4gICAgICB9KTtcbiAgICAgIHBheWxvYWRTdHJlYW0ucGlwZShtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VsIGN1cnJlbnRseSBleGVjdXRlZCByZXF1ZXN0LlxuICAgKi9cbiAgY2FuY2VsKCkge1xuICAgIGlmICghdGhpcy5yZXF1ZXN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVxdWVzdC5jYW5jZWxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdC5jYW5jZWwoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgY29ubmVjdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS5cbiAgICogQ2FuIGJlIHVzZWZ1bCBmb3IgY29ubmVjdGlvbiBwb29sIGltcGxlbWVudGF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAqL1xuICByZXNldChjYWxsYmFjazogUmVzZXRDYWxsYmFjaykge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh0aGlzLmdldEluaXRpYWxTcWwoKSwgKGVycikgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInKSB7XG4gICAgICAgIHRoaXMuaW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlc2V0Q29ubmVjdGlvbk9uTmV4dFJlcXVlc3QgPSB0cnVlO1xuICAgIHRoaXMuZXhlY1NxbEJhdGNoKHJlcXVlc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjdXJyZW50VHJhbnNhY3Rpb25EZXNjcmlwdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uRGVzY3JpcHRvcnNbdGhpcy50cmFuc2FjdGlvbkRlc2NyaXB0b3JzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBnZXRJc29sYXRpb25MZXZlbFRleHQoaXNvbGF0aW9uTGV2ZWw6IHR5cGVvZiBJU09MQVRJT05fTEVWRUxba2V5b2YgdHlwZW9mIElTT0xBVElPTl9MRVZFTF0pIHtcbiAgICBzd2l0Y2ggKGlzb2xhdGlvbkxldmVsKSB7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5SRUFEX1VOQ09NTUlUVEVEOlxuICAgICAgICByZXR1cm4gJ3JlYWQgdW5jb21taXR0ZWQnO1xuICAgICAgY2FzZSBJU09MQVRJT05fTEVWRUwuUkVQRUFUQUJMRV9SRUFEOlxuICAgICAgICByZXR1cm4gJ3JlcGVhdGFibGUgcmVhZCc7XG4gICAgICBjYXNlIElTT0xBVElPTl9MRVZFTC5TRVJJQUxJWkFCTEU6XG4gICAgICAgIHJldHVybiAnc2VyaWFsaXphYmxlJztcbiAgICAgIGNhc2UgSVNPTEFUSU9OX0xFVkVMLlNOQVBTSE9UOlxuICAgICAgICByZXR1cm4gJ3NuYXBzaG90JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAncmVhZCBjb21taXR0ZWQnO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1RyYW5zaWVudEVycm9yKGVycm9yOiBBZ2dyZWdhdGVFcnJvciB8IENvbm5lY3Rpb25FcnJvcik6IGJvb2xlYW4ge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBZ2dyZWdhdGVFcnJvcikge1xuICAgIGVycm9yID0gZXJyb3IuZXJyb3JzWzBdO1xuICB9XG4gIHJldHVybiAoZXJyb3IgaW5zdGFuY2VvZiBDb25uZWN0aW9uRXJyb3IpICYmICEhZXJyb3IuaXNUcmFuc2llbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbm5lY3Rpb247XG5tb2R1bGUuZXhwb3J0cyA9IENvbm5lY3Rpb247XG5cbkNvbm5lY3Rpb24ucHJvdG90eXBlLlNUQVRFID0ge1xuICBJTklUSUFMSVpFRDoge1xuICAgIG5hbWU6ICdJbml0aWFsaXplZCcsXG4gICAgZXZlbnRzOiB7fVxuICB9LFxuICBDT05ORUNUSU5HOiB7XG4gICAgbmFtZTogJ0Nvbm5lY3RpbmcnLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGlzZUNvbm5lY3Rpb24oKTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgU0VOVF9QUkVMT0dJTjoge1xuICAgIG5hbWU6ICdTZW50UHJlbG9naW4nLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBtZXNzYWdlQnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuXG4gICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VJby5yZWFkTWVzc2FnZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGRhdGEgb2YgbWVzc2FnZSkge1xuICAgICAgICAgIG1lc3NhZ2VCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFttZXNzYWdlQnVmZmVyLCBkYXRhXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmVsb2dpblBheWxvYWQgPSBuZXcgUHJlbG9naW5QYXlsb2FkKG1lc3NhZ2VCdWZmZXIpO1xuICAgICAgICB0aGlzLmRlYnVnLnBheWxvYWQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHByZWxvZ2luUGF5bG9hZC50b1N0cmluZygnICAnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHByZWxvZ2luUGF5bG9hZC5mZWRBdXRoUmVxdWlyZWQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZlZEF1dGhSZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdzdHJpY3QnICE9PSB0aGlzLmNvbmZpZy5vcHRpb25zLmVuY3J5cHQgJiYgKHByZWxvZ2luUGF5bG9hZC5lbmNyeXB0aW9uU3RyaW5nID09PSAnT04nIHx8IHByZWxvZ2luUGF5bG9hZC5lbmNyeXB0aW9uU3RyaW5nID09PSAnUkVRJykpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnLm9wdGlvbnMuZW5jcnlwdCkge1xuICAgICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcihcIlNlcnZlciByZXF1aXJlcyBlbmNyeXB0aW9uLCBzZXQgJ2VuY3J5cHQnIGNvbmZpZyBvcHRpb24gdG8gdHJ1ZS5cIiwgJ0VFTkNSWVBUJykpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX1RMU1NTTE5FR09USUFUSU9OKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWVzc2FnZUlvLnN0YXJ0VGxzKHRoaXMuc2VjdXJlQ29udGV4dE9wdGlvbnMsIHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA/IHRoaXMuY29uZmlnLm9wdGlvbnMuc2VydmVyTmFtZSA6IHRoaXMucm91dGluZ0RhdGE/LnNlcnZlciA/PyB0aGlzLmNvbmZpZy5zZXJ2ZXIsIHRoaXMuY29uZmlnLm9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZW5kTG9naW43UGFja2V0KCk7XG5cbiAgICAgICAgY29uc3QgeyBhdXRoZW50aWNhdGlvbiB9ID0gdGhpcy5jb25maWc7XG5cbiAgICAgICAgc3dpdGNoIChhdXRoZW50aWNhdGlvbi50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCc6XG4gICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1tc2ktdm0nOlxuICAgICAgICAgIGNhc2UgJ2F6dXJlLWFjdGl2ZS1kaXJlY3RvcnktbXNpLWFwcC1zZXJ2aWNlJzpcbiAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCc6XG4gICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0JzpcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuU0VOVF9MT0dJTjdfV0lUSF9GRURBVVRIKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ250bG0nOlxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX0xPR0lON19XSVRIX05UTE0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuU0VOVF9MT0dJTjdfV0lUSF9TVEFOREFSRF9MT0dJTik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgUkVST1VUSU5HOiB7XG4gICAgbmFtZTogJ1JlUm91dGluZycsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5jbGVhbnVwQ29ubmVjdGlvbihDTEVBTlVQX1RZUEUuUkVESVJFQ1QpO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBtZXNzYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgIH0sXG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9LFxuICAgICAgcmVjb25uZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5DT05ORUNUSU5HKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFRSQU5TSUVOVF9GQUlMVVJFX1JFVFJZOiB7XG4gICAgbmFtZTogJ1RSQU5TSUVOVF9GQUlMVVJFX1JFVFJZJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmN1clRyYW5zaWVudFJldHJ5Q291bnQrKztcbiAgICAgIHRoaXMuY2xlYW51cENvbm5lY3Rpb24oQ0xFQU5VUF9UWVBFLlJFVFJZKTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgbWVzc2FnZTogZnVuY3Rpb24oKSB7XG4gICAgICB9LFxuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIHJldHJ5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVSZXRyeVRpbWVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX1RMU1NTTE5FR09USUFUSU9OOiB7XG4gICAgbmFtZTogJ1NlbnRUTFNTU0xOZWdvdGlhdGlvbicsXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX0xPR0lON19XSVRIX1NUQU5EQVJEX0xPR0lOOiB7XG4gICAgbmFtZTogJ1NlbnRMb2dpbjdXaXRoU3RhbmRhcmRMb2dpbicsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMubWVzc2FnZUlvLnJlYWRNZXNzYWdlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc29ja2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgTG9naW43VG9rZW5IYW5kbGVyKHRoaXMpO1xuICAgICAgICBjb25zdCB0b2tlblN0cmVhbVBhcnNlciA9IHRoaXMuY3JlYXRlVG9rZW5TdHJlYW1QYXJzZXIobWVzc2FnZSwgaGFuZGxlcik7XG5cbiAgICAgICAgYXdhaXQgb25jZSh0b2tlblN0cmVhbVBhcnNlciwgJ2VuZCcpO1xuXG4gICAgICAgIGlmIChoYW5kbGVyLmxvZ2luQWNrUmVjZWl2ZWQpIHtcbiAgICAgICAgICBpZiAoaGFuZGxlci5yb3V0aW5nRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0aW5nRGF0YSA9IGhhbmRsZXIucm91dGluZ0RhdGE7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlJFUk9VVElORyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuTE9HR0VEX0lOX1NFTkRJTkdfSU5JVElBTF9TUUwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvZ2luRXJyb3IpIHtcbiAgICAgICAgICBpZiAoaXNUcmFuc2llbnRFcnJvcih0aGlzLmxvZ2luRXJyb3IpKSB7XG4gICAgICAgICAgICB0aGlzLmRlYnVnLmxvZygnSW5pdGlhdGluZyByZXRyeSBvbiB0cmFuc2llbnQgZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuVFJBTlNJRU5UX0ZBSUxVUkVfUkVUUlkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCB0aGlzLmxvZ2luRXJyb3IpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIG5ldyBDb25uZWN0aW9uRXJyb3IoJ0xvZ2luIGZhaWxlZC4nLCAnRUxPR0lOJykpO1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgICB9XG4gICAgICB9KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX0xPR0lON19XSVRIX05UTE06IHtcbiAgICBuYW1lOiAnU2VudExvZ2luN1dpdGhOVExNTG9naW4nLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VJby5yZWFkTWVzc2FnZSgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSBuZXcgTG9naW43VG9rZW5IYW5kbGVyKHRoaXMpO1xuICAgICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBoYW5kbGVyKTtcblxuICAgICAgICAgIGF3YWl0IG9uY2UodG9rZW5TdHJlYW1QYXJzZXIsICdlbmQnKTtcblxuICAgICAgICAgIGlmIChoYW5kbGVyLmxvZ2luQWNrUmVjZWl2ZWQpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLnJvdXRpbmdEYXRhKSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGluZ0RhdGEgPSBoYW5kbGVyLnJvdXRpbmdEYXRhO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5SRVJPVVRJTkcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuTE9HR0VEX0lOX1NFTkRJTkdfSU5JVElBTF9TUUwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5udGxtcGFja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBhdXRoZW50aWNhdGlvbiA9IHRoaXMuY29uZmlnLmF1dGhlbnRpY2F0aW9uIGFzIE50bG1BdXRoZW50aWNhdGlvbjtcblxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IG5ldyBOVExNUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgICAgZG9tYWluOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmRvbWFpbixcbiAgICAgICAgICAgICAgdXNlck5hbWU6IGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudXNlck5hbWUsXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgICBudGxtcGFja2V0OiB0aGlzLm50bG1wYWNrZXRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VJby5zZW5kTWVzc2FnZShUWVBFLk5UTE1BVVRIX1BLVCwgcGF5bG9hZC5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMuZGVidWcucGF5bG9hZChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQudG9TdHJpbmcoJyAgJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5udGxtcGFja2V0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2dpbkVycm9yKSB7XG4gICAgICAgICAgICBpZiAoaXNUcmFuc2llbnRFcnJvcih0aGlzLmxvZ2luRXJyb3IpKSB7XG4gICAgICAgICAgICAgIHRoaXMuZGVidWcubG9nKCdJbml0aWF0aW5nIHJldHJ5IG9uIHRyYW5zaWVudCBlcnJvcicpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5UUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Nvbm5lY3QnLCB0aGlzLmxvZ2luRXJyb3IpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIG5ldyBDb25uZWN0aW9uRXJyb3IoJ0xvZ2luIGZhaWxlZC4nLCAnRUxPR0lOJykpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX0xPR0lON19XSVRIX0ZFREFVVEg6IHtcbiAgICBuYW1lOiAnU2VudExvZ2luN1dpdGhmZWRhdXRoJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBMb2dpbjdUb2tlbkhhbmRsZXIodGhpcyk7XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBoYW5kbGVyKTtcbiAgICAgICAgYXdhaXQgb25jZSh0b2tlblN0cmVhbVBhcnNlciwgJ2VuZCcpO1xuICAgICAgICBpZiAoaGFuZGxlci5sb2dpbkFja1JlY2VpdmVkKSB7XG4gICAgICAgICAgaWYgKGhhbmRsZXIucm91dGluZ0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGluZ0RhdGEgPSBoYW5kbGVyLnJvdXRpbmdEYXRhO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5SRVJPVVRJTkcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkxPR0dFRF9JTl9TRU5ESU5HX0lOSVRJQUxfU1FMKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmZWRBdXRoSW5mb1Rva2VuID0gaGFuZGxlci5mZWRBdXRoSW5mb1Rva2VuO1xuXG4gICAgICAgIGlmIChmZWRBdXRoSW5mb1Rva2VuICYmIGZlZEF1dGhJbmZvVG9rZW4uc3RzdXJsICYmIGZlZEF1dGhJbmZvVG9rZW4uc3BuKSB7XG4gICAgICAgICAgY29uc3QgYXV0aGVudGljYXRpb24gPSB0aGlzLmNvbmZpZy5hdXRoZW50aWNhdGlvbiBhcyBBenVyZUFjdGl2ZURpcmVjdG9yeVBhc3N3b3JkQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaVZtQXV0aGVudGljYXRpb24gfCBBenVyZUFjdGl2ZURpcmVjdG9yeU1zaUFwcFNlcnZpY2VBdXRoZW50aWNhdGlvbiB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5U2VydmljZVByaW5jaXBhbFNlY3JldCB8IEF6dXJlQWN0aXZlRGlyZWN0b3J5RGVmYXVsdEF1dGhlbnRpY2F0aW9uO1xuICAgICAgICAgIGNvbnN0IHRva2VuU2NvcGUgPSBuZXcgVVJMKCcvLmRlZmF1bHQnLCBmZWRBdXRoSW5mb1Rva2VuLnNwbikudG9TdHJpbmcoKTtcblxuICAgICAgICAgIGxldCBjcmVkZW50aWFscztcblxuICAgICAgICAgIHN3aXRjaCAoYXV0aGVudGljYXRpb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1wYXNzd29yZCc6XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gbmV3IFVzZXJuYW1lUGFzc3dvcmRDcmVkZW50aWFsKFxuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMudGVuYW50SWQgPz8gJ2NvbW1vbicsXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb24ub3B0aW9ucy5jbGllbnRJZCxcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbi5vcHRpb25zLnVzZXJOYW1lLFxuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMucGFzc3dvcmRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS12bSc6XG4gICAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LW1zaS1hcHAtc2VydmljZSc6XG4gICAgICAgICAgICAgIGNvbnN0IG1zaUFyZ3MgPSBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkID8gW2F1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWQsIHt9XSA6IFt7fV07XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gbmV3IE1hbmFnZWRJZGVudGl0eUNyZWRlbnRpYWwoLi4ubXNpQXJncyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXp1cmUtYWN0aXZlLWRpcmVjdG9yeS1kZWZhdWx0JzpcbiAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50SWQgPyB7IG1hbmFnZWRJZGVudGl0eUNsaWVudElkOiBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkIH0gOiB7fTtcbiAgICAgICAgICAgICAgY3JlZGVudGlhbHMgPSBuZXcgRGVmYXVsdEF6dXJlQ3JlZGVudGlhbChhcmdzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhenVyZS1hY3RpdmUtZGlyZWN0b3J5LXNlcnZpY2UtcHJpbmNpcGFsLXNlY3JldCc6XG4gICAgICAgICAgICAgIGNyZWRlbnRpYWxzID0gbmV3IENsaWVudFNlY3JldENyZWRlbnRpYWwoXG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb24ub3B0aW9ucy50ZW5hbnRJZCxcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGlvbi5vcHRpb25zLmNsaWVudElkLFxuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uLm9wdGlvbnMuY2xpZW50U2VjcmV0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB0b2tlblJlc3BvbnNlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlID0gYXdhaXQgY3JlZGVudGlhbHMuZ2V0VG9rZW4odG9rZW5TY29wZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2luRXJyb3IgPSBuZXcgQWdncmVnYXRlRXJyb3IoXG4gICAgICAgICAgICAgIFtuZXcgQ29ubmVjdGlvbkVycm9yKCdTZWN1cml0eSB0b2tlbiBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCBvciBhdXRob3JpemVkLicsICdFRkVEQVVUSCcpLCBlcnJdKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIHRoaXMubG9naW5FcnJvcik7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5SZXNwb25zZS50b2tlbjtcbiAgICAgICAgICB0aGlzLnNlbmRGZWRBdXRoVG9rZW5NZXNzYWdlKHRva2VuKTtcblxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9naW5FcnJvcikge1xuICAgICAgICAgIGlmIChpc1RyYW5zaWVudEVycm9yKHRoaXMubG9naW5FcnJvcikpIHtcbiAgICAgICAgICAgIHRoaXMuZGVidWcubG9nKCdJbml0aWF0aW5nIHJldHJ5IG9uIHRyYW5zaWVudCBlcnJvcicpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5UUkFOU0lFTlRfRkFJTFVSRV9SRVRSWSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnY29ubmVjdCcsIHRoaXMubG9naW5FcnJvcik7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdjb25uZWN0JywgbmV3IENvbm5lY3Rpb25FcnJvcignTG9naW4gZmFpbGVkLicsICdFTE9HSU4nKSk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICAgIH1cblxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH0sXG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgTE9HR0VEX0lOX1NFTkRJTkdfSU5JVElBTF9TUUw6IHtcbiAgICBuYW1lOiAnTG9nZ2VkSW5TZW5kaW5nSW5pdGlhbFNxbCcsXG4gICAgZW50ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgKGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5zZW5kSW5pdGlhbFNxbCgpO1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBuZXcgSW5pdGlhbFNxbFRva2VuSGFuZGxlcih0aGlzKSk7XG4gICAgICAgIGF3YWl0IG9uY2UodG9rZW5TdHJlYW1QYXJzZXIsICdlbmQnKTtcblxuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkxPR0dFRF9JTik7XG4gICAgICAgIHRoaXMucHJvY2Vzc2VkSW5pdGlhbFNxbCgpO1xuXG4gICAgICB9KSgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBzb2NrZXRFcnJvcjogZnVuY3Rpb24gc29ja2V0RXJyb3IoKSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuICAgICAgfSxcbiAgICAgIGNvbm5lY3RUaW1lb3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5GSU5BTCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBMT0dHRURfSU46IHtcbiAgICBuYW1lOiAnTG9nZ2VkSW4nLFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIFNFTlRfQ0xJRU5UX1JFUVVFU1Q6IHtcbiAgICBuYW1lOiAnU2VudENsaWVudFJlcXVlc3QnLFxuICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLm1lc3NhZ2VJby5yZWFkTWVzc2FnZSgpO1xuICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvY2tldEVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVxdWVzdCB0aW1lciBpcyBzdG9wcGVkIG9uIGZpcnN0IGRhdGEgcGFja2FnZVxuICAgICAgICB0aGlzLmNsZWFyUmVxdWVzdFRpbWVyKCk7XG5cbiAgICAgICAgY29uc3QgdG9rZW5TdHJlYW1QYXJzZXIgPSB0aGlzLmNyZWF0ZVRva2VuU3RyZWFtUGFyc2VyKG1lc3NhZ2UsIG5ldyBSZXF1ZXN0VG9rZW5IYW5kbGVyKHRoaXMsIHRoaXMucmVxdWVzdCEpKTtcblxuICAgICAgICAvLyBJZiB0aGUgcmVxdWVzdCB3YXMgY2FuY2VsZWQgYW5kIHdlIGhhdmUgYSBgY2FuY2VsVGltZXJgXG4gICAgICAgIC8vIGRlZmluZWQsIHdlIHNlbmQgYSBhdHRlbnRpb24gbWVzc2FnZSBhZnRlciB0aGVcbiAgICAgICAgLy8gcmVxdWVzdCBtZXNzYWdlIHdhcyBmdWxseSBzZW50IG9mZi5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgYWxyZWFkeSBzdGFydGVkIGNvbnN1bWluZyB0aGUgY3VycmVudCBtZXNzYWdlXG4gICAgICAgIC8vIChidXQgYWxsIHRoZSB0b2tlbiBoYW5kbGVycyBzaG91bGQgYmUgbm8tb3BzKSwgYW5kXG4gICAgICAgIC8vIG5lZWQgdG8gZW5zdXJlIHRoZSBuZXh0IG1lc3NhZ2UgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgICAgLy8gYFNFTlRfQVRURU5USU9OYCBzdGF0ZS5cbiAgICAgICAgaWYgKHRoaXMucmVxdWVzdD8uY2FuY2VsZWQgJiYgdGhpcy5jYW5jZWxUaW1lcikge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLlNFTlRfQVRURU5USU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9uUmVzdW1lID0gKCkgPT4ge1xuICAgICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLnJlc3VtZSgpO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvblBhdXNlID0gKCkgPT4ge1xuICAgICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLnBhdXNlKCk7XG5cbiAgICAgICAgICB0aGlzLnJlcXVlc3Q/Lm9uY2UoJ3Jlc3VtZScsIG9uUmVzdW1lKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlcXVlc3Q/Lm9uKCdwYXVzZScsIG9uUGF1c2UpO1xuXG4gICAgICAgIGlmICh0aGlzLnJlcXVlc3QgaW5zdGFuY2VvZiBSZXF1ZXN0ICYmIHRoaXMucmVxdWVzdC5wYXVzZWQpIHtcbiAgICAgICAgICBvblBhdXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvbkNhbmNlbCA9ICgpID0+IHtcbiAgICAgICAgICB0b2tlblN0cmVhbVBhcnNlci5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25FbmRPZk1lc3NhZ2UpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucmVxdWVzdCBpbnN0YW5jZW9mIFJlcXVlc3QgJiYgdGhpcy5yZXF1ZXN0LnBhdXNlZCkge1xuICAgICAgICAgICAgLy8gcmVzdW1lIHRoZSByZXF1ZXN0IGlmIGl0IHdhcyBwYXVzZWQgc28gd2UgY2FuIHJlYWQgdGhlIHJlbWFpbmluZyB0b2tlbnNcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdC5yZXN1bWUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJlcXVlc3Q/LnJlbW92ZUxpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdD8ucmVtb3ZlTGlzdGVuZXIoJ3Jlc3VtZScsIG9uUmVzdW1lKTtcblxuICAgICAgICAgIC8vIFRoZSBgX2NhbmNlbEFmdGVyUmVxdWVzdFNlbnRgIGNhbGxiYWNrIHdpbGwgaGF2ZSBzZW50IGFcbiAgICAgICAgICAvLyBhdHRlbnRpb24gbWVzc2FnZSwgc28gbm93IHdlIG5lZWQgdG8gYWxzbyBzd2l0Y2ggdG9cbiAgICAgICAgICAvLyB0aGUgYFNFTlRfQVRURU5USU9OYCBzdGF0ZSB0byBtYWtlIHN1cmUgdGhlIGF0dGVudGlvbiBhY2tcbiAgICAgICAgICAvLyBtZXNzYWdlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuXG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5TRU5UX0FUVEVOVElPTik7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb25FbmRPZk1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgdGhpcy5fY2FuY2VsQWZ0ZXJSZXF1ZXN0U2VudCk7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcignY2FuY2VsJywgb25DYW5jZWwpO1xuICAgICAgICAgIHRoaXMucmVxdWVzdD8ucmVtb3ZlTGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSk7XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0Py5yZW1vdmVMaXN0ZW5lcigncmVzdW1lJywgb25SZXN1bWUpO1xuXG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5TVEFURS5MT0dHRURfSU4pO1xuICAgICAgICAgIGNvbnN0IHNxbFJlcXVlc3QgPSB0aGlzLnJlcXVlc3QgYXMgUmVxdWVzdDtcbiAgICAgICAgICB0aGlzLnJlcXVlc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInICYmIHNxbFJlcXVlc3QuZXJyb3IgJiYgdGhpcy5pc1NxbEJhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLmluVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhzcWxSZXF1ZXN0LmVycm9yLCBzcWxSZXF1ZXN0LnJvd0NvdW50LCBzcWxSZXF1ZXN0LnJvd3MpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRva2VuU3RyZWFtUGFyc2VyLm9uY2UoJ2VuZCcsIG9uRW5kT2ZNZXNzYWdlKTtcbiAgICAgICAgdGhpcy5yZXF1ZXN0Py5vbmNlKCdjYW5jZWwnLCBvbkNhbmNlbCk7XG4gICAgICB9KSgpO1xuXG4gICAgfSxcbiAgICBleGl0OiBmdW5jdGlvbihuZXh0U3RhdGUpIHtcbiAgICAgIHRoaXMuY2xlYXJSZXF1ZXN0VGltZXIoKTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjb25zdCBzcWxSZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICAgICAgdGhpcy5yZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkZJTkFMKTtcblxuICAgICAgICBzcWxSZXF1ZXN0LmNhbGxiYWNrKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBTRU5UX0FUVEVOVElPTjoge1xuICAgIG5hbWU6ICdTZW50QXR0ZW50aW9uJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBtZXNzYWdlID0gYXdhaXQgdGhpcy5tZXNzYWdlSW8ucmVhZE1lc3NhZ2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zb2NrZXRFcnJvcihlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFuZGxlciA9IG5ldyBBdHRlbnRpb25Ub2tlbkhhbmRsZXIodGhpcywgdGhpcy5yZXF1ZXN0ISk7XG4gICAgICAgIGNvbnN0IHRva2VuU3RyZWFtUGFyc2VyID0gdGhpcy5jcmVhdGVUb2tlblN0cmVhbVBhcnNlcihtZXNzYWdlLCBoYW5kbGVyKTtcblxuICAgICAgICBhd2FpdCBvbmNlKHRva2VuU3RyZWFtUGFyc2VyLCAnZW5kJyk7XG4gICAgICAgIC8vIDMuMi41LjcgU2VudCBBdHRlbnRpb24gU3RhdGVcbiAgICAgICAgLy8gRGlzY2FyZCBhbnkgZGF0YSBjb250YWluZWQgaW4gdGhlIHJlc3BvbnNlLCB1bnRpbCB3ZSByZWNlaXZlIHRoZSBhdHRlbnRpb24gcmVzcG9uc2VcbiAgICAgICAgaWYgKGhhbmRsZXIuYXR0ZW50aW9uUmVjZWl2ZWQpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyQ2FuY2VsVGltZXIoKTtcblxuICAgICAgICAgIGNvbnN0IHNxbFJlcXVlc3QgPSB0aGlzLnJlcXVlc3QhO1xuICAgICAgICAgIHRoaXMucmVxdWVzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25Ubyh0aGlzLlNUQVRFLkxPR0dFRF9JTik7XG5cbiAgICAgICAgICBpZiAoc3FsUmVxdWVzdC5lcnJvciAmJiBzcWxSZXF1ZXN0LmVycm9yIGluc3RhbmNlb2YgUmVxdWVzdEVycm9yICYmIHNxbFJlcXVlc3QuZXJyb3IuY29kZSA9PT0gJ0VUSU1FT1VUJykge1xuICAgICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhzcWxSZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3FsUmVxdWVzdC5jYWxsYmFjayhuZXcgUmVxdWVzdEVycm9yKCdDYW5jZWxlZC4nLCAnRUNBTkNFTCcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgc29ja2V0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjb25zdCBzcWxSZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0ITtcbiAgICAgICAgdGhpcy5yZXF1ZXN0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuU1RBVEUuRklOQUwpO1xuXG4gICAgICAgIHNxbFJlcXVlc3QuY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIEZJTkFMOiB7XG4gICAgbmFtZTogJ0ZpbmFsJyxcbiAgICBlbnRlcjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmNsZWFudXBDb25uZWN0aW9uKENMRUFOVVBfVFlQRS5OT1JNQUwpO1xuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICBjb25uZWN0VGltZW91dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcsIGFzIHRoZSB0aW1lciBzaG91bGQgYmUgY2xlYW5lZCB1cC5cbiAgICAgIH0sXG4gICAgICBtZXNzYWdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgfSxcbiAgICAgIHNvY2tldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsR0FBQSxHQUFBQyx1QkFB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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nObject.defineProperty(exports, \"BulkLoad\", {\n  enumerable: true,\n  get: function () {\n    return _bulkLoad.default;\n  }\n});\nObject.defineProperty(exports, \"Connection\", {\n  enumerable: true,\n  get: function () {\n    return _connection.default;\n  }\n});\nObject.defineProperty(exports, \"ConnectionError\", {\n  enumerable: true,\n  get: function () {\n    return _errors.ConnectionError;\n  }\n});\nObject.defineProperty(exports, \"ISOLATION_LEVEL\", {\n  enumerable: true,\n  get: function () {\n    return _transaction.ISOLATION_LEVEL;\n  }\n});\nObject.defineProperty(exports, \"Request\", {\n  enumerable: true,\n  get: function () {\n    return _request.default;\n  }\n});\nObject.defineProperty(exports, \"RequestError\", {\n  enumerable: true,\n  get: function () {\n    return _errors.RequestError;\n  }\n});\nObject.defineProperty(exports, \"TDS_VERSION\", {\n  enumerable: true,\n  get: function () {\n    return _tdsVersions.versions;\n  }\n});\nObject.defineProperty(exports, \"TYPES\", {\n  enumerable: true,\n  get: function () {\n    return _dataType.TYPES;\n  }\n});\nexports.connect = connect;\nexports.library = void 0;\nvar _bulkLoad = _interopRequireDefault(require(\"./bulk-load\"));\nvar _connection = _interopRequireDefault(require(\"./connection\"));\nvar _request = _interopRequireDefault(require(\"./request\"));\nvar _library = require(\"./library\");\nvar _errors = require(\"./errors\");\nvar _dataType = require(\"./data-type\");\nvar _transaction = require(\"./transaction\");\nvar _tdsVersions = require(\"./tds-versions\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst library = {\n  name: _library.name\n};\nexports.library = library;\nfunction connect(config, connectListener) {\n  const connection = new _connection.default(config);\n  connection.connect(connectListener);\n  return connection;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVsa0xvYWQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jb25uZWN0aW9uIiwiX3JlcXVlc3QiLCJfbGlicmFyeSIsIl9lcnJvcnMiLCJfZGF0YVR5cGUiLCJfdHJhbnNhY3Rpb24iLCJfdGRzVmVyc2lvbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxpYnJhcnkiLCJuYW1lIiwiZXhwb3J0cyIsImNvbm5lY3QiLCJjb25maWciLCJjb25uZWN0TGlzdGVuZXIiLCJjb25uZWN0aW9uIiwiQ29ubmVjdGlvbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy90ZWRpb3VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWxrTG9hZCBmcm9tICcuL2J1bGstbG9hZCc7XG5pbXBvcnQgQ29ubmVjdGlvbiwgeyB0eXBlIENvbm5lY3Rpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb25uZWN0aW9uJztcbmltcG9ydCBSZXF1ZXN0IGZyb20gJy4vcmVxdWVzdCc7XG5pbXBvcnQgeyBuYW1lIH0gZnJvbSAnLi9saWJyYXJ5JztcblxuaW1wb3J0IHsgQ29ubmVjdGlvbkVycm9yLCBSZXF1ZXN0RXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7IFRZUEVTIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgSVNPTEFUSU9OX0xFVkVMIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyB2ZXJzaW9ucyBhcyBURFNfVkVSU0lPTiB9IGZyb20gJy4vdGRzLXZlcnNpb25zJztcblxuY29uc3QgbGlicmFyeSA9IHsgbmFtZTogbmFtZSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdChjb25maWc6IENvbm5lY3Rpb25Db25maWd1cmF0aW9uLCBjb25uZWN0TGlzdGVuZXI/OiAoZXJyPzogRXJyb3IpID0+IHZvaWQpIHtcbiAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGNvbmZpZyk7XG4gIGNvbm5lY3Rpb24uY29ubmVjdChjb25uZWN0TGlzdGVuZXIpO1xuICByZXR1cm4gY29ubmVjdGlvbjtcbn1cblxuZXhwb3J0IHtcbiAgQnVsa0xvYWQsXG4gIENvbm5lY3Rpb24sXG4gIFJlcXVlc3QsXG4gIGxpYnJhcnksXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgUmVxdWVzdEVycm9yLFxuICBUWVBFUyxcbiAgSVNPTEFUSU9OX0xFVkVMLFxuICBURFNfVkVSU0lPTlxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFlBQUEsR0FBQVAsT0FBQTtBQUF5RCxTQUFBRCx1QkFBQVMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV6RCxNQUFNRyxPQUFPLEdBQUc7RUFBRUMsSUFBSSxFQUFFQTtBQUFLLENBQUM7QUFBQ0MsT0FBQSxDQUFBRixPQUFBLEdBQUFBLE9BQUE7QUFFeEIsU0FBU0csT0FBT0EsQ0FBQ0MsTUFBK0IsRUFBRUMsZUFBdUMsRUFBRTtFQUNoRyxNQUFNQyxVQUFVLEdBQUcsSUFBSUMsbUJBQVUsQ0FBQ0gsTUFBTSxDQUFDO0VBQ3pDRSxVQUFVLENBQUNILE9BQU8sQ0FBQ0UsZUFBZSxDQUFDO0VBQ25DLE9BQU9DLFVBQVU7QUFDbkIifQ==","'use strict'\n\nconst tds = require('tedious')\nconst debug = require('debug')('mssql:tedi')\nconst BaseConnectionPool = require('../base/connection-pool')\nconst { IDS } = require('../utils')\nconst shared = require('../shared')\nconst ConnectionError = require('../error/connection-error')\n\nclass ConnectionPool extends BaseConnectionPool {\n  _config () {\n    const cfg = {\n      server: this.config.server,\n      options: Object.assign({\n        encrypt: typeof this.config.encrypt === 'boolean' ? this.config.encrypt : true,\n        trustServerCertificate: typeof this.config.trustServerCertificate === 'boolean' ? this.config.trustServerCertificate : false\n      }, this.config.options),\n      authentication: Object.assign({\n        type: this.config.domain !== undefined ? 'ntlm' : this.config.authentication_type !== undefined ? this.config.authentication_type : 'default',\n        options: Object.entries({\n          userName: this.config.user,\n          password: this.config.password,\n          domain: this.config.domain,\n          clientId: this.config.clientId,\n          clientSecret: this.config.clientSecret,\n          tenantId: this.config.tenantId,\n          token: this.config.token,\n          msiEndpoint: this.config.msiEndpoint,\n          msiSecret: this.config.msiSecret\n        }).reduce((acc, [key, val]) => {\n          if (typeof val !== 'undefined') {\n            return { ...acc, [key]: val }\n          }\n          return acc\n        }, {})\n      }, this.config.authentication)\n    }\n\n    cfg.options.database = cfg.options.database || this.config.database\n    cfg.options.port = cfg.options.port || this.config.port\n    cfg.options.connectTimeout = cfg.options.connectTimeout ?? this.config.connectionTimeout ?? this.config.timeout ?? 15000\n    cfg.options.requestTimeout = cfg.options.requestTimeout ?? this.config.requestTimeout ?? this.config.timeout ?? 15000\n    cfg.options.tdsVersion = cfg.options.tdsVersion || '7_4'\n    cfg.options.rowCollectionOnDone = cfg.options.rowCollectionOnDone || false\n    cfg.options.rowCollectionOnRequestCompletion = cfg.options.rowCollectionOnRequestCompletion || false\n    cfg.options.useColumnNames = cfg.options.useColumnNames || false\n    cfg.options.appName = cfg.options.appName || 'node-mssql'\n\n    // tedious always connect via tcp when port is specified\n    if (cfg.options.instanceName) delete cfg.options.port\n\n    if (isNaN(cfg.options.requestTimeout)) cfg.options.requestTimeout = 15000\n    if (cfg.options.requestTimeout === Infinity || cfg.options.requestTimeout < 0) cfg.options.requestTimeout = 0\n\n    if (!cfg.options.debug && this.config.debug) {\n      cfg.options.debug = {\n        packet: true,\n        token: true,\n        data: true,\n        payload: true\n      }\n    }\n    return cfg\n  }\n\n  _poolCreate () {\n    return new shared.Promise((resolve, reject) => {\n      const resolveOnce = (v) => {\n        resolve(v)\n        resolve = reject = () => {}\n      }\n      const rejectOnce = (e) => {\n        reject(e)\n        resolve = reject = () => {}\n      }\n      let tedious\n      try {\n        tedious = new tds.Connection(this._config())\n      } catch (err) {\n        rejectOnce(err)\n        return\n      }\n      tedious.connect(err => {\n        if (err) {\n          err = new ConnectionError(err)\n          return rejectOnce(err)\n        }\n\n        debug('connection(%d): established', IDS.get(tedious))\n        this.collation = tedious.databaseCollation\n        resolveOnce(tedious)\n      })\n      IDS.add(tedious, 'Connection')\n      debug('pool(%d): connection #%d created', IDS.get(this), IDS.get(tedious))\n      debug('connection(%d): establishing', IDS.get(tedious))\n\n      tedious.on('end', () => {\n        const err = new ConnectionError('The connection ended without ever completing the connection')\n        rejectOnce(err)\n      })\n      tedious.on('error', err => {\n        if (err.code === 'ESOCKET') {\n          tedious.hasError = true\n        } else {\n          this.emit('error', err)\n        }\n        rejectOnce(err)\n      })\n\n      if (this.config.debug) {\n        tedious.on('debug', this.emit.bind(this, 'debug', tedious))\n      }\n      if (typeof this.config.beforeConnect === 'function') {\n        this.config.beforeConnect(tedious)\n      }\n    })\n  }\n\n  _poolValidate (tedious) {\n    if (tedious && !tedious.closed && !tedious.hasError) {\n      return !this.config.validateConnection || new shared.Promise((resolve) => {\n        const req = new tds.Request('SELECT 1;', (err) => {\n          resolve(!err)\n        })\n        tedious.execSql(req)\n      })\n    }\n    return false\n  }\n\n  _poolDestroy (tedious) {\n    return new shared.Promise((resolve, reject) => {\n      if (!tedious) {\n        resolve()\n        return\n      }\n      debug('connection(%d): destroying', IDS.get(tedious))\n\n      if (tedious.closed) {\n        debug('connection(%d): already closed', IDS.get(tedious))\n        resolve()\n      } else {\n        tedious.once('end', () => {\n          debug('connection(%d): destroyed', IDS.get(tedious))\n          resolve()\n        })\n\n        tedious.close()\n      }\n    })\n  }\n}\n\nmodule.exports = ConnectionPool\n","'use strict'\n\nconst debug = require('debug')('mssql:tedi')\nconst BaseTransaction = require('../base/transaction')\nconst { IDS } = require('../utils')\nconst TransactionError = require('../error/transaction-error')\n\nclass Transaction extends BaseTransaction {\n  constructor (parent) {\n    super(parent)\n\n    this._abort = () => {\n      if (!this._rollbackRequested) {\n        // transaction interrupted because of XACT_ABORT\n\n        const pc = this._acquiredConnection\n\n        // defer releasing so connection can switch from SentClientRequest to LoggedIn state\n        setImmediate(this.parent.release.bind(this.parent), pc)\n\n        this._acquiredConnection.removeListener('rollbackTransaction', this._abort)\n        this._acquiredConnection = null\n        this._acquiredConfig = null\n        this._aborted = true\n\n        this.emit('rollback', true)\n      }\n    }\n  }\n\n  _begin (isolationLevel, callback) {\n    super._begin(isolationLevel, err => {\n      if (err) return callback(err)\n\n      debug('transaction(%d): begin', IDS.get(this))\n\n      this.parent.acquire(this, (err, connection, config) => {\n        if (err) return callback(err)\n\n        this._acquiredConnection = connection\n        this._acquiredConnection.on('rollbackTransaction', this._abort)\n        this._acquiredConfig = config\n\n        connection.beginTransaction(err => {\n          if (err) err = new TransactionError(err)\n\n          debug('transaction(%d): begun', IDS.get(this))\n\n          callback(err)\n        }, this.name, this.isolationLevel)\n      })\n    })\n  }\n\n  _commit (callback) {\n    super._commit(err => {\n      if (err) return callback(err)\n\n      debug('transaction(%d): commit', IDS.get(this))\n\n      this._acquiredConnection.commitTransaction(err => {\n        if (err) err = new TransactionError(err)\n\n        this._acquiredConnection.removeListener('rollbackTransaction', this._abort)\n        this.parent.release(this._acquiredConnection)\n        this._acquiredConnection = null\n        this._acquiredConfig = null\n\n        if (!err) debug('transaction(%d): commited', IDS.get(this))\n\n        callback(err)\n      })\n    })\n  }\n\n  _rollback (callback) {\n    super._rollback(err => {\n      if (err) return callback(err)\n\n      debug('transaction(%d): rollback', IDS.get(this))\n\n      this._acquiredConnection.rollbackTransaction(err => {\n        if (err) err = new TransactionError(err)\n\n        this._acquiredConnection.removeListener('rollbackTransaction', this._abort)\n        this.parent.release(this._acquiredConnection)\n        this._acquiredConnection = null\n        this._acquiredConfig = null\n\n        if (!err) debug('transaction(%d): rolled back', IDS.get(this))\n\n        callback(err)\n      })\n    })\n  }\n}\n\nmodule.exports = Transaction\n","'use strict'\n\n/* const FIGURE = {\n  INTERIOR_RING: 0x00,\n  STROKE: 0x01,\n  EXTERIOR_RING: 0x02\n};\n\nconst FIGURE_V2 = {\n  POINT: 0x00,\n  LINE: 0x01,\n  ARC: 0x02,\n  COMPOSITE_CURVE: 0x03\n};\n\nconst SHAPE = {\n  POINT: 0x01,\n  LINESTRING: 0x02,\n  POLYGON: 0x03,\n  MULTIPOINT: 0x04,\n  MULTILINESTRING: 0x05,\n  MULTIPOLYGON: 0x06,\n  GEOMETRY_COLLECTION: 0x07\n};\n\nconst SHAPE_V2 = {\n  POINT: 0x01,\n  LINESTRING: 0x02,\n  POLYGON: 0x03,\n  MULTIPOINT: 0x04,\n  MULTILINESTRING: 0x05,\n  MULTIPOLYGON: 0x06,\n  GEOMETRY_COLLECTION: 0x07,\n  CIRCULAR_STRING: 0x08,\n  COMPOUND_CURVE: 0x09,\n  CURVE_POLYGON: 0x0A,\n  FULL_GLOBE: 0x0B\n};\n\nconst SEGMENT = {\n  LINE: 0x00,\n  ARC: 0x01,\n  FIRST_LINE: 0x02,\n  FIRST_ARC: 0x03\n}; */\n\nclass Point {\n  constructor () {\n    this.x = 0\n    this.y = 0\n    this.z = null\n    this.m = null\n  }\n}\n\nconst parsePoints = (buffer, count, isGeometryPoint) => {\n  // s2.1.5 + s2.1.6\n  // The key distinction for parsing is that a GEOGRAPHY POINT is ordered Lat (y) then Long (x),\n  // while a GEOMETRY POINT is ordered x then y.\n  // Further, there are additional range constraints on GEOGRAPHY POINT that are useful for testing that the coordinate order has not been flipped, such as that Lat must be in the range [-90, +90].\n\n  const points = []\n  if (count < 1) {\n    return points\n  }\n\n  if (isGeometryPoint) {\n    // GEOMETRY POINT (s2.1.6): x then y.\n    for (let i = 1; i <= count; i++) {\n      const point = new Point()\n      points.push(point)\n      point.x = buffer.readDoubleLE(buffer.position)\n      point.y = buffer.readDoubleLE(buffer.position + 8)\n      buffer.position += 16\n    }\n  } else {\n    // GEOGRAPHY POINT (s2.1.5): Lat (y) then Long (x).\n    for (let i = 1; i <= count; i++) {\n      const point = new Point()\n      points.push(point)\n      point.lat = buffer.readDoubleLE(buffer.position)\n      point.lng = buffer.readDoubleLE(buffer.position + 8)\n\n      // For backwards compatibility, preserve the coordinate inversion in x and y.\n      // A future breaking change likely eliminate x and y for geography points in favor of just the lat and lng fields, as they've proven marvelously confusing.\n      // See discussion at: https://github.com/tediousjs/node-mssql/pull/1282#discussion_r677769531\n      point.x = point.lat\n      point.y = point.lng\n\n      buffer.position += 16\n    }\n  }\n\n  return points\n}\n\nconst parseZ = (buffer, points) => {\n  // s2.1.1 + s.2.1.2\n\n  if (points < 1) {\n    return\n  }\n\n  points.forEach(point => {\n    point.z = buffer.readDoubleLE(buffer.position)\n    buffer.position += 8\n  })\n}\n\nconst parseM = (buffer, points) => {\n  // s2.1.1 + s.2.1.2\n\n  if (points < 1) {\n    return\n  }\n\n  points.forEach(point => {\n    point.m = buffer.readDoubleLE(buffer.position)\n    buffer.position += 8\n  })\n}\n\nconst parseFigures = (buffer, count, properties) => {\n  // s2.1.3\n\n  const figures = []\n  if (count < 1) {\n    return figures\n  }\n\n  if (properties.P) {\n    figures.push({\n      attribute: 0x01,\n      pointOffset: 0\n    })\n  } else if (properties.L) {\n    figures.push({\n      attribute: 0x01,\n      pointOffset: 0\n    })\n  } else {\n    for (let i = 1; i <= count; i++) {\n      figures.push({\n        attribute: buffer.readUInt8(buffer.position),\n        pointOffset: buffer.readInt32LE(buffer.position + 1)\n      })\n\n      buffer.position += 5\n    }\n  }\n\n  return figures\n}\n\nconst parseShapes = (buffer, count, properties) => {\n  // s2.1.4\n\n  const shapes = []\n  if (count < 1) {\n    return shapes\n  }\n\n  if (properties.P) {\n    shapes.push({\n      parentOffset: -1,\n      figureOffset: 0,\n      type: 0x01\n    })\n  } else if (properties.L) {\n    shapes.push({\n      parentOffset: -1,\n      figureOffset: 0,\n      type: 0x02\n    })\n  } else {\n    for (let i = 1; i <= count; i++) {\n      shapes.push({\n        parentOffset: buffer.readInt32LE(buffer.position),\n        figureOffset: buffer.readInt32LE(buffer.position + 4),\n        type: buffer.readUInt8(buffer.position + 8)\n      })\n\n      buffer.position += 9\n    }\n  }\n\n  return shapes\n}\n\nconst parseSegments = (buffer, count) => {\n  // s2.1.7\n\n  const segments = []\n  if (count < 1) {\n    return segments\n  }\n\n  for (let i = 1; i <= count; i++) {\n    segments.push({ type: buffer.readUInt8(buffer.position) })\n\n    buffer.position++\n  }\n\n  return segments\n}\n\nconst parseGeography = (buffer, isUsingGeometryPoints) => {\n  // s2.1.1 + s.2.1.2\n\n  const srid = buffer.readInt32LE(0)\n  if (srid === -1) {\n    return null\n  }\n\n  const value = {\n    srid,\n    version: buffer.readUInt8(4)\n  }\n\n  const flags = buffer.readUInt8(5)\n  buffer.position = 6\n\n  // console.log(\"srid\", srid)\n  // console.log(\"version\", version)\n\n  const properties = {\n    Z: (flags & (1 << 0)) > 0,\n    M: (flags & (1 << 1)) > 0,\n    V: (flags & (1 << 2)) > 0,\n    P: (flags & (1 << 3)) > 0,\n    L: (flags & (1 << 4)) > 0\n  }\n\n  if (value.version === 2) {\n    properties.H = (flags & (1 << 3)) > 0\n  }\n\n  // console.log(\"properties\", properties);\n\n  let numberOfPoints\n  if (properties.P) {\n    numberOfPoints = 1\n  } else if (properties.L) {\n    numberOfPoints = 2\n  } else {\n    numberOfPoints = buffer.readUInt32LE(buffer.position)\n    buffer.position += 4\n  }\n\n  // console.log(\"numberOfPoints\", numberOfPoints)\n\n  value.points = parsePoints(buffer, numberOfPoints, isUsingGeometryPoints)\n\n  if (properties.Z) {\n    parseZ(buffer, value.points)\n  }\n\n  if (properties.M) {\n    parseM(buffer, value.points)\n  }\n\n  // console.log(\"points\", points)\n\n  let numberOfFigures\n  if (properties.P) {\n    numberOfFigures = 1\n  } else if (properties.L) {\n    numberOfFigures = 1\n  } else {\n    numberOfFigures = buffer.readUInt32LE(buffer.position)\n    buffer.position += 4\n  }\n\n  // console.log(\"numberOfFigures\", numberOfFigures)\n\n  value.figures = parseFigures(buffer, numberOfFigures, properties)\n\n  // console.log(\"figures\", figures)\n\n  let numberOfShapes\n  if (properties.P) {\n    numberOfShapes = 1\n  } else if (properties.L) {\n    numberOfShapes = 1\n  } else {\n    numberOfShapes = buffer.readUInt32LE(buffer.position)\n    buffer.position += 4\n  }\n\n  // console.log(\"numberOfShapes\", numberOfShapes)\n\n  value.shapes = parseShapes(buffer, numberOfShapes, properties)\n\n  // console.log( \"shapes\", shapes)\n\n  if (value.version === 2 && buffer.position < buffer.length) {\n    const numberOfSegments = buffer.readUInt32LE(buffer.position)\n    buffer.position += 4\n\n    // console.log(\"numberOfSegments\", numberOfSegments)\n\n    value.segments = parseSegments(buffer, numberOfSegments)\n\n    // console.log(\"segments\", segments)\n  } else {\n    value.segments = []\n  }\n\n  return value\n}\n\nmodule.exports.PARSERS = {\n  geography (buffer) {\n    return parseGeography(buffer, /* isUsingGeometryPoints: */false)\n  },\n\n  geometry (buffer) {\n    return parseGeography(buffer, /* isUsingGeometryPoints: */true)\n  }\n}\n","'use strict'\n\nconst tds = require('tedious')\nconst debug = require('debug')('mssql:tedi')\nconst BaseRequest = require('../base/request')\nconst RequestError = require('../error/request-error')\nconst { IDS, objectHasProperty } = require('../utils')\nconst { TYPES, DECLARATIONS, declare, cast } = require('../datatypes')\nconst Table = require('../table')\nconst { PARSERS: UDT } = require('../udt')\nconst { valueHandler } = require('../shared')\n\nconst JSON_COLUMN_ID = 'JSON_F52E2B61-18A1-11d1-B105-00805F49916B'\nconst XML_COLUMN_ID = 'XML_F52E2B61-18A1-11d1-B105-00805F49916B'\n\nconst N_TYPES = {\n  BitN: 0x68,\n  DateTimeN: 0x6F,\n  DecimalN: 0x6A,\n  FloatN: 0x6D,\n  IntN: 0x26,\n  MoneyN: 0x6E,\n  NumericN: 0x6C\n}\n\nconst getTediousType = function (type) {\n  switch (type) {\n    case TYPES.VarChar: return tds.TYPES.VarChar\n    case TYPES.NVarChar: return tds.TYPES.NVarChar\n    case TYPES.Text: return tds.TYPES.Text\n    case TYPES.Int: return tds.TYPES.Int\n    case TYPES.BigInt: return tds.TYPES.BigInt\n    case TYPES.TinyInt: return tds.TYPES.TinyInt\n    case TYPES.SmallInt: return tds.TYPES.SmallInt\n    case TYPES.Bit: return tds.TYPES.Bit\n    case TYPES.Float: return tds.TYPES.Float\n    case TYPES.Decimal: return tds.TYPES.Decimal\n    case TYPES.Numeric: return tds.TYPES.Numeric\n    case TYPES.Real: return tds.TYPES.Real\n    case TYPES.Money: return tds.TYPES.Money\n    case TYPES.SmallMoney: return tds.TYPES.SmallMoney\n    case TYPES.Time: return tds.TYPES.Time\n    case TYPES.Date: return tds.TYPES.Date\n    case TYPES.DateTime: return tds.TYPES.DateTime\n    case TYPES.DateTime2: return tds.TYPES.DateTime2\n    case TYPES.DateTimeOffset: return tds.TYPES.DateTimeOffset\n    case TYPES.SmallDateTime: return tds.TYPES.SmallDateTime\n    case TYPES.UniqueIdentifier: return tds.TYPES.UniqueIdentifier\n    case TYPES.Xml: return tds.TYPES.NVarChar\n    case TYPES.Char: return tds.TYPES.Char\n    case TYPES.NChar: return tds.TYPES.NChar\n    case TYPES.NText: return tds.TYPES.NVarChar\n    case TYPES.Image: return tds.TYPES.Image\n    case TYPES.Binary: return tds.TYPES.Binary\n    case TYPES.VarBinary: return tds.TYPES.VarBinary\n    case TYPES.UDT: case TYPES.Geography: case TYPES.Geometry: return tds.TYPES.UDT\n    case TYPES.TVP: return tds.TYPES.TVP\n    case TYPES.Variant: return tds.TYPES.Variant\n    default: return type\n  }\n}\n\nconst getMssqlType = function (type, length) {\n  if (typeof type !== 'object') return undefined\n\n  switch (type) {\n    case tds.TYPES.Char: return TYPES.Char\n    case tds.TYPES.NChar: return TYPES.NChar\n    case tds.TYPES.VarChar: return TYPES.VarChar\n    case tds.TYPES.NVarChar: return TYPES.NVarChar\n    case tds.TYPES.Text: return TYPES.Text\n    case tds.TYPES.NText: return TYPES.NText\n    case tds.TYPES.Int: return TYPES.Int\n    case tds.TYPES.BigInt: return TYPES.BigInt\n    case tds.TYPES.TinyInt: return TYPES.TinyInt\n    case tds.TYPES.SmallInt: return TYPES.SmallInt\n    case tds.TYPES.Bit: return TYPES.Bit\n    case tds.TYPES.Float: return TYPES.Float\n    case tds.TYPES.Real: return TYPES.Real\n    case tds.TYPES.Money: return TYPES.Money\n    case tds.TYPES.SmallMoney: return TYPES.SmallMoney\n    case tds.TYPES.Numeric: return TYPES.Numeric\n    case tds.TYPES.Decimal: return TYPES.Decimal\n    case tds.TYPES.DateTime: return TYPES.DateTime\n    case tds.TYPES.Time: return TYPES.Time\n    case tds.TYPES.Date: return TYPES.Date\n    case tds.TYPES.DateTime2: return TYPES.DateTime2\n    case tds.TYPES.DateTimeOffset: return TYPES.DateTimeOffset\n    case tds.TYPES.SmallDateTime: return TYPES.SmallDateTime\n    case tds.TYPES.UniqueIdentifier: return TYPES.UniqueIdentifier\n    case tds.TYPES.Image: return TYPES.Image\n    case tds.TYPES.Binary: return TYPES.Binary\n    case tds.TYPES.VarBinary: return TYPES.VarBinary\n    case tds.TYPES.Xml: return TYPES.Xml\n    case tds.TYPES.UDT: return TYPES.UDT\n    case tds.TYPES.TVP: return TYPES.TVP\n    case tds.TYPES.Variant: return TYPES.Variant\n    default:\n      switch (type.id) {\n        case N_TYPES.BitN: return TYPES.Bit\n        case N_TYPES.NumericN: return TYPES.Numeric\n        case N_TYPES.DecimalN: return TYPES.Decimal\n        case N_TYPES.IntN:\n          if (length === 8) return TYPES.BigInt\n          if (length === 4) return TYPES.Int\n          if (length === 2) return TYPES.SmallInt\n          return TYPES.TinyInt\n        case N_TYPES.FloatN:\n          if (length === 8) return TYPES.Float\n          return TYPES.Real\n        case N_TYPES.MoneyN:\n          if (length === 8) return TYPES.Money\n          return TYPES.SmallMoney\n        case N_TYPES.DateTimeN:\n          if (length === 8) return TYPES.DateTime\n          return TYPES.SmallDateTime\n      }\n  }\n}\n\nconst createColumns = function (metadata, arrayRowMode) {\n  let out = {}\n  if (arrayRowMode) out = []\n  for (let index = 0, length = metadata.length; index < length; index++) {\n    const column = metadata[index]\n    const outColumn = {\n      index,\n      name: column.colName,\n      length: column.dataLength,\n      type: getMssqlType(column.type, column.dataLength),\n      scale: column.scale,\n      precision: column.precision,\n      nullable: !!(column.flags & 0x01),\n      caseSensitive: !!(column.flags & 0x02),\n      identity: !!(column.flags & 0x10),\n      readOnly: !(column.flags & 0x0C)\n    }\n\n    if (column.udtInfo) {\n      outColumn.udt = {\n        name: column.udtInfo.typeName,\n        database: column.udtInfo.dbname,\n        schema: column.udtInfo.owningSchema,\n        assembly: column.udtInfo.assemblyName\n      }\n\n      if (DECLARATIONS[column.udtInfo.typeName]) {\n        outColumn.type = DECLARATIONS[column.udtInfo.typeName]\n      }\n    }\n\n    if (arrayRowMode) {\n      out.push(outColumn)\n    } else {\n      out[column.colName] = outColumn\n    }\n  }\n\n  return out\n}\n\nconst valueCorrection = function (value, metadata) {\n  const type = getMssqlType(metadata.type)\n  if (valueHandler.has(type)) {\n    return valueHandler.get(type)(value)\n  } else if ((metadata.type === tds.TYPES.UDT) && (value != null)) {\n    if (UDT[metadata.udtInfo.typeName]) {\n      return UDT[metadata.udtInfo.typeName](value)\n    } else {\n      return value\n    }\n  } else {\n    return value\n  }\n}\n\nconst parameterCorrection = function (value) {\n  if (value instanceof Table) {\n    const tvp = {\n      name: value.name,\n      schema: value.schema,\n      columns: [],\n      rows: value.rows\n    }\n\n    for (const col of value.columns) {\n      tvp.columns.push({\n        name: col.name,\n        type: getTediousType(col.type),\n        length: col.length,\n        scale: col.scale,\n        precision: col.precision\n      })\n    }\n\n    return tvp\n  } else {\n    return value\n  }\n}\n\nclass Request extends BaseRequest {\n  /*\n  Execute specified sql batch.\n  */\n\n  _batch (batch, callback) {\n    this._isBatch = true\n    this._query(batch, callback)\n  }\n\n  /*\n  Bulk load.\n  */\n\n  _bulk (table, options, callback) {\n    super._bulk(table, options, err => {\n      if (err) return callback(err)\n\n      try {\n        table._makeBulk()\n      } catch (e) {\n        return callback(new RequestError(e, 'EREQUEST'))\n      }\n\n      if (!table.name) {\n        return callback(new RequestError('Table name must be specified for bulk insert.', 'ENAME'))\n      }\n\n      if (table.name.charAt(0) === '@') {\n        return callback(new RequestError(\"You can't use table variables for bulk insert.\", 'ENAME'))\n      }\n\n      const errors = []\n      const errorHandlers = {}\n      let hasReturned = false\n\n      const handleError = (doReturn, connection, info) => {\n        let err = new Error(info.message)\n        err.info = info\n        err = new RequestError(err, 'EREQUEST')\n\n        if (this.stream) {\n          this.emit('error', err)\n        } else {\n          if (doReturn && !hasReturned) {\n            if (connection) {\n              for (const event in errorHandlers) {\n                connection.removeListener(event, errorHandlers[event])\n              }\n\n              this.parent.release(connection)\n            }\n\n            hasReturned = true\n            callback(err)\n          }\n        }\n\n        // we must collect errors even in stream mode\n        errors.push(err)\n      }\n\n      const handleInfo = msg => {\n        this.emit('info', {\n          message: msg.message,\n          number: msg.number,\n          state: msg.state,\n          class: msg.class,\n          lineNumber: msg.lineNumber,\n          serverName: msg.serverName,\n          procName: msg.procName\n        })\n      }\n\n      this.parent.acquire(this, (err, connection) => {\n        const callbackWithRelease = (err, ...args) => {\n          try {\n            this.parent.release(connection)\n          } catch (e) {\n            // noop\n          }\n          callback(err, ...args)\n        }\n        if (err) return callbackWithRelease(err)\n\n        debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this))\n\n        if (this.canceled) {\n          debug('request(%d): canceled', IDS.get(this))\n          return callbackWithRelease(new RequestError('Canceled.', 'ECANCEL'))\n        }\n\n        this._cancel = () => {\n          debug('request(%d): cancel', IDS.get(this))\n          connection.cancel()\n        }\n\n        // attach handler to handle multiple error messages\n        connection.on('infoMessage', errorHandlers.infoMessage = handleInfo)\n        connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection))\n        connection.on('error', errorHandlers.error = handleError.bind(null, true, connection))\n\n        const done = (err, rowCount) => {\n          // to make sure we handle no-sql errors as well\n          if (err && (!errors.length || (errors.length && err.message !== errors[errors.length - 1].message))) {\n            err = new RequestError(err, 'EREQUEST')\n            if (this.stream) this.emit('error', err)\n            errors.push(err)\n          }\n\n          delete this._cancel\n\n          let error\n          if (errors.length && !this.stream) {\n            error = errors.pop()\n            error.precedingErrors = errors\n          }\n\n          if (!hasReturned) {\n            for (const event in errorHandlers) {\n              connection.removeListener(event, errorHandlers[event])\n            }\n\n            hasReturned = true\n\n            if (this.stream) {\n              callbackWithRelease(null, rowCount)\n            } else {\n              callbackWithRelease(error, rowCount)\n            }\n          }\n        }\n\n        const bulk = connection.newBulkLoad(table.path, options, done)\n\n        for (const col of table.columns) {\n          bulk.addColumn(col.name, getTediousType(col.type), { nullable: col.nullable, length: col.length, scale: col.scale, precision: col.precision })\n        }\n\n        if (table.create) {\n          const objectid = table.temporary ? `tempdb..[${table.name}]` : table.path\n          const req = new tds.Request(`if object_id('${objectid.replace(/'/g, '\\'\\'')}') is null ${table.declare()}`, err => {\n            if (err) return done(err)\n\n            connection.execBulkLoad(bulk, table.rows)\n          })\n          this._setCurrentRequest(req)\n\n          connection.execSqlBatch(req)\n        } else {\n          connection.execBulkLoad(bulk, table.rows)\n        }\n      })\n    })\n  }\n\n  /*\n  Execute specified sql command.\n  */\n\n  _query (command, callback) {\n    super._query(command, err => {\n      if (err) return callback(err)\n\n      const recordsets = []\n      const recordsetcolumns = []\n      const errors = []\n      const errorHandlers = {}\n      const output = {}\n      const rowsAffected = []\n\n      let columns = {}\n      let recordset = []\n      let batchLastRow = null\n      let batchHasOutput = false\n      let isChunkedRecordset = false\n      let chunksBuffer = null\n      let hasReturned = false\n\n      const handleError = (doReturn, connection, info) => {\n        let err = new Error(info.message)\n        err.info = info\n        err = new RequestError(err, 'EREQUEST')\n\n        if (this.stream) {\n          this.emit('error', err)\n        } else {\n          if (doReturn && !hasReturned) {\n            if (connection) {\n              for (const event in errorHandlers) {\n                connection.removeListener(event, errorHandlers[event])\n              }\n\n              this.parent.release(connection)\n            }\n\n            hasReturned = true\n            callback(err)\n          }\n        }\n\n        // we must collect errors even in stream mode\n        errors.push(err)\n      }\n\n      const handleInfo = msg => {\n        this.emit('info', {\n          message: msg.message,\n          number: msg.number,\n          state: msg.state,\n          class: msg.class,\n          lineNumber: msg.lineNumber,\n          serverName: msg.serverName,\n          procName: msg.procName\n        })\n      }\n\n      this.parent.acquire(this, (err, connection, config) => {\n        if (err) return callback(err)\n\n        debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this))\n\n        let row\n\n        if (this.canceled) {\n          debug('request(%d): canceled', IDS.get(this))\n          this.parent.release(connection)\n          return callback(new RequestError('Canceled.', 'ECANCEL'))\n        }\n\n        this._cancel = () => {\n          debug('request(%d): cancel', IDS.get(this))\n          connection.cancel()\n        }\n\n        // attach handler to handle multiple error messages\n        connection.on('infoMessage', errorHandlers.infoMessage = handleInfo)\n        connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection))\n        connection.on('error', errorHandlers.error = handleError.bind(null, true, connection))\n\n        debug('request(%d): query', IDS.get(this), command)\n\n        const req = new tds.Request(command, err => {\n          // tedious v15 has started using AggregateErrors to wrap multiple errors into single error objects\n          (err?.errors ? err.errors : [err]).forEach((e, i, { length }) => {\n            // to make sure we handle no-sql errors as well\n            if (e && (!errors.length || (errors.length && errors.length >= length && e.message !== errors[errors.length - length + i].message))) {\n              e = new RequestError(e, 'EREQUEST')\n              if (this.stream) this.emit('error', e)\n              errors.push(e)\n            }\n          })\n\n          // process batch outputs\n          if (batchHasOutput) {\n            if (!this.stream) batchLastRow = recordsets.pop()[0]\n\n            for (const name in batchLastRow) {\n              const value = batchLastRow[name]\n              if (name !== '___return___') {\n                output[name] = value\n              }\n            }\n          }\n\n          delete this._cancel\n\n          let error\n          if (errors.length && !this.stream) {\n            error = errors.pop()\n            error.precedingErrors = errors\n          }\n\n          if (!hasReturned) {\n            for (const event in errorHandlers) {\n              connection.removeListener(event, errorHandlers[event])\n            }\n\n            this.parent.release(connection)\n            hasReturned = true\n\n            if (error) {\n              debug('request(%d): failed', IDS.get(this), error)\n            } else {\n              debug('request(%d): completed', IDS.get(this))\n            }\n\n            if (this.stream) {\n              callback(null, null, output, rowsAffected, recordsetcolumns)\n            } else {\n              callback(error, recordsets, output, rowsAffected, recordsetcolumns)\n            }\n          }\n        })\n\n        this._setCurrentRequest(req)\n\n        req.on('columnMetadata', metadata => {\n          columns = createColumns(metadata, this.arrayRowMode)\n\n          isChunkedRecordset = false\n          if (metadata.length === 1 && (metadata[0].colName === JSON_COLUMN_ID || metadata[0].colName === XML_COLUMN_ID)) {\n            isChunkedRecordset = true\n            chunksBuffer = []\n          }\n\n          if (this.stream) {\n            if (this._isBatch) {\n              // don't stream recordset with output values in batches\n              if (!columns.___return___) {\n                this.emit('recordset', columns)\n              }\n            } else {\n              this.emit('recordset', columns)\n            }\n          }\n          if (this.arrayRowMode) recordsetcolumns.push(columns)\n        })\n\n        const doneHandler = (rowCount, more) => {\n          if (rowCount != null) {\n            rowsAffected.push(rowCount)\n            if (this.stream) {\n              this.emit('rowsaffected', rowCount)\n            }\n          }\n          // this function is called even when select only set variables so we should skip adding a new recordset\n          if (Object.keys(columns).length === 0) return\n\n          if (isChunkedRecordset) {\n            const concatenatedChunks = chunksBuffer.join('')\n            if (columns[JSON_COLUMN_ID] && config.parseJSON === true) {\n              try {\n                if (concatenatedChunks === '') {\n                  row = null\n                } else {\n                  row = JSON.parse(concatenatedChunks)\n                }\n              } catch (ex) {\n                row = null\n                const ex2 = new RequestError(new Error(`Failed to parse incoming JSON. ${ex.message}`), 'EJSON')\n\n                if (this.stream) this.emit('error', ex2)\n\n                // we must collect errors even in stream mode\n                errors.push(ex2)\n              }\n            } else {\n              row = {}\n              row[Object.keys(columns)[0]] = concatenatedChunks\n            }\n\n            chunksBuffer = null\n\n            if (this.stream) {\n              this.emit('row', row)\n            } else {\n              recordset.push(row)\n            }\n          }\n\n          if (!this.stream) {\n            // all rows of current recordset loaded\n            Object.defineProperty(recordset, 'columns', {\n              enumerable: false,\n              configurable: true,\n              value: columns\n            })\n\n            Object.defineProperty(recordset, 'toTable', {\n              enumerable: false,\n              configurable: true,\n              value (name) { return Table.fromRecordset(this, name) }\n            })\n\n            recordsets.push(recordset)\n          }\n\n          recordset = []\n          columns = {}\n        }\n\n        req.on('doneInProc', doneHandler) // doneInProc handlers are used in both queries and batches\n        req.on('done', doneHandler) // done handlers are used in batches\n\n        req.on('returnValue', (parameterName, value, metadata) => {\n          output[parameterName] = value\n        })\n\n        req.on('row', columns => {\n          if (!recordset) recordset = []\n\n          if (isChunkedRecordset) {\n            return chunksBuffer.push(columns[0].value)\n          }\n\n          if (this.arrayRowMode) {\n            row = []\n          } else {\n            row = {}\n          }\n          for (const col of columns) {\n            col.value = valueCorrection(col.value, col.metadata)\n\n            if (this.arrayRowMode) {\n              row.push(col.value)\n            } else {\n              const exi = row[col.metadata.colName]\n              if (exi !== undefined) {\n                if (exi instanceof Array) {\n                  exi.push(col.value)\n                } else {\n                  row[col.metadata.colName] = [exi, col.value]\n                }\n              } else {\n                row[col.metadata.colName] = col.value\n              }\n            }\n          }\n\n          if (this.stream) {\n            if (this._isBatch) {\n              // dont stream recordset with output values in batches\n              if (row.___return___) {\n                batchLastRow = row\n              } else {\n                this.emit('row', row)\n              }\n            } else {\n              this.emit('row', row)\n            }\n          } else {\n            recordset.push(row)\n          }\n        })\n\n        if (this._isBatch) {\n          if (Object.keys(this.parameters).length) {\n            for (const name in this.parameters) {\n              if (!objectHasProperty(this.parameters, name)) {\n                continue\n              }\n              const param = this.parameters[name]\n\n              try {\n                param.value = getTediousType(param.type).validate(param.value, this.parent.collation)\n              } catch (e) {\n                e.message = `Validation failed for parameter '${name}'. ${e.message}`\n                const err = new RequestError(e, 'EPARAM')\n\n                this.parent.release(connection)\n                return callback(err)\n              }\n            }\n\n            const declarations = []\n            for (const name in this.parameters) {\n              if (!objectHasProperty(this.parameters, name)) {\n                continue\n              }\n              const param = this.parameters[name]\n              declarations.push(`@${name} ${declare(param.type, param)}`)\n            }\n\n            const assigns = []\n            for (const name in this.parameters) {\n              if (!objectHasProperty(this.parameters, name)) {\n                continue\n              }\n              const param = this.parameters[name]\n              assigns.push(`@${name} = ${cast(param.value, param.type, param)}`)\n            }\n\n            const selects = []\n            for (const name in this.parameters) {\n              if (!objectHasProperty(this.parameters, name)) {\n                continue\n              }\n              const param = this.parameters[name]\n              if (param.io === 2) {\n                selects.push(`@${name} as [${name}]`)\n              }\n            }\n\n            batchHasOutput = selects.length > 0\n\n            req.sqlTextOrProcedure = `declare ${declarations.join(', ')};select ${assigns.join(', ')};${req.sqlTextOrProcedure};${batchHasOutput ? (`select 1 as [___return___], ${selects.join(', ')}`) : ''}`\n          }\n        } else {\n          for (const name in this.parameters) {\n            if (!objectHasProperty(this.parameters, name)) {\n              continue\n            }\n            const param = this.parameters[name]\n            if (param.io === 1) {\n              req.addParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision })\n            } else {\n              req.addOutputParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision })\n            }\n          }\n        }\n\n        try {\n          connection[this._isBatch ? 'execSqlBatch' : 'execSql'](req)\n        } catch (error) {\n          handleError(true, connection, error)\n        }\n      })\n    })\n  }\n\n  /*\n  Execute stored procedure with specified parameters.\n  */\n\n  _execute (procedure, callback) {\n    super._execute(procedure, err => {\n      if (err) return callback(err)\n\n      const recordsets = []\n      const recordsetcolumns = []\n      const errors = []\n      const errorHandlers = {}\n      const output = {}\n      const rowsAffected = []\n\n      let columns = {}\n      let recordset = []\n      let returnValue = 0\n      let isChunkedRecordset = false\n      let chunksBuffer = null\n      let hasReturned = false\n\n      const handleError = (doReturn, connection, info) => {\n        let err = new Error(info.message)\n        err.info = info\n        err = new RequestError(err, 'EREQUEST')\n\n        if (this.stream) {\n          this.emit('error', err)\n        } else {\n          if (doReturn && !hasReturned) {\n            if (connection) {\n              for (const event in errorHandlers) {\n                connection.removeListener(event, errorHandlers[event])\n              }\n\n              this.parent.release(connection)\n            }\n\n            hasReturned = true\n            callback(err)\n          }\n        }\n\n        // we must collect errors even in stream mode\n        errors.push(err)\n      }\n\n      const handleInfo = msg => {\n        this.emit('info', {\n          message: msg.message,\n          number: msg.number,\n          state: msg.state,\n          class: msg.class,\n          lineNumber: msg.lineNumber,\n          serverName: msg.serverName,\n          procName: msg.procName\n        })\n      }\n\n      this.parent.acquire(this, (err, connection, config) => {\n        if (err) return callback(err)\n\n        debug('connection(%d): borrowed to request #%d', IDS.get(connection), IDS.get(this))\n\n        let row\n\n        if (this.canceled) {\n          debug('request(%d): canceled', IDS.get(this))\n          this.parent.release(connection)\n          return callback(new RequestError('Canceled.', 'ECANCEL'))\n        }\n\n        this._cancel = () => {\n          debug('request(%d): cancel', IDS.get(this))\n          connection.cancel()\n        }\n\n        // attach handler to handle multiple error messages\n        connection.on('infoMessage', errorHandlers.infoMessage = handleInfo)\n        connection.on('errorMessage', errorHandlers.errorMessage = handleError.bind(null, false, connection))\n        connection.on('error', errorHandlers.error = handleError.bind(null, true, connection))\n\n        if (debug.enabled) {\n          // log stored procedure executions and provided parameters\n          const params = Object.keys(this.parameters).map(k => this.parameters[k])\n          // cut long string parameters short to keep log somewhat clean\n          const logValue = s => typeof s === 'string' && s.length > 50 ? s.substring(0, 47) + '...' : s\n          // format parameter names as 'my_parameter [sql.Int]'\n          const logName = param => param.name + ' [sql.' + param.type.name + ']'\n          const logParams = {}\n          params.forEach(p => { logParams[logName(p)] = logValue(p.value) })\n          debug('request(%d): execute %s %O', IDS.get(this), procedure, logParams)\n        }\n\n        const req = new tds.Request(procedure, err => {\n          // to make sure we handle no-sql errors as well\n          if (err && (!errors.length || (errors.length && err.message !== errors[errors.length - 1].message))) {\n            err = new RequestError(err, 'EREQUEST')\n            if (this.stream) this.emit('error', err)\n            errors.push(err)\n          }\n\n          delete this._cancel\n\n          let error\n          if (errors.length && !this.stream) {\n            error = errors.pop()\n            error.precedingErrors = errors\n          }\n\n          if (!hasReturned) {\n            for (const event in errorHandlers) {\n              connection.removeListener(event, errorHandlers[event])\n            }\n\n            this.parent.release(connection)\n            hasReturned = true\n\n            if (error) {\n              debug('request(%d): failed', IDS.get(this), error)\n            } else {\n              debug('request(%d): complete', IDS.get(this))\n            }\n\n            if (this.stream) {\n              callback(null, null, output, returnValue, rowsAffected, recordsetcolumns)\n            } else {\n              callback(error, recordsets, output, returnValue, rowsAffected, recordsetcolumns)\n            }\n          }\n        })\n\n        this._setCurrentRequest(req)\n\n        req.on('columnMetadata', metadata => {\n          columns = createColumns(metadata, this.arrayRowMode)\n\n          isChunkedRecordset = false\n          if ((metadata.length === 1) && (metadata[0].colName === JSON_COLUMN_ID || metadata[0].colName === XML_COLUMN_ID)) {\n            isChunkedRecordset = true\n            chunksBuffer = []\n          }\n\n          if (this.stream) this.emit('recordset', columns)\n          if (this.arrayRowMode) recordsetcolumns.push(columns)\n        })\n\n        req.on('row', columns => {\n          if (!recordset) recordset = []\n\n          if (isChunkedRecordset) {\n            return chunksBuffer.push(columns[0].value)\n          }\n\n          if (this.arrayRowMode) {\n            row = []\n          } else {\n            row = {}\n          }\n          for (const col of columns) {\n            col.value = valueCorrection(col.value, col.metadata)\n\n            if (this.arrayRowMode) {\n              row.push(col.value)\n            } else {\n              const exi = row[col.metadata.colName]\n              if (exi != null) {\n                if (exi instanceof Array) {\n                  exi.push(col.value)\n                } else {\n                  row[col.metadata.colName] = [exi, col.value]\n                }\n              } else {\n                row[col.metadata.colName] = col.value\n              }\n            }\n          }\n\n          if (this.stream) {\n            this.emit('row', row)\n          } else {\n            recordset.push(row)\n          }\n        })\n\n        req.on('doneInProc', (rowCount, more) => {\n          if (rowCount != null) {\n            rowsAffected.push(rowCount)\n            if (this.stream) {\n              this.emit('rowsaffected', rowCount)\n            }\n          }\n\n          // filter empty recordsets when NOCOUNT is OFF\n          if (Object.keys(columns).length === 0) return\n\n          if (isChunkedRecordset) {\n            if (columns[JSON_COLUMN_ID] && config.parseJSON === true) {\n              try {\n                if (chunksBuffer.length === 0) {\n                  row = null\n                } else {\n                  row = JSON.parse(chunksBuffer.join(''))\n                }\n              } catch (ex) {\n                row = null\n                const ex2 = new RequestError(new Error(`Failed to parse incoming JSON. ${ex.message}`), 'EJSON')\n\n                if (this.stream) this.emit('error', ex2)\n\n                // we must collect errors even in stream mode\n                errors.push(ex2)\n              }\n            } else {\n              row = {}\n              row[Object.keys(columns)[0]] = chunksBuffer.join('')\n            }\n\n            chunksBuffer = null\n\n            if (this.stream) {\n              this.emit('row', row)\n            } else {\n              recordset.push(row)\n            }\n          }\n\n          if (!this.stream) {\n            // all rows of current recordset loaded\n            Object.defineProperty(recordset, 'columns', {\n              enumerable: false,\n              configurable: true,\n              value: columns\n            })\n\n            Object.defineProperty(recordset, 'toTable', {\n              enumerable: false,\n              configurable: true,\n              value (name) { return Table.fromRecordset(this, name) }\n            })\n\n            recordsets.push(recordset)\n          }\n\n          recordset = []\n          columns = {}\n        })\n\n        req.on('doneProc', (rowCount, more, returnStatus) => {\n          returnValue = returnStatus\n        })\n\n        req.on('returnValue', (parameterName, value, metadata) => {\n          output[parameterName] = value\n        })\n\n        for (const name in this.parameters) {\n          if (!objectHasProperty(this.parameters, name)) {\n            continue\n          }\n          const param = this.parameters[name]\n          if (param.io === 1) {\n            req.addParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision })\n          } else {\n            req.addOutputParameter(param.name, getTediousType(param.type), parameterCorrection(param.value), { length: param.length, scale: param.scale, precision: param.precision })\n          }\n        }\n\n        connection.callProcedure(req)\n      })\n    })\n  }\n\n  _pause () {\n    super._pause()\n    if (this._currentRequest) {\n      this._currentRequest.pause()\n    }\n  }\n\n  _resume () {\n    super._resume()\n    if (this._currentRequest) {\n      this._currentRequest.resume()\n    }\n  }\n}\n\nmodule.exports = Request\n","'use strict'\n\nconst base = require('../base')\nconst ConnectionPool = require('./connection-pool')\nconst Transaction = require('./transaction')\nconst Request = require('./request')\n\nmodule.exports = Object.assign({\n  ConnectionPool,\n  Transaction,\n  Request,\n  PreparedStatement: base.PreparedStatement\n}, base.exports)\n\nObject.defineProperty(module.exports, 'Promise', {\n  enumerable: true,\n  get: () => {\n    return base.Promise\n  },\n  set: (value) => {\n    base.Promise = value\n  }\n})\n\nObject.defineProperty(module.exports, 'valueHandler', {\n  enumerable: true,\n  value: base.valueHandler,\n  writable: false,\n  configurable: false\n})\n\nbase.driver.name = 'tedious'\nbase.driver.ConnectionPool = ConnectionPool\nbase.driver.Transaction = Transaction\nbase.driver.Request = Request\n","module.exports = require('./lib/tedious')\n","// imports here\nimport { BSPlugin } from \"@bs-core/shell\";\nimport * as mssql from \"mssql\";\n// Config consts here\n// Default configs here\n// SqlServer class here\nexport class SqlServer extends BSPlugin {\n    // Properties here\n    _pool;\n    _user;\n    _password;\n    _database;\n    _dbSever;\n    _port;\n    _appName;\n    constructor(name, sqlServerConfig) {\n        super(name, \n        // NOTE: PLUGIN_VERSION is replaced with package.json#version by a\n        // rollup plugin at build time\n        \"PLUGIN_VERSION\");\n        let config = {\n            server: \"localhost\",\n            port: 1433,\n            appName: \"appShApp\",\n            ...sqlServerConfig,\n        };\n        this._user = config.user;\n        this._password = config.password;\n        this._database = config.database;\n        this._dbSever = config.server;\n        this._port = config.port;\n        this._appName = config.appName;\n    }\n    // Private methods here\n    async isServerReady(resolve, reject) {\n        // Make sure we haven't already created the pool\n        if (this._pool === undefined) {\n            try {\n                this._pool = await new mssql.ConnectionPool({\n                    user: this._user,\n                    password: this._password,\n                    database: this._database,\n                    server: this._dbSever,\n                    port: this._port,\n                    arrayRowMode: false,\n                    options: {\n                        encrypt: false, // true for azure\n                        trustServerCertificate: true, // true for self-signed certs\n                        appName: this._appName,\n                    },\n                }).connect();\n            }\n            catch (e) {\n                this.error(\"DB returned the following error: (%j)\", e);\n                setTimeout(() => {\n                    this.isServerReady(resolve, reject);\n                }, 5000);\n            }\n            if (this._pool !== undefined) {\n                this._pool.on(\"error\", (err) => {\n                    console.log(\"sql errors\", err);\n                });\n                this.info(\"Pool is open for business\");\n            }\n        }\n        if (this._pool !== undefined) {\n            // Make sure we can connect to the DB\n            let ok = await this.healthCheck();\n            if (ok) {\n                this.info(\"MS-SQL DB ready\");\n                this.info(\"Started!\");\n                resolve(true);\n            }\n        }\n    }\n    // Protected methods here\n    async stop() {\n        this.info(\"Stopping ...\");\n        if (this._pool !== undefined) {\n            this.info(\"Closing the pool ...\");\n            await this._pool.close().catch((e) => {\n                this.error(e.message);\n                return;\n            });\n            this.info(\"Pool closed!\");\n        }\n        this.info(\"Stopped!\");\n    }\n    async start() {\n        this.info(\"Starting ...\");\n        this.info(\"Opening the Pool ...\");\n        return new Promise((resolve, reject) => {\n            this.isServerReady(resolve, reject);\n        });\n    }\n    async healthCheck() {\n        if (this._pool === undefined) {\n            return false;\n        }\n        // Lets check if we can query the time\n        const sql = \"SELECT getdate();\";\n        let e;\n        await this._pool.query(sql).catch((err) => {\n            e = err;\n            this.error(err);\n        });\n        if (e === undefined) {\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    convertValueToSqlType(type, value, opts) {\n        switch (type) {\n            // Boolean\n            case mssql.Bit:\n                switch (typeof value) {\n                    case \"number\":\n                        return value === 0 ? 0 : 1;\n                    case \"boolean\":\n                        return value ? 1 : 0;\n                    case \"string\":\n                        switch (value.toUpperCase()) {\n                            case \"Y\":\n                            case \"YES\":\n                            case \"TRUE\":\n                            case \"T\":\n                            case \"1\":\n                                return true;\n                            case \"N\":\n                            case \"NO\":\n                            case \"FALSE\":\n                            case \"F\":\n                            case \"0\":\n                                return false;\n                            default:\n                                // Return actual value and let it throw an error\n                                return value;\n                        }\n                    default:\n                        // Return actual value and let it throw an error\n                        return value;\n                }\n            // Integer\n            case mssql.Int:\n            case mssql.BigInt:\n            case mssql.TinyInt:\n            case mssql.SmallInt:\n                if (value.length) {\n                    return parseInt(value, 10);\n                }\n                return null;\n            // Float\n            case mssql.Float:\n                if (value.length) {\n                    return parseFloat(value);\n                }\n                return null;\n            // Money\n            case mssql.SmallMoney:\n            case mssql.Money:\n                if (value.length) {\n                    return parseFloat(value);\n                }\n                else if (opts?.nullCurrencyValue !== undefined) {\n                    return opts.nullCurrencyValue;\n                }\n                return null;\n            // Text\n            case mssql.VarChar:\n            case mssql.Char:\n            case mssql.Text:\n            case mssql.NVarChar:\n            case mssql.NChar:\n            case mssql.NText:\n                return value;\n            // Dates\n            case mssql.Date:\n            case mssql.DateTime:\n                if (value.length) {\n                    return value;\n                }\n                return null;\n            default:\n                // Return actual value and let it throw an error\n                return value;\n        }\n    }\n    async getTableColumns(collection) {\n        let request = new mssql.Request(this._pool);\n        // This will return the colum details\n        request.arrayRowMode = true;\n        // We don't want any results so ensure nothing comes back (1=0)\n        let query = `SELECT * FROM ${collection} WHERE 1 = 0;`;\n        let res = await request.query(query);\n        // This is an object of positional columns with each column being\n        // denoted by the position (ie. this is an array). Convert this\n        // to a proper object\n        let cols = {};\n        if (res.columns !== undefined) {\n            for (let pos in res.columns[0]) {\n                cols[res.columns[0][pos].name] = res.columns[0][pos];\n            }\n        }\n        return cols;\n    }\n    async create(params) {\n        let cols = await this.getTableColumns(params.collection);\n        let fieldsStr = \"\";\n        let valuesStr = \"\";\n        let request;\n        if (params.transaction !== undefined) {\n            request = new mssql.Request(params.transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        let position = 1;\n        for (const f in params.fields) {\n            if (position > 1) {\n                fieldsStr += \",\";\n                valuesStr += \",\";\n            }\n            fieldsStr += f;\n            valuesStr += `@${f}`;\n            request.input(f, cols[f].type, this.convertValueToSqlType(cols[f].type, params.fields[f], params?.opts?.convertValuesOpts));\n            position++;\n        }\n        let query = \"\";\n        if (params.id !== undefined) {\n            query = `INSERT INTO ${params.collection} (${fieldsStr}) OUTPUT INSERTED.${params.id} VALUES (${valuesStr})`;\n        }\n        else {\n            query = `INSERT INTO ${params.collection} (${fieldsStr}) VALUES (${valuesStr})`;\n        }\n        let res = await request.query(query);\n        if (params.id !== undefined) {\n            return res.recordset[0][params.id];\n        }\n    }\n    async read(params) {\n        if (params.fields === undefined)\n            params.fields = [\"*\"];\n        if (params.criteria === undefined)\n            params.criteria = {};\n        if (params.opts === undefined)\n            params.opts = {};\n        if (params.opts.format === undefined)\n            params.opts.format = \"json\";\n        if (params.opts.distinct === undefined)\n            params.opts.distinct = false;\n        if (params.opts.orderBy === undefined)\n            params.opts.orderBy = [];\n        if (params.opts.groupBy === undefined)\n            params.opts.groupBy = [];\n        if (params.opts.orderByDesc === undefined)\n            params.opts.orderByDesc = [];\n        let query = \"\";\n        let request;\n        if (params.transaction !== undefined) {\n            request = new mssql.Request(params.transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        if (params.opts.format === \"array\") {\n            request.arrayRowMode = true;\n        }\n        if (params.opts.distinct) {\n            query = `SELECT DISTINCT ${params.fields.join()} FROM ${params.collection}`;\n        }\n        else {\n            query = `SELECT ${params.fields.join()} FROM ${params.collection}`;\n        }\n        if (Object.keys(params.criteria).length > 0) {\n            query += \" WHERE \";\n            let position = 1;\n            for (const c in params.criteria) {\n                if (position > 1) {\n                    query += \" AND \";\n                }\n                const val = params.criteria[c];\n                if (typeof val === \"object\") {\n                    request.input(c, val.val);\n                    query += `${c}${val.op}@${c}`;\n                    position++;\n                }\n                else {\n                    request.input(c, val);\n                    query += `${c}=@${c}`;\n                    position++;\n                }\n            }\n        }\n        if (params.opts.groupBy.length > 0) {\n            query += ` GROUP BY ${params.opts.groupBy.join()}`;\n        }\n        if (params.opts.orderBy.length > 0) {\n            query += ` ORDER BY ${params.opts.orderBy.join()}`;\n            query += \" ASC\";\n        }\n        if (params.opts.orderByDesc.length > 0) {\n            if (params.opts.orderBy.length > 0) {\n                query += `, ${params.opts.orderByDesc.join()} DESC`;\n            }\n            else {\n                query += ` ORDER BY ${params.opts.orderByDesc.join()} DESC`;\n            }\n        }\n        let res = await request.query(query);\n        if (params.opts.format === \"array\") {\n            if (res.columns !== undefined) {\n                this.info(\"%j\", res.columns[0]);\n                let cols = [];\n                for (let col in res.columns[0]) {\n                    cols.push(res.columns[0][col].name);\n                }\n                return [cols, ...res.recordset];\n            }\n        }\n        return res.recordset;\n    }\n    async update(params) {\n        let cols = await this.getTableColumns(params.collection);\n        let fieldStr = \"\";\n        let position = 1;\n        let request;\n        if (params.transaction !== undefined) {\n            request = new mssql.Request(params.transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        for (const f in params.fields) {\n            if (position > 1) {\n                fieldStr += \",\";\n            }\n            // Make sure the field param doesnt clash with a criteria param -\n            // so add a \"-__1\" at the end of it and hope it doesn't clash!!\n            request.input(`${f}__1`, params.fields[f]);\n            fieldStr += `${f}=@${f}__1`;\n            position++;\n        }\n        let query = `UPDATE ${params.collection} SET ${fieldStr}`;\n        if (Object.keys(params.criteria).length > 0) {\n            query += \" WHERE \";\n            let position = 1;\n            for (const c in params.criteria) {\n                if (position > 1) {\n                    query += \" AND \";\n                }\n                const val = params.criteria[c];\n                if (typeof val === \"object\") {\n                    request.input(c, cols[c].type, this.convertValueToSqlType(cols[c].type, val.val, params?.opts?.convertValuesOpts));\n                    query += `${c}${val.op}@${c}`;\n                    position++;\n                }\n                else {\n                    request.input(c, cols[c].type, this.convertValueToSqlType(cols[c].type, val, params?.opts?.convertValuesOpts));\n                    query += `${c}=@${c}`;\n                    position++;\n                }\n            }\n        }\n        let res = await request.query(query);\n        return res.rowsAffected[0];\n    }\n    async delete(params) {\n        let query = `DELETE FROM ${params.collection}`;\n        let request;\n        if (params.transaction !== undefined) {\n            request = new mssql.Request(params.transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        if (Object.keys(params.criteria).length > 0) {\n            query += \" WHERE \";\n            let position = 1;\n            for (const c in params.criteria) {\n                if (position > 1) {\n                    query += \" AND \";\n                }\n                const val = params.criteria[c];\n                if (typeof val === \"object\") {\n                    request.input(c, val.val);\n                    query += `${c}${val.op}@${c}`;\n                    position++;\n                }\n                else {\n                    request.input(c, val);\n                    query += `${c}=@${c}`;\n                    position++;\n                }\n            }\n        }\n        let res = await request.query(query);\n        return res.rowsAffected[0];\n    }\n    async query(query, transaction) {\n        let request;\n        if (transaction !== undefined) {\n            request = new mssql.Request(transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        let res = await request.query(query);\n        return res.recordset;\n    }\n    async exec(query, transaction) {\n        let request;\n        if (transaction !== undefined) {\n            request = new mssql.Request(transaction);\n        }\n        else {\n            request = new mssql.Request(this._pool);\n        }\n        let res = await request.query(query);\n        return res.rowsAffected[0];\n    }\n    async begin() {\n        let transaction = new mssql.Transaction(this._pool);\n        await transaction.begin();\n        return transaction;\n    }\n    async commit(transaction) {\n        await transaction.commit();\n    }\n    async rollback(transaction) {\n        await transaction.rollback();\n    }\n}\n//# sourceMappingURL=main.js.map"],"names":["ms","require$$0","require$$1","require$$2","require$$3","srcModule","this","TimeoutError_1","TimeoutError","PromiseInspection_1","utils","delay","PendingOperation_1","utils_1","Resource_1","Pool_1","events_1","require$$4","IDS","MSSQLError","ConnectionError","TYPES","objectHasProperty","MAX","JSON_COLUMN_ID","Table","PreparedStatementError","RequestError","TransactionError","EventEmitter","debug","require$$5","shared","require$$6","require$$7","require$$8","connectionPool","ConnectionPool","globalConnection","declare","request","Request","ISOLATION_LEVEL","Transaction","transaction","require$$9","TYPE","Constants","name","version","DEFAULT_SYSTEM_OPTIONS","DEFAULT_CACHE_OPTIONS","DEFAULT_TELEMETRY_OPTIONS","http","https","validate","crypto","CacheHelpers.isIdTokenEntity","CacheHelpers.isAccessTokenEntity","CacheHelpers.isRefreshTokenEntity","CacheHelpers.isAppMetadataEntity","CacheHelpers.generateCredentialKey","CacheHelpers.generateAppMetadataKey","CacheHelpers.isServerTelemetryEntity","CacheHelpers.isAuthorityMetadataEntity","CacheHelpers.isThrottlingEntity","ClientAuthErrorCodes.stateMismatch","AuthorityFactory.createDiscoveredInstance","UrlUtils.getDeserializedResponse","Constants$1","ClientAuthErrorCodes.deviceCodePollingCancelled","ClientAuthErrorCodes.userTimeoutReached","ClientAuthErrorCodes.deviceCodeExpired","AuthErrorCodes.postRequestFailed","ClientAuthErrorCodes.deviceCodeUnknownError","Buffer","Stream","util","DataStream","getParamBytesForAlg","jwa","toString","SignStream","isObject","VerifyStream","jws","decode","JsonWebTokenError","NotBeforeError","TokenExpiredError","parse","timespan","MAX_LENGTH","MAX_SAFE_INTEGER","constants","debug_1","parseOptions","numeric","compareIdentifiers","identifiers","re","t","semver","SemVer","valid","clean","inc","diff","major","minor","patch","prerelease","compare","rcompare","compareLoose","compareBuild","sort","rsort","gt","lt","eq","neq","gte","lte","cmp","coerce","range","Range","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","Comparator","ANY","outside","gtr","ltr","intersects","subset","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","validateAsymmetricKey","PS_SUPPORTED","KeyObject","createSecretKey","INFINITY","MAX_INTEGER","NAN","stringTag","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","overArg","objectProto","hasOwnProperty","objectToString","isArray","isArguments","includes","toInteger","isString","isFunction","isObjectLike","isSymbol","toFinite","toNumber","keys","isBoolean","isInteger","isNumber","isPlainObject","once","ClientAuthErrorCodes.invalidAssertion","ClientAuthErrorCodes.multipleMatchingTokens","ClientAuthErrorCodes.tokenRefreshRequired","AuthToken.extractTokenClaims","AADServerParamKeys.ON_BEHALF_OF","ClientAuthErrorCodes.missingTenantIdError","ClientAuthErrorCodes.invalidClientCredential","logger","SDK_VERSION","listenersMap","abortSignal","AbortSignal","AbortError","StandardAbortMessage","_a","v4RandomUUID","msalCommon.LogLevel","coreLogger","os","Readable","concat","promisify_1","__importDefault","src","parseProxyResponse_1","__awaiter","agent","net_1","tls_1","url_1","agent_base_1","isHTTPS","agent_1","dist","HttpProxyAgent","HttpsProxyAgent","inspect","AbortController","msalNode.PublicClientApplication","msalNode.ConfidentialClientApplication","path","fs","msiName","prepareRequestOptions","readFileAsync","credentialName","readFile","child_process","childProcess","promisify","createPrivateKey","isDocker","isWsl","isWslModule","open","stoppable","msalNode.CryptoProvider","_interopRequireDefault","_net","punycode","_interopRequireWildcard","_abortError","_getRequireWildcardCache","withTimeout_1","instanceLookup_1","_sprintfJs","STATUS","global","errors","process","endOfStreamModule","streamModule","inherits_browserModule","inheritsModule","BufferList","blModule","bomHandling","_token","_helpers","readToken","toStr","implementation","shams","hasSymbols","hasProto","bind","undefined","$Error","$SyntaxError","$TypeError","getProto","GetIntrinsic","$defineProperty","hasPropertyDescriptors","gopd","defineDataProperty","defineProperties","gOPD","define","hasDescriptors","setFunctionName","IsPropertyKey","Type","assertRecord","IsDataDescriptor","SameValue","setFunctionLength","callBound","IsArray","DefineOwnProperty","FromPropertyDescriptor","CreateDataProperty","CreateDataPropertyOrThrow","CreateMethodProperty","AdvanceStringIndex","IteratorValue","GetMethod","CreateAsyncFromSyncIterator","GetIteratorFromMethod","getIteratorMethod","GetIterator","IteratorStep","IteratorToList","OrdinaryGetPrototypeOf","OrdinarySetPrototypeOf","AggregateError","polyfill","getPolyfill","shim","globalThis","_esAggregateError","library","tds","mssql.ConnectionPool","mssql.Bit","mssql.Int","mssql.BigInt","mssql.TinyInt","mssql.SmallInt","mssql.Float","mssql.SmallMoney","mssql.Money","mssql.VarChar","mssql.Char","mssql.Text","mssql.NVarChar","mssql.NChar","mssql.NText","mssql.Date","mssql.DateTime","mssql.Request","mssql.Transaction"],"mappings":"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KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;AACrF,SAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB;MACF;AACL,KAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B;AACH;AACA;AACA;AACA;GACE,MAAM,CAAC,QAAQ,EAAE;KACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AAC/C,KAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,QAAQ,SAAS,OAAO,CAAC,YAAY,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE;KAC/C,gBAAgB,GAAG,KAAK;KACxB,YAAY,GAAG,KAAK;KACpB,SAAS,GAAG,KAAK;KACjB,SAAS,GAAG,KAAK;KACjB,KAAK,GAAG,EAAE;IACX,EAAE,QAAQ,EAAE;AACf,KAAI,IAAI,OAAO,gBAAgB,KAAK,SAAS,EAAE;AAC/C,OAAM,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;MACzF;AACL,KAAI,IAAI,OAAO,YA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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAACK,YAAU,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,EAAE,OAAOC,cAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASD,YAAU,CAAC,KAAK,EAAE;AAC3B;AACA;AACA,EAAE,IAAI,GAAG,GAAGhH,UAAQ,CAAC,KAAK,CAAC,GAAG0G,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC9D,EAAE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AACzC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAIhG,kBAAgB,CAAC;AAC9D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASV,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC7D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiH,cAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASF,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAK,CAACJ,SAAO,CAAC,KAAK,CAAC,IAAIM,cAAY,CAAC,KAAK,CAAC,IAAIP,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAIV,WAAS,CAAC,CAAC;AACxF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAKD,cAAY,CAAC,KAAK,CAAC,IAAIP,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAIT,WAAS,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASe,WAAS,CAAC,KAAK,EAAE;AAC1B,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAIT,WAAS,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS9G,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC7D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiH,cAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC7C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAKD,cAAY,CAAC,KAAK,CAAC,IAAIP,gBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAIT,WAAS,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,UAAQ,CAAC,KAAK,EAAE;AACzB,EAAE,IAAI,CAAC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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;KAClB,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;KACnB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE;KACjD,KAAK,EAAE,CAAC;AACZ,KAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACjD,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC/B,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,KAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,KAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1B,KAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,KAAI,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAChC,KAAI,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AAC7B,KAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AACjC,KAAI,IAAI,CAAC,gCAAgC,GAAG,OAAO,IAAI,OAAO,CAAC,gCAAgC,IAAI,MAAM,CAAC,yCAAyC,CAAC,oBAAoB,CAAC;AACzK,KAAI,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;AACnD,OAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,SAAQ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACvB,IAAI,GAAG,EAAE;WACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClC,UAAS,MAAM;AACf,WAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;UACvB;AACT,QAAO,MAAM;SACL,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC/C,SAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B;AACP,MAAK,CAAC;IACH;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3C,KAAI,MAAM;OACJ,MAAM,GAAG,KAAK;AACpB,OAAM,MAAM;AACZ,OAAM,SAAS;AACf,OAAM,KAAK;AACX,MAAK,GAAG,OAAO,IAAI,EAAE,CAAC;KAClB,MAAM,SAAS,GAAG;OAChB,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,KAAK,EAAE,KAAK;OACZ,MAAM,EAAE,MAAM;OACd,MAAM,EAAE,MAAM;OACd,SAAS,EAAE,SAAS;OACpB,KAAK,EAAE,KAAK;AAClB,MAAK,CAAC;KACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;KAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,OAAM,GAAG,OAAO;OACV,MAAM,EAAE,IAAI;AAClB,MAAK,CAAC,CAAC;IACJ;AACH;AACA;AACA;AACA;GACE,mBAAmB,CAAC,UAAU,EAAE;AAClC,KAAI,IAAI,eAAe,GAAG,EAAE,CAAC;AAC7B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC3D,OAAM,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,OAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;SAC9B,eAAe,IAAI,IAAI,CAAC;QACzB;OACD,eAAe,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC;OAC9C,eAAe,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC/D,OAAM,IAAI,SAAS,CAAC,MAAM,EAAE;SACpB,eAAe,IAAI,SAAS,CAAC;QAC9B;MACF;KACD,OAAO,eAAe,CAAC;IACxB;AACH;AACA;AACA;AACA;GACE,kBAAkB,CAAC,SAAS,EAAE;KAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;OAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3C,OAAM,IAAI;AACV,SAAQ,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACvE,CAAC,OAAO,KAAK,EAAE;SACd,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,oCAAoC,GAAG,SAAS,CAAC,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1H;MACF;IACF;AACH;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;AACV,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,OAAM,OAAO;MACR;AACL,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACpB;AACH;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,GAAG;AACX,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,OAAM,OAAO;MACR;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxB,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB;AACH;AACA;AACA;AACA;AACA,GAAE,MAAM,GAAG;AACX,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,OAAM,OAAO;MACR;AACL,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,UAAU,CAAC,OAAO,EAAE;AACtB,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB;EACF;CACD,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAC;AACzB,CAAA;;;;;;;;;AC/XA,MAAM,CAAC,cAAc,CAAC,UAAO,EAAE,YAAY,EAAE;AAC7C,EAAE,KAAK,EAAE,IAAI;AACb,CAAC,CAAC,CAAC;AAC0B,UAAA,CAAA,qBAAA,GAAG,sBAAsB;AACtD,MAAM2C,MAAI,GAAG;AACb,EAAE,mBAAmB,EAAE,CAAC;AACxB,EAAE,cAAc,EAAE,CAAC;AACnB,EAAE,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC;AACF,MAAM,6BAA6B,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,6BAA6B,CAAC;AACvE,SAAS,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE;AAC/E,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,aAAa,CAACA,MAAI,CAAC,cAAc,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpC,EAAE,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;AAChD,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACrC,EAAE,OAAO,MAAM,CAAC;AAChB;;;ACrBA;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;AACzB,CAAA,IAAI,uBAAuB,GAAG,sBAAsB,CAAC7C,6BAAqD,CAAC,CAAC;CAC5G,IAAI,WAAW,GAAGC,UAAwB,CAAC;CAC3C,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,MAAM,GAAG;GACb,YAAY,EAAE,IAAI;GAClB,aAAa,EAAE,IAAI;AACrB,EAAC,CAAC;AACF;AACA;AACA;AACA;AACA,CAAA,MAAM,iBAAiB,CAAC;GACtB,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE;AACxE,KAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,KAAI,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B;AACH,GAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,KAAI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B;GACD,CAAC,YAAY,GAAG;KACd,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KACxD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE;AAC1C,OAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACxC,OAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;MAC7F;AACL,KAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;OACtC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;OAC3B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;MACpC;AACL,KAAI,MAAM,WAAW,GAAG,CAAC,CAAC;AAC1B,KAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACtC,KAAI,MAAM,MAAM,CAAC,IAAI,CAAC;KAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpD,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD;IACF;AACH,GAAE,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;KACpB,OAAO,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD;AACH,GAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE;KAChC,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/G,KAAI,IAAI,SAAS,CAAC,IAAI,EAAE;OAClB,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACjD,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;MAC1B;AACL,KAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,KAAI,IAAI,SAAS,CAAC,MAAM,EAAE;AAC1B,OAAM,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC;MACpC;AACL,KAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACnC,KAAI,MAAM,MAAM,CAAC,IAAI,CAAC;KAClB,MAAM,KAAK,GAAG;AAClB,OAAM,KAAK,EAAE,SAAS,CAAC,KAAK;AAC5B,MAAK,CAAC;AACN,KAAI,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;KAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;AACnC,OAAM,IAAI,SAAS,CAAC,MAAM,EAAE;AAC5B,SAAQ,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AACxC,QAAO,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;SAC7B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C;MACF;AACL,KAAI,IAAI,SAAS,CAAC,SAAS,EAAE;AAC7B,OAAM,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC5C,MAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;OAChC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;MACpD;AACL,KAAI,IAAI,SAAS,CAAC,KAAK,EAAE;AACzB,OAAM,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACpC,MAAK,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;OAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;MAC5C;AACL,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;MAClC;KACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACjD,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD;EACF;CACD,IAAI,QAAQ,GAAG,iBAAiB,CAAC;AACjC,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,iBAAiB,CAAC;AACnC,CAAA;;;;;;;;ACpGA;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;AACzB,CAAA,IAAI,uBAAuB,GAAG,sBAAsB,CAACD,6BAAqD,CAAC,CAAC;CAC5G,IAAI,WAAW,GAAGC,UAAwB,CAAC;CAC3C,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;AACA;AACA;AACA,CAAA,MAAM,eAAe,CAAC;AACtB,GAAE,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE;AAC/C,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACvC,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB;AACH,GAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;KACnB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE;AAC1C,OAAM,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrE,OAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACxC,OAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;AAClG,OAAM,MAAM,MAAM,CAAC,IAAI,CAAC;MACnB;KACD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC;AACH,GAAE,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;KACpB,OAAO,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD;EACF;CACD,IAAI,QAAQ,GAAG,eAAe,CAAC;AAC/B,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,eAAe,CAAC;AACjC,CAAA;;;;;;;ACjCA,MAAM,MAAM,GAAGD,YAAiB,CAAC,MAAM,CAAC;AACxC;AACA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,MAAM,YAAY,SAAS,MAAM,CAAC;AAClC,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,KAAK,GAAG;AACV,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAC7B,MAAM,QAAQ,EAAE,CAAC;AACjB,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACpC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,MAAM,CAAC,QAAQ,EAAE;AACnB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,GAAG;AACH,CAAC;AACD;AACA,MAAM,UAAU,CAAC;AACjB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5C,GAAG;AACH,CAAC;AACD;AACA,IAAA,gBAAc,GAAG,UAAU;;;;;ACxC3B;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;CACzB,IAAI,OAAO,GAAGA,YAAiB,CAAC;AAChC,CAAA,MAAM,OAAO,SAAS,OAAO,CAAC,WAAW,CAAC;AAC1C,GAAE,WAAW,CAAC;AACd,KAAI,IAAI;KACJ,eAAe,GAAG,KAAK;AAC3B,IAAG,EAAE;KACD,KAAK,EAAE,CAAC;AACZ,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,KAAI,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AAC3C,KAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB;EACF;CACD,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAC;AACzB,CAAA;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,WAAc,GAAG;GACf,YAAY,CAAC,IAAI,EAAE;AACrB,KAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B;AACH,GAAE,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE;AACnC,KAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB;AACH,GAAE,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE;AAClC,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB;AACH,GAAE,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB;AACH,GAAE,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE;AAC9B,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB;AACH,GAAE,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE;AAC9B,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB;AACH,GAAE,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE;AAC/B,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB;AACH,GAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;IAC9B;AACH,GAAE,KAAK;GACL,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE;KAC3C,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;IAClC;AACH,GAAE,kCAAkC,CAAC,IAAI,EAAE,QAAQ,EAAE;AACrD,KAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IACnE;AACH,GAAE,SAAS,EAAE,IAAI,CAAC,KAAK;AACvB,GAAE,MAAM;AACR,GAAE,eAAe,EAAE,MAAM,CAAC,SAAS;AACnC,GAAE,WAAW,EAAE,MAAM,CAAC,KAAK;AAC3B,GAAE,sBAAsB,EAAE,MAAM,CAAC,gBAAgB;AACjD,GAAE,sBAAsB,EAAE,MAAM,CAAC,gBAAgB;AACjD,GAAE,cAAc,EAAE,MAAM,CAAC,QAAQ;AACjC,GAAE,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE;KAClC,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5C;AACH,GAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;KACrC,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/C;AACH,GAAE,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE;KACzC,OAAO,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC;IACnD;GACD,UAAU,CAAC,GAAG,EAAE;AAClB,KAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;AACH,GAAE,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE;KAClC,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;IAC5C;AACH,GAAE,OAAO;AACT,GAAE,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE;AAClC,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACtB;AACH,GAAE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;KAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;IAClC;GACD,aAAa,CAAC,GAAG,EAAE;AACrB,KAAI,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;IAC3B;GACD,cAAc,CAAC,GAAG,EAAE;AACtB,KAAI,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5B;AACH,GAAE,YAAY,EAAE,OAAO,CAAC,KAAK;AAC7B,GAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AACnC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB;GACD,OAAO,EAAE,GAAG;AACd,GAAE,MAAM;AACR,GAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;KACrC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;IAC9B;GACD,0BAA0B,CAAC,IAAI,EAAE;AACnC,KAAI,OAAO,IAAI,CAAC,WAAW,EAAE;IAC1B;GACD,0BAA0B,CAAC,IAAI,EAAE;AACnC,KAAI,OAAO,IAAI,CAAC,WAAW,EAAE;IAC1B;GACD,mBAAmB,CAAC,IAAI,EAAE;AAC5B,KAAI,OAAO,IAAI,CAAC,IAAI,EAAE;IACnB;AACH,GAAE,MAAM;AACR,GAAE,SAAS,EAAE,MAAM,CAAC,GAAG;AACvB,GAAE,mBAAmB,EAAE,MAAM,CAAC,aAAa;AAC3C,GAAE,iBAAiB,EAAE,MAAM,CAAC,WAAW;AACvC,GAAE,cAAc,EAAE,MAAM,CAAC,QAAQ;GAC/B,aAAa,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,gBAAgB,CAAC;GACzD,kBAAkB,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,qBAAqB,CAAC;AAC1E,GAAE,sBAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACrC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1B;GACD,OAAO,EAAE,OAAO;AAClB,GAAE,UAAU;AACZ,GAAA;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,CAAC,KAAK,EAAE;AACnB,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,MAAM;AAClB,QAAQ,IAAI,IAAI,IAAI;AACpB,QAAQ,6CAA6C;AACrD,QAAQ,KAAK;AACb,KAAK,CAAC;AACN,IAAI,OAAO,IAAI;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AACtC,QAAQ;AACR,YAAY,OAAO,OAAO,KAAK,WAAW;AAC1C,YAAY,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;AAC/C,UAAU;AACV,YAAY,OAAO,CAAC,KAAK;AACzB,gBAAgB,oEAAoE;AACpF,gBAAgB,IAAI,CAAC,eAAe;AACpC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAChC,QAAQ,MAAM;AACd,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE;AACzD,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AACpC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE;AACnC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;AAC1B,QAAQ,WAAW;AACnB,QAAQ,KAAK;AACb,QAAQ,UAAU,EAAE,CAAC;AACrB,QAAQ,aAAa,EAAE,WAAW;AAClC,QAAQ,QAAQ,EAAE,KAAK;AACvB,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,gBAAgB,EAAE,KAAK;AAC/B,QAAQ,eAAe,EAAE,IAAI;AAC7B,QAAQ,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;AAChD,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACjF;AACA;AACA,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE;AAC5B,YAAY,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA,KAAK,CAAC,SAAS,GAAG;AAClB;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;AACrD,QAAQ,IAAI,aAAa,IAAI,IAAI,EAAE;AACnC,YAAY,OAAO,EAAE;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,aAAa,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,CAAC;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,CAAC;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,CAAC;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,CAAC;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,UAAU,EAAE;AAC9D,YAAY,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;AACzC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,KAAK,UAAU,EAAE;AACvE,YAAY,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAClD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ;AAChC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO;AAC/B,KAAK;AACL,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;AAC1D,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3C,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG;AAChB;AACA,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE;AACtD,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,QAAQ,EAAE,IAAI;AAClB,CAAC,CAAC,CAAC;AACH;AACA;AACA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAC1E,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnE;AACA;AACA,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,GAAG,EAAE;AACvC,IAAI,OAAO;AACX,QAAQ,GAAG,GAAG;AACd,YAAY,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC,SAAS;AACT,QAAQ,GAAG,CAAC,KAAK,EAAE;AACnB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxC,SAAS;AACT,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,IAAI,OAAO;AACX,QAAQ,KAAK,GAAG;AAChB,YAAY,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACzC,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;AACrD,SAAS;AACT,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAQ,OAAO,SAAS;AACxB,KAAK;AACL;AACA;AACA,IAAI,SAAS,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE;AAC7C,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC/D,QAAQ,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/E,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE;AAC3C,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3E,YAAY,MAAM,MAAM,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC;AAClE,YAAY,MAAM,CAAC,cAAc;AACjC,gBAAgB,WAAW,CAAC,SAAS;AACrC,gBAAgB,GAAG;AACnB,gBAAgB,MAAM;AACtB,sBAAsB,oBAAoB,CAAC,GAAG,CAAC;AAC/C,sBAAsB,wBAAwB,CAAC,GAAG,CAAC;AACnD,aAAa,CAAC;AACd,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,WAAW;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE;AACrD,QAAQ,OAAO,KAAK;AACpB,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,QAAQ,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjF,QAAQ,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,OAAO;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE;AACvC,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;AAC1C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,gBAAgB;AACrC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE;AAC1C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;AACtC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE;AAChD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC;AAC5C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE;AACpD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,eAAe,CAAC;AAChD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC;AACA;AACA,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,WAAW,EAAE;AACnC,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACpD,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS;AAC3B,YAAY,kEAAkE;AAC9E,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAA8B,CAAC,SAAS,EAAE;AACnD,IAAI,OAAO;AACX,QAAQ,GAAG,GAAG;AACd,YAAY,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,YAAY,OAAO,IAAI,IAAI,IAAI,EAAE;AACjC,gBAAgB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACrD,oBAAoB,OAAO,IAAI,CAAC,QAAQ;AACxC,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACjC,aAAa;AACb,YAAY,OAAO,IAAI;AACvB,SAAS;AACT;AACA,QAAQ,GAAG,CAAC,QAAQ,EAAE;AACtB,YAAY,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACvE,gBAAgB,QAAQ,GAAG,IAAI,CAAC;AAChC,aAAa;AACb,YAAY,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD;AACA;AACA,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC;AAC5B,YAAY,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,YAAY,OAAO,IAAI,IAAI,IAAI,EAAE;AACjC,gBAAgB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACrD;AACA,oBAAoB,IAAI,IAAI,KAAK,IAAI,EAAE;AACvC,wBAAwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9C,qBAAqB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACnD,wBAAwB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,qBAAqB,MAAM;AAC3B,wBAAwB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACpD,qBAAqB;AACrB,iBAAiB,MAAM;AACvB,oBAAoB,IAAI,GAAG,IAAI,CAAC;AAChC,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACjC,aAAa;AACb;AACA;AACA,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE;AACnC,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,QAAQ;AAC5B,oBAAoB,YAAY,EAAE,SAAS;AAC3C,oBAAoB,OAAO,EAAE,KAAK;AAClC,oBAAoB,IAAI,EAAE,KAAK;AAC/B,oBAAoB,IAAI,EAAE,IAAI;AAC9B,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,IAAI,KAAK,IAAI,EAAE;AACnC,oBAAoB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACtD,iBAAiB,MAAM;AACvB,oBAAoB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,oBAAoB,EAAE,SAAS,EAAE;AAC/D,IAAI,MAAM,CAAC,cAAc;AACzB,QAAQ,oBAAoB;AAC5B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACxB,QAAQ,8BAA8B,CAAC,SAAS,CAAC;AACjD,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,UAAU,EAAE;AAC7C;AACA,IAAI,SAAS,iBAAiB,GAAG;AACjC,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE;AACvE,QAAQ,WAAW,EAAE;AACrB,YAAY,KAAK,EAAE,iBAAiB;AACpC,YAAY,YAAY,EAAE,IAAI;AAC9B,YAAY,QAAQ,EAAE,IAAI;AAC1B,SAAS;AACT,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAChD,QAAQ,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,KAAK;AACL;AACA,IAAI,OAAO,iBAAiB;AAC5B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,GAAG;AACvB;AACA,IAAI,IAAI,IAAI,YAAY,WAAW,EAAE;AACrC,QAAQ,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC1C,QAAQ,MAAM;AACd,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/D,QAAQ,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACnD,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,uBAAuB,CAAC,KAAK,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC;AAC5D;AACA,CAAC;AACD;AACA;AACA,WAAW,CAAC,SAAS,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACnD,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACnE,YAAY,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC;AAChF,SAAS;AACT;AACA,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAQ,MAAM,OAAO,GAAG,YAAY;AACpC,cAAc,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,cAAc,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAQ,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AACxD,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,QAAQ;AACpB,YAAY,YAAY;AACxB,YAAY,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7D,YAAY,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AACvD,YAAY,IAAI,EAAE,IAAI;AACtB,SAAS,CAAC;AACV;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9C,YAAY,MAAM;AAClB,SAAS;AACT;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,OAAO,IAAI,IAAI,IAAI,EAAE;AAC7B,YAAY;AACZ,gBAAgB,IAAI,CAAC,QAAQ,KAAK,QAAQ;AAC1C,gBAAgB,IAAI,CAAC,YAAY,KAAK,YAAY;AAClD,cAAc;AACd;AACA,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,IAAI,GAAG,IAAI,CAAC;AACxB,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,MAAM;AAClB,SAAS;AACT;AACA,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzC,cAAc,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACtC,cAAc,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,QAAQ,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AACxD;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAQ,OAAO,IAAI,IAAI,IAAI,EAAE;AAC7B,YAAY;AACZ,gBAAgB,IAAI,CAAC,QAAQ,KAAK,QAAQ;AAC1C,gBAAgB,IAAI,CAAC,YAAY,KAAK,YAAY;AAClD,cAAc;AACd,gBAAgB,IAAI,IAAI,KAAK,IAAI,EAAE;AACnC,oBAAoB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1C,iBAAiB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC/C,oBAAoB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,iBAAiB,MAAM;AACvB,oBAAoB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb;AACA,YAAY,IAAI,GAAG,IAAI,CAAC;AACxB,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7D,YAAY,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC;AACnE,SAAS;AACT;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AACrC,QAAQ,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;AAC1B,YAAY,OAAO,IAAI;AACvB,SAAS;AACT;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpD;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,OAAO,IAAI,IAAI,IAAI,EAAE;AAC7B;AACA,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,gBAAgB,IAAI,IAAI,KAAK,IAAI,EAAE;AACnC,oBAAoB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1C,iBAAiB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC/C,oBAAoB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,iBAAiB,MAAM;AACvB,oBAAoB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,iBAAiB;AACjB,aAAa,MAAM;AACnB,gBAAgB,IAAI,GAAG,IAAI,CAAC;AAC5B,aAAa;AACb;AACA;AACA,YAAY,kBAAkB;AAC9B,gBAAgB,YAAY;AAC5B,gBAAgB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;AACnD,aAAa,CAAC;AACd,YAAY,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;AACrD,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC3D,iBAAiB,CAAC,OAAO,GAAG,EAAE;AAC9B,oBAAoB;AACpB,wBAAwB,OAAO,OAAO,KAAK,WAAW;AACtD,wBAAwB,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;AAC3D,sBAAsB;AACtB,wBAAwB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,MAAM;AACnB,gBAAgB,IAAI,CAAC,YAAY,KAAK,SAAS;AAC/C,gBAAgB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,UAAU;AAC/D,cAAc;AACd,gBAAgB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACxD,aAAa;AACb;AACA;AACA,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;AACzC,gBAAgB,KAAK;AACrB,aAAa;AACb;AACA,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC/C,QAAQ,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7C;AACA,QAAQ,OAAO,CAAC,YAAY,CAAC,gBAAgB;AAC7C,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE;AAC5D,IAAI,KAAK,EAAE,WAAW;AACtB,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,QAAQ,EAAE,IAAI;AAClB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,IAAI,OAAO,MAAM,KAAK,WAAW;AACjC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW;AAC7C,EAAE;AACF,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC/E;;ACz1BA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,SAAS,WAAW,CAAC;AACtC;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;AAC1E,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;AAC1C,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,uDAAuD,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AAClI,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,CAAC;AACD,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD;AACA;AACA;AACA,SAAS,iBAAiB,GAAG;AAC7B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACxD,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC5C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AACD;AACA;AACA;AACA,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC;AACA,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE;AAC/C,IAAI,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AACjC,CAAC,CAAC,CAAC;AACH;AACA,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC5E,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;AACrE,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,KAAK,EAAE,aAAa;AAC5B,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;wBACA,MAAM,eAAe,CAAC;AACtB;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,KAAK;AACL,EAAC;AACD;AACA;AACA;AACA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B;AACA;AACA;AACA,SAAS,SAAS,CAAC,UAAU,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3C,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,2DAA2D,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9I,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,MAAM,CAAC,gBAAgB,CAACkP,iBAAe,CAAC,SAAS,EAAE;AACnD,IAAI,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAChC,IAAI,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC/B,CAAC,CAAC,CAAC;AACH,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AAC5E,IAAI,MAAM,CAAC,cAAc,CAACA,iBAAe,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE;AACzE,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,KAAK,EAAE,iBAAiB;AAChC,KAAK,CAAC,CAAC;AACP;;;;;;;;;;;;;;;;;AChHA;EACA,MAAM,YAAY,GAAGlP,aAAiB;AACtC,EAAA,MAAM,EAAE,sBAAsB,EAAE,aAAa,EAAE,GAAGC,kBAAwB,GAAA;EAC1E,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAIC,YAA2B,CAAC,YAAW;EACrF,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAIA,YAA2B,CAAC,gBAAe;EACjG,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAW;EAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,KAAI;AACjD;AACA,EAAA,MAAM,MAAM;IACV,OAAO,IAAI,KAAK,WAAW;AAC7B,QAAM,SAAS,MAAM,CAAC,CAAC,EAAE;AACzB;UACQ,OAAO,CAAC,YAAY,IAAI;SACzB;AACP,QAAM,SAAS,MAAM,CAAC,CAAC,EAAE;AACzB,UAAQ,OAAO,KAAK;UACb;AACP;AACA;AACA,EAAA,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;IAC5C,IAAI,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE;MACrG,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC;KAC5D;IACF;AACD,EAAA,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK;AAC1C,IAAE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;IACzF;AACD;AACA;EACA,MAAM,cAAc,SAAS,KAAK,CAAC;IACjC,WAAW,CAAC,MAAM,EAAE;MAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC1B,MAAM,IAAI,SAAS,CAAC,CAAC,mCAAmC,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC;OAC3E;MACD,IAAI,OAAO,GAAG,GAAE;AACpB,MAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAM,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAC;OACtC;MACD,KAAK,CAAC,OAAO,EAAC;AAClB,MAAI,IAAI,CAAC,IAAI,GAAG,iBAAgB;AAChC,MAAI,IAAI,CAAC,MAAM,GAAG,OAAM;KACrB;GACF;EACD,MAAiB,CAAA,OAAA,GAAA;AACjB,IAAE,cAAc;AAChB,IAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE;MACb,IAAI,MAAM,GAAG,MAAK;AACtB,MAAI,OAAO,UAAU,GAAG,IAAI,EAAE;QACxB,IAAI,MAAM,EAAE;AAClB,UAAQ,MAAM;SACP;QACD,MAAM,GAAG,KAAI;AACnB,QAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC;OAC3B;KACF;IACD,qBAAqB,EAAE,YAAY;AACrC,MAAI,IAAI,QAAO;AACf,MAAI,IAAI,OAAM;AACd;AACA;MACI,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;QACxC,OAAO,GAAG,IAAG;QACb,MAAM,GAAG,IAAG;AAClB,OAAK,EAAC;AACN,MAAI,OAAO;AACX,QAAM,OAAO;AACb,QAAM,OAAO;AACb,QAAM,MAAM;OACP;KACF;IACD,SAAS,CAAC,EAAE,EAAE;MACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;UACnB,IAAI,GAAG,EAAE;AACjB,YAAU,OAAO,MAAM,CAAC,GAAG,CAAC;WACnB;AACT,UAAQ,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC;AAC/B,SAAO,EAAC;AACR,OAAK,CAAC;KACH;AACH,IAAE,QAAQ,GAAG;MACT,OAAO,YAAY,EAAE;KACtB;AACH,IAAE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE;AAC1B;AACA,MAAI,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;AACvE,QAAM,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,GAAE;AACtC,QAAM,IAAI,IAAI,KAAK,GAAG,EAAE;AACxB,UAAQ,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,SAAO,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;AAC/B,UAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SACnC,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAClE,UAAQ,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,KAAK,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,GAAG,GAAE;UACnF,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAClC,SAAO,MAAM;AACb,UAAQ,OAAO,WAAW,CAAC,QAAQ,EAAE;SAC9B;AACP,OAAK,CAAC;KACH;IACD,OAAO,CAAC,KAAK,EAAE;AACjB;MACI,QAAQ,OAAO,KAAK;AACxB,QAAM,KAAK,QAAQ;AACnB,UAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,cAAY,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/B,aAAW,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACpE,cAAY,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;aACtB;WACF;AACT,UAAQ,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAM,KAAK,QAAQ;AACnB,UAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAU,OAAO,KAAK;WACb,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;AACzC,YAAU,OAAO,MAAM,CAAC,KAAK,CAAC;WACrB;AACT,UAAQ,OAAO,KAAK;AACpB,QAAM,KAAK,QAAQ;UACX,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,KAAK,SAAS,CAAC;AACrB,QAAM,KAAK,WAAW;AACtB,UAAQ,OAAO,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAM,KAAK,QAAQ;AACnB,UAAQ,OAAO,IAAI;OACd;KACF;AACH,IAAE,KAAK,EAAE;MACL,eAAe,CAAC,EAAE,EAAE;QAClB,OAAO,EAAE,YAAY,aAAa;OACnC;MACD,iBAAiB,CAAC,GAAG,EAAE;AAC3B,QAAM,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;OAC/B;KACF;AACH,IAAE,MAAM;AACR,IAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE;AACzB,MAAI,OAAO,EAAE;KACV;AACH,IAAE,gBAAgB;MACdC,YAAiB,CAAC,gBAAgB;AACtC,MAAI,SAAS,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE;AAChD,QAAM,IAAI,MAAM,KAAK,SAAS,EAAE;UACxB,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC;SAChE;AACP,QAAM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAC;AAC3C,QAAM,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAC;AAC5C,QAAM,IAAI,oBAAmB;AAC7B,QAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,UAAQ,cAAc,CAAC,MAAM,QAAQ,EAAE,EAAC;AACxC,SAAO,MAAM;AACb,UAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE;YACzC,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;YACV,CAAC,sBAAsB,GAAG,IAAI;AACxC,WAAS,EAAC;UACF,mBAAmB,GAAG,MAAM;AACpC,YAAU,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAC;YAC9C;SACF;AACP,QAAM,OAAO;UACL,SAAS,EAAE,IAAI;UACf,CAAC,aAAa,CAAC,GAAG;AAC1B,YAAU,IAAI,oBAAoB;aACvB,CAAC,oBAAoB,GAAG,mBAAmB,MAAM,IAAI,IAAI,oBAAoB,KAAK,SAAS;AACtG,gBAAc,SAAS;AACvB,gBAAc,oBAAoB,GAAE;WAC3B;SACF;OACF;AACL,IAAE,cAAc;MACZ,WAAW,CAAC,GAAG;AACnB,MAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC;AACA,QAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,UAAQ,OAAO,OAAO,CAAC,CAAC,CAAC;SAClB;AACP,QAAM,MAAM,EAAE,GAAG,IAAI,eAAe,GAAE;AACtC,QAAM,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,GAAE;AACpC,QAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAClC,UAAQ,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAC;AAC9C,UAAQ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE;YACtC,IAAI,EAAE,IAAI;AACpB,WAAS,EAAC;AACV,SAAO,EAAC;AACR,QAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB;AAChC,UAAQ,OAAO;AACf,UAAQ,MAAM;AACd,YAAU,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAC;WACxE;UACD;YACE,IAAI,EAAE,IAAI;WACX;UACF;QACD,OAAO,EAAE,CAAC,MAAM;OACjB;IACJ;EACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,EAAA;;;;;;;;;;;;;ACtM3E;CACA,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAGH,WAAiB,GAAA;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,qBAAoB;AACxE,CAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAC;AAC3C,CAAA,MAAM,MAAM,GAAG;AACf,GAAE,QAAQ;AACV,GAAE,UAAU;AACZ,GAAE,QAAQ;AACV,GAAE,QAAQ;AACV;AACA,GAAE,UAAU;AACZ,GAAE,QAAQ;AACV,GAAE,SAAS;AACX,GAAE,QAAQ;AACV,GAAE,QAAQ;GACT;CACD,MAAM,WAAW,GAAG,sBAAqB;CACzC,MAAM,kBAAkB,GAAG,mBAAkB;CAC7C,MAAM,KAAK,GAAG,GAAE;AAChB,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;GAC9B,IAAI,CAAC,KAAK,EAAE;AACd,KAAI,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC;IAChD;EACF;AACD;AACA;CACA,SAAS,qBAAqB,CAAC,GAAG,EAAE;GAClC,IAAI,GAAG,GAAG,GAAE;AACd,GAAE,IAAI,CAAC,GAAG,GAAG,CAAC,OAAM;AACpB,GAAE,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAC;GACpC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjC,KAAI,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAC;IACtC;AACH,GAAE,OAAO,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EAClC;AACD,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,GAAE,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACjC,KAAI,MAAM;AACV,OAAM,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;AAC/B;AACA,OAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,MAAM,CAAC,oCAAoC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;OACjH;AACL,KAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC;IACpB;AACH,GAAE,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAM;AAChE,GAAE,MAAM;AACR,KAAI,cAAc,KAAK,IAAI,CAAC,MAAM;AAClC,KAAI,CAAC,MAAM,EAAE,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,MAAM,CAAC,oCAAoC,EAAE,cAAc,CAAC,EAAE,CAAC;KACrH;AACH,GAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,KAAI,OAAO,GAAG;IACX;AACH,GAAE,OAAO,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;EAC5B;AACD,CAAA,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;GAC9B,IAAI,CAAC,IAAI,EAAE;KACT,IAAI,GAAG,MAAK;IACb;AACH,GAAE,MAAM,SAAS,SAAS,IAAI,CAAC;AAC/B,KAAI,WAAW,CAAC,GAAG,IAAI,EAAE;OACnB,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAC;MACvC;AACL,KAAI,QAAQ,GAAG;AACf,OAAM,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;MACjD;IACF;AACH,GAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE;AAC/C,KAAI,IAAI,EAAE;AACV,OAAM,KAAK,EAAE,IAAI,CAAC,IAAI;OAChB,QAAQ,EAAE,IAAI;OACd,UAAU,EAAE,KAAK;OACjB,YAAY,EAAE,IAAI;MACnB;AACL,KAAI,QAAQ,EAAE;AACd,OAAM,KAAK,GAAG;AACd,SAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD;OACD,QAAQ,EAAE,IAAI;OACd,UAAU,EAAE,KAAK;OACjB,YAAY,EAAE,IAAI;MACnB;AACL,IAAG,EAAC;AACJ,GAAE,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAI;AACjC,GAAE,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,KAAI;AAC1C,GAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAS;EACxB;CACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B;AACA;AACA,GAAE,MAAM,MAAM,GAAG,kBAAkB,GAAG,EAAE,CAAC,KAAI;AAC7C,GAAE,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE;KAChC,KAAK,EAAE,MAAM;AACjB,IAAG,EAAC;AACJ,GAAE,OAAO,EAAE;EACV;AACD,CAAA,SAAS,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE;GAClD,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,KAAK,UAAU,EAAE;KACzD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1C;AACA,OAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAC;AACxC,OAAM,OAAO,UAAU;MAClB;AACL,KAAI,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,EAAC;AAChF,KAAI,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,KAAI;AAC9B,KAAI,OAAO,GAAG;IACX;GACD,OAAO,UAAU,IAAI,UAAU;EAChC;CACD,MAAM,UAAU,SAAS,KAAK,CAAC;GAC7B,WAAW,CAAC,OAAO,GAAG,2BAA2B,EAAE,OAAO,GAAG,SAAS,EAAE;KACtE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;OACxD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;MACnE;AACL,KAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3B,KAAI,IAAI,CAAC,IAAI,GAAG,YAAW;AAC3B,KAAI,IAAI,CAAC,IAAI,GAAG,aAAY;IACzB;EACF;AACD,CAAA,CAAC,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAC;CAC/B,CAAC;AACD,GAAE,sBAAsB;AACxB,GAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK;KAC1B,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,EAAE,yBAAyB,EAAC;KAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAClC,OAAM,QAAQ,GAAG,CAAC,QAAQ,EAAC;MACtB;KACD,IAAI,GAAG,GAAG,OAAM;AACpB,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AACpC;AACA,OAAM,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAC;AACvB,MAAK,MAAM;OACL,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,EAAC;MACpE;KACD,GAAG,IAAI,WAAU;KACjB,MAAM,KAAK,GAAG,GAAE;KAChB,MAAM,SAAS,GAAG,GAAE;KACpB,MAAM,KAAK,GAAG,GAAE;AACpB,KAAI,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;OAC5B,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,EAAE,gDAAgD,EAAC;AACzF,OAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;SAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAC;QAChC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC1C,SAAQ,SAAS,CAAC,IAAI,CAAC,KAAK,EAAC;AAC7B,QAAO,MAAM;AACb,SAAQ,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,kDAAkD,EAAC;AACtF,SAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAC;QAClB;MACF;AACL;AACA;AACA;AACA,KAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;OACxB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAC;AACzC,OAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;SACd,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAC;AACnC,SAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAC;QACzB;MACF;AACL,KAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;OACpB,QAAQ,KAAK,CAAC,MAAM;AAC1B,SAAQ,KAAK,CAAC;WACJ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC;AACtC,WAAU,KAAK;AACf,SAAQ,KAAK,CAAC;AACd,WAAU,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC;AACzD,WAAU,KAAK;AACf,SAAQ,SAAS;AACjB,WAAU,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAE;AAClC,WAAU,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAC;UACrD;QACF;AACP,OAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;SAC5C,GAAG,IAAI,OAAM;QACd;MACF;AACL,KAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;OACxB,QAAQ,SAAS,CAAC,MAAM;AAC9B,SAAQ,KAAK,CAAC;WACJ,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC;AACjD,WAAU,KAAK;AACf,SAAQ,KAAK,CAAC;AACd,WAAU,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAC;AACpE,WAAU,KAAK;AACf,SAAQ,SAAS;AACjB,WAAU,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,GAAE;AACtC,WAAU,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAC;UAC5D;QACF;AACP,OAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;SACpB,GAAG,IAAI,OAAM;QACd;MACF;KACD,QAAQ,KAAK,CAAC,MAAM;AACxB,OAAM,KAAK,CAAC;AACZ,SAAQ,KAAK;AACb,OAAM,KAAK,CAAC;AACZ,SAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;WACvC,GAAG,IAAI,MAAK;UACb;SACD,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC;AAC5B,SAAQ,KAAK;AACb,OAAM,KAAK,CAAC;AACZ,SAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC;AAClD,SAAQ,KAAK;AACb,OAAM,SAAS;AACf,SAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAE;AAChC,SAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAC;QAChD;MACF;AACL,KAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,OAAM,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAC;MAC9B,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE;OACtD,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAC;AACjD,MAAK,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC3C,OAAM,IAAI,oBAAmB;OACvB;AACN,SAAQ,CAAC,mBAAmB,GAAG,MAAM,CAAC,WAAW,MAAM,IAAI;SACnD,mBAAmB,KAAK,SAAS;SACjC,mBAAmB,CAAC,IAAI;SACxB;SACA,GAAG,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC;AACrE,QAAO,MAAM;AACb,SAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE;WAChC,KAAK,EAAE,CAAC,CAAC;AACnB,UAAS,EAAC;AACV,SAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAC;QACjC;AACP,MAAK,MAAM;AACX,OAAM,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE;SAC9B,MAAM,EAAE,KAAK;AACrB,QAAO,EAAC;AACR,OAAM,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE;AACjC,SAAQ,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAC;QAC3C;AACP,OAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,EAAC;MACzD;AACL,KAAI,OAAO,GAAG;IACX;AACH,GAAE,SAAS;GACV;CACD,CAAC;AACD,GAAE,uBAAuB;GACvB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,KAAK;AAC1C,KAAI,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,EAAC;AAClC,KAAI,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;OAC1B,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAK;MAC5C;AACL,KAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,WAAU;AAC7D,KAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChE;AACH,GAAE,SAAS;GACV;CACD,CAAC;AACD,GAAE,0BAA0B;AAC5B,GAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;AAC1B,KAAI,IAAI,mBAAkB;AAC1B,KAAI,MAAM,IAAI;OACR,KAAK,KAAK,IAAI;OACd,KAAK,KAAK,SAAS;AACzB,OAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW,MAAM,IAAI;OACjD,kBAAkB,KAAK,SAAS;OAChC,kBAAkB,CAAC,IAAI;WACnB,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjD,WAAU,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,EAAC;AAChC,KAAI,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5F;AACH,GAAE,SAAS;GACV;CACD,CAAC;AACD,GAAE,kBAAkB;GAClB,CAAC,GAAG,IAAI,KAAK;KACX,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,EAAC;AACrE,KAAI,IAAI,IAAG;AACX,KAAI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAM;AAC3B,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAC;AAClF,KAAI,QAAQ,GAAG;AACf,OAAM,KAAK,CAAC;SACJ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC;AACxC,SAAQ,KAAK;AACb,OAAM,KAAK,CAAC;AACZ,SAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAC;AACxD,SAAQ,KAAK;OACP;SACE;AACR,WAAU,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAE;AACjC,WAAU,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAC;UACvD;AACT,SAAQ,KAAK;MACR;AACL,KAAI,OAAO,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC;IAClC;AACH,GAAE,SAAS;GACV;CACD,CAAC;AACD,GAAE,kBAAkB;AACpB,GAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK;AACzB,KAAI,MAAM,CAAC,KAAK,EAAE,0BAA0B,EAAC;AAC7C,KAAI,IAAI,SAAQ;AAChB,KAAI,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;OACxD,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;AACrD,MAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC1C,OAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAC;AAC9B,OAAM,IAAI,KAAK,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE;AACrD,SAAQ,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAC;QAC3C;OACD,QAAQ,IAAI,IAAG;AACrB,MAAK,MAAM;AACX,OAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAC;MAC1B;AACL,KAAI,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,8BAA8B,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC1F;AACH,GAAE,UAAU;GACX;AACD,CAAA,CAAC,CAAC,uBAAuB,EAAE,gCAAgC,EAAE,KAAK,EAAC;AACnE,CAAA,CAAC,CAAC,4BAA4B,EAAE,kCAAkC,EAAE,KAAK,EAAC;AAC1E,CAAA,CAAC,CAAC,6BAA6B,EAAE,4CAA4C,EAAE,KAAK,EAAC;AACrF,CAAA,CAAC,CAAC,wBAAwB,EAAE,2BAA2B,EAAE,KAAK,EAAC;AAC/D,CAAA,CAAC,CAAC,sBAAsB,EAAE,6CAA6C,EAAE,KAAK,EAAC;AAC/E,CAAA,CAAC,CAAC,wBAAwB,EAAE,qCAAqC,EAAE,SAAS,EAAC;AAC7E,CAAA,CAAC,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,KAAK,EAAC;AACzD,CAAA,CAAC,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,KAAK,EAAC;AAChE,CAAA,CAAC,CAAC,oCAAoC,EAAE,kCAAkC,EAAE,KAAK,EAAC;AAClF,CAAA,CAAC,CAAC,4BAA4B,EAAE,iBAAiB,EAAE,KAAK,EAAC;AACzD,CAAA,CAAC,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,SAAS,EAAC;AAC5D,CAAA,MAAc,GAAG;AACjB,GAAE,UAAU;AACZ,GAAE,kBAAkB,EAAE,eAAe,CAAC,kBAAkB,CAAC;AACzD,GAAE,eAAe;AACjB,GAAE,KAAK;AACP,GAAA;;;;;;;;;;;;ACjVA;CACA,MAAM;AACN,GAAE,YAAY;AACd,GAAE,sBAAsB;AACxB,GAAE,kBAAkB;AACpB,GAAE,iBAAiB;AACnB,GAAE,eAAe;AACjB,GAAE,WAAW;AACb,GAAE,sBAAsB;AACxB,GAAE,sBAAsB;AACxB,GAAE,cAAc;AAChB,GAAE,6BAA6B;AAC/B,GAAE,mBAAmB;AACrB,GAAE,MAAM;AACR,GAAE,0BAA0B;AAC5B,GAAE,mBAAmB;AACrB,EAAC,GAAGA,kBAA8B,GAAA;CAClC,MAAM;AACN,GAAE,eAAe;AACjB,GAAE,KAAK,EAAE,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE;AACnH,EAAC,GAAGC,aAAyB,GAAA;AAC7B,CAAA,MAAM,EAAE,iBAAiB,EAAE,GAAGC,WAAuB,GAAA;CACrD,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAGA,WAAA,EAAuB,CAAC,MAAK;CAC5E,MAAM,OAAO,GAAG,GAAE;AAClB;AACA;AACA;AACA;AACA;CACA,SAAS,OAAO,CAAC,KAAK,EAAE;AACxB,GAAE,OAAO,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;EAC7B;AACD;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;EAC7B;CACD,MAAM,QAAQ,GAAG,WAAU;CAC3B,MAAM,QAAQ,GAAG,uDAAsD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE;AACzC,GAAE,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;KAChC,KAAK,GAAG,IAAG;IACZ;AACH,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC7B,IAAI,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;OACjD,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;MACvD;AACL,KAAI,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAC;IACjC;AACH,GAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAC;AAC7B,GAAE,OAAO,KAAK;EACb;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,EAAE,GAAG,GAAG,sBAAsB,KAAK;AACrH,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;AACtF,GAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;GAClF,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACnG,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,KAAK;AAC5F;AACA,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC7B,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtD;AACH,GAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;KAC3B,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;IACtD;GACD,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;AAClC,KAAI,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;IAClE;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,KAAK;AAC1E,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC7B,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtD;AACH,GAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;KAC3B,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC;IACtD;AACH,GAAE,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAC;AAC9B;GACE,MAAM,GAAG,GAAG,WAAU;GACtB,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE;AAClC,KAAI,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;IAClE;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;AACrC,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;EACrF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,EAAE;AAC3D,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;GACpF;AACF,KAAI,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG;AAC/B,MAAK,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC;AAChC,MAAK,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC;KACpD;KACA,MAAM,IAAI,gBAAgB;AAC9B,OAAM,IAAI;AACV,OAAM,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACrH,OAAM,KAAK;MACN;IACF;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK;GAC5D,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;KACzC,MAAM,OAAO,GAAG,kBAAkB;OAChC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,OAAM,IAAI;OACL;AACL,KAAI,MAAM,MAAM,GAAG,kBAAkB,GAAG,QAAO;KAC3C,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;IACrD;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;AACtC,GAAE,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;EACvF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,4BAA4B,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE;AAClE,GAAE,OAAO,OAAO,IAAI,IAAI,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;EACrG;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,KAAK;GACtE,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAC;GAC7E,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAC;GACnF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAC;GACzE;AACF,KAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI;AAChC,MAAK,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACxC,MAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,CAAC,aAAa,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;KAC9E;KACA,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACtD;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AAC5D,GAAE,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;KAC7E,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;IAC5D;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,KAAK;AACtE,GAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;KACxB,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;IACrD;AACH,GAAE,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;KAC5B,MAAM,MAAM,GAAG,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAAC;KACjD,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;IACrD;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC1C,GAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAC;AAC5B,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,KAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;IAC1C;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC3C,GAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAC;AAC5B,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,KAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC;IAC3C;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC/C,GAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAC;AAC5B,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,KAAI,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAC;AAC3B,KAAI,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;AACvC,KAAI,IAAI,MAAM,IAAI,IAAI,EAAE;OAClB,MAAM,IAAI,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC;MACnE;AACL,KAAI,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAC;IACzC;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,EAAE;AACrD,GAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAC;AAC9B,GAAE,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;KACjC,IAAI,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,EAAE;AACnE,OAAM,MAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,yCAAyC,CAAC;MACjF;AACL,KAAI,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC;IACrC;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,MAAM,EAAE,IAAI,GAAG,QAAQ,KAAK;AACpE,GAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAClC,KAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IACnF;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1C,GAAE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,EAAC;AACxD,GAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAM;GAC1B,IAAI,kBAAkB,KAAK,KAAK,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AACxD,KAAI,MAAM,IAAI,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAAC;IACjG;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE;GAC3D;KACE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;AACzD,MAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxE,KAAI,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;KACrB,IAAI,GAAG,MAAM;AACjB,MAAK,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;KAC1B;KACA,MAAM,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;IACrD;GACD,OAAO,IAAI,GAAG,CAAC;EAChB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,mBAAmB,GAAG,eAAe,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK;GAC5D,IAAI,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE;KACrG,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC;IAC5D;AACH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,gBAAgB,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AAC1D,GAAE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;AAC1F,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;GAC7D,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;AACpH,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AAC3D,GAAE,IAAI,KAAK,KAAK,SAAS,EAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC;AACnF,EAAC,EAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;GACzC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;KACzC,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACrF;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,MAAM,eAAe,GAAG,wDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC/C,GAAE,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE;KAChF,MAAM,IAAI,qBAAqB;AACnC,OAAM,IAAI;AACV,OAAM,KAAK;AACX,OAAM,6EAA6E;MAC9E;IACF;EACF;AACD;AACA;AACA;AACA;AACA;CACA,SAAS,uBAAuB,CAAC,KAAK,EAAE;AACxC,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,KAAI,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAC;AAC5C,KAAI,OAAO,KAAK;AAChB,IAAG,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAClC,KAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAM;KAChC,IAAI,MAAM,GAAG,GAAE;AACnB,KAAI,IAAI,WAAW,KAAK,CAAC,EAAE;AAC3B,OAAM,OAAO,MAAM;MACd;AACL,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,EAAC;AAC3B,OAAM,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAC;OACvC,MAAM,IAAI,KAAI;AACpB,OAAM,IAAI,CAAC,KAAK,WAAW,GAAG,CAAC,EAAE;SACzB,MAAM,IAAI,KAAI;QACf;MACF;AACL,KAAI,OAAO,MAAM;IACd;GACD,MAAM,IAAI,qBAAqB;AACjC,KAAI,OAAO;AACX,KAAI,KAAK;AACT,KAAI,6EAA6E;IAC9E;EACF;AACD,CAAA,UAAc,GAAG;AACjB,GAAE,OAAO;AACT,GAAE,QAAQ;AACV,GAAE,aAAa;AACf,GAAE,aAAa;AACf,GAAE,mBAAmB;AACrB,GAAE,oBAAoB;AACtB,GAAE,wBAAwB;AAC1B,GAAE,eAAe;AACjB,GAAE,cAAc;AAChB,GAAE,kBAAkB;AACpB,GAAE,gBAAgB;AAClB,GAAE,gBAAgB;AAClB,GAAE,aAAa;AACf,GAAE,eAAe;AACjB,GAAE,cAAc;AAChB,GAAE,cAAc;AAChB,GAAE,aAAa;AACf,GAAE,qBAAqB;AACvB,GAAE,YAAY;AACd,GAAE,kBAAkB;AACpB,GAAE,cAAc;AAChB,GAAE,cAAc;AAChB,GAAE,iBAAiB;AACnB,GAAE,aAAa;AACf,GAAE,mBAAmB;AACrB,GAAE,uBAAuB;AACzB,GAAA;;;;;;;;;;;;ACjhBA;AACA,CAAcgR,SAAA,GAAGF,cAAM,CAAC,OAAO,CAAA;;;;;;;;;;ACA/B;CACA,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAGhR,kBAAiC,GAAA;AAC5F;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,YAAY,GAAG,SAAS,CAAC,yBAAyB,EAAC;AACzD,CAAA,MAAM,UAAU,GAAG,SAAS,CAAC,uBAAuB,EAAC;AACrD,CAAA,MAAM,WAAW,GAAG,SAAS,CAAC,wBAAwB,EAAC;AACvD,CAAA,MAAM,WAAW,GAAG,SAAS,CAAC,wBAAwB,EAAC;AACvD,CAAA,MAAM,YAAY,GAAG,SAAS,CAAC,yBAAyB,EAAC;AACzD,CAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,kCAAkC,EAAC;AACtE,CAAA,MAAM,wBAAwB,GAAG,SAAS,CAAC,0CAA0C,EAAC;AACtF,CAAA,SAAS,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE;AACnD,GAAE,IAAI,oBAAmB;AACzB,GAAE,OAAO,CAAC;AACV;AACA,OAAM,GAAG;AACT,OAAM,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU;AACpC,OAAM,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;AAClC,QAAO,CAAC,MAAM,KAAK,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QACjF,CAAC,GAAG,CAAC,cAAc;AAC1B,SAAQ,CAAC,CAAC,mBAAmB,GAAG,GAAG,CAAC,cAAc,MAAM,IAAI,IAAI,mBAAmB,KAAK,SAAS;AACjG,aAAY,SAAS;AACrB,aAAY,mBAAmB,CAAC,QAAQ,MAAM,KAAK,CAAC;AACpD;QACO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC;AACjD;IACG;EACF;AACD;CACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,GAAE,IAAI,oBAAmB;AACzB,GAAE,OAAO,CAAC;AACV;AACA,OAAM,GAAG;AACT,OAAM,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU;AACrC,OAAM,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;QAC3B,CAAC,GAAG,CAAC,cAAc;AAC1B,SAAQ,CAAC,CAAC,mBAAmB,GAAG,GAAG,CAAC,cAAc,MAAM,IAAI,IAAI,mBAAmB,KAAK,SAAS;AACjG,aAAY,SAAS;AACrB,aAAY,mBAAmB,CAAC,QAAQ,MAAM,KAAK,CAAC;AACpD;IACG;EACF;AACD;CACA,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACjC,GAAE,OAAO,CAAC;AACV,KAAI,GAAG;AACP,KAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU;KAC9B,GAAG,CAAC,cAAc;AACtB,KAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;AAChC,KAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU;IAChC;EACF;CACD,SAAS,YAAY,CAAC,GAAG,EAAE;GACzB;AACF,KAAI,GAAG;MACF,GAAG,CAAC,cAAc;OACjB,GAAG,CAAC,cAAc;AACxB,QAAO,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC;AACvE,QAAO,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACpE;EACF;CACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,GAAE,OAAO,CAAC;AACV,KAAI,GAAG;AACP,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtB,KAAI,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU;AACzC,KAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU;AACvC,KAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU;IACjC;EACF;CACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;GAC7B,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,CAAC;EAC/G;CACD,SAAS,iBAAiB,CAAC,GAAG,EAAE;GAC9B,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;EAC7G;CACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,GAAE,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC;EAChF;AACD,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,GAAE,IAAI,GAAG,IAAI,IAAI,EAAE,OAAO,KAAK;AAC/B,GAAE,IAAI,OAAO,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,UAAU;AAC7E,GAAE,IAAI,OAAO,KAAK,KAAK,EAAE,OAAO,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,UAAU;AACzE,GAAE,OAAO,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,UAAU;EACnG;CACD,SAAS,WAAW,CAAC,MAAM,EAAE;GAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;AACxC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,KAAK,GAAG,MAAM,IAAI,OAAM;GAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;EAClH;AACD;AACA;CACA,SAAS,eAAe,CAAC,MAAM,EAAE;GAC/B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;GAC9C,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,OAAO,IAAI;AAChD,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK;GAC3E,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;GAC1G,OAAO,MAAM,CAAC,KAAK;EACpB;AACD;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;GAC1C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;GAC9C,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE,OAAO,IAAI;AACnD,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK;GAC3E,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;GAC7G,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,KAAK,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;EACjG;AACD;AACA;CACA,SAAS,eAAe,CAAC,MAAM,EAAE;GAC/B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;GAC9C,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,OAAO,IAAI;AAChD,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;GACpC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK;GAC3C,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;GAC1G,OAAO,MAAM,CAAC,KAAK;EACpB;AACD;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;GAC1C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;AAChD,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,KAAK;GAC3E,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;GAC/G,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;EACnG;CACD,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,GAAE,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC;GACrE,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;AAC/G,GAAE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACvC,GAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;EACtF;CACD,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,GAAE,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,OAAO,MAAM,CAAC,WAAW,CAAC;GACrE,IAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,OAAO,IAAI;AAC/G,GAAE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;AACvC,GAAE,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;EACnF;AACD,CAAA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AAClC,GAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC3B,KAAI,OAAO,IAAI;IACZ;GACD,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACzG,KAAI,OAAO,KAAK;IACb;GACD,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACzG,KAAI,OAAO,KAAK;IACb;AACH,GAAE,OAAO,IAAI;EACZ;CACD,SAAS,iBAAiB,CAAC,MAAM,EAAE;GACjC,IAAI,qBAAqB,EAAE,uBAAsB;AACnD,GAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,IAAI,MAAM,CAAC,eAAe,EAAE;KAC1B,OAAO,MAAM,CAAC,eAAe;IAC9B;GACD,OAAO,CAAC,qBAAqB;KAC3B,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AACrG,SAAQ,SAAS;SACT,sBAAsB,CAAC,OAAO,MAAM,IAAI,IAAI,qBAAqB,KAAK,SAAS;AACvF,OAAM,qBAAqB;AAC3B,OAAM,IAAI;EACT;CACD,SAAS,iBAAiB,CAAC,MAAM,EAAE;GACjC,IAAI,qBAAqB,EAAE,uBAAsB;AACnD,GAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,IAAI,MAAM,CAAC,eAAe,EAAE;KAC1B,OAAO,MAAM,CAAC,eAAe;IAC9B;GACD,OAAO,CAAC,qBAAqB;KAC3B,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AACrG,SAAQ,SAAS;SACT,sBAAsB,CAAC,OAAO,MAAM,IAAI,IAAI,qBAAqB,KAAK,SAAS;AACvF,OAAM,qBAAqB;AAC3B,OAAM,IAAI;EACT;CACD,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,GAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;KACtC,OAAO,MAAM,CAAC,MAAM;IACrB;AACH,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;GACpC;AACF,KAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS;AAC9F,KAAI,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS;KAC1F;KACA;AACJ,OAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM;AAC1E,QAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;MACtE;IACF;AACH,GAAE,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;KACpE,OAAO,MAAM,CAAC,OAAO;IACtB;AACH,GAAE,OAAO,IAAI;EACZ;CACD,SAAS,iBAAiB,CAAC,MAAM,EAAE;GACjC;AACF,KAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;AACvC,KAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,SAAS;AACjD,KAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,SAAS;AAClD,KAAI,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS;IAC5C;EACF;CACD,SAAS,gBAAgB,CAAC,MAAM,EAAE;GAChC,OAAO,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC;EACzE;CACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,GAAE,IAAI,YAAW;GACf;AACF,KAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS;AAC1C,KAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS;AACvC,KAAI,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,gBAAgB;AAChH,OAAM,SAAS;IACZ;EACF;CACD,SAAS,aAAa,CAAC,MAAM,EAAE;GAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI;AACxC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,KAAK,GAAG,MAAM,IAAI,OAAM;GAC9B;KACE,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;IACpH;EACF;CACD,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,GAAE,IAAI,qBAAoB;AAC1B,GAAE,OAAO,CAAC;AACV,KAAI,MAAM;AACV,MAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,oBAAoB,KAAK,SAAS;AACjG,SAAQ,oBAAoB;AAC5B,SAAQ,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC;IACtD;EACF;CACD,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,IAAI,IAAI;AACV,KAAI,KAAK;AACT,KAAI,KAAK;AACT,KAAI,KAAK;AACT,KAAI,KAAK;AACT,KAAI,kBAAkB;AACtB,KAAI,sBAAsB;AAC1B,KAAI,sBAAsB;AAC1B,KAAI,sBAAsB;AAC1B,KAAI,uBAAsB;AAC1B,GAAE,OAAO,CAAC;AACV,KAAI,MAAM;AACV,MAAK,CAAC,IAAI;AACV,OAAM,CAAC,KAAK;AACZ,SAAQ,CAAC,KAAK;AACd,WAAU,CAAC,KAAK;AAChB,aAAY,CAAC,KAAK;AAClB,eAAc,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,kBAAkB,KAAK,SAAS;AACpG,mBAAkB,kBAAkB;mBAClB,MAAM,CAAC,eAAe,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS;AACzE,iBAAgB,KAAK;iBACL,MAAM,CAAC,eAAe,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS;AACvE,eAAc,KAAK;eACL,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AAC/G,eAAc,SAAS;eACT,sBAAsB,CAAC,YAAY,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS;AAClF,aAAY,KAAK;aACL,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AAC7G,aAAY,SAAS;aACT,sBAAsB,CAAC,YAAY,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS;AAChF,WAAU,KAAK;WACL,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AAC3G,WAAU,SAAS;WACT,sBAAsB,CAAC,OAAO,MAAM,IAAI,IAAI,IAAI,KAAK,SAAS;AACxE,SAAQ,IAAI;SACJ,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,MAAM,IAAI,IAAI,sBAAsB,KAAK,SAAS;AACzG,SAAQ,SAAS;SACT,sBAAsB,CAAC,OAAO,CAAC;IACpC;EACF;AACD,CAAA,KAAc,GAAG;AACjB,GAAE,WAAW;AACb,GAAE,YAAY;AACd,GAAE,WAAW;AACb,GAAE,YAAY;AACd,GAAE,SAAS;AACX,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,WAAW;AACb,GAAE,gBAAgB;AAClB,GAAE,wBAAwB;AAC1B,GAAE,WAAW;AACb,GAAE,QAAQ;AACV,GAAE,kBAAkB;AACpB,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,gBAAgB;AAClB,GAAE,eAAe;AACjB,GAAE,kBAAkB;AACpB,GAAE,iBAAiB;AACnB,GAAE,YAAY;AACd,GAAE,WAAW;AACb,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,gBAAgB;AAClB,GAAE,eAAe;AACjB,GAAE,kBAAkB;AACpB,GAAE,iBAAiB;AACnB,GAAE,eAAe;AACjB,GAAE,gBAAgB;AAClB,GAAE,aAAa;AACf,GAAE,iBAAiB;AACnB,GAAA;;;;;;;;;;;CCtUA,MAAM,OAAO,GAAGA,cAAmB,EAAA;AACnC;AACA;AACA;AACA;AACA;EAEA,CAAA,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAGC,aAA4B,GAAA;AAC1D,CAAA,MAAM,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,GAAG,MAAK;AAClE,CAAA,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAGC,WAA0B,GAAA;CACzD,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,GAAGC,iBAAwB,GAAA;CAC3G,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,GAAGa,kBAAiC,GAAA;CAC1F,MAAM;AACN,GAAE,QAAQ;AACV,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,gBAAgB;AAClB,GAAE,kBAAkB;AACpB,GAAE,iBAAiB;AACnB,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,gBAAgB;AAClB,GAAE,kBAAkB;AACpB,GAAE,iBAAiB;AACnB,GAAE,YAAY;GACZ,aAAa,EAAE,cAAc;AAC/B,GAAE,gBAAgB;AAClB,EAAC,GAAGc,YAAkB,GAAA;AACtB,CAAA,IAAI,iBAAgB;CACpB,SAAS,SAAS,CAAC,MAAM,EAAE;GACzB,OAAO,MAAM,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;EAC9D;CACD,MAAM,GAAG,GAAG,MAAM,GAAE;AACpB,CAAA,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;GACtC,IAAI,iBAAiB,EAAE,kBAAiB;AAC1C,GAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;KAC1B,QAAQ,GAAG,QAAO;KAClB,OAAO,GAAG,aAAY;AAC1B,IAAG,MAAM,IAAI,OAAO,IAAI,IAAI,EAAE;KAC1B,OAAO,GAAG,aAAY;AAC1B,IAAG,MAAM;AACT,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAC;AACxC,GAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;AACvD,GAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAC;GACzB,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;KACxD,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IACzC;AACH,GAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAI,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjG;AACH,GAAE,MAAM,QAAQ;KACZ,CAAC,iBAAiB,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,iBAAiB,KAAK,SAAS;AACtF,SAAQ,iBAAiB;SACjB,oBAAoB,CAAC,MAAM,EAAC;AACpC,GAAE,MAAM,QAAQ;KACZ,CAAC,iBAAiB,GAAG,OAAO,CAAC,QAAQ,MAAM,IAAI,IAAI,iBAAiB,KAAK,SAAS;AACtF,SAAQ,iBAAiB;SACjB,oBAAoB,CAAC,MAAM,EAAC;AACpC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACtC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;GACpC,MAAM,cAAc,GAAG,MAAM;AAC/B,KAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC1B,OAAM,QAAQ,GAAE;MACX;KACF;AACH;AACA;AACA;AACA;AACA,GAAE,IAAI,aAAa;AACnB,KAAI,cAAc,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,SAAQ;GAClH,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAC;GACxD,MAAM,QAAQ,GAAG,MAAM;KACrB,gBAAgB,GAAG,KAAI;AAC3B;AACA;AACA;AACA,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;OACpB,aAAa,GAAG,MAAK;MACtB;KACD,IAAI,aAAa,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE;AACzD,OAAM,MAAM;MACP;AACL,KAAI,IAAI,CAAC,QAAQ,IAAI,gBAAgB,EAAE;AACvC,OAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAC;MACtB;KACF;GACD,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAC;GACxD,MAAM,KAAK,GAAG,MAAM;KAClB,gBAAgB,GAAG,KAAI;AAC3B;AACA;AACA;AACA,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;OACpB,aAAa,GAAG,MAAK;MACtB;KACD,IAAI,aAAa,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE;AACzD,OAAM,MAAM;MACP;AACL,KAAI,IAAI,CAAC,QAAQ,IAAI,gBAAgB,EAAE;AACvC,OAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAC;MACtB;KACF;AACH,GAAE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;AAC3B,KAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAC;KAC3B;AACH,GAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAC;GAC7B,MAAM,OAAO,GAAG,MAAM;KACpB,MAAM,GAAG,KAAI;KACb,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAC;AAC1E,KAAI,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;OAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;MACtC;AACL,KAAI,IAAI,QAAQ,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC7E,OAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,0BAA0B,EAAE,CAAC;MACvG;AACL,KAAI,IAAI,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AACvC,OAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,0BAA0B,EAAE,CAAC;MACvG;AACL,KAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAC;KACtB;GACD,MAAM,QAAQ,GAAG,MAAM;KACrB,MAAM,GAAG,KAAI;KACb,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAC;AAC1E,KAAI,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;OAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;MACtC;AACL,KAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAC;KACtB;GACD,MAAM,SAAS,GAAG,MAAM;KACtB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAC;KAClC;AACH,GAAE,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;AACzB,KAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAC;KAC/B,IAAI,CAAC,aAAa,EAAE;AACxB,OAAM,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;MAC5B;AACL,KAAI,IAAI,MAAM,CAAC,GAAG,EAAE;AACpB,OAAM,SAAS,GAAE;AACjB,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAC;MAChC;AACL,IAAG,MAAM,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE;AAClC;AACA,KAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAC;AACpC,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAC;IACnC;AACH;AACA;GACE,IAAI,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;AAC7D,KAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAC;IAC9B;AACH,GAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAC;AACzB,GAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAC;AAC/B,GAAE,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AAC/B,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;IAC5B;AACH,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;GAC3B,IAAI,MAAM,EAAE;AACd,KAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAC;AAC7B,IAAG,MAAM;KACL,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY;MAC9D,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;KAChE;KACA,IAAI,CAAC,aAAa,EAAE;AACxB,OAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAC;MAC3B;AACL,IAAG,MAAM;AACT,KAAI,CAAC,QAAQ;AACb,MAAK,CAAC,aAAa,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;MACrC,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;KAClD;AACJ,KAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAC;AAC9B,IAAG,MAAM;AACT,KAAI,CAAC,QAAQ;AACb,MAAK,CAAC,aAAa,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;MACrC,gBAAgB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;KAClD;AACJ,KAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAC;IAC3B,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE;AACrD,KAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAC;IAC3B;GACD,MAAM,OAAO,GAAG,MAAM;KACpB,QAAQ,GAAG,IAAG;AAClB,KAAI,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAC;AAC7C,KAAI,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAC;AAC/C,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3C,KAAI,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAC;AAC/C,KAAI,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAC;AACjE,KAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,EAAC;AAChD,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,EAAC;AAClD,KAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAC;AAC7C,KAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAC;AACvC,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3C,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;KACxC;AACH,GAAE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;KAC7B,MAAM,KAAK,GAAG,MAAM;AACxB;OACM,MAAM,WAAW,GAAG,SAAQ;AAClC,OAAM,OAAO,GAAE;OACT,WAAW,CAAC,IAAI;AACtB,SAAQ,MAAM;AACd,SAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;AAClC,WAAU,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;AACtC,UAAS,CAAC;SACH;OACF;AACL,KAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;AAChC,OAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC;AAC7B,MAAK,MAAM;AACX,OAAM,gBAAgB,GAAG,gBAAgB,IAAI5B,WAAA,EAA0B,CAAC,iBAAgB;OAClF,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAC;OAC1D,MAAM,gBAAgB,GAAG,SAAQ;AACvC,OAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK;AACnC,SAAQ,UAAU,CAAC,aAAa,CAAC,GAAE;AACnC,SAAQ,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAC;AAC5C,QAAO,EAAC;MACH;IACF;AACH,GAAE,OAAO,OAAO;EACf;AACD,CAAA,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;GACzC,IAAI,SAAS,GAAG,MAAK;GACrB,IAAI,KAAK,GAAG,IAAG;AACjB,GAAE,IAAI,OAAO,CAAC,MAAM,EAAE;KAClB,KAAK,GAAG,MAAM;OACZ,SAAS,GAAG,KAAI;OAChB,QAAQ,CAAC,IAAI;AACnB,SAAQ,MAAM;AACd,SAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;AAClC,WAAU,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;AACtC,UAAS,CAAC;SACH;OACF;AACL,KAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;AAChC,OAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC;AAC7B,MAAK,MAAM;AACX,OAAM,gBAAgB,GAAG,gBAAgB,IAAIA,WAAA,EAA0B,CAAC,iBAAgB;OAClF,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAC;OAC1D,MAAM,gBAAgB,GAAG,SAAQ;AACvC,OAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK;AACnC,SAAQ,UAAU,CAAC,aAAa,CAAC,GAAE;AACnC,SAAQ,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAC;AAC5C,QAAO,EAAC;MACH;IACF;AACH,GAAE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,KAAK;KAC9B,IAAI,CAAC,SAAS,EAAE;AACpB,OAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAC;MACrD;KACF;AACH,GAAE,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAC;AAChF,GAAE,OAAO,GAAG;EACX;AACD,CAAA,SAAS,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,GAAE,IAAI,MAAK;GACT,IAAI,WAAW,GAAG,MAAK;AACzB,GAAE,IAAI,IAAI,KAAK,IAAI,EAAE;KACjB,IAAI,GAAG,aAAY;IACpB;AACH,GAAE,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;AACvE,KAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAC;AAC5C,KAAI,WAAW,GAAG,IAAI,CAAC,QAAO;IAC3B;GACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;KACtC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK;OACzC,IAAI,WAAW,EAAE;AACvB,SAAQ,OAAO,GAAE;QACV;OACD,IAAI,GAAG,EAAE;SACP,MAAM,CAAC,GAAG,EAAC;AACnB,QAAO,MAAM;AACb,SAAQ,OAAO,GAAE;QACV;AACP,MAAK,EAAC;AACN,IAAG,CAAC;EACH;AACD,CAAAiR,WAAA,CAAA,OAAc,GAAG,IAAG;AACpB,CAAAA,WAAA,CAAA,OAAA,CAAA,QAAuB,GAAG,SAAA;;;;;;;;;;AC1R1B;AACA;AACA;CACA,MAAM,OAAO,GAAGnR,cAAmB,GAAA;AACnC;AACA;AACA;CACA,MAAM;AACN,GAAE,kBAAkB;AACpB,GAAE,KAAK,EAAE,EAAE,qBAAqB,EAAE;AAClC,GAAE,UAAU;AACZ,EAAC,GAAGC,aAA4B,GAAA;AAChC,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,kBAAiC,GAAA;CACpD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,GAAGC,YAAkB,GAAA;AACrF,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAC;AACnC,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,EAAC;AACvC,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;GAC7B,IAAI,GAAG,EAAE;AACX;KACI,GAAG,CAAC,MAAK;AACb;AACA,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACzB,OAAM,CAAC,CAAC,OAAO,GAAG,IAAG;MAChB;AACL,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACzB,OAAM,CAAC,CAAC,OAAO,GAAG,IAAG;MAChB;IACF;EACF;AACD;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE;AAC1B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AAC/B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AAC/B;AACA,GAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAC;GAChB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AACxG,KAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAClC,OAAM,EAAE,GAAE;MACL;AACL,KAAI,OAAO,IAAI;IACZ;AACH;AACA;AACA;AACA,GAAE,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAC;GACrB,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,SAAS,GAAG,KAAI;IACnB;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,SAAS,GAAG,KAAI;IACnB;AACH;AACA;AACA,GAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;KAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;AACtC,OAAM,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAC;AACrD,MAAK,EAAC;AACN,IAAG,MAAM;AACT,KAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAC;IACxB;AACH,GAAE,OAAO,IAAI;EACZ;AACD,CAAA,SAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;GAC/B,IAAI,MAAM,GAAG,MAAK;AACpB,GAAE,SAAS,SAAS,CAAC,GAAG,EAAE;KACtB,IAAI,MAAM,EAAE;AAChB,OAAM,MAAM;MACP;KACD,MAAM,GAAG,KAAI;AACjB,KAAI,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AACjC,KAAI,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AACjC,KAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAC;KACrB,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,MAAM,GAAG,KAAI;MAChB;KACD,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,MAAM,GAAG,KAAI;MAChB;AACL,KAAI,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;OAC5B,EAAE,CAAC,GAAG,EAAC;MACR;KACD,IAAI,GAAG,EAAE;OACP,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAC;AACnD,MAAK,MAAM;AACX,OAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAC;MACpC;IACF;AACH,GAAE,IAAI;KACF,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,SAAS,EAAC;IACtC,CAAC,OAAO,GAAG,EAAE;KACZ,SAAS,CAAC,GAAG,EAAC;IACf;EACF;AACD,CAAA,SAAS,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE;AACrC,GAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAC;GACtB,WAAW,CAAC,IAAI,EAAC;EAClB;CACD,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AAC/B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;GAC7B,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,YAAY,GAAG,KAAI;IACtB;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,YAAY,GAAG,KAAI;IACtB;GACD,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AACxG,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC;IACnB;EACF;AACD,CAAA,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;AAChC,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AAC/B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;GAC7B,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE;AAC9G,KAAI,MAAM;IACP;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,YAAY,GAAG,KAAI;IACtB;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,YAAY,GAAG,KAAI;IACtB;AACH,GAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAC;EACxB;AACD,CAAA,SAAS,SAAS,GAAG;AACrB,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AAC/B,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;GAC7B,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,WAAW,GAAG,KAAI;AACxB,KAAI,CAAC,CAAC,MAAM,GAAG,MAAK;AACpB,KAAI,CAAC,CAAC,YAAY,GAAG,MAAK;AAC1B,KAAI,CAAC,CAAC,SAAS,GAAG,MAAK;AACvB,KAAI,CAAC,CAAC,OAAO,GAAG,KAAI;AACpB,KAAI,CAAC,CAAC,YAAY,GAAG,MAAK;AAC1B,KAAI,CAAC,CAAC,OAAO,GAAG,MAAK;KACjB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAK;KAC9B,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAK;IACpC;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,WAAW,GAAG,KAAI;AACxB,KAAI,CAAC,CAAC,SAAS,GAAG,MAAK;AACvB,KAAI,CAAC,CAAC,MAAM,GAAG,MAAK;AACpB,KAAI,CAAC,CAAC,YAAY,GAAG,MAAK;AAC1B,KAAI,CAAC,CAAC,OAAO,GAAG,KAAI;AACpB,KAAI,CAAC,CAAC,YAAY,GAAG,MAAK;AAC1B,KAAI,CAAC,CAAC,WAAW,GAAG,MAAK;AACzB,KAAI,CAAC,CAAC,WAAW,GAAG,MAAK;KACrB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAK;KAC9B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAK;KAC/B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAK;IAClC;EACF;AACD,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;AACjC,GAAE,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;GAC/B,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AACxG,KAAI,OAAO,IAAI;IACZ;GACD,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC;AAC1G,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAC;QAChB,IAAI,GAAG,EAAE;AAChB;KACI,GAAG,CAAC,MAAK;AACb;AACA,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACzB,OAAM,CAAC,CAAC,OAAO,GAAG,IAAG;MAChB;AACL,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACzB,OAAM,CAAC,CAAC,OAAO,GAAG,IAAG;MAChB;KACD,IAAI,IAAI,EAAE;OACR,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAC;AAChD,MAAK,MAAM;AACX,OAAM,WAAW,CAAC,MAAM,EAAE,GAAG,EAAC;MACzB;IACF;EACF;AACD,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;AAC/B,GAAE,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC/C,KAAI,MAAM;IACP;AACH,GAAE,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;AACjC,GAAE,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;GAC/B,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,WAAW,GAAG,MAAK;IACtB;GACD,IAAI,CAAC,EAAE;AACT,KAAI,CAAC,CAAC,WAAW,GAAG,MAAK;IACtB;AACH,GAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAC;GAC3B,IAAI,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5C;AACA,KAAI,MAAM;IACP;AACH,GAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAC;EACtC;CACD,SAAS,WAAW,CAAC,MAAM,EAAE;GAC3B,IAAI,MAAM,GAAG,MAAK;AACpB,GAAE,SAAS,WAAW,CAAC,GAAG,EAAE;KACxB,IAAI,MAAM,EAAE;AAChB,OAAM,cAAc,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,qBAAqB,EAAE,EAAC;AACnG,OAAM,MAAM;MACP;KACD,MAAM,GAAG,KAAI;AACjB,KAAI,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;AACnC,KAAI,MAAM,CAAC,GAAG,MAAM,CAAC,eAAc;AACnC,KAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAC;KAChB,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,WAAW,GAAG,KAAI;MACrB;KACD,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,WAAW,GAAG,KAAI;MACrB;AACL,KAAI,IAAI,CAAC,CAAC,SAAS,EAAE;AACrB,OAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAC;MAC3B,MAAM,IAAI,GAAG,EAAE;AACpB,OAAM,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAC;AACvC,MAAK,MAAM;AACX,OAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAC;MAC1C;IACF;AACH,GAAE,IAAI;AACN,KAAI,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK;AAC/B,OAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAC;AACxC,MAAK,EAAC;IACH,CAAC,OAAO,GAAG,EAAE;AAChB,KAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAC;IACnC;EACF;CACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,GAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAC;EACxB;CACD,SAAS,SAAS,CAAC,MAAM,EAAE;GACzB,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;EACtH;CACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAC;EACrB;AACD,CAAA,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;AAC3C,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAC;AAC3B,GAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAC;EAC1C;AACD;AACA;AACA,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;GAC9B,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACtC,KAAI,MAAM;IACP;GACD,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACnC,KAAI,GAAG,GAAG,IAAI,UAAU,GAAE;IACvB;AACH;AACA;AACA,GAAE,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE;AAC/B,KAAI,MAAM,CAAC,MAAM,GAAG,KAAI;AACxB,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAC;AACvB,IAAG,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;KAC5B,MAAM,CAAC,KAAK,GAAE;IACf,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpC,KAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAE;IACnB,MAAM,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACnD,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAC;IACpB,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE;AACjD;KACI,MAAM,CAAC,KAAK,GAAE;IACf,MAAM,IAAI,GAAG,EAAE;KACd,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAC;AACvD,IAAG,MAAM;AACT,KAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAC;IAC1C;AACH,GAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzB,KAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI;IAC5B;EACF;AACD,CAAA,SAAc,GAAG;AACjB,GAAE,SAAS;AACX,GAAE,SAAS;AACX,GAAE,OAAO;AACT,GAAE,SAAS;AACX,GAAE,cAAc;AAChB,GAAA;;;;;;;;;;AChSA;AACA,CAAA,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAGH,kBAAiC,GAAA;AAChF,CAAA,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAGC,aAAiB;CAC9C,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,GAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC;EACpB;CACD,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAC;AACpD,CAAA,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAC;CAChC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;GAC/C,MAAM,MAAM,GAAG,KAAI;AACrB,GAAE,SAAS,MAAM,CAAC,KAAK,EAAE;AACzB,KAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;OAChE,MAAM,CAAC,KAAK,GAAE;MACf;IACF;AACH,GAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAC;GACzB,SAAS,OAAO,GAAG;KACjB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;OACpC,MAAM,CAAC,MAAM,GAAE;MAChB;IACF;AACH,GAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3B;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;AAC7D,KAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAC;AAC3B,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;IAC5B;GACD,IAAI,QAAQ,GAAG,MAAK;GACpB,SAAS,KAAK,GAAG;KACf,IAAI,QAAQ,EAAE,MAAM;KACpB,QAAQ,GAAG,KAAI;KACf,IAAI,CAAC,GAAG,GAAE;IACX;GACD,SAAS,OAAO,GAAG;KACjB,IAAI,QAAQ,EAAE,MAAM;KACpB,QAAQ,GAAG,KAAI;KACf,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,OAAO,GAAE;IACvD;AACH;AACA;AACA,GAAE,SAAS,OAAO,CAAC,EAAE,EAAE;AACvB,KAAI,OAAO,GAAE;KACT,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/C,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAC;MACvB;IACF;AACH,GAAE,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC;AAC3C,GAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC;AACzC;AACA;GACE,SAAS,OAAO,GAAG;AACrB,KAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAC;AACzC,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACzC,KAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAC;AACvC,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3C,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3C,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACzC,KAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAC;AACzC,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3C,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;IACtC;AACH,GAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAC;AAC3B,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;AAC7B,GAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;AAC3B,GAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAC;AAC3B;AACA;AACA,GAAE,OAAO,IAAI;GACZ;AACD,CAAA,SAAS,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;AAC7C;AACA;AACA,GAAE,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC;AAC9F;AACA;AACA;AACA;AACA;GACE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAC;QACjE,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAC;AACnF,QAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC;EAC3D;AACD,CAAA,MAAc,GAAG;AACjB,GAAE,MAAM;AACR,GAAE,eAAe;AACjB,GAAA;;;;;;;;;;;;ACvFA;AACA,EAAA,MAAM,EAAE,aAAa,EAAE,GAAGD,kBAAiC,GAAA;AAC3D,EAAA,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAGC,aAA4B,GAAA;EAC1D,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE,GAAGC,YAAkB,GAAA;EAClF,MAAM,GAAG,GAAGC,kBAA0B,GAAA;AACtC,EAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAK;AACtC,EAAA,IAAI,iBAAgB;AACpB;AACA;AACA;AACA;AACA,EAAA,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,EAAE;MACxD,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC;KAC5D;IACF;AACD,EAAA,MAAA,CAAA,OAAA,CAAA,cAAA,GAAgC,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;AACxE,IAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAC;AACvC,IAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACrD,MAAI,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACjG;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC;IAC/D;AACD,EAAA,MAAA,CAAA,OAAA,CAAA,wBAAA,GAA0C,UAAU,MAAM,EAAE,MAAM,EAAE;IAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC,EAAE;AAC5D,MAAI,OAAO,MAAM;KACd;AACH,IAAE,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;AACtC,QAAM,MAAM;UACJ,MAAM,CAAC,OAAO;AACtB,YAAU,IAAI,UAAU,CAAC,SAAS,EAAE;AACpC,cAAY,KAAK,EAAE,MAAM,CAAC,MAAM;AAChC,aAAW,CAAC;YACH;SACF;AACP,QAAM,MAAM;UACJ,MAAM,CAAC,wBAAwB,CAAC;AACxC,YAAU,IAAI,UAAU,CAAC,SAAS,EAAE;AACpC,cAAY,KAAK,EAAE,MAAM,CAAC,MAAM;AAChC,aAAW,CAAC;YACH;UACF;AACP,IAAE,IAAI,MAAM,CAAC,OAAO,EAAE;AACtB,MAAI,OAAO,GAAE;AACb,KAAG,MAAM;AACT,MAAI,gBAAgB,GAAG,gBAAgB,IAAIa,WAAA,EAA0B,CAAC,iBAAgB;MAClF,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAC;MACpD,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,EAAC;KACvC;AACH,IAAE,OAAO,MAAM;AACf,IAAA;;;;;;;;;;;AClDA;CACA,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAGhB,kBAAiC,GAAA;AACtH,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,aAAiB;AACpC,CAAA,MAAM,EAAE,OAAO,EAAE,GAAGC,WAA0B,GAAA;AAC9C,CAAc,WAAA,GAAG,MAAM,UAAU,CAAC;AAClC,GAAE,WAAW,GAAG;AAChB,KAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,KAAI,IAAI,CAAC,IAAI,GAAG,KAAI;AACpB,KAAI,IAAI,CAAC,MAAM,GAAG,EAAC;IAChB;GACD,IAAI,CAAC,CAAC,EAAE;KACN,MAAM,KAAK,GAAG;OACZ,IAAI,EAAE,CAAC;OACP,IAAI,EAAE,IAAI;OACX;AACL,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAK;AAC/C,UAAS,IAAI,CAAC,IAAI,GAAG,MAAK;AAC1B,KAAI,IAAI,CAAC,IAAI,GAAG,MAAK;KACjB,EAAE,IAAI,CAAC,OAAM;IACd;GACD,OAAO,CAAC,CAAC,EAAE;KACT,MAAM,KAAK,GAAG;OACZ,IAAI,EAAE,CAAC;AACb,OAAM,IAAI,EAAE,IAAI,CAAC,IAAI;OAChB;KACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,MAAK;AAC5C,KAAI,IAAI,CAAC,IAAI,GAAG,MAAK;KACjB,EAAE,IAAI,CAAC,OAAM;IACd;AACH,GAAE,KAAK,GAAG;AACV,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM;AACjC,KAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAI;AAC9B,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAI;UAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAI;KAC/B,EAAE,IAAI,CAAC,OAAM;AACjB,KAAI,OAAO,GAAG;IACX;AACH,GAAE,KAAK,GAAG;KACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAI;AAChC,KAAI,IAAI,CAAC,MAAM,GAAG,EAAC;IAChB;GACD,IAAI,CAAC,CAAC,EAAE;KACN,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;AACpC,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI;AACrB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,KAAI;AACzB,KAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAI;AACnD,KAAI,OAAO,GAAG;IACX;GACD,MAAM,CAAC,CAAC,EAAE;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAC;AAC3C,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI;KACjB,IAAI,CAAC,GAAG,EAAC;KACT,OAAO,CAAC,EAAE;OACR,sBAAsB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAC;AAC5C,OAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAM;AACxB,OAAM,CAAC,GAAG,CAAC,CAAC,KAAI;MACX;AACL,KAAI,OAAO,GAAG;IACX;AACH;AACA;AACA,GAAE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE;AACzB,KAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAI;AAC/B,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB;OACM,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAC;OAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC;AACpC,OAAM,OAAO,KAAK;MACb;AACL,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC3B;AACA,OAAM,OAAO,IAAI,CAAC,KAAK,EAAE;MACpB;AACL;AACA,KAAI,OAAO,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D;AACH,GAAE,KAAK,GAAG;AACV,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;IACtB;GACD,EAAE,cAAc,CAAC,GAAG;AACtB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;OACrC,MAAM,CAAC,CAAC,KAAI;MACb;IACF;AACH;AACA;GACE,UAAU,CAAC,CAAC,EAAE;KACZ,IAAI,GAAG,GAAG,GAAE;AAChB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI;KACjB,IAAI,CAAC,GAAG,EAAC;AACb,KAAI,GAAG;AACP,OAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAI;AACxB,OAAM,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;SAClB,GAAG,IAAI,IAAG;AAClB,SAAQ,CAAC,IAAI,GAAG,CAAC,OAAM;AACvB,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE;WACpB,GAAG,IAAI,IAAG;AACpB,WAAU,EAAE,EAAC;WACH,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAI;gBACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAI;AAC3C,UAAS,MAAM;WACL,GAAG,IAAI,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAC;AAChD,WAAU,IAAI,CAAC,IAAI,GAAG,EAAC;WACb,CAAC,CAAC,IAAI,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAC;UACtC;AACT,SAAQ,KAAK;QACN;AACP,OAAM,EAAE,EAAC;MACJ,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC;AACnC,KAAI,IAAI,CAAC,MAAM,IAAI,EAAC;AACpB,KAAI,OAAO,GAAG;IACX;AACH;AACA;GACE,UAAU,CAAC,CAAC,EAAE;KACZ,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,EAAC;KACjC,MAAM,MAAM,GAAG,EAAC;AACpB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI;KACjB,IAAI,CAAC,GAAG,EAAC;AACb,KAAI,GAAG;AACP,OAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAI;AACxB,OAAM,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;SAClB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAC;AACpD,SAAQ,CAAC,IAAI,GAAG,CAAC,OAAM;AACvB,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE;WACpB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAC;AACtD,WAAU,EAAE,EAAC;WACH,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAI;gBACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAI;AAC3C,UAAS,MAAM;WACL,sBAAsB,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,EAAC;AAChG,WAAU,IAAI,CAAC,IAAI,GAAG,EAAC;WACb,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAC;UACtB;AACT,SAAQ,KAAK;QACN;AACP,OAAM,EAAE,EAAC;MACJ,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC;AACnC,KAAI,IAAI,CAAC,MAAM,IAAI,EAAC;AACpB,KAAI,OAAO,GAAG;IACX;AACH;AACA;AACA,GAAE,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE;AACzD,KAAI,OAAO,OAAO,CAAC,IAAI,EAAE;AACzB,OAAM,GAAG,OAAO;AAChB;OACM,KAAK,EAAE,CAAC;AACd;OACM,aAAa,EAAE,KAAK;AAC1B,MAAK,CAAC;IACH;AACH,GAAA;;;;;;;;;;AC3JA;AACA,CAAA,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAGF,kBAAiC,GAAA;AACxE,CAAA,MAAM,EAAE,eAAe,EAAE,GAAGC,iBAAwB,GAAA;AACpD,CAAA,MAAM,EAAE,qBAAqB,EAAE,GAAGC,aAAA,EAA4B,CAAC,MAAK;AACpE,CAAA,IAAI,yBAAyB,GAAG,EAAE,GAAG,KAAI;CACzC,IAAI,8BAA8B,GAAG,GAAE;AACvC,CAAA,SAAS,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;AACzD,GAAE,OAAO,OAAO,CAAC,aAAa,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;EACpG;CACD,SAAS,uBAAuB,CAAC,UAAU,EAAE;AAC7C,GAAE,OAAO,UAAU,GAAG,8BAA8B,GAAG,yBAAyB;EAC/E;AACD,CAAA,SAAS,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,GAAE,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAC;GAClC,IAAI,UAAU,EAAE;KACd,8BAA8B,GAAG,MAAK;AAC1C,IAAG,MAAM;KACL,yBAAyB,GAAG,MAAK;IAClC;EACF;CACD,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;GAC7D,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC;AAC7D,GAAE,IAAI,GAAG,IAAI,IAAI,EAAE;KACf,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;AAC1C,OAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,wBAAuB;AAC9E,OAAM,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC;MAC3C;AACL,KAAI,OAAO,SAAS,CAAC,GAAG,CAAC;IACtB;AACH;AACA;AACA,GAAE,OAAO,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC;EACjD;AACD,CAAA,KAAc,GAAG;AACjB,GAAE,gBAAgB;AAClB,GAAE,uBAAuB;AACzB,GAAE,uBAAuB;AACzB,GAAA;;;;;;;;;;ACrCA;AACA;AACA;CACA,MAAM,OAAO,GAAGF,cAAmB,GAAA;AACnC;AACA;AACA;CACA,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,GAAGC,kBAAiC,GAAA;AACvG,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,aAAiB;CACpC,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAGC,aAAA,EAA4B,CAAC,MAAK;AAC3F,CAAA,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;AACxC,GAAE,IAAI,SAAQ;GACZ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,YAAY,MAAM,EAAE;KAC9D,OAAO,IAAI,QAAQ,CAAC;OAClB,UAAU,EAAE,IAAI;AACtB,OAAM,GAAG,IAAI;AACb,OAAM,IAAI,GAAG;AACb,SAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;AAC3B,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;QAChB;AACP,MAAK,CAAC;IACH;AACH,GAAE,IAAI,QAAO;AACb,GAAE,IAAI,QAAQ,IAAI,QAAQ,CAAC,mBAAmB,CAAC,EAAE;KAC7C,OAAO,GAAG,KAAI;AAClB,KAAI,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAE;IAC3C,MAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE;KAC/C,OAAO,GAAG,MAAK;AACnB,KAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAE;AACzC,IAAG,MAAM;KACL,MAAM,IAAI,oBAAoB,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IACnE;AACH,GAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;KAC5B,UAAU,EAAE,IAAI;KAChB,aAAa,EAAE,CAAC;AACpB;AACA,KAAI,GAAG,IAAI;AACX,IAAG,EAAC;AACJ;AACA;AACA;GACE,IAAI,OAAO,GAAG,MAAK;AACrB,GAAE,QAAQ,CAAC,KAAK,GAAG,YAAY;KAC3B,IAAI,CAAC,OAAO,EAAE;OACZ,OAAO,GAAG,KAAI;AACpB,OAAM,IAAI,GAAE;MACP;KACF;GACD,QAAQ,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AAC3C,KAAI,oBAAoB;OAClB,KAAK,CAAC,KAAK,CAAC;OACZ,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;AACvC;AACA,OAAM,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;OACxC;KACF;AACH,GAAE,eAAe,KAAK,CAAC,KAAK,EAAE;KAC1B,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAI;KACtD,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,KAAK,KAAK,WAAU;AACzD,KAAI,IAAI,QAAQ,IAAI,QAAQ,EAAE;AAC9B,OAAM,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAC;AACzD,OAAM,MAAM,MAAK;OACX,IAAI,IAAI,EAAE;AAChB,SAAQ,MAAM;QACP;MACF;AACL,KAAI,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE;OACzC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,GAAE;AAC/C,OAAM,MAAM,MAAK;MACZ;IACF;GACD,eAAe,IAAI,GAAG;AACxB,KAAI,SAAS;AACb,OAAM,IAAI;AACV,SAAQ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAE;SACzE,IAAI,IAAI,EAAE;AAClB,WAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC;AAC7B,UAAS,MAAM;AACf,WAAU,MAAM,GAAG,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,GAAG,MAAM,KAAK,GAAG,MAAK;AACrF,WAAU,IAAI,GAAG,KAAK,IAAI,EAAE;aAChB,OAAO,GAAG,MAAK;aACf,MAAM,IAAI,sBAAsB,EAAE;YACnC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACzC,aAAY,QAAQ;AACpB,YAAW,MAAM;aACL,OAAO,GAAG,MAAK;YAChB;UACF;QACF,CAAC,OAAO,GAAG,EAAE;AACpB,SAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAC;QACtB;AACP,OAAM,KAAK;MACN;IACF;AACH,GAAE,OAAO,QAAQ;EAChB;AACD,CAAA,MAAc,GAAG,KAAA;;;;;;;;;;;;CC/FjB,MAAM,OAAO,GAAGH,cAAmB,EAAA;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GAEA,MAAM;AACN,GAAE,qBAAqB;AACvB,GAAE,eAAe;AACjB,GAAE,WAAW;AACb,GAAE,cAAc;AAChB,GAAE,sBAAsB;AACxB,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,OAAO;AACT,GAAE,OAAO;AACT,GAAE,kBAAkB;AACpB,GAAE,mBAAmB;AACrB,GAAE,MAAM;AACR,EAAC,GAAGC,kBAAiC,GAAA;AACrC,CAAA,QAAc,GAAG,SAAQ;CACzB,QAAQ,CAAC,aAAa,GAAG,cAAa;AACtC,CAAA,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAGC,aAAiB;AAC9C,CAAA,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAGC,aAAmB,GAAA;AACvD,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGa,aAAiB;AACpC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAGc,qBAA6B,GAAA;CACxD,MAAM,GAAG,GAAGE,kBAA0B,GAAA;CACtC,IAAI,KAAK,GAAGC,WAAA,EAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK;GAChE,KAAK,GAAG,GAAE;AACZ,EAAC,EAAC;CACF,MAAM,UAAU,GAAGC,kBAAwB,GAAA;CAC3C,MAAM,WAAW,GAAGU,cAAoB,GAAA;AACxC,CAAA,MAAM,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAGgG,YAAkB,GAAA;CACxE,MAAM;AACN,GAAE,kBAAkB;AACpB,GAAE,KAAK,EAAE;AACT,KAAI,oBAAoB;AACxB,KAAI,0BAA0B;AAC9B,KAAI,gBAAgB;AACpB,KAAI,yBAAyB;AAC7B,KAAI,kCAAkC;IACnC;AACH,GAAE,UAAU;AACZ,EAAC,GAAGC,aAA4B,GAAA;AAChC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAGC,iBAAwB,GAAA;AACnD,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAC;AACjC,CAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAyB;CACnD,MAAM,IAAI,GAAGE,WAAiB,GAAA;CAC9B,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC;AAC1D,CAAA,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAC;CACtC,MAAM,GAAG,GAAG,MAAM,GAAE;AACpB,CAAA,MAAM,EAAE,cAAc,EAAE,GAAG,YAAW;AACtC,CAAA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAC;AAC1B,CAAA,MAAM,MAAM,GAAG,CAAC,IAAI,EAAC;AACrB,CAAA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAC;AAC1B,CAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAC;AACvB,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAC;AAC3B,CAAA,MAAM,KAAK,GAAG,CAAC,IAAI,EAAC;AACpB,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAC;AAC5B,CAAA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAC;AAC/B,CAAA,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAC;AACjC,CAAA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAC;AAC/B,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,GAAE;AAC7B,CAAA,MAAM,UAAU,GAAG,CAAC,IAAI,GAAE;AAC1B,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,GAAE;AAC5B,CAAA,MAAM,UAAU,GAAG,CAAC,IAAI,GAAE;AAC1B,CAAA,MAAM,OAAO,GAAG,CAAC,IAAI,GAAE;AACvB,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,GAAE;AAC7B,CAAA,MAAM,gBAAgB,GAAG,CAAC,IAAI,GAAE;AAChC,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,GAAE;AAC5B,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,GAAE;AAC5B;AACA;CACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,GAAE,OAAO;KACL,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC;MAChC;KACD,GAAG,CAAC,KAAK,EAAE;AACf,OAAM,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAG;AAClC,YAAW,IAAI,CAAC,KAAK,IAAI,CAAC,IAAG;MACxB;IACF;EACF;AACD,CAAA,sBAAsB,CAAC,aAAa,CAAC,SAAS,EAAE;AAChD,GAAE,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;AAC/C,GAAE,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC;AACrC,GAAE,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC;AAC/C,GAAE,OAAO,EAAE,oBAAoB,CAAC,QAAQ,CAAC;AACzC;AACA;AACA;AACA;AACA,GAAE,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC;AACjD;AACA;AACA;AACA;AACA,GAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC;AACnC;AACA;AACA,GAAE,YAAY,EAAE,oBAAoB,CAAC,aAAa,CAAC;AACnD,GAAE,eAAe,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;AACzD,GAAE,iBAAiB,EAAE,oBAAoB,CAAC,kBAAkB,CAAC;AAC7D,GAAE,eAAe,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;AACzD;AACA,GAAE,YAAY,EAAE,oBAAoB,CAAC,aAAa,CAAC;AACnD,GAAE,SAAS,EAAE,oBAAoB,CAAC,UAAU,CAAC;AAC7C,GAAE,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC;AACjD;AACA,GAAE,SAAS,EAAE,oBAAoB,CAAC,UAAU,CAAC;AAC7C;AACA,GAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC;AACvC;AACA;AACA,GAAE,YAAY,EAAE,oBAAoB,CAAC,aAAa,CAAC;AACnD,GAAE,eAAe,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;AACzD;AACA,GAAE,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC;AACjD,GAAE,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC;AACjD,EAAC,EAAC;AACF,CAAA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClD;AACA;AACA;AACA;AACA;GACE,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,QAAQ,GAAG,MAAM,YAAYC,aAAmB,GAAA;AACrF;AACA;AACA;GACE,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,MAAK;AAC/D;AACA;GACE,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,IAAI,YAAW;AAC9D,GAAE,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,IAAI,YAAW;AAClF;AACA;AACA;AACA,GAAE,IAAI,CAAC,aAAa,GAAG,OAAO;OACxB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,CAAC;OAClE,uBAAuB,CAAC,KAAK,EAAC;AACpC;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,GAAE;AAChC,GAAE,IAAI,CAAC,MAAM,GAAG,EAAC;AACjB,GAAE,IAAI,CAAC,KAAK,GAAG,GAAE;AACjB,GAAE,IAAI,CAAC,OAAO,GAAG,KAAI;AACrB,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,KAAI;AACtB;AACA;AACA,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,WAAU;AACvE;AACA;AACA,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,aAAY;AAC3E;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,OAAO,GAAG,KAAI;AACrB;AACA;AACA;AACA;GACE,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,KAAK,OAAM;AACvE;AACA;AACA;AACA,GAAE,IAAI,CAAC,iBAAiB,GAAG,KAAI;AAC/B,GAAE,IAAI,CAAC,OAAO,GAAG,KAAI;AACrB,GAAE,IAAI,CAAC,QAAQ,GAAG,KAAI;AACtB,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;KAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAC;AACtD,KAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAQ;IACjC;EACF;CACD,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,GAAE,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;AAC/D;AACA;AACA;AACA,GAAE,MAAM,QAAQ,GAAG,IAAI,YAAYA,aAAmB,GAAA;AACtD,GAAE,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAC;GAChE,IAAI,OAAO,EAAE;AACf,KAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAI;AACrE,KAAI,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAO;AAC9E,KAAI,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAS;AACpF,KAAI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAC;IACtE;AACH,GAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;AAC5B,GAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;AACpC,KAAI,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAC1C,OAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAC;MACzC;AACL,IAAG,EAAC;EACH;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,QAAO;AAChD,CAAA,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC,UAAS;CACrD,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,EAAE,EAAE;GAC/C,EAAE,CAAC,GAAG,EAAC;GACR;CACD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,UAAU,GAAG,EAAE;AAC/D,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAC;GAClB;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,GAAG,YAAY;AACrD,GAAE,IAAI,MAAK;AACX,GAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;KACnB,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,UAAU,GAAE;AACxD,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;IACpB;AACH,GAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;GAClH;AACD;AACA;AACA;AACA;AACA;CACA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE;GACnD,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;GACtD;AACD;AACA;CACA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE;GACtD,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;GACrD;CACD,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC/D,GAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAC;AAClC,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,IAAI,IAAG;GACP,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,MAAM,CAAC,EAAE;AACzC,KAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,OAAM,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC,gBAAe;AAClD,OAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACvC,SAAQ,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC1C;AACA;AACA,WAAU,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAC;AACvE,UAAS,MAAM;WACL,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAC;WACpC,QAAQ,GAAG,GAAE;UACd;QACF;AACP,MAAK,MAAM,IAAI,KAAK,YAAY,MAAM,EAAE;OAClC,QAAQ,GAAG,GAAE;MACd,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC5C,OAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAC;OACzC,QAAQ,GAAG,GAAE;AACnB,MAAK,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AAC9B,OAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,EAAC;MACnF;IACF;GACD,IAAI,GAAG,EAAE;AACX,KAAI,cAAc,CAAC,MAAM,EAAE,GAAG,EAAC;AAC/B,IAAG,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC7B,KAAI,KAAK,CAAC,KAAK,IAAI,CAAC,SAAQ;AAC5B,KAAI,UAAU,CAAC,MAAM,EAAE,KAAK,EAAC;AAC7B,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,MAAM,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;KAC3E,IAAI,UAAU,EAAE;AACpB,OAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,kCAAkC,EAAE,EAAC;YAClG,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,KAAK;YAClD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC;AAC/C,MAAK,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,OAAM,cAAc,CAAC,MAAM,EAAE,IAAI,yBAAyB,EAAE,EAAC;MACxD,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;AACjD,OAAM,OAAO,KAAK;AAClB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,KAAK,IAAI,CAAC,SAAQ;AAC9B,OAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;SAC9B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAC;SAClC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC;AACzF,cAAa,aAAa,CAAC,MAAM,EAAE,KAAK,EAAC;AACzC,QAAO,MAAM;SACL,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC;QACtC;MACF;AACL,IAAG,MAAM,IAAI,CAAC,UAAU,EAAE;AAC1B,KAAI,KAAK,CAAC,KAAK,IAAI,CAAC,SAAQ;AAC5B,KAAI,aAAa,CAAC,MAAM,EAAE,KAAK,EAAC;IAC7B;AACH;AACA;AACA;AACA;AACA,GAAE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;EAClF;CACD,SAAS,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;GAClD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC9F;AACA;KACI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,gBAAgB,MAAM,CAAC,EAAE;AAChD,OAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAE;AACrC,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,iBAAiB,GAAG,KAAI;MAC/B;AACL,KAAI,KAAK,CAAC,WAAW,GAAG,KAAI;AAC5B,KAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAC;AAC9B,IAAG,MAAM;AACT;AACA,KAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAM;KACnD,IAAI,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAC;AAC/C,UAAS,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC;AACjC,KAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,EAAC;IAC9D;AACH,GAAE,aAAa,CAAC,MAAM,EAAE,KAAK,EAAC;EAC7B;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC1C,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC,GAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;GAC1D;AACD;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,GAAG,EAAE;AAChD,GAAE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,EAAC;AACxC,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,QAAO;AACvC;AACA,GAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAQ;AACrE,GAAE,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAM;AAC3C;GACE,IAAI,OAAO,GAAG,GAAE;AAClB,GAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,KAAI,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAC;IAC/B;GACD,MAAM,CAAC,KAAK,GAAE;GACd,IAAI,OAAO,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAC;GACxC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,OAAM;AAC7C,GAAE,OAAO,IAAI;GACZ;AACD;AACA;CACA,MAAM,OAAO,GAAG,WAAU;CAC1B,SAAS,uBAAuB,CAAC,CAAC,EAAE;AACpC,GAAE,IAAI,CAAC,GAAG,OAAO,EAAE;KACf,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACpD,IAAG,MAAM;AACT;AACA;AACA,KAAI,CAAC,GAAE;AACP,KAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AAChB,KAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AAChB,KAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AAChB,KAAI,CAAC,IAAI,CAAC,KAAK,EAAC;AAChB,KAAI,CAAC,IAAI,CAAC,KAAK,GAAE;AACjB,KAAI,CAAC,GAAE;IACJ;AACH,GAAE,OAAO,CAAC;EACT;AACD;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE;AACjC,GAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;GAC3D,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,MAAM,CAAC,EAAE,OAAO,CAAC;AACjD,GAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AACtB;AACA,KAAI,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM;KACrE,OAAO,KAAK,CAAC,MAAM;IACpB;GACD,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;GAC/B,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;EACtC;AACD;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE;AACvC,GAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAC;AAClB;AACA;AACA,GAAE,IAAI,CAAC,KAAK,SAAS,EAAE;KACnB,CAAC,GAAG,IAAG;AACX,IAAG,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAClC,KAAI,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAC;IAC1B;AACH,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;GACjC,MAAM,KAAK,GAAG,EAAC;AACjB;AACA;AACA,GAAE,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,GAAG,uBAAuB,CAAC,CAAC,EAAC;GAC7E,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,iBAAgB;AAC/C;AACA;AACA;AACA;GACE;KACE,CAAC,KAAK,CAAC;KACP,KAAK,CAAC,YAAY;MACjB,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;KACrG;KACA,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAC;AAC1D,KAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAC;UACnD,YAAY,CAAC,IAAI,EAAC;AAC3B,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,EAAC;AAC7B;AACA;GACE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;KAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,EAAC;AAC7C,KAAI,OAAO,IAAI;IACZ;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,MAAM,EAAC;AAClD,GAAE,KAAK,CAAC,eAAe,EAAE,MAAM,EAAC;AAChC;AACA;AACA,GAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE;KAChE,MAAM,GAAG,KAAI;AACjB,KAAI,KAAK,CAAC,4BAA4B,EAAE,MAAM,EAAC;IAC5C;AACH;AACA;AACA;AACA;GACE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;KAC1F,MAAM,GAAG,MAAK;AAClB,KAAI,KAAK,CAAC,gCAAgC,EAAE,MAAM,EAAC;IAChD,MAAM,IAAI,MAAM,EAAE;KACjB,KAAK,CAAC,SAAS,EAAC;AACpB,KAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,GAAG,MAAK;AACnC;KACI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,cAAa;AACxD;AACA;AACA,KAAI,IAAI;AACR,OAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAC;MAChC,CAAC,OAAO,GAAG,EAAE;AAClB,OAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAC;MAC1B;AACL,KAAI,KAAK,CAAC,KAAK,IAAI,CAAC,MAAK;AACzB;AACA;AACA;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAC;IACpD;AACH,GAAE,IAAI,IAAG;AACT,GAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAC;QAC9B,GAAG,GAAG,KAAI;AACjB,GAAE,IAAI,GAAG,KAAK,IAAI,EAAE;KAChB,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,cAAa;KACxD,CAAC,GAAG,EAAC;AACT,IAAG,MAAM;AACT,KAAI,KAAK,CAAC,MAAM,IAAI,EAAC;AACrB,KAAI,IAAI,KAAK,CAAC,eAAe,EAAE;AAC/B,OAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAE;AACrC,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,iBAAiB,GAAG,KAAI;MAC/B;IACF;AACH,GAAE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B;AACA;KACI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG,KAAI;AAC/C;AACA;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAC;IAClD;AACH,GAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAClE,KAAI,KAAK,CAAC,WAAW,GAAG,KAAI;AAC5B,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAC;IACvB;AACH,GAAE,OAAO,GAAG;GACX;AACD,CAAA,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;GACjC,KAAK,CAAC,YAAY,EAAC;AACrB,GAAE,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM;AACzB,GAAE,IAAI,KAAK,CAAC,OAAO,EAAE;KACjB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,GAAE;AACrC,KAAI,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AAC/B,OAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC;AAC9B,OAAM,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAM;MACpD;IACF;AACH,GAAE,KAAK,CAAC,KAAK,GAAG,KAAI;AACpB,GAAE,IAAI,KAAK,CAAC,IAAI,EAAE;AAClB;AACA;AACA;KACI,YAAY,CAAC,MAAM,EAAC;AACxB,IAAG,MAAM;AACT;AACA,KAAI,KAAK,CAAC,YAAY,GAAG,MAAK;AAC9B,KAAI,KAAK,CAAC,eAAe,GAAG,KAAI;AAChC;AACA;KACI,aAAa,CAAC,MAAM,EAAC;IACtB;EACF;AACD;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;GACnC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,eAAe,EAAC;AAClE,GAAE,KAAK,CAAC,YAAY,GAAG,MAAK;AAC5B,GAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC9B,KAAI,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAC;AACxC,KAAI,KAAK,CAAC,eAAe,GAAG,KAAI;AAChC,KAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAC;IACxC;EACF;CACD,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAC;AACpE,GAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAC3E,KAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAC;AAC3B,KAAI,KAAK,CAAC,eAAe,GAAG,MAAK;IAC9B;AACH;AACA;AACA;AACA;AACA;AACA;AACA;GACE,KAAK,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,cAAa;GAC1F,IAAI,CAAC,MAAM,EAAC;EACb;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE;GACpC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;AAC/C,KAAI,KAAK,CAAC,WAAW,GAAG,KAAI;KACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAC;IAChD;EACF;AACD,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE;KACE,CAAC,KAAK,CAAC,OAAO;KACd,CAAC,KAAK,CAAC,KAAK;AAChB,MAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KAC7E;AACJ,KAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAM;KACxB,KAAK,CAAC,sBAAsB,EAAC;AACjC,KAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAC;AAClB,KAAI,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM;AAC5B;AACA,OAAM,KAAK;IACR;AACH,GAAE,KAAK,CAAC,WAAW,GAAG,MAAK;EAC1B;AACD;AACA;AACA;AACA;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE;AACxC,GAAE,MAAM,IAAI,0BAA0B,CAAC,SAAS,CAAC;GAChD;CACD,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,QAAQ,EAAE;GAClD,MAAM,GAAG,GAAG,KAAI;AAClB,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;GACjC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,KAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAChC,OAAM,KAAK,CAAC,eAAe,GAAG,KAAI;AAClC,OAAM,KAAK,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAC;MAChG;IACF;AACH,GAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;GACtB,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAC;GAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,KAAK,KAAK,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,OAAM;AAC3G,GAAE,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAM;GACpC,IAAI,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC;AAC/C,QAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC;AAC7B,GAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAC;AAC7B,GAAE,SAAS,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE;KACtC,KAAK,CAAC,UAAU,EAAC;AACrB,KAAI,IAAI,QAAQ,KAAK,GAAG,EAAE;OACpB,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,KAAK,EAAE;AACzD,SAAQ,UAAU,CAAC,UAAU,GAAG,KAAI;AACpC,SAAQ,OAAO,GAAE;QACV;MACF;IACF;GACD,SAAS,KAAK,GAAG;KACf,KAAK,CAAC,OAAO,EAAC;KACd,IAAI,CAAC,GAAG,GAAE;IACX;AACH,GAAE,IAAI,QAAO;GACX,IAAI,SAAS,GAAG,MAAK;GACrB,SAAS,OAAO,GAAG;KACjB,KAAK,CAAC,SAAS,EAAC;AACpB;AACA,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACzC,KAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAC;KACvC,IAAI,OAAO,EAAE;AACjB,OAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;MACtC;AACL,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACzC,KAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAC;AAC3C,KAAI,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAC;AACpC,KAAI,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAC;AACrC,KAAI,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAC;KAClC,SAAS,GAAG,KAAI;AACpB;AACA;AACA;AACA;AACA;AACA;KACI,IAAI,OAAO,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,GAAE;IAC7G;GACD,SAAS,KAAK,GAAG;AACnB;AACA;AACA;AACA;KACI,IAAI,CAAC,SAAS,EAAE;AACpB,OAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC/D,SAAQ,KAAK,CAAC,6BAA6B,EAAE,CAAC,EAAC;AAC/C,SAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAI;AACtC,SAAQ,KAAK,CAAC,eAAe,GAAG,MAAK;AACrC,QAAO,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;SAC/D,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAC;AAC1E,SAAQ,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAC;QAClC;OACD,GAAG,CAAC,KAAK,GAAE;MACZ;KACD,IAAI,CAAC,OAAO,EAAE;AAClB;AACA;AACA;AACA;AACA,OAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAC;AACtC,OAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;MAC1B;IACF;AACH,GAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAC;AACxB,GAAE,SAAS,MAAM,CAAC,KAAK,EAAE;KACrB,KAAK,CAAC,QAAQ,EAAC;KACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC;AACjC,KAAI,KAAK,CAAC,YAAY,EAAE,GAAG,EAAC;AAC5B,KAAI,IAAI,GAAG,KAAK,KAAK,EAAE;AACvB,OAAM,KAAK,GAAE;MACR;IACF;AACH;AACA;AACA;AACA,GAAE,SAAS,OAAO,CAAC,EAAE,EAAE;AACvB,KAAI,KAAK,CAAC,SAAS,EAAE,EAAE,EAAC;AACxB,KAAI,MAAM,GAAE;AACZ,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;KACrC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;OACrC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAc;AAC1D,OAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AAChC;AACA,SAAQ,cAAc,CAAC,IAAI,EAAE,EAAE,EAAC;AAChC,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAC;QACvB;MACF;IACF;AACH;AACA;AACA,GAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAC;AACzC;AACA;GACE,SAAS,OAAO,GAAG;AACrB,KAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAC;AAC3C,KAAI,MAAM,GAAE;IACT;AACH,GAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAC;GAC3B,SAAS,QAAQ,GAAG;KAClB,KAAK,CAAC,UAAU,EAAC;AACrB,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACzC,KAAI,MAAM,GAAE;IACT;AACH,GAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAC;GAC7B,SAAS,MAAM,GAAG;KAChB,KAAK,CAAC,QAAQ,EAAC;AACnB,KAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC;IACjB;AACH;AACA;AACA,GAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAC;AACxB;AACA;AACA;AACA,GAAE,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACvC,KAAI,KAAK,GAAE;AACX,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;KACzB,KAAK,CAAC,aAAa,EAAC;KACpB,GAAG,CAAC,MAAM,GAAE;IACb;AACH,GAAE,OAAO,IAAI;GACZ;AACD,CAAA,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;GAC9B,OAAO,SAAS,yBAAyB,GAAG;AAC9C,KAAI,MAAM,KAAK,GAAG,GAAG,CAAC,eAAc;AACpC;AACA;AACA;AACA;AACA,KAAI,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE;AAC1C,OAAM,KAAK,CAAC,aAAa,EAAE,CAAC,EAAC;AAC7B,OAAM,KAAK,CAAC,iBAAiB,GAAG,KAAI;AACpC,MAAK,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE;OAChC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAC;AACxD,OAAM,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAC;MACrC;KACD,IAAI,CAAC,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;OACjG,GAAG,CAAC,MAAM,GAAE;MACb;IACF;EACF;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,EAAE;AAC5C,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;GACjC,MAAM,UAAU,GAAG;KACjB,UAAU,EAAE,KAAK;KAClB;AACH;AACA;GACE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;GACzC,IAAI,CAAC,IAAI,EAAE;AACb;AACA,KAAI,MAAM,KAAK,GAAG,KAAK,CAAC,MAAK;AAC7B,KAAI,KAAK,CAAC,KAAK,GAAG,GAAE;KAChB,IAAI,CAAC,KAAK,GAAE;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;OACnC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;SAC5B,UAAU,EAAE,KAAK;AACzB,QAAO,EAAC;AACR,KAAI,OAAO,IAAI;IACZ;AACH;AACA;GACE,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAC;AACxD,GAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI;GAC7B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAC;AAC9B,GAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,GAAE;GAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAC;AACvC,GAAE,OAAO,IAAI;GACZ;AACD;AACA;AACA;CACA,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC1C,GAAE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAC;AACpD,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC,GAAE,IAAI,EAAE,KAAK,MAAM,EAAE;AACrB;AACA;KACI,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAC;AAChE;AACA;KACI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,MAAM,GAAE;AAC9C,IAAG,MAAM,IAAI,EAAE,KAAK,UAAU,EAAE;KAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;OACjD,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,YAAY,GAAG,KAAI;AACzD,OAAM,KAAK,CAAC,OAAO,GAAG,MAAK;AAC3B,OAAM,KAAK,CAAC,eAAe,GAAG,MAAK;OAC7B,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAC;AACvD,OAAM,IAAI,KAAK,CAAC,MAAM,EAAE;SAChB,YAAY,CAAC,IAAI,EAAC;AAC1B,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjC,SAAQ,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAC;QACzC;MACF;IACF;AACH,GAAE,OAAO,GAAG;GACX;CACD,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAE;CACtD,QAAQ,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtD,GAAE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAC;AAChE,GAAE,IAAI,EAAE,KAAK,UAAU,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAC;IAChD;AACH,GAAE,OAAO,GAAG;GACX;CACD,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,eAAc;AAC1D,CAAA,QAAQ,CAAC,SAAS,CAAC,kBAAkB,GAAG,UAAU,EAAE,EAAE;AACtD,GAAE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAC;GACtE,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,SAAS,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,EAAC;IAChD;AACH,GAAE,OAAO,GAAG;GACX;CACD,SAAS,uBAAuB,CAAC,IAAI,EAAE;AACvC,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;GACjC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,EAAC;GAC5D,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;AACzD;AACA;AACA,KAAI,KAAK,CAAC,OAAO,GAAG,KAAI;AACxB;AACA;IACG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;KACzC,IAAI,CAAC,MAAM,GAAE;AACjB,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACvC,KAAI,KAAK,CAAC,OAAO,GAAG,KAAI;IACrB;EACF;CACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;GAC9B,KAAK,CAAC,0BAA0B,EAAC;AACnC,GAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAC;EACb;AACD;AACA;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACxC,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC,GAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;KAClB,KAAK,CAAC,QAAQ,EAAC;AACnB;AACA;AACA;AACA,KAAI,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,kBAAiB;AAC5C,KAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAC;IACpB;AACH,GAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAK;AACxB,GAAE,OAAO,IAAI;GACZ;AACD,CAAA,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;AAC/B,GAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC9B,KAAI,KAAK,CAAC,eAAe,GAAG,KAAI;KAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAC;IACzC;EACF;AACD,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE;AAChC,GAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAC;AAChC,GAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACtB,KAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAC;IACf;AACH,GAAE,KAAK,CAAC,eAAe,GAAG,MAAK;AAC/B,GAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC;GACrB,IAAI,CAAC,MAAM,EAAC;AACd,GAAE,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAC;EACpD;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;GACrC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAC;GAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,KAAK,EAAE;KACzC,KAAK,CAAC,OAAO,EAAC;AAClB,KAAI,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAK;AACvC,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC;IACnB;AACH,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,KAAI;AACrC,GAAE,OAAO,IAAI;GACZ;CACD,SAAS,IAAI,CAAC,MAAM,EAAE;AACtB,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAC;AAC9B,GAAE,OAAO,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;EACjD;AACD;AACA;AACA;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,MAAM,EAAE;GAC1C,IAAI,MAAM,GAAG,MAAK;AACpB;AACA;AACA;AACA;AACA;GACE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AAC/B,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;OACrC,MAAM,GAAG,KAAI;OACb,MAAM,CAAC,KAAK,GAAE;MACf;AACL,IAAG,EAAC;AACJ,GAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACzB,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;AACnB,IAAG,EAAC;GACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAC9B,KAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAC;AAC7B,IAAG,EAAC;AACJ,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;KACvB,IAAI,CAAC,OAAO,GAAE;AAClB,IAAG,EAAC;AACJ,GAAE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;KACzB,IAAI,CAAC,OAAO,GAAE;AAClB,IAAG,EAAC;AACJ,GAAE,IAAI,CAAC,KAAK,GAAG,MAAM;AACrB,KAAI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;OAC3B,MAAM,GAAG,MAAK;OACd,MAAM,CAAC,MAAM,GAAE;MAChB;KACF;AACH;AACA;AACA,GAAE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAC;AACvC,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,KAAI,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAC;AAC3B,KAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AAClE,OAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAC;MACjC;IACF;AACH,GAAE,OAAO,IAAI;GACZ;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,YAAY;AACtD,GAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC;GACnC;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AACjD,GAAE,IAAI,OAAO,KAAK,SAAS,EAAE;AAC7B,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC;GAC5C;AACD,CAAA,SAAS,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE;AAChD,GAAE,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;AACzC,KAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;OAC7B,UAAU,EAAE,IAAI;AACtB,MAAK,EAAC;IACH;GACD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAC;AACnD,GAAE,IAAI,CAAC,MAAM,GAAG,OAAM;AACtB,GAAE,OAAO,IAAI;EACZ;AACD,CAAA,gBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE;GACnD,IAAI,QAAQ,GAAG,IAAG;AACpB,GAAE,SAAS,IAAI,CAAC,OAAO,EAAE;AACzB,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,OAAM,QAAQ,GAAE;OACV,QAAQ,GAAG,IAAG;AACpB,MAAK,MAAM;OACL,QAAQ,GAAG,QAAO;MACnB;IACF;AACH,GAAE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAC;AAC7B,GAAE,IAAI,MAAK;GACT,MAAM,OAAO,GAAG,GAAG;AACrB,KAAI,MAAM;KACN;OACE,QAAQ,EAAE,KAAK;MAChB;KACD,CAAC,GAAG,KAAK;OACP,KAAK,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAI;AACzD,OAAM,QAAQ,GAAE;OACV,QAAQ,GAAG,IAAG;MACf;KACF;AACH,GAAE,IAAI;KACF,OAAO,IAAI,EAAE;AACjB,OAAM,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,GAAE;AAC3D,OAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1B,SAAQ,MAAM,MAAK;QACZ,MAAM,IAAI,KAAK,EAAE;AACxB,SAAQ,MAAM,KAAK;AACnB,QAAO,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AACjC,SAAQ,MAAM;AACd,QAAO,MAAM;AACb,SAAQ,MAAM,IAAI,OAAO,CAAC,IAAI,EAAC;QACxB;MACF;IACF,CAAC,OAAO,GAAG,EAAE;AAChB,KAAI,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAC;AAC1C,KAAI,MAAM,KAAK;AACf,IAAG,SAAS;KACR;AACJ,OAAM,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,eAAe,MAAM,KAAK;QACpG,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;OAC1D;AACN,OAAM,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAC;AACzC,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAC;AAClC,OAAM,OAAO,GAAE;MACV;IACF;EACF;AACD;AACA;AACA;AACA;AACA,CAAA,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3C,GAAE,QAAQ,EAAE;KACR,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AACnC;AACA;AACA;AACA;OACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,UAAU;MACvF;KACD,GAAG,CAAC,GAAG,EAAE;AACb;AACA,OAAM,IAAI,IAAI,CAAC,cAAc,EAAE;SACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAG;QACrC;MACF;IACF;AACH,GAAE,eAAe,EAAE;KACf,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;AACrB,OAAM,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW;MACvC;IACF;AACH,GAAE,eAAe,EAAE;KACf,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;AACrB,OAAM,OAAO,CAAC;AACd,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,KAAK;UACrC,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACtE,SAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU;QAChC;MACF;IACF;AACH,GAAE,qBAAqB,EAAE;KACrB,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;AACrB,OAAM,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa;MACzC;IACF;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;OACf,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;MACzD;IACF;AACH,GAAE,eAAe,EAAE;KACf,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;AACrB,OAAM,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO;MACnC;AACL,KAAI,GAAG,EAAE,UAAU,KAAK,EAAE;AAC1B,OAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/B,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAK;QACpC;MACF;IACF;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;AACV,OAAM,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM;MAClC;IACF;AACH,GAAE,kBAAkB,EAAE;KAClB,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK;MACpE;IACF;AACH,GAAE,gBAAgB,EAAE;KAChB,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI;MACjE;IACF;AACH,GAAE,OAAO,EAAE;KACP,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI;MAChE;IACF;AACH,GAAE,MAAM,EAAE;KACN,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK;MAChE;IACF;AACH,GAAE,SAAS,EAAE;KACT,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK;MACnE;KACD,GAAG,CAAC,KAAK,EAAE;AACf;AACA;AACA,OAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAChC,SAAQ,MAAM;QACP;AACP;AACA;AACA;AACA,OAAM,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAK;MACtC;IACF;AACH,GAAE,aAAa,EAAE;KACb,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK;MACpE;IACF;AACH,EAAC,EAAC;AACF,CAAA,sBAAsB,CAAC,aAAa,CAAC,SAAS,EAAE;AAChD;AACA,GAAE,UAAU,EAAE;KACV,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;MACzB;IACF;AACH;AACA,GAAE,MAAM,EAAE;KACN,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK;MAC/B;KACD,GAAG,CAAC,KAAK,EAAE;AACf,OAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAK;MACxB;IACF;AACH,EAAC,EAAC;AACF;AACA;CACA,QAAQ,CAAC,SAAS,GAAG,SAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE;AAC5B;GACE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AACrC,GAAE,IAAI,IAAG;AACT,GAAE,IAAI,KAAK,CAAC,UAAU,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAE;QAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;AACpC;AACA,KAAI,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAC;AAClD,UAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAE;UACzD,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAC;AAChD,KAAI,KAAK,CAAC,MAAM,CAAC,KAAK,GAAE;AACxB,IAAG,MAAM;AACT;AACA,KAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAC;IAC7C;AACH,GAAE,OAAO,GAAG;EACX;CACD,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,EAAC;AACxC,GAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACzB,KAAI,KAAK,CAAC,KAAK,GAAG,KAAI;KAClB,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAC;IAC/C;EACF;AACD,CAAA,SAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE;GACpC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAC;AACxD;AACA;GACE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACxF,KAAI,KAAK,CAAC,UAAU,GAAG,KAAI;AAC3B,KAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAC;KAClB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE;AAC3D,OAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAC;AAC7C,MAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;AAClC;AACA;AACA,OAAM,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AAC1C,OAAM,MAAM,WAAW;AACvB,SAAQ,CAAC,MAAM;UACN,MAAM,CAAC,WAAW;AAC3B;AACA;YACW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAC;OACnD,IAAI,WAAW,EAAE;SACf,MAAM,CAAC,OAAO,GAAE;QACjB;MACF;IACF;EACF;CACD,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,GAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,UAAS;GAC9E,IAAI,QAAQ,EAAE;KACZ,MAAM,CAAC,GAAG,GAAE;IACb;EACF;AACD,CAAA,QAAQ,CAAC,IAAI,GAAG,UAAU,QAAQ,EAAE,IAAI,EAAE;GACxC,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC;GACtC;AACD,CAAA,IAAI,mBAAkB;AACtB;AACA;AACA,CAAA,SAAS,cAAc,GAAG;AAC1B,GAAE,IAAI,kBAAkB,KAAK,SAAS,EAAE,kBAAkB,GAAG,GAAE;AAC/D,GAAE,OAAO,kBAAkB;EAC1B;AACD,CAAA,QAAQ,CAAC,OAAO,GAAG,UAAU,cAAc,EAAE,OAAO,EAAE;GACpD,OAAO,cAAc,EAAE,CAAC,mCAAmC,CAAC,cAAc,EAAE,OAAO,CAAC;GACrF;AACD,CAAA,QAAQ,CAAC,KAAK,GAAG,UAAU,cAAc,EAAE,OAAO,EAAE;GAClD,OAAO,cAAc,EAAE,CAAC,mCAAmC,CAAC,cAAc,EAAE,OAAO,CAAC;GACrF;AACD,CAAA,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE;GACtC,IAAI,IAAI,EAAE,sBAAqB;GAC/B,OAAO,IAAI,QAAQ,CAAC;AACtB,KAAI,UAAU;AACd,OAAM,CAAC,IAAI;SACH,CAAC,qBAAqB,GAAG,GAAG,CAAC,kBAAkB,MAAM,IAAI,IAAI,qBAAqB,KAAK,SAAS;AACxG,aAAY,qBAAqB;aACrB,GAAG,CAAC,UAAU,MAAM,IAAI,IAAI,IAAI,KAAK,SAAS;AAC1D,WAAU,IAAI;AACd,WAAU,IAAI;AACd,KAAI,GAAG,OAAO;AACd,KAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC3B,OAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAC;OAC/B,QAAQ,CAAC,GAAG,EAAC;MACd;AACL,IAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACd,GAAA;;;;;;;;;;;;CCrwCA,MAAM,OAAO,GAAGjJ,cAAmB,EAAA;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GAEA,MAAM;AACN,GAAE,mBAAmB;AACrB,GAAE,KAAK;AACP,GAAE,kCAAkC;AACpC,GAAE,oBAAoB;AACtB,GAAE,sBAAsB;AACxB,GAAE,oBAAoB;AACtB,GAAE,0BAA0B;AAC5B,GAAE,MAAM;AACR,GAAE,iBAAiB;AACnB,EAAC,GAAGC,kBAAiC,GAAA;AACrC,CAAA,QAAc,GAAG,SAAQ;CACzB,QAAQ,CAAC,aAAa,GAAG,cAAa;AACtC,CAAA,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAGC,aAAiB;AAC9C,CAAA,MAAM,MAAM,GAAGC,aAAmB,EAAA,CAAC,OAAM;AACzC,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGa,aAAiB;CACpC,MAAM,WAAW,GAAGc,cAAoB,GAAA;AACxC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAGE,qBAA6B,GAAA;AACxD,CAAA,MAAM,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAGC,YAAkB,GAAA;CACxE,MAAM;AACN,GAAE,oBAAoB;AACtB,GAAE,0BAA0B;AAC5B,GAAE,qBAAqB;AACvB,GAAE,sBAAsB;AACxB,GAAE,oBAAoB;AACtB,GAAE,2BAA2B;AAC7B,GAAE,sBAAsB;AACxB,GAAE,0BAA0B;AAC5B,GAAE,oBAAoB;EACrB,GAAGC,aAA4B,EAAA,CAAC,MAAK;AACtC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAG,YAAW;CACtC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC;AAC1D,CAAA,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAC;CACtC,SAAS,GAAG,GAAG,EAAE;AACjB,CAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,EAAC;AACzC,CAAA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAClD;AACA;AACA;AACA;AACA;GACE,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,QAAQ,GAAG,MAAM,YAAYU,aAAmB,GAAA;AACrF;AACA;AACA;GACE,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,EAAC;AACrD,GAAE,IAAI,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,kBAAkB,EAAC;AAC9F;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,aAAa,GAAG,OAAO;OACxB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,CAAC;OAClE,uBAAuB,CAAC,KAAK,EAAC;AACpC;AACA;AACA,GAAE,IAAI,CAAC,WAAW,GAAG,MAAK;AAC1B;AACA;AACA,GAAE,IAAI,CAAC,SAAS,GAAG,MAAK;AACxB;AACA,GAAE,IAAI,CAAC,MAAM,GAAG,MAAK;AACrB;AACA,GAAE,IAAI,CAAC,KAAK,GAAG,MAAK;AACpB;AACA,GAAE,IAAI,CAAC,QAAQ,GAAG,MAAK;AACvB;AACA;AACA,GAAE,IAAI,CAAC,SAAS,GAAG,MAAK;AACxB;AACA;AACA;AACA;AACA,GAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAC;AACjE,GAAE,IAAI,CAAC,aAAa,GAAG,CAAC,SAAQ;AAChC;AACA;AACA;AACA;GACE,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,eAAe,KAAK,OAAM;AACvE;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,MAAM,GAAG,EAAC;AACjB;AACA;AACA,GAAE,IAAI,CAAC,OAAO,GAAG,MAAK;AACtB;AACA;AACA,GAAE,IAAI,CAAC,MAAM,GAAG,EAAC;AACjB;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,GAAG,KAAI;AAClB;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,gBAAgB,GAAG,MAAK;AAC/B;AACA;GACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAC;AAChD;AACA;AACA,GAAE,IAAI,CAAC,OAAO,GAAG,KAAI;AACrB;AACA;AACA,GAAE,IAAI,CAAC,QAAQ,GAAG,EAAC;AACnB;AACA;AACA;AACA,GAAE,IAAI,CAAC,kBAAkB,GAAG,KAAI;GAC9B,WAAW,CAAC,IAAI,EAAC;AACnB;AACA;AACA;AACA,GAAE,IAAI,CAAC,SAAS,GAAG,EAAC;AACpB;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,WAAW,GAAG,KAAI;AACzB;AACA;AACA;AACA,GAAE,IAAI,CAAC,WAAW,GAAG,MAAK;AAC1B;AACA;AACA,GAAE,IAAI,CAAC,YAAY,GAAG,MAAK;AAC3B;AACA;GACE,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,MAAK;AAC1D;AACA;GACE,IAAI,CAAC,WAAW,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,MAAK;AAC9D;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,OAAO,GAAG,KAAI;AACrB;AACA;AACA,GAAE,IAAI,CAAC,MAAM,GAAG,MAAK;AACrB;AACA;AACA;AACA,GAAE,IAAI,CAAC,YAAY,GAAG,MAAK;AAC3B,GAAE,IAAI,CAAC,WAAW,CAAC,GAAG,GAAE;EACvB;CACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,GAAE,KAAK,CAAC,QAAQ,GAAG,GAAE;AACrB,GAAE,KAAK,CAAC,aAAa,GAAG,EAAC;AACzB,GAAE,KAAK,CAAC,UAAU,GAAG,KAAI;AACzB,GAAE,KAAK,CAAC,OAAO,GAAG,KAAI;EACrB;AACD,CAAA,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;GACvD,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;GAC9D;AACD,CAAA,oBAAoB,CAAC,aAAa,CAAC,SAAS,EAAE,sBAAsB,EAAE;GACpE,SAAS,EAAE,IAAI;AACjB,GAAE,GAAG,GAAG;KACJ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;IACjD;AACH,EAAC,EAAC;CACF,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,QAAQ,GAAG,IAAI,YAAYA,aAAmB,GAAA;AACtD,GAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,kCAAkC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC;AACpG,GAAE,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAC;GAChE,IAAI,OAAO,EAAE;AACf,KAAI,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAK;AACxE,KAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAM;AAC3E,KAAI,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAO;AAC9E,KAAI,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAK;AACxE,KAAI,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAS;AACpF,KAAI,IAAI,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAC;IACzD;AACH,GAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;AAC5B,GAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;AACpC,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACrC,KAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,OAAM,WAAW,CAAC,IAAI,EAAE,KAAK,EAAC;MACzB;AACL,KAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAC;AAC5B,IAAG,EAAC;EACH;AACD,CAAA,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,EAAE;GAChD,SAAS,EAAE,IAAI;AACjB,GAAE,KAAK,EAAE,UAAU,MAAM,EAAE;KACvB,IAAI,kCAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,IAAI;AACrE,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,OAAO,KAAK;AACvC,KAAI,OAAO,MAAM,IAAI,MAAM,CAAC,cAAc,YAAY,aAAa;IAChE;AACH,EAAC,EAAC;AACF;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtC,GAAE,cAAc,CAAC,IAAI,EAAE,IAAI,sBAAsB,EAAE,EAAC;GACnD;CACD,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC7C,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;KAClC,EAAE,GAAG,SAAQ;AACjB,KAAI,QAAQ,GAAG,KAAK,CAAC,gBAAe;AACpC,IAAG,MAAM;KACL,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,gBAAe;AACnD,UAAS,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,oBAAoB,CAAC,QAAQ,CAAC;KACxG,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,EAAE,GAAG,IAAG;IACvC;AACH,GAAE,IAAI,KAAK,KAAK,IAAI,EAAE;KAClB,MAAM,IAAI,sBAAsB,EAAE;AACtC,IAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAChC,KAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,OAAM,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE;SACjC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAC;SACpC,QAAQ,GAAG,SAAQ;QACpB;AACP,MAAK,MAAM,IAAI,KAAK,YAAY,MAAM,EAAE;OAClC,QAAQ,GAAG,SAAQ;MACpB,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC5C,OAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAC;OACzC,QAAQ,GAAG,SAAQ;AACzB,MAAK,MAAM;AACX,OAAM,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC;MACnF;IACF;AACH,GAAE,IAAI,IAAG;AACT,GAAE,IAAI,KAAK,CAAC,MAAM,EAAE;AACpB,KAAI,GAAG,GAAG,IAAI,0BAA0B,GAAE;AAC1C,IAAG,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;AAC9B,KAAI,GAAG,GAAG,IAAI,oBAAoB,CAAC,OAAO,EAAC;IACxC;GACD,IAAI,GAAG,EAAE;AACX,KAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAC;AAC7B,KAAI,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAC;AACrC,KAAI,OAAO,GAAG;IACX;GACD,KAAK,CAAC,SAAS,GAAE;AACnB,GAAE,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;EACzD;CACD,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC1D,GAAE,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,IAAI;GAClD;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACtC,GAAE,IAAI,CAAC,cAAc,CAAC,MAAM,GAAE;GAC7B;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AACxC,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC,GAAE,IAAI,KAAK,CAAC,MAAM,EAAE;KAChB,KAAK,CAAC,MAAM,GAAE;KACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAC;IAC7C;GACF;CACD,QAAQ,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AAC9E;GACE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAC;AACnF,GAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,oBAAoB,CAAC,QAAQ,CAAC;AAC5E,GAAE,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,SAAQ;AAChD,GAAE,OAAO,IAAI;GACZ;AACD;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;GAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAM;AACjD,GAAE,KAAK,CAAC,MAAM,IAAI,IAAG;AACrB;AACA;GACE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,cAAa;AAChD;GACE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,GAAG,KAAI;AAClC,GAAE,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAC5E,KAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxB,OAAM,KAAK;AACX,OAAM,QAAQ;AACd,OAAM,QAAQ;AACd,MAAK,EAAC;KACF,IAAI,KAAK,CAAC,UAAU,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACnD,OAAM,KAAK,CAAC,UAAU,GAAG,MAAK;MACzB;KACD,IAAI,KAAK,CAAC,OAAO,IAAI,QAAQ,KAAK,GAAG,EAAE;AAC3C,OAAM,KAAK,CAAC,OAAO,GAAG,MAAK;MACtB;AACL,IAAG,MAAM;AACT,KAAI,KAAK,CAAC,QAAQ,GAAG,IAAG;AACxB,KAAI,KAAK,CAAC,OAAO,GAAG,SAAQ;AAC5B,KAAI,KAAK,CAAC,OAAO,GAAG,KAAI;AACxB,KAAI,KAAK,CAAC,IAAI,GAAG,KAAI;KACjB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAC;AACjD,KAAI,KAAK,CAAC,IAAI,GAAG,MAAK;IACnB;AACH;AACA;AACA;GACE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;EACjD;AACD,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAClE,GAAE,KAAK,CAAC,QAAQ,GAAG,IAAG;AACtB,GAAE,KAAK,CAAC,OAAO,GAAG,GAAE;AACpB,GAAE,KAAK,CAAC,OAAO,GAAG,KAAI;AACtB,GAAE,KAAK,CAAC,IAAI,GAAG,KAAI;AACnB,GAAE,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAC;AACvE,QAAO,IAAI,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAC;AACpD,GAAE,KAAK,CAAC,IAAI,GAAG,MAAK;EACnB;CACD,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;GAC3C,EAAE,KAAK,CAAC,UAAS;GACjB,EAAE,CAAC,EAAE,EAAC;AACR;AACA;AACA;AACA;GACE,WAAW,CAAC,KAAK,EAAC;AACpB;AACA,GAAE,cAAc,CAAC,MAAM,EAAE,EAAE,EAAC;EAC3B;AACD,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE;AAC7B,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAc;AACrC,GAAE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAI;AACzB,GAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAO;AAC1B,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,cAAc,CAAC,MAAM,EAAE,IAAI,qBAAqB,EAAE,EAAC;AACvD,KAAI,MAAM;IACP;AACH,GAAE,KAAK,CAAC,OAAO,GAAG,MAAK;AACvB,GAAE,KAAK,CAAC,OAAO,GAAG,KAAI;AACtB,GAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAQ;AAChC,GAAE,KAAK,CAAC,QAAQ,GAAG,EAAC;GAClB,IAAI,EAAE,EAAE;AACV;KACI,EAAE,CAAC,MAAK;AACZ;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACxB,OAAM,KAAK,CAAC,OAAO,GAAG,GAAE;MACnB;AACL;AACA;AACA;KACI,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AACjE,OAAM,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,GAAE;MACnC;KACD,IAAI,IAAI,EAAE;AACd,OAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAC;AAC3D,MAAK,MAAM;OACL,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAC;MACpC;AACL,IAAG,MAAM;KACL,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE;AACrD,OAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAC;MAC3B;KACD,IAAI,IAAI,EAAE;AACd;AACA;AACA;AACA;AACA,OAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE;AACnF,SAAQ,KAAK,CAAC,kBAAkB,CAAC,KAAK,GAAE;AACxC,QAAO,MAAM;SACL,KAAK,CAAC,kBAAkB,GAAG;WACzB,KAAK,EAAE,CAAC;AAClB,WAAU,EAAE;AACZ,WAAU,MAAM;AAChB,WAAU,KAAK;WACN;SACD,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,kBAAkB,EAAC;QAC3D;AACP,MAAK,MAAM;OACL,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAC;MACjC;IACF;EACF;CACD,SAAS,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;AACtD,GAAE,KAAK,CAAC,kBAAkB,GAAG,KAAI;GAC/B,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;EAC5C;CACD,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;GAC5C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAS;GAC7F,IAAI,SAAS,EAAE;AACjB,KAAI,KAAK,CAAC,SAAS,GAAG,MAAK;AAC3B,KAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAC;IACrB;AACH,GAAE,OAAO,KAAK,EAAE,GAAG,CAAC,EAAE;KAClB,KAAK,CAAC,SAAS,GAAE;AACrB,KAAI,EAAE,GAAE;IACL;AACH,GAAE,IAAI,KAAK,CAAC,SAAS,EAAE;KACnB,WAAW,CAAC,KAAK,EAAC;IACnB;AACH,GAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAC;EAC3B;AACD;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,GAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,KAAI,MAAM;IACP;AACH,GAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpE,KAAI,IAAI,eAAc;AACtB,KAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAC;KAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAM;AACnD,KAAI,KAAK,CAAC,MAAM,IAAI,IAAG;AACvB,KAAI,QAAQ;OACN,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,cAAc,KAAK,SAAS;AAC/E,WAAU,cAAc;AACxB,WAAU,IAAI,oBAAoB,CAAC,OAAO,CAAC;OACtC;IACF;GACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC;AACxD,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,KAAI,IAAI,gBAAe;KACnB,iBAAiB,CAAC,CAAC,CAAC;OAClB,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,MAAM,IAAI,IAAI,eAAe,KAAK,SAAS;AACjF,WAAU,eAAe;AACzB,WAAU,IAAI,oBAAoB,CAAC,KAAK,CAAC;OACpC;IACF;GACD,WAAW,CAAC,KAAK,EAAC;EACnB;AACD;AACA;AACA,CAAA,SAAS,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE;AACpC,GAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACvF,KAAI,MAAM;IACP;GACD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAK;AACvD,GAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAa;GACtD,IAAI,CAAC,cAAc,EAAE;AACvB,KAAI,MAAM;IACP;GACD,IAAI,CAAC,GAAG,cAAa;AACvB,GAAE,KAAK,CAAC,gBAAgB,GAAG,KAAI;GAC7B,IAAI,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5C,KAAI,KAAK,CAAC,SAAS,IAAI,cAAc,GAAG,EAAC;AACzC,KAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO;AAClC,SAAQ,GAAG;SACH,CAAC,GAAG,KAAK;AACjB,WAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;aACxC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAC;YAC1B;WACF;AACT;AACA;AACA,KAAI,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,EAAC;AACzF,KAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,WAAU;AACxC,KAAI,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAC;KAChE,WAAW,CAAC,KAAK,EAAC;AACtB,IAAG,MAAM;AACT,KAAI,GAAG;AACP,OAAM,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAC;AACvD,OAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAI;OACpB,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAM;AAC/C,OAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC;MAC9D,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACnD,KAAI,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE;OACzB,WAAW,CAAC,KAAK,EAAC;AACxB,MAAK,MAAM,IAAI,CAAC,GAAG,GAAG,EAAE;AACxB,OAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAC;AAC3B,OAAM,KAAK,CAAC,aAAa,GAAG,EAAC;AAC7B,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,aAAa,GAAG,EAAC;MACxB;IACF;AACH,GAAE,KAAK,CAAC,gBAAgB,GAAG,MAAK;EAC/B;CACD,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3D,GAAE,IAAI,IAAI,CAAC,OAAO,EAAE;KAChB,IAAI,CAAC,OAAO;OACV;SACE;AACR,WAAU,KAAK;AACf,WAAU,QAAQ;UACT;QACF;AACP,OAAM,EAAE;OACH;AACL,IAAG,MAAM;AACT,KAAI,MAAM,IAAI,0BAA0B,CAAC,UAAU,CAAC;IACjD;GACF;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,KAAI;CACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AACxD,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC,GAAE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;KAC/B,EAAE,GAAG,MAAK;KACV,KAAK,GAAG,KAAI;KACZ,QAAQ,GAAG,KAAI;AACnB,IAAG,MAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;KACzC,EAAE,GAAG,SAAQ;KACb,QAAQ,GAAG,KAAI;IAChB;AACH,GAAE,IAAI,IAAG;GACP,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;KACzC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC;AAC7C,KAAI,IAAI,GAAG,YAAY,KAAK,EAAE;OACxB,GAAG,GAAG,IAAG;MACV;IACF;AACH;AACA;AACA,GAAE,IAAI,KAAK,CAAC,MAAM,EAAE;AACpB,KAAI,KAAK,CAAC,MAAM,GAAG,EAAC;KAChB,IAAI,CAAC,MAAM,GAAE;IACd;GACD,IAAI,GAAG,EAAE,CAER,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,KAAK,CAAC,MAAM,GAAG,KAAI;AACvB,KAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;AAClC,KAAI,KAAK,CAAC,KAAK,GAAG,KAAI;AACtB,IAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC7B,KAAI,GAAG,GAAG,IAAI,2BAA2B,CAAC,KAAK,EAAC;AAChD,IAAG,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;AAC9B,KAAI,GAAG,GAAG,IAAI,oBAAoB,CAAC,KAAK,EAAC;IACtC;AACH,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC/B,OAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAC;AAC/B,MAAK,MAAM;OACL,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC;MAC5B;IACF;AACH,GAAE,OAAO,IAAI;GACZ;CACD,SAAS,UAAU,CAAC,KAAK,EAAE;GACzB;KACE,KAAK,CAAC,MAAM;KACZ,CAAC,KAAK,CAAC,SAAS;KAChB,KAAK,CAAC,WAAW;AACrB,KAAI,KAAK,CAAC,MAAM,KAAK,CAAC;KAClB,CAAC,KAAK,CAAC,OAAO;AAClB,KAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;KAC3B,CAAC,KAAK,CAAC,QAAQ;KACf,CAAC,KAAK,CAAC,OAAO;KACd,CAAC,KAAK,CAAC,YAAY;KACnB,CAAC,KAAK,CAAC,YAAY;IACpB;EACF;AACD,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;GAChC,IAAI,MAAM,GAAG,MAAK;AACpB,GAAE,SAAS,QAAQ,CAAC,GAAG,EAAE;KACrB,IAAI,MAAM,EAAE;AAChB,OAAM,cAAc,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,qBAAqB,EAAE,EAAC;AAC/F,OAAM,MAAM;MACP;KACD,MAAM,GAAG,KAAI;KACb,KAAK,CAAC,SAAS,GAAE;KACjB,IAAI,GAAG,EAAE;OACP,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC;AAC5D,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,SAAQ,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC;QAC1B;OACD,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAC;AAC7C,MAAK,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AAClC,OAAM,KAAK,CAAC,WAAW,GAAG,KAAI;AAC9B,OAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAC;AAC9B;AACA;AACA;OACM,KAAK,CAAC,SAAS,GAAE;OACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC;MACxC;IACF;AACH,GAAE,KAAK,CAAC,IAAI,GAAG,KAAI;GACjB,KAAK,CAAC,SAAS,GAAE;AACnB,GAAE,IAAI;AACN,KAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAC;IACxB,CAAC,OAAO,GAAG,EAAE;KACZ,QAAQ,CAAC,GAAG,EAAC;IACd;AACH,GAAE,KAAK,CAAC,IAAI,GAAG,MAAK;EACnB;AACD,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;GAChC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AAChD,KAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACjE,OAAM,KAAK,CAAC,WAAW,GAAG,KAAI;AAC9B,OAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAC;AAC9B,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,WAAW,GAAG,KAAI;AAC9B,OAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAC;MACzB;IACF;EACF;AACD,CAAA,SAAS,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1C,GAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACzB,KAAI,SAAS,CAAC,MAAM,EAAE,KAAK,EAAC;AAC5B,KAAI,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE;OACzB,IAAI,IAAI,EAAE;SACR,KAAK,CAAC,SAAS,GAAE;SACjB,OAAO,CAAC,QAAQ;AACxB,WAAU,CAAC,MAAM,EAAE,KAAK,KAAK;AAC7B,aAAY,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACnC,eAAc,MAAM,CAAC,MAAM,EAAE,KAAK,EAAC;AACnC,cAAa,MAAM;eACL,KAAK,CAAC,SAAS,GAAE;cAClB;YACF;AACX,WAAU,MAAM;AAChB,WAAU,KAAK;WACN;AACT,QAAO,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;SAC5B,KAAK,CAAC,SAAS,GAAE;AACzB,SAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,EAAC;QACtB;MACF;IACF;EACF;AACD,CAAA,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;GAC7B,KAAK,CAAC,SAAS,GAAE;AACnB,GAAE,KAAK,CAAC,QAAQ,GAAG,KAAI;GACrB,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC;AACxD,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,KAAI,iBAAiB,CAAC,CAAC,CAAC,GAAE;IACvB;AACH,GAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC;AACvB,GAAE,IAAI,KAAK,CAAC,WAAW,EAAE;AACzB;AACA;AACA,KAAI,MAAM,MAAM,GAAG,MAAM,CAAC,eAAc;AACxC,KAAI,MAAM,WAAW;AACrB,OAAM,CAAC,MAAM;QACN,MAAM,CAAC,WAAW;AACzB;AACA;UACS,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAC;KACrD,IAAI,WAAW,EAAE;OACf,MAAM,CAAC,OAAO,GAAE;MACjB;IACF;EACF;AACD,CAAA,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3C,GAAE,MAAM,EAAE;KACN,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK;MAChE;IACF;AACH,GAAE,SAAS,EAAE;KACT,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK;MACnE;KACD,GAAG,CAAC,KAAK,EAAE;AACf;AACA,OAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/B,SAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAK;QACtC;MACF;IACF;AACH,GAAE,QAAQ,EAAE;KACR,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,MAAM,CAAC,GAAG,IAAI,CAAC,eAAc;AACnC;AACA;AACA;AACA;AACA,OAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK;MAC1F;KACD,GAAG,CAAC,GAAG,EAAE;AACb;AACA,OAAM,IAAI,IAAI,CAAC,cAAc,EAAE;SACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAG;QACrC;MACF;IACF;AACH,GAAE,gBAAgB,EAAE;KAChB,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAK;MAClE;IACF;AACH,GAAE,kBAAkB,EAAE;KAClB,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK;MACpE;IACF;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;MAC9D;IACF;AACH,GAAE,aAAa,EAAE;KACb,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK;MAChE;IACF;AACH,GAAE,iBAAiB,EAAE;KACjB,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,MAAM,MAAM,GAAG,IAAI,CAAC,eAAc;AACxC,OAAM,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC/B,OAAM,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS;MAC/D;IACF;AACH,GAAE,qBAAqB,EAAE;KACrB,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa;MAChE;IACF;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;MAC5D;IACF;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;MACzD;IACF;AACH,GAAE,OAAO,EAAE;KACP,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;AACrB,KAAI,GAAG,GAAG;OACJ,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI;MAChE;IACF;AACH,GAAE,eAAe,EAAE;KACf,SAAS,EAAE,IAAI;KACf,UAAU,EAAE,KAAK;KACjB,GAAG,EAAE,YAAY;AACrB,OAAM,OAAO,CAAC;AACd,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,KAAK;UACrC,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AACtE,SAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;QAC9B;MACF;IACF;AACH,EAAC,EAAC;AACF,CAAA,MAAM,OAAO,GAAG,WAAW,CAAC,QAAO;CACnC,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE,EAAE,EAAE;AAChD,GAAE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAc;AACnC;AACA;GACE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE;AACtG,KAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAC;IACrC;GACD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAC;AAC7B,GAAE,OAAO,IAAI;GACZ;AACD,CAAA,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC,UAAS;CACrD,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,EAAE,EAAE;GAC/C,EAAE,CAAC,GAAG,EAAC;GACR;CACD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,sBAAsB,CAAC,GAAG,UAAU,GAAG,EAAE;AAC/D,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAC;GAClB;AACD,CAAA,IAAI,mBAAkB;AACtB;AACA;AACA,CAAA,SAAS,cAAc,GAAG;AAC1B,GAAE,IAAI,kBAAkB,KAAK,SAAS,EAAE,kBAAkB,GAAG,GAAE;AAC/D,GAAE,OAAO,kBAAkB;EAC1B;AACD,CAAA,QAAQ,CAAC,OAAO,GAAG,UAAU,cAAc,EAAE,OAAO,EAAE;GACpD,OAAO,cAAc,EAAE,CAAC,mCAAmC,CAAC,cAAc,EAAE,OAAO,CAAC;GACrF;AACD,CAAA,QAAQ,CAAC,KAAK,GAAG,UAAU,cAAc,EAAE;AAC3C,GAAE,OAAO,cAAc,EAAE,CAAC,mCAAmC,CAAC,cAAc,CAAC;AAC7E,GAAA;;;;;;;;;;;;CC9yBA,MAAM,OAAO,GAAG5C,cAAmB,EAAA;AACnC;AACA;AACA;GAEA,MAAM,YAAY,GAAGC,aAAiB;CACtC,MAAM;AACN,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,YAAY;AACd,GAAE,oBAAoB;AACtB,GAAE,oBAAoB;AACtB,GAAE,kBAAkB;AACpB,GAAE,gBAAgB;AAClB,GAAE,gBAAgB;AAClB,EAAC,GAAGC,YAAkB,GAAA;CACtB,MAAM,GAAG,GAAGC,kBAA0B,GAAA;CACtC,MAAM;AACN,GAAE,UAAU;AACZ,GAAE,KAAK,EAAE,EAAE,oBAAoB,EAAE,wBAAwB,EAAE;AAC3D,EAAC,GAAGa,aAA4B,GAAA;AAChC,CAAA,MAAM,EAAE,SAAS,EAAE,GAAGc,cAAoB,GAAA;CAC1C,MAAM,MAAM,GAAGE,aAAmB,GAAA;CAClC,MAAM,QAAQ,GAAGC,eAAqB,GAAA;CACtC,MAAM,QAAQ,GAAGC,eAAqB,GAAA;AACtC,CAAA,MAAM,EAAE,qBAAqB,EAAE,GAAGU,WAA0B,GAAA;CAC5D,MAAM,IAAI,GAAGgG,WAAiB,GAAA;CAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,KAAI;AACjD,CAAA,MAAM,MAAM;GACV,OAAO,IAAI,KAAK,WAAW;AAC7B,OAAM,SAAS,MAAM,CAAC,CAAC,EAAE;SACjB,OAAO,CAAC,YAAY,IAAI;QACzB;AACP,OAAM,SAAS,MAAM,CAAC,CAAC,EAAE;AACzB,SAAQ,OAAO,KAAK;SACb;CACP,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAIC,YAA2B,CAAC,gBAAe;AACjG,CAAA,MAAM,EAAE,qBAAqB,EAAE,GAAGC,kBAAiC,GAAA;AACnE;AACA;CACA,MAAM,SAAS,SAAS,MAAM,CAAC;GAC7B,WAAW,CAAC,OAAO,EAAE;KACnB,KAAK,CAAC,OAAO,EAAC;AAClB;AACA;AACA;AACA,KAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,MAAM,KAAK,EAAE;AAC9F,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAK;AAC1C,OAAM,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAI;AACtC,OAAM,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAI;MACtC;AACL,KAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,MAAM,KAAK,EAAE;AAC9F,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAK;AAC1C,OAAM,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAI;AACvC,OAAM,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAI;AACtC,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAI;MACpC;IACF;EACF;AACD,CAAA,SAAc,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AAChD,GAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE;AAChC,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;KAC9B,OAAO,UAAU,CAAC;OAChB,QAAQ,EAAE,IAAI;AACpB,MAAK,CAAC;IACH;AACH,GAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;KAC9B,OAAO,UAAU,CAAC;OAChB,QAAQ,EAAE,IAAI;AACpB,MAAK,CAAC;IACH;AACH,GAAE,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;KACtB,OAAO,UAAU,CAAC;OAChB,QAAQ,EAAE,KAAK;OACf,QAAQ,EAAE,KAAK;AACrB,MAAK,CAAC;IACH;AACH,GAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;KAC1B,OAAO,UAAU,CAAC;AACtB,OAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACtC,MAAK,CAAC;IACH;AACH,GAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;KAC1B,OAAO,UAAU,CAAC;AACtB,OAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACtC,MAAK,CAAC;IACH;AACH,GAAE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAClC,KAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,IAAI,EAAC;AAC/D,KAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AAC3B,OAAM,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AACpC;SACQ,UAAU,EAAE,IAAI;AACxB,SAAQ,KAAK;AACb,SAAQ,KAAK;AACb,SAAQ,OAAO;AACf,QAAO,CAAC;MACH;AACL,KAAI,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,KAAI;AAC/E,KAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AACpC,OAAM,IAAI,EAAC;OACL,MAAM,OAAO,GAAG,qBAAqB;AAC3C,SAAQ,IAAI;AACZ,SAAQ,KAAK;SACL,CAAC,GAAG,KAAK;AACjB,WAAU,IAAI,GAAG,IAAI,IAAI,EAAE;aACf,MAAM,IAAI,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC;YACzD;UACF;SACD,CAAC,GAAG,KAAK;AACjB,WAAU,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;UAClB;SACF;AACP,OAAM,QAAQ,CAAC,GAAG,IAAI,SAAS,CAAC;AAChC;SACQ,UAAU,EAAE,IAAI;SAChB,QAAQ,EAAE,KAAK;AACvB,SAAQ,KAAK;SACL,KAAK,CAAC,EAAE,EAAE;WACR,KAAK,CAAC,YAAY;AAC5B,aAAY,IAAI;AAChB,eAAc,MAAM,QAAO;AAC3B,eAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAC;cAC3B,CAAC,OAAO,GAAG,EAAE;AAC1B,eAAc,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAC;cAC1B;AACb,YAAW,EAAC;UACH;AACT,SAAQ,OAAO;AACf,QAAO,CAAC,CAAC;MACJ;KACD,MAAM,IAAI,wBAAwB,CAAC,0CAA0C,EAAE,IAAI,EAAE,KAAK,CAAC;IAC5F;AACH,GAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACpB,KAAI,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC;AACH,GAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACxB,KAAI,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACjC;OACM,UAAU,EAAE,IAAI;OAChB,QAAQ,EAAE,KAAK;AACrB,MAAK,CAAC;IACH;GACD;AACF,KAAI,gBAAgB,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrF,KAAI,gBAAgB,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;KACjF;AACJ,KAAI,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/B;GACD;AACF,KAAI,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;AACzF,KAAI,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;KACrF;AACJ,KAAI,MAAM,QAAQ;OACZ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ;AAC1D,WAAU,oBAAoB,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/F,aAAY,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAC/C,eAAc,SAAS;eACT,IAAI,CAAC,QAAQ;AAC3B,aAAY,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,WAAU,UAAS;AACnB,KAAI,MAAM,QAAQ;OACZ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ;AAC1D,WAAU,oBAAoB,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/F,aAAY,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAC/C,eAAc,SAAS;eACT,IAAI,CAAC,QAAQ;AAC3B,aAAY,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpC,WAAU,UAAS;KACf,OAAO,UAAU,CAAC;AACtB,OAAM,QAAQ;AACd,OAAM,QAAQ;AACd,MAAK,CAAC;IACH;AACH,GAAE,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,KAAI;AAC1E,GAAE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAClC,KAAI,IAAI,EAAC;AACT,KAAI,qBAAqB;AACzB,OAAM,IAAI;AACV,OAAM,IAAI;OACJ,CAAC,GAAG,KAAK;AACf,SAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;AACzB,WAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAC;UACZ;AACT,SAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC;QACb;OACD,CAAC,GAAG,KAAK;AACf,SAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;QAClB;OACF;AACL,KAAI,QAAQ,CAAC,GAAG,IAAI,SAAS,CAAC;OACxB,UAAU,EAAE,IAAI;OAChB,QAAQ,EAAE,KAAK;OACf,IAAI,GAAG,EAAE;AACf,MAAK,CAAC,CAAC;IACJ;GACD,MAAM,IAAI,oBAAoB;AAChC,KAAI,IAAI;KACJ;AACJ,OAAM,MAAM;AACZ,OAAM,gBAAgB;AACtB,OAAM,gBAAgB;AACtB,OAAM,QAAQ;AACd,OAAM,UAAU;AAChB,OAAM,eAAe;AACrB,OAAM,UAAU;AAChB,OAAM,6BAA6B;AACnC,OAAM,SAAS;MACV;AACL,KAAI,IAAI;IACL;GACF;CACD,SAAS,YAAY,CAAC,EAAE,EAAE;GACxB,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,qBAAqB,GAAE;AACpD,GAAE,MAAM,EAAE,GAAG,IAAI,eAAe,GAAE;AAClC,GAAE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAM;GACxB,MAAM,KAAK,GAAG,EAAE;AAClB,KAAI,CAAC,mBAAmB;OAClB,OAAO,IAAI,EAAE;SACX,MAAM,QAAQ,GAAG,QAAO;SACxB,OAAO,GAAG,KAAI;SACd,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,SAAQ;AAClD,SAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAC;SACpB,IAAI,IAAI,EAAE,MAAM;SAChB,IAAI,MAAM,CAAC,OAAO;AAC1B,WAAU,MAAM,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1C,aAAY,KAAK,EAAE,MAAM,CAAC,MAAM;AAChC,YAAW,CAAC;UACH,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,EAAC;AACzD,SAAQ,MAAM,MAAK;QACZ;AACP,MAAK,GAAG;KACJ;AACJ,OAAM,MAAM;MACP;KACF;AACH,GAAE,OAAO;AACT,KAAI,KAAK;AACT,KAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;OACzB,MAAM,QAAQ,GAAG,QAAO;OACxB,OAAO,GAAG,KAAI;AACpB,OAAM,QAAQ,CAAC;AACf,SAAQ,KAAK;SACL,IAAI,EAAE,KAAK;AACnB,SAAQ,EAAE;AACV,QAAO,EAAC;MACH;KACD,KAAK,CAAC,EAAE,EAAE;OACR,MAAM,QAAQ,GAAG,QAAO;OACxB,OAAO,GAAG,KAAI;AACpB,OAAM,QAAQ,CAAC;SACP,IAAI,EAAE,IAAI;AAClB,SAAQ,EAAE;AACV,QAAO,EAAC;MACH;AACL,KAAI,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE;OACf,EAAE,CAAC,KAAK,GAAE;OACV,EAAE,CAAC,GAAG,EAAC;MACR;IACF;EACF;CACD,SAAS,UAAU,CAAC,IAAI,EAAE;GACxB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAQ;AACpH,GAAE,MAAM,CAAC,GAAG,IAAI,CAAC,SAAQ;GACvB,IAAI,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAC;GAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAC;AAChC,GAAE,IAAI,QAAO;AACb,GAAE,IAAI,SAAQ;AACd,GAAE,IAAI,WAAU;AAChB,GAAE,IAAI,QAAO;AACb,GAAE,IAAI,EAAC;AACP,GAAE,SAAS,UAAU,CAAC,GAAG,EAAE;KACvB,MAAM,EAAE,GAAG,QAAO;KAClB,OAAO,GAAG,KAAI;KACd,IAAI,EAAE,EAAE;OACN,EAAE,CAAC,GAAG,EAAC;MACR,MAAM,IAAI,GAAG,EAAE;AACpB,OAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAC;MACf;IACF;AACH;AACA;AACA;AACA;AACA,GAAE,CAAC,GAAG,IAAI,SAAS,CAAC;AACpB;AACA,KAAI,kBAAkB,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,CAAC;AACjF,KAAI,kBAAkB,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,CAAC;AACjF,KAAI,QAAQ;AACZ,KAAI,QAAQ;AACZ,IAAG,EAAC;GACF,IAAI,QAAQ,EAAE;AAChB,KAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;OACd,QAAQ,GAAG,MAAK;OAChB,IAAI,GAAG,EAAE;AACf,SAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;QAClB;OACD,UAAU,CAAC,GAAG,EAAC;AACrB,MAAK,EAAC;KACF,CAAC,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;OAC9C,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACpC,SAAQ,QAAQ,GAAE;AAClB,QAAO,MAAM;SACL,OAAO,GAAG,SAAQ;QACnB;OACF;AACL,KAAI,CAAC,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;OAC7B,CAAC,CAAC,GAAG,GAAE;OACP,QAAQ,GAAG,SAAQ;OACpB;AACL,KAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY;OACxB,IAAI,OAAO,EAAE;SACX,MAAM,EAAE,GAAG,QAAO;SAClB,OAAO,GAAG,KAAI;AACtB,SAAQ,EAAE,GAAE;QACL;AACP,MAAK,EAAC;AACN,KAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY;OACzB,IAAI,QAAQ,EAAE;SACZ,MAAM,EAAE,GAAG,SAAQ;SACnB,QAAQ,GAAG,KAAI;AACvB,SAAQ,EAAE,GAAE;QACL;AACP,MAAK,EAAC;IACH;GACD,IAAI,QAAQ,EAAE;AAChB,KAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;OACd,QAAQ,GAAG,MAAK;OAChB,IAAI,GAAG,EAAE;AACf,SAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;QAClB;OACD,UAAU,CAAC,GAAG,EAAC;AACrB,MAAK,EAAC;AACN,KAAI,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY;OAC3B,IAAI,UAAU,EAAE;SACd,MAAM,EAAE,GAAG,WAAU;SACrB,UAAU,GAAG,KAAI;AACzB,SAAQ,EAAE,GAAE;QACL;AACP,MAAK,EAAC;AACN,KAAI,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY;AAC5B,OAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC;AAClB,MAAK,EAAC;AACN,KAAI,CAAC,CAAC,KAAK,GAAG,YAAY;OACpB,OAAO,IAAI,EAAE;AACnB,SAAQ,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,GAAE;AAC5B,SAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,WAAU,UAAU,GAAG,CAAC,CAAC,MAAK;AAC9B,WAAU,MAAM;UACP;SACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC1B,WAAU,MAAM;UACP;QACF;OACF;IACF;GACD,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE;AACxC,KAAI,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,OAAM,GAAG,GAAG,IAAI,UAAU,GAAE;MACvB;KACD,UAAU,GAAG,KAAI;KACjB,OAAO,GAAG,KAAI;KACd,QAAQ,GAAG,KAAI;AACnB,KAAI,IAAI,OAAO,KAAK,IAAI,EAAE;OACpB,QAAQ,CAAC,GAAG,EAAC;AACnB,MAAK,MAAM;OACL,OAAO,GAAG,SAAQ;AACxB,OAAM,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;AACvB,OAAM,SAAS,CAAC,CAAC,EAAE,GAAG,EAAC;MAClB;KACF;AACH,GAAE,OAAO,CAAC;AACV,EAAA;;;;;;;;;;AC9VA;CACA,MAAM;AACN,GAAE,sBAAsB;AACxB,GAAE,8BAA8B;AAChC,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,EAAC,GAAG9I,kBAAiC,GAAA;AACrC,CAAA,MAAc,GAAG,OAAM;CACvB,MAAM,QAAQ,GAAGC,eAAqB,GAAA;CACtC,MAAM,QAAQ,GAAGC,eAAqB,GAAA;CACtC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAC;AAC1D,CAAA,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAC;AACtC,CAAA;GACE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAC;AAC7C;AACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,KAAI,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAC;KACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAC;IACrF;EACF;CACD,SAAS,MAAM,CAAC,OAAO,EAAE;AACzB,GAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;AAC3D,GAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;AAC9B,GAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;GAC5B,IAAI,OAAO,EAAE;KACX,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,MAAK;AACxD,KAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;AACpC,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAK;AAC1C,OAAM,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAI;AACtC,OAAM,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAI;MACtC;AACL,KAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;AACpC,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAK;AAC1C,OAAM,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAI;AACvC,OAAM,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAI;AACtC,OAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,KAAI;MACpC;AACL,IAAG,MAAM;AACT,KAAI,IAAI,CAAC,aAAa,GAAG,KAAI;IAC1B;EACF;AACD,CAAA,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE;AACzC,GAAE,QAAQ,EAAE;KACR,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE;AACH,GAAE,qBAAqB,EAAE;KACrB,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAC/E;AACH,GAAE,kBAAkB,EAAE;KAClB,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAC5E;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACxE;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACxE;AACH,GAAE,gBAAgB,EAAE;KAChB,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IAC1E;AACH,GAAE,cAAc,EAAE;KACd,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACxE;AACH,GAAE,aAAa,EAAE;KACb,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACvE;AACH,GAAE,iBAAiB,EAAE;KACjB,SAAS,EAAE,IAAI;KACf,GAAG,8BAA8B,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAC3E;AACH,GAAE,SAAS,EAAE;KACT,SAAS,EAAE,IAAI;AACnB,KAAI,GAAG,GAAG;AACV,OAAM,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AAClF,SAAQ,OAAO,KAAK;QACb;OACD,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS;MACtE;KACD,GAAG,CAAC,KAAK,EAAE;AACf;AACA;OACM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;AACtD,SAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAK;AAC7C,SAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,MAAK;QACtC;MACF;IACF;AACH,EAAC,EAAC;AACF,CAAA,IAAI,mBAAkB;AACtB;AACA;AACA,CAAA,SAAS,cAAc,GAAG;AAC1B,GAAE,IAAI,kBAAkB,KAAK,SAAS,EAAE,kBAAkB,GAAG,GAAE;AAC/D,GAAE,OAAO,kBAAkB;EAC1B;AACD,CAAA,MAAM,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;GACxC,OAAO,cAAc,EAAE,CAAC,uCAAuC,CAAC,IAAI,EAAE,OAAO,CAAC;GAC/E;AACD,CAAA,MAAM,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE;AACjC,GAAE,OAAO,cAAc,EAAE,CAAC,iCAAiC,CAAC,MAAM,CAAC;GAClE;AACD,CAAA,IAAI,UAAS;AACb,CAAA,MAAM,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE;GAC5B,IAAI,CAAC,SAAS,EAAE;KACd,SAAS,GAAGC,gBAAsB,GAAA;IACnC;AACH,GAAE,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;AAChC,GAAA;;;;;;;;;;AC9EA;AACA,CAAA,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAGH,kBAAiC,GAAA;AAC1E,CAAA,SAAc,GAAG,UAAS;AAC1B,CAAA,MAAM,EAAE,0BAA0B,EAAE,GAAGC,aAAA,EAA4B,CAAC,MAAK;CACzE,MAAM,MAAM,GAAGC,aAAmB,GAAA;AAClC,CAAA,MAAM,EAAE,gBAAgB,EAAE,GAAGC,YAAkB,GAAA;CAC/C,oBAAoB,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAC;AAC3D,CAAA,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAC;AACvC,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAC;CACrC,SAAS,SAAS,CAAC,OAAO,EAAE;AAC5B,GAAE,IAAI,EAAE,IAAI,YAAY,SAAS,CAAC,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;AACjE;AACA;AACA;AACA;AACA,GAAE,MAAM,qBAAqB,GAAG,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,CAAC,GAAG,KAAI;AAC/G,GAAE,IAAI,qBAAqB,KAAK,CAAC,EAAE;AACnC;AACA;AACA;AACA,KAAI,OAAO,GAAG;AACd,OAAM,GAAG,OAAO;OACV,aAAa,EAAE,IAAI;AACzB,OAAM,qBAAqB;AAC3B;AACA;AACA;AACA;AACA,OAAM,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,CAAC;OAC1D;IACF;AACH,GAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;AAC5B;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,MAAK;AAClC,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,KAAI;GACtB,IAAI,OAAO,EAAE;AACf,KAAI,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAS;AACpF,KAAI,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAK;IACrE;AACH;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAC;EAChC;CACD,SAAS,KAAK,CAAC,EAAE,EAAE;AACnB,GAAE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;KACxD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK;OACxB,IAAI,EAAE,EAAE;SACN,IAAI,EAAE,EAAE;WACN,EAAE,CAAC,EAAE,EAAC;AAChB,UAAS,MAAM;AACf,WAAU,IAAI,CAAC,OAAO,CAAC,EAAE,EAAC;UACjB;AACT,SAAQ,MAAM;QACP;AACP,OAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AACxB,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;QAChB;AACP,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;OACf,IAAI,EAAE,EAAE;AACd,SAAQ,EAAE,GAAE;QACL;AACP,MAAK,EAAC;AACN,IAAG,MAAM;AACT,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;KACf,IAAI,EAAE,EAAE;AACZ,OAAM,EAAE,GAAE;MACL;IACF;EACF;AACD,CAAA,SAAS,SAAS,GAAG;AACrB,GAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,KAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;IACjB;EACF;AACD,CAAA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,MAAK;CAClC,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtE,GAAE,MAAM,IAAI,0BAA0B,CAAC,cAAc,CAAC;GACrD;CACD,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAClE,GAAE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAc;AACpC,GAAE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAc;AACpC,GAAE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAM;AAC9B,GAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;KAC7C,IAAI,GAAG,EAAE;OACP,QAAQ,CAAC,GAAG,EAAC;AACnB,OAAM,MAAM;MACP;AACL,KAAI,IAAI,GAAG,IAAI,IAAI,EAAE;AACrB,OAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC;MACf;KACD;OACE,MAAM,CAAC,KAAK;AAClB;AACA,OAAM,MAAM,KAAK,MAAM,CAAC,MAAM;AAC9B;AACA,OAAM,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa;OACpC;AACN,OAAM,QAAQ,GAAE;AAChB,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,GAAG,SAAQ;MAC3B;AACL,IAAG,EAAC;GACH;AACD,CAAA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACxC,GAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;AACvB,KAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAC;AACpC,KAAI,IAAI,CAAC,SAAS,CAAC,GAAG,KAAI;AAC1B,KAAI,QAAQ,GAAE;IACX;AACH,GAAA;;;;;;;;;;ACzJA;AACA,CAAA,MAAM,EAAE,oBAAoB,EAAE,GAAGH,kBAAiC,GAAA;AAClE,CAAA,WAAc,GAAG,YAAW;CAC5B,MAAM,SAAS,GAAGC,gBAAsB,GAAA;CACxC,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAC;AAChE,CAAA,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAC;CAC5C,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,GAAE,IAAI,EAAE,IAAI,YAAY,WAAW,CAAC,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;AACrE,GAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAC;EAC9B;CACD,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAClE,GAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAC;AACjB,GAAA;;;;;;;;;;;;CCpCA,MAAM,OAAO,GAAGD,cAAmB,EAAA;AACnC;AACA;AACA;AACA;AACA;GAEA,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAGC,kBAAiC,GAAA;CACvG,MAAM,GAAG,GAAGC,kBAA0B,GAAA;AACtC,CAAA,MAAM,EAAE,IAAI,EAAE,GAAGC,WAA0B,GAAA;CAC3C,MAAM,WAAW,GAAGa,cAAoB,GAAA;CACxC,MAAM,MAAM,GAAGc,aAAmB,GAAA;CAClC,MAAM;AACN,GAAE,kBAAkB;AACpB,GAAE,KAAK,EAAE;AACT,KAAI,oBAAoB;AACxB,KAAI,wBAAwB;AAC5B,KAAI,gBAAgB;AACpB,KAAI,oBAAoB;AACxB,KAAI,0BAA0B;IAC3B;AACH,GAAE,UAAU;AACZ,EAAC,GAAGE,aAA4B,GAAA;AAChC,CAAA,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,GAAGC,iBAAwB,GAAA;CAC1E,MAAM;AACN,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,oBAAoB;AACtB,GAAE,YAAY;AACd,GAAE,iBAAiB;AACnB,GAAE,WAAW;AACb,GAAE,gBAAgB;AAClB,GAAE,kBAAkB;AACpB,EAAC,GAAGC,YAAkB,GAAA;CACtB,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAIU,YAA2B,CAAC,gBAAe;AACjG,CAAA,IAAI,YAAW;AACf,CAAA,IAAI,SAAQ;AACZ,CAAA,IAAI,iBAAgB;AACpB,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;GAC3C,IAAI,QAAQ,GAAG,MAAK;AACtB,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;KACvB,QAAQ,GAAG,KAAI;AACnB,IAAG,EAAC;GACF,MAAM,OAAO,GAAG,GAAG;AACrB,KAAI,MAAM;KACN;OACE,QAAQ,EAAE,OAAO;OACjB,QAAQ,EAAE,OAAO;MAClB;KACD,CAAC,GAAG,KAAK;OACP,QAAQ,GAAG,CAAC,IAAG;MAChB;KACF;AACH,GAAE,OAAO;AACT,KAAI,OAAO,EAAE,CAAC,GAAG,KAAK;OAChB,IAAI,QAAQ,EAAE,MAAM;OACpB,QAAQ,GAAG,KAAI;AACrB,OAAM,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAC;MACvE;AACL,KAAI,OAAO;IACR;EACF;CACD,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B;AACA;AACA;AACA,GAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,4BAA4B,EAAC;AAC7E,GAAE,OAAO,OAAO,CAAC,GAAG,EAAE;EACrB;CACD,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,GAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACvB,KAAI,OAAO,GAAG;AACd,IAAG,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE;AACxC;AACA,KAAI,OAAO,YAAY,CAAC,GAAG,CAAC;IACzB;AACH,GAAE,MAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,GAAG,CAAC;EACtF;CACD,gBAAgB,YAAY,CAAC,GAAG,EAAE;GAChC,IAAI,CAAC,QAAQ,EAAE;KACb,QAAQ,GAAGgG,eAAqB,GAAA;IACjC;GACD,OAAO,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAC;EACzD;CACD,eAAe,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;AAC/D,GAAE,IAAI,MAAK;GACT,IAAI,SAAS,GAAG,KAAI;AACtB,GAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;KACtB,IAAI,GAAG,EAAE;OACP,KAAK,GAAG,IAAG;MACZ;KACD,IAAI,SAAS,EAAE;OACb,MAAM,QAAQ,GAAG,UAAS;OAC1B,SAAS,GAAG,KAAI;AACtB,OAAM,QAAQ,GAAE;MACX;KACF;GACD,MAAM,IAAI,GAAG;AACf,KAAI,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;OAC/B,IAAI,KAAK,EAAE;SACT,MAAM,CAAC,KAAK,EAAC;AACrB,QAAO,MAAM;SACL,SAAS,GAAG,MAAM;WAChB,IAAI,KAAK,EAAE;aACT,MAAM,CAAC,KAAK,EAAC;AACzB,YAAW,MAAM;AACjB,aAAY,OAAO,GAAE;YACV;WACF;QACF;AACP,MAAK,EAAC;AACN,GAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAC;GAC5B,MAAM,OAAO,GAAG,GAAG;AACrB,KAAI,QAAQ;KACR;OACE,QAAQ,EAAE,KAAK;MAChB;AACL,KAAI,MAAM;KACP;AACH,GAAE,IAAI;AACN,KAAI,IAAI,QAAQ,CAAC,iBAAiB,EAAE;OAC9B,MAAM,IAAI,GAAE;MACb;AACL,KAAI,WAAW,MAAM,KAAK,IAAI,QAAQ,EAAE;OAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;SAC1B,MAAM,IAAI,GAAE;QACb;MACF;KACD,IAAI,GAAG,EAAE;OACP,QAAQ,CAAC,GAAG,GAAE;OACd,MAAM,IAAI,GAAE;MACb;AACL,KAAI,MAAM,GAAE;IACT,CAAC,OAAO,GAAG,EAAE;AAChB,KAAI,MAAM,CAAC,KAAK,KAAK,GAAG,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,EAAC;AAChE,IAAG,SAAS;AACZ,KAAI,OAAO,GAAE;AACb,KAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAC;IAC9B;EACF;CACD,eAAe,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;AAC9D,GAAE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE;AACnC,KAAI,QAAQ,GAAG,QAAQ,CAAC,SAAQ;IAC7B;AACH;AACA,GAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAE;AACrC,GAAE,IAAI;AACN,KAAI,WAAW,MAAM,KAAK,IAAI,QAAQ,EAAE;OAClC,MAAM,MAAM,CAAC,MAAK;OAClB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;MACpC;KACD,MAAM,MAAM,CAAC,MAAK;KAClB,IAAI,GAAG,EAAE;AACb,OAAM,MAAM,MAAM,CAAC,KAAK,GAAE;MACrB;AACL,KAAI,MAAM,GAAE;IACT,CAAC,OAAO,GAAG,EAAE;AAChB,KAAI,IAAI;AACR,OAAM,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAC;OACvB,MAAM,CAAC,GAAG,EAAC;MACZ,CAAC,OAAO,GAAG,EAAE;OACZ,MAAM,CAAC,GAAG,EAAC;MACZ;IACF;EACF;AACD,CAAA,SAAS,QAAQ,CAAC,GAAG,OAAO,EAAE;AAC9B,GAAE,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;EACzD;AACD,CAAA,SAAS,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/C,GAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD,KAAI,OAAO,GAAG,OAAO,CAAC,CAAC,EAAC;IACrB;AACH,GAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,KAAI,MAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC;IACtC;AACH,GAAE,MAAM,EAAE,GAAG,IAAI,eAAe,GAAE;AAClC,GAAE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAM;AAC1B,GAAE,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,OAAM;AACnF;AACA;AACA;GACE,MAAM,iBAAiB,GAAG,GAAE;AAC9B,GAAE,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,EAAC;GAClD,SAAS,KAAK,GAAG;AACnB,KAAI,UAAU,CAAC,IAAI,UAAU,EAAE,EAAC;IAC7B;AACH,GAAE,gBAAgB,GAAG,gBAAgB,IAAIzI,WAAA,EAA0B,CAAC,iBAAgB;AACpF,GAAE,IAAI,WAAU;GACd,IAAI,WAAW,EAAE;AACnB,KAAI,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAC;IAClD;AACH,GAAE,IAAI,MAAK;AACX,GAAE,IAAI,MAAK;GACT,MAAM,QAAQ,GAAG,GAAE;GACnB,IAAI,WAAW,GAAG,EAAC;AACrB,GAAE,SAAS,MAAM,CAAC,GAAG,EAAE;KACnB,UAAU,CAAC,GAAG,EAAE,EAAE,WAAW,KAAK,CAAC,EAAC;IACrC;AACH,GAAE,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,KAAI,IAAI,YAAW;AACnB,KAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B,CAAC,EAAE;OAClE,KAAK,GAAG,IAAG;MACZ;AACL,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC1B,OAAM,MAAM;MACP;AACL,KAAI,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC5B,OAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAC;MACxB;AACA,CAAC,WAAW,GAAG,UAAU,MAAM,IAAI,IAAI,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,aAAa,CAAC,GAAE;KAC5G,EAAE,CAAC,KAAK,GAAE;KACV,IAAI,KAAK,EAAE;OACT,IAAI,CAAC,KAAK,EAAE;SACV,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAC;QACxC;OACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAC;MACzC;IACF;AACH,GAAE,IAAI,IAAG;AACT,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,KAAI,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAC;KACzB,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAC;AAC1C,KAAI,MAAM,OAAO,GAAG,CAAC,GAAG,EAAC;KACrB,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,MAAM,MAAK;KAC7F,MAAM,YAAY,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,EAAC;AACjD,KAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;OACxB,IAAI,GAAG,EAAE;AACf,SAAQ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC;AACxE,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAC;AAC9B,SAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE;AAChD,WAAU,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAC;UAChC;QACF;AACP;AACA;AACA,OAAM,SAAS,OAAO,CAAC,GAAG,EAAE;AAC5B,SAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,4BAA4B,EAAE;WACjF,MAAM,CAAC,GAAG,EAAC;UACZ;QACF;AACP,OAAM,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAC;AACjC,OAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE;AAC9C,SAAQ,iBAAiB,CAAC,IAAI,CAAC,MAAM;AACrC,WAAU,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAC;AACjD,UAAS,EAAC;QACH;MACF;AACL,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;SAChC,GAAG,GAAG,MAAM,CAAC;AACrB,WAAU,MAAM;AAChB,UAAS,EAAC;AACV,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;WACpB,MAAM,IAAI,wBAAwB,CAAC,mCAAmC,EAAE,QAAQ,EAAE,GAAG,CAAC;UACvF;AACT,QAAO,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;SAC1F,GAAG,GAAG,OAAM;AACpB,QAAO,MAAM;AACb,SAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAC;QAC1B;AACP,MAAK,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAC7C,OAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;AAClC,SAAQ,IAAI,KAAI;SACR,GAAG,GAAG,iBAAiB,CAAC,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAC;AACxG,QAAO,MAAM;AACb,SAAQ,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAC;QAC7B;AACP,OAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE;AACxB,SAAQ,MAAM;AACd,QAAO,EAAC;OACF,IAAI,OAAO,EAAE;SACX,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACpC,WAAU,MAAM,IAAI,wBAAwB,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;UAChF;AACT,QAAO,MAAM;AACb,SAAQ,IAAI,MAAK;SACT,IAAI,CAAC,WAAW,EAAE;WAChB,WAAW,GAAG0I,kBAAwB,GAAA;UACvC;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC;WACzB,UAAU,EAAE,IAAI;AAC1B,UAAS,EAAC;AACV;AACA;AACA;AACA,SAAQ,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK,CAAC,KAAI;AAC3F,SAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AACxC,WAAU,WAAW,GAAE;WACb,IAAI,CAAC,IAAI;AACnB,aAAY,GAAG;aACH,CAAC,GAAG,KAAK;eACP,KAAK,GAAG,IAAG;AACzB,eAAc,IAAI,GAAG,IAAI,IAAI,EAAE;AAC/B,iBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAC;gBACd;eACD,IAAI,GAAG,EAAE;iBACP,EAAE,CAAC,GAAG,GAAE;gBACT;AACf,eAAc,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAC;cACzB;aACD,CAAC,GAAG,KAAK;AACrB,eAAc,EAAE,CAAC,OAAO,CAAC,GAAG,EAAC;AAC7B,eAAc,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAC;cAC9B;aACF;UACF,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AAC1C,WAAU,WAAW,GAAE;AACvB,WAAU,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE;AACtC,aAAY,GAAG;AACf,YAAW,EAAC;UACH,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;AACpE,WAAU,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAG;AAC5C,WAAU,WAAW,GAAE;AACvB,WAAU,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AACzC,aAAY,GAAG;AACf,YAAW,EAAC;AACZ,UAAS,MAAM;WACL,MAAM,IAAI,wBAAwB,CAAC,0BAA0B,EAAE,aAAa,EAAE,GAAG,CAAC;UACnF;SACD,GAAG,GAAG,GAAE;AAChB,SAAQ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAC;AAChE,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAC;SACtB,IAAI,YAAY,EAAE;AAC1B,WAAU,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAC;UAChC;QACF;AACP,MAAK,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACrC,OAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE;SAC7B,WAAW,IAAI,EAAC;SAChB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AAClD,WAAU,GAAG;AACb,UAAS,EAAC;AACV,SAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE;AAChD,WAAU,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAC;UAChC;QACF,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAClE,SAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAG;AAC1C,SAAQ,WAAW,GAAE;AACrB,SAAQ,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3C,WAAU,GAAG;AACb,UAAS,EAAC;AACV,QAAO,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AAClC,SAAQ,WAAW,GAAE;AACrB,SAAQ,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AACxC,WAAU,GAAG;AACb,UAAS,EAAC;AACV,QAAO,MAAM;SACL,MAAM,IAAI,oBAAoB;AACtC,WAAU,KAAK;WACL,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;AACxF,WAAU,GAAG;UACJ;QACF;OACD,GAAG,GAAG,OAAM;AAClB,MAAK,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACpC,OAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE;AACrC,SAAQ,WAAW,GAAE;SACb,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D,WAAU,GAAG;AACb,UAAS,EAAC;QACH,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3D,SAAQ,WAAW,GAAE;AACrB,SAAQ,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AACvC,WAAU,GAAG;AACb,UAAS,EAAC;AACV,QAAO,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE;AACzC,SAAQ,WAAW,GAAE;SACb,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AAChD,WAAU,GAAG;AACb,UAAS,EAAC;AACV,QAAO,MAAM;SACL,MAAM,IAAI,oBAAoB;AACtC,WAAU,KAAK;WACL,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;AACxF,WAAU,GAAG;UACJ;QACF;OACD,GAAG,GAAG,OAAM;AAClB,MAAK,MAAM;AACX,OAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAC;MAC1B;IACF;GACD;KACE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO;MACzD,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC;KAC1E;AACJ,KAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC;IACxB;AACH,GAAE,OAAO,GAAG;EACX;CACD,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;GACvC,IAAI,KAAK,GAAG,MAAK;AACnB,GAAE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;KACpB,IAAI,CAAC,KAAK,EAAE;AAChB;AACA,OAAM,MAAM,CAAC,IAAI,0BAA0B,EAAE,EAAC;MACzC;AACL,IAAG,EAAC;AACJ,GAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;KACZ,GAAG,EAAE,KAAK;AACd,IAAG,EAAC;AACJ;GACE,IAAI,GAAG,EAAE;AACX;AACA;AACA;AACA;KACI,SAAS,KAAK,GAAG;OACf,KAAK,GAAG,KAAI;OACZ,GAAG,CAAC,GAAG,GAAE;MACV;AACL,KAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE;AACjC;AACA,OAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAC;AAC7B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC;MACvB;AACL,IAAG,MAAM;AACT,KAAI,MAAM,GAAE;IACT;AACH,GAAE,GAAG;AACL,KAAI,GAAG;KACH;OACE,QAAQ,EAAE,IAAI;OACd,QAAQ,EAAE,KAAK;MAChB;KACD,CAAC,GAAG,KAAK;AACb,OAAM,MAAM,MAAM,GAAG,GAAG,CAAC,eAAc;OACjC;AACN,SAAQ,GAAG;AACX,SAAQ,GAAG,CAAC,IAAI,KAAK,4BAA4B;AACjD,SAAQ,MAAM;SACN,MAAM,CAAC,KAAK;SACZ,CAAC,MAAM,CAAC,OAAO;SACf,CAAC,MAAM,CAAC,YAAY;SACpB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAC;AACrD,QAAO,MAAM;SACL,MAAM,CAAC,GAAG,EAAC;QACZ;MACF;KACF;AACH,GAAE,OAAO,GAAG;AACZ,KAAI,GAAG;KACH;OACE,QAAQ,EAAE,KAAK;OACf,QAAQ,EAAE,IAAI;MACf;AACL,KAAI,MAAM;IACP;EACF;AACD,CAAA,UAAc,GAAG;AACjB,GAAE,YAAY;AACd,GAAE,QAAQ;AACV,GAAA;;;;;;;;;;ACrdA;AACA,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAG7I,eAAqB,GAAA;CAC1C,MAAM,MAAM,GAAGC,aAAmB,GAAA;AAClC,CAAA,MAAM,EAAE,SAAS,EAAE,GAAGC,cAAoB,GAAA;CAC1C,MAAM;AACN,GAAE,YAAY;AACd,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,WAAW;AACb,GAAE,iBAAiB;AACnB,GAAE,gBAAgB;AAClB,GAAE,gBAAgB;AAClB,EAAC,GAAGC,YAAkB,GAAA;CACtB,MAAM;AACN,GAAE,UAAU;AACZ,GAAE,KAAK,EAAE,EAAE,qBAAqB,EAAE,gBAAgB,EAAE;AACpD,EAAC,GAAGa,aAA4B,GAAA;CAChC,MAAM,GAAG,GAAGc,kBAA0B,GAAA;AACtC,CAAA,OAAc,GAAG,SAAS,OAAO,CAAC,GAAG,OAAO,EAAE;AAC9C,GAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,KAAI,MAAM,IAAI,gBAAgB,CAAC,SAAS,CAAC;IACtC;AACH,GAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;KACxB,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B;AACH,GAAE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAC;GAC/B,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;AACxC,KAAI,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC;IACrC;AACH,GAAE,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,UAAU,EAAE;AACzD,KAAI,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,EAAC;AAClC,KAAI,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC;IACzC;AACH,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,KAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/D;AACA,OAAM,QAAQ;MACT;KACD;AACJ,OAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;OACtB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;OAC1F;AACN,OAAM,MAAM,IAAI,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;MACpF;AACL,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7G,OAAM,MAAM,IAAI,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;MACpF;IACF;AACH,GAAE,IAAI,QAAO;AACb,GAAE,IAAI,SAAQ;AACd,GAAE,IAAI,WAAU;AAChB,GAAE,IAAI,QAAO;AACb,GAAE,IAAI,EAAC;AACP,GAAE,SAAS,UAAU,CAAC,GAAG,EAAE;KACvB,MAAM,EAAE,GAAG,QAAO;KAClB,OAAO,GAAG,KAAI;KACd,IAAI,EAAE,EAAE;OACN,EAAE,CAAC,GAAG,EAAC;MACR,MAAM,IAAI,GAAG,EAAE;AACpB,OAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAC;AACpB,MAAK,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;OACjC,CAAC,CAAC,OAAO,GAAE;MACZ;IACF;AACH,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAC;GACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAC;AAC5C,GAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAC;AAC5F,GAAE,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAC;AAC5F;AACA;AACA;AACA;AACA,GAAE,CAAC,GAAG,IAAI,MAAM,CAAC;AACjB;AACA,KAAI,kBAAkB,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC;AAC1F,KAAI,kBAAkB,EAAE,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC;AAC1F,KAAI,QAAQ;AACZ,KAAI,QAAQ;AACZ,IAAG,EAAC;GACF,IAAI,QAAQ,EAAE;AAChB,KAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;OACtB,CAAC,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AACzC,WAAU,QAAQ,GAAE;AACpB,UAAS,MAAM;WACL,OAAO,GAAG,SAAQ;UACnB;SACF;AACP,OAAM,CAAC,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;SAC7B,IAAI,CAAC,GAAG,GAAE;SACV,QAAQ,GAAG,SAAQ;SACpB;AACP,OAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY;SAC3B,IAAI,OAAO,EAAE;WACX,MAAM,EAAE,GAAG,QAAO;WAClB,OAAO,GAAG,KAAI;AACxB,WAAU,EAAE,GAAE;UACL;AACT,QAAO,EAAC;AACR,MAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AAClC,OAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAI;AACrE,OAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAE;OACnC,CAAC,CAAC,MAAM,GAAG,gBAAgB,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC5D,SAAQ,IAAI;WACF,MAAM,MAAM,CAAC,MAAK;WAClB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;AAC7C,WAAU,QAAQ,GAAE;UACX,CAAC,OAAO,GAAG,EAAE;WACZ,QAAQ,CAAC,GAAG,EAAC;UACd;SACF;AACP,OAAM,CAAC,CAAC,MAAM,GAAG,gBAAgB,QAAQ,EAAE;AAC3C,SAAQ,IAAI;WACF,MAAM,MAAM,CAAC,MAAK;WAClB,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAC;WAC9B,QAAQ,GAAG,SAAQ;UACpB,CAAC,OAAO,GAAG,EAAE;WACZ,QAAQ,CAAC,GAAG,EAAC;UACd;SACF;MACF;AACL,KAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAI;AACjE,KAAI,GAAG,CAAC,MAAM,EAAE,MAAM;OAChB,IAAI,QAAQ,EAAE;SACZ,MAAM,EAAE,GAAG,SAAQ;SACnB,QAAQ,GAAG,KAAI;AACvB,SAAQ,EAAE,GAAE;QACL;AACP,MAAK,EAAC;IACH;GACD,IAAI,QAAQ,EAAE;AAChB,KAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AAC5B,OAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY;SAC9B,IAAI,UAAU,EAAE;WACd,MAAM,EAAE,GAAG,WAAU;WACrB,UAAU,GAAG,KAAI;AAC3B,WAAU,EAAE,GAAE;UACL;AACT,QAAO,EAAC;AACR,OAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY;AACjC,SAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC;AACpB,QAAO,EAAC;AACR,OAAM,CAAC,CAAC,KAAK,GAAG,YAAY;SACpB,OAAO,IAAI,EAAE;AACrB,WAAU,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,GAAE;AACjC,WAAU,IAAI,GAAG,KAAK,IAAI,EAAE;AAC5B,aAAY,UAAU,GAAG,CAAC,CAAC,MAAK;AAChC,aAAY,MAAM;YACP;WACD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5B,aAAY,MAAM;YACP;UACF;SACF;AACP,MAAK,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AAClC,OAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAI;AACrE,OAAM,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAE;AACzC,OAAM,CAAC,CAAC,KAAK,GAAG,kBAAkB;SAC1B,OAAO,IAAI,EAAE;AACrB,WAAU,IAAI;aACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,GAAE;aAC3C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAChC,eAAc,MAAM;cACP;aACD,IAAI,IAAI,EAAE;AACtB,eAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAC;AAC1B,eAAc,MAAM;cACP;AACb,YAAW,CAAC,MAAM;AAClB,aAAY,MAAM;YACP;UACF;SACF;MACF;IACF;GACD,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE;AACxC,KAAI,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,OAAM,GAAG,GAAG,IAAI,UAAU,GAAE;MACvB;KACD,UAAU,GAAG,KAAI;KACjB,OAAO,GAAG,KAAI;KACd,QAAQ,GAAG,KAAI;AACnB,KAAI,IAAI,OAAO,KAAK,IAAI,EAAE;OACpB,QAAQ,CAAC,GAAG,EAAC;AACnB,MAAK,MAAM;OACL,OAAO,GAAG,SAAQ;AACxB,OAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AAC9B,SAAQ,SAAS,CAAC,IAAI,EAAE,GAAG,EAAC;QACrB;MACF;KACF;AACH,GAAE,OAAO,CAAC;AACV,GAAA;;;;;;;;;AChMA;CACA,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,IAAI9B,YAA2B,CAAC,gBAAe;CACjG,MAAM;GACJ,KAAK,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;AAC5F,GAAE,UAAU;AACZ,EAAC,GAAGC,aAA4B,GAAA;CAChC,MAAM,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,GAAGC,iBAAwB,GAAA;AACzF,CAAA,MAAM,YAAY,GAAGC,kBAAA,EAAiC,CAAC,MAAM,CAAC,OAAO,EAAC;AACtE,CAAA,MAAM,sBAAsB,GAAGA,kBAAA,EAAiC,CAAC,MAAM,CAAC,wBAAwB,EAAC;AACjG,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGa,kBAA0B,GAAA;CAC/C,MAAM,aAAa,GAAGc,cAAoB,GAAA;AAC1C,CAAA,MAAM,EAAE,wBAAwB,EAAE,GAAGE,qBAA6B,GAAA;AAClE,CAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAGC,YAAkB,GAAA;AACvD,CAAA,MAAM,EAAE,SAAS,EAAE,GAAGC,WAA0B,GAAA;CAChD,MAAM;AACN,GAAE,kBAAkB;AACpB,GAAE,OAAO;AACT,GAAE,SAAS;AACX,GAAE,MAAM;AACR,GAAE,WAAW;AACb,GAAE,OAAO;AACT,GAAE,aAAa;AACf,GAAE,cAAc;AAChB,GAAE,oBAAoB;AACtB,GAAE,MAAM;AACR,EAAC,GAAG/B,kBAAiC,GAAA;AACrC,CAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAC;AAC/B,CAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAC;AAC3B,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAClC,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;GACD,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;KAC/C,MAAM,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC;IACtE;GACD,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAC;AACpD,GAAE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE;AACnE;AACA,KAAI,wBAAwB,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAC;IACzD;AACH,GAAE,OAAO,cAAc;EACtB;AACD,CAAA,SAAS,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1B,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC;IACxE;AACH,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;GACD,IAAI,WAAW,GAAG,EAAC;AACrB,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7F,KAAI,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAC;IAC7C;AACH,GAAE,IAAI,aAAa,GAAG,WAAW,GAAG,EAAC;AACrC,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/F,KAAI,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAC;IACjD;AACH,GAAE,eAAe,CAAC,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAC;AACxD,GAAE,eAAe,CAAC,aAAa,EAAE,uBAAuB,EAAE,CAAC,EAAC;GAC1D,aAAa,IAAI,YAAW;GAC5B,OAAO,gBAAgB,GAAG,GAAG;AAC/B,KAAI,MAAM,MAAM,GAAG+B,WAAA,EAA0B,CAAC,cAAc;AAC5D,OAAM,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;OACzF;KACD,MAAM,MAAM,GAAG,KAAI;KACnB,MAAM,KAAK,GAAG,GAAE;KAChB,MAAM,SAAS,GAAG;AACtB,OAAM,MAAM;OACP;AACL,KAAI,IAAI,KAAI;AACZ,KAAI,IAAI,OAAM;KACV,IAAI,IAAI,GAAG,MAAK;KAChB,IAAI,GAAG,GAAG,EAAC;KACX,SAAS,OAAO,GAAG;OACjB,IAAI,GAAG,KAAI;AACjB,OAAM,kBAAkB,GAAE;MACrB;KACD,SAAS,kBAAkB,GAAG;OAC5B,GAAG,IAAI,EAAC;AACd,OAAM,WAAW,GAAE;MACd;KACD,SAAS,WAAW,GAAG;AAC3B,OAAM,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,WAAW,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE;AAChF,SAAQ,MAAM,GAAE;SACR,MAAM,GAAG,KAAI;QACd;MACF;KACD,eAAe,IAAI,GAAG;AAC1B,OAAM,IAAI;AACV,SAAQ,WAAW,IAAI,GAAG,IAAI,MAAM,EAAE;WAC5B,IAAI,IAAI,EAAE;AACpB,aAAY,MAAM;YACP;AACX,WAAU,IAAI,MAAM,CAAC,OAAO,EAAE;aAClB,MAAM,IAAI,UAAU,EAAE;YACvB;AACX,WAAU,IAAI;AACd,aAAY,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,EAAC;AACpC,aAAY,IAAI,GAAG,KAAK,MAAM,EAAE;AAChC,eAAc,QAAQ;cACT;AACb,aAAY,GAAG,GAAG,cAAc,CAAC,GAAG,EAAC;YAC1B,CAAC,OAAO,GAAG,EAAE;AACxB,aAAY,GAAG,GAAG,aAAa,CAAC,GAAG,EAAC;YACzB;WACD,GAAG,IAAI,EAAC;AAClB,WAAU,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAC;AAChE,WAAU,KAAK,CAAC,IAAI,CAAC,GAAG,EAAC;WACf,IAAI,IAAI,EAAE;AACpB,aAAY,IAAI,GAAE;aACN,IAAI,GAAG,KAAI;YACZ;AACX,WAAU,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,aAAa,IAAI,GAAG,IAAI,WAAW,CAAC,EAAE;AAC9E,aAAY,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;eAC7B,MAAM,GAAG,QAAO;AAC9B,cAAa,EAAC;YACH;UACF;AACT,SAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;QACjB,CAAC,OAAO,GAAG,EAAE;AACpB,SAAQ,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAC;AACtC,SAAQ,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAC;AAC9D,SAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,EAAC;AACvB,QAAO,SAAS;SACR,IAAI,GAAG,KAAI;SACX,IAAI,IAAI,EAAE;AAClB,WAAU,IAAI,GAAE;WACN,IAAI,GAAG,KAAI;UACZ;QACF;MACF;AACL,KAAI,IAAI,GAAE;AACV,KAAI,IAAI;OACF,OAAO,IAAI,EAAE;AACnB,SAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,WAAU,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,CAAC,EAAC;AACpC,WAAU,IAAI,GAAG,KAAK,IAAI,EAAE;AAC5B,aAAY,MAAM;YACP;AACX,WAAU,IAAI,MAAM,CAAC,OAAO,EAAE;aAClB,MAAM,IAAI,UAAU,EAAE;YACvB;AACX,WAAU,IAAI,GAAG,KAAK,MAAM,EAAE;AAC9B,aAAY,MAAM,IAAG;YACV;WACD,KAAK,CAAC,KAAK,GAAE;AACvB,WAAU,WAAW,GAAE;UACd;AACT,SAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;WAC7B,IAAI,GAAG,QAAO;AACxB,UAAS,EAAC;QACH;AACP,MAAK,SAAS;OACR,IAAI,GAAG,KAAI;OACX,IAAI,MAAM,EAAE;AAClB,SAAQ,MAAM,GAAE;SACR,MAAM,GAAG,KAAI;QACd;MACF;AACL,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC;EACb;AACD,CAAA,SAAS,cAAc,CAAC,OAAO,GAAG,SAAS,EAAE;AAC7C,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;GACD,OAAO,gBAAgB,cAAc,GAAG;KACtC,IAAI,KAAK,GAAG,EAAC;AACjB,KAAI,WAAW,MAAM,GAAG,IAAI,IAAI,EAAE;AAClC,OAAM,IAAI,gBAAe;OACnB;SACE,OAAO,KAAK,IAAI;SAChB,OAAO,KAAK,SAAS;AAC7B,SAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;SAC3C,eAAe,KAAK,SAAS;SAC7B,eAAe,CAAC,OAAO;SACvB;SACA,MAAM,IAAI,UAAU,CAAC;AAC7B,WAAU,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;AACtC,UAAS,CAAC;QACH;AACP,OAAM,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAC;MACrB;AACL,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC;EACb;AACD,CAAA,eAAe,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,EAAE;AAC7C,GAAE,WAAW,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;AAC7D,KAAI,OAAO,IAAI;IACZ;AACH,GAAE,OAAO,KAAK;EACb;AACD,CAAA,eAAe,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,EAAE;AAC9C,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC;IACxE;AACH;AACA,GAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI;AAC1B,KAAI,IAAI;KACJ,OAAO,GAAG,IAAI,KAAK;OACjB,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;MAC5B;AACL,KAAI,OAAO;AACX,IAAG,CAAC;EACH;AACD,CAAA,eAAe,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AACjC,GAAE,WAAW,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;AAC7D,KAAI,OAAO,MAAM;IACd;AACH,GAAE,OAAO,SAAS;EACjB;AACD,CAAA,eAAe,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE;AACpC,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC;IACxE;AACH,GAAE,eAAe,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3C,KAAI,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAC;AAC5B,KAAI,OAAO,MAAM;IACd;AACH;AACA,GAAE,WAAW,MAAM,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;EAChE;AACD,CAAA,SAAS,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;AAC7B,GAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,KAAI,MAAM,IAAI,oBAAoB,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC;IACxE;AACH,GAAE,eAAe,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;KACtC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAClC,OAAM,OAAO,KAAK;MACb;AACL,KAAI,OAAO,MAAM;IACd;GACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;EACzC;AACD;AACA;AACA;CACA,MAAM,yBAAyB,SAAS,gBAAgB,CAAC;AACzD,GAAE,WAAW,GAAG;KACZ,KAAK,CAAC,QAAQ,EAAC;AACnB,KAAI,IAAI,CAAC,OAAO,GAAG,sDAAqD;IACrE;EACF;AACD,CAAA,eAAe,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE;AACtD,GAAE,IAAI,iBAAgB;AACtB,GAAE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACrC,KAAI,MAAM,IAAI,oBAAoB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAClF;AACH,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;AACH,GAAE,IAAI,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,EAAC;GAC1C;KACE,OAAO,KAAK,IAAI;KAChB,OAAO,KAAK,SAAS;AACzB,KAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;KAC5C,gBAAgB,KAAK,SAAS;KAC9B,gBAAgB,CAAC,OAAO;KACxB;AACJ,KAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE;AAC1C,OAAM,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;AAClC,MAAK,EAAC;KACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC;KAC5B,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC;AACrC,KAAI,MAAM,GAAG;IACV;AACH,GAAE,MAAM,EAAE,GAAG,IAAI,eAAe,GAAE;AAClC,GAAE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAM;AAC1B,GAAE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE;KAC/D,MAAM,IAAI,GAAG;OACX,IAAI,EAAE,IAAI;OACV,CAAC,YAAY,GAAG,IAAI;OACpB,CAAC,sBAAsB,GAAG,IAAI;OAC/B;AACL,KAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAC;IACjE;GACD,IAAI,oBAAoB,GAAG,MAAK;AAClC,GAAE,IAAI;AACN,KAAI,WAAW,MAAM,KAAK,IAAI,IAAI,EAAE;AACpC,OAAM,IAAI,iBAAgB;OACpB,oBAAoB,GAAG,KAAI;OAC3B;SACE,OAAO,KAAK,IAAI;SAChB,OAAO,KAAK,SAAS;AAC7B,SAAQ,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;SAC5C,gBAAgB,KAAK,SAAS;SAC9B,gBAAgB,CAAC,OAAO;SACxB;SACA,MAAM,IAAI,UAAU,EAAE;QACvB;OACD,IAAI,CAAC,eAAe,EAAE;SACpB,YAAY,GAAG,MAAK;SACpB,eAAe,GAAG,KAAI;AAC9B,QAAO,MAAM;SACL,YAAY,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE;AAC1D,WAAU,MAAM;AAChB,UAAS,EAAC;QACH;MACF;AACL,KAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,eAAe,EAAE;OAC7C,MAAM,IAAI,yBAAyB,EAAE;MACtC;AACL,IAAG,SAAS;KACR,EAAE,CAAC,KAAK,GAAE;IACX;AACH,GAAE,OAAO,YAAY;EACpB;CACD,eAAe,OAAO,CAAC,OAAO,EAAE;AAChC,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;GACD,MAAM,MAAM,GAAG,GAAE;AACnB,GAAE,WAAW,MAAM,GAAG,IAAI,IAAI,EAAE;AAChC,KAAI,IAAI,iBAAgB;KACpB;OACE,OAAO,KAAK,IAAI;OAChB,OAAO,KAAK,SAAS;AAC3B,OAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;OAC5C,gBAAgB,KAAK,SAAS;OAC9B,gBAAgB,CAAC,OAAO;OACxB;AACN,OAAM,MAAM,IAAI,UAAU,CAAC,SAAS,EAAE;AACtC,SAAQ,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;AACpC,QAAO,CAAC;MACH;AACL,KAAI,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAC;IAChC;AACH,GAAE,OAAO,MAAM;EACd;AACD,CAAA,SAAS,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE;AAC9B,GAAE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAC;GAC1C,OAAO,gBAAgB,OAAO,GAAG;AACnC,KAAI,WAAW,MAAM,GAAG,IAAI,MAAM,EAAE;AACpC,OAAM,OAAO,IAAG;MACX;AACL,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC;EACb;CACD,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC;AACA;AACA,GAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAC;AACzB,GAAE,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AAC3B,KAAI,OAAO,CAAC;IACT;AACH,GAAE,IAAI,MAAM,GAAG,CAAC,EAAE;KACd,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;IACrD;AACH,GAAE,OAAO,MAAM;EACd;AACD,CAAA,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE;AAC3C,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;AACH,GAAE,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAC;GACpC,OAAO,gBAAgB,IAAI,GAAG;AAChC,KAAI,IAAI,iBAAgB;KACpB;OACE,OAAO,KAAK,IAAI;OAChB,OAAO,KAAK,SAAS;AAC3B,OAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;OAC5C,gBAAgB,KAAK,SAAS;OAC9B,gBAAgB,CAAC,OAAO;OACxB;OACA,MAAM,IAAI,UAAU,EAAE;MACvB;AACL,KAAI,WAAW,MAAM,GAAG,IAAI,IAAI,EAAE;AAClC,OAAM,IAAI,iBAAgB;OACpB;SACE,OAAO,KAAK,IAAI;SAChB,OAAO,KAAK,SAAS;AAC7B,SAAQ,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;SAC5C,gBAAgB,KAAK,SAAS;SAC9B,gBAAgB,CAAC,OAAO;SACxB;SACA,MAAM,IAAI,UAAU,EAAE;QACvB;AACP,OAAM,IAAI,MAAM,EAAE,IAAI,CAAC,EAAE;AACzB,SAAQ,MAAM,IAAG;QACV;MACF;AACL,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC;EACb;AACD,CAAA,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE;AAC3C,GAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AACvB,KAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAC;IACnC;AACH,GAAE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACxF,KAAI,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAC;IACtD;AACH,GAAE,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAC;GACpC,OAAO,gBAAgB,IAAI,GAAG;AAChC,KAAI,IAAI,iBAAgB;KACpB;OACE,OAAO,KAAK,IAAI;OAChB,OAAO,KAAK,SAAS;AAC3B,OAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;OAC5C,gBAAgB,KAAK,SAAS;OAC9B,gBAAgB,CAAC,OAAO;OACxB;OACA,MAAM,IAAI,UAAU,EAAE;MACvB;AACL,KAAI,WAAW,MAAM,GAAG,IAAI,IAAI,EAAE;AAClC,OAAM,IAAI,iBAAgB;OACpB;SACE,OAAO,KAAK,IAAI;SAChB,OAAO,KAAK,SAAS;AAC7B,SAAQ,CAAC,gBAAgB,GAAG,OAAO,CAAC,MAAM,MAAM,IAAI;SAC5C,gBAAgB,KAAK,SAAS;SAC9B,gBAAgB,CAAC,OAAO;SACxB;SACA,MAAM,IAAI,UAAU,EAAE;QACvB;AACP,OAAM,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE;AACxB,SAAQ,MAAM,IAAG;QACV;AACP;AACA;AACA,OAAM,IAAI,MAAM,IAAI,CAAC,EAAE;AACvB,SAAQ,MAAM;QACP;MACF;AACL,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC;EACb;AACD,CAAA,SAAA,CAAA,wBAAuC,GAAG;AAC1C,GAAE,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,8DAA8D,CAAC;AAC3G,GAAE,IAAI;AACN,GAAE,MAAM;AACR,GAAE,OAAO;AACT,GAAE,GAAG;AACL,GAAE,IAAI;AACN,GAAE,OAAO;GACR;AACD,CAAA,SAAA,CAAA,yBAAwC,GAAG;AAC3C,GAAE,KAAK;AACP,GAAE,OAAO;AACT,GAAE,MAAM;AACR,GAAE,OAAO;AACT,GAAE,IAAI;AACN,GAAE,IAAI;AACN,GAAA;;;;;;;;;;ACvcA;AACA,CAAA,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAGlC,kBAA8B,GAAA;CACrE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,GAAGC,YAAoC,GAAA;AACtF,CAAA,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAGC,eAAuC,GAAA;AACpE,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGC,kBAA4C,GAAA;AACjE,CAA8Ba,aAAA,GAAA;AAC9B,CAAA,SAAS,QAAQ,CAAC,GAAG,OAAO,EAAE;GAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,KAAI,IAAI,OAAM;AACd,KAAI,IAAI,IAAG;KACP,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAC;KAC3C;AACJ,OAAM,OAAO;OACP,OAAO,OAAO,KAAK,QAAQ;AACjC,OAAM,CAAC,YAAY,CAAC,OAAO,CAAC;AAC5B,OAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1B,OAAM,CAAC,WAAW,CAAC,OAAO,CAAC;OACrB;AACN,OAAM,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAC;AAChD,OAAM,MAAM,GAAG,OAAO,CAAC,OAAM;AAC7B,OAAM,GAAG,GAAG,OAAO,CAAC,IAAG;MAClB;AACL,KAAI,EAAE;AACN,OAAM,OAAO;AACb,OAAM,CAAC,GAAG,EAAE,KAAK,KAAK;SACd,IAAI,GAAG,EAAE;WACP,MAAM,CAAC,GAAG,EAAC;AACrB,UAAS,MAAM;WACL,OAAO,CAAC,KAAK,EAAC;UACf;QACF;OACD;AACN,SAAQ,MAAM;AACd,SAAQ,GAAG;QACJ;OACF;AACL,IAAG,CAAC;EACH;AACD,CAAA,QAAc,GAAG;AACjB,GAAE,QAAQ;AACV,GAAE,QAAQ;AACV,GAAA;;;;;;;;;;;ACxCA,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGhB,YAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GAEA,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,YAAY,EAAE,GAAGC,kBAA6B,GAAA;CACxF,MAAM;AACN,GAAE,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;AACxC,EAAC,GAAGC,WAAsB,GAAA;AAC1B,CAAA,MAAM,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,GAAGC,gBAAuC,GAAA;CACvG,MAAM;AACN,GAAE,KAAK,EAAE,EAAE,uBAAuB,EAAE;AACpC,EAAC,GAAGa,aAAwB,GAAA;CAC5B,MAAM,OAAO,GAAGc,cAAqC,GAAA;AACrD,CAAA,MAAM,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,GAAGE,YAAmC,GAAA;AAChG,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGC,eAAsC,GAAA;AAC3D,CAAA,MAAM,EAAE,SAAS,EAAE,GAAGC,cAAqC,GAAA;CAC3D,MAAM,GAAG,GAAGU,kBAA2C,GAAA;CAEvD,MAAM,QAAQ,GAAGgG,eAA4B,GAAA;CAC7C,MAAM,KAAK,GAAGC,YAAmC,GAAA;AACjD,CAAA,MAAM,MAAM,IAAIuI,MAAA,CAAA,OAAc,GAAGtI,aAAoC,EAAA,CAAC,MAAM,EAAC;AAC7E,CAAA,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,YAAW;AACtC,CAAA,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,YAAW;AACtC,CAAA,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,UAAS;AAClC,CAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,WAAU;AACpC,CAAA,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,WAAU;CACpC,MAAM,CAAC,QAAQ,GAAGC,eAAsC,GAAA;AACxD,CAAA,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,wBAAwB,CAAC,EAAE;AACxD,GAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,GAAG,EAAC;AAC1C,GAAE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE;AACvB,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE;OACd,MAAM,uBAAuB,EAAE;MAChC;AACL,KAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D;AACH,GAAE,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE;KAC/B,SAAS,EAAE,IAAI;AACnB,KAAI,KAAK,EAAE,EAAE,CAAC,IAAI;AAClB,IAAG,EAAC;AACJ,GAAE,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE;KACjC,SAAS,EAAE,IAAI;AACnB,KAAI,KAAK,EAAE,EAAE,CAAC,MAAM;AACpB,IAAG,EAAC;GACF,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;KACnD,SAAS,EAAE,IAAI;KACf,KAAK,EAAE,EAAE;KACT,UAAU,EAAE,KAAK;KACjB,YAAY,EAAE,IAAI;KAClB,QAAQ,EAAE,IAAI;AAClB,IAAG,EAAC;EACH;AACD,CAAA,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,yBAAyB,CAAC,EAAE;AACzD,GAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,GAAG,EAAC;AAC3C,GAAE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE;AACvB,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE;OACd,MAAM,uBAAuB,EAAE;MAChC;KACD,OAAO,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC;IACpC;AACH,GAAE,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE;KAC/B,SAAS,EAAE,IAAI;AACnB,KAAI,KAAK,EAAE,EAAE,CAAC,IAAI;AAClB,IAAG,EAAC;AACJ,GAAE,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE;KACjC,SAAS,EAAE,IAAI;AACnB,KAAI,KAAK,EAAE,EAAE,CAAC,MAAM;AACpB,IAAG,EAAC;GACF,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;KACnD,SAAS,EAAE,IAAI;KACf,KAAK,EAAE,EAAE;KACT,UAAU,EAAE,KAAK;KACjB,YAAY,EAAE,IAAI;KAClB,QAAQ,EAAE,IAAI;AAClB,IAAG,EAAC;EACH;CACD,MAAM,CAAC,QAAQ,GAAGC,eAAsC,GAAA;CACxD,MAAM,CAAC,MAAM,GAAGC,aAAoC,GAAA;CACpD,MAAM,CAAC,SAAS,GAAGC,gBAAuC,GAAA;CAC1D,MAAM,CAAC,WAAW,GAAGC,kBAAyC,GAAA;CAC9D,MAAM,CAAC,QAAQ,GAAG,SAAQ;AAC1B,CAAA,MAAM,EAAE,cAAc,EAAE,GAAGC,qBAA8C,GAAA;CACzE,MAAM,CAAC,cAAc,GAAG,eAAc;CACtC,MAAM,CAAC,QAAQ,GAAG,IAAG;CACrB,MAAM,CAAC,OAAO,GAAG,UAAS;CAC1B,MAAM,CAAC,OAAO,GAAG,QAAO;CACxB,MAAM,CAAC,uBAAuB,GAAG,wBAAuB;CACxD,MAAM,CAAC,uBAAuB,GAAG,wBAAuB;AACxD,CAAA,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE;GACvC,SAAS,EAAE,IAAI;GACf,YAAY,EAAE,IAAI;GAClB,UAAU,EAAE,IAAI;AAClB,GAAE,GAAG,GAAG;AACR,KAAI,OAAO,QAAQ;IAChB;AACH,EAAC,EAAC;AACF,CAAA,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE;GAC9C,SAAS,EAAE,IAAI;GACf,UAAU,EAAE,IAAI;AAClB,GAAE,GAAG,GAAG;KACJ,OAAO,QAAQ,CAAC,QAAQ;IACzB;AACH,EAAC,EAAC;AACF,CAAA,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE;GACzC,SAAS,EAAE,IAAI;GACf,UAAU,EAAE,IAAI;AAClB,GAAE,GAAG,GAAG;KACJ,OAAO,QAAQ,CAAC,QAAQ;IACzB;AACH,EAAC,EAAC;AACF;AACA;CACA,MAAM,CAAC,MAAM,GAAG,OAAM;AACtB,CAAA,MAAM,CAAC,aAAa,GAAG,SAAS,YAAY,CAAC,KAAK,EAAE;GAClD,OAAO,KAAK,YAAY,UAAU;GACnC;AACD,CAAA,MAAM,CAAC,mBAAmB,GAAG,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACjE,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;AACtE,GAAA;;;;;;;AC3IA;CACA,MAAM,MAAM,GAAGpJ,aAAiB;CAChC,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE;AACzD,GAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAQ;AAClC;AACA;GACE,MAAA,CAAA,OAAA,CAAA,mBAAA,GAAqC,MAAM,CAAC,oBAAmB;GAC/D,MAAA,CAAA,OAAA,CAAA,aAAA,GAA+B,MAAM,CAAC,cAAa;GACnD,MAAA,CAAA,OAAA,CAAA,WAAA,GAA6B,MAAM,CAAC,YAAW;GAC/C,MAAA,CAAA,OAAA,CAAA,SAAA,GAA2B,MAAM,CAAC,UAAS;GAC3C,MAAA,CAAA,OAAA,CAAA,UAAA,GAA4B,MAAM,CAAC,WAAU;GAC7C,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,MAAM,CAAC,SAAQ;GACzC,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,MAAM,CAAC,SAAQ;GACzC,MAAA,CAAA,OAAA,CAAA,MAAA,GAAwB,MAAM,CAAC,OAAM;GACrC,MAAA,CAAA,OAAA,CAAA,SAAA,GAA2B,MAAM,CAAC,UAAS;GAC3C,MAAA,CAAA,OAAA,CAAA,WAAA,GAA6B,MAAM,CAAC,YAAW;GAC/C,MAAA,CAAA,OAAA,CAAA,cAAA,GAAgC,MAAM,CAAC,eAAc;GACrD,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,MAAM,CAAC,SAAQ;GACzC,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,MAAM,CAAC,QAAO;GACvC,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,MAAM,CAAC,SAAQ;GACzC,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,MAAM,CAAC,QAAO;AACzC,GAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE;KACxC,YAAY,EAAE,IAAI;KAClB,UAAU,EAAE,IAAI;AACpB,KAAI,GAAG,GAAG;AACV,OAAM,OAAO,QAAQ;MAChB;AACL,IAAG,EAAC;GACF,MAAA,CAAA,OAAA,CAAA,MAAA,GAAwB,MAAM,CAAC,OAAM;AACvC,EAAC,MAAM;GACL,MAAM,YAAY,GAAGC,aAAoB,GAAA;GACzC,MAAM,QAAQ,GAAGC,eAA6B,GAAA;AAChD,GAAE,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAO;GACrD,MAAA,CAAA,OAAA,GAAiB,YAAY,CAAC,SAAQ;AACxC;AACA;GACE,MAAA,CAAA,OAAA,CAAA,mBAAA,GAAqC,YAAY,CAAC,oBAAmB;GACrE,MAAA,CAAA,OAAA,CAAA,aAAA,GAA+B,YAAY,CAAC,cAAa;GACzD,MAAA,CAAA,OAAA,CAAA,WAAA,GAA6B,YAAY,CAAC,YAAW;GACrD,MAAA,CAAA,OAAA,CAAA,SAAA,GAA2B,YAAY,CAAC,UAAS;GACjD,MAAA,CAAA,OAAA,CAAA,UAAA,GAA4B,YAAY,CAAC,WAAU;GACnD,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,YAAY,CAAC,SAAQ;GAC/C,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,YAAY,CAAC,SAAQ;GAC/C,MAAA,CAAA,OAAA,CAAA,MAAA,GAAwB,YAAY,CAAC,OAAM;GAC3C,MAAA,CAAA,OAAA,CAAA,SAAA,GAA2B,YAAY,CAAC,UAAS;GACjD,MAAA,CAAA,OAAA,CAAA,WAAA,GAA6B,YAAY,CAAC,YAAW;GACrD,MAAA,CAAA,OAAA,CAAA,cAAA,GAAgC,YAAY,CAAC,eAAc;GAC3D,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,YAAY,CAAC,SAAQ;GAC/C,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,YAAY,CAAC,QAAO;AAC/C,GAAE,yBAAyB,gBAAe;GACxC,MAAA,CAAA,OAAA,CAAA,QAAA,GAA0B,YAAY,CAAC,SAAQ;GAC/C,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,YAAY,CAAC,QAAO;AAC/C,GAAE,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE;KAC9C,YAAY,EAAE,IAAI;KAClB,UAAU,EAAE,IAAI;AACpB,KAAI,GAAG,GAAG;AACV,OAAM,OAAO,QAAQ;MAChB;AACL,IAAG,EAAC;GACF,MAAA,CAAA,OAAA,CAAA,MAAA,GAAwB,YAAY,CAAC,OAAM;EAC5C;AACD;AACA;AACA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,GAAyB,MAAM,CAAC,QAAA;;;;;;;;;;;;;;AChEhC,CAAA,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACzC;GACEmR,gBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;KAClD,IAAI,SAAS,EAAE;AACnB,OAAM,IAAI,CAAC,MAAM,GAAG,UAAS;OACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1D,SAAQ,WAAW,EAAE;WACX,KAAK,EAAE,IAAI;WACX,UAAU,EAAE,KAAK;WACjB,QAAQ,EAAE,IAAI;WACd,YAAY,EAAE,IAAI;UACnB;AACT,QAAO,EAAC;MACH;AACL,IAAG,CAAC;AACJ,EAAC,MAAM;AACP;GACEA,gBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;KAClD,IAAI,SAAS,EAAE;AACnB,OAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,OAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;AACnC,OAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;AAC9C,OAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;AACrC,OAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;MAClC;KACF;AACH,EAAA;;;;AC1BA,IAAI;AACJ,EAAE,IAAI,IAAI,GAAG,OAAQ,CAAA,MAAM,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,MAAM,EAAE,CAAC;AACpD,EAAEC,UAAc,CAAA,OAAA,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjC,CAAC,CAAC,OAAO,CAAC,EAAE;AACZ;AACA,EAAEA,UAAA,CAAA,OAAc,GAAGrR,uBAAA,EAAgC,CAAC;AACpD,CAAA;;;;ACNA,MAAM,UAAEyE,QAAM,EAAE,GAAG1E,aAAiB;AACpC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAC;AACvC;AACA,SAASuR,YAAU,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,EAAE,IAAI,YAAYA,YAAU,CAAC,EAAE;AACrC,IAAI,OAAO,IAAIA,YAAU,CAAC,GAAG,CAAC;AAC9B,GAAG;AACH;AACA,EAAEA,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAC;AAClC,CAAC;AACD;AACAA,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AACxC,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAC;AACtD;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,GAAE;AACjB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAC;AACjB;AACA,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAC;AACpB,GAAG;AACH,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChD,EAAE,OAAO,IAAIA,YAAU,CAAC,GAAG,CAAC;AAC5B,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE;AACzD,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,EAAC;AACb;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM;AACzC,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,MAAM,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,IAAI,GAAG,GAAG,GAAE;AACZ,GAAG;AACH,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,QAAQ,EAAE;AAC1D,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAC;AAC9B,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAC;AAC1B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACrC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM;AAClC,GAAG;AACH;AACA,EAAE,OAAO,MAAM;AACf,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;AACxC,IAAI,OAAO,SAAS;AACpB,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;AACpC;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzC,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACzD,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AAC9C,IAAI,KAAK,IAAI,IAAI,CAAC,OAAM;AACxB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE;AAC1C,IAAI,GAAG,IAAI,IAAI,CAAC,OAAM;AACtB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC;AACvC,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC5E,EAAE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;AACpD,IAAI,QAAQ,GAAG,EAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1D,IAAI,MAAM,GAAG,IAAI,CAAC,OAAM;AACxB,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,GAAG,IAAI7M,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,IAAI,CAAC,EAAE;AACnB,IAAI,OAAO,GAAG,IAAIA,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAG;AACpB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAC;AACpC,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,SAAQ;AAC/B,EAAE,IAAI,KAAK,GAAG,IAAG;AACjB,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,QAAQ,KAAK,EAAC;AACtC,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,EAAC;AACpB;AACA;AACA,EAAE,IAAI,QAAQ,KAAK,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAChD,IAAI,IAAI,CAAC,IAAI,EAAE;AACf;AACA,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;AACpC,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,UAAUA,QAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;AAChD,KAAK;AACL;AACA;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAC;AACrC,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM;AACpC,KAAK;AACL;AACA,IAAI,OAAO,GAAG;AACd,GAAG;AACH;AACA;AACA,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,EAAE;AAClD,IAAI,OAAO,IAAI;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;AACpE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;AACtD,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,EAAE;AACb;AACA,IAAI,GAAG,GAAGA,QAAM,CAAC,WAAW,CAAC,GAAG,EAAC;AACjC,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAK;AAC1C;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC;AAC5C,MAAM,MAAM,IAAI,EAAC;AACjB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAC;AAC3D,MAAM,MAAM,IAAI,EAAC;AACjB,MAAM,KAAK;AACX,KAAK;AACL;AACA,IAAI,KAAK,IAAI,EAAC;AACd;AACA,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,GAAG,EAAC;AACf,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;AACtD;AACA,EAAE,OAAO,GAAG;AACZ,EAAC;AACD;AACA6M,YAAU,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;AACvE,EAAE,KAAK,GAAG,KAAK,IAAI,EAAC;AACpB,EAAE,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAG;AACnD;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAM;AACxB,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;AACf,IAAI,GAAG,IAAI,IAAI,CAAC,OAAM;AACtB,GAAG;AACH;AACA,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE;AACtB,GAAG;AACH;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAC;AACzC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAC;AACrC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC;AACpE;AACA,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,GAAG,GAAE;AACjB,GAAG,MAAM;AACT,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAC;AACpF,GAAG;AACH;AACA,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5B,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC;AACjD,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;AACzE,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAClD,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;AACxD;AACA,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC;AAC3B;AACA,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI;AACpD;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACvC,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM;AACnC,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,GAAE;AACxB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAC;AAChD,MAAM,IAAI,CAAC,MAAM,IAAI,MAAK;AAC1B,MAAM,KAAK;AACX,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACvD,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAE;AAC1B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;AAC9B,GAAG;AACH;AACA,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;AACpD,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE;AAClB;AACA,IAAI,IAAI,CAAC,aAAa,CAAC7M,QAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,EAAC;AAC/E,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC;AACzB,KAAK;AACL,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AACtC;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;AAC/B,KAAK;AACL,GAAG,MAAM;AACT;AACA;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAE;AAC1B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,aAAa,CAACA,QAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC;AACxC,GAAG;AACH;AACA,EAAE,OAAO,IAAI;AACb,EAAC;AACD;AACA6M,YAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE;AACjE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAC;AACtB,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,OAAM;AAC3B,EAAC;AACD;AACAA,YAAU,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnE,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5D,IAAI,QAAQ,GAAG,OAAM;AACrB,IAAI,MAAM,GAAG,UAAS;AACtB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7D,IAAI,MAAM,IAAI,SAAS,CAAC,qFAAqF,CAAC;AAC9G,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,IAAI,MAAM,GAAG7M,QAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAC;AAClC,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,IAAI,MAAM,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAC;AAC1C,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACzC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,GAAE;AAC3B,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC3C,IAAI,MAAM,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAC;AAC7E,GAAG,MAAM,IAAI,CAACA,QAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACvC,IAAI,MAAM,GAAGA,QAAM,CAAC,IAAI,CAAC,MAAM,EAAC;AAChC,GAAG;AACH;AACA,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,EAAC;AAC9B;AACA,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACrB,IAAI,MAAM,GAAG,EAAC;AACd,GAAG;AACH;AACA,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAM;AACjC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,EAAC;AACd,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM;AACtD,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAC;AACvC,EAAE,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAC;AAC3B,EAAE,IAAI,UAAU,GAAG,QAAQ,CAAC,CAAC,EAAC;AAC9B;AACA;AACA,EAAE,OAAO,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;AACjD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAC;AACpC;AACA,IAAI,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,WAAU;AACtD;AACA,MAAM,IAAI,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE;AAC5C,QAAQ,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAC;AACnE;AACA,QAAQ,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AACvC,UAAU,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACnE,SAAS;AACT;AACA,QAAQ,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,EAAC;AACpD,OAAO,MAAM;AACb,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAC;AACpE;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;AAC5C,UAAU,OAAO,SAAS;AAC1B,SAAS;AACT;AACA,QAAQ,UAAU,GAAE;AACpB,OAAO;AACP,KAAK;AACL;AACA,IAAI,UAAU,GAAG,EAAC;AAClB,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX,EAAC;AACD;AACA6M,YAAU,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;AACxD,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AAC5C,IAAI,OAAO,KAAK;AAChB,GAAG;AACH;AACA,EAAE,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;AAC3E,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE;AAClE,MAAM,OAAO,KAAK;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,CAAC,CAAC,YAAY;AACd,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,cAAc,EAAE,CAAC;AACrB,IAAI,cAAc,EAAE,CAAC;AACrB,IAAI,eAAe,EAAE,CAAC;AACtB,IAAI,eAAe,EAAE,CAAC;AACtB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,YAAY,EAAE,CAAC;AACnB,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AAC3B,IAAI,CAAC,UAAU,CAAC,EAAE;AAClB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC/B,QAAQA,YAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,EAAE,UAAU,EAAE;AAChE,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1E,UAAS;AACT,OAAO,MAAM;AACb,QAAQA,YAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,GAAG,CAAC,EAAE;AACxD,UAAU,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,UAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC,CAAC,EAAC;AACT,GAAG;AACH,CAAC,EAAE,EAAC;AACJ;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,CAAC,EAAE;AAChE,EAAE,OAAO,CAAC,YAAYA,YAAU,IAAIA,YAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9D,EAAC;AACD;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,CAAC,EAAE;AACpD,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/B,EAAC;AACD;AACA,IAAA,YAAc,GAAGA;;AC7YjB,MAAM,YAAY,GAAGvR,WAA0B,CAAC,OAAM;AACtD,MAAM,QAAQ,GAAGC,gBAAmB;AACpC,MAAM,UAAU,GAAGC,aAAuB;AAC1C;AACA,SAAS,gBAAgB,EAAE,QAAQ,EAAE;AACrC,EAAE,IAAI,EAAE,IAAI,YAAY,gBAAgB,CAAC,EAAE;AAC3C,IAAI,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AACzC,GAAG;AACH;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAQ;AAC7B;AACA,IAAI,MAAM,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AACvC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,EAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAI;AAC7B,OAAO;AACP,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;AAChB;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,EAAE;AAC1C,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAC;AAC5B,KAAK,EAAC;AACN,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE;AAC9C,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAC;AACxC,KAAK,EAAC;AACN;AACA,IAAI,QAAQ,GAAG,KAAI;AACnB,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAC;AACvC,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAC;AACzB,CAAC;AACD;AACA,QAAQ,CAAC,gBAAgB,EAAE,YAAY,EAAC;AACxC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAC;AAC/D;AACA,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE;AAC3D,EAAE,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AACvC,EAAC;AACD;AACA,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9E,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAC;AACzB;AACA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,QAAQ,GAAE;AACd,GAAG;AACH,EAAC;AACD;AACA,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AACzD,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAC;AACpC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAC;AAChC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAC;AACpB,EAAC;AACD;AACA,gBAAgB,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;AACtD,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAC;AAC9C;AACA,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAC;AACtC,IAAI,IAAI,CAAC,SAAS,GAAG,KAAI;AACzB,GAAG;AACH,EAAC;AACD;AACA,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;AAClE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAC;AACvB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAC;AACjB,EAAE,EAAE,CAAC,GAAG,EAAC;AACT,EAAC;AACD;AACA,gBAAgB,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,CAAC,EAAE;AACtE,EAAE,OAAO,CAAC,YAAY,gBAAgB,IAAI,CAAC,YAAY,UAAU,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AACrG,EAAC;AACD;AACA,gBAAgB,CAAC,YAAY,GAAG,UAAU,CAAC,aAAY;AACvD;AACAsR,EAAA,CAAA,OAAc,GAAG,iBAAgB;AACjCA,EAAA,CAAA,OAAA,CAAA,gBAA+B,GAAG,iBAAgB;AAClDA,EAAA,CAAA,OAAA,CAAA,UAAyB,GAAG,WAAA;;;;;AClF5B;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;AACzB,CAAA,IAAI,GAAG,GAAG,sBAAsB,CAACxR,SAAa,CAAC,CAAC;CAChD,IAAI,OAAO,GAAGC,YAAiB,CAAC;AAChC,CAAA,IAAI,QAAQ,GAAG,sBAAsB,CAACC,cAAoB,CAAC,CAAC;CAC5D,IAAI,OAAO,GAAGC,MAAmB,CAAC;CAClC,IAAI,OAAO,GAAGa,QAAmB,CAAC;CAClC,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;AACA;AACA;AACA;AACA,CAAA,MAAM,qBAAqB,SAAS,OAAO,CAAC,SAAS,CAAC;GACpD,WAAW,CAAC,KAAK,EAAE;AACrB,KAAI,KAAK,CAAC;OACJ,kBAAkB,EAAE,IAAI;AAC9B,MAAK,CAAC,CAAC;AACP,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,KAAI,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;KAChC,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;IAC7B;AACH,GAAE,KAAK,GAAG;AACV,KAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AAClB,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;MAC7B;KACD,OAAO,IAAI,CAAC;IACb;AACH,GAAE,MAAM,GAAG;AACX,KAAI,KAAK,CAAC,MAAM,EAAE,CAAC;AACnB,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;MAC9B;KACD,OAAO,IAAI,CAAC;IACb;GACD,mBAAmB,CAAC,QAAQ,EAAE;AAChC;KACI,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,EAAE;AACpD;OACM,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7C,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE;SAClC,OAAO,QAAQ,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACnF;OACD,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,MAAM,EAAE;AACpC,SAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC;AACA;SACQ,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;SACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,SAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1C,SAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;WACzB,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;AAC/D,aAAY,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;aACnB,eAAe,EAAE,KAAK;AAClC,YAAW,CAAC,CAAC;AACb,WAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;UACpB;AACT,SAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE;AAC7B;AACA;AACA,WAAU,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM;AACpC,aAAY,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AAC5C,aAAY,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/C,YAAW,CAAC,CAAC;WACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,WAAU,OAAO;AACjB,UAAS,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;AAClD;AACA;AACA,WAAU,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;AACtC,aAAY,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/C,YAAW,CAAC,CAAC;AACb,WAAU,OAAO;UACR;AACT,QAAO,MAAM;AACb,SAAQ,MAAM;QACP;MACF;AACL;AACA;AACA;KACI,QAAQ,EAAE,CAAC;IACZ;AACH,GAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;KACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACpC;EACF;CACD,IAAI,QAAQ,GAAG,qBAAqB,CAAC;AACrC,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,qBAAqB,CAAC;AACvC,CAAA;;;;;;;;AChGA;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;AACzB,CAAA,IAAI,GAAG,GAAG,sBAAsB,CAAChB,SAAa,CAAC,CAAC;CAChD,IAAI,OAAO,GAAGC,YAAiB,CAAC;CAChC,IAAI,OAAO,GAAGC,MAAmB,CAAC;CAClC,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F,CAAA,MAAM,qBAAqB,SAAS,OAAO,CAAC,MAAM,CAAC;GACjD,WAAW,CAAC,KAAK,EAAE;AACrB,KAAI,UAAU;AACd,IAAG,EAAE;AACL,KAAI,KAAK,CAAC;OACJ,kBAAkB,EAAE,IAAI;AAC9B,MAAK,CAAC,CAAC;AACP,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACnB,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AAChC;AACA;AACA;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM;AAC5B,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,MAAK,CAAC,CAAC;IACJ;AACH,GAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;KACnC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;AAC3D,KAAI,IAAI,YAAY,GAAG,CAAC,CAAC;AACzB,KAAI,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;KAC9B,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI;AAC3C,OAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAC1B,SAAQ,OAAO;QACR;OACD,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;OACrB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE;AACtC,SAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;SACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC;AACA;AACA,SAAQ,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChD,MAAM,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;SACnC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACxD,SAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAChD,WAAU,OAAO,CAAC,KAAK,EAAE,CAAC;UACjB;QACF;AACP,MAAK,CAAC,CAAC;KACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;OAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;OAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC;AACA;AACA,OAAM,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;OAChD,MAAM,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;OACnC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACtD,OAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpC,OAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;OACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;OAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;OACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAM,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;OAChC,QAAQ,EAAE,CAAC;AACjB,MAAK,CAAC,CAAC;IACJ;GACD,KAAK,CAAC,KAAK,EAAE;AACf;AACA;AACA,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;MAC9B;IACF;EACF;CACD,IAAI,QAAQ,GAAG,qBAAqB,CAAC;AACrC,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,qBAAqB,CAAC;AACvC,CAAA;;;;;;AChFA;AACA,CAAA,MAAM,CAAC,cAAc,CAAU,OAAA,EAAA,YAAY,EAAE;GAC3C,KAAK,EAAE,IAAI;AACb,EAAC,CAAC,CAAC;CACH,OAAkB,CAAA,OAAA,GAAA,KAAK,CAAC,CAAC;AACzB,CAAA,IAAI,iBAAiB,GAAG,sBAAsB,CAACF,gBAA4B,CAAC,CAAC;AAC7E,CAAA,IAAI,GAAG,GAAG,uBAAuB,CAACC,YAAc,CAAC,CAAC;CAClD,IAAI,OAAO,GAAGC,YAAiB,CAAC;AAChC,CAAA,IAAI,QAAQ,GAAG,sBAAsB,CAACC,cAAoB,CAAC,CAAC;CAC5D,IAAI,OAAO,GAAGa,MAAmB,CAAC;AAClC,CAAA,IAAI,sBAAsB,GAAG,sBAAsB,CAACc,4BAAoC,CAAC,CAAC;AAC1F,CAAA,IAAI,sBAAsB,GAAG,sBAAsB,CAACE,4BAAoC,CAAC,CAAC;CAC1F,SAAS,wBAAwB,CAAC,WAAW,EAAE,EAAE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI,gBAAgB,GAAG,IAAI,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,GAAG,UAAU,WAAW,EAAE,EAAE,OAAO,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE;CACvT,SAAS,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,qBAAqB,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,qBAAqB,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE;CACpyB,SAAS,sBAAsB,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F,CAAA,MAAM,SAAS,SAAS,OAAO,CAAC,YAAY,CAAC;AAC7C,GAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;KACrC,KAAK,EAAE,CAAC;AACZ,KAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,KAAI,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACxC,KAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChF,KAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;AACtF,KAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;OAC1E,UAAU,EAAE,UAAU;AAC5B,MAAK,CAAC,CAAC;KACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C;AACH,GAAE,UAAU,CAAC,GAAG,IAAI,EAAE;AACtB,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,OAAM,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;AAChH,OAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,UAAU,CAAC;MACpD;AACL,KAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,OAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;MACrF;AACL,KAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;IAC9C;AACH;AACA;AACA,GAAE,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;KAC7D,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACpH,OAAM,kBAAkB,CAAC,UAAU,GAAG,SAAS,CAAC;MAC3C;KACD,MAAM,aAAa,GAAG,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;KAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;OACtC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;AACzD,OAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG;AAC3C,SAAQ,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC;AAC/B,WAAU,MAAM,EAAE,UAAU,CAAC,OAAO;WAC1B,UAAU,EAAE,QAAQ;WACpB,aAAa,EAAE,aAAa;WAC5B,kBAAkB,EAAE,CAAC,sBAAsB;AACrD,UAAS,CAAC;AACV,SAAQ,SAAS,EAAE,UAAU,CAAC,OAAO;AACrC,QAAO,CAAC;OACF,MAAM,eAAe,GAAG,MAAM;SAC5B,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC5D,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACtD,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC9E;AACA;AACA;SACQ,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;WACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,UAAS,CAAC,CAAC;SACH,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SAChD,IAAI,MAAM,EAAE;WACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;UAChF;SACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AAClD,SAAQ,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;SAC/E,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACvC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACtD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9D,SAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;SACnC,OAAO,EAAE,CAAC;AAClB,QAAO,CAAC;AACR,OAAM,MAAM,OAAO,GAAG,GAAG,IAAI;SACrB,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC5D,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACtD,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC9E,SAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACvC,SAAQ,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACvC,SAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAO,CAAC;OACF,MAAM,UAAU,GAAG,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA,SAAQ,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;AAC7C,WAAU,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;WAC3B,eAAe,EAAE,KAAK;AAChC,UAAS,CAAC,CAAC;SACH,IAAI,KAAK,CAAC;SACV,OAAO,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;AACpD,WAAU,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;UACtB;SACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,SAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;SACd,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,QAAQ,IAAI;AAClD;AACA;AACA;AACA;WACU,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC5D,WAAU,WAAW,MAAM,IAAI,IAAI,QAAQ,EAAE;AAC7C;AACA;aACY,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC;AACX,UAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAO,CAAC;OACF,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;OAC5C,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;OAC5D,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxD,MAAK,CAAC,CAAC;IACJ;AACH;AACA;AACA;AACA,GAAE,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE;AACjD,KAAI,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;OACnC,IAAI,EAAE,UAAU;OAChB,eAAe,EAAE,eAAe;AACtC,MAAK,CAAC,CAAC;AACP,KAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1C,OAAO,OAAO,CAAC;IAChB;AACH;AACA;AACA;AACA;GACE,MAAM,WAAW,GAAG;KAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;AAC7D,KAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,OAAM,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;MACrD;AACL,KAAI,OAAO,MAAM,CAAC,KAAK,CAAC;IACrB;EACF;CACD,IAAI,QAAQ,GAAG,SAAS,CAAC;AACzB,CAAA,OAAA,CAAA,OAAA,GAAkB,QAAQ,CAAC;AAC3B,CAAA,MAAA,CAAA,OAAA,GAAiB,SAAS,CAAC;AAC3B,CAAA;;;;;;;;;;;;;;;ACvJA,MAAM,CAAC,cAAc,CAAC,SAAO,EAAE,YAAY,EAAE;AAC7C,EAAE,KAAK,EAAE,IAAI;AACb,CAAC,CAAC,CAAC;AACqB,SAAA,CAAA,gBAAA,iCAA+B,GAAG,SAAA,CAAA,KAAa,GAAoB,SAAA,CAAA,SAAA,GAAG,KAAK,EAAE;AACrG;AACA,MAAM,oBAAoB,GAAG;AAC7B;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA;AACA;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA;AACA;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA;AACA;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA,EAAE,CAAC,MAAM,GAAG,OAAO;AACnB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB;AACA,EAAE,CAAC,MAAM,GAAG,QAAQ;AACpB,CAAC,CAAC;AAC0B,SAAA,CAAA,oBAAA,GAAG,qBAAqB;AACpD,MAAM,gBAAgB,GAAG;AACzB,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,OAAO;AACf;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,EAAE,GAAG,QAAQ;AAChB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GAAG,GAAG,QAAQ;AACjB;AACA,EAAE,CAAC,GA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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I,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxhD,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,I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AC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO;AAC7C,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAC,OAAO;AACvD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO;AACjC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO;AACjC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,QAAA,CAAA,IAAA,GAAG,KAAK;AACpB,MAAMlP,OAAK,GAAG;AACd,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC3B,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO;AACnB,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO;AAC7B,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO;AACnB,EAAE,aAAa,EAAE,cAAc,CAAC,OAAO;AACvC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO;AACrB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO;AACvB,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO;AAC7B,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO;AACvB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC3B,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC3B,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO;AACjC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO;AACzB,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO;AACvB,EAAE,IAAI,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AAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C;AACA;AACA;AACA,CAAA,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C;AACA;AACA;AACA,CAAA,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,CAAC;AACjD;AACA;AACA;AACA,CAAA,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC;AACxC;AACA;AACA;CACA,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAC3C;AACA;AACA;AACA,CAAA,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA;AACA;CACA,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC;AACA;AACA;CACA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B;AACA;AACA;CACA,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B;AACA;AACA;CACA,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC;AACA;AACA;CACA,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC;AACA;AACA;CACA,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,YAAY,GAAG;GACnB,MAAM,EAAE,CAAC;GACT,QAAQ,EAAE,CAAC;GACX,KAAK,EAAE,CAAC;AACV,EAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,UAAU,SAAS,OAAO,CAAC,YAAY,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;KAClB,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;KACnB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;KACN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC;AACH;AACA;AACA;AACA;AACA,GAAE,oBAAoB,GAAG;AACzB,KAAI,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACzC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AAClC,OAAM,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570]}