UNPKG

23 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const utils_1 = require("@neo-one/utils");
4exports.UnknownNetworkError = utils_1.makeErrorWithCode('UNKNOWN_NETWORK', (name) => `Unknown network ${name}`);
5exports.UnknownAccountError = utils_1.makeErrorWithCode('UNKNOWN_ACCOUNT', (address) => `Unknown account ${address}`);
6exports.InvalidArgumentError = utils_1.makeErrorWithCode('INVALID_ARGUMENT',
7// tslint:disable-next-line no-any
8(typeName, argumentName, value, extra) => `Expected ${typeName} for ${argumentName}, found ${String(value)}${extra === undefined ? '' : `. ${extra}`}`);
9exports.InvalidContractArgumentCountError = utils_1.makeErrorWithCode('INVALID_CONTRACT_ARGUMENT_COUNT', (expectedLength, foundLength) => `Expected ${expectedLength} parameters, found ${foundLength}.`);
10exports.InvocationCallError = utils_1.makeErrorWithCode('INVOCATION_CALL', (message) => message);
11exports.InvalidEventError = utils_1.makeErrorWithCode('INVALID_EVENT', (message) => message);
12exports.NoAccountError = utils_1.makeErrorWithCode('NO_ACCOUNT', () => 'No account exists.');
13exports.CannotSendToContractError = utils_1.makeErrorWithCode('CANNOT_SEND_TO_CONTRACT', (address) => `Contract ${address} does not accept native assets`);
14exports.CannotSendFromContractError = utils_1.makeErrorWithCode('CANNOT_SEND_FROM_CONTRACT', (address) => `Contract ${address} does not allow sending native assets`);
15exports.NoContractDeployedError = utils_1.makeErrorWithCode('NO_CONTRACT_DEPLOYED', (networkType) => `Contract has not been deployed to network ${networkType}`);
16exports.JSONRPCError = utils_1.makeErrorWithCode('JSON_RPC', (responseError) => `${responseError.message}:${responseError.code}`);
17exports.InvalidRPCResponseError = utils_1.makeErrorWithCode('INVALID_RPC_RESPONSE', () => 'Did not receive valid rpc response');
18exports.HTTPError = utils_1.makeErrorWithCode('HTTP', (status, text) => text === undefined ? `HTTP Error ${status}` : `HTTP Error ${status}: ${text}`);
19exports.UnknownBlockError = utils_1.makeErrorWithCode('UNKNOWN_BLOCK', () => 'Unknown block');
20exports.NothingToSendError = utils_1.makeErrorWithCode('NOTHING_TO_SEND', () => 'Nothing to send.');
21exports.NothingToRefundError = utils_1.makeErrorWithCode('NOTHING_TO_REFUND', () => 'Nothing to refund.');
22exports.NothingToClaimError = utils_1.makeErrorWithCode('NEO_NOTHING_TO_CLAIM', (id) => `Address ${id.address} on network ${id.network} has nothing to claim.`);
23exports.InvalidTransactionError = utils_1.makeErrorWithCode('INVALID_TRANSACTION', (message) => message);
24exports.InvokeError = utils_1.makeErrorWithCode('INVOKE', (message) => message);
25exports.InsufficientFundsError = utils_1.makeErrorWithCode('INSUFFICIENT_FUNDS', (total, expected) => `Found ${total.toString()} funds, required: ${expected.toString()}.`);
26exports.InsufficientSystemFeeError = utils_1.makeErrorWithCode('INSUFFICIENT_SYSTEM_FEE', (total, expected) => `Found ${total.toString()} allowed system fee, required: ${expected.toString()}.`);
27exports.FundsInUseError = utils_1.makeErrorWithCode('FUNDS_IN_USE', (total, expected, numInputs) => `Found ${total.toString()} funds, required: ${expected.toString()}; You have ${numInputs} input(s) on the current block, try transfer again on the next`);
28exports.MissingTransactionDataError = utils_1.makeErrorWithCode('MISSING_TRANSACTION_DATA', (hash) => `Missing transaction data for transaction ${hash}`);
29exports.RelayTransactionError = utils_1.makeErrorWithCode('RELAY_TRANSACTION', (message) => message);
30exports.LockedAccountError = utils_1.makeErrorWithCode('LOCKED_ACCOUNT', (address) => `Account ${address} is locked`);
31exports.PasswordRequiredError = utils_1.makeErrorWithCode('PASSWORD_REQUIRED', () => 'A password is required when creating accounts on the MainNet.');
32exports.NothingToTransferError = utils_1.makeErrorWithCode('NOTHING_TO_TRANSFER', () => 'Nothing to transfer.');
33exports.LedgerNotSupportedError = utils_1.makeErrorWithCode('LEDGER_NOT_SUPPORTED', () => 'Ledger not supported by your machine.');
34exports.LedgerNotDetectedError = utils_1.makeErrorWithCode('LEDGER_NOT_DETECTED', () => 'Ledger not detected by your machine.');
35exports.LedgerStatusCodeError = utils_1.makeErrorWithCode('BAD_LEDGER_STATUS_CODE', (code) => `Received unknown status code ${code} from ledger.`);
36exports.LedgerMessageSizeError = utils_1.makeErrorWithCode('LEDGER_MESSAGE_OVERSIZED', () => 'Ledger signing failed, message too large. [CODE: 6d08]');
37exports.LedgerNEOAppError = utils_1.makeErrorWithCode('LEDGER_NEO_APP_ERROR', () => 'Ledger NEO App error, check ledger. [CODE: 6e00]');
38exports.LedgerTransactionDenied = utils_1.makeErrorWithCode('LEDGER_TRANSACTION_DENIED', () => 'Ledger transaction denied. [CODE: 6985]');
39exports.LedgerParseError = utils_1.makeErrorWithCode('LEDGER_PARSE_ERROR', () => 'Ledger transaction parsing error. [CODE: 6d07]');
40exports.DeleteUserAccountUnsupportedError = utils_1.makeErrorWithCode('DELETE_USER_ACCOUNT_UNSUPPORTED', (id) => `Deleting the user account with network ${id.network} and address ${id.address} is not supported`);
41exports.UpdateUserAccountUnsupportedError = utils_1.makeErrorWithCode('UPDATE_USER_ACCOUNT_NAME_UNSUPPORTED', (id) => `Updating the name of user account with network ${id.network} and address ${id.address} is not supported`);
42exports.TransferArgumentExpectedError = utils_1.makeErrorWithCode('TRANSFER_ARGUMENT_EXPECTED', () => 'Expected to find a transfer argument');
43exports.HashArgumentExpectedError = utils_1.makeErrorWithCode('HASH_ARGUMENT_EXPECTED', () => 'Expected to find a hash argument');
44exports.NEOONEOneDataProviderSetRPCURLError = utils_1.makeErrorWithCode('INVALID_SET_RPC_URL_CALL', () => 'Cannot set rpcURL for NEOONEOneDataProvider');
45exports.InvalidHDAccountPermissionError = utils_1.makeErrorWithCode('INVALID_HD_ACCOUNT_PERMISSION', (account) => `Invalid permission for account at path: ${account}`);
46exports.UndiscoverableWalletError = utils_1.makeErrorWithCode('UNDISCOVERABLE_WALLET', (index) => `Invalid access to discover wallet at index: ${index}`);
47exports.UndiscoverableChainError = utils_1.makeErrorWithCode('UNDISCOVERABLE_CHAIN', (path) => `Invalid access to discover chain at index: ${path}`);
48exports.HDMasterDuplicateError = utils_1.makeErrorWithCode('HD_MASTER_DUPLICATE_ERROR', () => 'Storage returned multiple master keys');
49exports.InvalidHDStoredPathError = utils_1.makeErrorWithCode('INVALID_HD_STORED_PATH', (path) => `Storage returned an invalid key-path: ${path}`);
50exports.InvalidMasterPathError = utils_1.makeErrorWithCode('INVALID_HD_MASTER_PATH', (path) => `Invalid masterPath returned by HDStore: ${path}`);
51
52//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFHLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FDOUMsQ0FBQztBQUNXLFFBQUEsd0JBQXdCLEdBQUcseUJBQWlCLENBQ3ZELHdCQUF3QixFQUN4QixDQUFDLElBQVksRUFBRSxFQUFFLENBQUMseUNBQXlDLElBQUksRUFBRSxDQUNsRSxDQUFDO0FBQ1csUUFBQSxzQkFBc0IsR0FBRyx5QkFBaUIsQ0FDckQsd0JBQXdCLEVBQ3hCLENBQUMsSUFBdUIsRUFBRSxFQUFFLENBQUMsMkNBQTJDLElBQUksRUFBRSxDQUMvRSxDQUFDIiwiZmlsZSI6Im5lby1vbmUtY2xpZW50LWNvcmUvc3JjL2Vycm9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZHJlc3NTdHJpbmcsIEpTT05SUENFcnJvclJlc3BvbnNlLCBVc2VyQWNjb3VudElEIH0gZnJvbSAnQG5lby1vbmUvY2xpZW50LWNvbW1vbic7XG5pbXBvcnQgeyBtYWtlRXJyb3JXaXRoQ29kZSB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNvbnN0IFVua25vd25OZXR3b3JrRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnVU5LTk9XTl9ORVRXT1JLJywgKG5hbWU6IHN0cmluZykgPT4gYFVua25vd24gbmV0d29yayAke25hbWV9YCk7XG5leHBvcnQgY29uc3QgVW5rbm93bkFjY291bnRFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnVU5LTk9XTl9BQ0NPVU5UJyxcbiAgKGFkZHJlc3M6IHN0cmluZykgPT4gYFVua25vd24gYWNjb3VudCAke2FkZHJlc3N9YCxcbik7XG5leHBvcnQgY29uc3QgSW52YWxpZEFyZ3VtZW50RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0lOVkFMSURfQVJHVU1FTlQnLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gICh0eXBlTmFtZTogc3RyaW5nLCBhcmd1bWVudE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZXh0cmE/OiBzdHJpbmcpID0+XG4gICAgYEV4cGVjdGVkICR7dHlwZU5hbWV9IGZvciAke2FyZ3VtZW50TmFtZX0sIGZvdW5kICR7U3RyaW5nKHZhbHVlKX0ke2V4dHJhID09PSB1bmRlZmluZWQgPyAnJyA6IGAuICR7ZXh0cmF9YH1gLFxuKTtcbmV4cG9ydCBjb25zdCBJbnZhbGlkQ29udHJhY3RBcmd1bWVudENvdW50RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0lOVkFMSURfQ09OVFJBQ1RfQVJHVU1FTlRfQ09VTlQnLFxuICAoZXhwZWN0ZWRMZW5ndGg6IG51bWJlciwgZm91bmRMZW5ndGg6IG51bWJlcikgPT4gYEV4cGVjdGVkICR7ZXhwZWN0ZWRMZW5ndGh9IHBhcmFtZXRlcnMsIGZvdW5kICR7Zm91bmRMZW5ndGh9LmAsXG4pO1xuZXhwb3J0IGNvbnN0IEludm9jYXRpb25DYWxsRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnSU5WT0NBVElPTl9DQUxMJywgKG1lc3NhZ2U6IHN0cmluZykgPT4gbWVzc2FnZSk7XG5leHBvcnQgY29uc3QgSW52YWxpZEV2ZW50RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnSU5WQUxJRF9FVkVOVCcsIChtZXNzYWdlOiBzdHJpbmcpID0+IG1lc3NhZ2UpO1xuZXhwb3J0IGNvbnN0IE5vQWNjb3VudEVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoJ05PX0FDQ09VTlQnLCAoKSA9PiAnTm8gYWNjb3VudCBleGlzdHMuJyk7XG5leHBvcnQgY29uc3QgQ2Fubm90U2VuZFRvQ29udHJhY3RFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnQ0FOTk9UX1NFTkRfVE9fQ09OVFJBQ1QnLFxuICAoYWRkcmVzczogQWRkcmVzc1N0cmluZykgPT4gYENvbnRyYWN0ICR7YWRkcmVzc30gZG9lcyBub3QgYWNjZXB0IG5hdGl2ZSBhc3NldHNgLFxuKTtcbmV4cG9ydCBjb25zdCBDYW5ub3RTZW5kRnJvbUNvbnRyYWN0RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0NBTk5PVF9TRU5EX0ZST01fQ09OVFJBQ1QnLFxuICAoYWRkcmVzczogQWRkcmVzc1N0cmluZykgPT4gYENvbnRyYWN0ICR7YWRkcmVzc30gZG9lcyBub3QgYWxsb3cgc2VuZGluZyBuYXRpdmUgYXNzZXRzYCxcbik7XG5leHBvcnQgY29uc3QgTm9Db250cmFjdERlcGxveWVkRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ05PX0NPTlRSQUNUX0RFUExPWUVEJyxcbiAgKG5ldHdvcmtUeXBlOiBzdHJpbmcpID0+IGBDb250cmFjdCBoYXMgbm90IGJlZW4gZGVwbG95ZWQgdG8gbmV0d29yayAke25ldHdvcmtUeXBlfWAsXG4pO1xuZXhwb3J0IGNvbnN0IEpTT05SUENFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnSlNPTl9SUEMnLFxuICAocmVzcG9uc2VFcnJvcjogSlNPTlJQQ0Vycm9yUmVzcG9uc2UpID0+IGAke3Jlc3BvbnNlRXJyb3IubWVzc2FnZX06JHtyZXNwb25zZUVycm9yLmNvZGV9YCxcbik7XG5leHBvcnQgY29uc3QgSW52YWxpZFJQQ1Jlc3BvbnNlRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0lOVkFMSURfUlBDX1JFU1BPTlNFJyxcbiAgKCkgPT4gJ0RpZCBub3QgcmVjZWl2ZSB2YWxpZCBycGMgcmVzcG9uc2UnLFxuKTtcbmV4cG9ydCBjb25zdCBIVFRQRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnSFRUUCcsIChzdGF0dXM6IG51bWJlciwgdGV4dD86IHN0cmluZykgPT5cbiAgdGV4dCA9PT0gdW5kZWZpbmVkID8gYEhUVFAgRXJyb3IgJHtzdGF0dXN9YCA6IGBIVFRQIEVycm9yICR7c3RhdHVzfTogJHt0ZXh0fWAsXG4pO1xuZXhwb3J0IGNvbnN0IFVua25vd25CbG9ja0Vycm9yID0gbWFrZUVycm9yV2l0aENvZGUoJ1VOS05PV05fQkxPQ0snLCAoKSA9PiAnVW5rbm93biBibG9jaycpO1xuZXhwb3J0IGNvbnN0IE5vdGhpbmdUb1NlbmRFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKCdOT1RISU5HX1RPX1NFTkQnLCAoKSA9PiAnTm90aGluZyB0byBzZW5kLicpO1xuZXhwb3J0IGNvbnN0IE5vdGhpbmdUb1JlZnVuZEVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoJ05PVEhJTkdfVE9fUkVGVU5EJywgKCkgPT4gJ05vdGhpbmcgdG8gcmVmdW5kLicpO1xuZXhwb3J0IGNvbnN0IE5vdGhpbmdUb0NsYWltRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ05FT19OT1RISU5HX1RPX0NMQUlNJyxcbiAgKGlkOiBVc2VyQWNjb3VudElEKSA9PiBgQWRkcmVzcyAke2lkLmFkZHJlc3N9IG9uIG5ldHdvcmsgJHtpZC5uZXR3b3JrfSBoYXMgbm90aGluZyB0byBjbGFpbS5gLFxuKTtcbmV4cG9ydCBjb25zdCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKCdJTlZBTElEX1RSQU5TQUNUSU9OJywgKG1lc3NhZ2U6IHN0cmluZykgPT4gbWVzc2FnZSk7XG5leHBvcnQgY29uc3QgSW52b2tlRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnSU5WT0tFJywgKG1lc3NhZ2U6IHN0cmluZykgPT4gbWVzc2FnZSk7XG5leHBvcnQgY29uc3QgSW5zdWZmaWNpZW50RnVuZHNFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnSU5TVUZGSUNJRU5UX0ZVTkRTJyxcbiAgKHRvdGFsOiBCaWdOdW1iZXIsIGV4cGVjdGVkOiBCaWdOdW1iZXIpID0+IGBGb3VuZCAke3RvdGFsLnRvU3RyaW5nKCl9IGZ1bmRzLCByZXF1aXJlZDogJHtleHBlY3RlZC50b1N0cmluZygpfS5gLFxuKTtcbmV4cG9ydCBjb25zdCBJbnN1ZmZpY2llbnRTeXN0ZW1GZWVFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnSU5TVUZGSUNJRU5UX1NZU1RFTV9GRUUnLFxuICAodG90YWw6IEJpZ051bWJlciwgZXhwZWN0ZWQ6IEJpZ051bWJlcikgPT5cbiAgICBgRm91bmQgJHt0b3RhbC50b1N0cmluZygpfSBhbGxvd2VkIHN5c3RlbSBmZWUsIHJlcXVpcmVkOiAke2V4cGVjdGVkLnRvU3RyaW5nKCl9LmAsXG4pO1xuZXhwb3J0IGNvbnN0IEZ1bmRzSW5Vc2VFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnRlVORFNfSU5fVVNFJyxcbiAgKHRvdGFsOiBCaWdOdW1iZXIsIGV4cGVjdGVkOiBCaWdOdW1iZXIsIG51bUlucHV0czogbnVtYmVyKSA9PlxuICAgIGBGb3VuZCAke3RvdGFsLnRvU3RyaW5nKCl9IGZ1bmRzLCByZXF1aXJlZDogJHtleHBlY3RlZC50b1N0cmluZygpfTsgWW91IGhhdmUgJHtudW1JbnB1dHN9IGlucHV0KHMpIG9uIHRoZSBjdXJyZW50IGJsb2NrLCB0cnkgdHJhbnNmZXIgYWdhaW4gb24gdGhlIG5leHRgLFxuKTtcbmV4cG9ydCBjb25zdCBNaXNzaW5nVHJhbnNhY3Rpb25EYXRhRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ01JU1NJTkdfVFJBTlNBQ1RJT05fREFUQScsXG4gIChoYXNoOiBzdHJpbmcpID0+IGBNaXNzaW5nIHRyYW5zYWN0aW9uIGRhdGEgZm9yIHRyYW5zYWN0aW9uICR7aGFzaH1gLFxuKTtcbmV4cG9ydCBjb25zdCBSZWxheVRyYW5zYWN0aW9uRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZSgnUkVMQVlfVFJBTlNBQ1RJT04nLCAobWVzc2FnZTogc3RyaW5nKSA9PiBtZXNzYWdlKTtcbmV4cG9ydCBjb25zdCBMb2NrZWRBY2NvdW50RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0xPQ0tFRF9BQ0NPVU5UJyxcbiAgKGFkZHJlc3M6IHN0cmluZykgPT4gYEFjY291bnQgJHthZGRyZXNzfSBpcyBsb2NrZWRgLFxuKTtcbmV4cG9ydCBjb25zdCBQYXNzd29yZFJlcXVpcmVkRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ1BBU1NXT1JEX1JFUVVJUkVEJyxcbiAgKCkgPT4gJ0EgcGFzc3dvcmQgaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBhY2NvdW50cyBvbiB0aGUgTWFpbk5ldC4nLFxuKTtcbmV4cG9ydCBjb25zdCBOb3RoaW5nVG9UcmFuc2ZlckVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoJ05PVEhJTkdfVE9fVFJBTlNGRVInLCAoKSA9PiAnTm90aGluZyB0byB0cmFuc2Zlci4nKTtcbmV4cG9ydCBjb25zdCBMZWRnZXJOb3RTdXBwb3J0ZWRFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnTEVER0VSX05PVF9TVVBQT1JURUQnLFxuICAoKSA9PiAnTGVkZ2VyIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBtYWNoaW5lLicsXG4pO1xuZXhwb3J0IGNvbnN0IExlZGdlck5vdERldGVjdGVkRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0xFREdFUl9OT1RfREVURUNURUQnLFxuICAoKSA9PiAnTGVkZ2VyIG5vdCBkZXRlY3RlZCBieSB5b3VyIG1hY2hpbmUuJyxcbik7XG5leHBvcnQgY29uc3QgTGVkZ2VyU3RhdHVzQ29kZUVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdCQURfTEVER0VSX1NUQVRVU19DT0RFJyxcbiAgKGNvZGU6IHN0cmluZykgPT4gYFJlY2VpdmVkIHVua25vd24gc3RhdHVzIGNvZGUgJHtjb2RlfSBmcm9tIGxlZGdlci5gLFxuKTtcbmV4cG9ydCBjb25zdCBMZWRnZXJNZXNzYWdlU2l6ZUVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdMRURHRVJfTUVTU0FHRV9PVkVSU0laRUQnLFxuICAoKSA9PiAnTGVkZ2VyIHNpZ25pbmcgZmFpbGVkLCBtZXNzYWdlIHRvbyBsYXJnZS4gW0NPREU6IDZkMDhdJyxcbik7XG5leHBvcnQgY29uc3QgTGVkZ2VyTkVPQXBwRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0xFREdFUl9ORU9fQVBQX0VSUk9SJyxcbiAgKCkgPT4gJ0xlZGdlciBORU8gQXBwIGVycm9yLCBjaGVjayBsZWRnZXIuIFtDT0RFOiA2ZTAwXScsXG4pO1xuZXhwb3J0IGNvbnN0IExlZGdlclRyYW5zYWN0aW9uRGVuaWVkID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdMRURHRVJfVFJBTlNBQ1RJT05fREVOSUVEJyxcbiAgKCkgPT4gJ0xlZGdlciB0cmFuc2FjdGlvbiBkZW5pZWQuIFtDT0RFOiA2OTg1XScsXG4pO1xuZXhwb3J0IGNvbnN0IExlZGdlclBhcnNlRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0xFREdFUl9QQVJTRV9FUlJPUicsXG4gICgpID0+ICdMZWRnZXIgdHJhbnNhY3Rpb24gcGFyc2luZyBlcnJvci4gW0NPREU6IDZkMDddJyxcbik7XG5leHBvcnQgY29uc3QgRGVsZXRlVXNlckFjY291bnRVbnN1cHBvcnRlZEVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdERUxFVEVfVVNFUl9BQ0NPVU5UX1VOU1VQUE9SVEVEJyxcbiAgKGlkOiBVc2VyQWNjb3VudElEKSA9PlxuICAgIGBEZWxldGluZyB0aGUgdXNlciBhY2NvdW50IHdpdGggbmV0d29yayAke2lkLm5ldHdvcmt9IGFuZCBhZGRyZXNzICR7aWQuYWRkcmVzc30gaXMgbm90IHN1cHBvcnRlZGAsXG4pO1xuZXhwb3J0IGNvbnN0IFVwZGF0ZVVzZXJBY2NvdW50VW5zdXBwb3J0ZWRFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnVVBEQVRFX1VTRVJfQUNDT1VOVF9OQU1FX1VOU1VQUE9SVEVEJyxcbiAgKGlkOiBVc2VyQWNjb3VudElEKSA9PlxuICAgIGBVcGRhdGluZyB0aGUgbmFtZSBvZiB1c2VyIGFjY291bnQgd2l0aCBuZXR3b3JrICR7aWQubmV0d29ya30gYW5kIGFkZHJlc3MgJHtpZC5hZGRyZXNzfSBpcyBub3Qgc3VwcG9ydGVkYCxcbik7XG5leHBvcnQgY29uc3QgVHJhbnNmZXJBcmd1bWVudEV4cGVjdGVkRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ1RSQU5TRkVSX0FSR1VNRU5UX0VYUEVDVEVEJyxcbiAgKCkgPT4gJ0V4cGVjdGVkIHRvIGZpbmQgYSB0cmFuc2ZlciBhcmd1bWVudCcsXG4pO1xuZXhwb3J0IGNvbnN0IEhhc2hBcmd1bWVudEV4cGVjdGVkRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0hBU0hfQVJHVU1FTlRfRVhQRUNURUQnLFxuICAoKSA9PiAnRXhwZWN0ZWQgdG8gZmluZCBhIGhhc2ggYXJndW1lbnQnLFxuKTtcbmV4cG9ydCBjb25zdCBORU9PTkVPbmVEYXRhUHJvdmlkZXJTZXRSUENVUkxFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnSU5WQUxJRF9TRVRfUlBDX1VSTF9DQUxMJyxcbiAgKCkgPT4gJ0Nhbm5vdCBzZXQgcnBjVVJMIGZvciBORU9PTkVPbmVEYXRhUHJvdmlkZXInLFxuKTtcbmV4cG9ydCBjb25zdCBJbnZhbGlkSERBY2NvdW50UGVybWlzc2lvbkVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdJTlZBTElEX0hEX0FDQ09VTlRfUEVSTUlTU0lPTicsXG4gIChhY2NvdW50OiByZWFkb25seSBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pID0+IGBJbnZhbGlkIHBlcm1pc3Npb24gZm9yIGFjY291bnQgYXQgcGF0aDogJHthY2NvdW50fWAsXG4pO1xuZXhwb3J0IGNvbnN0IFVuZGlzY292ZXJhYmxlV2FsbGV0RXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ1VORElTQ09WRVJBQkxFX1dBTExFVCcsXG4gIChpbmRleDogbnVtYmVyKSA9PiBgSW52YWxpZCBhY2Nlc3MgdG8gZGlzY292ZXIgd2FsbGV0IGF0IGluZGV4OiAke2luZGV4fWAsXG4pO1xuZXhwb3J0IGNvbnN0IFVuZGlzY292ZXJhYmxlQ2hhaW5FcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnVU5ESVNDT1ZFUkFCTEVfQ0hBSU4nLFxuICAocGF0aDogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSkgPT4gYEludmFsaWQgYWNjZXNzIHRvIGRpc2NvdmVyIGNoYWluIGF0IGluZGV4OiAke3BhdGh9YCxcbik7XG5leHBvcnQgY29uc3QgSERNYXN0ZXJEdXBsaWNhdGVFcnJvciA9IG1ha2VFcnJvcldpdGhDb2RlKFxuICAnSERfTUFTVEVSX0RVUExJQ0FURV9FUlJPUicsXG4gICgpID0+ICdTdG9yYWdlIHJldHVybmVkIG11bHRpcGxlIG1hc3RlciBrZXlzJyxcbik7XG5leHBvcnQgY29uc3QgSW52YWxpZEhEU3RvcmVkUGF0aEVycm9yID0gbWFrZUVycm9yV2l0aENvZGUoXG4gICdJTlZBTElEX0hEX1NUT1JFRF9QQVRIJyxcbiAgKHBhdGg6IHN0cmluZykgPT4gYFN0b3JhZ2UgcmV0dXJuZWQgYW4gaW52YWxpZCBrZXktcGF0aDogJHtwYXRofWAsXG4pO1xuZXhwb3J0IGNvbnN0IEludmFsaWRNYXN0ZXJQYXRoRXJyb3IgPSBtYWtlRXJyb3JXaXRoQ29kZShcbiAgJ0lOVkFMSURfSERfTUFTVEVSX1BBVEgnLFxuICAocGF0aDogcmVhZG9ubHkgbnVtYmVyW10pID0+IGBJbnZhbGlkIG1hc3RlclBhdGggcmV0dXJuZWQgYnkgSERTdG9yZTogJHtwYXRofWAsXG4pO1xuIl19