Socket
Socket
Sign inDemoInstall

deso-protocol

Package Overview
Dependencies
52
Maintainers
3
Versions
213
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.0-beta.2 to 2.0.0-beta.3

src/identity/identity-instance.d.ts

2

package.json
{
"name": "deso-protocol",
"version": "2.0.0-beta.2",
"version": "2.0.0-beta.3",
"license": "MIT",

@@ -5,0 +5,0 @@ "description": "Client side typescript/javascript SDK for building web3 applications for the DeSo blockchain.",

@@ -150,3 +150,3 @@ # deso-protocol

// popup blockers.
const hasPermission = identity.hasPermissionsSync({
const hasPermission = identity.hasPermissions({
TransactionCountLimitMap: {

@@ -157,3 +157,3 @@ SUBMIT_POST: 1,

// The same as `hasPermissionsSync` but async because the storage provider might be AsyncStorage
// The same as `hasPermissions` but async because the storage provider might be AsyncStorage
// This would typically be used in a native mobile (react native) context.

@@ -160,0 +160,0 @@ const hasPermission = await identity.hasPermissionsAsync({

import { type AccessGroupEntryResponse, type DecryptedMessageEntryResponse, type NewMessageEntryResponse, type SubmitTransactionResponse, type TransactionSpendingLimitResponse } from '../backend-types';
import { type APIProvider, type AccessGroupPrivateInfo, type IdentityConfiguration, type IdentityDerivePayload, type LoginOptions, type StoredUser, type SubscriberNotification, type TransactionSpendingLimitResponseOptions } from './types';
export declare class Identity {
import { IdentityState, StorageProvider, type APIProvider, type AccessGroupPrivateInfo, type IdentityConfiguration, type IdentityDerivePayload, type LoginOptions, type SubscriberNotification, type TransactionSpendingLimitResponseOptions } from './types';
export declare class Identity<T extends StorageProvider> {
#private;

@@ -88,17 +88,4 @@ /**

*/
snapshot(): Promise<{
currentUser: StoredUser | null;
alternateUsers: Record<string, StoredUser> | null;
}>;
snapshot(): T extends Storage ? IdentityState : Promise<IdentityState>;
/**
* Same as snapshot except it runs synchronously. This exists primarily for
* backwards compatibility should only be used in a browser context where
* localStorage is available.
* @deprecated use `snapshot` instead.
*/
snapshotSync(): {
currentUser: StoredUser | null;
alternateUsers: Record<string, StoredUser> | null;
};
/**
* Starts a login flow. This will open a new window and prompt the user to

@@ -331,24 +318,4 @@ * select an existing account or create a new account. If there is an error

*/
hasPermissionsSync(permissionsToCheck: Partial<TransactionSpendingLimitResponseOptions>): boolean;
hasPermissions(permissionsToCheck: Partial<TransactionSpendingLimitResponseOptions>): T extends Storage ? boolean : Promise<boolean>;
/**
* Use this if the storage provider is asynchronous (react native, etc). If a
* user's derived key has the permissions to perform a given action or batch
* of actions. The permissions are passed in as an object with the same shape
* as the `TransactionSpendingLimitResponseOptions` type, which is the same as
* the `spendingLimitOptions` passed to the configure method.
*
*
* @example
* Here we check if the user has the permissions to submit at least 1 post.
*
* ```typescript
* const hasPermissions = await identity.hasPermissions({
* TransactionCountLimitMap: {
* SUBMIT_POST: 1,
* },
* });
* ```
*/
hasPermissionsAsync(permissionsToCheck: Partial<TransactionSpendingLimitResponseOptions>): Promise<boolean>;
/**
* This method will request permissions from the user to perform an action or

@@ -406,2 +373,1 @@ * batch of actions. It will open an identity window and prompt the user to

}
export declare const identity: Identity;
export * from './crypto-utils';
export * from './error-types';
export { identity } from './identity';
export * from './identity-instance';
export * from './transaction-transcoders';

@@ -5,0 +5,0 @@ export * from './transcoder-utils';

export * from './crypto-utils';
export * from './error-types';
export { identity } from './identity';
export * from './identity-instance';
export * from './transaction-transcoders';

@@ -8,2 +8,2 @@ export * from './transcoder-utils';

export * from './types';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItdHlwZXMnO1xuZXhwb3J0IHsgaWRlbnRpdHkgfSBmcm9tICcuL2lkZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24tdHJhbnNjb2RlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2NvZGVyLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNjb2RlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3ItdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZGVudGl0eS1pbnN0YW5jZSc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uLXRyYW5zY29kZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNjb2Rlci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zY29kZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19

@@ -5,2 +5,1 @@ import { TransactionSpendingLimitResponse } from '../backend-types';

export declare function buildTransactionSpendingLimitResponse(spendingLimitOptions: Partial<TransactionSpendingLimitResponseOptions>): TransactionSpendingLimitResponse;
export declare function guardTxPermission(spendingLimitOptions: TransactionSpendingLimitResponseOptions): Promise<unknown>;

@@ -1,11 +0,1 @@

var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { identity } from '../identity';
export function compareTransactionSpendingLimits(expectedPermissions, actualPermissions) {

@@ -135,22 +125,2 @@ let hasAllPermissions = true;

}
export function guardTxPermission(spendingLimitOptions) {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function* () {
let hasPermissions = false;
try {
hasPermissions = identity.hasPermissionsSync(spendingLimitOptions);
}
catch (e) {
if ((_a = e === null || e === void 0 ? void 0 : e.message) === null || _a === void 0 ? void 0 : _a.includes('You must be in a browser context to use hasPermissionsSync')) {
// Try falling back to hasPermissionsAsync
hasPermissions = yield identity.hasPermissionsAsync(spendingLimitOptions);
}
}
if (!hasPermissions) {
return identity.requestPermissions(Object.assign(Object.assign({}, spendingLimitOptions), { GlobalDESOLimit: ((_b = identity.transactionSpendingLimitOptions.GlobalDESOLimit) !== null && _b !== void 0 ? _b : 0) +
((_c = spendingLimitOptions.GlobalDESOLimit) !== null && _c !== void 0 ? _c : 0) }));
}
return Promise.resolve();
});
}
function walkObj(node, callback, path = []) {

@@ -201,2 +171,2 @@ if (typeof node === 'object' && node !== null) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2QyxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLG1CQUE0RCxFQUM1RCxpQkFBbUQ7SUFFbkQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFFN0Isb0VBQW9FO0lBQ3BFLElBQUksaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsV0FBVyxFQUFFO1FBQ2xDLE9BQU8saUJBQWlCLENBQUM7S0FDMUI7SUFFRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUU7O1FBQ2pELDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLHdFQUF3RTtRQUN4RSxRQUFRLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQixLQUFLLHFCQUFxQjtnQkFDeEIsSUFDRSxNQUFBLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLG1CQUFtQiwwQ0FBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTs7b0JBQ25ELE9BQU8sQ0FDTCxHQUFHLENBQUMsU0FBUyxLQUFLLEtBQUs7d0JBQ3ZCLEdBQUcsQ0FBQyxrQkFBa0IsS0FBSyxFQUFFO3dCQUM3QixHQUFHLENBQUMsYUFBYSxLQUFLLEtBQUs7d0JBQzNCLEdBQUcsQ0FBQyxPQUFPOzRCQUNULGNBQWMsQ0FDWixNQUFBLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsbUJBQW1CLDBDQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMs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QUMsR0FBRyxFQUFFLENBQUM7S0FDbkI7SUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDdEI7U0FBTTtRQUNMLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUE0QjtJQUNsRCx3RUFBd0U7SUFDeEUsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UseURBQXlEO0lBQ3pELE9BQU8sS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgfSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzJztcbmltcG9ydCB7IGlkZW50aXR5IH0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0cyhcbiAgZXhwZWN0ZWRQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zLFxuICBhY3R1YWxQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2Vcbik6IGJvb2xlYW4ge1xuICBsZXQgaGFzQWxsUGVybWlzc2lvbnMgPSB0cnVlO1xuXG4gIC8vIGlmIHRoZSBrZXkgaXMgdW5saW1pdGVkIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlXG4gIGlmIChhY3R1YWxQZXJtaXNzaW9ucz8uSXNVbmxpbWl0ZWQpIHtcbiAgICByZXR1cm4gaGFzQWxsUGVybWlzc2lvbnM7XG4gIH1cblxuICB3YWxrT2JqKGV4cGVjdGVkUGVybWlzc2lvbnMsIChleHBlY3RlZFZhbCwgcGF0aCkgPT4ge1xuICAgIC8vIElmIHRoZSBhY3R1YWwgcGVybWlzc2lvbnMgYXJlIGNvbmZpZ3VyZWQgd2l0aCBhbnkgb2YgdGhlIHNwZWNpYWwgXCJhbGxvd1xuICAgIC8vIGFueXRoaW5nXCIgbWFwcGluZ3MgdGhlbiB3ZSByZXdyaXRlIHRoZSBsb29rdXAgcGF0aCBmb3IgYW55IGV4cGxpY2l0XG4gICAgLy8gbWFwcGluZyB0byBtYXRjaCBvbiB0aGUgXCJhbGxvdyBhbnlcIiBtYXBwaW5nLiBJbiBzb21lIGNhc2VzLCBzaW1wbHlcbiAgICAvLyBjb21wYXJlIHRoZSBPcENvdW50cyBhbmQgcmV0dXJuIGVhcmx5IGlmIHRoZWlyIGNhbiBiZSBvbmx5IDEgbWFwcGluZy5cbiAgICBzd2l0Y2ggKHBhdGg/LlswXSkge1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/LltcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhdGhbMV0pXG4gICAgICAgICAgICAgICAgICBdPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBc3NvY2lhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5Bc3NvY2lhdGlvbkNsYXNzID09PVxuICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICA/LkFzc29jaWF0aW9uQ2xhc3MgJiZcbiAgICAgICAgICAgICAgbWFwLkFwcFNjb3BlVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uVHlwZSA9PT0gJycgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uT3BlcmF0aW9uID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5DcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwPy5bJyddKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/LkNyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXBbJyddPy5hbnkgPT09XG4gICAgICAgICAgICAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IFsnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnYW55J11cbiAgICAgICAgICAgICAgOiBbJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgcGF0aFtwYXRoLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05GVE9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5ORlRPcGVyYXRpb25MaW1pdE1hcD8uWycnXT8uWzBdKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/Lk5GVE9wZXJhdGlvbkxpbWl0TWFwPy5bJyddPy5bMF0/LmFueSA9PT1cbiAgICAgICAgICAgICdudW1iZXInXG4gICAgICAgICAgICAgID8gWydORlRPcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnMCcsICdhbnknXVxuICAgICAgICAgICAgICA6IFsnTkZUT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgJzAnLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFZhbCA9IGdldERlZXBWYWx1ZShhY3R1YWxQZXJtaXNzaW9ucywgcGF0aCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWN0dWFsVmFsID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgKHR5cGVvZiBhY3R1YWxWYWwgPT09ICdudW1iZXInICYmXG4gICAgICAgIGFjdHVhbFZhbCA8IG5vcm1hbGl6ZUNvdW50KGV4cGVjdGVkVmFsKSkgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnc3RyaW5nJyAmJiBhY3R1YWxWYWwgIT09IGV4cGVjdGVkVmFsKVxuICAgICkge1xuICAgICAgaGFzQWxsUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UoXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBQYXJ0aWFsPFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucz5cbik6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIHtcbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIElzVW5saW1pdGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3BlbmRpbmdMaW1pdE9wdGlvbnMuR2xvYmFsREVTT0xpbWl0Py50b1N0cmluZygpID09PSAnVU5MSU1JVEVEJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdHbG9iYWxERVNPTGltaXQgY2Fubm90IGJlIHVubGltaXRlZC4gWW91IG11c3Qgc3BlY2lmeSBhIHNwZWNpZmljIGxpbWl0LCBvciBzZXQgdGhlIElzVW5saW1pdGVkIGZsYWcgdG8gdHJ1ZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgPSB7fTtcblxuICB3YWxrT2JqKFxuICAgIHNwZW5kaW5nTGltaXRPcHRpb25zLFxuICAgICh2YWwsIHBhdGgpID0+IHtcbiAgICAgIHNldERlZXBWYWx1ZShyZXN1bHQsIHBhdGgsIHZhbCA9PT0gJ1VOTElNSVRFRCcgPyAxZTkgOiB2YWwpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApO1xuICB9XG4gIGlmIChyZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCkge1xuICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwXG4gICAgKTtcbiAgfVxuICBpZiAocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApIHtcbiAgICByZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApO1xuICAgIC8vIFZhbGlkYXRlIGVhY2ggYXNzb2NpYXRpb24gbGltaXQgb2JqZWN0XG4gICAgcmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXAuZm9yRWFjaCgoYXNzb2NpYXRpb25MaW1pdEl0ZW0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgJiZcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwU2NvcGVUeXBlID09PSAnQW55J1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgbXVzdCBiZSBzZXQgdG8gdW5kZWZpbmVkIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBBcHBTY29wZVR5cGUgaXMgQW55LiBZb3UgcHJvdmlkZWQgJHthc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVja31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICEvXig/OkJDMXx0QkMpLisvLnRlc3QoYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2spICYmXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFNjb3BlVHlwZSA9PT0gJ1Njb3BlZCdcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcFB1YmxpY0tleUJhc2U1OENoZWNrIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgcHVibGljIGtleSBpZiBBcHBTY29wZVR5cGUgaXMgU2NvcGVkLiBZb3UgcHJvdmlkZWQ6ICR7YXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2t9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA9IHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPz8ge307XG5cbiAgaWYgKFxuICAgIHR5cGVvZiByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXSA9PT1cbiAgICAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID0ge1xuICAgICAgLi4ucmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCxcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddIDwgMCkge1xuICAgIGRlbGV0ZSByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBndWFyZFR4UGVybWlzc2lvbihcbiAgc3BlbmRpbmdMaW1pdE9wdGlvbnM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9uc1xuKSB7XG4gIGxldCBoYXNQZXJtaXNzaW9ucyA9IGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgaGFzUGVybWlzc2lvbnMgPSBpZGVudGl0eS5oYXNQZXJtaXNzaW9uc1N5bmMoc3BlbmRpbmdMaW1pdE9wdGlvbnMpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICBlPy5tZXNzYWdlPy5pbmNsdWRlcyhcbiAgICAgICAgJ1lvdSBtdXN0IGJlIGluIGEgYnJvd3NlciBjb250ZXh0IHRvIHVzZSBoYXNQZXJtaXNzaW9uc1N5bmMnXG4gICAgICApXG4gICAgKSB7XG4gICAgICAvLyBUcnkgZmFsbGluZyBiYWNrIHRvIGhhc1Blcm1pc3Npb25zQXN5bmNcbiAgICAgIGhhc1Blcm1pc3Npb25zID0gYXdhaXQgaWRlbnRpdHkuaGFzUGVybWlzc2lvbnNBc3luYyhzcGVuZGluZ0xpbWl0T3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFoYXNQZXJtaXNzaW9ucykge1xuICAgIHJldHVybiBpZGVudGl0eS5yZXF1ZXN0UGVybWlzc2lvbnMoe1xuICAgICAgLi4uc3BlbmRpbmdMaW1pdE9wdGlvbnMsXG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIChpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLkdsb2JhbERFU09MaW1pdCA/PyAwKSArXG4gICAgICAgIChzcGVuZGluZ0xpbWl0T3B0aW9ucy5HbG9iYWxERVNPTGltaXQgPz8gMCksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbmZ1bmN0aW9uIHdhbGtPYmooXG4gIG5vZGU6IGFueSxcbiAgY2FsbGJhY2s6ICh2YWw6IGFueSwgcGF0aDogc3RyaW5nW10pID0+IHZvaWQsXG4gIHBhdGg6IHN0cmluZ1tdID0gW11cbikge1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobm9kZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrT2JqKG5vZGVba2V5c1tpXV0sIGNhbGxiYWNrLCBwYXRoLmNvbmNhdChrZXlzW2ldKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG5vZGUsIHBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZXBWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBjdXJyS2V5ID0gcGF0aFswXTtcblxuICBpZiAoXG4gICAgb2JqID09PSBudWxsIHx8XG4gICAgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2Ygb2JqW2N1cnJLZXldID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gb2JqW2N1cnJLZXldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXREZWVwVmFsdWUob2JqW2N1cnJLZXldLCBwYXRoLnNsaWNlKDEpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXREZWVwVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KSB7XG4gIGNvbnN0IGN1cnJLZXkgPSBwYXRoWzBdO1xuICBpZiAodHlwZW9mIG9ialtjdXJyS2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvYmpbY3VycktleV0gPSB7fTtcbiAgfVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgIG9ialtjdXJyS2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHNldERlZXBWYWx1ZShvYmpbY3VycktleV0sIHBhdGguc2xpY2UoMSksIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVDb3VudChjb3VudD86IG51bWJlciB8ICdVTkxJTUlURUQnKSB7XG4gIC8vIE5PVEU6IElmIGNoZWNraW5nIGZvciB1bmxpbWl0ZWQsIHdlIGp1c3QgY2hlY2sgaWYgaXQncyBncmVhdGVyIHRoYW4gMVxuICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGtub3cgaWYgdGhlIG9yaWdpbmFsIHZhbHVlIHdhcyAnVU5MSU1JVEVEJ1xuICAvLyBvciBzb21lIG90aGVyIG51bWVyaWMuICBBcyBsb25nIGFzIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMSwgd2UganVzdCBsZXRcbiAgLy8gaXQgcGFzcyBhcyAnVU5MSU1JVEVELicgSW4gdGhlIGVuZCB0aGlzIHNob3VsZG4ndCBtYXR0ZXIgc2luY2Ugd2UgZmFpbCB0aGVcbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdHJhbnNhY3Rpb25zIGxlZnQgdG8gc3BlbmQuXG4gIHJldHVybiBjb3VudCA9PT0gJ1VOTElNSVRFRCcgfHwgY291bnQgPT09IDFlOSA/IDEgOiBjb3VudCA/PyAwO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvcGVybWlzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxtQkFBNEQsRUFDNUQsaUJBQW1EO0lBRW5ELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBRTdCLG9FQUFvRTtJQUNwRSxJQUFJLGlCQUFpQixhQUFqQixpQkFBaUIsdUJBQWpCLGlCQUFpQixDQUFFLFdBQVcsRUFBRTtRQUNsQyxPQUFPLGlCQUFpQixDQUFDO0tBQzFCO0lBRUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxFQUFFOztRQUNqRCwwRUFBMEU7UUFDMUUsc0VBQXNFO1FBQ3RFLHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUsUUFBUSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDakIsS0FBSyxxQkFBcUI7Z0JBQ3hCLElBQ0UsTUFBQSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxtQkFBbUIsMENBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7O29CQUNuRCxPQUFPLENBQ0wsR0FBRyxDQUFDLFNBQVMsS0FBSyxLQUFLO3dCQUN2QixHQUFHLENBQUMsa0JBQWtCLEtBQUssRUFBRTt3QkFDN0IsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLO3dCQUMzQixHQUFHLENBQUMsT0FBTzs0QkFDVCxjQUFjLENBQ1osTUFBQSxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLG1CQUFtQiwwQ0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMENBQ3ZELE9BQU8sQ0FDWixDQUNKLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLEVB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Q3JCO1NBQU07UUFDTCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVEsRUFBRSxJQUFjLEVBQUUsS0FBVTtJQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDdkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNuQjtJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztLQUN0QjtTQUFNO1FBQ0wsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ2xEO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQTRCO0lBQ2xELHdFQUF3RTtJQUN4RSw2RUFBNkU7SUFDN0UsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx5REFBeUQ7SUFDekQsT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZSB9IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0cyhcbiAgZXhwZWN0ZWRQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zLFxuICBhY3R1YWxQZXJtaXNzaW9uczogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2Vcbik6IGJvb2xlYW4ge1xuICBsZXQgaGFzQWxsUGVybWlzc2lvbnMgPSB0cnVlO1xuXG4gIC8vIGlmIHRoZSBrZXkgaXMgdW5saW1pdGVkIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlXG4gIGlmIChhY3R1YWxQZXJtaXNzaW9ucz8uSXNVbmxpbWl0ZWQpIHtcbiAgICByZXR1cm4gaGFzQWxsUGVybWlzc2lvbnM7XG4gIH1cblxuICB3YWxrT2JqKGV4cGVjdGVkUGVybWlzc2lvbnMsIChleHBlY3RlZFZhbCwgcGF0aCkgPT4ge1xuICAgIC8vIElmIHRoZSBhY3R1YWwgcGVybWlzc2lvbnMgYXJlIGNvbmZpZ3VyZWQgd2l0aCBhbnkgb2YgdGhlIHNwZWNpYWwgXCJhbGxvd1xuICAgIC8vIGFueXRoaW5nXCIgbWFwcGluZ3MgdGhlbiB3ZSByZXdyaXRlIHRoZSBsb29rdXAgcGF0aCBmb3IgYW55IGV4cGxpY2l0XG4gICAgLy8gbWFwcGluZyB0byBtYXRjaCBvbiB0aGUgXCJhbGxvdyBhbnlcIiBtYXBwaW5nLiBJbiBzb21lIGNhc2VzLCBzaW1wbHlcbiAgICAvLyBjb21wYXJlIHRoZSBPcENvdW50cyBhbmQgcmV0dXJuIGVhcmx5IGlmIHRoZWlyIGNhbiBiZSBvbmx5IDEgbWFwcGluZy5cbiAgICBzd2l0Y2ggKHBhdGg/LlswXSkge1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICAgID8uT3BDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhY3R1YWxQZXJtaXNzaW9ucz8uQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcD8uZmluZCgobWFwKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBtYXAuU2NvcGVUeXBlID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuQWNjZXNzR3JvdXBLZXlOYW1lID09PSAnJyAmJlxuICAgICAgICAgICAgICBtYXAuT3BlcmF0aW9uVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLk9wQ291bnQgPj1cbiAgICAgICAgICAgICAgICBub3JtYWxpemVDb3VudChcbiAgICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/LltcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyKHBhdGhbMV0pXG4gICAgICAgICAgICAgICAgICBdPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBc3NvY2lhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFjdHVhbFBlcm1pc3Npb25zPy5Bc3NvY2lhdGlvbkxpbWl0TWFwPy5maW5kKChtYXApID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIG1hcC5Bc3NvY2lhdGlvbkNsYXNzID09PVxuICAgICAgICAgICAgICAgIGV4cGVjdGVkUGVybWlzc2lvbnM/LkFzc29jaWF0aW9uTGltaXRNYXA/LltOdW1iZXIocGF0aFsxXSldXG4gICAgICAgICAgICAgICAgICA/LkFzc29jaWF0aW9uQ2xhc3MgJiZcbiAgICAgICAgICAgICAgbWFwLkFwcFNjb3BlVHlwZSA9PT0gJ0FueScgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uVHlwZSA9PT0gJycgJiZcbiAgICAgICAgICAgICAgbWFwLkFzc29jaWF0aW9uT3BlcmF0aW9uID09PSAnQW55JyAmJlxuICAgICAgICAgICAgICBtYXAuT3BDb3VudCA+PVxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZUNvdW50KFxuICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQZXJtaXNzaW9ucz8uQXNzb2NpYXRpb25MaW1pdE1hcD8uW051bWJlcihwYXRoWzFdKV1cbiAgICAgICAgICAgICAgICAgICAgPy5PcENvdW50XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdDcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5DcmVhdG9yQ29pbk9wZXJhdGlvbkxpbWl0TWFwPy5bJyddKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/LkNyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXBbJyddPy5hbnkgPT09XG4gICAgICAgICAgICAnbnVtYmVyJ1xuICAgICAgICAgICAgICA/IFsnQ3JlYXRvckNvaW5PcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnYW55J11cbiAgICAgICAgICAgICAgOiBbJ0NyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgcGF0aFtwYXRoLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ05GVE9wZXJhdGlvbkxpbWl0TWFwJzpcbiAgICAgICAgaWYgKGFjdHVhbFBlcm1pc3Npb25zPy5ORlRPcGVyYXRpb25MaW1pdE1hcD8uWycnXT8uWzBdKSB7XG4gICAgICAgICAgcGF0aCA9XG4gICAgICAgICAgICB0eXBlb2YgYWN0dWFsUGVybWlzc2lvbnM/Lk5GVE9wZXJhdGlvbkxpbWl0TWFwPy5bJyddPy5bMF0/LmFueSA9PT1cbiAgICAgICAgICAgICdudW1iZXInXG4gICAgICAgICAgICAgID8gWydORlRPcGVyYXRpb25MaW1pdE1hcCcsICcnLCAnMCcsICdhbnknXVxuICAgICAgICAgICAgICA6IFsnTkZUT3BlcmF0aW9uTGltaXRNYXAnLCAnJywgJzAnLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV1dO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFZhbCA9IGdldERlZXBWYWx1ZShhY3R1YWxQZXJtaXNzaW9ucywgcGF0aCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWN0dWFsVmFsID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgKHR5cGVvZiBhY3R1YWxWYWwgPT09ICdudW1iZXInICYmXG4gICAgICAgIGFjdHVhbFZhbCA8IG5vcm1hbGl6ZUNvdW50KGV4cGVjdGVkVmFsKSkgfHxcbiAgICAgICh0eXBlb2YgYWN0dWFsVmFsID09PSAnc3RyaW5nJyAmJiBhY3R1YWxWYWwgIT09IGV4cGVjdGVkVmFsKVxuICAgICkge1xuICAgICAgaGFzQWxsUGVybWlzc2lvbnMgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBoYXNBbGxQZXJtaXNzaW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UoXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zOiBQYXJ0aWFsPFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlT3B0aW9ucz5cbik6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlIHtcbiAgaWYgKHNwZW5kaW5nTGltaXRPcHRpb25zLklzVW5saW1pdGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIElzVW5saW1pdGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAoc3BlbmRpbmdMaW1pdE9wdGlvbnMuR2xvYmFsREVTT0xpbWl0Py50b1N0cmluZygpID09PSAnVU5MSU1JVEVEJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdHbG9iYWxERVNPTGltaXQgY2Fubm90IGJlIHVubGltaXRlZC4gWW91IG11c3Qgc3BlY2lmeSBhIHNwZWNpZmljIGxpbWl0LCBvciBzZXQgdGhlIElzVW5saW1pdGVkIGZsYWcgdG8gdHJ1ZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UgPSB7fTtcblxuICB3YWxrT2JqKFxuICAgIHNwZW5kaW5nTGltaXRPcHRpb25zLFxuICAgICh2YWwsIHBhdGgpID0+IHtcbiAgICAgIHNldERlZXBWYWx1ZShyZXN1bHQsIHBhdGgsIHZhbCA9PT0gJ1VOTElNSVRFRCcgPyAxZTkgOiB2YWwpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICBpZiAocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApIHtcbiAgICByZXN1bHQuQWNjZXNzR3JvdXBMaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFjY2Vzc0dyb3VwTGltaXRNYXApO1xuICB9XG4gIGlmIChyZXN1bHQuQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcCkge1xuICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHJlc3VsdC5BY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwXG4gICAgKTtcbiAgfVxuICBpZiAocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApIHtcbiAgICByZXN1bHQuQXNzb2NpYXRpb25MaW1pdE1hcCA9IE9iamVjdC52YWx1ZXMocmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXApO1xuICAgIC8vIFZhbGlkYXRlIGVhY2ggYXNzb2NpYXRpb24gbGltaXQgb2JqZWN0XG4gICAgcmVzdWx0LkFzc29jaWF0aW9uTGltaXRNYXAuZm9yRWFjaCgoYXNzb2NpYXRpb25MaW1pdEl0ZW0pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgJiZcbiAgICAgICAgYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwU2NvcGVUeXBlID09PSAnQW55J1xuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgbXVzdCBiZSBzZXQgdG8gdW5kZWZpbmVkIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBBcHBTY29wZVR5cGUgaXMgQW55LiBZb3UgcHJvdmlkZWQgJHthc3NvY2lhdGlvbkxpbWl0SXRlbS5BcHBQdWJsaWNLZXlCYXNlNThDaGVja31gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICEvXig/OkJDMXx0QkMpLisvLnRlc3QoYXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2spICYmXG4gICAgICAgIGFzc29jaWF0aW9uTGltaXRJdGVtLkFwcFNjb3BlVHlwZSA9PT0gJ1Njb3BlZCdcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFwcFB1YmxpY0tleUJhc2U1OENoZWNrIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgcHVibGljIGtleSBpZiBBcHBTY29wZVR5cGUgaXMgU2NvcGVkLiBZb3UgcHJvdmlkZWQ6ICR7YXNzb2NpYXRpb25MaW1pdEl0ZW0uQXBwUHVibGljS2V5QmFzZTU4Q2hlY2t9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCA9IHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXAgPz8ge307XG5cbiAgaWYgKFxuICAgIHR5cGVvZiByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXSA9PT1cbiAgICAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwID0ge1xuICAgICAgLi4ucmVzdWx0LlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcCxcbiAgICAgIEFVVEhPUklaRV9ERVJJVkVEX0tFWTogMSxcbiAgICB9O1xuICB9IGVsc2UgaWYgKHJlc3VsdC5UcmFuc2FjdGlvbkNvdW50TGltaXRNYXBbJ0FVVEhPUklaRV9ERVJJVkVEX0tFWSddIDwgMCkge1xuICAgIGRlbGV0ZSByZXN1bHQuVHJhbnNhY3Rpb25Db3VudExpbWl0TWFwWydBVVRIT1JJWkVfREVSSVZFRF9LRVknXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdhbGtPYmooXG4gIG5vZGU6IGFueSxcbiAgY2FsbGJhY2s6ICh2YWw6IGFueSwgcGF0aDogc3RyaW5nW10pID0+IHZvaWQsXG4gIHBhdGg6IHN0cmluZ1tdID0gW11cbikge1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobm9kZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3YWxrT2JqKG5vZGVba2V5c1tpXV0sIGNhbGxiYWNrLCBwYXRoLmNvbmNhdChrZXlzW2ldKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG5vZGUsIHBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZXBWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBjdXJyS2V5ID0gcGF0aFswXTtcblxuICBpZiAoXG4gICAgb2JqID09PSBudWxsIHx8XG4gICAgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHxcbiAgICB0eXBlb2Ygb2JqW2N1cnJLZXldID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gb2JqW2N1cnJLZXldO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXREZWVwVmFsdWUob2JqW2N1cnJLZXldLCBwYXRoLnNsaWNlKDEpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXREZWVwVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KSB7XG4gIGNvbnN0IGN1cnJLZXkgPSBwYXRoWzBdO1xuICBpZiAodHlwZW9mIG9ialtjdXJyS2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvYmpbY3VycktleV0gPSB7fTtcbiAgfVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgIG9ialtjdXJyS2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHNldERlZXBWYWx1ZShvYmpbY3VycktleV0sIHBhdGguc2xpY2UoMSksIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVDb3VudChjb3VudD86IG51bWJlciB8ICdVTkxJTUlURUQnKSB7XG4gIC8vIE5PVEU6IElmIGNoZWNraW5nIGZvciB1bmxpbWl0ZWQsIHdlIGp1c3QgY2hlY2sgaWYgaXQncyBncmVhdGVyIHRoYW4gMVxuICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGtub3cgaWYgdGhlIG9yaWdpbmFsIHZhbHVlIHdhcyAnVU5MSU1JVEVEJ1xuICAvLyBvciBzb21lIG90aGVyIG51bWVyaWMuICBBcyBsb25nIGFzIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMSwgd2UganVzdCBsZXRcbiAgLy8gaXQgcGFzcyBhcyAnVU5MSU1JVEVELicgSW4gdGhlIGVuZCB0aGlzIHNob3VsZG4ndCBtYXR0ZXIgc2luY2Ugd2UgZmFpbCB0aGVcbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdHJhbnNhY3Rpb25zIGxlZnQgdG8gc3BlbmQuXG4gIHJldHVybiBjb3VudCA9PT0gJ1VOTElNSVRFRCcgfHwgY291bnQgPT09IDFlOSA/IDEgOiBjb3VudCA/PyAwO1xufVxuIl19

@@ -111,3 +111,3 @@ import { AccessGroupLimitMapItem, AccessGroupMemberLimitMapItem, AssociationLimitMapItem, TransactionSpendingLimitResponse, TransactionType } from '../backend-types';

*/
storageProvider?: Storage | AsyncStorage;
storageProvider?: StorageProvider;
/**

@@ -307,1 +307,2 @@ * An optional function that is provided the identity url that needs to be

}
export type StorageProvider = Storage | AsyncStorage;

@@ -73,2 +73,2 @@ export var NOTIFICATION_EVENTS;

})(NOTIFICATION_EVENTS || (NOTIFICATION_EVENTS = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNFBBLE1BQU0sQ0FBTixJQUFZLG1CQW9GWDtBQXBGRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDhDQUF1QixDQUFBO0lBRXZCOzs7O09BSUc7SUFDSCxrRkFBMkQsQ0FBQTtJQUUzRDs7OztPQUlHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7O09BRUc7SUFDSCxnRkFBeUQsQ0FBQTtJQUV6RDs7T0FFRztJQUNILDhFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILDBFQUFtRCxDQUFBO0lBRW5EOztPQUVHO0lBQ0gsa0RBQTJCLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsOENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxvREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCxnREFBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILGtFQUEyQyxDQUFBO0lBRTNDOzs7T0FHRztJQUNILDhEQUF1QyxDQUFBO0lBRXZDOztPQUVHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7OztPQUdHO0lBQ0gsMEVBQW1ELENBQUE7SUFFbkQ7O09BRUc7SUFDSCxnRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBcEZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFvRjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sXG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXBJdGVtLFxuICBBc3NvY2lhdGlvbkxpbWl0TWFwSXRlbSxcbiAgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5leHBvcnQgdHlwZSBOZXR3b3JrID0gJ21haW5uZXQnIHwgJ3Rlc3RuZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5UmVzcG9uc2Uge1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6ICdkZXJpdmUnIHwgJ2xvZ2luJyB8ICdpbml0aWFsaXplJztcbiAgcGF5bG9hZD86IGFueTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVQYXlsb2FkIHtcbiAgZGVyaXZlZFNlZWRIZXg/OiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBldGhEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBleHBpcmF0aW9uQmxvY2s6IG51bWJlcjtcbiAgbmV0d29yazogTmV0d29yaztcbiAgYWNjZXNzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIGp3dDogc3RyaW5nO1xuICBkZXJpdmVkSnd0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZztcbiAgbWVzc2FnaW5nS2V5TmFtZTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0SGV4OiBzdHJpbmc7XG4gIHNpZ25lZFVwOiBib29sZWFuO1xuICBwdWJsaWNLZXlBZGRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMge1xuICBHbG9iYWxERVNPTGltaXQ/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcD86IFBhcnRpYWw8XG4gICAgUmVjb3JkPFRyYW5zYWN0aW9uVHlwZSwgbnVtYmVyIHwgJ1VOTElNSVRFRCc+XG4gID47XG4gIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBEQU9Db2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBORlRPcGVyYXRpb25MaW1pdE1hcD86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IG51bWJlcl06IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSB9O1xuICB9O1xuICBEQU9Db2luTGltaXRPcmRlckxpbWl0TWFwPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfTtcbiAgfTtcbiAgQXNzb2NpYXRpb25MaW1pdE1hcD86IChPbWl0PEFzc29jaWF0aW9uTGltaXRNYXBJdGVtLCAnT3BDb3VudCc+ICYge1xuICAgIE9wQ291bnQ6IG51bWJlciB8ICdVTkxJTUlURUQnO1xuICB9KVtdO1xuICBBY2Nlc3NHcm91cExpbWl0TWFwPzogKE9taXQ8QWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sICdPcENvdW50Jz4gJiB7XG4gICAgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIH0pW107XG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/OiAoT21pdDxcbiAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwSXRlbSxcbiAgICAnT3BDb3VudCdcbiAgPiAmIHsgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSlbXTtcbiAgSXNVbmxpbWl0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBqd3RBbGdvcml0aG0gPSAnRVMyNTZLJyB8ICdFUzI1Nic7XG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpdHkgZG9tYWluLiBEZWZhdWx0cyB0byBodHRwczovL2lkZW50aXR5LmRlc28ub3JnXG4gICAqL1xuICBpZGVudGl0eVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbmV0d29yay4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBtYWlubmV0LlxuICAgKi9cbiAgbmV0d29yaz86IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNvIG5vZGUgdXNlZCBmb3IgYW55IGFwaSBjYWxscyAoZ2V0IGJhbGFuY2UsIGRlcml2ZWQga2V5IGF1dGhvcml6YXRpb24sIGV0YylcbiAgICovXG4gIG5vZGVVUkk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlZGlyZWN0IFVSSS4gSWYgcHJvdmlkZWQsIHdlIGRvIGEgaGFyZCByZWRpcmVjdCB0byB0aGUgaWRlbnRpdHlcbiAgICogZG9tYWluIGFuZCBwYXNzIGRhdGEgdmlhIHF1ZXJ5IHBhcmFtcyBiYWNrIHRvIHRoZSBwcm92aWRlZCB1cmkuXG4gICAqL1xuICByZWRpcmVjdFVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgYW5kIHNwZW5kaW5nIGxpbWl0cyB0aGF0IHdpbGwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyXG4gICAqIGR1cmluZyBsb2dpbi4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBubyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zPzogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIHVzZWQgdG8gYXV0aG9yaXplIGRlcml2ZWQga2V5cy4gRGVmYXVsdHMgdG8gdW5rbm93bi5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbmNlIG91ciBrZXlzIGFyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNlY3AyNTZrMSBjdXJ2ZSwgdGhlIGNvcnJlY3RcbiAgICogSldUIGFsZ29yaXRobSBoZWFkZXIgKnNob3VsZCogYmUgRVMyNTZLLlxuICAgKiBTZWU6IGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4ODEyLmh0bWwjbmFtZS1qb3NlLWFsZ29yaXRobXMtcmVnaXN0cmF0aW9cbiAgICpcbiAgICogSE9XRVZFUiwgdGhlIGJhY2tlbmQgand0IGxpYiB1c2VkIGJ5IGRlc28gZm91bmRhdGlvbiAtXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmctand0L2p3dCAtIChhcyB3ZWxsIGFzIG1hbnkgb3RoZXIgand0IGxpYnJhcmllcylcbiAgICogZG8gbm90IHN1cHBvcnQgRVMyNTZLLiBTbyBpbnN0ZWFkLCB3ZSBkZWZhdWx0IHRvIHRoZSBtb3JlIHdpZGVseSBzdXBwb3J0ZWQgRVMyNTYgYWxnbyxcbiAgICogd2hpY2ggY2FuIHN0aWxsIHdvcmsgZm9yIHZlcmlmeWluZyBvdXIgc2lnbmF0dXJlcy4gQnV0IGlmIGEgY29uc3VtZXIgb2YgdGhpcyBsaWIgaXMgdXNpbmcgYVxuICAgKiBqd3QgbGliIHRoYXQgc3VwcG9ydHMgRVMyNTZLIHRoZXkgY2FuIHNwZWNpZnkgdGhhdCBoZXJlLlxuICAgKiBTZWUgdGhpcyBnaXRodWIgaXNzdWVcbiAgICogZm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL2F1dGgwL25vZGUtanNvbndlYnRva2VuL2lzc3Vlcy84NjJcbiAgICogSWYgRVMyNTZLIGlzIGV2ZXIgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIGp3dCBsaWIsIHdlIHNob3VsZCBjaGFuZ2UgdGhpcy5cbiAgICovXG4gIGp3dEFsZ29yaXRobT86IGp3dEFsZ29yaXRobTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgc3RvcmFnZSBwcm92aWRlci4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBsb2NhbFN0b3JhZ2VcbiAgICogaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgc3RvcmFnZVByb3ZpZGVyPzogU3RvcmFnZSB8IEFzeW5jU3RvcmFnZTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCBpcyBwcm92aWRlZCB0aGUgaWRlbnRpdHkgdXJsIHRoYXQgbmVlZHMgdG8gYmVcbiAgICogb3BlbmVkLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBob3cgdGhlIGlkZW50aXR5IHVybCBpcyBvcGVuZWQuIEZvclxuICAgKiBleGFtcGxlLCBpZiB5b3UgYXJlIHVzaW5nIHJlYWN0IG5hdGl2ZSwgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoZSBMaW5raW5nXG4gICAqIEFQSSB0byBvcGVuIHRoZSB1cmwgaW4gYSBzeXN0ZW0gYnJvd3NlciB3aW5kb3cuXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGlkZW50aXR5UHJlc2VudGVyOiBhc3luYyAodXJsKSA9PiB7XG4gICAqICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgV2ViQnJvd3Nlci5vcGVuQXV0aFNlc3Npb25Bc3luYyh1cmwpO1xuICAgKiAgIGlmIChyZXN1bHQudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAqICAgICBpZGVudGl0eS5oYW5kbGVSZWRpcmVjdFVSSShyZXN1bHQudXJsKTtcbiAgICogICB9XG4gICAqIH0sXG4gICAqIGBgYFxuICAgKi9cbiAgaWRlbnRpdHlQcmVzZW50ZXI/OiAodXJsOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVBJUHJvdmlkZXIge1xuICBwb3N0OiAodXJsOiBzdHJpbmcsIGRhdGE6IGFueSkgPT4gUHJvbWlzZTxhbnk+O1xuICBnZXQ6ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpbmRvd1Byb3ZpZGVyIHtcbiAgbG9jYXRpb246IHsgc2VhcmNoOiBzdHJpbmc7IHBhdGhuYW1lOiBzdHJpbmc7IGhyZWY6IHN0cmluZyB9O1xuICBoaXN0b3J5OiB7IHJlcGxhY2VTdGF0ZTogKHN0YXRlOiBhbnksIHRpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nKSA9PiB2b2lkIH07XG4gIGxvY2FsU3RvcmFnZToge1xuICAgIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgcmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PiB2b2lkO1xuICB9O1xuICBvcGVuOiAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zOiBzdHJpbmdcbiAgKSA9PiBXaW5kb3cgfCBudWxsO1xuICBhZGRFdmVudExpc3RlbmVyOiAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xuICByZW1vdmVFdmVudExpc3RlbmVyOiAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luT3B0aW9ucyB7XG4gIGdldEZyZWVEZXNvOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQcmltYXJ5RGVyaXZlZEtleUluZm8gPSBJZGVudGl0eURlcml2ZVBheWxvYWQgJiB7XG4gIHRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdHM6IFRyYW5zYWN0aW9uU3BlbmRpbmdMaW1pdFJlc3BvbnNlO1xuICBJc1ZhbGlkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFN0b3JlZFVzZXIgPSB7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwcmltYXJ5RGVyaXZlZEtleTogUHJpbWFyeURlcml2ZWRLZXlJbmZvO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eVVzZXIge1xuICBhY2Nlc3NMZXZlbDogbnVtYmVyO1xuICBhY2Nlc3NMZXZlbEhtYWM6IHN0cmluZztcbiAgYnRjRGVwb3NpdEFkZHJlc3M6IHN0cmluZztcbiAgZW5jcnlwdGVkU2VlZEhleDogc3RyaW5nO1xuICBldGhEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBkZXJpdmVkUHVibGljS2V5QmFzZTU4Q2hlY2s/OiBzdHJpbmc7XG4gIGhhc0V4dHJhVGV4dDogYm9vbGVhbjtcbiAgbmV0d29yazogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlMb2dpblBheWxvYWQge1xuICB1c2VyczogUmVjb3JkPHN0cmluZywgSWRlbnRpdHlVc2VyPjtcbiAgcHVibGljS2V5QWRkZWQ6IHN0cmluZztcbiAgcGhvbmVOdW1iZXJTdWNjZXNzOiBib29sZWFuO1xuICBzaWduZWRVcDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eVN0YXRlIHtcbiAgY3VycmVudFVzZXI6IFN0b3JlZFVzZXIgfCBudWxsO1xuICBhbHRlcm5hdGVVc2VyczogUmVjb3JkPHN0cmluZywgU3RvcmVkVXNlcj4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmVycmVkIHtcbiAgcmVzb2x2ZTogKGFyZ3M6IGFueSkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoYXJnczogYW55KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXIge1xuICBzZWVkSGV4OiBzdHJpbmc7XG4gIHByaXZhdGU6IFVpbnQ4QXJyYXk7XG4gIHB1YmxpYzogVWludDhBcnJheTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpYmVyTm90aWZpY2F0aW9uIHtcbiAgZXZlbnQ6IE5PVElGSUNBVElPTl9FVkVOVFM7XG4gIGN1cnJlbnRVc2VyOiBTdG9yZWRVc2VyIHwgbnVsbDtcbiAgYWx0ZXJuYXRlVXNlcnM6IFJlY29yZDxzdHJpbmcsIFN0b3JlZFVzZXI+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdGhlcnNjYW5UcmFuc2FjdGlvbnNCeUFkZHJlc3NSZXNwb25zZSB7XG4gIHN0YXR1czogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlc3VsdDogRXRoZXJzY2FuVHJhbnNhY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdGhlcnNjYW5UcmFuc2FjdGlvbiB7XG4gIGJsb2NrTnVtYmVyOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBoYXNoOiBzdHJpbmc7XG4gIG5vbmNlOiBzdHJpbmc7XG4gIGJsb2NrSGFzaDogc3RyaW5nO1xuICB0cmFuc2FjdGlvbkluZGV4OiBzdHJpbmc7XG4gIGZyb206IHN0cmluZztcbiAgdG86IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZ2FzOiBzdHJpbmc7XG4gIGdhc1ByaWNlOiBzdHJpbmc7XG4gIGlzRXJyb3I6IHN0cmluZztcbiAgdHhyZWNlaXB0X3N0YXR1czogc3RyaW5nO1xuICBpbnB1dDogc3RyaW5nO1xuICBjb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgY3VtdWxhdGl2ZUdhc1VzZWQ6IHN0cmluZztcbiAgZ2FzVXNlZDogc3RyaW5nO1xuICBjb25maXJtYXRpb25zOiBzdHJpbmc7XG4gIG1ldGhvZElkOiBzdHJpbmc7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0dyb3VwUHJpdmF0ZUluZm8ge1xuICBBY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIEFjY2Vzc0dyb3VwUHJpdmF0ZUtleUhleDogc3RyaW5nO1xuICBBY2Nlc3NHcm91cEtleU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gTk9USUZJQ0FUSU9OX0VWRU5UUyB7XG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGNvbnN1bWluZyBhcHAgaW5pdGlhbGx5IHN1YnNjcmliZXMgdG8gaWRlbnRpdHkuXG4gICAqL1xuICBTVUJTQ1JJQkUgPSAnU1VCU0NSSUJFJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBpbnRlcm1lZGlhdGUgZXZlbnQgZmlyZWQgQUZURVIgdGhlIHVzZXIgY29tcGxldGVzIGFuIGlkZW50aXR5IGZsb3dcbiAgICogdGhhdCByZXF1aXJlcyBhIGRlcml2ZWQga2V5IGF1dGhvcml6YXRpb24uIFRoaXMgZXZlbnQgaXMgZmlyZWQgQkVGT1JFIHRoZVxuICAgKiByZXF1ZXN0IHRvIGF1dGhvcml6ZSB0aGUgZGVyaXZlZCBrZXkgaXMgbWFkZS5cbiAgICovXG4gIEFVVEhPUklaRV9ERVJJVkVEX0tFWV9TVEFSVCA9ICdBVVRIT1JJWkVfREVSSVZFRF9LRVlfU1RBUlQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBldmVudCBmaXJlZCBBRlRFUiB0aGUgdXNlciBjb21wbGV0ZXMgYW4gaWRlbnRpdHlcbiAgICogZmxvdyB0aGF0IHJlcXVpcmVzIGEgZGVyaXZlZCBrZXkgYXV0aG9yaXphdGlvbi4gVGhpcyBldmVudCBpcyBmaXJlZCBBRlRFUlxuICAgKiB0aGUgcmVxdWVzdCB0byBhdXRob3JpemUgdGhlIGRlcml2ZWQga2V5IGlzIG1hZGUuXG4gICAqL1xuICBBVVRIT1JJWkVfREVSSVZFRF9LRVlfRU5EID0gJ0FVVEhPUklaRV9ERVJJVkVEX0tFWV9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGlmIHRoZSByZXF1ZXN0IHRvIGF1dGhvcml6ZSBhIGRlcml2ZWQga2V5IGZhaWxzLlxuICAgKi9cbiAgQVVUSE9SSVpFX0RFUklWRURfS0VZX0ZBSUwgPSAnQVVUSE9SSVpFX0RFUklWRURfS0VZX0ZBSUwnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIHBlcm1pc3Npb25zIGFwcHJvdmFsIHBvcHVwLlxuICAgKi9cbiAgUkVRVUVTVF9QRVJNSVNTSU9OU19TVEFSVCA9ICdSRVFVRVNUX1BFUk1JU1NJT05TX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyBhcHByb3ZpbmcgcGVybWlzc2lvbnMsIGFuZFxuICAgKiBjb21lcyBBRlRFUiB0aGUgaW50ZXJtZWRpYXRlIEFVVEhPUklaRV9ERVJJVkVEX0tFWSBldmVudHMuXG4gICAqL1xuICBSRVFVRVNUX1BFUk1JU1NJT05TX0VORCA9ICdSRVFVRVNUX1BFUk1JU1NJT05TX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbG9naW4gcG9wdXAuXG4gICAqL1xuICBMT0dJTl9TVEFSVCA9ICdMT0dJTl9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgbG9nZ2luZyBpbiwgYW5kXG4gICAqIGNvbWVzIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIExPR0lOX0VORCA9ICdMT0dJTl9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIGxvZ291dCBwb3B1cC5cbiAgICovXG4gIExPR09VVF9TVEFSVCA9ICdMT0dPVVRfU1RBUlQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgY29tcGxldGVzIGxvZ2dpbmcgb3V0LCBhbmRcbiAgICogY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgTE9HT1VUX0VORCA9ICdMT0dPVVRfRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBnZXQgZGVzbyBwb3B1cC5cbiAgICovXG4gIEdFVF9GUkVFX0RFU09fU1RBUlQgPSAnR0VUX0ZSRUVfREVTT19TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgdGhlIGdldCBkZXNvIGZsb3csIGFuZCBjb21lc1xuICAgKiBBRlRFUiB0aGUgaW50ZXJtZWRpYXRlIEFVVEhPUklaRV9ERVJJVkVEX0tFWSBldmVudHMuXG4gICAqL1xuICBHRVRfRlJFRV9ERVNPX0VORCA9ICdHRVRfRlJFRV9ERVNPX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgdmVyaWZ5IHBob25lIG51bWJlciBwb3B1cC5cbiAgICovXG4gIFZFUklGWV9QSE9ORV9OVU1CRVJfU1RBUlQgPSAnVkVSSUZZX1BIT05FX05VTUJFUl9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgdGhlIHZlcmlmeSBwaG9uZSBudW1iZXIgZmxvdyxcbiAgICogYW5kIGNvbWVzIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIFZFUklGWV9QSE9ORV9OVU1CRVJfRU5EID0gJ1ZFUklGWV9QSE9ORV9OVU1CRVJfRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSBjb25zdW1pbmcgYXBwIHN3aXRjaGVzIHRoZSBhY3RpdmUgdXNlci5cbiAgICovXG4gIENIQU5HRV9BQ1RJVkVfVVNFUiA9ICdDSEFOR0VfQUNUSVZFX1VTRVInLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jU3RvcmFnZSB7XG4gIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgc2V0SXRlbTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIGNsZWFyOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWRlbnRpdHkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNFBBLE1BQU0sQ0FBTixJQUFZLG1CQW9GWDtBQXBGRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILDhDQUF1QixDQUFBO0lBRXZCOzs7O09BSUc7SUFDSCxrRkFBMkQsQ0FBQTtJQUUzRDs7OztPQUlHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7O09BRUc7SUFDSCxnRkFBeUQsQ0FBQTtJQUV6RDs7T0FFRztJQUNILDhFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILDBFQUFtRCxDQUFBO0lBRW5EOztPQUVHO0lBQ0gsa0RBQTJCLENBQUE7SUFFM0I7OztPQUdHO0lBQ0gsOENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxvREFBNkIsQ0FBQTtJQUU3Qjs7O09BR0c7SUFDSCxnREFBeUIsQ0FBQTtJQUV6Qjs7T0FFRztJQUNILGtFQUEyQyxDQUFBO0lBRTNDOzs7T0FHRztJQUNILDhEQUF1QyxDQUFBO0lBRXZDOztPQUVHO0lBQ0gsOEVBQXVELENBQUE7SUFFdkQ7OztPQUdHO0lBQ0gsMEVBQW1ELENBQUE7SUFFbkQ7O09BRUc7SUFDSCxnRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBcEZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFvRjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sXG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXBJdGVtLFxuICBBc3NvY2lhdGlvbkxpbWl0TWFwSXRlbSxcbiAgVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2UsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5leHBvcnQgdHlwZSBOZXR3b3JrID0gJ21haW5uZXQnIHwgJ3Rlc3RuZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5UmVzcG9uc2Uge1xuICBzZXJ2aWNlOiAnaWRlbnRpdHknO1xuICBtZXRob2Q6ICdkZXJpdmUnIHwgJ2xvZ2luJyB8ICdpbml0aWFsaXplJztcbiAgcGF5bG9hZD86IGFueTtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlEZXJpdmVQYXlsb2FkIHtcbiAgZGVyaXZlZFNlZWRIZXg/OiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBwdWJsaWNLZXlCYXNlNThDaGVjazogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBldGhEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBleHBpcmF0aW9uQmxvY2s6IG51bWJlcjtcbiAgbmV0d29yazogTmV0d29yaztcbiAgYWNjZXNzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIGp3dDogc3RyaW5nO1xuICBkZXJpdmVkSnd0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1B1YmxpY0tleUJhc2U1OENoZWNrOiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1ByaXZhdGVLZXk6IHN0cmluZztcbiAgbWVzc2FnaW5nS2V5TmFtZTogc3RyaW5nO1xuICBtZXNzYWdpbmdLZXlTaWduYXR1cmU6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0SGV4OiBzdHJpbmc7XG4gIHNpZ25lZFVwOiBib29sZWFuO1xuICBwdWJsaWNLZXlBZGRlZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblNwZW5kaW5nTGltaXRSZXNwb25zZU9wdGlvbnMge1xuICBHbG9iYWxERVNPTGltaXQ/OiBudW1iZXI7XG4gIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcD86IFBhcnRpYWw8XG4gICAgUmVjb3JkPFRyYW5zYWN0aW9uVHlwZSwgbnVtYmVyIHwgJ1VOTElNSVRFRCc+XG4gID47XG4gIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBEQU9Db2luT3BlcmF0aW9uTGltaXRNYXA/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCAnVU5MSU1JVEVEJyB9O1xuICB9O1xuICBORlRPcGVyYXRpb25MaW1pdE1hcD86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IG51bWJlcl06IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSB9O1xuICB9O1xuICBEQU9Db2luTGltaXRPcmRlckxpbWl0TWFwPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfTtcbiAgfTtcbiAgQXNzb2NpYXRpb25MaW1pdE1hcD86IChPbWl0PEFzc29jaWF0aW9uTGltaXRNYXBJdGVtLCAnT3BDb3VudCc+ICYge1xuICAgIE9wQ291bnQ6IG51bWJlciB8ICdVTkxJTUlURUQnO1xuICB9KVtdO1xuICBBY2Nlc3NHcm91cExpbWl0TWFwPzogKE9taXQ8QWNjZXNzR3JvdXBMaW1pdE1hcEl0ZW0sICdPcENvdW50Jz4gJiB7XG4gICAgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCc7XG4gIH0pW107XG4gIEFjY2Vzc0dyb3VwTWVtYmVyTGltaXRNYXA/OiAoT21pdDxcbiAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwSXRlbSxcbiAgICAnT3BDb3VudCdcbiAgPiAmIHsgT3BDb3VudDogbnVtYmVyIHwgJ1VOTElNSVRFRCcgfSlbXTtcbiAgSXNVbmxpbWl0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBqd3RBbGdvcml0aG0gPSAnRVMyNTZLJyB8ICdFUzI1Nic7XG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpdHkgZG9tYWluLiBEZWZhdWx0cyB0byBodHRwczovL2lkZW50aXR5LmRlc28ub3JnXG4gICAqL1xuICBpZGVudGl0eVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbmV0d29yay4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBtYWlubmV0LlxuICAgKi9cbiAgbmV0d29yaz86IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNvIG5vZGUgdXNlZCBmb3IgYW55IGFwaSBjYWxscyAoZ2V0IGJhbGFuY2UsIGRlcml2ZWQga2V5IGF1dGhvcml6YXRpb24sIGV0YylcbiAgICovXG4gIG5vZGVVUkk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJlZGlyZWN0IFVSSS4gSWYgcHJvdmlkZWQsIHdlIGRvIGEgaGFyZCByZWRpcmVjdCB0byB0aGUgaWRlbnRpdHlcbiAgICogZG9tYWluIGFuZCBwYXNzIGRhdGEgdmlhIHF1ZXJ5IHBhcmFtcyBiYWNrIHRvIHRoZSBwcm92aWRlZCB1cmkuXG4gICAqL1xuICByZWRpcmVjdFVSST86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgYW5kIHNwZW5kaW5nIGxpbWl0cyB0aGF0IHdpbGwgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyXG4gICAqIGR1cmluZyBsb2dpbi4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBubyBwZXJtaXNzaW9ucy5cbiAgICovXG4gIHNwZW5kaW5nTGltaXRPcHRpb25zPzogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIHVzZWQgdG8gYXV0aG9yaXplIGRlcml2ZWQga2V5cy4gRGVmYXVsdHMgdG8gdW5rbm93bi5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbmNlIG91ciBrZXlzIGFyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNlY3AyNTZrMSBjdXJ2ZSwgdGhlIGNvcnJlY3RcbiAgICogSldUIGFsZ29yaXRobSBoZWFkZXIgKnNob3VsZCogYmUgRVMyNTZLLlxuICAgKiBTZWU6IGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM4ODEyLmh0bWwjbmFtZS1qb3NlLWFsZ29yaXRobXMtcmVnaXN0cmF0aW9cbiAgICpcbiAgICogSE9XRVZFUiwgdGhlIGJhY2tlbmQgand0IGxpYiB1c2VkIGJ5IGRlc28gZm91bmRhdGlvbiAtXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmctand0L2p3dCAtIChhcyB3ZWxsIGFzIG1hbnkgb3RoZXIgand0IGxpYnJhcmllcylcbiAgICogZG8gbm90IHN1cHBvcnQgRVMyNTZLLiBTbyBpbnN0ZWFkLCB3ZSBkZWZhdWx0IHRvIHRoZSBtb3JlIHdpZGVseSBzdXBwb3J0ZWQgRVMyNTYgYWxnbyxcbiAgICogd2hpY2ggY2FuIHN0aWxsIHdvcmsgZm9yIHZlcmlmeWluZyBvdXIgc2lnbmF0dXJlcy4gQnV0IGlmIGEgY29uc3VtZXIgb2YgdGhpcyBsaWIgaXMgdXNpbmcgYVxuICAgKiBqd3QgbGliIHRoYXQgc3VwcG9ydHMgRVMyNTZLIHRoZXkgY2FuIHNwZWNpZnkgdGhhdCBoZXJlLlxuICAgKiBTZWUgdGhpcyBnaXRodWIgaXNzdWVcbiAgICogZm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly9naXRodWIuY29tL2F1dGgwL25vZGUtanNvbndlYnRva2VuL2lzc3Vlcy84NjJcbiAgICogSWYgRVMyNTZLIGlzIGV2ZXIgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kIGp3dCBsaWIsIHdlIHNob3VsZCBjaGFuZ2UgdGhpcy5cbiAgICovXG4gIGp3dEFsZ29yaXRobT86IGp3dEFsZ29yaXRobTtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgc3RvcmFnZSBwcm92aWRlci4gSWYgbm90IHByb3ZpZGVkLCB3ZSB3aWxsIGFzc3VtZSBsb2NhbFN0b3JhZ2VcbiAgICogaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgc3RvcmFnZVByb3ZpZGVyPzogU3RvcmFnZVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IGlzIHByb3ZpZGVkIHRoZSBpZGVudGl0eSB1cmwgdGhhdCBuZWVkcyB0byBiZVxuICAgKiBvcGVuZWQuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyB0aGUgaWRlbnRpdHkgdXJsIGlzIG9wZW5lZC4gRm9yXG4gICAqIGV4YW1wbGUsIGlmIHlvdSBhcmUgdXNpbmcgcmVhY3QgbmF0aXZlLCB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIExpbmtpbmdcbiAgICogQVBJIHRvIG9wZW4gdGhlIHVybCBpbiBhIHN5c3RlbSBicm93c2VyIHdpbmRvdy5cbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogaWRlbnRpdHlQcmVzZW50ZXI6IGFzeW5jICh1cmwpID0+IHtcbiAgICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBXZWJCcm93c2VyLm9wZW5BdXRoU2Vzc2lvbkFzeW5jKHVybCk7XG4gICAqICAgaWYgKHJlc3VsdC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICogICAgIGlkZW50aXR5LmhhbmRsZVJlZGlyZWN0VVJJKHJlc3VsdC51cmwpO1xuICAgKiAgIH1cbiAgICogfSxcbiAgICogYGBgXG4gICAqL1xuICBpZGVudGl0eVByZXNlbnRlcj86ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBUElQcm92aWRlciB7XG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgZGF0YTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIGdldDogKHVybDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93UHJvdmlkZXIge1xuICBsb2NhdGlvbjogeyBzZWFyY2g6IHN0cmluZzsgcGF0aG5hbWU6IHN0cmluZzsgaHJlZjogc3RyaW5nIH07XG4gIGhpc3Rvcnk6IHsgcmVwbGFjZVN0YXRlOiAoc3RhdGU6IGFueSwgdGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+IHZvaWQgfTtcbiAgbG9jYWxTdG9yYWdlOiB7XG4gICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG4gIG9wZW46IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHN0cmluZ1xuICApID0+IFdpbmRvdyB8IG51bGw7XG4gIGFkZEV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5PcHRpb25zIHtcbiAgZ2V0RnJlZURlc286IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFByaW1hcnlEZXJpdmVkS2V5SW5mbyA9IElkZW50aXR5RGVyaXZlUGF5bG9hZCAmIHtcbiAgdHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0czogVHJhbnNhY3Rpb25TcGVuZGluZ0xpbWl0UmVzcG9uc2U7XG4gIElzVmFsaWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU3RvcmVkVXNlciA9IHtcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIHByaW1hcnlEZXJpdmVkS2V5OiBQcmltYXJ5RGVyaXZlZEtleUluZm87XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5VXNlciB7XG4gIGFjY2Vzc0xldmVsOiBudW1iZXI7XG4gIGFjY2Vzc0xldmVsSG1hYzogc3RyaW5nO1xuICBidGNEZXBvc2l0QWRkcmVzczogc3RyaW5nO1xuICBlbmNyeXB0ZWRTZWVkSGV4OiBzdHJpbmc7XG4gIGV0aERlcG9zaXRBZGRyZXNzOiBzdHJpbmc7XG4gIGRlcml2ZWRQdWJsaWNLZXlCYXNlNThDaGVjaz86IHN0cmluZztcbiAgaGFzRXh0cmFUZXh0OiBib29sZWFuO1xuICBuZXR3b3JrOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZGVudGl0eUxvZ2luUGF5bG9hZCB7XG4gIHVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBJZGVudGl0eVVzZXI+O1xuICBwdWJsaWNLZXlBZGRlZDogc3RyaW5nO1xuICBwaG9uZU51bWJlclN1Y2Nlc3M6IGJvb2xlYW47XG4gIHNpZ25lZFVwOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW50aXR5U3RhdGUge1xuICBjdXJyZW50VXNlcjogU3RvcmVkVXNlciB8IG51bGw7XG4gIGFsdGVybmF0ZVVzZXJzOiBSZWNvcmQ8c3RyaW5nLCBTdG9yZWRVc2VyPiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmZXJyZWQge1xuICByZXNvbHZlOiAoYXJnczogYW55KSA9PiB2b2lkO1xuICByZWplY3Q6IChhcmdzOiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UGFpciB7XG4gIHNlZWRIZXg6IHN0cmluZztcbiAgcHJpdmF0ZTogVWludDhBcnJheTtcbiAgcHVibGljOiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZXJOb3RpZmljYXRpb24ge1xuICBldmVudDogTk9USUZJQ0FUSU9OX0VWRU5UUztcbiAgY3VycmVudFVzZXI6IFN0b3JlZFVzZXIgfCBudWxsO1xuICBhbHRlcm5hdGVVc2VyczogUmVjb3JkPHN0cmluZywgU3RvcmVkVXNlcj4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uc0J5QWRkcmVzc1Jlc3BvbnNlIHtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzdWx0OiBFdGhlcnNjYW5UcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV0aGVyc2NhblRyYW5zYWN0aW9uIHtcbiAgYmxvY2tOdW1iZXI6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgbm9uY2U6IHN0cmluZztcbiAgYmxvY2tIYXNoOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uSW5kZXg6IHN0cmluZztcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBnYXM6IHN0cmluZztcbiAgZ2FzUHJpY2U6IHN0cmluZztcbiAgaXNFcnJvcjogc3RyaW5nO1xuICB0eHJlY2VpcHRfc3RhdHVzOiBzdHJpbmc7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBjdW11bGF0aXZlR2FzVXNlZDogc3RyaW5nO1xuICBnYXNVc2VkOiBzdHJpbmc7XG4gIGNvbmZpcm1hdGlvbnM6IHN0cmluZztcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzR3JvdXBQcml2YXRlSW5mbyB7XG4gIEFjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHN0cmluZztcbiAgQWNjZXNzR3JvdXBQcml2YXRlS2V5SGV4OiBzdHJpbmc7XG4gIEFjY2Vzc0dyb3VwS2V5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBOT1RJRklDQVRJT05fRVZFTlRTIHtcbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgY29uc3VtaW5nIGFwcCBpbml0aWFsbHkgc3Vic2NyaWJlcyB0byBpZGVudGl0eS5cbiAgICovXG4gIFNVQlNDUklCRSA9ICdTVUJTQ1JJQkUnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFuIGludGVybWVkaWF0ZSBldmVudCBmaXJlZCBBRlRFUiB0aGUgdXNlciBjb21wbGV0ZXMgYW4gaWRlbnRpdHkgZmxvd1xuICAgKiB0aGF0IHJlcXVpcmVzIGEgZGVyaXZlZCBrZXkgYXV0aG9yaXphdGlvbi4gVGhpcyBldmVudCBpcyBmaXJlZCBCRUZPUkUgdGhlXG4gICAqIHJlcXVlc3QgdG8gYXV0aG9yaXplIHRoZSBkZXJpdmVkIGtleSBpcyBtYWRlLlxuICAgKi9cbiAgQVVUSE9SSVpFX0RFUklWRURfS0VZX1NUQVJUID0gJ0FVVEhPUklaRV9ERVJJVkVEX0tFWV9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIGV2ZW50IGZpcmVkIEFGVEVSIHRoZSB1c2VyIGNvbXBsZXRlcyBhbiBpZGVudGl0eVxuICAgKiBmbG93IHRoYXQgcmVxdWlyZXMgYSBkZXJpdmVkIGtleSBhdXRob3JpemF0aW9uLiBUaGlzIGV2ZW50IGlzIGZpcmVkIEFGVEVSXG4gICAqIHRoZSByZXF1ZXN0IHRvIGF1dGhvcml6ZSB0aGUgZGVyaXZlZCBrZXkgaXMgbWFkZS5cbiAgICovXG4gIEFVVEhPUklaRV9ERVJJVkVEX0tFWV9FTkQgPSAnQVVUSE9SSVpFX0RFUklWRURfS0VZX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgaWYgdGhlIHJlcXVlc3QgdG8gYXV0aG9yaXplIGEgZGVyaXZlZCBrZXkgZmFpbHMuXG4gICAqL1xuICBBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCA9ICdBVVRIT1JJWkVfREVSSVZFRF9LRVlfRkFJTCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgcGVybWlzc2lvbnMgYXBwcm92YWwgcG9wdXAuXG4gICAqL1xuICBSRVFVRVNUX1BFUk1JU1NJT05TX1NUQVJUID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfU1RBUlQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgY29tcGxldGVzIGFwcHJvdmluZyBwZXJtaXNzaW9ucywgYW5kXG4gICAqIGNvbWVzIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIFJFUVVFU1RfUEVSTUlTU0lPTlNfRU5EID0gJ1JFUVVFU1RfUEVSTUlTU0lPTlNfRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBsb2dpbiBwb3B1cC5cbiAgICovXG4gIExPR0lOX1NUQVJUID0gJ0xPR0lOX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyBsb2dnaW5nIGluLCBhbmRcbiAgICogY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgTE9HSU5fRU5EID0gJ0xPR0lOX0VORCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbG9nb3V0IHBvcHVwLlxuICAgKi9cbiAgTE9HT1VUX1NUQVJUID0gJ0xPR09VVF9TVEFSVCcsXG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBjb21wbGV0ZXMgbG9nZ2luZyBvdXQsIGFuZFxuICAgKiBjb21lcyBBRlRFUiB0aGUgaW50ZXJtZWRpYXRlIEFVVEhPUklaRV9ERVJJVkVEX0tFWSBldmVudHMuXG4gICAqL1xuICBMT0dPVVRfRU5EID0gJ0xPR09VVF9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIGdldCBkZXNvIHBvcHVwLlxuICAgKi9cbiAgR0VUX0ZSRUVfREVTT19TVEFSVCA9ICdHRVRfRlJFRV9ERVNPX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgZ2V0IGRlc28gZmxvdywgYW5kIGNvbWVzXG4gICAqIEFGVEVSIHRoZSBpbnRlcm1lZGlhdGUgQVVUSE9SSVpFX0RFUklWRURfS0VZIGV2ZW50cy5cbiAgICovXG4gIEdFVF9GUkVFX0RFU09fRU5EID0gJ0dFVF9GUkVFX0RFU09fRU5EJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSB2ZXJpZnkgcGhvbmUgbnVtYmVyIHBvcHVwLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9TVEFSVCA9ICdWRVJJRllfUEhPTkVfTlVNQkVSX1NUQVJUJyxcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIGNvbXBsZXRlcyB0aGUgdmVyaWZ5IHBob25lIG51bWJlciBmbG93LFxuICAgKiBhbmQgY29tZXMgQUZURVIgdGhlIGludGVybWVkaWF0ZSBBVVRIT1JJWkVfREVSSVZFRF9LRVkgZXZlbnRzLlxuICAgKi9cbiAgVkVSSUZZX1BIT05FX05VTUJFUl9FTkQgPSAnVkVSSUZZX1BIT05FX05VTUJFUl9FTkQnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIHdoZW4gdGhlIGNvbnN1bWluZyBhcHAgc3dpdGNoZXMgdGhlIGFjdGl2ZSB1c2VyLlxuICAgKi9cbiAgQ0hBTkdFX0FDVElWRV9VU0VSID0gJ0NIQU5HRV9BQ1RJVkVfVVNFUicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXN5bmNTdG9yYWdlIHtcbiAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgY2xlYXI6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2VQcm92aWRlciA9IFN0b3JhZ2UgfCBBc3luY1N0b3JhZ2U7XG4iXX0=

@@ -11,4 +11,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

import { AccessGroupMemberRecord, TransactionExtraData, TransactionMetadataAccessGroup, TransactionMetadataAccessGroupMembers, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity';
import { guardTxPermission } from '../identity/permissions-utils';
import { constructBalanceModelTx, convertExtraData, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
const buildAccessGroupMetadata = (params) => {

@@ -266,2 +266,2 @@ const metadata = new TransactionMetadataAccessGroup();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWdyb3Vwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQiw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5QixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFHckIsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQXNDLEVBQUUsRUFBRTtJQUMxRSxNQUFNLFFBQVEsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUM7SUFDdEQsUUFBUSxDQUFDLG9CQUFvQixHQUFHLDhCQUE4QixDQUM1RCxNQUFNLENBQUMsK0JBQStCLENBQ3ZDLENBQUM7SUFDRixRQUFRLENBQUMseUJBQXlCLEdBQUcsOEJBQThCLENBQ2pFLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FDNUMsQ0FBQztJQUNGLFFBQVEsQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLENBQ25ELE1BQXNDLEVBQ0csRUFBRTtJQUMzQyxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsb0NBQW9DLEVBQzNDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUNoQztRQUNFLFNBQVMsRUFB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QkFBOEIsQ0FDNUIsTUFBTSxDQUFDLHFDQUFxQyxDQUM3QyxDQUFDO1FBQ0osb0JBQW9CLENBQUMsd0JBQXdCLEdBQUcsaUJBQWlCLENBQy9ELE1BQU0sQ0FBQyx3QkFBd0IsQ0FDaEMsQ0FBQztRQUNGLG9CQUFvQixDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FDbkQsTUFBTSxDQUFDLFlBQVksQ0FDcEIsQ0FBQztRQUNGLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHLENBQzFELE1BQTJFLEVBQ2xDLEVBQUU7SUFDM0MsT0FBTyx1QkFBdUIsQ0FDNUIsTUFBTSxDQUFDLG9DQUFvQyxFQUMzQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsRUFDN0M7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdCxcbiAgQWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICBDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCxcbiAgVHJhbnNhY3Rpb25FeHRyYURhdGEsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cCxcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycyxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuLi9pZGVudGl0eS9wZXJtaXNzaW9ucy11dGlscyc7XG5pbXBvcnQge1xuICBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeCxcbiAgY29udmVydEV4dHJhRGF0YSxcbiAgZ2V0VHhXaXRoRmVlTmFub3MsXG4gIGhhbmRsZVNpZ25BbmRTdWJtaXQsXG4gIHN1bVRyYW5zYWN0aW9uRmVlcyxcbn0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeCwgVHhSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cCgpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNjcmVhdGUtYWNjZXNzLWdyb3VwXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyA9XG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdCxcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwS2V5TmFtZSdcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjY2Vzc0dyb3VwID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWNjZXNzR3JvdXBNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXBcbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICAgICAgfCAnQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBLZXlOYW1lJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXAgPSAoXG4gIHBhcmFtczogVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFVwZGF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgbWV0YWRhdGEsXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNhZGQtYWNjZXNzLWdyb3VwLW1lbWJlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEFjY2Vzc0dyb3VwTWVtYmVycyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+LFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FkZC1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycygpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyc0xpc3QgPSBwYXJhbXMuQWNjZXNzR3JvdXBNZW1iZXJMaXN0Lm1hcChcbiAgICAobWVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY2Nlc3NHcm91cE1lbWJlciA9IG5ldyBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCgpO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXkgPVxuICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lXG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZW5jcnlwdGVkS2V5ID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIG1lbWJlci5FbmNyeXB0ZWRLZXlcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5leHRyYURhdGEgPSBjb252ZXJ0RXh0cmFEYXRhKG1lbWJlci5FeHRyYURhdGEpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy1hcGkjcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnMgPSBhc3luYyAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PixcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgbW9yZSBwZXJtaXNzaXZlIHRoYW4gd2UgYWN0dWFsbHkgbmVlZCBpdCB0byBiZSwgYnV0IElcbiAgICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHdoZW4gc3BlY2lmeWluZyB0aGUgQWNjZXNzR3JvdXBLZXlOYW1lIGFuZFxuICAgICAgLy8gQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLiBJZiBhbnlvbmUgY29tcGxhaW5zLCB3ZSBjYW5cbiAgICAgIC8vIHJldmlzaXQgaXQsIGJ1dCB0aGlzIGlzIG5vdCBhIHRlcnJpYmx5IHNlbnNpdGl2ZSBwZXJtaXNzaW9uIHRvIGdyYW50LlxuICAgICAgQWNjZXNzR3JvdXBMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0UmVtb3ZlQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRSZW1vdmVBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXBNZW1iZXJzKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlck9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJzTGlzdCA9IHBhcmFtcy5BY2Nlc3NHcm91cE1lbWJlckxpc3QubWFwKFxuICAgIChtZW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjY2Vzc0dyb3VwTWVtYmVyID0gbmV3IEFjY2Vzc0dyb3VwTWVtYmVyUmVjb3JkKCk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleSA9XG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWVcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5lbmNyeXB0ZWRLZXkgPSBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmV4dHJhRGF0YSA9IG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YSgpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RSZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVyc1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzID0gYXN5bmMgKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMoKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPd25lclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyT3BlcmF0aW9uVHlwZSA9IDQ7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWUpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlcnNMaXN0ID0gcGFyYW1zLkFjY2Vzc0dyb3VwTWVtYmVyTGlzdC5tYXAoXG4gICAgKG1lbWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV3QWNjZXNzR3JvdXBNZW1iZXIgPSBuZXcgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQoKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5ID1cbiAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgICAgICAgIG1lbWJlci5BY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlcktleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhcbiAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZVxuICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmVuY3J5cHRlZEtleSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuRW5jcnlwdGVkS2V5XG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZXh0cmFEYXRhID0gY29udmVydEV4dHJhRGF0YShtZW1iZXIuRXh0cmFEYXRhKTtcbiAgICAgIHJldHVybiBuZXdBY2Nlc3NHcm91cE1lbWJlcjtcbiAgICB9XG4gICk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc01ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWdyb3Vwcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQiw4QkFBOEIsRUFDOUIscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5QixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFzQyxFQUFFLEVBQUU7SUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyw4QkFBOEIsQ0FDNUQsTUFBTSxDQUFDLCtCQUErQixDQUN2QyxDQUFDO0lBQ0YsUUFBUSxDQUFDLHlCQUF5QixHQUFHLDhCQUE4QixDQUNqRSxNQUFNLENBQUMsb0NBQW9DLENBQzVDLENBQUM7SUFDRixRQUFRLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxDQUNuRCxNQUFzQyxFQUNHLEVBQUU7SUFDM0MsT0FBTyx1QkFBdUIsQ0FDNUIsTUFBTSxDQUFDLG9DQUFvQyxFQUMzQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsRUFDaEM7UUFDRSxTQUFTLEVBQUUs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QThCLENBQzVCLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDN0MsQ0FBQztRQUNKLG9CQUFvQixDQUFDLHdCQUF3QixHQUFHLGlCQUFpQixDQUMvRCxNQUFNLENBQUMsd0JBQXdCLENBQ2hDLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQ25ELE1BQU0sQ0FBQyxZQUFZLENBQ3BCLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxDQUMxRCxNQUEyRSxFQUNsQyxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyxvQ0FBb0MsRUFDM0MscUNBQXFDLENBQUMsTUFBTSxDQUFDLEVBQzdDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3QsXG4gIEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdCxcbiAgQ3JlYXRlQWNjZXNzR3JvdXBSZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQsXG4gIFRyYW5zYWN0aW9uRXh0cmFEYXRhLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXAsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMsXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG59IGZyb20gJy4uL2lkZW50aXR5JztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBjb252ZXJ0RXh0cmFEYXRhLFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cCgpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2Nlc3NHcm91cE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNjcmVhdGUtYWNjZXNzLWdyb3VwXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyA9XG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gICAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICAgIENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdCxcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwS2V5TmFtZSdcbiAgICAgIHwgJ0FjY2Vzc0dyb3VwUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjY2Vzc0dyb3VwID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWNjZXNzR3JvdXBNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXBcbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgQ3JlYXRlQWNjZXNzR3JvdXBSZXF1ZXN0LFxuICAgICAgfCAnQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBLZXlOYW1lJ1xuICAgICAgfCAnQWNjZXNzR3JvdXBQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXAgPSAoXG4gIHBhcmFtczogVXBkYXRlQWNjZXNzR3JvdXBSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVBY2Nlc3NHcm91cFJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cFRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFVwZGF0ZUFjY2Vzc0dyb3VwUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cFB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgbWV0YWRhdGEsXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hY2Nlc3MtZ3JvdXBzLWFwaSNhZGQtYWNjZXNzLWdyb3VwLW1lbWJlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEFjY2Vzc0dyb3VwTWVtYmVycyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+LFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1Jlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FkZC1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUFjY2Vzc0dyb3VwTWVtYmVycygpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE93bmVyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJPcGVyYXRpb25UeXBlID0gMjtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFjY2Vzc0dyb3VwS2V5TmFtZSk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyc0xpc3QgPSBwYXJhbXMuQWNjZXNzR3JvdXBNZW1iZXJMaXN0Lm1hcChcbiAgICAobWVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdBY2Nlc3NHcm91cE1lbWJlciA9IG5ldyBBY2Nlc3NHcm91cE1lbWJlclJlY29yZCgpO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXkgPVxuICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lXG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZW5jcnlwdGVkS2V5ID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIG1lbWJlci5FbmNyeXB0ZWRLZXlcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5leHRyYURhdGEgPSBjb252ZXJ0RXh0cmFEYXRhKG1lbWJlci5FeHRyYURhdGEpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQWRkQWNjZXNzR3JvdXBNZW1iZXJNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYWNjZXNzLWdyb3Vwcy1hcGkjcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnMgPSBhc3luYyAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PixcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIC8vIE5PVEU6IFRoaXMgaXMgbW9yZSBwZXJtaXNzaXZlIHRoYW4gd2UgYWN0dWFsbHkgbmVlZCBpdCB0byBiZSwgYnV0IElcbiAgICAgIC8vIGNvdWxkbid0IGdldCBpdCB0byB3b3JrIHdoZW4gc3BlY2lmeWluZyB0aGUgQWNjZXNzR3JvdXBLZXlOYW1lIGFuZFxuICAgICAgLy8gQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrLiBJZiBhbnlvbmUgY29tcGxhaW5zLCB3ZSBjYW5cbiAgICAgIC8vIHJldmlzaXQgaXQsIGJ1dCB0aGlzIGlzIG5vdCBhIHRlcnJpYmx5IHNlbnNpdGl2ZSBwZXJtaXNzaW9uIHRvIGdyYW50LlxuICAgICAgQWNjZXNzR3JvdXBMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgQWNjZXNzR3JvdXBNZW1iZXJMaW1pdE1hcDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrOiAnJyxcbiAgICAgICAgICBTY29wZVR5cGU6ICdBbnknLFxuICAgICAgICAgIEFjY2Vzc0dyb3VwS2V5TmFtZTogJycsXG4gICAgICAgICAgT3BlcmF0aW9uVHlwZTogJ0FueScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvcmVtb3ZlLWFjY2Vzcy1ncm91cC1tZW1iZXJzJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0UmVtb3ZlQWNjZXNzR3JvdXBNZW1iZXJzVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRSZW1vdmVBY2Nlc3NHcm91cE1lbWJlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD5cbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXNzR3JvdXBNZW1iZXJzKCk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlck9wZXJhdGlvblR5cGUgPSAzO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cEtleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQWNjZXNzR3JvdXBLZXlOYW1lKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBNZW1iZXJzTGlzdCA9IHBhcmFtcy5BY2Nlc3NHcm91cE1lbWJlckxpc3QubWFwKFxuICAgIChtZW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld0FjY2Vzc0dyb3VwTWVtYmVyID0gbmV3IEFjY2Vzc0dyb3VwTWVtYmVyUmVjb3JkKCk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleSA9XG4gICAgICAgIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICAgICAgICBtZW1iZXIuQWNjZXNzR3JvdXBNZW1iZXJQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuYWNjZXNzR3JvdXBNZW1iZXJLZXlOYW1lID0gZW5jb2RlVVRGOFRvQnl0ZXMoXG4gICAgICAgIHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWVcbiAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5lbmNyeXB0ZWRLZXkgPSBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmV4dHJhRGF0YSA9IG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YSgpO1xuICAgICAgcmV0dXJuIG5ld0FjY2Vzc0dyb3VwTWVtYmVyO1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RSZW1vdmVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFJlbW92ZUFjY2Vzc0dyb3VwTWVtYmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2FjY2Vzcy1ncm91cHMtYXBpI3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVyc1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzID0gYXN5bmMgKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QWRkQWNjZXNzR3JvdXBNZW1iZXJzUmVzcG9uc2U+PiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5BY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgLy8gTk9URTogVGhpcyBpcyBtb3JlIHBlcm1pc3NpdmUgdGhhbiB3ZSBhY3R1YWxseSBuZWVkIGl0IHRvIGJlLCBidXQgSVxuICAgICAgLy8gY291bGRuJ3QgZ2V0IGl0IHRvIHdvcmsgd2hlbiBzcGVjaWZ5aW5nIHRoZSBBY2Nlc3NHcm91cEtleU5hbWUgYW5kXG4gICAgICAvLyBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2suIElmIGFueW9uZSBjb21wbGFpbnMsIHdlIGNhblxuICAgICAgLy8gcmV2aXNpdCBpdCwgYnV0IHRoaXMgaXMgbm90IGEgdGVycmlibHkgc2Vuc2l0aXZlIHBlcm1pc3Npb24gdG8gZ3JhbnQuXG4gICAgICBBY2Nlc3NHcm91cExpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBBY2Nlc3NHcm91cE1lbWJlckxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY2Nlc3NHcm91cE93bmVyUHVibGljS2V5QmFzZTU4Q2hlY2s6ICcnLFxuICAgICAgICAgIFNjb3BlVHlwZTogJ0FueScsXG4gICAgICAgICAgQWNjZXNzR3JvdXBLZXlOYW1lOiAnJyxcbiAgICAgICAgICBPcGVyYXRpb25UeXBlOiAnQW55JyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VwZGF0ZS1hY2Nlc3MtZ3JvdXAtbWVtYmVycycsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVXBkYXRlQWNjZXNzR3JvdXBNZW1iZXJzTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxBZGRBY2Nlc3NHcm91cE1lbWJlcnNSZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2Nlc3NHcm91cE1lbWJlcnMoKTtcbiAgbWV0YWRhdGEuYWNjZXNzR3JvdXBPd25lclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQWNjZXNzR3JvdXBPd25lclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICk7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwTWVtYmVyT3BlcmF0aW9uVHlwZSA9IDQ7XG4gIG1ldGFkYXRhLmFjY2Vzc0dyb3VwS2V5TmFtZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5BY2Nlc3NHcm91cEtleU5hbWUpO1xuICBtZXRhZGF0YS5hY2Nlc3NHcm91cE1lbWJlcnNMaXN0ID0gcGFyYW1zLkFjY2Vzc0dyb3VwTWVtYmVyTGlzdC5tYXAoXG4gICAgKG1lbWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV3QWNjZXNzR3JvdXBNZW1iZXIgPSBuZXcgQWNjZXNzR3JvdXBNZW1iZXJSZWNvcmQoKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmFjY2Vzc0dyb3VwTWVtYmVyUHVibGljS2V5ID1cbiAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgICAgICAgIG1lbWJlci5BY2Nlc3NHcm91cE1lbWJlclB1YmxpY0tleUJhc2U1OENoZWNrXG4gICAgICAgICk7XG4gICAgICBuZXdBY2Nlc3NHcm91cE1lbWJlci5hY2Nlc3NHcm91cE1lbWJlcktleU5hbWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhcbiAgICAgICAgbWVtYmVyLkFjY2Vzc0dyb3VwTWVtYmVyS2V5TmFtZVxuICAgICAgKTtcbiAgICAgIG5ld0FjY2Vzc0dyb3VwTWVtYmVyLmVuY3J5cHRlZEtleSA9IGVuY29kZVVURjhUb0J5dGVzKFxuICAgICAgICBtZW1iZXIuRW5jcnlwdGVkS2V5XG4gICAgICApO1xuICAgICAgbmV3QWNjZXNzR3JvdXBNZW1iZXIuZXh0cmFEYXRhID0gY29udmVydEV4dHJhRGF0YShtZW1iZXIuRXh0cmFEYXRhKTtcbiAgICAgIHJldHVybiBuZXdBY2Nlc3NHcm91cE1lbWJlcjtcbiAgICB9XG4gICk7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVBY2Nlc3NHcm91cE1lbWJlcnNUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPEFkZEFjY2Vzc0dyb3VwTWVtYmVyc1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLkFjY2Vzc0dyb3VwT3duZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZUFjY2Vzc0dyb3VwTWVtYmVyc01ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19

@@ -12,4 +12,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

import { TransactionMetadataCreatePostAssociation, TransactionMetadataCreateUserAssociation, TransactionMetadataDeletePostAssociation, TransactionMetadataDeleteUserAssociation, bs58PublicKeyToCompressedBytes, encodeUTF8ToBytes, } from '../identity';
import { guardTxPermission } from '../identity/permissions-utils';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
export const createUserAssociation = (params, options) => __awaiter(void 0, void 0, void 0, function* () {

@@ -142,2 +142,2 @@ var _a, _b, _c, _d;

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMsOEJBQThCLEVBQzlCLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBaUJyQixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxNQUEwQyxFQUMxQyxPQUEwQixFQUNrQyxFQUFFOztJQUM5RCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDhCQUE4QixFQUNyQyxrQ0FBa0MsQ0FBQyxNQUFNLENBQUMsRUFDMUM7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0lBRUYsSUFBSSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxnQkFBZ0IsTUFBSyxLQUFLLEVBQUU7UUFDdkMsTUFBTSxpQkFBaUIsQ0FBQztZQUN0QixlQUFlLEVBQ2IsU0FBUyxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQ2pFLG1CQUFtQixFQUFFO2dCQUNuQjtvQkFDRSxnQkFBZ0IsRUFBRSxNQUFNO29CQUN4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dkQsTUFBMEMsRUFDRCxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLEVBQzFDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWFGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLE1BQTBDLEVBQzFDLE9BQXdCLEVBQ29DLEVBQUU7SUFDOUQsT0FBTyxtQkFBbUIsQ0FBQyxpQ0FBaUMsRUFBRSxNQUFNLGtDQUMvRCxPQUFPLEtBQ1Ysb0JBQW9CLEVBQUUseUNBQXlDLElBQy9ELENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxDQUN2RCxNQUEwQyxFQUNELEVBQUU7SUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSx3Q0FBd0MsRUFBRSxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsUUFBUSxFQUNSO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhleFRvQnl0ZXMgfSBmcm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIEFzc29jaWF0aW9uVHhuUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgQ3JlYXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdCxcbiAgQ3JlYXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdCxcbiAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlUG9zdEFzc29jaWF0aW9uLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlVXNlckFzc29jaWF0aW9uLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhRGVsZXRlUG9zdEFzc29jaWF0aW9uLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhRGVsZXRlVXNlckFzc29jaWF0aW9uLFxuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG4gIGVuY29kZVVURjhUb0J5dGVzLFxufSBmcm9tICcuLi9pZGVudGl0eSc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4uL2lkZW50aXR5L3Blcm1pc3Npb25zLXV0aWxzJztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtdXNlci1hc3NvY2lhdGlvblxuICovXG5cbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnVGFyZ2V0VXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQXNzb2NpYXRpb25UeXBlJ1xuICAgICAgfCAnQXNzb2NpYXRpb25WYWx1ZSdcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgY3JlYXRlVXNlckFzc29jaWF0aW9uID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVVzZXJBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBBc3NvY2lhdGlvbkxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBc3NvY2lhdGlvbkNsYXNzOiAnVXNlcicsXG4gICAgICAgICAgQXNzb2NpYXRpb25UeXBlOiBwYXJhbXMuQXNzb2NpYXRpb25UeXBlLFxuICAgICAgICAgIEFwcFNjb3BlVHlwZTogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8gJ1Njb3BlZCcgOiAnQW55JyxcbiAgICAgICAgICBBcHBQdWJsaWNLZXlCYXNlNThDaGVjazogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8/ICcnLFxuICAgICAgICAgIEFzc29jaWF0aW9uT3BlcmF0aW9uOiAnQ3JlYXRlJyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhIGJpdCB3ZWlyZCwgYnV0IHdlIGRvbid0IGhhdmUgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgLy8gb3IgQXNzb2NpYXRpb25UeXBlIGluIHRoZSBkZWxldGUgcGFyYW1zLCBzbyB3ZSBqdXN0IGFzayBmb3IgZGVsZXRlXG4gICAgICAgIC8vIHBlcm1pc3Npb24gYXQgdGhlIHNhbWUgdGltZSB0aGUgYXNzb2NpYXRpb24gaXMgY3JlYXRlZC5cbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdVc2VyJyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdEZWxldGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXNlci1hc3NvY2lhdGlvbnMvY3JlYXRlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hcHBQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrIHx8ICcnXG4gICk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVHlwZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvblZhbHVlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVmFsdWUpO1xuICBtZXRhZGF0YS50YXJnZXRVc2VyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5UYXJnZXRVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zLXRyYW5zYWN0aW9ucy1hcGkjZGVsZXRlLXVzZXItYXNzb2NpYXRpb25cbiAqL1xuXG5leHBvcnQgdHlwZSBEZWxldGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyQXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogRGVsZXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VzZXItYXNzb2NpYXRpb25zL2RlbGV0ZScsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEZWxldGVVc2VyQXNzb2NpYXRpb24oKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25JRCA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvbklEKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IERlbGV0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2Fzc29jaWF0aW9ucy10cmFuc2FjdGlvbnMtYXBpI2NyZWF0ZS1wb3N0LWFzc29jaWF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnUG9zdEhhc2hIZXgnXG4gICAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdBc3NvY2lhdGlvblR5cGUnXG4gICAgICB8ICdBc3NvY2lhdGlvblZhbHVlJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3N0QXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogQ3JlYXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlUG9zdEFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIEFzc29jaWF0aW9uTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdQb3N0JyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdDcmVhdGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGEgYml0IHdlaXJkLCBidXQgd2UgZG9uJ3QgaGF2ZSBBcHBQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICAvLyBvciBBc3NvY2lhdGlvblR5cGUgaW4gdGhlIGRlbGV0ZSBwYXJhbXMsIHNvIHdlIGp1c3QgYXNrIGZvciBkZWxldGVcbiAgICAgICAgLy8gcGVybWlzc2lvbiBhdCB0aGUgc2FtZSB0aW1lIHRoZSBhc3NvY2lhdGlvbiBpcyBjcmVhdGVkLlxuICAgICAgICB7XG4gICAgICAgICAgQXNzb2NpYXRpb25DbGFzczogJ1Bvc3QnLFxuICAgICAgICAgIEFzc29jaWF0aW9uVHlwZTogcGFyYW1zLkFzc29jaWF0aW9uVHlwZSxcbiAgICAgICAgICBBcHBTY29wZVR5cGU6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/ICdTY29wZWQnIDogJ0FueScsXG4gICAgICAgICAgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/PyAnJyxcbiAgICAgICAgICBBc3NvY2lhdGlvbk9wZXJhdGlvbjogJ0RlbGV0ZScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9jcmVhdGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlUG9zdEFzc29jaWF0aW9uKCk7XG4gIG1ldGFkYXRhLmFwcFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgfHwgJydcbiAgKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25UeXBlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVHlwZSk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVmFsdWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQXNzb2NpYXRpb25WYWx1ZSk7XG4gIG1ldGFkYXRhLnBvc3RIYXNoID0gaGV4VG9CeXRlcyhwYXJhbXMuUG9zdEhhc2hIZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNkZWxldGUtcG9zdC1hc3NvY2lhdGlvblxuICovXG5leHBvcnQgdHlwZSBEZWxldGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVQb3N0QXNzb2NpYXRpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9kZWxldGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3REZWxldGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0RGVsZXRlUG9zdEFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvbklEID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uSUQpO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBtZXRhZGF0YSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHdDQUF3QyxFQUN4Qyx3Q0FBd0MsRUFDeEMsOEJBQThCLEVBQzlCLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWdCNUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsTUFBMEMsRUFDMUMsT0FBMEIsRUFDa0MsRUFBRTs7SUFDOUQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLEVBQzFDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztZQUNqRSxtQkFBbUIsRUFBRTtnQkFDbkI7b0JBQ0UsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDeEIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUN2QyxZQUFZLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUs7b0JBQy9ELHVCQUF1QixFQUFFLE1BQUEsTUFBTSxDQUFDLHVCQUF1QixtQ0FBSSxFQUFFO29CQUM3RCxvQkFBb0IsRUFBRSxRQUFRO29CQUM5QixPQUFPLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsWUFBWSxtQ0FBSSxDQUFDO2lCQUNwQztnQkFDRCx1RUFBdUU7Z0JBQ3ZFLHFFQUFxRTtnQkFDckUsMERBQTBEO2dCQUMxRDtvQkFDRSxnQkFBZ0IsRUFBRSxNQUFNO29CQUN4QixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7b0JBQ3ZDLFlBQVksRUFBRSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztvQkFDL0QsdUJBQXVCLEVBQUUsTUFBQSxNQUFNLENBQUMsdUJBQXVCLG1DQUFJLEVBQUU7b0JBQzdELG9CQUFvQixFQUFFLFFBQVE7b0JBQzlCLE9BQU8sRUFBRSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxZQUFZLG1DQUFJLENBQUM7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sbUJBQW1CLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxrQ0FDL0QsT0FBTyxLQUNWLG9CQUFvQixFQUFFLHlDQUF5QyxJQUMvRCxDQUFDO0FBQ0wsQ0FBQyxDQUFBLENBQUM7QUFFRixNQUFNLGtDQUFrQyxHQUFHLENBQ3pDLE1BQTBDLEVBQzFDLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLHdDQUF3QyxFQUFFLENBQUM7SUFDaEUsUUFBUSxDQUFDLFlBQVksR0FBRyw4QkFBOEIsQ0FDcEQsTUFBTSxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FDckMsQ0FBQztJQUNGLFFBQVEsQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsOEJBQThCLENBQzNELE1BQU0sQ0FBQyw4QkFBOEIsQ0FDdEMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLENBQ3ZELE1BQTBDLEVBQ0QsRUFBRTtJQUMzQyxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxFQUMxQztRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFjRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxNQUEwQyxFQUMxQyxPQUEwQixFQUNrQyxFQUFFO0lBQzlELE9BQU8sbUJBQW1CLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxrQ0FDL0QsT0FBTyxLQUNWLG9CQUFvQixFQUFFLHlDQUF5QyxJQUMvRCxDQUFDO0FBQ0wsQ0FBQyxDQUFBLENBQUM7QUFFRixNQUFNLGtDQUFrQyxHQUFHLENBQ3pDLE1BQTBDLEVBQzFDLEVBQUU7SUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLHdDQUF3QyxFQUFFLENBQUM7SUFDaEUsUUFBUSxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakUsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsQ0FDdkQsTUFBMEMsRUFDRCxFQUFFO0lBQzNDLE9BQU8sdUJBQXVCLENBQzVCLE1BQU0sQ0FBQyw4QkFBOEIsRUFDckMsa0NBQWtDLENBQUMsTUFBTSxDQUFDLEVBQzFDO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLE1BQTBDLEVBQzFDLE9BQTBCLEVBQ2tDLEVBQUU7O0lBQzlELE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUNqQyxNQUFNLENBQUMsOEJBQThCLEVBQ3JDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxFQUMxQztRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7SUFFRixJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGdCQUFnQixNQUFLLEtBQUssRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixDQUFDO1lBQ3RCLGVBQWUsRUFDYixTQUFTLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDakUsbUJBQW1CLEVBQUU7Z0JBQ25CO29CQUNFLGdCQUFnQixFQUFFLE1BQU07b0JBQ3hCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtvQkFDdkMsWUFBWSxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUMvRCx1QkFBdUIsRUFBRSxNQUFBLE1BQU0sQ0FBQyx1QkFBdUIsbUNBQUksRUFBRTtvQkFDN0Qsb0JBQW9CLEVBQUUsUUFBUTtvQkFDOUIsT0FBTyxFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksbUNBQUksQ0FBQztpQkFDcEM7Z0JBQ0QsdUVBQXVFO2dCQUN2RSxxRUFBcUU7Z0JBQ3JFLDBEQUEwRDtnQkFDMUQ7b0JBQ0UsZ0JBQWdCLEVBQUUsTUFBTTtvQkFDeEIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUN2QyxZQUFZLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUs7b0JBQy9ELHVCQUF1QixFQUFFLE1BQUEsTUFBTSxDQUFDLHVCQUF1QixtQ0FBSSxFQUFFO29CQUM3RCxvQkFBb0IsRUFBRSxRQUFRO29CQUM5QixPQUFPLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsWUFBWSxtQ0FBSSxDQUFDO2lCQUNwQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLG1CQUFtQixDQUFDLGlDQUFpQyxFQUFFLE1BQU0sa0NBQy9ELE9BQU8sS0FDVixvQkFBb0IsRUFBRSx5Q0FBeUMsSUFDL0QsQ0FBQztBQUNMLENBQUMsQ0FBQSxDQUFDO0FBRUYsTUFBTSxrQ0FBa0MsR0FBRyxDQUN6QyxNQUEwQyxFQUMxQyxFQUFFO0lBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSx3Q0FBd0MsRUFBRSxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxZQUFZLEdBQUcsOEJBQThCLENBQ3BELE1BQU0sQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQ3JDLENBQUM7SUFDRixRQUFRLENBQUMsZUFBZSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRSxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRW5ELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLENBQ3ZELE1BQTBDLEVBQ0QsRUFBRTtJQUMzQyxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLGtDQUFrQyxDQUFDLE1BQU0sQ0FBQyxFQUMxQztRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFhRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxNQUEwQyxFQUMxQyxPQUF3QixFQUNvQyxFQUFFO0lBQzlELE9BQU8sbUJBQW1CLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxrQ0FDL0QsT0FBTyxLQUNWLG9CQUFvQixFQUFFLHlDQUF5QyxJQUMvRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsQ0FDdkQsTUFBMEMsRUFDRCxFQUFFO0lBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksd0NBQXdDLEVBQUUsQ0FBQztJQUNoRSxRQUFRLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRSxPQUFPLHVCQUF1QixDQUM1QixNQUFNLENBQUMsOEJBQThCLEVBQ3JDLFFBQVEsRUFDUjtRQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoZXhUb0J5dGVzIH0gZnJvbSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBc3NvY2lhdGlvblR4blJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3QsXG4gIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3QsXG4gIERlbGV0ZUFzc29jaWF0aW9uUmVxdWVzdCxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVVzZXJBc3NvY2lhdGlvbixcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBlbmNvZGVVVEY4VG9CeXRlcyxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtdXNlci1hc3NvY2lhdGlvblxuICovXG5cbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnVGFyZ2V0VXNlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQXNzb2NpYXRpb25UeXBlJ1xuICAgICAgfCAnQXNzb2NpYXRpb25WYWx1ZSdcbiAgICA+XG4gID47XG5leHBvcnQgY29uc3QgY3JlYXRlVXNlckFzc29jaWF0aW9uID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVVzZXJBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBBc3NvY2lhdGlvbkxpbWl0TWFwOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBc3NvY2lhdGlvbkNsYXNzOiAnVXNlcicsXG4gICAgICAgICAgQXNzb2NpYXRpb25UeXBlOiBwYXJhbXMuQXNzb2NpYXRpb25UeXBlLFxuICAgICAgICAgIEFwcFNjb3BlVHlwZTogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8gJ1Njb3BlZCcgOiAnQW55JyxcbiAgICAgICAgICBBcHBQdWJsaWNLZXlCYXNlNThDaGVjazogcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrID8/ICcnLFxuICAgICAgICAgIEFzc29jaWF0aW9uT3BlcmF0aW9uOiAnQ3JlYXRlJyxcbiAgICAgICAgICBPcENvdW50OiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBhIGJpdCB3ZWlyZCwgYnV0IHdlIGRvbid0IGhhdmUgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgICAgICAgLy8gb3IgQXNzb2NpYXRpb25UeXBlIGluIHRoZSBkZWxldGUgcGFyYW1zLCBzbyB3ZSBqdXN0IGFzayBmb3IgZGVsZXRlXG4gICAgICAgIC8vIHBlcm1pc3Npb24gYXQgdGhlIHNhbWUgdGltZSB0aGUgYXNzb2NpYXRpb24gaXMgY3JlYXRlZC5cbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdVc2VyJyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdEZWxldGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdXNlci1hc3NvY2lhdGlvbnMvY3JlYXRlJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YSA9IChcbiAgcGFyYW1zOiBDcmVhdGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0ZVVzZXJBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hcHBQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkFwcFB1YmxpY0tleUJhc2U1OENoZWNrIHx8ICcnXG4gICk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVHlwZSA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvblZhbHVlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVmFsdWUpO1xuICBtZXRhZGF0YS50YXJnZXRVc2VyUHVibGljS2V5ID0gYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKFxuICAgIHBhcmFtcy5UYXJnZXRVc2VyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0Q3JlYXRlVXNlckFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5UcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVVc2VyQXNzb2NpYXRpb25NZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvYXNzb2NpYXRpb25zLXRyYW5zYWN0aW9ucy1hcGkjZGVsZXRlLXVzZXItYXNzb2NpYXRpb25cbiAqL1xuXG5leHBvcnQgdHlwZSBEZWxldGVVc2VyQXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVVc2VyQXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogRGVsZXRlVXNlckFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3VzZXItYXNzb2NpYXRpb25zL2RlbGV0ZScsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEgPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFEZWxldGVVc2VyQXNzb2NpYXRpb24oKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25JRCA9IGVuY29kZVVURjhUb0J5dGVzKHBhcmFtcy5Bc3NvY2lhdGlvbklEKTtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdERlbGV0ZVVzZXJBc3NvY2lhdGlvblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IERlbGV0ZVVzZXJBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkRGVsZXRlVXNlckFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2Fzc29jaWF0aW9ucy10cmFuc2FjdGlvbnMtYXBpI2NyZWF0ZS1wb3N0LWFzc29jaWF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgfCAnUG9zdEhhc2hIZXgnXG4gICAgICB8ICdUcmFuc2FjdG9yUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgICB8ICdBc3NvY2lhdGlvblR5cGUnXG4gICAgICB8ICdBc3NvY2lhdGlvblZhbHVlJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBjcmVhdGVQb3N0QXNzb2NpYXRpb24gPSBhc3luYyAoXG4gIHBhcmFtczogQ3JlYXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxBc3NvY2lhdGlvblR4blJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVHJhbnNhY3RvclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlUG9zdEFzc29jaWF0aW9uTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIEFzc29jaWF0aW9uTGltaXRNYXA6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFzc29jaWF0aW9uQ2xhc3M6ICdQb3N0JyxcbiAgICAgICAgICBBc3NvY2lhdGlvblR5cGU6IHBhcmFtcy5Bc3NvY2lhdGlvblR5cGUsXG4gICAgICAgICAgQXBwU2NvcGVUeXBlOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPyAnU2NvcGVkJyA6ICdBbnknLFxuICAgICAgICAgIEFwcFB1YmxpY0tleUJhc2U1OENoZWNrOiBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgPz8gJycsXG4gICAgICAgICAgQXNzb2NpYXRpb25PcGVyYXRpb246ICdDcmVhdGUnLFxuICAgICAgICAgIE9wQ291bnQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGEgYml0IHdlaXJkLCBidXQgd2UgZG9uJ3QgaGF2ZSBBcHBQdWJsaWNLZXlCYXNlNThDaGVja1xuICAgICAgICAvLyBvciBBc3NvY2lhdGlvblR5cGUgaW4gdGhlIGRlbGV0ZSBwYXJhbXMsIHNvIHdlIGp1c3QgYXNrIGZvciBkZWxldGVcbiAgICAgICAgLy8gcGVybWlzc2lvbiBhdCB0aGUgc2FtZSB0aW1lIHRoZSBhc3NvY2lhdGlvbiBpcyBjcmVhdGVkLlxuICAgICAgICB7XG4gICAgICAgICAgQXNzb2NpYXRpb25DbGFzczogJ1Bvc3QnLFxuICAgICAgICAgIEFzc29jaWF0aW9uVHlwZTogcGFyYW1zLkFzc29jaWF0aW9uVHlwZSxcbiAgICAgICAgICBBcHBTY29wZVR5cGU6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/ICdTY29wZWQnIDogJ0FueScsXG4gICAgICAgICAgQXBwUHVibGljS2V5QmFzZTU4Q2hlY2s6IHBhcmFtcy5BcHBQdWJsaWNLZXlCYXNlNThDaGVjayA/PyAnJyxcbiAgICAgICAgICBBc3NvY2lhdGlvbk9wZXJhdGlvbjogJ0RlbGV0ZScsXG4gICAgICAgICAgT3BDb3VudDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9jcmVhdGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IENyZWF0ZVBvc3RBc3NvY2lhdGlvblJlcXVlc3RQYXJhbXNcbikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlUG9zdEFzc29jaWF0aW9uKCk7XG4gIG1ldGFkYXRhLmFwcFB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQXBwUHVibGljS2V5QmFzZTU4Q2hlY2sgfHwgJydcbiAgKTtcbiAgbWV0YWRhdGEuYXNzb2NpYXRpb25UeXBlID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uVHlwZSk7XG4gIG1ldGFkYXRhLmFzc29jaWF0aW9uVmFsdWUgPSBlbmNvZGVVVEY4VG9CeXRlcyhwYXJhbXMuQXNzb2NpYXRpb25WYWx1ZSk7XG4gIG1ldGFkYXRhLnBvc3RIYXNoID0gaGV4VG9CeXRlcyhwYXJhbXMuUG9zdEhhc2hIZXgpO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZVBvc3RBc3NvY2lhdGlvbk1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9hc3NvY2lhdGlvbnMtdHJhbnNhY3Rpb25zLWFwaSNkZWxldGUtcG9zdC1hc3NvY2lhdGlvblxuICovXG5leHBvcnQgdHlwZSBEZWxldGVQb3N0QXNzb2NpYXRpb25SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgRGVsZXRlQXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgICAgJ1RyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjaycgfCAnQXNzb2NpYXRpb25JRCdcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBkZWxldGVQb3N0QXNzb2NpYXRpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8QXNzb2NpYXRpb25UeG5SZXNwb25zZT4+ID0+IHtcbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9wb3N0LWFzc29jaWF0aW9ucy9kZWxldGUnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3REZWxldGVQb3N0QXNzb2NpYXRpb25UcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0RGVsZXRlUG9zdEFzc29jaWF0aW9uVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogRGVsZXRlUG9zdEFzc29jaWF0aW9uUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YURlbGV0ZVBvc3RBc3NvY2lhdGlvbigpO1xuICBtZXRhZGF0YS5hc3NvY2lhdGlvbklEID0gZW5jb2RlVVRGOFRvQnl0ZXMocGFyYW1zLkFzc29jaWF0aW9uSUQpO1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlRyYW5zYWN0b3JQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBtZXRhZGF0YSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=

@@ -11,4 +11,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

import { TransactionMetadataBasicTransfer, TransactionMetadataCreatorCoinTransfer, TransactionOutput, bs58PublicKeyToCompressedBytes, identity, } from '../identity';
import { guardTxPermission } from '../identity/permissions-utils';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, isMaybeDeSoPublicKey, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
/**

@@ -110,2 +110,2 @@ * https://docs.deso.org/deso-backend/construct-transactions/financial-transactions-api#send-deso

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9maW5hbmNpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixRQUFRLEdBQ1QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFHckI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsTUFBOEQsRUFDOUQsT0FBMEIsRUFHMUIsRUFBRTs7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDBCQUEwQixFQUNqQyxJQUFJLGdDQUFnQyxFQUFFLEVBQ3RDO1FBQ0UsT0FBTyxFQUFFLG9CQUFvQixpQ0FDeEIsTUFBTTtZQUNULHVFQUF1RTtZQUN2RSx1RUFBdUU7WUFDdkUsa0VBQWtFO1lBQ2xFLHNFQUFzRTtZQUN0RSxxRUFBcUU7WUFDckUseUNBQXlDO1lBQ3pDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQywwQkFBMEIsSUFDL0Q7UUFDRixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0lBRUYsSUFBSSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxnQkFBZ0IsTUFBSyxLQUFLLEVBQUU7UUFDdkMsTUFBTSxpQkFBaUIsQ0FBQztZQUN0QixlQUFlLEVBQ2IsTUFB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QW9CO1FBQ2pELGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtLQUN4QyxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCdXlPclNlbGxDcmVhdG9yQ29pblJlcXVlc3QsXG4gIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgUmVxdWVzdE9wdGlvbnMsXG4gIFNlbmREZVNvUmVxdWVzdCxcbiAgU2VuZERlU29SZXNwb25zZSxcbiAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXNwb25zZSxcbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uT3V0cHV0LFxuICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMsXG4gIGlkZW50aXR5LFxufSBmcm9tICcuLi9pZGVudGl0eSc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4uL2lkZW50aXR5L3Blcm1pc3Npb25zLXV0aWxzJztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgaXNNYXliZURlU29QdWJsaWNLZXksXG4gIHN1bVRyYW5zYWN0aW9uRmVlcyxcbn0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeCwgVHhSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjc2VuZC1kZXNvXG4gKi9cbmV4cG9ydCBjb25zdCBzZW5kRGVzbyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFNlbmREZVNvUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFNlbmREZVNvUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAvLyBOT1RFOiB0aGlzIGlzIGEgYml0IG9mIGFuIG9kZCBoYWNrLCBidXQgYmMgd2UgYXJlIG9ubHkgdXNpbmcgdGhpcyB0b1xuICAgICAgICAvLyBlc3RpbWF0ZSB0aGUgZmVlLCB3ZSBjYW4gb3ZlcndyaXRlIHRoZSByZWNpcGllbnQgdG8gYmUgdGhlIHNlbmRlciB0b1xuICAgICAgICAvLyBlbnN1cmUgdGhlIHZhbHVlIGlzIGEgdmFsaWQgcHVibGljIGtleSB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG9cbiAgICAgICAgLy8gYnl0ZXMuIFRoZSByZWFzb24gd2UgY2Fubm90IG1ha2UgYW4gYXBpIGNhbGwgdG8gZ2V0IHRoZSB0cnVlIHB1YmxpY1xuICAgICAgICAvLyBrZXkgaXMgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSB0aGUgZGVyaXZlZCBrZXkgcmUtYXBwcm92YWwgcG9wdXAgdG9cbiAgICAgICAgLy8gZ2V0IGJsb2NrZWQgYnkgYnJvd3NlciBwb3B1cCBibG9ja2Vycy5cbiAgICAgICAgUmVjaXBpZW50UHVibGljS2V5T3JVc2VybmFtZTogcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgICAgfSksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5BbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBCQVNJQ19UUkFOU0ZFUjpcbiAgICAgICAgICBvcHRpb25zPy50eExpbWl0Q291bnQgPz9cbiAgICAgICAgICBpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFxuICAgICAgICAgICAgPy5CQVNJQ19UUkFOU0ZFUiA/P1xuICAgICAgICAgIDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9zZW5kLWRlc28nLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RTZW5kRGVTb1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkU2VuZERlU29PdXRwdXRzID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8U2VuZERlU29SZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uT3V0cHV0ID0gbmV3IFRyYW5zYWN0aW9uT3V0cHV0KCk7XG4gIHRyYW5zYWN0aW9uT3V0cHV0LmFtb3VudE5hbm9zID0gcGFyYW1zLkFtb3VudE5hbm9zO1xuICB0cmFuc2FjdGlvbk91dHB1dC5wdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgLy8gRklYTUU6IHRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcmVjaXBpZW50IGlzIGEgdXNlcm5hbWUuIFdlIG5lZWRcbiAgICAvLyB0byBlaXRoZXIgZmV0Y2ggdGhlIHB1YmxpYyBrZXkgYW5kIG92ZXJ3cml0ZSB0aGUgdXNlcm5hbWUgd2l0aCBpdCBvclxuICAgIC8vIHRocm93IGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIGNvbnN1bWVycyBleHBsYWluaW5nIHRoYXQgd2UgcmVxdWlyZSB0aGVcbiAgICAvLyBwdWJsaWMga2V5IGluc3RlYWQgb2YgdGhlIHVzZXJuYW1lLlxuICAgIHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lXG4gICk7XG4gIHJldHVybiBbdHJhbnNhY3Rpb25PdXRwdXRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFNlbmREZVNvVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxTZW5kRGVTb1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdtdXN0IHByb3ZpZGUgcHVibGljIGtleSwgbm90IHVzZXIgbmFtZSBmb3IgbG9jYWwgY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHBhcmFtcyksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8vIFRPRE86IEJVWSBjcmVhdG9yIGNvaW5zIGlzIGhhcmQuIE5lZWQgdG8gbW92ZSBzb21lXG4vLyBiaWcgZmxvYXQgbWF0aCBpbnRvIGpzLlxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIEJ1eUNyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxcbiAgICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCxcbiAgICAgICdDcmVhdG9yQ29pblRvU2VsbE5hbm9zJyB8ICdPcGVyYXRpb25UeXBlJ1xuICAgID4sXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdEZVNvVG9TZWxsTmFub3MnXG4gID5cbj47XG5leHBvcnQgY29uc3QgYnV5Q3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogQnV5Q3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgLy8gVE9ETzogQWRkIHR4IHBlcm1pc3Npb24gY2hlY2sgb25jZSBsb2NhbCB0eCBjb25zdHJ1Y3Rpb24gaXMgaW1wbGVtZW50ZWQuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnV5JyxcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbi8vIFRPRE86IFNFTEwgY3JlYXRvciBjb2lucyBpcyBoYXJkLiBOZWVkIHRvIG1vdmUgc29tZVxuLy8gYmlnIGZsb2F0IG1hdGggaW50byBqcy5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2ZpbmFuY2lhbC10cmFuc2FjdGlvbnMtYXBpI2J1eS1vci1zZWxsLWNyZWF0b3ItY29pblxuICovXG5cbmV4cG9ydCB0eXBlIFNlbGxDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCwgJ0Rlc29Ub1NlbGxOYW5vcycgfCAnT3BlcmF0aW9uVHlwZSc+LFxuICAgICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1NlbGxOYW5vcydcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBzZWxsQ3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogU2VsbENyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIC8vIFRPRE86IEFkZCB0eCBwZXJtaXNzaW9uIGNoZWNrIG9uY2UgbG9jYWwgdHggY29uc3RydWN0aW9uIGlzIGltcGxlbWVudGVkLlxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2J1eS1vci1zZWxsLWNyZWF0b3ItY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3NlbGwnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gICAgICB8ICdTZW5kZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ1JlY2VpdmVyVXNlcm5hbWVPclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyQ3JlYXRvckNvaW4gPSBhc3luYyAoXG4gIHBhcmFtczogVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VHJhbnNmZXJDcmVhdG9yQ29pblJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tdOiB7XG4gICAgICAgICAgdHJhbnNmZXI6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdHJhbnNmZXItY3JlYXRvci1jb2luJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJDcmVhdG9yQ29pbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuY3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MgPSBwYXJhbXMuQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3M7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5yZWNlaXZlclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUmVjZWl2ZXJVc2VybmFtZU9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNlaXZlclVzZXJuYW1lT3JQdWJsaWNLZXlCYXNlNThDaGVjaykpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAnbXVzdCBwcm92aWRlIHB1YmxpYyBrZXksIG5vdCB1c2VyIG5hbWUgZm9yIGxvY2FsIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9ucy9maW5hbmNpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUEsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixRQUFRLEdBQ1QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrQkFBa0IsR0FDbkIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLE1BQThELEVBQzlELE9BQTBCLEVBRzFCLEVBQUU7O0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQywwQkFBMEIsRUFDakMsSUFBSSxnQ0FBZ0MsRUFBRSxFQUN0QztRQUNFLE9BQU8sRUFBRSxvQkFBb0IsaUNBQ3hCLE1BQU07WUFDVCx1RUFBdUU7WUFDdkUsdUVBQXVFO1lBQ3ZFLGtFQUFrRTtZQUNsRSxzRUFBc0U7WUFDdEUscUVBQXFFO1lBQ3JFLHlDQUF5QztZQUN6Qyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsMEJBQTBCLElBQy9EO1FBQ0YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLE1BQU0s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QjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7S0FDeEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXF1ZXN0LFxuICBCdXlPclNlbGxDcmVhdG9yQ29pblJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBTZW5kRGVTb1JlcXVlc3QsXG4gIFNlbmREZVNvUmVzcG9uc2UsXG4gIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0LFxuICBUcmFuc2ZlckNyZWF0b3JDb2luUmVzcG9uc2UsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG59IGZyb20gJy4uL2JhY2tlbmQtdHlwZXMnO1xuaW1wb3J0IHsgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkcyB9IGZyb20gJy4uL2RhdGEnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUJhc2ljVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFDcmVhdG9yQ29pblRyYW5zZmVyLFxuICBUcmFuc2FjdGlvbk91dHB1dCxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBpZGVudGl0eSxcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBpc01heWJlRGVTb1B1YmxpY0tleSxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ3VhcmRUeFBlcm1pc3Npb24gfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjc2VuZC1kZXNvXG4gKi9cbmV4cG9ydCBjb25zdCBzZW5kRGVzbyA9IGFzeW5jIChcbiAgcGFyYW1zOiBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFNlbmREZVNvUmVxdWVzdD4sXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFNlbmREZVNvUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAvLyBOT1RFOiB0aGlzIGlzIGEgYml0IG9mIGFuIG9kZCBoYWNrLCBidXQgYmMgd2UgYXJlIG9ubHkgdXNpbmcgdGhpcyB0b1xuICAgICAgICAvLyBlc3RpbWF0ZSB0aGUgZmVlLCB3ZSBjYW4gb3ZlcndyaXRlIHRoZSByZWNpcGllbnQgdG8gYmUgdGhlIHNlbmRlciB0b1xuICAgICAgICAvLyBlbnN1cmUgdGhlIHZhbHVlIGlzIGEgdmFsaWQgcHVibGljIGtleSB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG9cbiAgICAgICAgLy8gYnl0ZXMuIFRoZSByZWFzb24gd2UgY2Fubm90IG1ha2UgYW4gYXBpIGNhbGwgdG8gZ2V0IHRoZSB0cnVlIHB1YmxpY1xuICAgICAgICAvLyBrZXkgaXMgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSB0aGUgZGVyaXZlZCBrZXkgcmUtYXBwcm92YWwgcG9wdXAgdG9cbiAgICAgICAgLy8gZ2V0IGJsb2NrZWQgYnkgYnJvd3NlciBwb3B1cCBibG9ja2Vycy5cbiAgICAgICAgUmVjaXBpZW50UHVibGljS2V5T3JVc2VybmFtZTogcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgICAgfSksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5BbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBCQVNJQ19UUkFOU0ZFUjpcbiAgICAgICAgICBvcHRpb25zPy50eExpbWl0Q291bnQgPz9cbiAgICAgICAgICBpZGVudGl0eS50cmFuc2FjdGlvblNwZW5kaW5nTGltaXRPcHRpb25zLlRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcFxuICAgICAgICAgICAgPy5CQVNJQ19UUkFOU0ZFUiA/P1xuICAgICAgICAgIDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9zZW5kLWRlc28nLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RTZW5kRGVTb1RyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkU2VuZERlU29PdXRwdXRzID0gKFxuICBwYXJhbXM6IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8U2VuZERlU29SZXF1ZXN0PlxuKSA9PiB7XG4gIGNvbnN0IHRyYW5zYWN0aW9uT3V0cHV0ID0gbmV3IFRyYW5zYWN0aW9uT3V0cHV0KCk7XG4gIHRyYW5zYWN0aW9uT3V0cHV0LmFtb3VudE5hbm9zID0gcGFyYW1zLkFtb3VudE5hbm9zO1xuICB0cmFuc2FjdGlvbk91dHB1dC5wdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgLy8gRklYTUU6IHRoaXMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcmVjaXBpZW50IGlzIGEgdXNlcm5hbWUuIFdlIG5lZWRcbiAgICAvLyB0byBlaXRoZXIgZmV0Y2ggdGhlIHB1YmxpYyBrZXkgYW5kIG92ZXJ3cml0ZSB0aGUgdXNlcm5hbWUgd2l0aCBpdCBvclxuICAgIC8vIHRocm93IGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIGNvbnN1bWVycyBleHBsYWluaW5nIHRoYXQgd2UgcmVxdWlyZSB0aGVcbiAgICAvLyBwdWJsaWMga2V5IGluc3RlYWQgb2YgdGhlIHVzZXJuYW1lLlxuICAgIHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lXG4gICk7XG4gIHJldHVybiBbdHJhbnNhY3Rpb25PdXRwdXRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnN0cnVjdFNlbmREZVNvVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxTZW5kRGVTb1JlcXVlc3Q+XG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNpcGllbnRQdWJsaWNLZXlPclVzZXJuYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdtdXN0IHByb3ZpZGUgcHVibGljIGtleSwgbm90IHVzZXIgbmFtZSBmb3IgbG9jYWwgY29uc3RydWN0aW9uJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQmFzaWNUcmFuc2ZlcigpLFxuICAgIHtcbiAgICAgIE91dHB1dHM6IGJ1aWxkU2VuZERlU29PdXRwdXRzKHBhcmFtcyksXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8vIFRPRE86IEJVWSBjcmVhdG9yIGNvaW5zIGlzIGhhcmQuIE5lZWQgdG8gbW92ZSBzb21lXG4vLyBiaWcgZmxvYXQgbWF0aCBpbnRvIGpzLlxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIEJ1eUNyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgT21pdDxcbiAgICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCxcbiAgICAgICdDcmVhdG9yQ29pblRvU2VsbE5hbm9zJyB8ICdPcGVyYXRpb25UeXBlJ1xuICAgID4sXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdEZVNvVG9TZWxsTmFub3MnXG4gID5cbj47XG5leHBvcnQgY29uc3QgYnV5Q3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogQnV5Q3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgQnV5T3JTZWxsQ3JlYXRvckNvaW5SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgLy8gVE9ETzogQWRkIHR4IHBlcm1pc3Npb24gY2hlY2sgb25jZSBsb2NhbCB0eCBjb25zdHJ1Y3Rpb24gaXMgaW1wbGVtZW50ZWQuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KFxuICAgICdhcGkvdjAvYnV5LW9yLXNlbGwtY3JlYXRvci1jb2luJyxcbiAgICB7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBPcGVyYXRpb25UeXBlOiAnYnV5JyxcbiAgICB9LFxuICAgIG9wdGlvbnNcbiAgKTtcbn07XG5cbi8vIFRPRE86IFNFTEwgY3JlYXRvciBjb2lucyBpcyBoYXJkLiBOZWVkIHRvIG1vdmUgc29tZVxuLy8gYmlnIGZsb2F0IG1hdGggaW50byBqcy5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL2ZpbmFuY2lhbC10cmFuc2FjdGlvbnMtYXBpI2J1eS1vci1zZWxsLWNyZWF0b3ItY29pblxuICovXG5cbmV4cG9ydCB0eXBlIFNlbGxDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBPbWl0PEJ1eU9yU2VsbENyZWF0b3JDb2luUmVxdWVzdCwgJ0Rlc29Ub1NlbGxOYW5vcycgfCAnT3BlcmF0aW9uVHlwZSc+LFxuICAgICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1NlbGxOYW5vcydcbiAgICA+XG4gID47XG5cbmV4cG9ydCBjb25zdCBzZWxsQ3JlYXRvckNvaW4gPSAoXG4gIHBhcmFtczogU2VsbENyZWF0b3JDb2luUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEJ1eU9yU2VsbENyZWF0b3JDb2luUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIC8vIFRPRE86IEFkZCB0eCBwZXJtaXNzaW9uIGNoZWNrIG9uY2UgbG9jYWwgdHggY29uc3RydWN0aW9uIGlzIGltcGxlbWVudGVkLlxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdChcbiAgICAnYXBpL3YwL2J1eS1vci1zZWxsLWNyZWF0b3ItY29pbicsXG4gICAge1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgT3BlcmF0aW9uVHlwZTogJ3NlbGwnLFxuICAgIH0sXG4gICAgb3B0aW9uc1xuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvZmluYW5jaWFsLXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItY3JlYXRvci1jb2luXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zID1cbiAgVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgICAgVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3QsXG4gICAgICB8ICdTZW5kZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ0NyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICAgIHwgJ1JlY2VpdmVyVXNlcm5hbWVPclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgICAgfCAnQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MnXG4gICAgPlxuICA+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyQ3JlYXRvckNvaW4gPSBhc3luYyAoXG4gIHBhcmFtczogVHJhbnNmZXJDcmVhdG9yQ29pblJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VHJhbnNmZXJDcmVhdG9yQ29pblJlc3BvbnNlPj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIENyZWF0b3JDb2luT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5DcmVhdG9yUHVibGljS2V5QmFzZTU4Q2hlY2tdOiB7XG4gICAgICAgICAgdHJhbnNmZXI6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvdHJhbnNmZXItY3JlYXRvci1jb2luJywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJDcmVhdG9yQ29pbk1ldGFkYXRhID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YUNyZWF0b3JDb2luVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuY3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3MgPSBwYXJhbXMuQ3JlYXRvckNvaW5Ub1RyYW5zZmVyTmFub3M7XG4gIG1ldGFkYXRhLnByb2ZpbGVQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLkNyZWF0b3JQdWJsaWNLZXlCYXNlNThDaGVja1xuICApO1xuICBtZXRhZGF0YS5yZWNlaXZlclB1YmxpY0tleSA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuUmVjZWl2ZXJVc2VybmFtZU9yUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJDcmVhdG9yQ29pblRyYW5zYWN0aW9uID0gKFxuICBwYXJhbXM6IFRyYW5zZmVyQ3JlYXRvckNvaW5SZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICBpZiAoIWlzTWF5YmVEZVNvUHVibGljS2V5KHBhcmFtcy5SZWNlaXZlclVzZXJuYW1lT3JQdWJsaWNLZXlCYXNlNThDaGVjaykpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAnbXVzdCBwcm92aWRlIHB1YmxpYyBrZXksIG5vdCB1c2VyIG5hbWUgZm9yIGxvY2FsIGNvbnN0cnVjdGlvbidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuU2VuZGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRUcmFuc2ZlckNyZWF0b3JDb2luTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG4iXX0=

@@ -12,4 +12,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

import { TransactionExtraDataKV, TransactionMetadataAcceptNFTBid, TransactionMetadataAcceptNFTTransfer, TransactionMetadataBurnNFT, TransactionMetadataCreateNFT, TransactionMetadataNFTBid, TransactionMetadataNFTTransfer, TransactionMetadataUpdateNFT, bs58PublicKeyToCompressedBytes, concatUint8Arrays, encodeUTF8ToBytes, uvarint64ToBuf, } from '../identity';
import { guardTxPermission } from '../identity/permissions-utils';
import { constructBalanceModelTx, getTxWithFeeNanos, handleSignAndSubmit, sumTransactionFees, } from '../internal';
import { guardTxPermission } from './utils';
export const createNFT = (params, options) => __awaiter(void 0, void 0, void 0, function* () {

@@ -313,2 +313,2 @@ var _a;

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvbmZ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFvQmpELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQywwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBa0JyQixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsTUFBOEIsRUFDOUIsT0FBMEIsRUFHMUIsRUFBRTs7SUFDRixNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FDakMsTUFBTSxDQUFDLDJCQUEyQixFQUNsQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsRUFDOUI7UUFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDM0Isb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7UUFDdkMscUJBQXFCLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxDQUFDO0tBQzFELENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1FBQ3ZDLE1BQU0saUJBQWlCLENBQUM7WUFDdEIsZUFBZSxFQUNiLFNBQVMsQ0FB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cm9tICdAbm9ibGUvaGFzaGVzL3V0aWxzJztcbmltcG9ydCB7XG4gIEFjY2VwdE5GVEJpZFJlcXVlc3QsXG4gIEFjY2VwdE5GVEJpZFJlc3BvbnNlLFxuICBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3QsXG4gIEFjY2VwdE5GVFRyYW5zZmVyUmVzcG9uc2UsXG4gIEJ1cm5ORlRSZXF1ZXN0LFxuICBCdXJuTkZUUmVzcG9uc2UsXG4gIENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSxcbiAgQ3JlYXRlTkZUQmlkUmVxdWVzdCxcbiAgQ3JlYXRlTkZUQmlkUmVzcG9uc2UsXG4gIENyZWF0ZU5GVFJlcXVlc3QsXG4gIENyZWF0ZU5GVFJlc3BvbnNlLFxuICBUcmFuc2Zlck5GVFJlcXVlc3QsXG4gIFRyYW5zZmVyTkZUUmVzcG9uc2UsXG4gIFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGEsXG4gIFVwZGF0ZU5GVFJlcXVlc3QsXG4gIFVwZGF0ZU5GVFJlc3BvbnNlLFxufSBmcm9tICcuLi9iYWNrZW5kLXR5cGVzJztcbmltcG9ydCB7IFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHMgfSBmcm9tICcuLi9kYXRhJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRUcmFuc2ZlcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YUJ1cm5ORlQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFDcmVhdGVORlQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFORlRCaWQsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFORlRUcmFuc2ZlcixcbiAgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZU5GVCxcbiAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzLFxuICBjb25jYXRVaW50OEFycmF5cyxcbiAgZW5jb2RlVVRGOFRvQnl0ZXMsXG4gIHV2YXJpbnQ2NFRvQnVmLFxufSBmcm9tICcuLi9pZGVudGl0eSc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4uL2lkZW50aXR5L3Blcm1pc3Npb25zLXV0aWxzJztcbmltcG9ydCB7XG4gIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4LFxuICBnZXRUeFdpdGhGZWVOYW5vcyxcbiAgaGFuZGxlU2lnbkFuZFN1Ym1pdCxcbiAgc3VtVHJhbnNhY3Rpb25GZWVzLFxufSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4LCBUeFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLW5mdFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRSZXF1ZXN0LFxuICAgIHwgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdOdW1Db3BpZXMnXG4gICAgfCAnTkZUUm95YWx0eVRvQ29pbkJhc2lzUG9pbnRzJ1xuICAgIHwgJ05GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cydcbiAgICB8ICdIYXNVbmxvY2thYmxlJ1xuICAgIHwgJ0lzRm9yU2FsZSdcbiAgPlxuPjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5GVCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBDUkVBVEVfTkZUOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1uZnQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZUKCk7XG4gIG1ldGFkYXRhLmhhc1VubG9ja2FibGUgPSBwYXJhbXMuSGFzVW5sb2NrYWJsZTtcbiAgbWV0YWRhdGEuaXNGb3JTYWxlID0gcGFyYW1zLklzRm9yU2FsZTtcbiAgbWV0YWRhdGEubWluQmlkQW1vdW50TmFub3MgPSBwYXJhbXMuTWluQmlkQW1vdW50TmFub3MgfHwgMDtcbiAgbWV0YWRhdGEubmZ0UG9zdEhhc2ggPSBoZXhUb0J5dGVzKHBhcmFtcy5ORlRQb3N0SGFzaEhleCk7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NvaW5CYXNpc1BvaW50cyA9IHBhcmFtcy5ORlRSb3lhbHR5VG9Db2luQmFzaXNQb2ludHM7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cyA9XG4gICAgcGFyYW1zLk5GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cztcbiAgbWV0YWRhdGEubnVtQ29waWVzID0gcGFyYW1zLk51bUNvcGllcztcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyA9IChwYXJhbXM6IENyZWF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWW10gPSBbXTtcbiAgaWYgKHBhcmFtcy5Jc0J1eU5vdyAmJiBwYXJhbXMuQnV5Tm93UHJpY2VOYW5vcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0J1eU5vd1ByaWNlTmFub3MnKSxcbiAgICAgICAgdXZhcmludDY0VG9CdWYocGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgcGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwICYmXG4gICAgT2JqZWN0LmtleXMocGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwKS5sZW5ndGhcbiAgKSB7XG4gICAgY29uc3Qgcm95YWx0eU1hcCA9IHBhcmFtcy5BZGRpdGlvbmFsREVTT1JveWFsdGllc01hcDtcbiAgICBsZXQgYnVmID0gdXZhcmludDY0VG9CdWYoT2JqZWN0LmtleXMocm95YWx0eU1hcCkubGVuZ3RoKTtcbiAgICBPYmplY3Qua2V5cyhyb3lhbHR5TWFwKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgIC5mb3JFYWNoKChwdWJsaWNLZXkpID0+IHtcbiAgICAgICAgYnVmID0gY29uY2F0VWludDhBcnJheXMoW1xuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMocHVibGljS2V5KSxcbiAgICAgICAgICB1dmFyaW50NjRUb0J1Zihyb3lhbHR5TWFwW3B1YmxpY0tleV0pLFxuICAgICAgICBdKTtcbiAgICAgIH0pO1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoZW5jb2RlVVRGOFRvQnl0ZXMoJ0RFU09Sb3lhbHRpZXNNYXAnKSwgYnVmKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCAmJlxuICAgIE9iamVjdC5rZXlzKHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCkubGVuZ3RoXG4gICkge1xuICAgIGNvbnN0IHJveWFsdHlNYXAgPSBwYXJhbXMuQWRkaXRpb25hbENvaW5Sb3lhbHRpZXNNYXA7XG4gICAgbGV0IGJ1ZiA9IHV2YXJpbnQ2NFRvQnVmKE9iamVjdC5rZXlzKHJveWFsdHlNYXApLmxlbmd0aCk7XG4gICAgT2JqZWN0LmtleXMocm95YWx0eU1hcClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgICAuZm9yRWFjaCgocHVibGljS2V5KSA9PiB7XG4gICAgICAgIGJ1ZiA9IGNvbmNhdFVpbnQ4QXJyYXlzKFtcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKHB1YmxpY0tleSksXG4gICAgICAgICAgdXZhcmludDY0VG9CdWYocm95YWx0eU1hcFtwdWJsaWNLZXldKSxcbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKGVuY29kZVVURjhUb0J5dGVzKCdDb2luUm95YWx0aWVzTWFwJyksIGJ1ZilcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSN1cGRhdGUtbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMgPSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwZGF0ZU5GVFJlcXVlc3QsXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdNaW5CaWRBbW91bnROYW5vcydcbiAgPlxuPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVORlQgPSBhc3luYyAoXG4gIHBhcmFtczogVXBkYXRlTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VXBkYXRlTkZUUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgVVBEQVRFX05GVDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91cGRhdGUtbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VXBkYXRlTkZUVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRNZXRhZGF0YSA9IChwYXJhbXM6IFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZU5GVCgpO1xuICBtZXRhZGF0YS5pc0ZvclNhbGUgPSAhIXBhcmFtcy5Jc0ZvclNhbGU7XG4gIG1ldGFkYXRhLm1pbkJpZEFtb3VudE5hbm9zID0gcGFyYW1zLk1pbkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMgPSAocGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuSXNCdXlOb3cgJiYgcGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdCdXlOb3dQcmljZU5hbm9zJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5CdXlOb3dQcmljZU5hbm9zKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtbmZ0LWJpZFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRCaWRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRCaWRSZXF1ZXN0LFxuICAgIHwgJ0JpZEFtb3VudE5hbm9zJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID5cbj47XG5leHBvcnQgY29uc3QgY3JlYXRlTkZUQmlkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU5GVEJpZFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIENyZWF0ZU5GVEJpZFJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUQmlkTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5CaWRBbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIE5GVE9wZXJhdGlvbkxpbWl0TWFwOiB7XG4gICAgICAgIFtwYXJhbXMuTkZUUG9zdEhhc2hIZXhdOiB7XG4gICAgICAgICAgW3BhcmFtcy5TZXJpYWxOdW1iZXJdOiB7XG4gICAgICAgICAgICBuZnRfYmlkOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvY3JlYXRlLW5mdC1iaWQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RORlRCaWRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVEJpZE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkKCk7XG4gIG1ldGFkYXRhLmJpZEFtb3VudE5hbm9zID0gcGFyYW1zLkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC1iaWRcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgQWNjZXB0TkZUQmlkUmVxdWVzdCxcbiAgICB8ICdCaWRBbW91bnROYW5vcydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdTZXJpYWxOdW1iZXInXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0JpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGFjY2VwdE5GVEJpZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxcbiAgICBBY2NlcHRORlRCaWRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVEJpZE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJhbXMuQmlkQW1vdW50TmFub3MgK1xuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgK1xuICAgICAgICBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF9iaWQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9hY2NlcHQtbmZ0LWJpZCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFjY2VwdE5GVEJpZFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWNjZXB0TkZUQmlkTWV0YWRhdGEgPSAocGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQoKTtcbiAgbWV0YWRhdGEuYmlkQW1vdW50TmFub3MgPSBwYXJhbXMuQmlkQW1vdW50TmFub3M7XG4gIG1ldGFkYXRhLmJpZGRlcklucHV0cyA9IFtdO1xuICAvLyBUT0RPOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhleSd2ZSBoYWQgdGhlaXIgaWRlbnRpdHkgc3dhcHBlZC5cbiAgbWV0YWRhdGEuYmlkZGVyUEtJRCA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICAgIHwgJ1NlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ1JlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnTkZUUG9zdEhhc2hIZXgnXG4gICAgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyTkZUID0gYXN5bmMgKFxuICBwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVHJhbnNmZXJORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5ORlRQb3N0SGFzaEhleF06IHtcbiAgICAgICAgICBbcGFyYW1zLlNlcmlhbE51bWJlcl06IHtcbiAgICAgICAgICAgIHRyYW5zZmVyOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3RyYW5zZmVyLW5mdCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyTkZULFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YSA9IChwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJORlQgPSAoXG4gIHBhcmFtczogVHJhbnNmZXJORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC10cmFuc2ZlclxuICovXG5leHBvcnQgdHlwZSBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3QsXG4gICAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhY2NlcHRORlRUcmFuc2ZlciA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEFjY2VwdE5GVFRyYW5zZmVyUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF90cmFuc2Zlcjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FjY2VwdC1uZnQtdHJhbnNmZXInLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RBY2NlcHRORlRUcmFuc2ZlcixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IEFjY2VwdE5GVFRyYW5zZmVyUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRUcmFuc2ZlcigpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUVHJhbnNmZXIgPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVFRyYW5zZmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL25mdC10cmFuc2FjdGlvbnMtYXBpI2J1cm4tbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIEJ1cm5ORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBCdXJuTkZUUmVxdWVzdCxcbiAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGJ1cm5ORlQgPSBhc3luYyAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEJ1cm5ORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYnVybjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2J1cm4tbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRCdXJuTkZUTWV0YWRhdGEgPSAocGFyYW1zOiBCdXJuTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQnVybk5GVCgpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24gPSAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbnMvbmZ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFvQmpELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNwQywwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQWlCNUMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQ3ZCLE1BQThCLEVBQzlCLE9BQTBCLEVBRzFCLEVBQUU7O0lBQ0YsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQ2pDLE1BQU0sQ0FBQywyQkFBMkIsRUFDbEMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEVBQzlCO1FBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7UUFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQ3ZDLHFCQUFxQixFQUFFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztLQUMxRCxDQUNGLENBQUM7SUFFRixJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGdCQUFnQixNQUFLLEtBQUssRUFBRTtRQUN2QyxNQUFNLGlCQUFpQixDQUFDO1lBQ3RCLGVBQWUsRUFDYixTQUFTLENBQUMs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bSAnQG5vYmxlL2hhc2hlcy91dGlscyc7XG5pbXBvcnQge1xuICBBY2NlcHRORlRCaWRSZXF1ZXN0LFxuICBBY2NlcHRORlRCaWRSZXNwb25zZSxcbiAgQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0LFxuICBBY2NlcHRORlRUcmFuc2ZlclJlc3BvbnNlLFxuICBCdXJuTkZUUmVxdWVzdCxcbiAgQnVybk5GVFJlc3BvbnNlLFxuICBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIENyZWF0ZU5GVEJpZFJlcXVlc3QsXG4gIENyZWF0ZU5GVEJpZFJlc3BvbnNlLFxuICBDcmVhdGVORlRSZXF1ZXN0LFxuICBDcmVhdGVORlRSZXNwb25zZSxcbiAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICBUcmFuc2Zlck5GVFJlc3BvbnNlLFxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhLFxuICBVcGRhdGVORlRSZXF1ZXN0LFxuICBVcGRhdGVORlRSZXNwb25zZSxcbn0gZnJvbSAnLi4vYmFja2VuZC10eXBlcyc7XG5pbXBvcnQgeyBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQWNjZXB0TkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFCdXJuTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZULFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkLFxuICBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIsXG4gIFRyYW5zYWN0aW9uTWV0YWRhdGFVcGRhdGVORlQsXG4gIGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyxcbiAgY29uY2F0VWludDhBcnJheXMsXG4gIGVuY29kZVVURjhUb0J5dGVzLFxuICB1dmFyaW50NjRUb0J1Zixcbn0gZnJvbSAnLi4vaWRlbnRpdHknO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0QmFsYW5jZU1vZGVsVHgsXG4gIGdldFR4V2l0aEZlZU5hbm9zLFxuICBoYW5kbGVTaWduQW5kU3VibWl0LFxuICBzdW1UcmFuc2FjdGlvbkZlZXMsXG59IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHgsIFR4UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBndWFyZFR4UGVybWlzc2lvbiB9IGZyb20gJy4vdXRpbHMnO1xuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjY3JlYXRlLW5mdFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRSZXF1ZXN0LFxuICAgIHwgJ1VwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjaydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdOdW1Db3BpZXMnXG4gICAgfCAnTkZUUm95YWx0eVRvQ29pbkJhc2lzUG9pbnRzJ1xuICAgIHwgJ05GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cydcbiAgICB8ICdIYXNVbmxvY2thYmxlJ1xuICAgIHwgJ0lzRm9yU2FsZSdcbiAgPlxuPjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5GVCA9IGFzeW5jIChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxDcmVhdGVORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIFRyYW5zYWN0aW9uQ291bnRMaW1pdE1hcDoge1xuICAgICAgICBDUkVBVEVfTkZUOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2NyZWF0ZS1uZnQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQ3JlYXRlTkZUKCk7XG4gIG1ldGFkYXRhLmhhc1VubG9ja2FibGUgPSBwYXJhbXMuSGFzVW5sb2NrYWJsZTtcbiAgbWV0YWRhdGEuaXNGb3JTYWxlID0gcGFyYW1zLklzRm9yU2FsZTtcbiAgbWV0YWRhdGEubWluQmlkQW1vdW50TmFub3MgPSBwYXJhbXMuTWluQmlkQW1vdW50TmFub3MgfHwgMDtcbiAgbWV0YWRhdGEubmZ0UG9zdEhhc2ggPSBoZXhUb0J5dGVzKHBhcmFtcy5ORlRQb3N0SGFzaEhleCk7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NvaW5CYXNpc1BvaW50cyA9IHBhcmFtcy5ORlRSb3lhbHR5VG9Db2luQmFzaXNQb2ludHM7XG4gIG1ldGFkYXRhLm5mdFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cyA9XG4gICAgcGFyYW1zLk5GVFJveWFsdHlUb0NyZWF0b3JCYXNpc1BvaW50cztcbiAgbWV0YWRhdGEubnVtQ29waWVzID0gcGFyYW1zLk51bUNvcGllcztcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyA9IChwYXJhbXM6IENyZWF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWW10gPSBbXTtcbiAgaWYgKHBhcmFtcy5Jc0J1eU5vdyAmJiBwYXJhbXMuQnV5Tm93UHJpY2VOYW5vcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc2Vuc3VzRXh0cmFEYXRhS1ZzLnB1c2goXG4gICAgICBuZXcgVHJhbnNhY3Rpb25FeHRyYURhdGFLVihcbiAgICAgICAgZW5jb2RlVVRGOFRvQnl0ZXMoJ0J1eU5vd1ByaWNlTmFub3MnKSxcbiAgICAgICAgdXZhcmludDY0VG9CdWYocGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgcGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwICYmXG4gICAgT2JqZWN0LmtleXMocGFyYW1zLkFkZGl0aW9uYWxERVNPUm95YWx0aWVzTWFwKS5sZW5ndGhcbiAgKSB7XG4gICAgY29uc3Qgcm95YWx0eU1hcCA9IHBhcmFtcy5BZGRpdGlvbmFsREVTT1JveWFsdGllc01hcDtcbiAgICBsZXQgYnVmID0gdXZhcmludDY0VG9CdWYoT2JqZWN0LmtleXMocm95YWx0eU1hcCkubGVuZ3RoKTtcbiAgICBPYmplY3Qua2V5cyhyb3lhbHR5TWFwKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSlcbiAgICAgIC5mb3JFYWNoKChwdWJsaWNLZXkpID0+IHtcbiAgICAgICAgYnVmID0gY29uY2F0VWludDhBcnJheXMoW1xuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMocHVibGljS2V5KSxcbiAgICAgICAgICB1dmFyaW50NjRUb0J1Zihyb3lhbHR5TWFwW3B1YmxpY0tleV0pLFxuICAgICAgICBdKTtcbiAgICAgIH0pO1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoZW5jb2RlVVRGOFRvQnl0ZXMoJ0RFU09Sb3lhbHRpZXNNYXAnKSwgYnVmKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCAmJlxuICAgIE9iamVjdC5rZXlzKHBhcmFtcy5BZGRpdGlvbmFsQ29pblJveWFsdGllc01hcCkubGVuZ3RoXG4gICkge1xuICAgIGNvbnN0IHJveWFsdHlNYXAgPSBwYXJhbXMuQWRkaXRpb25hbENvaW5Sb3lhbHRpZXNNYXA7XG4gICAgbGV0IGJ1ZiA9IHV2YXJpbnQ2NFRvQnVmKE9iamVjdC5rZXlzKHJveWFsdHlNYXApLmxlbmd0aCk7XG4gICAgT2JqZWN0LmtleXMocm95YWx0eU1hcClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgICAuZm9yRWFjaCgocHVibGljS2V5KSA9PiB7XG4gICAgICAgIGJ1ZiA9IGNvbmNhdFVpbnQ4QXJyYXlzKFtcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgYnM1OFB1YmxpY0tleVRvQ29tcHJlc3NlZEJ5dGVzKHB1YmxpY0tleSksXG4gICAgICAgICAgdXZhcmludDY0VG9CdWYocm95YWx0eU1hcFtwdWJsaWNLZXldKSxcbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgICBjb25zZW5zdXNFeHRyYURhdGFLVnMucHVzaChcbiAgICAgIG5ldyBUcmFuc2FjdGlvbkV4dHJhRGF0YUtWKGVuY29kZVVURjhUb0J5dGVzKCdDb2luUm95YWx0aWVzTWFwJyksIGJ1ZilcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RDcmVhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBDcmVhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZENyZWF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgQ29uc2Vuc3VzRXh0cmFEYXRhS1ZzOiBidWlsZENyZWF0ZU5GVENvbnNlbnN1c0tWcyhwYXJhbXMpLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSN1cGRhdGUtbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMgPSBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICBQYXJ0aWFsV2l0aFJlcXVpcmVkRmllbGRzPFxuICAgIFVwZGF0ZU5GVFJlcXVlc3QsXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdNaW5CaWRBbW91bnROYW5vcydcbiAgPlxuPjtcbmV4cG9ydCBjb25zdCB1cGRhdGVORlQgPSBhc3luYyAoXG4gIHBhcmFtczogVXBkYXRlTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8VXBkYXRlTkZUUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBUcmFuc2FjdGlvbkNvdW50TGltaXRNYXA6IHtcbiAgICAgICAgVVBEQVRFX05GVDogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC91cGRhdGUtbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0VXBkYXRlTkZUVHJhbnNhY3Rpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRNZXRhZGF0YSA9IChwYXJhbXM6IFVwZGF0ZU5GVFJlcXVlc3RQYXJhbXMpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBuZXcgVHJhbnNhY3Rpb25NZXRhZGF0YVVwZGF0ZU5GVCgpO1xuICBtZXRhZGF0YS5pc0ZvclNhbGUgPSAhIXBhcmFtcy5Jc0ZvclNhbGU7XG4gIG1ldGFkYXRhLm1pbkJpZEFtb3VudE5hbm9zID0gcGFyYW1zLk1pbkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuY29uc3QgYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMgPSAocGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IGNvbnNlbnN1c0V4dHJhRGF0YUtWczogVHJhbnNhY3Rpb25FeHRyYURhdGFLVltdID0gW107XG4gIGlmIChwYXJhbXMuSXNCdXlOb3cgJiYgcGFyYW1zLkJ1eU5vd1ByaWNlTmFub3MgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNlbnN1c0V4dHJhRGF0YUtWcy5wdXNoKFxuICAgICAgbmV3IFRyYW5zYWN0aW9uRXh0cmFEYXRhS1YoXG4gICAgICAgIGVuY29kZVVURjhUb0J5dGVzKCdCdXlOb3dQcmljZU5hbm9zJyksXG4gICAgICAgIHV2YXJpbnQ2NFRvQnVmKHBhcmFtcy5CdXlOb3dQcmljZU5hbm9zKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnNlbnN1c0V4dHJhRGF0YUtWcztcbn07XG5cbmV4cG9ydCBjb25zdCBjb25zdHJ1Y3RVcGRhdGVORlRUcmFuc2FjdGlvbiA9IChcbiAgcGFyYW1zOiBVcGRhdGVORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZFVwZGF0ZU5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICAgIENvbnNlbnN1c0V4dHJhRGF0YUtWczogYnVpbGRVcGRhdGVORlRDb25zZW5zdXNLVnMocGFyYW1zKSxcbiAgICB9XG4gICk7XG59O1xuXG4vKipcbiAqIGh0dHBzOi8vZG9jcy5kZXNvLm9yZy9kZXNvLWJhY2tlbmQvY29uc3RydWN0LXRyYW5zYWN0aW9ucy9uZnQtdHJhbnNhY3Rpb25zLWFwaSNjcmVhdGUtbmZ0LWJpZFxuICovXG5leHBvcnQgdHlwZSBDcmVhdGVORlRCaWRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBDcmVhdGVORlRCaWRSZXF1ZXN0LFxuICAgIHwgJ0JpZEFtb3VudE5hbm9zJ1xuICAgIHwgJ05GVFBvc3RIYXNoSGV4J1xuICAgIHwgJ1NlcmlhbE51bWJlcidcbiAgICB8ICdVcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gID5cbj47XG5leHBvcnQgY29uc3QgY3JlYXRlTkZUQmlkID0gYXN5bmMgKFxuICBwYXJhbXM6IENyZWF0ZU5GVEJpZFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIENyZWF0ZU5GVEJpZFJlc3BvbnNlIHwgQ29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlXG4gID5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQ3JlYXRlTkZUQmlkTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcblxuICBpZiAob3B0aW9ucz8uY2hlY2tQZXJtaXNzaW9ucyAhPT0gZmFsc2UpIHtcbiAgICBhd2FpdCBndWFyZFR4UGVybWlzc2lvbih7XG4gICAgICBHbG9iYWxERVNPTGltaXQ6XG4gICAgICAgIHBhcmFtcy5CaWRBbW91bnROYW5vcyArXG4gICAgICAgIHR4V2l0aEZlZS5mZWVOYW5vcyArXG4gICAgICAgIHN1bVRyYW5zYWN0aW9uRmVlcyhwYXJhbXMuVHJhbnNhY3Rpb25GZWVzKSxcbiAgICAgIE5GVE9wZXJhdGlvbkxpbWl0TWFwOiB7XG4gICAgICAgIFtwYXJhbXMuTkZUUG9zdEhhc2hIZXhdOiB7XG4gICAgICAgICAgW3BhcmFtcy5TZXJpYWxOdW1iZXJdOiB7XG4gICAgICAgICAgICBuZnRfYmlkOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVTaWduQW5kU3VibWl0KCdhcGkvdjAvY3JlYXRlLW5mdC1iaWQnLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RORlRCaWRUcmFuc2FjdGlvbixcbiAgfSk7XG59O1xuXG5jb25zdCBidWlsZENyZWF0ZU5GVEJpZE1ldGFkYXRhID0gKHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUQmlkKCk7XG4gIG1ldGFkYXRhLmJpZEFtb3VudE5hbm9zID0gcGFyYW1zLkJpZEFtb3VudE5hbm9zO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQ3JlYXRlTkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRDcmVhdGVORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC1iaWRcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgQWNjZXB0TkZUQmlkUmVxdWVzdCxcbiAgICB8ICdCaWRBbW91bnROYW5vcydcbiAgICB8ICdORlRQb3N0SGFzaEhleCdcbiAgICB8ICdTZXJpYWxOdW1iZXInXG4gICAgfCAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ0JpZGRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGFjY2VwdE5GVEJpZCA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zLFxuICBvcHRpb25zPzogVHhSZXF1ZXN0T3B0aW9uc1xuKTogUHJvbWlzZTxcbiAgQ29uc3RydWN0ZWRBbmRTdWJtaXR0ZWRUeDxcbiAgICBBY2NlcHRORlRCaWRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVEJpZE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICBwYXJhbXMuQmlkQW1vdW50TmFub3MgK1xuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgK1xuICAgICAgICBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF9iaWQ6IG9wdGlvbnM/LnR4TGltaXRDb3VudCA/PyAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVNpZ25BbmRTdWJtaXQoJ2FwaS92MC9hY2NlcHQtbmZ0LWJpZCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdEFjY2VwdE5GVEJpZFRyYW5zYWN0aW9uLFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkQWNjZXB0TkZUQmlkTWV0YWRhdGEgPSAocGFyYW1zOiBBY2NlcHRORlRCaWRSZXF1ZXN0UGFyYW1zKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRCaWQoKTtcbiAgbWV0YWRhdGEuYmlkQW1vdW50TmFub3MgPSBwYXJhbXMuQmlkQW1vdW50TmFub3M7XG4gIG1ldGFkYXRhLmJpZGRlcklucHV0cyA9IFtdO1xuICAvLyBUT0RPOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhleSd2ZSBoYWQgdGhlaXIgaWRlbnRpdHkgc3dhcHBlZC5cbiAgbWV0YWRhdGEuYmlkZGVyUEtJRCA9IGJzNThQdWJsaWNLZXlUb0NvbXByZXNzZWRCeXRlcyhcbiAgICBwYXJhbXMuQmlkZGVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUQmlkVHJhbnNhY3Rpb24gPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUQmlkUmVxdWVzdFBhcmFtc1xuKTogUHJvbWlzZTxDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgcmV0dXJuIGNvbnN0cnVjdEJhbGFuY2VNb2RlbFR4KFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRCaWRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjdHJhbnNmZXItbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyA9IFR4UmVxdWVzdFdpdGhPcHRpb25hbEZlZXNBbmRFeHRyYURhdGE8XG4gIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgVHJhbnNmZXJORlRSZXF1ZXN0LFxuICAgIHwgJ1NlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrJ1xuICAgIHwgJ1JlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2snXG4gICAgfCAnTkZUUG9zdEhhc2hIZXgnXG4gICAgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IHRyYW5zZmVyTkZUID0gYXN5bmMgKFxuICBwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcyxcbiAgb3B0aW9ucz86IFR4UmVxdWVzdE9wdGlvbnNcbik6IFByb21pc2U8XG4gIENvbnN0cnVjdGVkQW5kU3VibWl0dGVkVHg8XG4gICAgVHJhbnNmZXJORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZVxuICA+XG4+ID0+IHtcbiAgY29uc3QgdHhXaXRoRmVlID0gZ2V0VHhXaXRoRmVlTmFub3MoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIEV4dHJhRGF0YTogcGFyYW1zLkV4dHJhRGF0YSxcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xuXG4gIGlmIChvcHRpb25zPy5jaGVja1Blcm1pc3Npb25zICE9PSBmYWxzZSkge1xuICAgIGF3YWl0IGd1YXJkVHhQZXJtaXNzaW9uKHtcbiAgICAgIEdsb2JhbERFU09MaW1pdDpcbiAgICAgICAgdHhXaXRoRmVlLmZlZU5hbm9zICsgc3VtVHJhbnNhY3Rpb25GZWVzKHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMpLFxuICAgICAgTkZUT3BlcmF0aW9uTGltaXRNYXA6IHtcbiAgICAgICAgW3BhcmFtcy5ORlRQb3N0SGFzaEhleF06IHtcbiAgICAgICAgICBbcGFyYW1zLlNlcmlhbE51bWJlcl06IHtcbiAgICAgICAgICAgIHRyYW5zZmVyOiBvcHRpb25zPy50eExpbWl0Q291bnQgPz8gMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL3RyYW5zZmVyLW5mdCcsIHBhcmFtcywge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY29uc3RydWN0aW9uRnVuY3Rpb246IGNvbnN0cnVjdFRyYW5zZmVyTkZULFxuICB9KTtcbn07XG5cbmNvbnN0IGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YSA9IChwYXJhbXM6IFRyYW5zZmVyTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhTkZUVHJhbnNmZXIoKTtcbiAgbWV0YWRhdGEuZW5jcnlwdGVkVW5sb2NrYWJsZVRleHQgPSBoZXhUb0J5dGVzKFxuICAgIHBhcmFtcy5FbmNyeXB0ZWRVbmxvY2thYmxlVGV4dCB8fCAnJ1xuICApO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEucmVjZWl2ZXJQdWJsaWNLZXkgPSBiczU4UHVibGljS2V5VG9Db21wcmVzc2VkQnl0ZXMoXG4gICAgcGFyYW1zLlJlY2VpdmVyUHVibGljS2V5QmFzZTU4Q2hlY2tcbiAgKTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0VHJhbnNmZXJORlQgPSAoXG4gIHBhcmFtczogVHJhbnNmZXJORlRSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlNlbmRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkVHJhbnNmZXJORlRNZXRhZGF0YShwYXJhbXMpLFxuICAgIHtcbiAgICAgIE1pbkZlZVJhdGVOYW5vc1BlcktCOiBwYXJhbXMuTWluRmVlUmF0ZU5hbm9zUGVyS0IsXG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBUcmFuc2FjdGlvbkZlZXM6IHBhcmFtcy5UcmFuc2FjdGlvbkZlZXMsXG4gICAgfVxuICApO1xufTtcblxuLyoqXG4gKiBodHRwczovL2RvY3MuZGVzby5vcmcvZGVzby1iYWNrZW5kL2NvbnN0cnVjdC10cmFuc2FjdGlvbnMvbmZ0LXRyYW5zYWN0aW9ucy1hcGkjYWNjZXB0LW5mdC10cmFuc2ZlclxuICovXG5leHBvcnQgdHlwZSBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMgPVxuICBUeFJlcXVlc3RXaXRoT3B0aW9uYWxGZWVzQW5kRXh0cmFEYXRhPFxuICAgIFBhcnRpYWxXaXRoUmVxdWlyZWRGaWVsZHM8XG4gICAgICBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3QsXG4gICAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICAgID5cbiAgPjtcbmV4cG9ydCBjb25zdCBhY2NlcHRORlRUcmFuc2ZlciA9IGFzeW5jIChcbiAgcGFyYW1zOiBBY2NlcHRORlRUcmFuc2ZlclJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PFxuICAgIEFjY2VwdE5GVFRyYW5zZmVyUmVzcG9uc2UgfCBDb25zdHJ1Y3RlZFRyYW5zYWN0aW9uUmVzcG9uc2VcbiAgPlxuPiA9PiB7XG4gIGNvbnN0IHR4V2l0aEZlZSA9IGdldFR4V2l0aEZlZU5hbm9zKFxuICAgIHBhcmFtcy5VcGRhdGVyUHVibGljS2V5QmFzZTU4Q2hlY2ssXG4gICAgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYWNjZXB0X25mdF90cmFuc2Zlcjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2FjY2VwdC1uZnQtdHJhbnNmZXInLCBwYXJhbXMsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGNvbnN0cnVjdGlvbkZ1bmN0aW9uOiBjb25zdHJ1Y3RBY2NlcHRORlRUcmFuc2ZlcixcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRBY2NlcHRORlRUcmFuc2Zlck1ldGFkYXRhID0gKFxuICBwYXJhbXM6IEFjY2VwdE5GVFRyYW5zZmVyUmVxdWVzdFBhcmFtc1xuKSA9PiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gbmV3IFRyYW5zYWN0aW9uTWV0YWRhdGFBY2NlcHRORlRUcmFuc2ZlcigpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QWNjZXB0TkZUVHJhbnNmZXIgPSAoXG4gIHBhcmFtczogQWNjZXB0TkZUVHJhbnNmZXJSZXF1ZXN0UGFyYW1zXG4pOiBQcm9taXNlPENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT4gPT4ge1xuICByZXR1cm4gY29uc3RydWN0QmFsYW5jZU1vZGVsVHgoXG4gICAgcGFyYW1zLlVwZGF0ZXJQdWJsaWNLZXlCYXNlNThDaGVjayxcbiAgICBidWlsZEFjY2VwdE5GVFRyYW5zZmVyTWV0YWRhdGEocGFyYW1zKSxcbiAgICB7XG4gICAgICBFeHRyYURhdGE6IHBhcmFtcy5FeHRyYURhdGEsXG4gICAgICBNaW5GZWVSYXRlTmFub3NQZXJLQjogcGFyYW1zLk1pbkZlZVJhdGVOYW5vc1BlcktCLFxuICAgICAgVHJhbnNhY3Rpb25GZWVzOiBwYXJhbXMuVHJhbnNhY3Rpb25GZWVzLFxuICAgIH1cbiAgKTtcbn07XG5cbi8qKlxuICogaHR0cHM6Ly9kb2NzLmRlc28ub3JnL2Rlc28tYmFja2VuZC9jb25zdHJ1Y3QtdHJhbnNhY3Rpb25zL25mdC10cmFuc2FjdGlvbnMtYXBpI2J1cm4tbmZ0XG4gKi9cbmV4cG9ydCB0eXBlIEJ1cm5ORlRSZXF1ZXN0UGFyYW1zID0gVHhSZXF1ZXN0V2l0aE9wdGlvbmFsRmVlc0FuZEV4dHJhRGF0YTxcbiAgUGFydGlhbFdpdGhSZXF1aXJlZEZpZWxkczxcbiAgICBCdXJuTkZUUmVxdWVzdCxcbiAgICAnVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrJyB8ICdORlRQb3N0SGFzaEhleCcgfCAnU2VyaWFsTnVtYmVyJ1xuICA+XG4+O1xuZXhwb3J0IGNvbnN0IGJ1cm5ORlQgPSBhc3luYyAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXMsXG4gIG9wdGlvbnM/OiBUeFJlcXVlc3RPcHRpb25zXG4pOiBQcm9taXNlPFxuICBDb25zdHJ1Y3RlZEFuZFN1Ym1pdHRlZFR4PEJ1cm5ORlRSZXNwb25zZSB8IENvbnN0cnVjdGVkVHJhbnNhY3Rpb25SZXNwb25zZT5cbj4gPT4ge1xuICBjb25zdCB0eFdpdGhGZWUgPSBnZXRUeFdpdGhGZWVOYW5vcyhcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG5cbiAgaWYgKG9wdGlvbnM/LmNoZWNrUGVybWlzc2lvbnMgIT09IGZhbHNlKSB7XG4gICAgYXdhaXQgZ3VhcmRUeFBlcm1pc3Npb24oe1xuICAgICAgR2xvYmFsREVTT0xpbWl0OlxuICAgICAgICB0eFdpdGhGZWUuZmVlTmFub3MgKyBzdW1UcmFuc2FjdGlvbkZlZXMocGFyYW1zLlRyYW5zYWN0aW9uRmVlcyksXG4gICAgICBORlRPcGVyYXRpb25MaW1pdE1hcDoge1xuICAgICAgICBbcGFyYW1zLk5GVFBvc3RIYXNoSGV4XToge1xuICAgICAgICAgIFtwYXJhbXMuU2VyaWFsTnVtYmVyXToge1xuICAgICAgICAgICAgYnVybjogb3B0aW9ucz8udHhMaW1pdENvdW50ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlU2lnbkFuZFN1Ym1pdCgnYXBpL3YwL2J1cm4tbmZ0JywgcGFyYW1zLCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBjb25zdHJ1Y3Rpb25GdW5jdGlvbjogY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24sXG4gIH0pO1xufTtcblxuY29uc3QgYnVpbGRCdXJuTkZUTWV0YWRhdGEgPSAocGFyYW1zOiBCdXJuTkZUUmVxdWVzdFBhcmFtcykgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IG5ldyBUcmFuc2FjdGlvbk1ldGFkYXRhQnVybk5GVCgpO1xuICBtZXRhZGF0YS5uZnRQb3N0SGFzaCA9IGhleFRvQnl0ZXMocGFyYW1zLk5GVFBvc3RIYXNoSGV4KTtcbiAgbWV0YWRhdGEuc2VyaWFsTnVtYmVyID0gcGFyYW1zLlNlcmlhbE51bWJlcjtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgY29uc3RydWN0QnVybk5GVFRyYW5zYXRpb24gPSAoXG4gIHBhcmFtczogQnVybk5GVFJlcXVlc3RQYXJhbXNcbik6IFByb21pc2U8Q29uc3RydWN0ZWRUcmFuc2FjdGlvblJlc3BvbnNlPiA9PiB7XG4gIHJldHVybiBjb25zdHJ1Y3RCYWxhbmNlTW9kZWxUeChcbiAgICBwYXJhbXMuVXBkYXRlclB1YmxpY0tleUJhc2U1OENoZWNrLFxuICAgIGJ1aWxkQnVybk5GVE1ldGFkYXRhKHBhcmFtcyksXG4gICAge1xuICAgICAgRXh0cmFEYXRhOiBwYXJhbXMuRXh0cmFEYXRhLFxuICAgICAgTWluRmVlUmF0ZU5hbm9zUGVyS0I6IHBhcmFtcy5NaW5GZWVSYXRlTmFub3NQZXJLQixcbiAgICAgIFRyYW5zYWN0aW9uRmVlczogcGFyYW1zLlRyYW5zYWN0aW9uRmVlcyxcbiAgICB9XG4gICk7XG59O1xuIl19

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc