diff --git a/Examples/HelloFrelard/hello-frelard.js b/Examples/HelloFrelard/hello-frelard.js deleted file mode 100644 index f986a6ae..00000000 --- a/Examples/HelloFrelard/hello-frelard.js +++ /dev/null @@ -1,22 +0,0 @@ -$(document).ready(function() { - - // Hook up an event handler for the load button clicking - $("#initializeButton").click(function() { - - // Disable the button after it's been clicked - $("#initializeButton").prop('disabled', true); - - tableau.addIn.initializeAsync().then(function() { - - // Initialization succeeded! Get the dashboard's name - var dashboard = tableau.addIn.dashboardContent.dashboard; - - // Display the results in the UI - $("#resultBox").html("I'm running in a dashboard named " + dashboard.name + ""); - }, function(err) { - - // something went wrong in initialization - $("#resultBox").html("Error while Initializing: " + err.toString()); - }); - }); -}); \ No newline at end of file diff --git a/Examples/HelloFrelard/readme.md b/Examples/HelloFrelard/readme.md deleted file mode 100644 index 37652a6d..00000000 --- a/Examples/HelloFrelard/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# Hello Frelard Example - -This is an extremely simple add-in which just demonstrates initializing an add-in and getting the name of the dashboard it is running in. - -### Pre-requisites -* You must have Node.js or Python installed (or other software which can serve the contents of this folder over http). You can get Node.js from http://nodejs.org and Python from https://www.python.org/downloads/ - -### Setup -1. Copy the `.trex` files from `.\AddIns` to `~\Documents\My Tableau Repository (Beta)\AddIns` so they are available to Tableau. -2. Open a command prompt window to the location where you cloned this repo. -3. Make sure you're in the `.\Examples\HelloFrelard` directory. -4. Start a simple file hosting server: - * Python 2.x : `python -m SimpleHTTPServer 8765` - * Python 3.x : `python -m http.server 8765` - * Node.js : First run `npm install http-server -g` (only the first time) then `http-server -p 8765` -5. Launch Tableau and use the add-in diff --git a/Examples/HelloFrelard/tableau-addin-0.2.0.js b/Examples/HelloFrelard/tableau-addin-0.2.0.js deleted file mode 100644 index 5e1bc739..00000000 --- a/Examples/HelloFrelard/tableau-addin-0.2.0.js +++ /dev/null @@ -1,18562 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Main"] = factory(); - else - root["Main"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var FrelardDesktopBootstrap_1 = __webpack_require__(1); - // This Main function will be executed when this module is loaded. Attempt to do our - // bootstrapping with qt and log any errors we encounter - FrelardDesktopBootstrap_1.doBootstrap().catch(function (e) { - console.error('Desktop bootstrapping failed: ' + e); - }); - - -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_core_1 = __webpack_require__(2); - var api_internal_contract_1 = __webpack_require__(28); - var AddInApiPresLayerImpl_1 = __webpack_require__(29); - var DesktopApiDispatcher_1 = __webpack_require__(30); - var QtWebChannelImpl_1 = __webpack_require__(31); - /** - * Wrapper for all the bootstrapping logic. This code attempts to initialize the qt pres-layer - * as well as the desktop dispatcher. It then assigns it to the global desktop dispatcher to - * be picked up by the add-in external Api - */ - function doBootstrap() { - // First we need to initialize the webchannel pres-layer - var dispatcherPromise = QtWebChannelImpl_1.initializeWebChannelPresLayer().then(function (preslayer) { - var presLayerApi = new AddInApiPresLayerImpl_1.AddInApiPresLayerImpl(preslayer); - if (!presLayerApi.AddInInstanceInfo.addInLocatorPresModel) { - throw new Error('AddInInstanceInfo undefined'); - } - // Initialize the apiEventHandler and the desktopDispatcher with it - var apiEventHandler = new api_core_1.ApiEventHandler(presLayerApi, presLayerApi.AddInInstanceInfo.addInLocatorPresModel); - var desktopDispatcher = new DesktopApiDispatcher_1.DesktopApiDispatcher(apiEventHandler); - return desktopDispatcher; - }); - // Assign the desktop dispatcher for the other project to find it - api_internal_contract_1.InternalApiDispatcherHolder.setDesktopDispatcherPromise(dispatcherPromise); - return dispatcherPromise; - } - exports.doBootstrap = doBootstrap; - - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(3)); - var Events_1 = __webpack_require__(16); - exports.NotificationId = Events_1.NotificationId; - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistryFactory_1 = __webpack_require__(11); - var EventMappingRegistryFactory_1 = __webpack_require__(15); - var ParameterMappingRegistryFactory_1 = __webpack_require__(23); - /** - * Main class for the api-core project. This class is responsible for executing comamnd and marshalling notifcations - * between the internal Api and the pres-layer Api. After construction, SetVersionNumber must be called in order to - * use this class - * - * @export - * @class ApiEventHandler - */ - var ApiEventHandler = (function () { - /** - * Creates an instance of ApiEventHandler. - * @param {PresentationLayer} presLayer - An implementation of the pres-layer Api to use - * @param {AddInLocatorPresModel} addInLocatorPresModel - locator for the add-in which is being referenced - * @memberof ApiEventHandler - */ - function ApiEventHandler(presLayer, addInLocatorPresModel) { - this.presLayer = presLayer; - this.presLayerAddInLocator = addInLocatorPresModel; - } - /** - * Sets the internal Api version number which the external library is expecting to use. This must be called before - * anything else in order to properly set up the translation layers. - * - * @param {VersionNumber} versionNumber - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setVersionNumber = function (versionNumber) { - this.versionNumber = versionNumber; - // Initialize all our registries - this.commandRegistry = CommandMappingRegistryFactory_1.CommandMappingRegistryFactory.createCommandMappingRegistry(versionNumber); - this.apiToPresLayerRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createApiToPresLayerParamRegistry(versionNumber); - this.presLayerToApiRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createPresLayerToApiParamRegistry(versionNumber); - this.eventRegistry = EventMappingRegistryFactory_1.EventMappingRegistryFactory.createEventMappingRegistry(versionNumber); - // Convert our addInLocator to the Api version - this.apiAddInLocator = this.presLayerToApiRegistry - .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.AddInLocator)(this.presLayerAddInLocator); - for (var _i = 0, _a = Object.keys(this.eventRegistry); _i < _a.length; _i++) { - var plEventId = _a[_i]; - // Register for all notifications we know about and bind the event type to the callback - this.presLayer.registerNotificationHandler(plEventId, this.onPresLayerNotification.bind(this, plEventId)); - } - }; - /** - * Sets an event handler function to be notified when Api events come in. Only a single registration is supported. - * - * @param {NotificationHandler} eventHandler - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setEventHandler = function (eventHandler) { - this.eventHandler = eventHandler; - // TODO - Register for pres layer events - }; - /** - * Executes the requested Api command by converting the parameters, running the command against the pres-layer, - * then processing the result back into a format the Api can understand - * - * @param {VerbId} verb - * @param {ExecuteParameters} parameters - * @returns {Promise} - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.execute = function (verb, parameters) { - var _this = this; - this.assertInitialized(); - var command = this.commandRegistry.getCommand(verb); - parameters = parameters || {}; - // Augment the command with the locator if it's needed - if (command.needsAddInLocator) { - parameters[api_internal_contract_1.ParameterId.AddInLocator] = this.apiAddInLocator; - } - var commandsParams = command.createParams(parameters, this.apiToPresLayerRegistry); - return this.presLayer.invokeCommand('tabdoc', command.commandId, commandsParams) - .then(function (commandResult) { - var convertedResult = command.ProcessResult(commandResult, _this.presLayerToApiRegistry); - return { - result: convertedResult - }; - }); - }; - /** - * Helper method to check that things are initialized as expected. Throws if initialization not complete - * - * @private - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.assertInitialized = function () { - if (!this.versionNumber) { - throw new Error('VersionNumber not yet configured. Cannot take any actions'); - } - }; - /** - * Called when a new event notification comes in from the presentation layer - * - * @param eventId The pres layer event id - * @param presModel The pres model that is included with the event - */ - ApiEventHandler.prototype.onPresLayerNotification = function (eventId, presModel) { - // First look up this eventId in our registry and convert to presModel - var eventMapping = this.eventRegistry[eventId]; - var apiModel = eventMapping.converter(presModel); - if (this.eventHandler) { - this.eventHandler(eventMapping.apiId, apiModel); - } - }; - return ApiEventHandler; - }()); - exports.ApiEventHandler = ApiEventHandler; - - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - __export(__webpack_require__(9)); - - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - /** - * The option for specifying which values to include for filtering. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "nullvalues"; - NullOption["NonNullValues"] = "nonnullvalues"; - NullOption["AllValues"] = "allvalues"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetName"] = "worksheet-name"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - "use strict"; - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\params-ts.template', u'..\\js-api\\api-core\\temp-pres-layer\\all-params.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - // DPI_IntegerRLE, having type int[] - ParameterId["IntegerRLE"] = "intRle"; - // DPI_UnsignedIntegerRLE, having type uint[] - ParameterId["UnsignedIntegerRLE"] = "uintRle"; - // DPI_FloatRLE, having type float[] - ParameterId["FloatRLE"] = "floatRle"; - // DPI_ParameterID, having type string - ParameterId["ParameterID"] = "paramType"; - // DPI_AllowCustomDatabase, having type bool - ParameterId["AllowCustomDatabase"] = "allowCustomDatabase"; - // DPI_AllowCustomSchema, having type bool - ParameterId["AllowCustomSchema"] = "allowCustomSchema"; - // DPI_AllowCustomSQL, having type bool - ParameterId["AllowCustomSQL"] = "allowCustomSql"; - // DPI_AllowCustomSQLWithoutSchema, having type bool - ParameterId["AllowCustomSQLWithoutSchema"] = "allowCustomSqlWithoutSchema"; - // DPI_AllowPreviewData, having type bool - ParameterId["AllowPreviewData"] = "allowPreviewData"; - // DPI_AllowStoredProc, having type bool - ParameterId["AllowStoredProc"] = "allowStoredProcedure"; - // DPI_AllowUnion, having type bool - ParameterId["AllowUnion"] = "allowUnion"; - // DPI_AreVariablesVisible, having type bool - ParameterId["AreVariablesVisible"] = "areVariablesVisible"; - // DPI_AttrLegacyConnection, having type bool - ParameterId["AttrLegacyConnection"] = "widgetAttrLegacy"; - // DPI_AttrReadUncommitted, having type bool - ParameterId["AttrReadUncommitted"] = "widgetAttrReadUncommittedData"; - // DPI_AttrRequireSSL, having type bool - ParameterId["AttrRequireSSL"] = "widgetAttrRequireSsl"; - // DPI_AttrRequireEncryption, having type bool - ParameterId["AttrRequireEncryption"] = "widgetAttrRequireEncryption"; - // DPI_Bool, having type bool - ParameterId["Bool"] = "bool"; - // DPI_CanPartition, having type bool - ParameterId["CanPartition"] = "canPartition"; - // DPI_CanRecommendDataSources, having type bool - ParameterId["CanRecommendDataSources"] = "canRecommendDatasources"; - // DPI_CanRecommendTables, having type bool - ParameterId["CanRecommendTables"] = "canRecommendTables"; - // DPI_CheckPermissions, having type bool - ParameterId["CheckPermissions"] = "checkPermissions"; - // DPI_DatabaseNameOptional, having type bool - ParameterId["DatabaseNameOptional"] = "databaseNameOptional"; - // DPI_DatabaseWHOptional, having type bool - ParameterId["DatabaseWHOptional"] = "databaseWarehouseOptional"; - // DPI_DoValidation, having type bool - ParameterId["DoValidation"] = "doValidation"; - // DPI_DoneLoadingAllSheets, having type bool - ParameterId["DoneLoadingAllSheets"] = "googleSheetDoneLoading"; - // DPI_GABasicItemsEnabled, having type bool - ParameterId["GABasicItemsEnabled"] = "gaBasicItemsEnabled"; - // DPI_GADimensionMeasuresEnabled, having type bool - ParameterId["GADimensionMeasuresEnabled"] = "gaDimensionsMeasuresEnabled"; - // DPI_GAFiltersEnabled, having type bool - ParameterId["GAFiltersEnabled"] = "gaFiltersEnabled"; - // DPI_HasDatabase, having type bool - ParameterId["HasDatabase"] = "hasDatabase"; - // DPI_HasDataLoss, having type bool - ParameterId["HasDataLoss"] = "hasDataLoss"; - // DPI_HasFastMetadata, having type bool - ParameterId["HasFastMetadata"] = "hasFastMetadata"; - // DPI_HasNewlyDiscoveredSchema, having type bool - ParameterId["HasNewlyDiscoveredSchema"] = "hasNewlyDiscoveredSchema"; - // DPI_HasPermissions, having type bool - ParameterId["HasPermissions"] = "hasPermissions"; - // DPI_HasSchema, having type bool - ParameterId["HasSchema"] = "hasSchema"; - // DPI_HasSchemaCount, having type bool - ParameterId["HasSchemaCount"] = "hasSchemaCount"; - // DPI_HasTables, having type bool - ParameterId["HasTables"] = "hasTables"; - // DPI_HasUncommittedChanges, having type bool - ParameterId["HasUncommittedChanges"] = "hasUncommittedChanges"; - // DPI_HasWarehouse, having type bool - ParameterId["HasWarehouse"] = "hasWarehouse"; - // DPI_HasWarning, having type bool - ParameterId["HasWarning"] = "hasWarning"; - // DPI_IsCalculated, having type bool - ParameterId["IsCalculated"] = "isCalculated"; - // DPI_IsConnectedToDataSource, having type bool - ParameterId["IsConnectedToDataSource"] = "isConnectedDatasource"; - // DPI_IsDisabledDataConnection, having type bool - ParameterId["IsDisabledDataConnection"] = "isDisabledDataConnection"; - // DPI_IsEditable, having type bool - ParameterId["IsEditable"] = "isEditable"; - // DPI_IsEnabled, having type bool - ParameterId["IsEnabled"] = "isEnabled"; - // DPI_IsFinishedConnecting, having type bool - ParameterId["IsFinishedConnecting"] = "isFinishedConnecting"; - // DPI_IsHidden, having type bool - ParameterId["IsHidden"] = "isHidden"; - // DPI_IsMultiTable, having type bool - ParameterId["IsMultiTable"] = "isMultiTable"; - // DPI_IsNewCustomSQL, having type bool - ParameterId["IsNewCustomSQL"] = "isNewCustomSql"; - // DPI_IsNewDataSource, having type bool - ParameterId["IsNewDataSource"] = "isNewDataSrc"; - // DPI_IsPublishedFederated, having type bool - ParameterId["IsPublishedFederated"] = "isPublishedFederated"; - // DPI_IsSampled, having type bool - ParameterId["IsSampled"] = "isSampled"; - // DPI_IsSchemaMemberNewlyDiscovered, having type bool - ParameterId["IsSchemaMemberNewlyDiscovered"] = "isSchemaMemberNewlyDiscovered"; - // DPI_IsSlowFast, having type bool - ParameterId["IsSlowFast"] = "isSlowfast"; - // DPI_IsSupported, having type bool - ParameterId["IsSupported"] = "isSupported"; - // DPI_IsTableSelectionVisible, having type bool - ParameterId["IsTableSelectionVisible"] = "isTableSelectionVisible"; - // DPI_IsTableauServerDatasource, having type bool - ParameterId["IsTableauServerDatasource"] = "isTableauServerDatasource"; - // DPI_IsTableauServerDatasourceConnectable, having type bool - ParameterId["IsTableauServerDatasourceConnectable"] = "isTableauServerDatasourceConnectable"; - // DPI_IsTableauServerDatasourceDownloadable, having type bool - ParameterId["IsTableauServerDatasourceDownloadable"] = "isTableauServerDatasourceDownloadable"; - // DPI_IsVisible, having type bool - ParameterId["IsVisible"] = "isVisible"; - // DPI_NeedFlatten, having type bool - ParameterId["NeedFlatten"] = "needFlatten"; - // DPI_SSLRequiresCertificate, having type bool - ParameterId["SSLRequiresCertificate"] = "sslRequiresCertificate"; - // DPI_SchemaOptional, having type bool - ParameterId["SchemaOptional"] = "schemaOptional"; - // DPI_ServiceNameOptional, having type bool - ParameterId["ServiceNameOptional"] = "serviceNameOptional"; - // DPI_ShouldWarnForCrossSchemaJoins, having type bool - ParameterId["ShouldWarnForCrossSchemaJoins"] = "shouldWarnCrossSchemaJoins"; - // DPI_ShowBrowseButton, having type bool - ParameterId["ShowBrowseButton"] = "showBrowseButton"; - // DPI_ShowConnectionPrompt, having type bool - ParameterId["ShowConnectionPrompt"] = "showConnectionPrompt"; - // DPI_ShowDBBrowseButton, having type bool - ParameterId["ShowDBBrowseButton"] = "showDbBrowseButton"; - // DPI_ShowDBNamePrompt, having type bool - ParameterId["ShowDBNamePrompt"] = "showDbPrompt"; - // DPI_ShowDBWHNamePrompt, having type bool - ParameterId["ShowDBWHNamePrompt"] = "showDbwhPrompt"; - // DPI_ShowImportSSLCertLabel, having type bool - ParameterId["ShowImportSSLCertLabel"] = "showImportSslcertLabel"; - // DPI_ShowPortPrompt, having type bool - ParameterId["ShowPortPrompt"] = "showPortPrompt"; - // DPI_ShowSSLCheckbox, having type bool - ParameterId["ShowSSLCheckbox"] = "showSslCheckbox"; - // DPI_ShowEncryptionCheckbox, having type bool - ParameterId["ShowEncryptionCheckbox"] = "showEncryptionCheckbox"; - // DPI_ShowServerNamePrompt, having type bool - ParameterId["ShowServerNamePrompt"] = "showServerPrompt"; - // DPI_ShowServiceNamePrompt, having type bool - ParameterId["ShowServiceNamePrompt"] = "showServicePrompt"; - // DPI_ShowUncommittedDataCheckbox, having type bool - ParameterId["ShowUncommittedDataCheckbox"] = "showUncommittedDataCheckbox"; - // DPI_SupportsGenericAuth, having type bool - ParameterId["SupportsGenericAuth"] = "supportsGenericAuth"; - // DPI_TableauServerFetchAscending, having type bool - ParameterId["TableauServerFetchAscending"] = "tableauServerFetchAscending"; - // DPI_UsesRadioButton, having type bool - ParameterId["UsesRadioButton"] = "usesRadioButton"; - // DPI_BigQueryLegacySQLCheckStatus, having type bool - ParameterId["BigQueryLegacySQLCheckStatus"] = "datasourceBigqueryLegacySqlCheckStatus"; - // DPI_HasBigQueryLegacySQLCheck, having type bool - ParameterId["HasBigQueryLegacySQLCheck"] = "datasourceBigqueryLegacySqlCheck"; - // DPI_AutoFetchLimit, having type int - ParameterId["AutoFetchLimit"] = "autoFetchLimit"; - // DPI_ConnectionType, having type int - ParameterId["ConnectionType"] = "connectionType"; - // DPI_IconId, having type int - ParameterId["IconId"] = "iconId"; - // DPI_SelectedCatalogIndex, having type int - ParameterId["SelectedCatalogIndex"] = "selectedCatalogIndex"; - // DPI_SelectedCubeIndex, having type int - ParameterId["SelectedCubeIndex"] = "selectedCubeIndex"; - // DPI_SelectedGAAccountIndex, having type int - ParameterId["SelectedGAAccountIndex"] = "selectedGaAccountIndex"; - // DPI_SelectedGAMeasureSetIndex, having type int - ParameterId["SelectedGAMeasureSetIndex"] = "selectedGaMeasureSetIndex"; - // DPI_SelectedGAPropertyIndex, having type int - ParameterId["SelectedGAPropertyIndex"] = "selectedGaPropertyIndex"; - // DPI_SelectedGASegmentIndex, having type int - ParameterId["SelectedGASegmentIndex"] = "selectedGaSegmentIndex"; - // DPI_SelectedGAViewIndex, having type int - ParameterId["SelectedGAViewIndex"] = "selectedGaViewIndex"; - // DPI_SelectedGoogleSheetIndex, having type int - ParameterId["SelectedGoogleSheetIndex"] = "selectedGoogleSheetIndex"; - // DPI_SelectedOptionIndex, having type int - ParameterId["SelectedOptionIndex"] = "selectedOptionIndex"; - // DPI_SlowMetadataCount, having type int - ParameterId["SlowMetadataCount"] = "slowMetadataCount"; - // DPI_TableauServerFetchSortBy, having type int - ParameterId["TableauServerFetchSortBy"] = "tableauServerFetchSort"; - // DPI_ActualParameterOrdinal, having type uint - ParameterId["ActualParameterOrdinal"] = "actualParameterOrdinal"; - // DPI_ActualParameterType, having type uint - ParameterId["ActualParameterType"] = "actualParameterType"; - // DPI_CharSetID, having type uint - ParameterId["CharSetID"] = "charsetId"; - // DPI_DataSourceOrdinal, having type uint - ParameterId["DataSourceOrdinal"] = "datasourceOrdinal"; - // DPI_FilterCount, having type uint - ParameterId["FilterCount"] = "filterCount"; - // DPI_VariablesCount, having type uint - ParameterId["VariablesCount"] = "variablesCount"; - // DPI_ActualParameterDisplayName, having type string - ParameterId["ActualParameterDisplayName"] = "actualParameterDisplayName"; - // DPI_ActualParameterName, having type string - ParameterId["ActualParameterName"] = "actualParameterName"; - // DPI_ActualParameterValue, having type string - ParameterId["ActualParameterValue"] = "actualParameterValue"; - // DPI_AttrAPIVersion, having type string - ParameterId["AttrAPIVersion"] = "attrApiVersion"; - // DPI_AttrAuthType, having type string - ParameterId["AttrAuthType"] = "widgetAttrAuthtype"; - // DPI_AttrConnectionData, having type string - ParameterId["AttrConnectionData"] = "attrConnectionData"; - // DPI_AttrConnectionName, having type string - ParameterId["AttrConnectionName"] = "attrConnectionName"; - // DPI_AttrConnectionType, having type string - ParameterId["AttrConnectionType"] = "widgetAttrConnectiontype"; - // DPI_AttrConnectionURL, having type string - ParameterId["AttrConnectionURL"] = "attrConnectionUrl"; - // DPI_AttrCubeSpecificationId, having type string - ParameterId["AttrCubeSpecificationId"] = "widgetAttrCubeSpecificationId"; - // DPI_AttrCubeSpecificationValue, having type string - ParameterId["AttrCubeSpecificationValue"] = "widgetAttrCubeSpecificationValue"; - // DPI_AttrDSN, having type string - ParameterId["AttrDSN"] = "widgetAttrDsn"; - // DPI_AttrDatabase, having type string - ParameterId["AttrDatabase"] = "widgetAttrDb"; - // DPI_AttrDatabaseWarehouse, having type string - ParameterId["AttrDatabaseWarehouse"] = "widgetAttrDbwh"; - // DPI_AttrDriver, having type string - ParameterId["AttrDriver"] = "widgetAttrDriver"; - // DPI_AttrFilename, having type string - ParameterId["AttrFilename"] = "widgetAttrFilename"; - // DPI_AttrHTTPPath, having type string - ParameterId["AttrHTTPPath"] = "widgetAttrHttpPath"; - // DPI_AttrIncrementalRefreshKey, having type string - ParameterId["AttrIncrementalRefreshKey"] = "attrIncrementalRefreshKey"; - // DPI_AttrKerberosHost, having type string - ParameterId["AttrKerberosHost"] = "widgetAttrKerberosHost"; - // DPI_AttrKerberosRealm, having type string - ParameterId["AttrKerberosRealm"] = "widgetAttrKerberosRealm"; - // DPI_AttrKerberosService, having type string - ParameterId["AttrKerberosService"] = "widgetAttrKerberosService"; - // DPI_AttrLastRecordToken, having type string - ParameterId["AttrLastRecordToken"] = "attrLastRecordToken"; - // DPI_AttrMDWPath, having type string - ParameterId["AttrMDWPath"] = "widgetAttrMdwPath"; - // DPI_AttrMDWUsername, having type string - ParameterId["AttrMDWUsername"] = "widgetAttrMdwUsername"; - // DPI_AttrODBCPrompt, having type string - ParameterId["AttrODBCPrompt"] = "widgetAttrOdbcPrompt"; - // DPI_AttrODBCStringExtras, having type string - ParameterId["AttrODBCStringExtras"] = "widgetAttrOdbcStringExtras"; - // DPI_AttrPort, having type string - ParameterId["AttrPort"] = "widgetAttrPort"; - // DPI_AttrSAPClient, having type string - ParameterId["AttrSAPClient"] = "widgetAttrSapClient"; - // DPI_AttrSAPLanguage, having type string - ParameterId["AttrSAPLanguage"] = "widgetAttrSapLanguage"; - // DPI_AttrEdition, having type string - ParameterId["AttrEdition"] = "widgetAttrSslEdition"; - // DPI_AttrSSODomain, having type string - ParameterId["AttrSSODomain"] = "widgetAttrSsoDomain"; - // DPI_AttrSSLCert, having type string - ParameterId["AttrSSLCert"] = "widgetAttrSslCert"; - // DPI_AttrScriptVersion, having type string - ParameterId["AttrScriptVersion"] = "attrScriptVersion"; - // DPI_AttrServer, having type string - ParameterId["AttrServer"] = "widgetAttrServer"; - // DPI_AttrService, having type string - ParameterId["AttrService"] = "widgetAttrService"; - // DPI_AttrUsername, having type string - ParameterId["AttrUsername"] = "widgetAttrUser"; - // DPI_AuthenticationPrompt, having type string - ParameterId["AuthenticationPrompt"] = "authenticationPrompt"; - // DPI_Caption, having type string - ParameterId["Caption"] = "caption"; - // DPI_CatalogListPrompt, having type string - ParameterId["CatalogListPrompt"] = "catalogListPrompt"; - // DPI_CatalogName, having type string - ParameterId["CatalogName"] = "catalogName"; - // DPI_CatalogSearchTerm, having type string - ParameterId["CatalogSearchTerm"] = "catalogSearchTerm"; - // DPI_Category, having type string - ParameterId["Category"] = "itemCategory"; - // DPI_ClassName, having type string - ParameterId["ClassName"] = "classNameForCleaning"; - // DPI_CloudFileClassName, having type string - ParameterId["CloudFileClassName"] = "cloudFileClassName"; - // DPI_CloudFileStorageProvider, having type string - ParameterId["CloudFileStorageProvider"] = "cloudFileStorageProvider"; - // DPI_ConfigName, having type string - ParameterId["ConfigName"] = "connectionConfigName"; - // DPI_ConnectionCaption, having type string - ParameterId["ConnectionCaption"] = "connectionCaption"; - // DPI_ConnectionDescriptionLabel, having type string - ParameterId["ConnectionDescriptionLabel"] = "connectionDescriptionLabel"; - // DPI_ConnectionClass, having type string - ParameterId["ConnectionClass"] = "connectionClassName"; - // DPI_ConnectionName, having type string - ParameterId["ConnectionName"] = "connectionName"; - // DPI_ConnectionOptionName, having type string - ParameterId["ConnectionOptionName"] = "connectionOptionName"; - // DPI_ConnectionSpecificationTitle, having type string - ParameterId["ConnectionSpecificationTitle"] = "connectionSpecificationTitle"; - // DPI_ConnectionTypeLabel, having type string - ParameterId["ConnectionTypeLabel"] = "connectionTypeLabel"; - // DPI_CubeDescription, having type string - ParameterId["CubeDescription"] = "cubeDescription"; - // DPI_CubeLastUpdated, having type string - ParameterId["CubeLastUpdated"] = "cubeLastUpdated"; - // DPI_CubeListPrompt, having type string - ParameterId["CubeListPrompt"] = "cubeListPrompt"; - // DPI_CubeName, having type string - ParameterId["CubeName"] = "cubeName"; - // DPI_CubeSearchTerm, having type string - ParameterId["CubeSearchTerm"] = "cubeSearchTerm"; - // DPI_CurrentText, having type string - ParameterId["CurrentText"] = "currentText"; - // DPI_CustomSplitStringSeparator, having type string - ParameterId["CustomSplitStringSeparator"] = "customSplitStringSeparator"; - // DPI_DatasourceId, having type string - ParameterId["DatasourceId"] = "datasourceId"; - // DPI_DBNamePrompt, having type string - ParameterId["DBNamePrompt"] = "dbNamePrompt"; - // DPI_DBWHNamePrompt, having type string - ParameterId["DBWHNamePrompt"] = "dbWarehouseNamePrompt"; - // DPI_DSClass, having type string - ParameterId["DSClass"] = "dsClass"; - // DPI_DatabaseName, having type string - ParameterId["DatabaseName"] = "datasourceDatabaseName"; - // DPI_DatabaseNote, having type string - ParameterId["DatabaseNote"] = "databaseNote"; - // DPI_DragLabel, having type string - ParameterId["DragLabel"] = "dragLabel"; - // DPI_EffectiveDateRange, having type string - ParameterId["EffectiveDateRange"] = "effectiveDateRange"; - // DPI_GoogleSheetCreatedTime, having type string - ParameterId["GoogleSheetCreatedTime"] = "googleSheetCreatedTime"; - // DPI_GoogleSheetId, having type string - ParameterId["GoogleSheetId"] = "googleSheetId"; - // DPI_GoogleSheetLastModifiedTime, having type string - ParameterId["GoogleSheetLastModifiedTime"] = "googleSheetLastModifiedTime"; - // DPI_GoogleSheetLastModifyingUser, having type string - ParameterId["GoogleSheetLastModifyingUser"] = "googleSheetLastModifyingUser"; - // DPI_GoogleSheetLastViewedByUserTime, having type string - ParameterId["GoogleSheetLastViewedByUserTime"] = "googleSheetLastViewedByUserTime"; - // DPI_GoogleSheetMimeType, having type string - ParameterId["GoogleSheetMimeType"] = "googleSheetMimeType"; - // DPI_GoogleSheetName, having type string - ParameterId["GoogleSheetName"] = "googleSheetName"; - // DPI_GoogleSheetOwner, having type string - ParameterId["GoogleSheetOwner"] = "googleSheetOwner"; - // DPI_GoogleSheetThumbnailLink, having type string - ParameterId["GoogleSheetThumbnailLink"] = "googleSheetThumbnailLink"; - // DPI_GoogleSheetThumbnailId, having type string - ParameterId["GoogleSheetThumbnailId"] = "googleSheetThumbnailId"; - // DPI_GoogleSheetThumbnailLocalPath, having type string - ParameterId["GoogleSheetThumbnailLocalPath"] = "googleSheetThumbnailLocalPath"; - // DPI_GoogleSheetWebViewLink, having type string - ParameterId["GoogleSheetWebViewLink"] = "googleSheetWebViewLink"; - // DPI_GoogleSheetsListErrorMessage, having type string - ParameterId["GoogleSheetsListErrorMessage"] = "googleSheetsListErrorMessage"; - // DPI_InitialSQL, having type string - ParameterId["InitialSQL"] = "initialSql"; - // DPI_ISODate, having type string - ParameterId["ISODate"] = "isoDate"; - // DPI_ISOEndDate, having type string - ParameterId["ISOEndDate"] = "isoEndDate"; - // DPI_ISOStartDate, having type string - ParameterId["ISOStartDate"] = "isoStartDate"; - // DPI_IsolationLevel, having type string - ParameterId["IsolationLevel"] = "datasourceIsolationLevel"; - // DPI_ItemDescription, having type string - ParameterId["ItemDescription"] = "itemDescription"; - // DPI_ItemId, having type string - ParameterId["ItemId"] = "itemId"; - // DPI_KerberosHost, having type string - ParameterId["KerberosHost"] = "datasourceKerberosHost"; - // DPI_KerberosRealm, having type string - ParameterId["KerberosRealm"] = "datasourceKerberosRealm"; - // DPI_KerberosService, having type string - ParameterId["KerberosService"] = "datasourceKerberosService"; - // DPI_Name, having type string - ParameterId["Name"] = "name"; - // DPI_OptionId, having type string - ParameterId["OptionId"] = "optionId"; - // DPI_PartitioningButtonLabel, having type string - ParameterId["PartitioningButtonLabel"] = "partitioningButtonLabel"; - // DPI_PartitioningButtonTooltip, having type string - ParameterId["PartitioningButtonTooltip"] = "partitioningButtonTooltip"; - // DPI_PartitioningText, having type string - ParameterId["PartitioningText"] = "queryPartitioningText"; - // DPI_PdfStartPage, having type string - ParameterId["PdfStartPage"] = "pdfStartPage"; - // DPI_PdfEndPage, having type string - ParameterId["PdfEndPage"] = "pdfEndPage"; - // DPI_PortPrompt, having type string - ParameterId["PortPrompt"] = "portPrompt"; - // DPI_PromptText, having type string - ParameterId["PromptText"] = "promptText"; - // DPI_QueryBanding, having type string - ParameterId["QueryBanding"] = "queryBanding"; - // DPI_QueryText, having type string - ParameterId["QueryText"] = "queryText"; - // DPI_RecommendationUUID, having type string - ParameterId["RecommendationUUID"] = "recommendationUuid"; - // DPI_SQLQuery, having type string - ParameterId["SQLQuery"] = "sqlQuery"; - // DPI_SchemaComboFallbackText, having type string - ParameterId["SchemaComboFallbackText"] = "schemaComboFallbackText"; - // DPI_SchemaLabel, having type string - ParameterId["SchemaLabel"] = "schemaLabel"; - // DPI_SchemaMemberGlobalName, having type string - ParameterId["SchemaMemberGlobalName"] = "schemaMemberGlobalName"; - // DPI_SchemaName, having type string - ParameterId["SchemaName"] = "datasourceSchemaName"; - // DPI_ScriptText, having type string - ParameterId["ScriptText"] = "scriptText"; - // DPI_SecondaryWhiteList, having type string - ParameterId["SecondaryWhiteList"] = "secondaryWhiteList"; - // DPI_Server, having type string - ParameterId["Server"] = "datasourceServer"; - // DPI_ServerNamePrompt, having type string - ParameterId["ServerNamePrompt"] = "serverNamePrompt"; - // DPI_Service, having type string - ParameterId["Service"] = "datasourceService"; - // DPI_ServiceNamePrompt, having type string - ParameterId["ServiceNamePrompt"] = "servicePrompt"; - // DPI_SheetFormatting, having type string - ParameterId["SheetFormatting"] = "sheetFormatting"; - // DPI_SlowMetadataSearchTerm, having type string - ParameterId["SlowMetadataSearchTerm"] = "slowMetadataSearchTerm"; - // DPI_StandardConnectionName, having type string - ParameterId["StandardConnectionName"] = "datasourceStandardConnectionName"; - // DPI_StandardConnectionPlaceholderText, having type string - ParameterId["StandardConnectionPlaceholderText"] = "standardConnectionPlaceholderText"; - // DPI_StoredProcedureParameterTitle, having type string - ParameterId["StoredProcedureParameterTitle"] = "storedProcedureParameterTitle"; - // DPI_TableAlias, having type string - ParameterId["TableAlias"] = "tableAlias"; - // DPI_RightTableAlias, having type string - ParameterId["RightTableAlias"] = "rightTableAlias"; - // DPI_TableCaption, having type string - ParameterId["TableCaption"] = "tableCaption"; - // DPI_TableCollectionName, having type string - ParameterId["TableCollectionName"] = "tableCollectionName"; - // DPI_TablePlaceholderText, having type string - ParameterId["TablePlaceholderText"] = "tablePlaceholderText"; - // DPI_TableRanking, having type string - ParameterId["TableRanking"] = "tableRanking"; - // DPI_TableSortKey, having type string - ParameterId["TableSortKey"] = "tableSortkey"; - // DPI_TableTooltip, having type string - ParameterId["TableTooltip"] = "tableTooltip"; - // DPI_TableToReplace, having type string - ParameterId["TableToReplace"] = "tableToReplace"; - // DPI_TableWarningMessage, having type string - ParameterId["TableWarningMessage"] = "tableWarningMessage"; - // DPI_TableauServerDatasourceDescription, having type string - ParameterId["TableauServerDatasourceDescription"] = "tableauServerDatasourceDescription"; - // DPI_TableauServerDatasourceLastExtract, having type string - ParameterId["TableauServerDatasourceLastExtract"] = "tableauServerDatasourceLastExtract"; - // DPI_TableauServerDatasourceModified, having type string - ParameterId["TableauServerDatasourceModified"] = "tableauServerDatasourceModified"; - // DPI_TableauServerDatasourceOwner, having type string - ParameterId["TableauServerDatasourceOwner"] = "tableauServerDatasourceOwner"; - // DPI_TableauServerDatasourcePath, having type string - ParameterId["TableauServerDatasourcePath"] = "tableauServerDatasourcePath"; - // DPI_TableauServerFetchSearchQuery, having type string - ParameterId["TableauServerFetchSearchQuery"] = "tableauServerFetchSearchQuery"; - // DPI_TableauServerName, having type string - ParameterId["TableauServerName"] = "tableauServerName"; - // DPI_TableauServerProjectName, having type string - ParameterId["TableauServerProjectName"] = "tableauServerProjectName"; - // DPI_TableauServerUsername, having type string - ParameterId["TableauServerUsername"] = "tableauServerUsername"; - // DPI_TransportType, having type string - ParameterId["TransportType"] = "transportType"; - // DPI_WarehouseName, having type string - ParameterId["WarehouseName"] = "datasourceWarehouseName"; - // DPI_WorkgroupWorkbookName, having type string - ParameterId["WorkgroupWorkbookName"] = "workgroupWorkbookName"; - // DPI_AnalyticsItemTooltip, having type string - ParameterId["AnalyticsItemTooltip"] = "analyticsItemTooltip"; - // DPI_Description, having type string - ParameterId["Description"] = "description"; - // DPI_DSClassCaption, having type string - ParameterId["DSClassCaption"] = "dsClassCaption"; - // DPI_Formula, having type string - ParameterId["Formula"] = "formula"; - // DPI_MessageText, having type string - ParameterId["MessageText"] = "messageText"; - // DPI_Datasource, having type string - ParameterId["Datasource"] = "datasource"; - // DPI_DatasourceSource, having type string - ParameterId["DatasourceSource"] = "datasourceSource"; - // DPI_DatasourceTarget, having type string - ParameterId["DatasourceTarget"] = "datasourceTarget"; - // DPI_FirstDatasource, having type string - ParameterId["FirstDatasource"] = "firstDatasource"; - // DPI_NewDatasource, having type string - ParameterId["NewDatasource"] = "newDatasource"; - // DPI_ParametersDatasource, having type string - ParameterId["ParametersDatasource"] = "parametersDatasource"; - // DPI_PrimaryDatasource, having type string - ParameterId["PrimaryDatasource"] = "primaryDatasource"; - // DPI_ConnectionDatabases, having type string[] - ParameterId["ConnectionDatabases"] = "connectionDatabases"; - // DPI_ConnectionSchemas, having type string[] - ParameterId["ConnectionSchemas"] = "connectionSchemas"; - // DPI_ConnectionWarehouses, having type string[] - ParameterId["ConnectionWarehouses"] = "connectionWarehouses"; - // DPI_PossibleChoices, having type string[] - ParameterId["PossibleChoices"] = "possibleChoices"; - // DPI_StandardConnections, having type string[] - ParameterId["StandardConnections"] = "standardConnections"; - // DPI_Strings, having type string[] - ParameterId["Strings"] = "strings"; - // DPI_TableauServerProjectNames, having type string[] - ParameterId["TableauServerProjectNames"] = "tableauServerProjectNames"; - // DPI_TableCaptions, having type string[] - ParameterId["TableCaptions"] = "tableCaptions"; - // DPI_DataValues, having type object[] - ParameterId["DataValues"] = "dataValues"; - // DPI_QueryBandErrors, having type object[] - ParameterId["QueryBandErrors"] = "queryBandErrors"; - // DPI_QueryBandParameters, having type object[] - ParameterId["QueryBandParameters"] = "queryBandParameters"; - // DPI_InitialSQLParameters, having type object[] - ParameterId["InitialSQLParameters"] = "initialSqlParameters"; - // DPI_ConnectionAttributes, having type Dictionary(of string) - ParameterId["ConnectionAttributes"] = "connectionAttrs"; - // DPI_ConnectionProps, having type Dictionary(of string) - ParameterId["ConnectionProps"] = "connectionProps"; - // DPI_DisplayNameMap, having type Dictionary(of string) - ParameterId["DisplayNameMap"] = "displayNameMap"; - // DPI_LookupTable, having type Dictionary(of string) - ParameterId["LookupTable"] = "lookupTable"; - // DPI_OAuthAttrs, having type Dictionary(of string) - ParameterId["OAuthAttrs"] = "oauthAttrs"; - // DPI_StringMap, having type Dictionary(of string) - ParameterId["StringMap"] = "stringMap"; - // DPI_TableRankingMap, having type Dictionary(of string) - ParameterId["TableRankingMap"] = "tableRankingMap"; - // DPI_WDCAttributes, having type Dictionary(of string) - ParameterId["WDCAttributes"] = "wdcAttrs"; - // DPI_ConnectorAttributes, having type Dictionary(of string) - ParameterId["ConnectorAttributes"] = "connectorAttrs"; - // DPI_TableRelevanceParams, having type Dictionary(of string) - ParameterId["TableRelevanceParams"] = "tableRelevanceParams"; - // DPI_ActualParameterParameter, having type string - ParameterId["ActualParameterParameter"] = "actualParameterParameter"; - // DPI_DataColumnName, having type string - ParameterId["DataColumnName"] = "dataColumnName"; - // DPI_LHSDataColumnName, having type string - ParameterId["LHSDataColumnName"] = "lhsDataColumnName"; - // DPI_RHSDataColumnName, having type string - ParameterId["RHSDataColumnName"] = "rhsDataColumnName"; - // DPI_FullCubeName, having type string - ParameterId["FullCubeName"] = "fullCubeName"; - // DPI_FullVariableName, having type string - ParameterId["FullVariableName"] = "fullVariableName"; - // DPI_SemanticRole, having type string - ParameterId["SemanticRole"] = "semanticRole"; - // DPI_StoredProcedureName, having type string - ParameterId["StoredProcedureName"] = "storedProcName"; - // DPI_TableName, having type string - ParameterId["TableName"] = "tableName"; - // DPI_AddedTableNames, having type string[] - ParameterId["AddedTableNames"] = "addedTableNames"; - // DPI_CoalesceGroupFields, having type string[] - ParameterId["CoalesceGroupFields"] = "coalesceGroupFields"; - // DPI_FieldNames, having type string[] - ParameterId["FieldNames"] = "fieldNames"; - // DPI_JoinFieldAliases, having type string[] - ParameterId["JoinFieldAliases"] = "joinField_aliases"; - // DPI_JoinInfoFields, having type string[] - ParameterId["JoinInfoFields"] = "joinInfoFields"; - // DPI_PivotGroupFields, having type string[] - ParameterId["PivotGroupFields"] = "pivotGroupFields"; - // DPI_RemovedTableNames, having type string[] - ParameterId["RemovedTableNames"] = "removedTableNames"; - // DPI_StoredProcedures, having type string[] - ParameterId["StoredProcedures"] = "storedProcedures"; - // DPI_TableNames, having type string[] - ParameterId["TableNames"] = "tableNames"; - // DPI_ColumnName, having type string - ParameterId["ColumnName"] = "columnName"; - // DPI_FieldName, having type string - ParameterId["FieldName"] = "fn"; - // DPI_GoogleSheetThumbnailImage, having type string - ParameterId["GoogleSheetThumbnailImage"] = "googleSheetThumbnailImage"; - // DPI_AttrMDWPassword, having type string - ParameterId["AttrMDWPassword"] = "widgetAttrMdwPassword"; - // DPI_AttrPassword, having type string - ParameterId["AttrPassword"] = "widgetAttrPassword"; - // DPI_DatasourcePassword, having type string - ParameterId["DatasourcePassword"] = "datasourcePassword"; - // DPI_FederatedKeychain, having type string - ParameterId["FederatedKeychain"] = "federatedKeychain"; - // DPI_DataParameterID, having type string - ParameterId["DataParameterID"] = "dataParamType"; - // DPI_ConnectServerWidgetType, having type ConnectServerWidgetType - ParameterId["ConnectServerWidgetType"] = "connectServerWidgetType"; - // DPI_AuthenticationMode, having type Mode - ParameterId["AuthenticationMode"] = "authMode"; - // DPI_ReconnectAuthMode, having type ReconnectMode - ParameterId["ReconnectAuthMode"] = "reconnectAuthMode"; - // DPI_CurrentAuthOption, having type AuthOption - ParameterId["CurrentAuthOption"] = "currAuthOption"; - // DPI_AuthOptionList, having type AuthOption[] - ParameterId["AuthOptionList"] = "authOptions"; - // DPI_ConnectionSpecificationType, having type ConnectionSpecificationType - ParameterId["ConnectionSpecificationType"] = "connectionSpecificationType"; - // DPI_DataType, having type DataType - ParameterId["DataType"] = "dataType"; - // DPI_LHSDataType, having type DataType - ParameterId["LHSDataType"] = "lhsDataType"; - // DPI_RHSDataType, having type DataType - ParameterId["RHSDataType"] = "rhsDataType"; - // DPI_DefaultFieldRole, having type FieldRole - ParameterId["DefaultFieldRole"] = "defaultFieldRole"; - // DPI_FieldRole, having type FieldRole - ParameterId["FieldRole"] = "fieldRole"; - // DPI_DefaultFieldType, having type FieldType - ParameterId["DefaultFieldType"] = "defaultFieldType"; - // DPI_FieldType, having type FieldType - ParameterId["FieldType"] = "fieldType"; - // DPI_FieldTypeList, having type FieldType[] - ParameterId["FieldTypeList"] = "fieldTypeList"; - // DPI_FieldTypeListDetail, having type FieldType[] - ParameterId["FieldTypeListDetail"] = "fieldTypeListDetail"; - // DPI_AggType, having type AggType - ParameterId["AggType"] = "aggregation"; - // DPI_DefaultAggType, having type AggType - ParameterId["DefaultAggType"] = "defaultAggregation"; - // DPI_ForecastAgg, having type AggType - ParameterId["ForecastAgg"] = "forecastSummarizeTo"; - // DPI_ForecastAutoAgg, having type AggType - ParameterId["ForecastAutoAgg"] = "forecastAutoSummarizeTo"; - // DPI_ForecastAutoRangeUnits, having type AggType - ParameterId["ForecastAutoRangeUnits"] = "forecastAutoRangeUnits"; - // DPI_ForecastEndOfRangeUnits, having type AggType - ParameterId["ForecastEndOfRangeUnits"] = "forecastEndOfRangeUnits"; - // DPI_ForecastNextRangeUnits, having type AggType - ParameterId["ForecastNextRangeUnits"] = "forecastNextRangeUnits"; - // DPI_SourceAgg, having type AggType - ParameterId["SourceAgg"] = "sourceAggregation"; - // DPI_TargetAgg, having type AggType - ParameterId["TargetAgg"] = "targetAggregation"; - // DPI_AggregateByAggTypes, having type AggType[] - ParameterId["AggregateByAggTypes"] = "aggregateByAggTypes"; - // DPI_AggregationValues, having type AggType[] - ParameterId["AggregationValues"] = "aggregationValues"; - // DPI_SortAggValues, having type AggType[] - ParameterId["SortAggValues"] = "sortAggValues"; - // DPI_ColumnClass, having type ColumnClass - ParameterId["ColumnClass"] = "columnClass"; - // DPI_ConnectionWidgetType, having type ConnectionWidgetType - ParameterId["ConnectionWidgetType"] = "connectionWidgetType"; - // DPI_TablePillIcon, having type TablePillIcon - ParameterId["TablePillIcon"] = "tablePillIconType"; - // DPI_EnumeratedEntityType, having type EntityType - ParameterId["EnumeratedEntityType"] = "enumeratedEntityType"; - // DPI_PickEntitySearchType, having type PickEntitySearchType - ParameterId["PickEntitySearchType"] = "entitySearchType"; - // DPI_ExpressionOp, having type Op - ParameterId["ExpressionOp"] = "expressionOp"; - // DPI_ExpressionOperatorCaption, having type ExpressionOperatorCaptionPresModel - ParameterId["ExpressionOperatorCaption"] = "expressionOperatorCaption"; - // DPI_RelationalExperessionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["RelationalExperessionOps"] = "relationalExpressionOps"; - // DPI_HierarchyExpressionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["HierarchyExpressionOps"] = "hierarchyExpressionOps"; - // DPI_DefaultSortDirection, having type SortDirection - ParameterId["DefaultSortDirection"] = "defSortOrder"; - // DPI_SortDirection, having type SortDirection - ParameterId["SortDirection"] = "sortOrder"; - // DPI_SortDirectionValues, having type SortDirection[] - ParameterId["SortDirectionValues"] = "sortDirectionValues"; - // DPI_CubeMetadataCategory, having type CubeMetadataCategory - ParameterId["CubeMetadataCategory"] = "cubeMetadataCategory"; - // DPI_CubeMetadataCategories, having type CubeMetadataCategory[] - ParameterId["CubeMetadataCategories"] = "cubeMetadataCategories"; - // DPI_GoogleBasicInfoType, having type GoogleBasicInfoType - ParameterId["GoogleBasicInfoType"] = "googleBasicInfoType"; - // DPI_GoogleAnalyticsDateRangeOptionType, having type DateRange - ParameterId["GoogleAnalyticsDateRangeOptionType"] = "googleAnalyticsDateRangeOptionType"; - // DPI_TableCalcType, having type TableCalcType - ParameterId["TableCalcType"] = "tableCalcType"; - // DPI_TableCalcTypeValues, having type TableCalcType[] - ParameterId["TableCalcTypeValues"] = "tableCalcTypeValues"; - // DPI_RelativeAddress, having type RelativeAddress - ParameterId["RelativeAddress"] = "relativeAddress"; - // DPI_RelativeValues, having type RelativeAddress[] - ParameterId["RelativeValues"] = "relativeValues"; - // DPI_OrderingType, having type OrderingType - ParameterId["OrderingType"] = "orderingType"; - // DPI_OrderingTypeValues, having type OrderingType[] - ParameterId["OrderingTypeValues"] = "orderingTypeValues"; - // DPI_CategoricalBinItemType, having type CategoricalBinItemType - ParameterId["CategoricalBinItemType"] = "categoricalBinItemType"; - // DPI_AuthenticationInfos, having type AuthenticationSettingsPresModel - ParameterId["AuthenticationInfos"] = "authInfo"; - // DPI_ConnectionWidgetParams, having type ConnectionParamsPresModel - ParameterId["ConnectionWidgetParams"] = "widgetConnectionParams"; - // DPI_ConnectionSettings, having type ConnectionSettingsPresModel - ParameterId["ConnectionSettings"] = "connectionSettings"; - // DPI_ReconnectAuthenticationSettings, having type AuthenticationSettingsPresModel - ParameterId["ReconnectAuthenticationSettings"] = "reconnectAuthSettings"; - // DPI_CubeConnectionSpecificationOption, having type CubeConnectionSpecificationOptionPresModel - ParameterId["CubeConnectionSpecificationOption"] = "cubeConnectionSpecificationOption"; - // DPI_CubeConnectionSpecificationOptions, having type CubeConnectionSpecificationOptionPresModel[] - ParameterId["CubeConnectionSpecificationOptions"] = "cubeConnectionSpecificationOptions"; - // DPI_CubeConnectionSpecification, having type CubeConnectionSpecificationPresModel - ParameterId["CubeConnectionSpecification"] = "cubeConnectionSpecification"; - // DPI_ConnectionSettingsOption, having type ConnectionSettingsOptionPresModel - ParameterId["ConnectionSettingsOption"] = "connectionSettingsOption"; - // DPI_ConnectionSettingsOptions, having type ConnectionSettingsOptionPresModel[] - ParameterId["ConnectionSettingsOptions"] = "connectionSettingsOptions"; - // DPI_StringCollation, having type StringCollationPresModel - ParameterId["StringCollation"] = "stringCollation"; - // DPI_DatabaseEnumeration, having type DatabaseEnumerationPresModel - ParameterId["DatabaseEnumeration"] = "databaseEnumeration"; - // DPI_SchemaEnumeration, having type SchemaEnumerationPresModel - ParameterId["SchemaEnumeration"] = "schemaEnumeration"; - // DPI_StandardConnectionEnumeration, having type StandardConnectionEnumerationPresModel - ParameterId["StandardConnectionEnumeration"] = "standardConnectionEnumeration"; - // DPI_StoredProcedureEnumeration, having type StoredProcedureEnumerationPresModel - ParameterId["StoredProcedureEnumeration"] = "storedProcedureEnumeration"; - // DPI_TableEnumeration, having type TableEnumerationPresModel - ParameterId["TableEnumeration"] = "tableEnumeration"; - // DPI_WarehouseEnumeration, having type WarehouseEnumerationPresModel - ParameterId["WarehouseEnumeration"] = "warehouseEnumeration"; - // DPI_SlowMetadataSchemaList, having type SlowMetadataSchemaListPresModel - ParameterId["SlowMetadataSchemaList"] = "slowMetadataSchemaList"; - // DPI_SlowMetadataTableList, having type SlowMetadataTableListPresModel - ParameterId["SlowMetadataTableList"] = "slowMetadataTableList"; - // DPI_CubeCatalog, having type CubeCatalogPresModel - ParameterId["CubeCatalog"] = "cubeCatalog"; - // DPI_CubeCatalogs, having type CubeCatalogPresModel[] - ParameterId["CubeCatalogs"] = "cubeCatalogs"; - // DPI_CubeCatalogEnumeration, having type CubeCatalogEnumerationPresModel - ParameterId["CubeCatalogEnumeration"] = "cubeCatalogEnumeration"; - // DPI_Cube, having type CubePresModel - ParameterId["Cube"] = "cube"; - // DPI_Cubes, having type CubePresModel[] - ParameterId["Cubes"] = "cubes"; - // DPI_CubeEnumeration, having type CubeEnumerationPresModel - ParameterId["CubeEnumeration"] = "cubeEnumeration"; - // DPI_GoogleAnalyticsBasicItem, having type GoogleAnalyticsBasicItemPresModel - ParameterId["GoogleAnalyticsBasicItem"] = "googleAnalyticsBasicItem"; - // DPI_GAMeasureSets, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GAMeasureSets"] = "gaMeasureSets"; - // DPI_GoogleAnalyticsViews, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsViews"] = "googleAnalyticsViews"; - // DPI_GoogleAnalyticsProperties, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsProperties"] = "googleAnalyticsProperties"; - // DPI_GoogleBasicInfoItems, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleBasicInfoItems"] = "googleAnalyticsAccounts"; - // DPI_GoogleAnalyticsComplexItem, having type GoogleAnalyticsComplexItemPresModel - ParameterId["GoogleAnalyticsComplexItem"] = "googleAnalyticsComplexItem"; - // DPI_GoogleAnalyticsPossibleDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleDimensions"] = "googleAnalyticsPossibleDimensions"; - // DPI_GoogleAnalyticsPossibleMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleMeasures"] = "googleAnalyticsPossibleMeasures"; - // DPI_GoogleAnalyticsPossibleSegments, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleSegments"] = "googleAnalyticsPossibleSegments"; - // DPI_GoogleAnalyticsSelectedDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedDimensions"] = "googleAnalyticsSelectedDimensions"; - // DPI_GoogleAnalyticsSelectedMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedMeasures"] = "googleAnalyticsSelectedMeasures"; - // DPI_GoogleAnalyticsDateRangeOption, having type GoogleAnalyticsDateRangeOptionPresModel - ParameterId["GoogleAnalyticsDateRangeOption"] = "googleAnalyticsDateRangeOption"; - // DPI_GoogleAnalyticsDateRangeOptions, having type GoogleAnalyticsDateRangeOptionPresModel[] - ParameterId["GoogleAnalyticsDateRangeOptions"] = "googleAnalyticsDateRangeOptions"; - // DPI_GoogleAnalyticsEndDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsEndDate"] = "googleAnalyticsEndDate"; - // DPI_GoogleAnalyticsStartDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsStartDate"] = "googleAnalyticsStartDate"; - // DPI_GoogleAnalyticsDateRange, having type GoogleAnalyticsDateRangePresModel - ParameterId["GoogleAnalyticsDateRange"] = "googleAnalyticsDateRange"; - // DPI_GoogleAnalyticsQueryPartitioning, having type GoogleAnalyticsQueryPartitioningPresModel - ParameterId["GoogleAnalyticsQueryPartitioning"] = "googleAnalyticsQueryPartitioning"; - // DPI_GAConnectionDescription, having type GoogleAnalyticsConnectionDescriptionPresModel - ParameterId["GAConnectionDescription"] = "gaConnectionDescription"; - // DPI_GoogleSheetItem, having type GoogleSheetItemPresModel - ParameterId["GoogleSheetItem"] = "googleSheetItem"; - // DPI_GoogleSheetItems, having type GoogleSheetItemPresModel[] - ParameterId["GoogleSheetItems"] = "googleSheetItems"; - // DPI_GoogleSheetsListPresModel, having type GoogleSheetsListPresModel - ParameterId["GoogleSheetsListPresModel"] = "googleSheetsList"; - // DPI_GoogleSheetPanePresModel, having type GoogleSheetPanePresModel - ParameterId["GoogleSheetPanePresModel"] = "googleSheetPane"; - // DPI_TableauServerConnectionDescription, having type TableauServerConnectionDescriptionPresModel - ParameterId["TableauServerConnectionDescription"] = "tableauServerConnectionDescription"; - // DPI_InitialSQLPresModel, having type InitialSQLPresModel - ParameterId["InitialSQLPresModel"] = "initialSqlPresModel"; - // DPI_QueryBandingPresModel, having type QueryBandingPresModel - ParameterId["QueryBandingPresModel"] = "queryBandingPresModel"; - // DPI_SlowMetadata, having type SlowMetadataPresModel - ParameterId["SlowMetadata"] = "slowMetadata"; - // DPI_SlowMetadataSchemaSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataSchemaSearchPresModel"] = "slowMetadataSchemaSearch"; - // DPI_SlowMetadataTableSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataTableSearchPresModel"] = "slowMetadataTableSearch"; - // DPI_TableauServerProjectsPresModel, having type TableauServerProjectsPresModel - ParameterId["TableauServerProjectsPresModel"] = "tableauServerProjectsPresmodel"; - // DPI_TableauServerDataSourcePresModel, having type TableauServerDataSourcePresModel - ParameterId["TableauServerDataSourcePresModel"] = "tableauServerDataSourcePresmodel"; - // DPI_TableauServerDataSourcePresModels, having type TableauServerDataSourcePresModel[] - ParameterId["TableauServerDataSourcePresModels"] = "tableauServerDataSourcePresmodels"; - // DPI_TableauServerDataSourcesPresModel, having type TableauServerDataSourcesPresModel - ParameterId["TableauServerDataSourcesPresModel"] = "tableauServerDataSourcesPresmodel"; - // DPI_TableauServerDataPresModel, having type TableauServerDataPresModel - ParameterId["TableauServerDataPresModel"] = "tableauServerDataPresmodel"; - // DPI_StoredProcedureParameterPresModel, having type StoredProcedureParameterPresModel - ParameterId["StoredProcedureParameterPresModel"] = "storedProcedureParameter"; - // DPI_StoredProcedureParametersPresModel, having type StoredProcedureParameterPresModel[] - ParameterId["StoredProcedureParametersPresModel"] = "storedProcedureParameters"; - // DPI_CustomSQLInfo, having type CustomSQLInfoPresModel - ParameterId["CustomSQLInfo"] = "customSqlInfo"; - // DPI_ConnectionTableInfo, having type ConnectionTableInfoPresModel - ParameterId["ConnectionTableInfo"] = "connectionTableInfo"; - // DPI_TableInfos, having type ConnectionTableInfoPresModel[] - ParameterId["TableInfos"] = "tableInfos"; - // DPI_ConnectionDescription, having type ConnectionDescriptionPresModel - ParameterId["ConnectionDescription"] = "connectionDescription"; - // DPI_DataSourceParserValidationMode, having type DataSourceParserValidationMode - ParameterId["DataSourceParserValidationMode"] = "dataSourceParserValidationMode"; - // DPI_OAuthCredentialTypeInfo, having type OAuthCredentialTypeInfoPresModel - ParameterId["OAuthCredentialTypeInfo"] = "oauthCredentialTypeInfo"; - // DPI_OAuthCredentialTypeInfos, having type OAuthCredentialTypeInfoPresModel[] - ParameterId["OAuthCredentialTypeInfos"] = "oauthCredentialTypeInfos"; - // DPI_OAuthSettings, having type OAuthSettingsPresModel - ParameterId["OAuthSettings"] = "oauthSettings"; - // DPI_CredentialTypePropertiesFlag, having type CredentialTypePropertiesFlag - ParameterId["CredentialTypePropertiesFlag"] = "credentialTypePropertiesFlag"; - // DPI_CredentialTypePropertiesFlags, having type CredentialTypePropertiesFlag[] - ParameterId["CredentialTypePropertiesFlags"] = "credentialTypePropertiesFlags"; - // DPI_ConnectionTypeEnum, having type ConnectionTypeEnum - ParameterId["ConnectionTypeEnum"] = "connectionTypeEnum"; - // DPI_ConnectorType, having type ConnectorType - ParameterId["ConnectorType"] = "connectorType"; - // DPI_PdfPagePicker, having type PdfPagePickerPresModel - ParameterId["PdfPagePicker"] = "pdfPagePicker"; - // DPI_ActivateNew, having type bool - ParameterId["ActivateNew"] = "activateNew"; - // DPI_AddActions, having type bool - ParameterId["AddActions"] = "addActions"; - // DPI_AddAsFloating, having type bool - ParameterId["AddAsFloating"] = "addAsFloating"; - // DPI_AddColorDictionary, having type bool - ParameterId["AddColorDictionary"] = "addColorDictionary"; - // DPI_AddDroplines, having type bool - ParameterId["AddDroplines"] = "addDroplines"; - // DPI_AddHeaders, having type bool - ParameterId["AddHeaders"] = "addHeaders"; - // DPI_AddHighlighting, having type bool - ParameterId["AddHighlighting"] = "addHighlighting"; - // DPI_AddImageDictionary, having type bool - ParameterId["AddImageDictionary"] = "addImageDictionary"; - // DPI_AddMarkLabels, having type bool - ParameterId["AddMarkLabels"] = "addMarkLabels"; - // DPI_AddPages, having type bool - ParameterId["AddPages"] = "addPages"; - // DPI_AddSelection, having type bool - ParameterId["AddSelection"] = "addSelection"; - // DPI_AddToFolder, having type bool - ParameterId["AddToFolder"] = "addToFolder"; - // DPI_AddVizData, having type bool - ParameterId["AddVizData"] = "addVizData"; - // DPI_AlertConditionMet, having type bool - ParameterId["AlertConditionMet"] = "alertConditionMet"; - // DPI_AllFields, having type bool - ParameterId["AllFields"] = "allFields"; - // DPI_AllOnEmpty, having type bool - ParameterId["AllOnEmpty"] = "allOnEmpty"; - // DPI_AllPages, having type bool - ParameterId["AllPages"] = "includeAllPages"; - // DPI_AllowPreviewSizeChange, having type bool - ParameterId["AllowPreviewSizeChange"] = "allowPreviewSizeChange"; - // DPI_AllSelectedIsEffectivelyRangeTypeAll, having type bool - ParameterId["AllSelectedIsEffectivelyRangeTypeAll"] = "allSelectedIsEffectivelyRangeTypeAll"; - // DPI_AllStoryPoints, having type bool - ParameterId["AllStoryPoints"] = "allStorypoints"; - // DPI_AllowAllRange, having type bool - ParameterId["AllowAllRange"] = "allowAllRange"; - // DPI_AllowCreatingNewParameters, having type bool - ParameterId["AllowCreatingNewParameters"] = "allowCreatingNewParameters"; - // DPI_AllowDuplicateFieldDropOnFilterShelf, having type bool - ParameterId["AllowDuplicateFieldDropOnFilterShelf"] = "allowDuplicateFieldDropOnFilterShelf"; - // DPI_AllowFilterPreset, having type bool - ParameterId["AllowFilterPreset"] = "allowFilterPreset"; - // DPI_AllowHoverActions, having type bool - ParameterId["AllowHoverActions"] = "allowHoverActions"; - // DPI_AllowHyphenation, having type bool - ParameterId["AllowHyphenation"] = "allowHyphenation"; - // DPI_AllowJoinOnCalc, having type bool - ParameterId["AllowJoinOnCalc"] = "allowJoinOnCalc"; - // DPI_AllowManualRange, having type bool - ParameterId["AllowManualRange"] = "allowManualRange"; - // DPI_AllowMapping, having type bool - ParameterId["AllowMapping"] = "allowMapping"; - // DPI_AllowMultiSelect, having type bool - ParameterId["AllowMultiSelect"] = "allowMultiSelect"; - // DPI_AllowNull, having type bool - ParameterId["AllowNull"] = "allowNull"; - // DPI_AllowPanZoom, having type bool - ParameterId["AllowPanZoom"] = "allowPanZoom"; - // DPI_AllowPatternBased, having type bool - ParameterId["AllowPatternBased"] = "allowPatternBasedUnion"; - // DPI_AllowPromptText, having type bool - ParameterId["AllowPromptText"] = "allowPromptText"; - // DPI_AllowSaveDataSource, having type bool - ParameterId["AllowSaveDataSource"] = "allowSaveDataSource"; - // DPI_AllowWholeDate, having type bool - ParameterId["AllowWholeDate"] = "allowWholeDate"; - // DPI_AllowWork, having type bool - ParameterId["AllowWork"] = "allowWork"; - // DPI_AllowWrap, having type bool - ParameterId["AllowWrap"] = "allowWrap"; - // DPI_AppIs32Bit, having type bool - ParameterId["AppIs32Bit"] = "appIs32Bit"; - // DPI_AppIs64Bit, having type bool - ParameterId["AppIs64Bit"] = "appIs64Bit"; - // DPI_AppIsBeta, having type bool - ParameterId["AppIsBeta"] = "appIsBeta"; - // DPI_AppIsOEM, having type bool - ParameterId["AppIsOEM"] = "appIsOem"; - // DPI_AppendTde, having type bool - ParameterId["AppendTde"] = "appendTde"; - // DPI_ApplyColors, having type bool - ParameterId["ApplyColors"] = "applyColors"; - // DPI_ApplyNewSelection, having type bool - ParameterId["ApplyNewSelection"] = "applyNewSelection"; - // DPI_AreConfidenceBandsValid, having type bool - ParameterId["AreConfidenceBandsValid"] = "areConfidenceBandsValid"; - // DPI_AreDataSourceFiltersVisible, having type bool - ParameterId["AreDataSourceFiltersVisible"] = "areDataSourceFiltersVisible"; - // DPI_AreExtractFiltersEnabled, having type bool - ParameterId["AreExtractFiltersEnabled"] = "areExtractFiltersEnabled"; - // DPI_AreTotalsUsed, having type bool - ParameterId["AreTotalsUsed"] = "areTotalsUsed"; - // DPI_AtTheLevelFieldIsInvalid, having type bool - ParameterId["AtTheLevelFieldIsInvalid"] = "atTheLevelFieldIsInvalid"; - // DPI_AutoURL, having type bool - ParameterId["AutoURL"] = "autoUrl"; - // DPI_AutoUpdate, having type bool - ParameterId["AutoUpdate"] = "autoUpdate"; - // DPI_BackingSheetIsDashboard, having type bool - ParameterId["BackingSheetIsDashboard"] = "isBackingSheetDashboard"; - // DPI_BeginDataSourcePresModelUpdate, having type bool - ParameterId["BeginDataSourcePresModelUpdate"] = "beginDataSourcePresModelUpdate"; - // DPI_AggregateDrillUp, having type bool - ParameterId["AggregateDrillUp"] = "boolAggregateDrillUp"; - // DPI_BoxplotMarkExclusion, having type bool - ParameterId["BoxplotMarkExclusion"] = "boxplotMarkExclusion"; - // DPI_BreakPageOnPane, having type bool - ParameterId["BreakPageOnPane"] = "breakPageOnPane"; - // DPI_BrushLegends, having type bool - ParameterId["BrushLegends"] = "brushLegends"; - // DPI_CachePresModels, having type bool - ParameterId["CachePresModels"] = "cachePresModels"; - // DPI_CanAddConnections, having type bool - ParameterId["CanAddConnections"] = "canAddConnections"; - // DPI_SortPillCanBeDragged, having type bool - ParameterId["SortPillCanBeDragged"] = "sortPillCanBeDragged"; - // DPI_CanAddTable, having type bool - ParameterId["CanAddTable"] = "canAddTable"; - // DPI_CanAnalyzeData, having type bool - ParameterId["CanAnalyzeData"] = "canAnalyzeData"; - // DPI_CanChangeDataType, having type bool - ParameterId["CanChangeDataType"] = "canChangeDataType"; - // DPI_CanChangeSemanticRole, having type bool - ParameterId["CanChangeSemanticRole"] = "canChangeSemanticRole"; - // DPI_CanDerive, having type bool - ParameterId["CanDerive"] = "canDerive"; - // DPI_CanDrop, having type bool - ParameterId["CanDrop"] = "canDrop"; - // DPI_CanEdit, having type bool - ParameterId["CanEdit"] = "canEdit"; - // DPI_CanEditLegendColor, having type bool - ParameterId["CanEditLegendColor"] = "canEditLegendColor"; - // DPI_CanEnableFilterStateButton, having type bool - ParameterId["CanEnableFilterStateButton"] = "canEnableFilterStateButton"; - // DPI_CanFloat, having type bool - ParameterId["CanFloat"] = "canFloat"; - // DPI_CanHaveTitle, having type bool - ParameterId["CanHaveTitle"] = "canHaveTitle"; - // DPI_CanIgnoreUpdate, having type bool - ParameterId["CanIgnoreUpdate"] = "canIgnoreUpdate"; - // DPI_CanNavigateBack, having type bool - ParameterId["CanNavigateBack"] = "canNavigateBack"; - // DPI_CanNavigateForward, having type bool - ParameterId["CanNavigateForward"] = "canNavigateForward"; - // DPI_CanScrollX, having type bool - ParameterId["CanScrollX"] = "canScrollX"; - // DPI_CanScrollY, having type bool - ParameterId["CanScrollY"] = "canScrollY"; - // DPI_CanSetDomain, having type bool - ParameterId["CanSetDomain"] = "canSetDomain"; - // DPI_CanSetMapUnit, having type bool - ParameterId["CanSetMapUnit"] = "canSetMapUnit"; - // DPI_CanShowApplyButton, having type bool - ParameterId["CanShowApplyButton"] = "canShowApplyButton"; - // DPI_CanShowFilterStateButton, having type bool - ParameterId["CanShowFilterStateButton"] = "canShowFilterStateButton"; - // DPI_CanShowMoreFewerButton, having type bool - ParameterId["CanShowMoreFewerButton"] = "canShowMoreFewerButton"; - // DPI_CanShowSyncClientOptions, having type bool - ParameterId["CanShowSyncClientOptions"] = "canShowSyncClientOptions"; - // DPI_CanSort, having type bool - ParameterId["CanSort"] = "canSort"; - // DPI_CanSortOrdinally, having type bool - ParameterId["CanSortOrdinally"] = "canSortOrdinal"; - // DPI_CanToggleAutomaticDrill, having type bool - ParameterId["CanToggleAutomaticDrill"] = "canToggleAutomaticDrill"; - // DPI_CanToggleGeographicSearch, having type bool - ParameterId["CanToggleGeographicSearch"] = "canToggleGeographicSearch"; - // DPI_CanToggleMapScale, having type bool - ParameterId["CanToggleMapScale"] = "canToggleMapScale"; - // DPI_CanUseFullColorRange, having type bool - ParameterId["CanUseFullColorRange"] = "canUseFullColorRange"; - // DPI_CenterHorizontally, having type bool - ParameterId["CenterHorizontally"] = "centerHorizontally"; - // DPI_CenterVertically, having type bool - ParameterId["CenterVertically"] = "centerVertically"; - // DPI_ChangeAllFields, having type bool - ParameterId["ChangeAllFields"] = "changeAllFields"; - // DPI_Changed, having type bool - ParameterId["Changed"] = "changed"; - // DPI_ClearBrushing, having type bool - ParameterId["ClearBrushing"] = "clearBrushing"; - // DPI_ClearSort, having type bool - ParameterId["ClearSort"] = "clearSort"; - // DPI_ClearView, having type bool - ParameterId["ClearView"] = "clearView"; - // DPI_Collapsed, having type bool - ParameterId["Collapsed"] = "collapsed"; - // DPI_ConsolidateInCommit, having type bool - ParameterId["ConsolidateInCommit"] = "consolidateInCommit"; - // DPI_ClusterEnableScaledCheckbox, having type bool - ParameterId["ClusterEnableScaledCheckbox"] = "clusterEnableScaledCheckbox"; - // DPI_CommitPillFinished, having type bool - ParameterId["CommitPillFinished"] = "commitPillFinished"; - // DPI_CompressArrays, having type bool - ParameterId["CompressArrays"] = "compressArrays"; - // DPI_ComputeCompoundedRate, having type bool - ParameterId["ComputeCompoundedRate"] = "computeCompoundedRate"; - // DPI_ConfidenceIntervalAllowed, having type bool - ParameterId["ConfidenceIntervalAllowed"] = "confidenceIntervalAllowed"; - // DPI_ConfigIsDesktopStandard, having type bool - ParameterId["ConfigIsDesktopStandard"] = "configIsDesktopStandard"; - // DPI_ConfigIsInteractor, having type bool - ParameterId["ConfigIsInteractor"] = "configIsInteractor"; - // DPI_ConfigIsPublic, having type bool - ParameterId["ConfigIsPublic"] = "configIsPublic"; - // DPI_ConfigIsReader, having type bool - ParameterId["ConfigIsReader"] = "configIsReader"; - // DPI_ContainsQuant, having type bool - ParameterId["ContainsQuant"] = "containsQuant"; - // DPI_ContainsValidDatasources, having type bool - ParameterId["ContainsValidDatasources"] = "containsValidDatasources"; - // DPI_ControllerMissing, having type bool - ParameterId["ControllerMissing"] = "controllerMissing"; - // DPI_CreateExtractForPublish, having type bool - ParameterId["CreateExtractForPublish"] = "createExtractForPublish"; - // DPI_CrossTab, having type bool - ParameterId["CrossTab"] = "crossTab"; - // DPI_CullLabels, having type bool - ParameterId["CullLabels"] = "cullLabels"; - // DPI_CurrentCustViewIdFlag, having type bool - ParameterId["CurrentCustViewIdFlag"] = "isCurrentCustViewIdValid"; - // DPI_DashboardEnableSnap, having type bool - ParameterId["DashboardEnableSnap"] = "dashboardEnableSnap"; - // DPI_DashboardShowGrid, having type bool - ParameterId["DashboardShowGrid"] = "dashboardShowGrid"; - // DPI_DataGridSortOrder, having type bool - ParameterId["DataGridSortOrder"] = "datagridSortOrder"; - // DPI_DeleteExtract, having type bool - ParameterId["DeleteExtract"] = "deleteExtract"; - // DPI_DeleteOnlySpecifiedSelection, having type bool - ParameterId["DeleteOnlySpecifiedSelection"] = "deleteOnlySpecifiedSelection"; - // DPI_DeleteOrphans, having type bool - ParameterId["DeleteOrphans"] = "deleteOrphans"; - // DPI_DisabledDataConnectionClassNames, having type bool - ParameterId["DisabledDataConnectionClassNames"] = "disabledDataConnectionClassNames"; - // DPI_DisablePresModelHandler, having type bool - ParameterId["DisablePresModelHandler"] = "disablePresModelHandler"; - // DPI_DisplayDate, having type bool - ParameterId["DisplayDate"] = "displayDate"; - // DPI_DisplayTime, having type bool - ParameterId["DisplayTime"] = "displayTime"; - // DPI_DoDropUIAction, having type bool - ParameterId["DoDropUIAction"] = "doDropUiAction"; - // DPI_DoMerge, having type bool - ParameterId["DoMerge"] = "doMerge"; - // DPI_DoPreDropUIAction, having type bool - ParameterId["DoPreDropUIAction"] = "doPreDropUiAction"; - // DPI_DoQuery, having type bool - ParameterId["DoQuery"] = "doQuery"; - // DPI_DragHorz, having type bool - ParameterId["DragHorz"] = "dragHorz"; - // DPI_DrillDown, having type bool - ParameterId["DrillDown"] = "drillDown"; - // DPI_DropToXAxis, having type bool - ParameterId["DropToXAxis"] = "dropToXAxis"; - // DPI_DropToYAxis, having type bool - ParameterId["DropToYAxis"] = "dropToYAxis"; - // DPI_DropUnnamedFields, having type bool - ParameterId["DropUnnamedFields"] = "dropUnnamedFields"; - // DPI_EditExisting, having type bool - ParameterId["EditExisting"] = "editExisting"; - // DPI_EditingConnection, having type bool - ParameterId["EditingConnection"] = "editingConnection"; - // DPI_EmbedCredentials, having type bool - ParameterId["EmbedCredentials"] = "embedCredentials"; - // DPI_EmbedOAuthCredential, having type bool - ParameterId["EmbedOAuthCredential"] = "embedOauthCredentials"; - // DPI_EmptyHighlightFogAll, having type bool - ParameterId["EmptyHighlightFogAll"] = "emptyHighlightFogAll"; - // DPI_EnableAlphabeticSort, having type bool - ParameterId["EnableAlphabeticSort"] = "enableAlphabeticSort"; - // DPI_EnableAutomaticDrill, having type bool - ParameterId["EnableAutomaticDrill"] = "enableAutomaticDrill"; - // DPI_EnableConfidenceBands, having type bool - ParameterId["EnableConfidenceBands"] = "enableConfidenceBands"; - // DPI_EnableDataOrderSort, having type bool - ParameterId["EnableDataOrderSort"] = "enableDataOrderSort"; - // DPI_EnableFieldSort, having type bool - ParameterId["EnableFieldSort"] = "enableFieldSort"; - // DPI_EnableInstantAnalytics, having type bool - ParameterId["EnableInstantAnalytics"] = "enableInstantAnalytics"; - // DPI_EnableLines, having type bool - ParameterId["EnableLines"] = "enableLines"; - // DPI_EnableManualSort, having type bool - ParameterId["EnableManualSort"] = "enableManualSort"; - // DPI_EnableMarks, having type bool - ParameterId["EnableMarks"] = "enableMarks"; - // DPI_EnableMultipleSelection, having type bool - ParameterId["EnableMultipleSelection"] = "enableMultipleSelection"; - // DPI_EnablePrefetching, having type bool - ParameterId["EnablePrefetching"] = "enablePrefetching"; - // DPI_EnableTableCalcDensification, having type bool - ParameterId["EnableTableCalcDensification"] = "enableTableCalcDensification"; - // DPI_EndDataSourcePresModelUpdate, having type bool - ParameterId["EndDataSourcePresModelUpdate"] = "endDataSourcePresModelUpdate"; - // DPI_EstimateNulls, having type bool - ParameterId["EstimateNulls"] = "estimateNulls"; - // DPI_Exclude, having type bool - ParameterId["Exclude"] = "exclude"; - // DPI_ExcludeColor, having type bool - ParameterId["ExcludeColor"] = "excludeColor"; - // DPI_ExcludeCubeDenorm, having type bool - ParameterId["ExcludeCubeDenorm"] = "excludeCubeDenorm"; - // DPI_ExcludeInterceptEnabled, having type bool - ParameterId["ExcludeInterceptEnabled"] = "excludeInterceptEnabled"; - // DPI_ExcludeLocalFunctions, having type bool - ParameterId["ExcludeLocalFunctions"] = "excludeLocalFunctions"; - // DPI_ExportDashboardImageFromSheet, having type bool - ParameterId["ExportDashboardImageFromSheet"] = "exportImageSheetAsDashboard"; - // DPI_ExtSvcConfigIsAuthEnabled, having type bool - ParameterId["ExtSvcConfigIsAuthEnabled"] = "extSvcConfigIsAuthEnabled"; - // DPI_ExtractFullRefresh, having type bool - ParameterId["ExtractFullRefresh"] = "extractFullRefresh"; - // DPI_ExtractNeedsRefresh, having type bool - ParameterId["ExtractNeedsRefresh"] = "extractNeedsRefresh"; - // DPI_ExtractPending, having type bool - ParameterId["ExtractPending"] = "extractPending"; - // DPI_ExtractSelected, having type bool - ParameterId["ExtractSelected"] = "extractSelected"; - // DPI_FederatableOnly, having type bool - ParameterId["FederatableOnly"] = "federatableOnly"; - // DPI_FieldSortOrder, having type bool - ParameterId["FieldSortOrder"] = "fieldSortOrder"; - // DPI_FieldSupportsContains, having type bool - ParameterId["FieldSupportsContains"] = "fieldSupportsContains"; - // DPI_FieldSupportsEndsWith, having type bool - ParameterId["FieldSupportsEndsWith"] = "fieldSupportsEndsWith"; - // DPI_FieldSupportsStartsWith, having type bool - ParameterId["FieldSupportsStartsWith"] = "fieldSupportsStartsWith"; - // DPI_FillAbove, having type bool - ParameterId["FillAbove"] = "fillAbove"; - // DPI_FillBelow, having type bool - ParameterId["FillBelow"] = "fillBelow"; - // DPI_FillWithZeroes, having type bool - ParameterId["FillWithZeroes"] = "fillZeroes"; - // DPI_FilterIsNamed, having type bool - ParameterId["FilterIsNamed"] = "filterIsNamed"; - // DPI_Focus, having type bool - ParameterId["Focus"] = "focus"; - // DPI_ForInternalUse, having type bool - ParameterId["ForInternalUse"] = "internalUse"; - // DPI_ForceBrowserRendering, having type bool - ParameterId["ForceBrowserRendering"] = "forceBrowserRendering"; - // DPI_ForceCache, having type bool - ParameterId["ForceCache"] = "forceCache"; - // DPI_ForceColorFromApp, having type bool - ParameterId["ForceColorFromApp"] = "forceColorFromApp"; - // DPI_ForceConnectionAttempt, having type bool - ParameterId["ForceConnectionAttempt"] = "forceConnectionAttempt"; - // DPI_ForceConsolidateInCommit, having type bool - ParameterId["ForceConsolidateInCommit"] = "forceConsolidateInCommit"; - // DPI_ForceExtractRefresh, having type bool - ParameterId["ForceExtractRefresh"] = "extractForceRefresh"; - // DPI_ForceInterceptZero, having type bool - ParameterId["ForceInterceptZero"] = "forceInterceptZero"; - // DPI_ForceOldConnectExperience, having type bool - ParameterId["ForceOldConnectExperience"] = "forceOldConnectExperience"; - // DPI_ForceToggleHighlightStateOn, having type bool - ParameterId["ForceToggleHighlightStateOn"] = "forceHighlightOn"; - // DPI_ForceWholeDate, having type bool - ParameterId["ForceWholeDate"] = "forceWholeDate"; - // DPI_ForecastSelected, having type bool - ParameterId["ForecastSelected"] = "forecastSelected"; - // DPI_ForecastUseAutoAgg, having type bool - ParameterId["ForecastUseAutoAgg"] = "forecastUseAutoSummarize"; - // DPI_ForJoin, having type bool - ParameterId["ForJoin"] = "forJoin"; - // DPI_FormatDataValueLocally, having type bool - ParameterId["FormatDataValueLocally"] = "formatDataValueLocally"; - // DPI_FormatIfColumn, having type bool - ParameterId["FormatIfColumn"] = "formatIfColumn"; - // DPI_FormatIfParameter, having type bool - ParameterId["FormatIfParameter"] = "formatIfParameter"; - // DPI_GeographicSearchIsDataLoaded, having type bool - ParameterId["GeographicSearchIsDataLoaded"] = "geographicSearchDataLoaded"; - // DPI_GeographicSearchLoadDataAsync, having type bool - ParameterId["GeographicSearchLoadDataAsync"] = "geographicSearchLoadDataAsync"; - // DPI_GroupByAll, having type bool - ParameterId["GroupByAll"] = "groupByAll"; - // DPI_HasAlias, having type bool - ParameterId["HasAlias"] = "hasAlias"; - // DPI_HasAllMember, having type bool - ParameterId["HasAllMember"] = "hasAllMember"; - // DPI_HasApply, having type bool - ParameterId["HasApply"] = "hasApply"; - // DPI_HasBackgroundImage, having type bool - ParameterId["HasBackgroundImage"] = "hasBackgroundImage"; - // DPI_HasBeenDismissed, having type bool - ParameterId["HasBeenDismissed"] = "hasBeenDismissed"; - // DPI_HasCaption, having type bool - ParameterId["HasCaption"] = "hasCaption"; - // DPI_HasCondition, having type bool - ParameterId["HasCondition"] = "hasCondition"; - // DPI_HasConnectPermissions, having type bool - ParameterId["HasConnectPermissions"] = "hasConnectPermissions"; - // DPI_HasDashboard, having type bool - ParameterId["HasDashboard"] = "hasDashboard"; - // DPI_HasDownloadPermissions, having type bool - ParameterId["HasDownloadPermissions"] = "hasDownloadPermissions"; - // DPI_HasDrill, having type bool - ParameterId["HasDrill"] = "hasDrill"; - // DPI_HasExclude, having type bool - ParameterId["HasExclude"] = "hasExclude"; - // DPI_HasFill, having type bool - ParameterId["HasFill"] = "hasFill"; - // DPI_HasLabels, having type bool - ParameterId["HasLabels"] = "hasLabels"; - // DPI_HasLimit, having type bool - ParameterId["HasLimit"] = "hasLimit"; - // DPI_HasLine, having type bool - ParameterId["HasLine"] = "hasLine"; - // DPI_HasModifiedAxes, having type bool - ParameterId["HasModifiedAxes"] = "hasModifiedAxes"; - // DPI_HasNonRootCalculations, having type bool - ParameterId["HasNonRootCalculations"] = "hasNonRootCalculations"; - // DPI_HasPattern, having type bool - ParameterId["HasPattern"] = "hasPattern"; - // DPI_HasPublishGuidanceResults, having type bool - ParameterId["HasPublishGuidanceResults"] = "hasPublishGuidanceResults"; - // DPI_HasSelection, having type bool - ParameterId["HasSelection"] = "hasSelection"; - // DPI_HasServerCredentials, having type bool - ParameterId["HasServerCredentials"] = "hasServerCredentials"; - // DPI_HasSpace, having type bool - ParameterId["HasSpace"] = "hasSpace"; - // DPI_HasStoredProcedure, having type bool - ParameterId["HasStoredProcedure"] = "hasStoredProcedure"; - // DPI_HasStringCalculatedMeasures, having type bool - ParameterId["HasStringCalculatedMeasures"] = "hasStringCalculatedMeasures"; - // DPI_HasTableCalcData, having type bool - ParameterId["HasTableCalcData"] = "hasTableCalcData"; - // DPI_HasTitle, having type bool - ParameterId["HasTitle"] = "hasTitle"; - // DPI_HasUsableSchema, having type bool - ParameterId["HasUsableSchema"] = "hasUsableSchema"; - // DPI_HasUserSpecificContent, having type bool - ParameterId["HasUserSpecificContent"] = "hasUserSpecificContent"; - // DPI_HasUnjoinedTable, having type bool - ParameterId["HasUnjoinedTable"] = "hasUnjoinedTable"; - // DPI_HasVarArgs, having type bool - ParameterId["HasVarArgs"] = "hasVarArgs"; - // DPI_HasVisitedWDCPage, having type bool - ParameterId["HasVisitedWDCPage"] = "hasVisitedWdcPage"; - // DPI_IgnoreAliases, having type bool - ParameterId["IgnoreAliases"] = "ignoreAliases"; - // DPI_IgnoreDomain, having type bool - ParameterId["IgnoreDomain"] = "ignoreDomain"; - // DPI_IgnoreSelection, having type bool - ParameterId["IgnoreSelection"] = "ignoreSelection"; - // DPI_IncludeAllColumns, having type bool - ParameterId["IncludeAllColumns"] = "includeAllColumns"; - // DPI_IncludeContext, having type bool - ParameterId["IncludeContext"] = "includeContext"; - // DPI_IncludeDashboardPresModels, having type bool - ParameterId["IncludeDashboardPresModels"] = "includeDashboardPresModels"; - // DPI_IncludeItemSet, having type bool - ParameterId["IncludeItemSet"] = "includeItemSet"; - // DPI_IncludeLocalFiles, having type bool - ParameterId["IncludeLocalFiles"] = "includeLocalFiles"; - // DPI_IncludeOtherSelected, having type bool - ParameterId["IncludeOtherSelected"] = "includeOtherSelected"; - // DPI_IncludeNulls, having type bool - ParameterId["IncludeNulls"] = "includeNulls"; - // DPI_IncludeParent, having type bool - ParameterId["IncludeParent"] = "includeParent"; - // DPI_IncludeSelections, having type bool - ParameterId["IncludeSelections"] = "includeSelections"; - // DPI_IncludeSiblings, having type bool - ParameterId["IncludeSiblings"] = "includeSiblings"; - // DPI_IncludeStories, having type bool - ParameterId["IncludeStories"] = "includeStories"; - // DPI_IncludeSubfolders, having type bool - ParameterId["IncludeSubfolders"] = "includeSubfolders"; - // DPI_IncludeVolatileProps, having type bool - ParameterId["IncludeVolatileProps"] = "includeVolatileProps"; - // DPI_IncludesTag, having type bool - ParameterId["IncludesTag"] = "includesTag"; - // DPI_InsertAfter, having type bool - ParameterId["InsertAfter"] = "insertAfter"; - // DPI_InsertAtEnd, having type bool - ParameterId["InsertAtEnd"] = "insertAtEnd"; - // DPI_InstantAnalyticsAllowed, having type bool - ParameterId["InstantAnalyticsAllowed"] = "instantAnalyticsAllowed"; - // DPI_IntegerCoordinates, having type bool - ParameterId["IntegerCoordinates"] = "intCoords"; - // DPI_InvalidatedLayout, having type bool - ParameterId["InvalidatedLayout"] = "invalidatedLayout"; - // DPI_IsActive, having type bool - ParameterId["IsActive"] = "isActive"; - // DPI_IsAddToFilter, having type bool - ParameterId["IsAddToFilter"] = "isAddToFilterButtonChecked"; - // DPI_IsAllButtonVisible, having type bool - ParameterId["IsAllButtonVisible"] = "isAllButtonVisible"; - // DPI_IsAllowedInCalcs, having type bool - ParameterId["IsAllowedInCalcs"] = "isAllowedInCalcs"; - // DPI_IsAppMapSource, having type bool - ParameterId["IsAppMapSource"] = "isAppMapSource"; - // DPI_IsArchive, having type bool - ParameterId["IsArchive"] = "isArchive"; - // DPI_IsAuthoringMode, having type bool - ParameterId["IsAuthoringMode"] = "isAuthoringMode"; - // DPI_IsAuto, having type bool - ParameterId["IsAuto"] = "isAuto"; - // DPI_IsAutoClear, having type bool - ParameterId["IsAutoClear"] = "isAutoClear"; - // DPI_IsAutoColumn, having type bool - ParameterId["IsAutoColumn"] = "isAutoColumn"; - // DPI_IsAutoHidden, having type bool - ParameterId["IsAutoHidden"] = "isAutoHidden"; - // DPI_IsAutoSelect, having type bool - ParameterId["IsAutoSelect"] = "isAutoSelect"; - // DPI_IsBold, having type bool - ParameterId["IsBold"] = "isBold"; - // DPI_IsBorderVisible, having type bool - ParameterId["IsBorderVisible"] = "isBorderVisible"; - // DPI_IsBoxplot, having type bool - ParameterId["IsBoxplot"] = "isBoxplot"; - // DPI_IsCapable, having type bool - ParameterId["IsCapable"] = "isCapable"; - // DPI_IsCaptured, having type bool - ParameterId["IsCaptured"] = "isCaptured"; - // DPI_IsCentered, having type bool - ParameterId["IsCentered"] = "isCentered"; - // DPI_IsChecked, having type bool - ParameterId["IsChecked"] = "isChecked"; - // DPI_IsColorDiverging, having type bool - ParameterId["IsColorDiverging"] = "isColorDiverging"; - // DPI_IsColorStepped, having type bool - ParameterId["IsColorStepped"] = "isColorStepped"; - // DPI_IsCombinedField, having type bool - ParameterId["IsCombinedField"] = "isCombinedField"; - // DPI_IsConnected, having type bool - ParameterId["IsConnected"] = "isConnected"; - // DPI_IsContextMenuAllowed, having type bool - ParameterId["IsContextMenuAllowed"] = "isContextMenuAllowed"; - // DPI_IsContinuous, having type bool - ParameterId["IsContinuous"] = "isContinuous"; - // DPI_IsCopy, having type bool - ParameterId["IsCopy"] = "isCopy"; - // DPI_IsCustomPalette, having type bool - ParameterId["IsCustomPalette"] = "isCustomPalette"; - // DPI_IsCustomSQL, having type bool - ParameterId["IsCustomSQL"] = "isCustomSql"; - // DPI_IsCustomValueEnabled, having type bool - ParameterId["IsCustomValueEnabled"] = "isCustomValueEnabled"; - // DPI_IsDataAlertConditionMet, having type bool - ParameterId["IsDataAlertConditionMet"] = "isDataAlertConditionMet"; - // DPI_IsDataAlertDialogVisible, having type bool - ParameterId["IsDataAlertDialogVisible"] = "isDataAlertDialogVisible"; - // DPI_IsDataBin, having type bool - ParameterId["IsDataBin"] = "isDataBin"; - // DPI_IsDataGridVisible, having type bool - ParameterId["IsDataGridVisible"] = "isDataGridVisible"; - // DPI_IsDatabase, having type bool - ParameterId["IsDatabase"] = "isDatabase"; - // DPI_IsDatabaseFilterInclusive, having type bool - ParameterId["IsDatabaseFilterInclusive"] = "isDbFilterInclusive"; - // DPI_IsWebDataTabViewSupported, having type bool - ParameterId["IsWebDataTabViewSupported"] = "isWebDataTabViewSupported"; - // DPI_IsPublishedDatasourceReplacement, having type bool - ParameterId["IsPublishedDatasourceReplacement"] = "isPublishedDatasourceReplacement"; - // DPI_IsDeadDrop, having type bool - ParameterId["IsDeadDrop"] = "isDeadDrop"; - // DPI_IsDefault, having type bool - ParameterId["IsDefault"] = "isDefault"; - // DPI_IsDeleteCalcConfirm, having type bool - ParameterId["IsDeleteCalcConfirm"] = "isDeleteCalcConfirmed"; - // DPI_IsDimension, having type bool - ParameterId["IsDimension"] = "isDimension"; - // DPI_IsDropdownEnabled, having type bool - ParameterId["IsDropdownEnabled"] = "isDropdownEnabled"; - // DPI_IsEditing, having type bool - ParameterId["IsEditing"] = "isEditing"; - // DPI_IsEmbedded, having type bool - ParameterId["IsEmbedded"] = "isEmbedded"; - // DPI_IsEmpty, having type bool - ParameterId["IsEmpty"] = "isEmpty"; - // DPI_IsAddInEnabled, having type bool - ParameterId["IsAddInEnabled"] = "isAddInEnabled"; - // DPI_AddInJSDebuggingEnabled, having type bool - ParameterId["AddInJSDebuggingEnabled"] = "addInJsDebugginEnabled"; - // DPI_AddInPauseBeforeLoading, having type bool - ParameterId["AddInPauseBeforeLoading"] = "addInPauseBeforeLoading"; - // DPI_IsEndPtMoveable, having type bool - ParameterId["IsEndPtMoveable"] = "isEndpointMovable"; - // DPI_IsExclude, having type bool - ParameterId["IsExclude"] = "isExcludeButtonChecked"; - // DPI_IsExistingConnection, having type bool - ParameterId["IsExistingConnection"] = "isExistingConnection"; - // DPI_IsExistingObject, having type bool - ParameterId["IsExistingObject"] = "isExistingObject"; - // DPI_IsExtract, having type bool - ParameterId["IsExtract"] = "isExtract"; - // DPI_IsExtractOnlyConnection, having type bool - ParameterId["IsExtractOnlyConnection"] = "isExtractOnlyConnection"; - // DPI_IsExtractSelectionVisible, having type bool - ParameterId["IsExtractSelectionVisible"] = "isExtractSelectionVisible"; - // DPI_IsFederatable, having type bool - ParameterId["IsFederatable"] = "isFederatable"; - // DPI_IsField, having type bool - ParameterId["IsField"] = "isField"; - // DPI_IsFieldParameter, having type bool - ParameterId["IsFieldParameter"] = "isFieldParameter"; - // DPI_IsFilterActionField, having type bool - ParameterId["IsFilterActionField"] = "isFilterActionField"; - // DPI_IsFirstClassConnector, having type bool - ParameterId["IsFirstClassConnector"] = "isFirstClassConnector"; - // DPI_IsFloating, having type bool - ParameterId["IsFloating"] = "isFloating"; - // DPI_IsFolded, having type bool - ParameterId["IsFolded"] = "isFolded"; - // DPI_IsForInput, having type bool - ParameterId["IsForInput"] = "isForInput"; - // DPI_IsForecastEnabled, having type bool - ParameterId["IsForecastEnabled"] = "isForecastEnabled"; - // DPI_IsForceDirty, having type bool - ParameterId["IsForceDirty"] = "isForceDirty"; - // DPI_IsFullScan, having type bool - ParameterId["IsFullScan"] = "isFullScan"; - // DPI_IsFullStyling, having type bool - ParameterId["IsFullStyling"] = "isFullStyling"; - // DPI_IsGenerated, having type bool - ParameterId["IsGenerated"] = "isGenerated"; - // DPI_IsGlobalNames, having type bool - ParameterId["IsGlobalNames"] = "isGlobalNames"; - // DPI_IsGrayed, having type bool - ParameterId["IsGrayed"] = "isGrayed"; - // DPI_IsGrayscale, having type bool - ParameterId["IsGrayscale"] = "isGrayscale"; - // DPI_IsGroup, having type bool - ParameterId["IsGroup"] = "isGroup"; - // DPI_IsHierarchy, having type bool - ParameterId["IsHierarchy"] = "isHierarchy"; - // DPI_IsHierarchySingleSelect, having type bool - ParameterId["IsHierarchySingleSelect"] = "isHierarchySingleSelect"; - // DPI_IsHighlightAllowed, having type bool - ParameterId["IsHighlightAllowed"] = "isHighlightAllowed"; - // DPI_IsHighlightEnabled, having type bool - ParameterId["IsHighlightEnabled"] = "isHighlightEnabled"; - // DPI_IsHighlightField, having type bool - ParameterId["IsHighlightField"] = "isHighlightField"; - // DPI_IsHorizontal, having type bool - ParameterId["IsHorizontal"] = "isHorizontal"; - // DPI_IsImageEnabled, having type bool - ParameterId["IsImageEnabled"] = "isImageEnabled"; - // DPI_IsInDefault, having type bool - ParameterId["IsInDefault"] = "isInDefault"; - // DPI_IsInPrimaryDataSource, having type bool - ParameterId["IsInPrimaryDataSource"] = "isInPrimaryDataSource"; - // DPI_IsInner, having type bool - ParameterId["IsInner"] = "isInner"; - // DPI_IsInstance, having type bool - ParameterId["IsInstance"] = "isInstance"; - // DPI_IsInvalid, having type bool - ParameterId["IsInvalid"] = "isInvalid"; - // DPI_IsInvalidCalcOnDG, having type bool - ParameterId["IsInvalidCalcOnDG"] = "isInvalidDgCalc"; - // DPI_IsItalics, having type bool - ParameterId["IsItalics"] = "isItalics"; - // DPI_IsJoinAreaVisible, having type bool - ParameterId["IsJoinAreaVisible"] = "isJoinAreaVisible"; - // DPI_IsLabels, having type bool - ParameterId["IsLabels"] = "isLabels"; - // DPI_IsLayered, having type bool - ParameterId["IsLayered"] = "isLayered"; - // DPI_IsLeft, having type bool - ParameterId["IsLeft"] = "isLeft"; - // DPI_IsLegacy, having type bool - ParameterId["IsLegacy"] = "isLegacy"; - // DPI_IsLevel, having type bool - ParameterId["IsLevel"] = "isLevel"; - // DPI_IsLevelOrLevelIdentity, having type bool - ParameterId["IsLevelOrLevelIdentity"] = "isLevelOrLevelIdentity"; - // DPI_IsLicensed, having type bool - ParameterId["IsLicensed"] = "isLicensed"; - // DPI_IsLink, having type bool - ParameterId["IsLink"] = "isLink"; - // DPI_IsMap, having type bool - ParameterId["IsMap"] = "isMap"; - // DPI_IsMeasure, having type bool - ParameterId["IsMeasure"] = "isMeasure"; - // DPI_IsMerge, having type bool - ParameterId["IsMerge"] = "isMerge"; - // DPI_IsMessageSourceRemote, having type bool - ParameterId["IsMessageSourceRemote"] = "isMessageSourceRemote"; - // DPI_IsMissingFromExtract, having type bool - ParameterId["IsMissingFromExtract"] = "isMissingFromExtract"; - // DPI_IsMobile, having type bool - ParameterId["IsMobile"] = "isMobile"; - // DPI_IsModified, having type bool - ParameterId["IsModified"] = "isModified"; - // DPI_IsNew, having type bool - ParameterId["IsNew"] = "isNew"; - // DPI_IsNewCloudFileDataSource, having type bool - ParameterId["IsNewCloudFileDataSource"] = "isNewCloudFileDataSource"; - // DPI_IsNone, having type bool - ParameterId["IsNone"] = "isNone"; - // DPI_IsOfflineMode, having type bool - ParameterId["IsOfflineMode"] = "isOfflineMode"; - // DPI_IsPreAqlBin, having type bool - ParameterId["IsPreAqlBin"] = "isPreAqlBin"; - // DPI_IsOMeasuresAndRelational, having type bool - ParameterId["IsOMeasuresAndRelational"] = "isOmeasuresAndRelational"; - // DPI_IsOpaque, having type bool - ParameterId["IsOpaque"] = "isOpaque"; - // DPI_IsOrphaned, having type bool - ParameterId["IsOrphaned"] = "isOrphaned"; - // DPI_IsOverlay, having type bool - ParameterId["IsOverlay"] = "isOverlay"; - // DPI_IsOverride, having type bool - ParameterId["IsOverride"] = "isOverride"; - // DPI_IsPageLoading, having type bool - ParameterId["IsPageLoading"] = "isPageLoading"; - // DPI_IsParameterSelected, having type bool - ParameterId["IsParameterSelected"] = "isParameterSelected"; - // DPI_IsParameterSelectedOnFrom, having type bool - ParameterId["IsParameterSelectedOnFrom"] = "isParameterSelectedOnFrom"; - // DPI_IsParameterSelectedOnTo, having type bool - ParameterId["IsParameterSelectedOnTo"] = "isParameterSelectedOnTo"; - // DPI_IsPatternBased, having type bool - ParameterId["IsPatternBased"] = "isPatternBased"; - // DPI_IsPinned, having type bool - ParameterId["IsPinned"] = "isPinned"; - // DPI_IsPresentationMode, having type bool - ParameterId["IsPresentationMode"] = "isPresentationModeDoc"; - // DPI_IsPublishAllowed, having type bool - ParameterId["IsPublishAllowed"] = "isPublishAllowed"; - // DPI_IsMustDowngradeToPublish, having type bool - ParameterId["IsMustDowngradeToPublish"] = "isDowngradeToPublishRequired"; - // DPI_IsPublished, having type bool - ParameterId["IsPublished"] = "isPublished"; - // DPI_IsQuickTableCalc, having type bool - ParameterId["IsQuickTableCalc"] = "isQuickTableCalc"; - // DPI_IsRadioOn, having type bool - ParameterId["IsRadioOn"] = "isRadioOn"; - // DPI_IsReconnect, having type bool - ParameterId["IsReconnect"] = "isReconnect"; - // DPI_IsRecursive, having type bool - ParameterId["IsRecursive"] = "isRecursive"; - // DPI_IsReferenced, having type bool - ParameterId["IsReferenced"] = "isReferenced"; - // DPI_IsRemovalAllowed, having type bool - ParameterId["IsRemovalAllowed"] = "isRowRemovalAllowed"; - // DPI_IsRenderCapable, having type bool - ParameterId["IsRenderCapable"] = "isRenderCapable"; - // DPI_IsRequired, having type bool - ParameterId["IsRequired"] = "isRequired"; - // DPI_IsReversed, having type bool - ParameterId["IsReversed"] = "isReversed"; - // DPI_IsRightDrag, having type bool - ParameterId["IsRightDrag"] = "isRightDrag"; - // DPI_IsRowLabels, having type bool - ParameterId["IsRowLabels"] = "isRowLabels"; - // DPI_IsPercentage, having type bool - ParameterId["IsPercentage"] = "isPercentage"; - // DPI_IsSalesforceInConnection, having type bool - ParameterId["IsSalesforceInConnection"] = "isSalesforceInConnection"; - // DPI_IsScaled, having type bool - ParameterId["IsScaled"] = "isScaled"; - // DPI_IsSelected, having type bool - ParameterId["IsSelected"] = "isSelected"; - // DPI_IsSelectedItem, having type bool - ParameterId["IsSelectedItem"] = "isSelectedItem"; - // DPI_IsSelectionDisabled, having type bool - ParameterId["IsSelectionDisabled"] = "isSelectionDisabled"; - // DPI_IsShiftDrag, having type bool - ParameterId["IsShiftDrag"] = "isShiftDrag"; - // DPI_IsSingleLabel, having type bool - ParameterId["IsSingleLabel"] = "isSingleLabel"; - // DPI_IsSingleSelect, having type bool - ParameterId["IsSingleSelect"] = "isSingleSelect"; - // DPI_IsSingleSelectMode, having type bool - ParameterId["IsSingleSelectMode"] = "isSingleSelectMode"; - // DPI_IsSingleSelection, having type bool - ParameterId["IsSingleSelection"] = "isSingleSelection"; - // DPI_IsSorted, having type bool - ParameterId["IsSorted"] = "isSorted"; - // DPI_IsSortPill, having type bool - ParameterId["IsSortPill"] = "isSortPill"; - // DPI_IsSpecial, having type bool - ParameterId["IsSpecial"] = "isSpecial"; - // DPI_IsSplashScreen, having type bool - ParameterId["IsSplashScreen"] = "isSplashScreen"; - // DPI_IsStoryEmpty, having type bool - ParameterId["IsStoryEmpty"] = "isStoryEmpty"; - // DPI_IsStrikeThrough, having type bool - ParameterId["IsStrikeThrough"] = "isStrikeThrough"; - // DPI_IsTableCalc, having type bool - ParameterId["IsTableCalc"] = "isTableCalc"; - // DPI_IsTableCleaningSubtable, having type bool - ParameterId["IsTableCleaningSubtable"] = "isTableCleaningSubtable"; - // DPI_IsTableFilterInclusive, having type bool - ParameterId["IsTableFilterInclusive"] = "isTableFilterInclusive"; - // DPI_IsTableRanked, having type bool - ParameterId["IsTableRanked"] = "isTableRanked"; - // DPI_IsTemporary, having type bool - ParameterId["IsTemporary"] = "isTemporary"; - // DPI_IsTitleVisible, having type bool - ParameterId["IsTitleVisible"] = "isTitleVisible"; - // DPI_IsTopLevel, having type bool - ParameterId["IsTopLevel"] = "isTopLevel"; - // DPI_IsTwoValued, having type bool - ParameterId["IsTwoValued"] = "isTwoValued"; - // DPI_IsTypeInFinished, having type bool - ParameterId["IsTypeInFinished"] = "isTypeinFinished"; - // DPI_IsTypeInPill, having type bool - ParameterId["IsTypeInPill"] = "isTypeInPill"; - // DPI_IsURLActionField, having type bool - ParameterId["IsURLActionField"] = "isUrlActionField"; - // DPI_IsUnderlined, having type bool - ParameterId["IsUnderlined"] = "isUnderlined"; - // DPI_IsUnion, having type bool - ParameterId["IsUnion"] = "isUnion"; - // DPI_IsUnionReplacement, having type bool - ParameterId["IsUnionReplacement"] = "isUnionReplacement"; - // DPI_IsUnnamedCalc, having type bool - ParameterId["IsUnnamedCalc"] = "isUnnamed"; - // DPI_IsUserEditable, having type bool - ParameterId["IsUserEditable"] = "isUserEditable"; - // DPI_IsUserPrompted, having type bool - ParameterId["IsUserPrompted"] = "isUserPrompted"; - // DPI_IsUserResponded, having type bool - ParameterId["IsUserResponded"] = "isUserResponded"; - // DPI_IsValid, having type bool - ParameterId["IsValid"] = "isValid"; - // DPI_IsValidWDCPage, having type bool - ParameterId["IsValidWDCPage"] = "isValidWdcPage"; - // DPI_IsVaryingAttributeDimension, having type bool - ParameterId["IsVaryingAttributeDimension"] = "isVaryingAttributeDimension"; - // DPI_IsVertical, having type bool - ParameterId["IsVertical"] = "isVertical"; - // DPI_IsViewModified, having type bool - ParameterId["IsViewModified"] = "isViewModified"; - // DPI_IsVisuallyCategorical, having type bool - ParameterId["IsVisuallyCategorical"] = "isVisuallyCat"; - // DPI_IsVizInTooltip, having type bool - ParameterId["IsVizInTooltip"] = "isVizInTooltip"; - // DPI_IsWeb, having type bool - ParameterId["IsWeb"] = "isWeb"; - // DPI_IsWhite, having type bool - ParameterId["IsWhite"] = "isWhite"; - // DPI_IsWorldNew, having type bool - ParameterId["IsWorldNew"] = "isWorldNew"; - // DPI_IsXAxis, having type bool - ParameterId["IsXAxis"] = "isXAxis"; - // DPI_KeepAspectRatio, having type bool - ParameterId["KeepAspectRatio"] = "keepAspectRatio"; - // DPI_LabelLineEndFirst, having type bool - ParameterId["LabelLineEndFirst"] = "labelLineEndFirst"; - // DPI_LabelLineEndLast, having type bool - ParameterId["LabelLineEndLast"] = "labelLineEndLast"; - // DPI_LabelMarkMax, having type bool - ParameterId["LabelMarkMax"] = "labelMarkMax"; - // DPI_LabelMarkMin, having type bool - ParameterId["LabelMarkMin"] = "labelMarkMin"; - // DPI_LockAspectRatio, having type bool - ParameterId["LockAspectRatio"] = "lockAspectRatio"; - // DPI_LoopPlayback, having type bool - ParameterId["LoopPlayback"] = "loopPlayback"; - // DPI_LossyImages, having type bool - ParameterId["LossyImages"] = "lossyImages"; - // DPI_MakeGlobal, having type bool - ParameterId["MakeGlobal"] = "isMakeGlobal"; - // DPI_ManualSortOnly, having type bool - ParameterId["ManualSortOnly"] = "manualSortOnly"; - // DPI_MapBoxDefaultStyleSelected, having type bool - ParameterId["MapBoxDefaultStyleSelected"] = "mapboxDefaultStyleSelected"; - // DPI_MapBoxURLParseSuccessful, having type bool - ParameterId["MapBoxURLParseSuccessful"] = "mapboxUrlParseSuccessful"; - // DPI_MapClientRequestsMapTiles, having type bool - ParameterId["MapClientRequestsMapTiles"] = "clientRequestsMapTiles"; - // DPI_MapHasValidLayer, having type bool - ParameterId["MapHasValidLayer"] = "mapHasValidLayer"; - // DPI_MapShowAttribution, having type bool - ParameterId["MapShowAttribution"] = "showAttribution"; - // DPI_MarkLabelsVisibilityChanged, having type bool - ParameterId["MarkLabelsVisibilityChanged"] = "markLabelsVisibilityChanged"; - // DPI_MembersLoaded, having type bool - ParameterId["MembersLoaded"] = "membersLoaded"; - // DPI_MinimizeNames, having type bool - ParameterId["MinimizeNames"] = "useMinNames"; - // DPI_MoveRefereceLineUp, having type bool - ParameterId["MoveRefereceLineUp"] = "moveReferenceLineUp"; - // DPI_MultiDataSources, having type bool - ParameterId["MultiDataSources"] = "multiDataSources"; - // DPI_NavArrowsVisible, having type bool - ParameterId["NavArrowsVisible"] = "navArrowsVisible"; - // DPI_OEMHasSplashScreen, having type bool - ParameterId["OEMHasSplashScreen"] = "oemHasSplashScreen"; - // DPI_OneWayBrushing, having type bool - ParameterId["OneWayBrushing"] = "oneWayBrushing"; - // DPI_OnlyAggregations, having type bool - ParameterId["OnlyAggregations"] = "onlyAggregations"; - // DPI_OverrideAllowed, having type bool - ParameterId["OverrideAllowed"] = "overrideAllowed"; - // DPI_OverrideStackDumper, having type bool - ParameterId["OverrideStackDumper"] = "overrideStackDumper"; - // DPI_PageAutoColorLines, having type bool - ParameterId["PageAutoColorLines"] = "autoColorLines"; - // DPI_PageAutoColorMarks, having type bool - ParameterId["PageAutoColorMarks"] = "autoColorMarks"; - // DPI_PageHistoryFade, having type bool - ParameterId["PageHistoryFade"] = "historyFade"; - // DPI_PercentageBands, having type bool - ParameterId["PercentageBands"] = "percentageBands"; - // DPI_PublishWithRemoteQueryAgent, having type bool - ParameterId["PublishWithRemoteQueryAgent"] = "publishWithRemoteQueryAgent"; - // DPI_PreviousSheet, having type bool - ParameterId["PreviousSheet"] = "previousSheet"; - // DPI_PromptDeleteSheetsWithVizInTooltip, having type bool - ParameterId["PromptDeleteSheetsWithVizInTooltip"] = "promptDeleteSheetsWithVizInTooltip"; - // DPI_QuantilesAllowed, having type bool - ParameterId["QuantilesAllowed"] = "quantilesAllowed"; - // DPI_RadialDistanceHitTest, having type bool - ParameterId["RadialDistanceHitTest"] = "radialDistanceHitTest"; - // DPI_RefLineSelected, having type bool - ParameterId["RefLineSelected"] = "refLineSelected"; - // DPI_RemovedSheets, having type bool - ParameterId["RemovedSheets"] = "removedSheets"; - // DPI_RenderImagesAsUrls, having type bool - ParameterId["RenderImagesAsUrls"] = "imagesAsUrls"; - // DPI_RenderOnTop, having type bool - ParameterId["RenderOnTop"] = "renderOnTop"; - // DPI_RepeatHeadersLegends, having type bool - ParameterId["RepeatHeadersLegends"] = "repeatHeadersLegends"; - // DPI_ReplaceActiveConfig, having type bool - ParameterId["ReplaceActiveConfig"] = "replaceActiveConfig"; - // DPI_ReplaceDatasourceAfterPublish, having type bool - ParameterId["ReplaceDatasourceAfterPublish"] = "replaceDatasourceAfterPublish"; - // DPI_ReplaceDatasourceFailed, having type bool - ParameterId["ReplaceDatasourceFailed"] = "replaceDatasourceFailed"; - // DPI_ReplaceTde, having type bool - ParameterId["ReplaceTde"] = "replaceTde"; - // DPI_RequireSelection, having type bool - ParameterId["RequireSelection"] = "requireSelection"; - // DPI_RequiresDBVariables, having type bool - ParameterId["RequiresDBVariables"] = "requiresDbVariables"; - // DPI_RequiresFieldList, having type bool - ParameterId["RequiresFieldList"] = "requiresFieldList"; - // DPI_RestartEveryFieldIsInvalid, having type bool - ParameterId["RestartEveryFieldIsInvalid"] = "restartEveryFieldIsInvalid"; - // DPI_RightJustify, having type bool - ParameterId["RightJustify"] = "rightJustify"; - // DPI_SaveEnabled, having type bool - ParameterId["SaveEnabled"] = "saveEnabled"; - // DPI_SavePasswordAllowed, having type bool - ParameterId["SavePasswordAllowed"] = "savePasswordAllowed"; - // DPI_ScopeIsolation, having type bool - ParameterId["ScopeIsolation"] = "scopeIsolation"; - // DPI_SelectionRequired, having type bool - ParameterId["SelectionRequired"] = "selectionRequired"; - // DPI_SendNotifications, having type bool - ParameterId["SendNotifications"] = "sendNotifications"; - // DPI_SetActive, having type bool - ParameterId["SetActive"] = "setActive"; - // DPI_SetDefaultSort, having type bool - ParameterId["SetDefaultSort"] = "setDefault"; - // DPI_SheetIsDashboard, having type bool - ParameterId["SheetIsDashboard"] = "isDashboard"; - // DPI_SheetIsStoryboard, having type bool - ParameterId["SheetIsStoryboard"] = "isStory"; - // DPI_ShouldAlwaysDisplayAlias, having type bool - ParameterId["ShouldAlwaysDisplayAlias"] = "shouldAlwaysDisplayAlias"; - // DPI_ShouldAutoCapture, having type bool - ParameterId["ShouldAutoCapture"] = "shouldAutoCapture"; - // DPI_ShouldAutoRevert, having type bool - ParameterId["ShouldAutoRevert"] = "shouldAutoRevert"; - // DPI_ShouldChangeUIMode, having type bool - ParameterId["ShouldChangeUIMode"] = "shouldChangeUiMode"; - // DPI_ShouldDisplay, having type bool - ParameterId["ShouldDisplay"] = "shouldDisplay"; - // DPI_ShouldDrill, having type bool - ParameterId["ShouldDrill"] = "shouldDrill"; - // DPI_ShouldForceConnectionAttempt, having type bool - ParameterId["ShouldForceConnectionAttempt"] = "shouldForceConnectionAttempt"; - // DPI_ShouldRefreshDS, having type bool - ParameterId["ShouldRefreshDS"] = "shouldRefreshDs"; - // DPI_ShouldScaleMarksInAxisUnits, having type bool - ParameterId["ShouldScaleMarksInAxisUnits"] = "shouldScaleMarksInAxisUnits"; - // DPI_ShouldSeedCredentials, having type bool - ParameterId["ShouldSeedCredentials"] = "shouldSeedCredentials"; - // DPI_ShouldShowDistance, having type bool - ParameterId["ShouldShowDistance"] = "shouldShowDistance"; - // DPI_ShouldShowMapScale, having type bool - ParameterId["ShouldShowMapScale"] = "shouldShowMapScale"; - // DPI_ShouldURLEscape, having type bool - ParameterId["ShouldURLEscape"] = "shouldUrlEscape"; - // DPI_ShouldUpdateDomainInfo, having type bool - ParameterId["ShouldUpdateDomainInfo"] = "shouldUpdateDomInfo"; - // DPI_ShowAddToFilter, having type bool - ParameterId["ShowAddToFilter"] = "showAddToFilterButton"; - // DPI_ShowAliases, having type bool - ParameterId["ShowAliases"] = "showAliases"; - // DPI_ShowAllPages, having type bool - ParameterId["ShowAllPages"] = "showAllPages"; - // DPI_ShowApply, having type bool - ParameterId["ShowApply"] = "showApplyButton"; - // DPI_ShowApplyAndCancelButtons, having type bool - ParameterId["ShowApplyAndCancelButtons"] = "showApplyAndCancelButtons"; - // DPI_ShowAuthenticationOptions, having type bool - ParameterId["ShowAuthenticationOptions"] = "showAuthenticationOptions"; - // DPI_ShowAuthenticationSetting, having type bool - ParameterId["ShowAuthenticationSetting"] = "showAuthenticationSetting"; - // DPI_ShowAuto, having type bool - ParameterId["ShowAuto"] = "showAuto"; - // DPI_ShowBold, having type bool - ParameterId["ShowBold"] = "showBoldOption"; - // DPI_ShowButtons, having type bool - ParameterId["ShowButtons"] = "showButtons"; - // DPI_ShowCaption, having type bool - ParameterId["ShowCaption"] = "showCaption"; - // DPI_ShowColorLegend, having type bool - ParameterId["ShowColorLegend"] = "showColorLegend"; - // DPI_ShowDataGridInlineRename, having type bool - ParameterId["ShowDataGridInlineRename"] = "showDataGridInlineRename"; - // DPI_ShowDetailMessages, having type bool - ParameterId["ShowDetailMessages"] = "showDetailMessages"; - // DPI_ShowDate, having type bool - ParameterId["ShowDate"] = "showDate"; - // DPI_ShowDragLabel, having type bool - ParameterId["ShowDragLabel"] = "showDragLabel"; - // DPI_ShowDropMeasures, having type bool - ParameterId["ShowDropMeasures"] = "showDropMeasures"; - // DPI_ShowEmbedAll, having type bool - ParameterId["ShowEmbedAll"] = "showEmbedAll"; - // DPI_ShowEntireImage, having type bool - ParameterId["ShowEntireImage"] = "showEntireImage"; - // DPI_ShowExclude, having type bool - ParameterId["ShowExclude"] = "showExcludeButton"; - // DPI_ShowFloatingZoomToolbar, having type bool - ParameterId["ShowFloatingZoomToolbar"] = "showFloatingZoomToolbar"; - // DPI_ShowFormatter, having type bool - ParameterId["ShowFormatter"] = "showFormatter"; - // DPI_ShowFullSchedules, having type bool - ParameterId["ShowFullSchedules"] = "showFullSchedules"; - // DPI_ShowGeographicSearch, having type bool - ParameterId["ShowGeographicSearch"] = "showGeographicSearch"; - // DPI_ShowHiddenFields, having type bool - ParameterId["ShowHiddenFields"] = "showHiddenFields"; - // DPI_ShowHistoryControls, having type bool - ParameterId["ShowHistoryControls"] = "showHistoryControls"; - // DPI_ShowIncludeLocalFiles, having type bool - ParameterId["ShowIncludeLocalFiles"] = "showIncludeLocalFiles"; - // DPI_ShowIncludeOtherOption, having type bool - ParameterId["ShowIncludeOtherOption"] = "showIncludeOtherOption"; - // DPI_ShowIncludeSelections, having type bool - ParameterId["ShowIncludeSelections"] = "showIncludeSelections"; - // DPI_ShowIncrSchedules, having type bool - ParameterId["ShowIncrSchedules"] = "showIncrSchedules"; - // DPI_ShowInnerMostLevel, having type bool - ParameterId["ShowInnerMostLevel"] = "showInnermostLevel"; - // DPI_ShowItalics, having type bool - ParameterId["ShowItalics"] = "showItalicsOption"; - // DPI_ShowLegend, having type bool - ParameterId["ShowLegend"] = "showLegend"; - // DPI_ShowLockedPermissionsIcon, having type bool - ParameterId["ShowLockedPermissionsIcon"] = "showLockedPermissionsIcon"; - // DPI_ShowManageDatasources, having type bool - ParameterId["ShowManageDatasources"] = "showManageDatasources"; - // DPI_ShowMapLegend, having type bool - ParameterId["ShowMapLegend"] = "showMapLegend"; - // DPI_ShowMapScale, having type bool - ParameterId["ShowMapScale"] = "showMapScale"; - // DPI_ShowMappedFilterCols, having type bool - ParameterId["ShowMappedFilterCols"] = "showMappedFilterColumns"; - // DPI_ShowName, having type bool - ParameterId["ShowName"] = "showName"; - // DPI_ShowNone, having type bool - ParameterId["ShowNone"] = "showNone"; - // DPI_ShowPagePlayback, having type bool - ParameterId["ShowPagePlayback"] = "showPagePlayback"; - // DPI_ShowPageReadout, having type bool - ParameterId["ShowPageReadout"] = "showPageReadout"; - // DPI_ShowPageSlider, having type bool - ParameterId["ShowPageSlider"] = "showPageSlider"; - // DPI_ShowParent, having type bool - ParameterId["ShowParent"] = "showParent"; - // DPI_ShowPercentages, having type bool - ParameterId["ShowPercentages"] = "showPercentages"; - // DPI_ShowPredictionIntervals, having type bool - ParameterId["ShowPredictionIntervals"] = "showPredictionIntervals"; - // DPI_ShowPublishedDatasources, having type bool - ParameterId["ShowPublishedDatasources"] = "showPublishedDatasources"; - // DPI_ShowRelDatePicker, having type bool - ParameterId["ShowRelDatePicker"] = "showRelDatePicker"; - // DPI_ShowReplaceDatasource, having type bool - ParameterId["ShowReplaceDatasource"] = "showReplaceDatasource"; - // DPI_ShowSeparator, having type bool - ParameterId["ShowSeparator"] = "showSeparator"; - // DPI_ShowShapeLegend, having type bool - ParameterId["ShowShapeLegend"] = "showShapeLegend"; - // DPI_ShowSizeLegend, having type bool - ParameterId["ShowSizeLegend"] = "showSizeLegend"; - // DPI_ShowShelf, having type bool - ParameterId["ShowShelf"] = "showShelf"; - // DPI_ShowStructure, having type bool - ParameterId["ShowStructure"] = "showStructure"; - // DPI_ShowSyncClientOptions, having type bool - ParameterId["ShowSyncClientOptions"] = "showSyncClientOptions"; - // DPI_ShowTabsAllowed, having type bool - ParameterId["ShowTabsAllowed"] = "showTabsAllowed"; - // DPI_ShowTime, having type bool - ParameterId["ShowTime"] = "showTime"; - // DPI_ShowTitle, having type bool - ParameterId["ShowTitle"] = "showTitle"; - // DPI_ShowTransSlider, having type bool - ParameterId["ShowTransSlider"] = "showTransparencySlider"; - // DPI_ShowUnderline, having type bool - ParameterId["ShowUnderline"] = "showUnderlineOption"; - // DPI_ShowUserThumbnailOptions, having type bool - ParameterId["ShowUserThumbnailOptions"] = "showUserThumbnailOptions"; - // DPI_ShowView, having type bool - ParameterId["ShowView"] = "showView"; - // DPI_ShowViews, having type bool - ParameterId["ShowViews"] = "showViews"; - // DPI_ShowingPageLoadError, having type bool - ParameterId["ShowingPageLoadError"] = "showingPageLoadError"; - // DPI_SupressAliases, having type bool - ParameterId["SupressAliases"] = "suspressAliases"; - // DPI_SupressThousandsSeparator, having type bool - ParameterId["SupressThousandsSeparator"] = "supressThousandsSeparator"; - // DPI_SingleSelectOnly, having type bool - ParameterId["SingleSelectOnly"] = "singleSelectOnly"; - // DPI_SkipIfActive, having type bool - ParameterId["SkipIfActive"] = "skipIfActive"; - // DPI_SkipRefresh, having type bool - ParameterId["SkipRefresh"] = "skipRefresh"; - // DPI_SkipValidation, having type bool - ParameterId["SkipValidation"] = "skipValidation"; - // DPI_Skipped, having type bool - ParameterId["Skipped"] = "skipped"; - // DPI_SortFieldIsInvalid, having type bool - ParameterId["SortFieldIsInvalid"] = "sortFieldIsInvalid"; - // DPI_SortModeIsAuto, having type bool - ParameterId["SortModeIsAuto"] = "sortModeIsAuto"; - // DPI_SplitOnEdgeSnap, having type bool - ParameterId["SplitOnEdgeSnap"] = "splitOnEdgeSnap"; - // DPI_StandardDeviationAllowed, having type bool - ParameterId["StandardDeviationAllowed"] = "standardDeviationAllowed"; - // DPI_State, having type bool - ParameterId["State"] = "state"; - // DPI_StoredProcDisabled, having type bool - ParameterId["StoredProcDisabled"] = "storedProcDisabled"; - // DPI_StoredProcsDropable, having type bool - ParameterId["StoredProcsDropable"] = "storedProcsDropable"; - // DPI_StoryIsEmpty, having type bool - ParameterId["StoryIsEmpty"] = "storyIsEmpty"; - // DPI_StoryPointIsEmpty, having type bool - ParameterId["StoryPointIsEmpty"] = "storyPointIsEmpty"; - // DPI_SuccessfulSave, having type bool - ParameterId["SuccessfulSave"] = "successfulSave"; - // DPI_SupportXAxis, having type bool - ParameterId["SupportXAxis"] = "supportXAxis"; - // DPI_SupportYAxis, having type bool - ParameterId["SupportYAxis"] = "supportYAxis"; - // DPI_SupportsCenterAlignment, having type bool - ParameterId["SupportsCenterAlignment"] = "supportsCenterAlignment"; - // DPI_SupportsDBFilters, having type bool - ParameterId["SupportsDBFilters"] = "supportsDatabaseFilters"; - // DPI_SupportsMultipleValues, having type bool - ParameterId["SupportsMultipleValues"] = "supportsMultipleValues"; - // DPI_SupportsRightAlignment, having type bool - ParameterId["SupportsRightAlignment"] = "supportsRightAlignment"; - // DPI_SupportsTableFilters, having type bool - ParameterId["SupportsTableFilters"] = "supportsTableFilters"; - // DPI_Symmetric, having type bool - ParameterId["Symmetric"] = "symmetric"; - // DPI_SyncAutomaticDrill, having type bool - ParameterId["SyncAutomaticDrill"] = "syncAutomaticDrill"; - // DPI_TabsAllowed, having type bool - ParameterId["TabsAllowed"] = "tabsAllowed"; - // DPI_TextDropdownState, having type bool - ParameterId["TextDropdownState"] = "toggleState"; - // DPI_TitleInline, having type bool - ParameterId["TitleInline"] = "titleInline"; - // DPI_ToggleHighlightStateChanged, having type bool - ParameterId["ToggleHighlightStateChanged"] = "toggleHighlight"; - // DPI_Transformed80Format, having type bool - ParameterId["Transformed80Format"] = "oldFormat"; - // DPI_TrendLineSelected, having type bool - ParameterId["TrendLineSelected"] = "trendLineSelected"; - // DPI_TruncDate, having type bool - ParameterId["TruncDate"] = "truncDate"; - // DPI_TupleSelected, having type bool - ParameterId["TupleSelected"] = "tupleSelected"; - // DPI_UIAutomationDidPageLoad, having type bool - ParameterId["UIAutomationDidPageLoad"] = "uiAutomationDidPageLoad"; - // DPI_UIAutomationIsChecked, having type bool - ParameterId["UIAutomationIsChecked"] = "uiAutomationIsChecked"; - // DPI_UIAutomationIsEnabled, having type bool - ParameterId["UIAutomationIsEnabled"] = "uiAutomationIsEnabled"; - // DPI_UIAutomationIsEventProcessed, having type bool - ParameterId["UIAutomationIsEventProcessed"] = "uiAutomationIsEventProcessed"; - // DPI_UIAutomationIsFocused, having type bool - ParameterId["UIAutomationIsFocused"] = "uiAutomationIsFocused"; - // DPI_UIAutomationIsFound, having type bool - ParameterId["UIAutomationIsFound"] = "uiAutomationIsFound"; - // DPI_UIAutomationIsReadonly, having type bool - ParameterId["UIAutomationIsReadonly"] = "uiAutomationIsReadonly"; - // DPI_UIAutomationIsSelected, having type bool - ParameterId["UIAutomationIsSelected"] = "uiAutomationIsSelected"; - // DPI_UpdateAllPanes, having type bool - ParameterId["UpdateAllPanes"] = "updateAllPanes"; - // DPI_UpdateDSCaptionOnly, having type bool - ParameterId["UpdateDSCaptionOnly"] = "updateDsCaptionOnly"; - // DPI_UpdateModelFromParams, having type bool - ParameterId["UpdateModelFromParams"] = "updateModelFromParams"; - // DPI_UpdateShelves, having type bool - ParameterId["UpdateShelves"] = "updateShelves"; - // DPI_UpdatesUseContext, having type bool - ParameterId["UpdatesUseContext"] = "updatesUseContext"; - // DPI_UpgradeDocumentVersion, having type bool - ParameterId["UpgradeDocumentVersion"] = "upgradeDocumentVersion"; - // DPI_UseAliases, having type bool - ParameterId["UseAliases"] = "useAliases"; - // DPI_UseBlankForNull, having type bool - ParameterId["UseBlankForNull"] = "useBlankForNull"; - // DPI_UseCalculationEditor, having type bool - ParameterId["UseCalculationEditor"] = "useCalculationEditor"; - // DPI_UseCenterValue, having type bool - ParameterId["UseCenterValue"] = "useCenterValue"; - // DPI_UseColor, having type bool - ParameterId["UseColor"] = "useColor"; - // DPI_UseCustomMarkSize, having type bool - ParameterId["UseCustomMarkSize"] = "useCustomMarkSize"; - // DPI_UseDarkIcons, having type bool - ParameterId["UseDarkIcons"] = "useDarkIcons"; - // DPI_UseDataStoreMinfiedNames, having type bool - ParameterId["UseDataStoreMinfiedNames"] = "useDatastoreMinNames"; - // DPI_UseInitialDomainType, having type bool - ParameterId["UseInitialDomainType"] = "useInitialDomainType"; - // DPI_UseEndValue, having type bool - ParameterId["UseEndValue"] = "useEndValue"; - // DPI_UseForOverlayHitTest, having type bool - ParameterId["UseForOverlayHitTest"] = "useForOverlayHitTest"; - // DPI_UseFullColorRange, having type bool - ParameterId["UseFullColorRange"] = "useFullColorRange"; - // DPI_UseFullDomain, having type bool - ParameterId["UseFullDomain"] = "useFullDomain"; - // DPI_UseInlineImages, having type bool - ParameterId["UseInlineImages"] = "useInlineImages"; - // DPI_UseMeasures, having type bool - ParameterId["UseMeasures"] = "useMeasures"; - // DPI_UseNewQuickFilters, having type bool - ParameterId["UseNewQuickFilters"] = "useNewQuickFilters"; - // DPI_UseNotificationReturn, having type bool - ParameterId["UseNotificationReturn"] = "useNotificationReturn"; - // DPI_UseParameters, having type bool - ParameterId["UseParameters"] = "useParameters"; - // DPI_UseSelector, having type bool - ParameterId["UseSelector"] = "useSelector"; - // DPI_UseSignificantDigits, having type bool - ParameterId["UseSignificantDigits"] = "useSignificantDigits"; - // DPI_UseSpecialStrings, having type bool - ParameterId["UseSpecialStrings"] = "useSpecialStrings"; - // DPI_UseStartValue, having type bool - ParameterId["UseStartValue"] = "useStartValue"; - // DPI_UseTabletAsDefaultPreview, having type bool - ParameterId["UseTabletAsDefaultPreview"] = "useTabletAsDefaultPreview"; - // DPI_UseTargetPt, having type bool - ParameterId["UseTargetPt"] = "useTargetPoint"; - // DPI_UseUSLocale, having type bool - ParameterId["UseUSLocale"] = "useUsLocale"; - // DPI_UseYAxis, having type bool - ParameterId["UseYAxis"] = "useYAxis"; - // DPI_Valid, having type bool - ParameterId["Valid"] = "valid"; - // DPI_VizDataV82, having type bool - ParameterId["VizDataV82"] = "vizData82"; - // DPI_WMSConnectionSuccessful, having type bool - ParameterId["WMSConnectionSuccessful"] = "wmsConnectionSuccessful"; - // DPI_WMSShouldUseTiles, having type bool - ParameterId["WMSShouldUseTiles"] = "wmsShouldUseTiles"; - // DPI_WantDomain, having type bool - ParameterId["WantDomain"] = "wantDomain"; - // DPI_WorkbookModified, having type bool - ParameterId["WorkbookModified"] = "workbookModified"; - // DPI_ZoomIn, having type bool - ParameterId["ZoomIn"] = "zoomIn"; - // DPI_ShowMarkLabels, having type bool - ParameterId["ShowMarkLabels"] = "showMarkLabels"; - // DPI_HasDuplicates, having type bool - ParameterId["HasDuplicates"] = "hasDuplicates"; - // DPI_HasUserDefinedIncrement, having type bool - ParameterId["HasUserDefinedIncrement"] = "hasUserDefinedIncrement"; - // DPI_HasUserDefinedMax, having type bool - ParameterId["HasUserDefinedMax"] = "hasUserDefinedMax"; - // DPI_HasUserDefinedMin, having type bool - ParameterId["HasUserDefinedMin"] = "hasUserDefinedMin"; - // DPI_IsDuplicate, having type bool - ParameterId["IsDuplicate"] = "isDuplicate"; - // DPI_IsEditingValue, having type bool - ParameterId["IsEditingValue"] = "isEditingValue"; - // DPI_ShouldRestrictDataType, having type bool - ParameterId["ShouldRestrictDataType"] = "restrictDataType"; - // DPI_EnableIncludeZero, having type bool - ParameterId["EnableIncludeZero"] = "enableIncludeZero"; - // DPI_EnableSyncDualAxes, having type bool - ParameterId["EnableSyncDualAxes"] = "enableSynchronizeDualAxes"; - // DPI_EnableShowTimes, having type bool - ParameterId["EnableShowTimes"] = "enableShowTimes"; - // DPI_IsTemporal, having type bool - ParameterId["IsTemporal"] = "isTemporal"; - // DPI_ShouldIncludeZero, having type bool - ParameterId["ShouldIncludeZero"] = "shouldIncludeZero"; - // DPI_ShouldReverseAxis, having type bool - ParameterId["ShouldReverseAxis"] = "shouldReverseAxis"; - // DPI_UseAutomaticAxisSubtitle, having type bool - ParameterId["UseAutomaticAxisSubtitle"] = "useAutomaticSubtitle"; - // DPI_UseAutomaticAxisTitle, having type bool - ParameterId["UseAutomaticAxisTitle"] = "useAutomaticTitle"; - // DPI_AllSelected, having type bool - ParameterId["AllSelected"] = "allSelected"; - // DPI_AutoCommit, having type bool - ParameterId["AutoCommit"] = "autoCommit"; - // DPI_CacheOnly, having type bool - ParameterId["CacheOnly"] = "cacheOnly"; - // DPI_IncludeData, having type bool - ParameterId["IncludeData"] = "includeData"; - // DPI_IsPatternExclusive, having type bool - ParameterId["IsPatternExclusive"] = "isPatternExclusive"; - // DPI_IsSearchable, having type bool - ParameterId["IsSearchable"] = "isSearchable"; - // DPI_IsSelectionExclusive, having type bool - ParameterId["IsSelectionExclusive"] = "isSelectionExclusive"; - // DPI_ResetNewFilter, having type bool - ParameterId["ResetNewFilter"] = "resetNewFilter"; - // DPI_UseAllWhenManualEmpty, having type bool - ParameterId["UseAllWhenManualEmpty"] = "useAllWhenManualEmpty"; - // DPI_UseAllWhenPatternEmpty, having type bool - ParameterId["UseAllWhenPatternEmpty"] = "useAllWhenPatternEmpty"; - // DPI_GroupByDrillDown, having type bool - ParameterId["GroupByDrillDown"] = "groupByDrillDown"; - // DPI_GroupByTable, having type bool - ParameterId["GroupByTable"] = "groupByTable"; - // DPI_IncludeGroups, having type bool - ParameterId["IncludeGroups"] = "includeGroups"; - // DPI_IncludePendingState, having type bool - ParameterId["IncludePendingState"] = "includePendingState"; - // DPI_IncludeFieldMenus, having type bool - ParameterId["IncludeFieldMenus"] = "includeFieldMenus"; - // DPI_IncludeFormattedValues, having type bool - ParameterId["IncludeFormattedValues"] = "includeFormattedValues"; - // DPI_IncludeColumnInstances, having type bool - ParameterId["IncludeColumnInstances"] = "includeColumnInstances"; - // DPI_IncludeAdHocCalcs, having type bool - ParameterId["IncludeAdHocCalcs"] = "includeAdhocCalcs"; - // DPI_IncludeHiddenInvalidFields, having type bool - ParameterId["IncludeHiddenInvalidFields"] = "includeHiddenInvalidFields"; - // DPI_IncludeNonExtractedColumns, having type bool - ParameterId["IncludeNonExtractedColumns"] = "includeNonExtractedColumns"; - // DPI_SetDataPreviewCustomFieldOrder, having type bool - ParameterId["SetDataPreviewCustomFieldOrder"] = "setDataPreviewCustomFieldOrder"; - // DPI_CustomSplitAllowSplitFromRight, having type bool - ParameterId["CustomSplitAllowSplitFromRight"] = "customSplitAllowSplitFromRight"; - // DPI_IsChanged, having type bool - ParameterId["IsChanged"] = "isChanged"; - // DPI_ShowFontColorPicker, having type bool - ParameterId["ShowFontColorPicker"] = "showFontColorPicker"; - // DPI_ShowFontFamilyPicker, having type bool - ParameterId["ShowFontFamilyPicker"] = "showFontFamilyPicker"; - // DPI_ShowFontSizePicker, having type bool - ParameterId["ShowFontSizePicker"] = "showFontSizePicker"; - // DPI_ShowFontStyleButtons, having type bool - ParameterId["ShowFontStyleButtons"] = "showFontStyleButtons"; - // DPI_ShowLineForAll, having type bool - ParameterId["ShowLineForAll"] = "showLineForAll"; - // DPI_ShowLineForColumn, having type bool - ParameterId["ShowLineForColumn"] = "showLineForColumn"; - // DPI_ShowLineForRow, having type bool - ParameterId["ShowLineForRow"] = "showLineForRow"; - // DPI_ShowLinePatternPicker, having type bool - ParameterId["ShowLinePatternPicker"] = "showLinePatternPicker"; - // DPI_ShowLineTransparency, having type bool - ParameterId["ShowLineTransparency"] = "showLineTransparency"; - // DPI_ShowLineWidthPicker, having type bool - ParameterId["ShowLineWidthPicker"] = "showLineWidthPicker"; - // DPI_CanBeAuto, having type bool - ParameterId["CanBeAuto"] = "canBeAuto"; - // DPI_CanBeNone, having type bool - ParameterId["CanBeNone"] = "canBeNone"; - // DPI_CanMatchMarkColor, having type bool - ParameterId["CanMatchMarkColor"] = "canMatchMarkColor"; - // DPI_HasOpacity, having type bool - ParameterId["HasOpacity"] = "hasOpacity"; - // DPI_IncludeAllHidden, having type bool - ParameterId["IncludeAllHidden"] = "includeAllHidden"; - // DPI_IncludeCurrent, having type bool - ParameterId["IncludeCurrent"] = "includeCurrent"; - // DPI_IsIncluded, having type bool - ParameterId["IsIncluded"] = "isIncluded"; - // DPI_IsRelative, having type bool - ParameterId["IsRelative"] = "isRelative"; - // DPI_IsSecondaryAllowed, having type bool - ParameterId["IsSecondaryAllowed"] = "isSecondaryAllowed"; - // DPI_NullIfIncomplete, having type bool - ParameterId["NullIfIncomplete"] = "nullIfIncomplete"; - // DPI_IsCalcAssistanceEnabled, having type bool - ParameterId["IsCalcAssistanceEnabled"] = "isCalcAssistanceEnabled"; - // DPI_UseSecondaryCalc, having type bool - ParameterId["UseSecondaryCalc"] = "useSecondaryCalc"; - // DPI_CanLoad, having type bool - ParameterId["CanLoad"] = "canLoad"; - // DPI_DescriptionOnly, having type bool - ParameterId["DescriptionOnly"] = "descriptionOnly"; - // DPI_AreAliasesSupported, having type bool - ParameterId["AreAliasesSupported"] = "areAliasesSupported"; - // DPI_AreRefColumnsSupported, having type bool - ParameterId["AreRefColumnsSupported"] = "areRefColumnsSupported"; - // DPI_IsAggregated, having type bool - ParameterId["IsAggregated"] = "isAggregated"; - // DPI_IsExportSupported, having type bool - ParameterId["IsExportSupported"] = "isExportSupported"; - // DPI_IsMeasureNames, having type bool - ParameterId["IsMeasureNames"] = "isMeasureNames"; - // DPI_IsSummarySupported, having type bool - ParameterId["IsSummarySupported"] = "isSummarySupported"; - // DPI_IsTopNSupported, having type bool - ParameterId["IsTopNSupported"] = "isTopNSupported"; - // DPI_IsUnderlyingSupported, having type bool - ParameterId["IsUnderlyingSupported"] = "isUnderlyingSupported"; - // DPI_OnlyExportSummary, having type bool - ParameterId["OnlyExportSummary"] = "onlyExportSummary"; - // DPI_ShowAllFields, having type bool - ParameterId["ShowAllFields"] = "showAllFields"; - // DPI_UseTablePtrs, having type bool - ParameterId["UseTablePtrs"] = "useTablePtrs"; - // DPI_OnlyFetchSummary, having type bool - ParameterId["OnlyFetchSummary"] = "onlyFetchSummary"; - // DPI_IsDeviceLayoutCustomized, having type bool - ParameterId["IsDeviceLayoutCustomized"] = "isDeviceLayoutCustomized"; - // DPI_IsDeviceSizeCustomized, having type bool - ParameterId["IsDeviceSizeCustomized"] = "isDeviceSizeCustomized"; - // DPI_IsDeviceSupportedByMobileApp, having type bool - ParameterId["IsDeviceSupportedByMobileApp"] = "isDeviceSupportedByMobileApp"; - // DPI_IsPortrait, having type bool - ParameterId["IsPortrait"] = "isPortrait"; - // DPI_IsPortraitByDefault, having type bool - ParameterId["IsPortraitByDefault"] = "isPortraitByDefault"; - // DPI_IsUserCustomFormat, having type bool - ParameterId["IsUserCustomFormat"] = "isUserCustomFormat"; - // DPI_ShouldDisplayRebuildExtractMessage, having type bool - ParameterId["ShouldDisplayRebuildExtractMessage"] = "shouldDisplayRebuildExtractMessage"; - // DPI_SupportsCustomStartOfWeek, having type bool - ParameterId["SupportsCustomStartOfWeek"] = "supportsCustomStartOfWeek"; - // DPI_NeedsConnectPrompt, having type bool - ParameterId["NeedsConnectPrompt"] = "needsConnectPrompt"; - // DPI_NeedsCloseDataSourceErrorPrompt, having type bool - ParameterId["NeedsCloseDataSourceErrorPrompt"] = "needsCloseDsErrorPrompt"; - // DPI_ClearCurrentSelection, having type bool - ParameterId["ClearCurrentSelection"] = "clearCurrentSelection"; - // DPI_HasContains, having type bool - ParameterId["HasContains"] = "hasContains"; - // DPI_HasEndsWith, having type bool - ParameterId["HasEndsWith"] = "hasEndsWith"; - // DPI_HasReplaceSelection, having type bool - ParameterId["HasReplaceSelection"] = "hasReplaceSelection"; - // DPI_HasStartsWith, having type bool - ParameterId["HasStartsWith"] = "hasStartsWith"; - // DPI_IsLeafSelectionOnly, having type bool - ParameterId["IsLeafSelectionOnly"] = "isLeafSelectionOnly"; - // DPI_ReplaceSelection, having type bool - ParameterId["ReplaceSelection"] = "replaceSelection"; - // DPI_IsColorPaletteCustomized, having type bool - ParameterId["IsColorPaletteCustomized"] = "isColorPaletteCustomized"; - // DPI_ReversePaletteOrder, having type bool - ParameterId["ReversePaletteOrder"] = "reversePaletteOrder"; - // DPI_TriedToConnect, having type bool - ParameterId["TriedToConnect"] = "triedToConnect"; - // DPI_ScaleMarksInAxisUnits, having type bool - ParameterId["ScaleMarksInAxisUnits"] = "scaleMarksInAxisUnits"; - // DPI_ShowMarkSizingOptions, having type bool - ParameterId["ShowMarkSizingOptions"] = "showMarkSizingOptions"; - // DPI_UseSizeFieldCaption, having type bool - ParameterId["UseSizeFieldCaption"] = "useSizeFieldCaption"; - // DPI_IsLicensedAndRegistered, having type bool - ParameterId["IsLicensedAndRegistered"] = "isLicensedAndRegistered"; - // DPI_SetNewDatasourceActive, having type bool - ParameterId["SetNewDatasourceActive"] = "setNewDatasourceActive"; - // DPI_AllowCustomLabel, having type bool - ParameterId["AllowCustomLabel"] = "allowCustomLabel"; - // DPI_IsMostRecentModeValid, having type bool - ParameterId["IsMostRecentModeValid"] = "isMostRecentModeValid"; - // DPI_MustShowLabels, having type bool - ParameterId["MustShowLabels"] = "mustShowLabels"; - // DPI_ShowRunningOrderLabels, having type bool - ParameterId["ShowRunningOrderLabels"] = "showRunningOrderLabels"; - // DPI_IsDroppedFile, having type bool - ParameterId["IsDroppedFile"] = "isDroppedFile"; - // DPI_IsInitialized, having type bool - ParameterId["IsInitialized"] = "isInitialized"; - // DPI_IncludeDashboard, having type bool - ParameterId["IncludeDashboard"] = "includeDashboard"; - // DPI_ChildrenCanResize, having type bool - ParameterId["ChildrenCanResize"] = "childrenCanResize"; - // DPI_BoolMap, having type Dictionary(of bool) - ParameterId["BoolMap"] = "boolMap"; - // DPI_CheckedMenuItems, having type bool[] - ParameterId["CheckedMenuItems"] = "checkedMenuItems"; - // DPI_IncludedSheetValues, having type bool[] - ParameterId["IncludedSheetValues"] = "includedSheetValues"; - // DPI_SortOrderVector, having type bool[] - ParameterId["SortOrderVector"] = "sortOrderVector"; - // DPI_ActionName, having type string - ParameterId["ActionName"] = "actionName"; - // DPI_ActionSourceText, having type string - ParameterId["ActionSourceText"] = "actionSourceText"; - // DPI_ActionTypeAsString, having type string - ParameterId["ActionTypeAsString"] = "actionTypeAsString"; - // DPI_ActiveTab, having type string - ParameterId["ActiveTab"] = "active_tab"; - // DPI_AddInId, having type string - ParameterId["AddInId"] = "addInId"; - // DPI_AddInstanceId, having type string - ParameterId["AddInstanceId"] = "addInInstanceId"; - // DPI_AddInName, having type string - ParameterId["AddInName"] = "addInName"; - // DPI_AddInLocale, having type string - ParameterId["AddInLocale"] = "addInLocale"; - // DPI_AddInLanguage, having type string - ParameterId["AddInLanguage"] = "addInLanguage"; - // DPI_APIVersion, having type string - ParameterId["APIVersion"] = "apiVersion"; - // DPI_Alias, having type string - ParameterId["Alias"] = "alias"; - // DPI_AnchorDate, having type string - ParameterId["AnchorDate"] = "anchorDate"; - // DPI_AnnotationRes, having type string - ParameterId["AnnotationRes"] = "annotationRes"; - // DPI_ReadId, having type string - ParameterId["ReadId"] = "readId"; - // DPI_AnnotationText, having type string - ParameterId["AnnotationText"] = "annotationText"; - // DPI_ArchiveDirectory, having type string - ParameterId["ArchiveDirectory"] = "archiveDirectory"; - // DPI_ArchiveFullPath, having type string - ParameterId["ArchiveFullPath"] = "archiveFullPath"; - // DPI_AtTheLevelInvalidFieldCaption, having type string - ParameterId["AtTheLevelInvalidFieldCaption"] = "atTheLevelInvalidFieldCaption"; - // DPI_AutoCompleteSubstring, having type string - ParameterId["AutoCompleteSubstring"] = "acSubstring"; - // DPI_AutosaveFileId, having type string - ParameterId["AutosaveFileId"] = "autosaveFileId"; - // DPI_AutosaveTimerInterval, having type string - ParameterId["AutosaveTimerInterval"] = "autosaveTimerInterval"; - // DPI_BaseColumnCaption, having type string - ParameterId["BaseColumnCaption"] = "baseColumnCaption"; - // DPI_ClearButtonText, having type string - ParameterId["ClearButtonText"] = "clearButtonText"; - // DPI_ColorPaletteId, having type string - ParameterId["ColorPaletteId"] = "colorPaletteId"; - // DPI_ColorPaletteName, having type string - ParameterId["ColorPaletteName"] = "colorPaletteName"; - // DPI_ColorSwatch, having type string - ParameterId["ColorSwatch"] = "colorSwatch"; - // DPI_CommandName, having type string - ParameterId["CommandName"] = "commandName"; - // DPI_ConfidenceLevelValue, having type string - ParameterId["ConfidenceLevelValue"] = "confidenceLevelValue"; - // DPI_CountDistinctStr, having type string - ParameterId["CountDistinctStr"] = "countDistinctStr"; - // DPI_CSSMargin, having type string - ParameterId["CSSMargin"] = "cssMargin"; - // DPI_CSSWhitespace, having type string - ParameterId["CSSWhitespace"] = "cssWhitespace"; - // DPI_DBPassword, having type string - ParameterId["DBPassword"] = "dbPassword"; - // DPI_DBUsername, having type string - ParameterId["DBUsername"] = "dbUsername"; - // DPI_DataAlertConditionText, having type string - ParameterId["DataAlertConditionText"] = "dataAlertConditionText"; - // DPI_DataAlertMeasureText, having type string - ParameterId["DataAlertMeasureText"] = "dataAlertMeasureText"; - // DPI_DataAlertSpecSerializedText, having type string - ParameterId["DataAlertSpecSerializedText"] = "dataAlertSpecSerializedText"; - // DPI_DataAlertDefaultSubject, having type string - ParameterId["DataAlertDefaultSubject"] = "dataAlertDefaultSubject"; - // DPI_DataAlertThresholdText, having type string - ParameterId["DataAlertThresholdText"] = "dataAlertThresholdText"; - // DPI_DataGridSortColumnName, having type string - ParameterId["DataGridSortColumnName"] = "datagridSortColumnName"; - // DPI_DataServerConnectionError, having type string - ParameterId["DataServerConnectionError"] = "dataServerConnectionError"; - // DPI_DatabaseFilter, having type string - ParameterId["DatabaseFilter"] = "databaseFilter"; - // DPI_DatabaseFilterPrompt, having type string - ParameterId["DatabaseFilterPrompt"] = "databaseFilterPrompt"; - // DPI_DatasourceRanking, having type string - ParameterId["DatasourceRanking"] = "datasourceRanking"; - // DPI_DatasourceUrl, having type string - ParameterId["DatasourceUrl"] = "datasourceUrl"; - // DPI_DatasourceUsername, having type string - ParameterId["DatasourceUsername"] = "datasourceUsername"; - // DPI_DateFormat, having type string - ParameterId["DateFormat"] = "dateFormat"; - // DPI_DatePart, having type string - ParameterId["DatePart"] = "datePart"; - // DPI_DatePartAbbrev, having type string - ParameterId["DatePartAbbrev"] = "datePartAbbrev"; - // DPI_DefaultHierarchyName, having type string - ParameterId["DefaultHierarchyName"] = "defaultHierarchyName"; - // DPI_Delimiter, having type string - ParameterId["Delimiter"] = "delimiter"; - // DPI_DeviceName, having type string - ParameterId["DeviceName"] = "deviceName"; - // DPI_DeviceType, having type string - ParameterId["DeviceType"] = "deviceType"; - // DPI_DisplayPath, having type string - ParameterId["DisplayPath"] = "displayPath"; - // DPI_DistributionValueString, having type string - ParameterId["DistributionValueString"] = "distributionValueString"; - // DPI_DrillPathName, having type string - ParameterId["DrillPathName"] = "drillPathName"; - // DPI_EmbeddedTitle, having type string - ParameterId["EmbeddedTitle"] = "embeddedTitle"; - // DPI_EnterValueText, having type string - ParameterId["EnterValueText"] = "enterValueText"; - // DPI_EscapeString, having type string - ParameterId["EscapeString"] = "escapeString"; - // DPI_ExtSvcConfigHost, having type string - ParameterId["ExtSvcConfigHost"] = "extSvcConfigHost"; - // DPI_ExtSvcConfigPassword, having type string - ParameterId["ExtSvcConfigPassword"] = "extSvcConfigPassword"; - // DPI_ExtSvcConfigPort, having type string - ParameterId["ExtSvcConfigPort"] = "extSvcConfigPort"; - // DPI_ExtSvcConfigConnectTimeout, having type string - ParameterId["ExtSvcConfigConnectTimeout"] = "extSvcConnectTimeout"; - // DPI_ExtSvcConfigPrevHost, having type string - ParameterId["ExtSvcConfigPrevHost"] = "extSvcConfigPrevHost"; - // DPI_ExtSvcConfigUsername, having type string - ParameterId["ExtSvcConfigUsername"] = "extSvcConfigUsername"; - // DPI_ExtractUpdateTime, having type string - ParameterId["ExtractUpdateTime"] = "extractUpdateTime"; - // DPI_FieldFolderName, having type string - ParameterId["FieldFolderName"] = "fieldFolderName"; - // DPI_FieldNameString, having type string - ParameterId["FieldNameString"] = "fieldName"; - // DPI_FilterSearchDomain, having type string - ParameterId["FilterSearchDomain"] = "filterSearchDomain"; - // DPI_FilterSpec, having type string - ParameterId["FilterSpec"] = "filterSpec"; - // DPI_FirstValue, having type string - ParameterId["FirstValue"] = "firstValue"; - // DPI_FolderName, having type string - ParameterId["FolderName"] = "folderName"; - // DPI_FontName, having type string - ParameterId["FontName"] = "fontName"; - // DPI_FormatString, having type string - ParameterId["FormatString"] = "formatString"; - // DPI_FormattedIncrementValue, having type string - ParameterId["FormattedIncrementValue"] = "formattedIncrement"; - // DPI_FormattedMaxValue, having type string - ParameterId["FormattedMaxValue"] = "formattedMax"; - // DPI_FormattedMinValue, having type string - ParameterId["FormattedMinValue"] = "formattedMin"; - // DPI_FormattedValue, having type string - ParameterId["FormattedValue"] = "formattedValue"; - // DPI_FormattedCenterValue, having type string - ParameterId["FormattedCenterValue"] = "formattedCenter"; - // DPI_FormattedEndValue, having type string - ParameterId["FormattedEndValue"] = "formattedEnd"; - // DPI_FormattedStartValue, having type string - ParameterId["FormattedStartValue"] = "formattedStart"; - // DPI_PairedFormattedValue, having type string - ParameterId["PairedFormattedValue"] = "pairedFormattedValue"; - // DPI_FrameAttributes, having type string - ParameterId["FrameAttributes"] = "frameAttr"; - // DPI_GUID, having type string - ParameterId["GUID"] = "guid"; - // DPI_GeographicSearchCandidateDisplayName, having type string - ParameterId["GeographicSearchCandidateDisplayName"] = "geographicSearchCandidateDisplayName"; - // DPI_GeographicSearchCandidateParentName, having type string - ParameterId["GeographicSearchCandidateParentName"] = "geographicSearchCandidateParentName"; - // DPI_GeographicSearchCandidateType, having type string - ParameterId["GeographicSearchCandidateType"] = "geographicSearchCandidateType"; - // DPI_GeographicSearchLocale, having type string - ParameterId["GeographicSearchLocale"] = "geographicSearchLocale"; - // DPI_GeographicSearchQueryString, having type string - ParameterId["GeographicSearchQueryString"] = "geographicSearchSearchString"; - // DPI_GeographicSearchUILocale, having type string - ParameterId["GeographicSearchUILocale"] = "geographicSearchUilocale"; - // DPI_IconRes, having type string - ParameterId["IconRes"] = "iconRes"; - // DPI_ImageHash, having type string - ParameterId["ImageHash"] = "imageHash"; - // DPI_ImageName, having type string - ParameterId["ImageName"] = "imageName"; - // DPI_ImageRes, having type string - ParameterId["ImageRes"] = "imageRes"; - // DPI_IncludesSiblingsPrompt, having type string - ParameterId["IncludesSiblingsPrompt"] = "includesSiblingsPrompt"; - // DPI_IncludesSubfoldersPrompt, having type string - ParameterId["IncludesSubfoldersPrompt"] = "includesSubfoldersPrompt"; - // DPI_IncrementalScheduleIDs, having type string - ParameterId["IncrementalScheduleIDs"] = "incrementalScheduleIds"; - // DPI_InvariantKeyword, having type string - ParameterId["InvariantKeyword"] = "invariantKeyword"; - // DPI_JoinOperator, having type string - ParameterId["JoinOperator"] = "joinOperator"; - // DPI_JoinExpression, having type string - ParameterId["JoinExpression"] = "joinExpression"; - // DPI_Label, having type string - ParameterId["Label"] = "label"; - // DPI_PairedLabel, having type string - ParameterId["PairedLabel"] = "pairedLabel"; - // DPI_LayoutID, having type string - ParameterId["LayoutID"] = "layoutId"; - // DPI_LeftJoinExpression, having type string - ParameterId["LeftJoinExpression"] = "leftJoinExpression"; - // DPI_LimitCountExpression, having type string - ParameterId["LimitCountExpression"] = "limitCountExpression"; - // DPI_LinkTarget, having type string - ParameterId["LinkTarget"] = "linkTarget"; - // DPI_Locale, having type string - ParameterId["Locale"] = "locale"; - // DPI_LocalizedKeyword, having type string - ParameterId["LocalizedKeyword"] = "localizedKeyword"; - // DPI_MapBoxGLStyleId, having type string - ParameterId["MapBoxGLStyleId"] = "mapboxGlStyleId"; - // DPI_MapBoxStyleUrl, having type string - ParameterId["MapBoxStyleUrl"] = "mapboxStyleUrl"; - // DPI_MapBoxUsername, having type string - ParameterId["MapBoxUsername"] = "mapboxUsername"; - // DPI_MapScaleReadoutString, having type string - ParameterId["MapScaleReadoutString"] = "mapScaleReadoutString"; - // DPI_MapScaleTooltipString, having type string - ParameterId["MapScaleTooltipString"] = "mapScaleTooltipString"; - // DPI_MapSourceName, having type string - ParameterId["MapSourceName"] = "mapSourceName"; - // DPI_MaxLabel, having type string - ParameterId["MaxLabel"] = "maxLabel"; - // DPI_MinLabel, having type string - ParameterId["MinLabel"] = "minLabel"; - // DPI_ModelDescriptionParagraph, having type string - ParameterId["ModelDescriptionParagraph"] = "modelDescriptionParagraph"; - // DPI_NameTemplate, having type string - ParameterId["NameTemplate"] = "nameTemplate"; - // DPI_NewDrillPath, having type string - ParameterId["NewDrillPath"] = "newDrillPath"; - // DPI_NewFieldFolderName, having type string - ParameterId["NewFieldFolderName"] = "newFieldFolderName"; - // DPI_NewTableAlias, having type string - ParameterId["NewTableAlias"] = "newTableAlias"; - // DPI_NonFormattedValue, having type string - ParameterId["NonFormattedValue"] = "unformattedValue"; - // DPI_OAuthUserName, having type string - ParameterId["OAuthUserName"] = "oauthUsername"; - // DPI_ObjectName, having type string - ParameterId["ObjectName"] = "objectName"; - // DPI_ObjectOverrideMessage, having type string - ParameterId["ObjectOverrideMessage"] = "objectOverrideMessage"; - // DPI_OldTableAlias, having type string - ParameterId["OldTableAlias"] = "oldTableAlias"; - // DPI_OperatingSystem, having type string - ParameterId["OperatingSystem"] = "operatingSystem"; - // DPI_OriginalFilePath, having type string - ParameterId["OriginalFilePath"] = "originalFilePath"; - // DPI_OriginalFileVersion, having type string - ParameterId["OriginalFileVersion"] = "originalFileVersion"; - // DPI_PaneDescriptorKey, having type string - ParameterId["PaneDescriptorKey"] = "paneDescrKey"; - // DPI_ParentName, having type string - ParameterId["ParentName"] = "parentName"; - // DPI_ParentTable, having type string - ParameterId["ParentTable"] = "parentTable"; - // DPI_PatternFilterString, having type string - ParameterId["PatternFilterString"] = "patternFilterString"; - // DPI_PendingCalcName, having type string - ParameterId["PendingCalcName"] = "pendingCalcName"; - // DPI_PercentilesString, having type string - ParameterId["PercentilesString"] = "percentilesString"; - // DPI_ProjectName, having type string - ParameterId["ProjectName"] = "projectName"; - // DPI_PropertyName, having type string - ParameterId["PropertyName"] = "propertyName"; - // DPI_QuickFilterTitleCaption, having type string - ParameterId["QuickFilterTitleCaption"] = "quickFilterTitleCaption"; - // DPI_RangeDiffStr, having type string - ParameterId["RangeDiffStr"] = "diffValue"; - // DPI_RangeMaxStr, having type string - ParameterId["RangeMaxStr"] = "maxValue"; - // DPI_RangeMinStr, having type string - ParameterId["RangeMinStr"] = "minValue"; - // DPI_RecoveredFilePath, having type string - ParameterId["RecoveredFilePath"] = "recoveredFilePath"; - // DPI_ReferenceLineSpecificationId, having type string - ParameterId["ReferenceLineSpecificationId"] = "referenceLineId"; - // DPI_ReplaceFieldPrompt, having type string - ParameterId["ReplaceFieldPrompt"] = "replaceFieldPrompt"; - // DPI_RightJoinExpression, having type string - ParameterId["RightJoinExpression"] = "rightJoinExpression"; - // DPI_RootPath, having type string - ParameterId["RootPath"] = "rootPath"; - // DPI_RuntimeFinalDatastore, having type string - ParameterId["RuntimeFinalDatastore"] = "runtimeFinalDatastore"; - // DPI_RuntimeInitialDatastore, having type string - ParameterId["RuntimeInitialDatastore"] = "runtimeInitialDatastore"; - // DPI_RuntimeVTL, having type string - ParameterId["RuntimeVTL"] = "runtimeVtl"; - // DPI_SampleDataString, having type string - ParameterId["SampleDataString"] = "sampleData"; - // DPI_ScheduleIDs, having type string - ParameterId["ScheduleIDs"] = "scheduleIds"; - // DPI_SchemaFieldIconResource, having type string - ParameterId["SchemaFieldIconResource"] = "fieldIconRes"; - // DPI_ScreenName, having type string - ParameterId["ScreenName"] = "screenName"; - // DPI_ScriptCommand, having type string - ParameterId["ScriptCommand"] = "command"; - // DPI_SecondValue, having type string - ParameterId["SecondValue"] = "secondValue"; - // DPI_SelectedValue, having type string - ParameterId["SelectedValue"] = "selectedValue"; - // DPI_ShapeName, having type string - ParameterId["ShapeName"] = "shapeName"; - // DPI_SheetId, having type string - ParameterId["SheetId"] = "sheetId"; - // DPI_ShowDataTable, having type string - ParameterId["ShowDataTable"] = "showDataTable"; - // DPI_SimpleCommand, having type string - ParameterId["SimpleCommand"] = "simpleCommand"; - // DPI_SortModeCaption, having type string - ParameterId["SortModeCaption"] = "sortModeCaption"; - // DPI_SourceName, having type string - ParameterId["SourceName"] = "sourceName"; - // DPI_SourceText, having type string - ParameterId["SourceText"] = "sourceText"; - // DPI_SpecialValueText, having type string - ParameterId["SpecialValueText"] = "specialValueText"; - // DPI_StaticImage, having type string - ParameterId["StaticImage"] = "staticImage"; - // DPI_StoryPointBase, having type string - ParameterId["StoryPointBase"] = "storyPointBase"; - // DPI_StoryPointCaption, having type string - ParameterId["StoryPointCaption"] = "storyPointCaption"; - // DPI_Storyboard, having type string - ParameterId["Storyboard"] = "storyboard"; - // DPI_StyledLabel, having type string - ParameterId["StyledLabel"] = "styledLabel"; - // DPI_SummaryCaption, having type string - ParameterId["SummaryCaption"] = "summaryCaption"; - // DPI_SummaryField, having type string - ParameterId["SummaryField"] = "summaryField"; - // DPI_TableauVersion, having type string - ParameterId["TableauVersion"] = "tableauVersion"; - // DPI_TableFilter, having type string - ParameterId["TableFilter"] = "tableFilter"; - // DPI_TableFilterPrompt, having type string - ParameterId["TableFilterPrompt"] = "tableFilterPrompt"; - // DPI_TagsLabel, having type string - ParameterId["TagsLabel"] = "tagsLabel"; - // DPI_Target, having type string - ParameterId["Target"] = "target"; - // DPI_ThumbnailGroup, having type string - ParameterId["ThumbnailGroup"] = "thumbnailGroup"; - // DPI_ThumbnailUser, having type string - ParameterId["ThumbnailUser"] = "thumbnailUser"; - // DPI_TimeFormat, having type string - ParameterId["TimeFormat"] = "timeFormat"; - // DPI_TrendLineErrorString, having type string - ParameterId["TrendLineErrorString"] = "trendLineErrorString"; - // DPI_TrendLineModelFormula, having type string - ParameterId["TrendLineModelFormula"] = "trendLineModelFormula"; - // DPI_URLString, having type string - ParameterId["URLString"] = "urlString"; - // DPI_URLTest, having type string - ParameterId["URLTest"] = "urlTest"; - // DPI_ValidationMessage, having type string - ParameterId["ValidationMessage"] = "validationMessage"; - // DPI_ValueStr, having type string - ParameterId["ValueStr"] = "valueString"; - // DPI_VerifiedNonFormattedValue, having type string - ParameterId["VerifiedNonFormattedValue"] = "verifiedUnformattedValue"; - // DPI_WorkbookFullPath, having type string - ParameterId["WorkbookFullPath"] = "workbookFullPath"; - // DPI_WindowTitle, having type string - ParameterId["WindowTitle"] = "windowTitle"; - // DPI_ZoneName, having type string - ParameterId["ZoneName"] = "zoneName"; - // DPI_ZoneParam, having type string - ParameterId["ZoneParam"] = "zoneParam"; - // DPI_DataAlertErrorText, having type string - ParameterId["DataAlertErrorText"] = "dataAlertErrorText"; - // DPI_ExtractTempDirectory, having type string - ParameterId["ExtractTempDirectory"] = "extractTempDir"; - // DPI_DSSubClass, having type string - ParameterId["DSSubClass"] = "dsSubClass"; - // DPI_DbgCommandLine, having type string - ParameterId["DbgCommandLine"] = "debugCommandLine"; - // DPI_DbgLogPath, having type string - ParameterId["DbgLogPath"] = "debugLogPath"; - // DPI_DbgOSVersion, having type string - ParameterId["DbgOSVersion"] = "debugOsVersion"; - // DPI_DbgUserName, having type string - ParameterId["DbgUserName"] = "debugUsername"; - // DPI_ErrorMsg, having type string - ParameterId["ErrorMsg"] = "errorMessage"; - // DPI_ErrorStr, having type string - ParameterId["ErrorStr"] = "errorString"; - // DPI_EventMessage, having type string - ParameterId["EventMessage"] = "eventMessage"; - // DPI_EventTimestamp, having type string - ParameterId["EventTimestamp"] = "eventTimestamp"; - // DPI_ExtractDeltaPath, having type string - ParameterId["ExtractDeltaPath"] = "extractDeltaPath"; - // DPI_ExtractPath, having type string - ParameterId["ExtractPath"] = "extractPath"; - // DPI_ExtractSuggestedPath, having type string - ParameterId["ExtractSuggestedPath"] = "suggestedExtractPath"; - // DPI_ExtractTaskSummary, having type string - ParameterId["ExtractTaskSummary"] = "extractTaskSummary"; - // DPI_FactorsString, having type string - ParameterId["FactorsString"] = "factorsStr"; - // DPI_FormattedFamilyName, having type string - ParameterId["FormattedFamilyName"] = "formattedFamilyName"; - // DPI_FunctionSignature, having type string - ParameterId["FunctionSignature"] = "funcSig"; - // DPI_FunctionTooltip, having type string - ParameterId["FunctionTooltip"] = "funcTooltip"; - // DPI_HelpContents, having type string - ParameterId["HelpContents"] = "helpContents"; - // DPI_MapAttributionText, having type string - ParameterId["MapAttributionText"] = "mapAttributionText"; - // DPI_MapAttributionTextSize, having type string - ParameterId["MapAttributionTextSize"] = "mapAttributionTextSize"; - // DPI_MapAttributionUrl, having type string - ParameterId["MapAttributionUrl"] = "mapAttributionUrl"; - // DPI_MapBoxErrorMessage, having type string - ParameterId["MapBoxErrorMessage"] = "mapboxErrorMessage"; - // DPI_MapBoxOldStyleName, having type string - ParameterId["MapBoxOldStyleName"] = "mapboxOldStyleName"; - // DPI_MapBoxSelectedStyle, having type string - ParameterId["MapBoxSelectedStyle"] = "mapboxSelectedStyle"; - // DPI_MapBoxStyleName, having type string - ParameterId["MapBoxStyleName"] = "mapboxStyleName"; - // DPI_MapLayerRequest, having type string - ParameterId["MapLayerRequest"] = "mapLayerRequest"; - // DPI_MapServerKey, having type string - ParameterId["MapServerKey"] = "mapServerKey"; - // DPI_MapTileServer, having type string - ParameterId["MapTileServer"] = "mapTileServer"; - // DPI_MapTileUrl, having type string - ParameterId["MapTileUrl"] = "mapTileUrl"; - // DPI_PercentagesString, having type string - ParameterId["PercentagesString"] = "percentagesStr"; - // DPI_PublishErrorMessage, having type string - ParameterId["PublishErrorMessage"] = "publishErrorMessage"; - // DPI_TdePath, having type string - ParameterId["TdePath"] = "tdePath"; - // DPI_UIAutomationComponentName, having type string - ParameterId["UIAutomationComponentName"] = "uiAutomationComponentName"; - // DPI_UIAutomationEndTime, having type string - ParameterId["UIAutomationEndTime"] = "uiAutomationEndTime"; - // DPI_UIAutomationName, having type string - ParameterId["UIAutomationName"] = "uiAutomationName"; - // DPI_UIAutomationStartTime, having type string - ParameterId["UIAutomationStartTime"] = "uiAutomationStartTime"; - // DPI_UIAutomationValue, having type string - ParameterId["UIAutomationValue"] = "uiAutomationValue"; - // DPI_WMSConnectionName, having type string - ParameterId["WMSConnectionName"] = "wmsConnectionName"; - // DPI_WMSOldConnectionName, having type string - ParameterId["WMSOldConnectionName"] = "wmsOldConnectionName"; - // DPI_WMSServerUrl, having type string - ParameterId["WMSServerUrl"] = "wmsServerUrl"; - // DPI_AboutBuildVersion, having type string - ParameterId["AboutBuildVersion"] = "aboutBuildVersion"; - // DPI_ActionFields, having type string - ParameterId["ActionFields"] = "actionFields"; - // DPI_AddVariableLabel, having type string - ParameterId["AddVariableLabel"] = "addVariableLabel"; - // DPI_AddVariableTooltip, having type string - ParameterId["AddVariableTooltip"] = "addVariableTooltip"; - // DPI_AllowedDataSourcesByName, having type string - ParameterId["AllowedDataSourcesByName"] = "allowedDataSourcesByName"; - // DPI_AppAboutVersion, having type string - ParameterId["AppAboutVersion"] = "appAboutVersion"; - // DPI_AppBuildBranchName, having type string - ParameterId["AppBuildBranchName"] = "appBuildBranchName"; - // DPI_AppBuildVersion, having type string - ParameterId["AppBuildVersion"] = "appBuildVersion"; - // DPI_AppExternalVersion, having type string - ParameterId["AppExternalVersion"] = "appExternalVersion"; - // DPI_AppName, having type string - ParameterId["AppName"] = "appName"; - // DPI_AppProductVersion, having type string - ParameterId["AppProductVersion"] = "appProductVersion"; - // DPI_OriginalVersion, having type string - ParameterId["OriginalVersion"] = "originalVersion"; - // DPI_AtTheLevelSpecialCaption, having type string - ParameterId["AtTheLevelSpecialCaption"] = "atTheLevelSpecialCaption"; - // DPI_AutoCompleteCalc, having type string - ParameterId["AutoCompleteCalc"] = "acCalc"; - // DPI_CallToAction, having type string - ParameterId["CallToAction"] = "callToAction"; - // DPI_CSVPath, having type string - ParameterId["CSVPath"] = "csvPath"; - // DPI_CommandNamespace, having type string - ParameterId["CommandNamespace"] = "commandNamespace"; - // DPI_Condition, having type string - ParameterId["Condition"] = "condition"; - // DPI_ConditionSummary, having type string - ParameterId["ConditionSummary"] = "conditionSummary"; - // DPI_ConfirmationMsg, having type string - ParameterId["ConfirmationMsg"] = "confirmationMsg"; - // DPI_DashboardTypeText, having type string - ParameterId["DashboardTypeText"] = "dashboardType"; - // DPI_DataserverPublicAddress, having type string - ParameterId["DataserverPublicAddress"] = "dataserverPublicAddress"; - // DPI_DatasourceFileName, having type string - ParameterId["DatasourceFileName"] = "datasourceFileName"; - // DPI_DecimalMark, having type string - ParameterId["DecimalMark"] = "decimalMark"; - // DPI_DeleteVariableTooltip, having type string - ParameterId["DeleteVariableTooltip"] = "deleteVariableTooltip"; - // DPI_DialogTitle, having type string - ParameterId["DialogTitle"] = "dialogTitle"; - // DPI_DisplayValue, having type string - ParameterId["DisplayValue"] = "displayValue"; - // DPI_TooltipValue, having type string - ParameterId["TooltipValue"] = "tooltipValue"; - // DPI_DstPath, having type string - ParameterId["DstPath"] = "dstPath"; - // DPI_EditWidgetHeader, having type string - ParameterId["EditWidgetHeader"] = "editWidgetHeader"; - // DPI_EditWidgetInstruction, having type string - ParameterId["EditWidgetInstruction"] = "editWidgetInstruction"; - // DPI_EndSelectionCaption, having type string - ParameterId["EndSelectionCaption"] = "endSelectionCaption"; - // DPI_ErrorDialogTitle, having type string - ParameterId["ErrorDialogTitle"] = "errorDialogTitle"; - // DPI_ErrorHelpLink, having type string - ParameterId["ErrorHelpLink"] = "errorHelpLink"; - // DPI_FilterSearchQuery, having type string - ParameterId["FilterSearchQuery"] = "filterSearchQuery"; - // DPI_FromLabel, having type string - ParameterId["FromLabel"] = "fromLabel"; - // DPI_FunctionHelp, having type string - ParameterId["FunctionHelp"] = "functionHelp"; - // DPI_Instructions, having type string - ParameterId["Instructions"] = "instructions"; - // DPI_LargeUnitDisplay, having type string - ParameterId["LargeUnitDisplay"] = "largeUnitDisplay"; - // DPI_Limit, having type string - ParameterId["Limit"] = "limit"; - // DPI_ListViewNameLabel, having type string - ParameterId["ListViewNameLabel"] = "listViewNameLabel"; - // DPI_ListViewValueLabel, having type string - ParameterId["ListViewValueLabel"] = "listViewValueLabel"; - // DPI_MapScaleReadoutUnit, having type string - ParameterId["MapScaleReadoutUnit"] = "mapScaleReadoutUnit"; - // DPI_MeasureDimension, having type string - ParameterId["MeasureDimension"] = "measuresDimension"; - // DPI_MimeType, having type string - ParameterId["MimeType"] = "mimeType"; - // DPI_MinimizedName, having type string - ParameterId["MinimizedName"] = "minName"; - // DPI_NotificationMsg, having type string - ParameterId["NotificationMsg"] = "notificationMsg"; - // DPI_OperationName, having type string - ParameterId["OperationName"] = "operationName"; - // DPI_PageTitle, having type string - ParameterId["PageTitle"] = "pageTitle"; - // DPI_PatternSummary, having type string - ParameterId["PatternSummary"] = "patternSummary"; - // DPI_ReferenceLineId, having type string - ParameterId["ReferenceLineId"] = "refLineId"; - // DPI_ReferenceLinePairedId, having type string - ParameterId["ReferenceLinePairedId"] = "refLinePairedId"; - // DPI_ReplaceText, having type string - ParameterId["ReplaceText"] = "replaceText"; - // DPI_RequiredVariableMessage, having type string - ParameterId["RequiredVariableMessage"] = "requiredVariableMessage"; - // DPI_RestartEverySpecialCaption, having type string - ParameterId["RestartEverySpecialCaption"] = "restartEverySpecialCaption"; - // DPI_Root, having type string - ParameterId["Root"] = "root"; - // DPI_SelectionSummary, having type string - ParameterId["SelectionSummary"] = "selectionSummary"; - // DPI_SessionAttributeKey, having type string - ParameterId["SessionAttributeKey"] = "sessionAttributeKey"; - // DPI_SessionAttributeValue, having type string - ParameterId["SessionAttributeValue"] = "sessionAttributeValue"; - // DPI_SheetAttributeKey, having type string - ParameterId["SheetAttributeKey"] = "baseSheetAttributeKey"; - // DPI_SheetAttributeValue, having type string - ParameterId["SheetAttributeValue"] = "baseSheetAttributeValue"; - // DPI_SmallUnitDisplay, having type string - ParameterId["SmallUnitDisplay"] = "smallUnitDisplay"; - // DPI_SourceCaption, having type string - ParameterId["SourceCaption"] = "sourceCaption"; - // DPI_SrcPath, having type string - ParameterId["SrcPath"] = "srcPath"; - // DPI_StartSelectionCaption, having type string - ParameterId["StartSelectionCaption"] = "startSelectionCaption"; - // DPI_Subtitle, having type string - ParameterId["Subtitle"] = "subtitle"; - // DPI_TableauServerSiteName, having type string - ParameterId["TableauServerSiteName"] = "tableauServerSiteName"; - // DPI_TargetCaption, having type string - ParameterId["TargetCaption"] = "targetCaption"; - // DPI_ThumbnailPath, having type string - ParameterId["ThumbnailPath"] = "thumbnailPath"; - // DPI_ToLabel, having type string - ParameterId["ToLabel"] = "toLabel"; - // DPI_URLAddress, having type string - ParameterId["URLAddress"] = "urlAddress"; - // DPI_ValuesTableHeader, having type string - ParameterId["ValuesTableHeader"] = "valuesTableHeader"; - // DPI_ValuesTableHeader2, having type string - ParameterId["ValuesTableHeader2"] = "valuesTableHeader2"; - // DPI_VariableDescription, having type string - ParameterId["VariableDescription"] = "variableDescription"; - // DPI_VariableDisplayName, having type string - ParameterId["VariableDisplayName"] = "variableDisplayName"; - // DPI_VariableGUID, having type string - ParameterId["VariableGUID"] = "variableGuid"; - // DPI_VerboseName, having type string - ParameterId["VerboseName"] = "verboseName"; - // DPI_ViewId, having type string - ParameterId["ViewId"] = "viewId"; - // DPI_Warning1, having type string - ParameterId["Warning1"] = "warning1"; - // DPI_Warning2, having type string - ParameterId["Warning2"] = "warning2"; - // DPI_RefreshToken, having type string - ParameterId["RefreshToken"] = "refresh_token"; - // DPI_TokenType, having type string - ParameterId["TokenType"] = "token_type"; - // DPI_XSRFToken, having type string - ParameterId["XSRFToken"] = "xsrf_token"; - // DPI_AxisSubtitle, having type string - ParameterId["AxisSubtitle"] = "axisSubtitle"; - // DPI_AxisTitle, having type string - ParameterId["AxisTitle"] = "axisTitle"; - // DPI_TickMarkOriginDataValue, having type string - ParameterId["TickMarkOriginDataValue"] = "tickMarkOriginDataValue"; - // DPI_TickMarkSpacingDataValue, having type string - ParameterId["TickMarkSpacingDataValue"] = "tickMarkSpacingDataValue"; - // DPI_ExtractActionLocalized, having type string - ParameterId["ExtractActionLocalized"] = "extractActionLocalized"; - // DPI_ExtractSource, having type string - ParameterId["ExtractSource"] = "extractSource"; - // DPI_FileContents, having type string - ParameterId["FileContents"] = "fileContents"; - // DPI_SaveImagePath, having type string - ParameterId["SaveImagePath"] = "saveImagePath"; - // DPI_WidgetUID, having type string - ParameterId["WidgetUID"] = "widgetUniqueId"; - // DPI_DatePropertiesDisplayText, having type string - ParameterId["DatePropertiesDisplayText"] = "datePropertiesDisplayText"; - // DPI_DatePropertiesHelperText, having type string - ParameterId["DatePropertiesHelperText"] = "datePropertiesHelperText"; - // DPI_EventName, having type string - ParameterId["EventName"] = "eventName"; - // DPI_ExceptionType, having type string - ParameterId["ExceptionType"] = "exceptionType"; - // DPI_SearchPlaceholder, having type string - ParameterId["SearchPlaceholder"] = "searchPlaceholder"; - // DPI_TargetVersion, having type string - ParameterId["TargetVersion"] = "targetVersion"; - // DPI_DataValueDisplayString, having type string - ParameterId["DataValueDisplayString"] = "dataValueDisplayString"; - // DPI_DomainString, having type string - ParameterId["DomainString"] = "domainString"; - // DPI_RawDataValueString, having type string - ParameterId["RawDataValueString"] = "rawDataValueString"; - // DPI_RichTextDialogTitle, having type string - ParameterId["RichTextDialogTitle"] = "richTextDialogTitle"; - // DPI_RichTextContent, having type string - ParameterId["RichTextContent"] = "richTextContent"; - // DPI_MarkSizeAsString, having type string - ParameterId["MarkSizeAsString"] = "markSizeAsString"; - // DPI_UnitsLabel, having type string - ParameterId["UnitsLabel"] = "unitsLabel"; - // DPI_EmailAddress, having type string - ParameterId["EmailAddress"] = "emailAddress"; - // DPI_FirstName, having type string - ParameterId["FirstName"] = "firstName"; - // DPI_LastName, having type string - ParameterId["LastName"] = "lastName"; - // DPI_SummaryCardAvg, having type string - ParameterId["SummaryCardAvg"] = "summaryCardAvg"; - // DPI_SummaryCardCaption, having type string - ParameterId["SummaryCardCaption"] = "summaryCardCaption"; - // DPI_SummaryCardCount, having type string - ParameterId["SummaryCardCount"] = "summaryCardCount"; - // DPI_SummaryCardKurtosis, having type string - ParameterId["SummaryCardKurtosis"] = "summaryCardKurtosis"; - // DPI_SummaryCardMax, having type string - ParameterId["SummaryCardMax"] = "summaryCardMax"; - // DPI_SummaryCardMedian, having type string - ParameterId["SummaryCardMedian"] = "summaryCardMedian"; - // DPI_SummaryCardMin, having type string - ParameterId["SummaryCardMin"] = "summaryCardMin"; - // DPI_SummaryCardQuart1, having type string - ParameterId["SummaryCardQuart1"] = "summaryCardQuart1"; - // DPI_SummaryCardQuart3, having type string - ParameterId["SummaryCardQuart3"] = "summaryCardQuart3"; - // DPI_SummaryCardSkewness, having type string - ParameterId["SummaryCardSkewness"] = "summaryCardSkewness"; - // DPI_SummaryCardStdev, having type string - ParameterId["SummaryCardStdev"] = "summaryCardStdev"; - // DPI_SummaryCardSum, having type string - ParameterId["SummaryCardSum"] = "summaryCardSum"; - // DPI_ValueClassAttr, having type string - ParameterId["ValueClassAttr"] = "valueClassAttr"; - // DPI_AuthenticationSummary, having type string - ParameterId["AuthenticationSummary"] = "authenticationSummary"; - // DPI_BtnCancelText, having type string - ParameterId["BtnCancelText"] = "btnCancelText"; - // DPI_BtnOkText, having type string - ParameterId["BtnOkText"] = "btnOkText"; - // DPI_ButtonText, having type string - ParameterId["ButtonText"] = "buttonText"; - // DPI_CalculationCaption, having type string - ParameterId["CalculationCaption"] = "calculationCaption"; - // DPI_CalculationDependencies, having type string - ParameterId["CalculationDependencies"] = "calculationDependencies"; - // DPI_CalculationFormula, having type string - ParameterId["CalculationFormula"] = "calculationFormula"; - // DPI_CheckPublishMessage, having type string - ParameterId["CheckPublishMessage"] = "checkPublishSummary"; - // DPI_ClusterModelText, having type string - ParameterId["ClusterModelText"] = "clusterModelText"; - // DPI_ClusterSummaryScaledText, having type string - ParameterId["ClusterSummaryScaledText"] = "clusterSummaryScaledText"; - // DPI_ClusterSummaryText, having type string - ParameterId["ClusterSummaryText"] = "clusterSummaryText"; - // DPI_ColumnCaption, having type string - ParameterId["ColumnCaption"] = "columnCaption"; - // DPI_DatasourceCaption, having type string - ParameterId["DatasourceCaption"] = "datasourceCaption"; - // DPI_DefaultCaption, having type string - ParameterId["DefaultCaption"] = "defaultCaption"; - // DPI_DisplayString, having type string - ParameterId["DisplayString"] = "displayText"; - // DPI_DragDescription, having type string - ParameterId["DragDescription"] = "dragDescription"; - // DPI_ExceptionMessage, having type string - ParameterId["ExceptionMessage"] = "exceptionMessage"; - // DPI_Explanation, having type string - ParameterId["Explanation"] = "explanation"; - // DPI_FieldCaption, having type string - ParameterId["FieldCaption"] = "fieldCaption"; - // DPI_FieldSummary, having type string - ParameterId["FieldSummary"] = "fieldSummary"; - // DPI_FieldSummaryLabel, having type string - ParameterId["FieldSummaryLabel"] = "fieldSummaryLabel"; - // DPI_FilterDescription, having type string - ParameterId["FilterDescription"] = "filterDescription"; - // DPI_FilterName, having type string - ParameterId["FilterName"] = "filterName"; - // DPI_ForecastDiagnoseText, having type string - ParameterId["ForecastDiagnoseText"] = "forecastDiagnoseText"; - // DPI_ForecastModelText, having type string - ParameterId["ForecastModelText"] = "forecastModelText"; - // DPI_ForecastSummaryPctText, having type string - ParameterId["ForecastSummaryPctText"] = "forecastSummaryPctText"; - // DPI_ForecastSummaryText, having type string - ParameterId["ForecastSummaryText"] = "forecastSummaryText"; - // DPI_HasActiveExtractText, having type string - ParameterId["HasActiveExtractText"] = "hasActiveExtractText"; - // DPI_HtmlColor, having type string - ParameterId["HtmlColor"] = "htmlColor"; - // DPI_IncludeLocalFilesCheckedWarning, having type string - ParameterId["IncludeLocalFilesCheckedWarning"] = "includeLocalFilesCheckedWarning"; - // DPI_IncludeLocalFilesWarning, having type string - ParameterId["IncludeLocalFilesWarning"] = "includeLocalFilesWarning"; - // DPI_InvalidFieldCaption, having type string - ParameterId["InvalidFieldCaption"] = "invalidFieldCaption"; - // DPI_LimitSummary, having type string - ParameterId["LimitSummary"] = "limitSummary"; - // DPI_LoadedExistingObjectWarning, having type string - ParameterId["LoadedExistingObjectWarning"] = "loadedExistingObjectWarning"; - // DPI_ManageDatasourcesSummary, having type string - ParameterId["ManageDatasourcesSummary"] = "manageDatasourcesSummary"; - // DPI_ModalDialog, having type string - ParameterId["ModalDialog"] = "modalDialog"; - // DPI_NewDatasourceCaption, having type string - ParameterId["NewDatasourceCaption"] = "newDatasourceCaption"; - // DPI_PermissionsButtonLabel, having type string - ParameterId["PermissionsButtonLabel"] = "permissionsButtonLabel"; - // DPI_PermissionsEditorRoleId, having type string - ParameterId["PermissionsEditorRoleId"] = "permissionsEditorRoleId"; - // DPI_PermissionsLabel, having type string - ParameterId["PermissionsLabel"] = "permissionsLabel"; - // DPI_PerspectiveCaption, having type string - ParameterId["PerspectiveCaption"] = "perspectiveCaption"; - // DPI_PublishButtonLabel, having type string - ParameterId["PublishButtonLabel"] = "publishButtonLabel"; - // DPI_PublishChoiceLabel, having type string - ParameterId["PublishChoiceLabel"] = "publishChoiceLabel"; - // DPI_PublishObjectViewsSummary, having type string - ParameterId["PublishObjectViewsSummary"] = "publishObjectViewsSummary"; - // DPI_QualifiedFieldCaption, having type string - ParameterId["QualifiedFieldCaption"] = "qualifiedFieldCaption"; - // DPI_RelationshipTooltipText, having type string - ParameterId["RelationshipTooltipText"] = "relationshipTooltipText"; - // DPI_ResetObjectAttributesWarning, having type string - ParameterId["ResetObjectAttributesWarning"] = "resetObjectAttributesWarning"; - // DPI_RowCountCaption, having type string - ParameterId["RowCountCaption"] = "rowCountCaption"; - // DPI_ServerCaption, having type string - ParameterId["ServerCaption"] = "serverCaption"; - // DPI_SizeModeName, having type string - ParameterId["SizeModeName"] = "sizeModeName"; - // DPI_SummaryText, having type string - ParameterId["SummaryText"] = "summaryText"; - // DPI_SyncClientUseExtractLabel, having type string - ParameterId["SyncClientUseExtractLabel"] = "syncClientUseExtractLabel"; - // DPI_Text, having type string - ParameterId["Text"] = "text"; - // DPI_TextDropdownControlLabel, having type string - ParameterId["TextDropdownControlLabel"] = "controlLabel"; - // DPI_ThumbnailUserName, having type string - ParameterId["ThumbnailUserName"] = "thumbnailUserName"; - // DPI_TitleString, having type string - ParameterId["TitleString"] = "titleString"; - // DPI_TooltipText, having type string - ParameterId["TooltipText"] = "tooltipText"; - // DPI_UpdatedCalcCaption, having type string - ParameterId["UpdatedCalcCaption"] = "updatedCalculationCaption"; - // DPI_UpdatedCalcFormula, having type string - ParameterId["UpdatedCalcFormula"] = "updatedCalculationFormula"; - // DPI_UserCaption, having type string - ParameterId["UserCaption"] = "userCaption"; - // DPI_WarningTooltipText, having type string - ParameterId["WarningTooltipText"] = "warningTooltipText"; - // DPI_DatasourceFile, having type string - ParameterId["DatasourceFile"] = "datasourceFile"; - // DPI_File, having type string - ParameterId["File"] = "file"; - // DPI_FileNameBase, having type string - ParameterId["FileNameBase"] = "filenameBase"; - // DPI_NewFile, having type string - ParameterId["NewFile"] = "newFile"; - // DPI_OriginalFile, having type string - ParameterId["OriginalFile"] = "originalFile"; - // DPI_OutputFile, having type string - ParameterId["OutputFile"] = "outputFile"; - // DPI_SampleFileName, having type string - ParameterId["SampleFileName"] = "sampleFilename"; - // DPI_WorkbookFile, having type string - ParameterId["WorkbookFile"] = "workbookFile"; - // DPI_ImageKey, having type string - ParameterId["ImageKey"] = "imageKey"; - // DPI_OverlayImageKey, having type string - ParameterId["OverlayImageKey"] = "overlayImageKey"; - // DPI_TempFileKey, having type string - ParameterId["TempFileKey"] = "tempfileKey"; - // DPI_CapturedSheet, having type string - ParameterId["CapturedSheet"] = "capturedSheet"; - // DPI_CurrentSheet, having type string - ParameterId["CurrentSheet"] = "currentSheet"; - // DPI_Dashboard, having type string - ParameterId["Dashboard"] = "dashboard"; - // DPI_EnsureSheet, having type string - ParameterId["EnsureSheet"] = "ensureSheetName"; - // DPI_NewSheet, having type string - ParameterId["NewSheet"] = "newSheet"; - // DPI_Sheet, having type string - ParameterId["Sheet"] = "sheet"; - // DPI_SheetName, having type string - ParameterId["SheetName"] = "sheetName"; - // DPI_SourceDashboard, having type string - ParameterId["SourceDashboard"] = "sourceDashboard"; - // DPI_SourceSheet, having type string - ParameterId["SourceSheet"] = "sourceSheet"; - // DPI_TargetSheet, having type string - ParameterId["TargetSheet"] = "targetSheet"; - // DPI_WorkbookName, having type string - ParameterId["WorkbookName"] = "workbookName"; - // DPI_Worksheet, having type string - ParameterId["Worksheet"] = "worksheet"; - // DPI_BaseViewThumbLink, having type string - ParameterId["BaseViewThumbLink"] = "baseViewThumbLink"; - // DPI_BlogLink, having type string - ParameterId["BlogLink"] = "blogLink"; - // DPI_CacheUrl, having type string - ParameterId["CacheUrl"] = "cacheUrl"; - // DPI_DownloadLink, having type string - ParameterId["DownloadLink"] = "downloadLink"; - // DPI_RepositoryUrl, having type string - ParameterId["RepositoryUrl"] = "repositoryUrl"; - // DPI_ShareLink, having type string - ParameterId["ShareLink"] = "shareLink"; - // DPI_URL, having type string - ParameterId["URL"] = "url"; - // DPI_ClusterModelHtml, having type string - ParameterId["ClusterModelHtml"] = "clusterModelHtml"; - // DPI_ClusterSummaryHtml, having type string - ParameterId["ClusterSummaryHtml"] = "clusterSummaryHtml"; - // DPI_ClusterSummaryScaledHtml, having type string - ParameterId["ClusterSummaryScaledHtml"] = "clusterSummaryScaledHtml"; - // DPI_FieldDescription, having type string - ParameterId["FieldDescription"] = "fieldDescription"; - // DPI_ForecastDiagnoseHtml, having type string - ParameterId["ForecastDiagnoseHtml"] = "forecastDiagnoseHtml"; - // DPI_ForecastModelHtml, having type string - ParameterId["ForecastModelHtml"] = "forecastModelHtml"; - // DPI_ForecastSummaryHtml, having type string - ParameterId["ForecastSummaryHtml"] = "forecastSummaryHtml"; - // DPI_ForecastSummaryPctHtml, having type string - ParameterId["ForecastSummaryPctHtml"] = "forecastSummaryPctHtml"; - // DPI_Html, having type string - ParameterId["Html"] = "html"; - // DPI_HtmlSelection, having type string - ParameterId["HtmlSelection"] = "htmlSelection"; - // DPI_HtmlTooltip, having type string - ParameterId["HtmlTooltip"] = "htmlTooltip"; - // DPI_TitleHtml, having type string - ParameterId["TitleHtml"] = "titleHtml"; - // DPI_CacheUrlInfoJson, having type string - ParameterId["CacheUrlInfoJson"] = "cacheUrlInfoJson"; - // DPI_FilterSearchJson, having type string - ParameterId["FilterSearchJson"] = "filterSearchJson"; - // DPI_FilterSearchWithIndexJson, having type string - ParameterId["FilterSearchWithIndexJson"] = "filterSearchWithIndexJson"; - // DPI_FilterShowChildrenJson, having type string - ParameterId["FilterShowChildrenJson"] = "filterShowChildrenJson"; - // DPI_FiltersJson, having type string - ParameterId["FiltersJson"] = "filtersJson"; - // DPI_FrameJson, having type string - ParameterId["FrameJson"] = "frameJson"; - // DPI_GeometryJson, having type string - ParameterId["GeometryJson"] = "geometryJson"; - // DPI_GetFilterItemsJson, having type string - ParameterId["GetFilterItemsJson"] = "getFilterItemsJson"; - // DPI_KeepOnlyResponseJson, having type string - ParameterId["KeepOnlyResponseJson"] = "keepOnlyResponseJson"; - // DPI_MenuCommandsJson, having type string - ParameterId["MenuCommandsJson"] = "menuCommandsJson"; - // DPI_ModifiedSheetsJson, having type string - ParameterId["ModifiedSheetsJson"] = "modifiedSheetsJson"; - // DPI_ParameterCtrlJson, having type string - ParameterId["ParameterCtrlJson"] = "parameterCtrlJson"; - // DPI_ViewJson, having type string - ParameterId["ViewJson"] = "viewJson"; - // DPI_CustomizedViewXML, having type string - ParameterId["CustomizedViewXML"] = "customizedViewXml"; - // DPI_DatasourceDeltaXML, having type string - ParameterId["DatasourceDeltaXML"] = "datasourceDeltaXml"; - // DPI_DatasourceXML, having type string - ParameterId["DatasourceXML"] = "datasourceXml"; - // DPI_KeychainXML, having type string - ParameterId["KeychainXML"] = "keychainXml"; - // DPI_PermissionsModelXML, having type string - ParameterId["PermissionsModelXML"] = "permissionsModelXml"; - // DPI_SharedViewsXML, having type string - ParameterId["SharedViewsXML"] = "sharedViewsXml"; - // DPI_TargetURL, having type string - ParameterId["TargetURL"] = "targetUrl"; - // DPI_Anchor, having type string - ParameterId["Anchor"] = "anchor"; - // DPI_CenterValue, having type string - ParameterId["CenterValue"] = "centerValue"; - // DPI_ComputedBinSize, having type string - ParameterId["ComputedBinSize"] = "computedBinSize"; - // DPI_ConstantValue, having type string - ParameterId["ConstantValue"] = "constantValue"; - // DPI_PairedConstantValue, having type string - ParameterId["PairedConstantValue"] = "pairedConstantValue"; - // DPI_CountDistinct, having type string - ParameterId["CountDistinct"] = "countDistinct"; - // DPI_DataMax, having type string - ParameterId["DataMax"] = "dataMax"; - // DPI_DataMin, having type string - ParameterId["DataMin"] = "dataMin"; - // DPI_EndValue, having type string - ParameterId["EndValue"] = "endValue"; - // DPI_RangeMax, having type string - ParameterId["RangeMax"] = "rangeMax"; - // DPI_RangeMin, having type string - ParameterId["RangeMin"] = "rangeMin"; - // DPI_RangeStepSize, having type string - ParameterId["RangeStepSize"] = "rangeStepSize"; - // DPI_StartValue, having type string - ParameterId["StartValue"] = "startValue"; - // DPI_TargetValue, having type string - ParameterId["TargetValue"] = "targetValue"; - // DPI_ValueInc, having type string - ParameterId["ValueInc"] = "valueInc"; - // DPI_ValueMax, having type string - ParameterId["ValueMax"] = "valueMax"; - // DPI_ValueMin, having type string - ParameterId["ValueMin"] = "valueMin"; - // DPI_QuantilesValue, having type string - ParameterId["QuantilesValue"] = "quantilesValue"; - // DPI_UserInputBinSize, having type string - ParameterId["UserInputBinSize"] = "userBinSize"; - // DPI_AddedDataSources, having type string[] - ParameterId["AddedDataSources"] = "addedDataSourceNames"; - // DPI_AddressingCaptions, having type string[] - ParameterId["AddressingCaptions"] = "addressingCaptions"; - // DPI_AggregationCaptions, having type string[] - ParameterId["AggregationCaptions"] = "aggregationCaptions"; - // DPI_AtTheLevelCaptions, having type string[] - ParameterId["AtTheLevelCaptions"] = "atTheLevelCaptions"; - // DPI_AuthenticationSettingLabels, having type string[] - ParameterId["AuthenticationSettingLabels"] = "authenticationSettingLabels"; - // DPI_AutosaveFileIdsVector, having type string[] - ParameterId["AutosaveFileIdsVector"] = "autosaveFileIdsVector"; - // DPI_ChangedTuples, having type string[] - ParameterId["ChangedTuples"] = "changedTuples"; - // DPI_CharsetsAvailable, having type string[] - ParameterId["CharsetsAvailable"] = "charsetsAvailable"; - // DPI_CharsetDisplayNames, having type string[] - ParameterId["CharsetDisplayNames"] = "charsetDisplayNames"; - // DPI_ColorFactors, having type string[] - ParameterId["ColorFactors"] = "colorFactors"; - // DPI_ColumnFullNames, having type string[] - ParameterId["ColumnFullNames"] = "columnFullNames"; - // DPI_ConnectionNames, having type string[] - ParameterId["ConnectionNames"] = "connectionNames"; - // DPI_ConnectionCaptions, having type string[] - ParameterId["ConnectionCaptions"] = "connectionCaptions"; - // DPI_ConnectionBigQueryLegacySQLCheckBox, having type string[] - ParameterId["ConnectionBigQueryLegacySQLCheckBox"] = "connectionBigqueryLegacySqlCheckbox"; - // DPI_CustomFieldOrder, having type string[] - ParameterId["CustomFieldOrder"] = "customFieldOrder"; - // DPI_DataSourceClasses, having type string[] - ParameterId["DataSourceClasses"] = "dataSourceClasses"; - // DPI_DataSourceNames, having type string[] - ParameterId["DataSourceNames"] = "dataSourceNames"; - // DPI_DataSourceNames2, having type string[] - ParameterId["DataSourceNames2"] = "dataSourceNames2"; - // DPI_DateFormats, having type string[] - ParameterId["DateFormats"] = "dateFormats"; - // DPI_DayNames, having type string[] - ParameterId["DayNames"] = "dayNames"; - // DPI_DrillPathVector, having type string[] - ParameterId["DrillPathVector"] = "drillpathVector"; - // DPI_ErrorDetails, having type string[] - ParameterId["ErrorDetails"] = "errorDetails"; - // DPI_ExceptionMessageParams, having type string[] - ParameterId["ExceptionMessageParams"] = "exceptionMessageParams"; - // DPI_ExcludedSheets, having type string[] - ParameterId["ExcludedSheets"] = "excludeSheets"; - // DPI_FieldDisplayNames, having type string[] - ParameterId["FieldDisplayNames"] = "fieldDisplayNames"; - // DPI_FieldFolderVector, having type string[] - ParameterId["FieldFolderVector"] = "fieldFolderVector"; - // DPI_FileIds, having type string[] - ParameterId["FileIds"] = "fileIds"; - // DPI_FilePaths, having type string[] - ParameterId["FilePaths"] = "filePaths"; - // DPI_FileNames, having type string[] - ParameterId["FileNames"] = "fileNames"; - // DPI_FilterAdd, having type string[] - ParameterId["FilterAdd"] = "filterAdd"; - // DPI_FilterAliases, having type string[] - ParameterId["FilterAliases"] = "filterValues"; - // DPI_FilterRemove, having type string[] - ParameterId["FilterRemove"] = "filterRemove"; - // DPI_FixedCaptions, having type string[] - ParameterId["FixedCaptions"] = "fixedCaptions"; - // DPI_FontFamilies, having type string[] - ParameterId["FontFamilies"] = "fontFamilies"; - // DPI_FormatStrings, having type string[] - ParameterId["FormatStrings"] = "formatStrings"; - // DPI_FormattedValues, having type string[] - ParameterId["FormattedValues"] = "formattedValues"; - // DPI_FoundTuples, having type string[] - ParameterId["FoundTuples"] = "foundTuples"; - // DPI_FullSchedulesLabels, having type string[] - ParameterId["FullSchedulesLabels"] = "fullSchedulesLabels"; - // DPI_ImageResourceList, having type string[] - ParameterId["ImageResourceList"] = "imageResources"; - // DPI_IncludeList, having type string[] - ParameterId["IncludeList"] = "includeList"; - // DPI_IncrSchedulesLabels, having type string[] - ParameterId["IncrSchedulesLabels"] = "incrSchedulesLabels"; - // DPI_InvalidDates, having type string[] - ParameterId["InvalidDates"] = "invalidDates"; - // DPI_InvalidValues, having type string[] - ParameterId["InvalidValues"] = "invalidValues"; - // DPI_ItemValues, having type string[] - ParameterId["ItemValues"] = "itemValues"; - // DPI_JoinEditableProps, having type string[] - ParameterId["JoinEditableProps"] = "joinEditableProps"; - // DPI_JoinFieldCaptions, having type string[] - ParameterId["JoinFieldCaptions"] = "joinFieldCaptions"; - // DPI_LocaleOptions, having type string[] - ParameterId["LocaleOptions"] = "localeOptions"; - // DPI_LocaleDisplayNames, having type string[] - ParameterId["LocaleDisplayNames"] = "localeDisplayNames"; - // DPI_MapBoxStyleMaps, having type string[] - ParameterId["MapBoxStyleMaps"] = "mapboxStyleMaps"; - // DPI_MapConnectionErrorDetails, having type string[] - ParameterId["MapConnectionErrorDetails"] = "mapConnectionErrorDetails"; - // DPI_SheetNames, having type string[] - ParameterId["SheetNames"] = "sheetNames"; - // DPI_MapSourceNames, having type string[] - ParameterId["MapSourceNames"] = "mapSourceNames"; - // DPI_MarkGeometries, having type string[] - ParameterId["MarkGeometries"] = "markGeometries"; - // DPI_MenuItems, having type string[] - ParameterId["MenuItems"] = "menuItems"; - // DPI_Modes, having type string[] - ParameterId["Modes"] = "modes"; - // DPI_MonthNames, having type string[] - ParameterId["MonthNames"] = "monthNames"; - // DPI_NumberFormats, having type string[] - ParameterId["NumberFormats"] = "numberFormats"; - // DPI_ObjectTextIDs, having type string[] - ParameterId["ObjectTextIDs"] = "objectTextIds"; - // DPI_OldExtracts, having type string[] - ParameterId["OldExtracts"] = "oldExtracts"; - // DPI_OrderingTypeCaptions, having type string[] - ParameterId["OrderingTypeCaptions"] = "orderingTypeCaptions"; - // DPI_PageNames, having type string[] - ParameterId["PageNames"] = "pageNames"; - // DPI_PaneDescriptorKeys, having type string[] - ParameterId["PaneDescriptorKeys"] = "paneDescriptorKeys"; - // DPI_ParamCaptions, having type string[] - ParameterId["ParamCaptions"] = "paramCaptions"; - // DPI_PrecannedDataValues, having type string[] - ParameterId["PrecannedDataValues"] = "precannedDataValues"; - // DPI_PublishChoiceLabels, having type string[] - ParameterId["PublishChoiceLabels"] = "publishChoiceLabels"; - // DPI_RankTypeCaptions, having type string[] - ParameterId["RankTypeCaptions"] = "rankTypeCaptions"; - // DPI_RecentTags, having type string[] - ParameterId["RecentTags"] = "recentTags"; - // DPI_RelativeCaptions, having type string[] - ParameterId["RelativeCaptions"] = "relativeCaptions"; - // DPI_RemovedDataSources, having type string[] - ParameterId["RemovedDataSources"] = "removedDataSourceNames"; - // DPI_RepresentativeTuple, having type string[] - ParameterId["RepresentativeTuple"] = "representativeTuple"; - // DPI_RestartEveryCaptions, having type string[] - ParameterId["RestartEveryCaptions"] = "restartEveryCaptions"; - // DPI_SchemaMemberGlobalNames, having type string[] - ParameterId["SchemaMemberGlobalNames"] = "schemaMemberGlobalNames"; - // DPI_SelectValuesList, having type string[] - ParameterId["SelectValuesList"] = "selectValues"; - // DPI_SelectionValueList, having type string[] - ParameterId["SelectionValueList"] = "selectionValueList"; - // DPI_SortAggCaptions, having type string[] - ParameterId["SortAggCaptions"] = "sortAggCaptions"; - // DPI_SortDirectionCaptions, having type string[] - ParameterId["SortDirectionCaptions"] = "sortDirectionCaptions"; - // DPI_SortFieldCaptions, having type string[] - ParameterId["SortFieldCaptions"] = "sortFieldCaptions"; - // DPI_SortFieldNameVector, having type string[] - ParameterId["SortFieldNameVector"] = "sortFieldnameVector"; - // DPI_SupportedJoinOperators, having type string[] - ParameterId["SupportedJoinOperators"] = "supportedJoinOperators"; - // DPI_TableCalcTypeCaptions, having type string[] - ParameterId["TableCalcTypeCaptions"] = "tableCalcTypeCaptions"; - // DPI_Tags, having type string[] - ParameterId["Tags"] = "tags"; - // DPI_TermVec, having type string[] - ParameterId["TermVec"] = "termVector"; - // DPI_UIAutomationList, having type string[] - ParameterId["UIAutomationList"] = "uiAutomationList"; - // DPI_ReferenceLineValidCustomLabelTags, having type string[] - ParameterId["ReferenceLineValidCustomLabelTags"] = "validReferenceLineCustomLabelTags"; - // DPI_LocalizedKeywords, having type string[] - ParameterId["LocalizedKeywords"] = "localizedKeywords"; - // DPI_AvailableCalendars, having type string[] - ParameterId["AvailableCalendars"] = "availableCalendars"; - // DPI_SheetsToBeDeletedOrHidden, having type string[] - ParameterId["SheetsToBeDeletedOrHidden"] = "sheetsToBeDeletedOrHidden"; - // DPI_AddSheets, having type string[] - ParameterId["AddSheets"] = "addSheets"; - // DPI_NamesOfSubsheets, having type string[] - ParameterId["NamesOfSubsheets"] = "namesOfSubsheets"; - // DPI_RemoveSheets, having type string[] - ParameterId["RemoveSheets"] = "removeSheets"; - // DPI_ScrollOffsetSheets, having type string[] - ParameterId["ScrollOffsetSheets"] = "scrollOffsetSheets"; - // DPI_Sheets, having type string[] - ParameterId["Sheets"] = "sheets"; - // DPI_SourceWorksheets, having type string[] - ParameterId["SourceWorksheets"] = "sourceWorksheets"; - // DPI_TargetExcludes, having type string[] - ParameterId["TargetExcludes"] = "targetExclude"; - // DPI_TargetWorksheets, having type string[] - ParameterId["TargetWorksheets"] = "targetWorksheets"; - // DPI_TileURLs, having type string[] - ParameterId["TileURLs"] = "tileUrls"; - // DPI_Details, having type string[] - ParameterId["Details"] = "details"; - // DPI_FieldCaptions, having type string[] - ParameterId["FieldCaptions"] = "fieldCaptions"; - // DPI_HighlightCaptions, having type string[] - ParameterId["HighlightCaptions"] = "highlightCaptions"; - // DPI_LevelCaptions, having type string[] - ParameterId["LevelCaptions"] = "levelCaptions"; - // DPI_LevelLeafValues, having type string[] - ParameterId["LevelLeafValues"] = "levelLeafValues"; - // DPI_SubstitutionVariables, having type string[] - ParameterId["SubstitutionVariables"] = "substitutionVariables"; - // DPI_SubstitutionVariableValues, having type string[] - ParameterId["SubstitutionVariableValues"] = "substitutionVariableValues"; - // DPI_HtmlTooltips, having type string[] - ParameterId["HtmlTooltips"] = "htmlTooltips"; - // DPI_InvalidFields, having type string[] - ParameterId["InvalidFields"] = "invalidFields"; - // DPI_NamesOfColumns, having type string[] - ParameterId["NamesOfColumns"] = "namesOfColumns"; - // DPI_NamesOfFields, having type string[] - ParameterId["NamesOfFields"] = "namesOfFields"; - // DPI_ReferencedDatasources, having type string[] - ParameterId["ReferencedDatasources"] = "referencedDataSourceList"; - // DPI_CSSAttrs, having type Dictionary(of string) - ParameterId["CSSAttrs"] = "cssAttrs"; - // DPI_DataSourceMap, having type Dictionary(of string) - ParameterId["DataSourceMap"] = "dataSourceMap"; - // DPI_EventParameters, having type Dictionary(of string) - ParameterId["EventParameters"] = "eventParameters"; - // DPI_ExceptionAttrs, having type Dictionary(of string) - ParameterId["ExceptionAttrs"] = "exceptionAttrs"; - // DPI_InvalidSheetMessage, having type Dictionary(of string) - ParameterId["InvalidSheetMessage"] = "invalidSheetMessages"; - // DPI_MapBoxDefaultStyle, having type Dictionary(of string) - ParameterId["MapBoxDefaultStyle"] = "mapboxDefaultStyles"; - // DPI_PaneFormattings, having type Dictionary(of string) - ParameterId["PaneFormattings"] = "paneFormattings"; - // DPI_SourceNameWithCaption, having type Dictionary(of string) - ParameterId["SourceNameWithCaption"] = "sourceNameWithCaption"; - // DPI_ConnectionColorMap, having type Dictionary(of string) - ParameterId["ConnectionColorMap"] = "connectionColorMap"; - // DPI_TargetNameWithCaption, having type Dictionary(of string) - ParameterId["TargetNameWithCaption"] = "targetNameWithCaption"; - // DPI_ViewIds, having type Dictionary(of string) - ParameterId["ViewIds"] = "viewIds"; - // DPI_AddInSettings, having type Dictionary(of string) - ParameterId["AddInSettings"] = "addInSettings"; - // DPI_DatasourceIcons, having type Dictionary(of string) - ParameterId["DatasourceIcons"] = "datasourceIcons"; - // DPI_FormattedText, having type string - ParameterId["FormattedText"] = "formattedText"; - // DPI_IconTooltip, having type string - ParameterId["IconTooltip"] = "iconTooltip"; - // DPI_Title, having type string - ParameterId["Title"] = "title"; - // DPI_Tooltip, having type string - ParameterId["Tooltip"] = "tooltip"; - // DPI_ZoneText, having type string - ParameterId["ZoneText"] = "zoneText"; - // DPI_AlignmentFlags, having type int - ParameterId["AlignmentFlags"] = "alignmentFlags"; - // DPI_AlphaLevel, having type int - ParameterId["AlphaLevel"] = "alphaLevel"; - // DPI_AnovaDF, having type int - ParameterId["AnovaDF"] = "anovaDf"; - // DPI_AtTheLevelIndex, having type int - ParameterId["AtTheLevelIndex"] = "atTheLevelIndex"; - // DPI_AutomaticDrillIdxInVector, having type int - ParameterId["AutomaticDrillIdxInVector"] = "automaticDrillIdxVector"; - // DPI_AutoSize, having type int - ParameterId["AutoSize"] = "automaticSize"; - // DPI_BaseCoord, having type int - ParameterId["BaseCoord"] = "baseCoord"; - // DPI_CalcEditorCursorPosPostDrop, having type int - ParameterId["CalcEditorCursorPosPostDrop"] = "calcEditorCursorPosPostDrop"; - // DPI_CalcEditorDropPos, having type int - ParameterId["CalcEditorDropPos"] = "calcEditorDropPos"; - // DPI_CalcEditorTextSelectionEndPos, having type int - ParameterId["CalcEditorTextSelectionEndPos"] = "calcEditorTextSelectionEndPos"; - // DPI_CalcEditorTextSelectionStartPos, having type int - ParameterId["CalcEditorTextSelectionStartPos"] = "calcEditorTextSelectionStartPos"; - // DPI_CategoricalBinId, having type int - ParameterId["CategoricalBinId"] = "categoricalBinId"; - // DPI_CategoricalFindControllerId, having type int - ParameterId["CategoricalFindControllerId"] = "categoricalFindControllerId"; - // DPI_ClauseToModifyIndex, having type int - ParameterId["ClauseToModifyIndex"] = "clauseToModifyIndex"; - // DPI_ClientRenderPixelLimit, having type int - ParameterId["ClientRenderPixelLimit"] = "clientRenderPixelLimit"; - // DPI_ColCount, having type int - ParameterId["ColCount"] = "colCount"; - // DPI_ColWidth, having type int - ParameterId["ColWidth"] = "colWidth"; - // DPI_ColumnLevels, having type int - ParameterId["ColumnLevels"] = "columnLevels"; - // DPI_ColumnNumber, having type int - ParameterId["ColumnNumber"] = "columnNumber"; - // DPI_ColumnWidth, having type int - ParameterId["ColumnWidth"] = "columnWidth"; - // DPI_ContentHeight, having type int - ParameterId["ContentHeight"] = "contentH"; - // DPI_ContentWidth, having type int - ParameterId["ContentWidth"] = "contentW"; - // DPI_ContentX, having type int - ParameterId["ContentX"] = "contentX"; - // DPI_ContentY, having type int - ParameterId["ContentY"] = "contentY"; - // DPI_CurDateAgg, having type int - ParameterId["CurDateAgg"] = "curDateAgg"; - // DPI_CurrentCustViewId, having type int - ParameterId["CurrentCustViewId"] = "currentCustomViewId"; - // DPI_CustomSplitCharacterCountSeparator, having type int - ParameterId["CustomSplitCharacterCountSeparator"] = "customSplitCharacterCountSeparator"; - // DPI_CustomSplitDesiredSplitCount, having type int - ParameterId["CustomSplitDesiredSplitCount"] = "customSplitDesiredSplitCount"; - // DPI_DashboardGridSize, having type int - ParameterId["DashboardGridSize"] = "dashboardGridSize"; - // DPI_DataIndex, having type int - ParameterId["DataIndex"] = "dataIndex"; - // DPI_DecimalPlaces, having type int - ParameterId["DecimalPlaces"] = "decimalPlaces"; - // DPI_DeltaTime, having type int - ParameterId["DeltaTime"] = "deltaTime"; - // DPI_DestPix, having type int - ParameterId["DestPix"] = "destPix"; - // DPI_DeviceIndex, having type int - ParameterId["DeviceIndex"] = "deviceIndex"; - // DPI_Duration, having type int - ParameterId["Duration"] = "duration"; - // DPI_EndPtX, having type int - ParameterId["EndPtX"] = "endX"; - // DPI_EndPtY, having type int - ParameterId["EndPtY"] = "endY"; - // DPI_ErrorLen, having type int - ParameterId["ErrorLen"] = "lengthOfCalcOfError"; - // DPI_ErrorPos, having type int - ParameterId["ErrorPos"] = "startPositionForError"; - // DPI_ExceptionErrorMessageId, having type int - ParameterId["ExceptionErrorMessageId"] = "exceptionErrorMessageId"; - // DPI_ExtentsH, having type int - ParameterId["ExtentsH"] = "extentsHeight"; - // DPI_ExtentsW, having type int - ParameterId["ExtentsW"] = "extentsWidth"; - // DPI_ExtentsX, having type int - ParameterId["ExtentsX"] = "extentsX"; - // DPI_ExtentsY, having type int - ParameterId["ExtentsY"] = "extentsY"; - // DPI_FieldIndex, having type int - ParameterId["FieldIndex"] = "fieldIndex"; - // DPI_FieldNameId, having type int - ParameterId["FieldNameId"] = "fieldNameId"; - // DPI_FirstDayOfWeek, having type int - ParameterId["FirstDayOfWeek"] = "firstDayOfWeek"; - // DPI_FirstValueIndex, having type int - ParameterId["FirstValueIndex"] = "firstValueIndex"; - // DPI_FixedSizePresetIndex, having type int - ParameterId["FixedSizePresetIndex"] = "fixedSizePresetIndex"; - // DPI_FocusItemIndex, having type int - ParameterId["FocusItemIndex"] = "focusItemIndex"; - // DPI_FontSize, having type int - ParameterId["FontSize"] = "fontSize"; - // DPI_ForecastIntRangeEnd, having type int - ParameterId["ForecastIntRangeEnd"] = "forecastIntRangeEnd"; - // DPI_ForecastIntRangeStart, having type int - ParameterId["ForecastIntRangeStart"] = "forecastIntRangeStart"; - // DPI_FunctionHelpIndex, having type int - ParameterId["FunctionHelpIndex"] = "functionHelpIndex"; - // DPI_GeographicSearchMaxResults, having type int - ParameterId["GeographicSearchMaxResults"] = "geographicSearchMaxResults"; - // DPI_Height, having type int - ParameterId["Height"] = "h"; - // DPI_HierarchyLevel, having type int - ParameterId["HierarchyLevel"] = "hierarchyLevel"; - // DPI_HierarchyLevelLoaded, having type int - ParameterId["HierarchyLevelLoaded"] = "hierarchyLevelLoaded"; - // DPI_HierarchyLevelMinimum, having type int - ParameterId["HierarchyLevelMinimum"] = "hierarchyLevelMinimum"; - // DPI_HierarchyLoadLimit, having type int - ParameterId["HierarchyLoadLimit"] = "hierarchyLoadLimit"; - // DPI_HierarchySelectControllerId, having type int - ParameterId["HierarchySelectControllerId"] = "hierarchySelectControllerId"; - // DPI_HorzTextCell, having type int - ParameterId["HorzTextCell"] = "horzTextCell"; - // DPI_ImageIndex, having type int - ParameterId["ImageIndex"] = "imageIndex"; - // DPI_ImageSizeLimit, having type int - ParameterId["ImageSizeLimit"] = "imageSizeLimit"; - // DPI_TransparentLineMarksLimit, having type int - ParameterId["TransparentLineMarksLimit"] = "transparentLineMarksLimit"; - // DPI_Indent, having type int - ParameterId["Indent"] = "indent"; - // DPI_Index, having type int - ParameterId["Index"] = "idx"; - // DPI_IndexFrom, having type int - ParameterId["IndexFrom"] = "indexFrom"; - // DPI_IndexOffset, having type int - ParameterId["IndexOffset"] = "indexOffset"; - // DPI_IndexTo, having type int - ParameterId["IndexTo"] = "indexTo"; - // DPI_InlineConnectionRenameRow, having type int - ParameterId["InlineConnectionRenameRow"] = "inlineConnectionRenameRow"; - // DPI_InsertPos, having type int - ParameterId["InsertPos"] = "insertPos"; - // DPI_IsHasDataSupported, having type int - ParameterId["IsHasDataSupported"] = "isHasDataSupported"; - // DPI_LeftMargin, having type int - ParameterId["LeftMargin"] = "leftMargin"; - // DPI_LeftRightBorderWidth, having type int - ParameterId["LeftRightBorderWidth"] = "leftRightBorderWidth"; - // DPI_LowerBound, having type int - ParameterId["LowerBound"] = "lowerBound"; - // DPI_MapRequestPixels, having type int - ParameterId["MapRequestPixels"] = "mapRequestPixels"; - // DPI_MapScaleFontSizePixels, having type int - ParameterId["MapScaleFontSizePixels"] = "mapScaleFontSizePixels"; - // DPI_MapScaleReadoutNumber, having type int - ParameterId["MapScaleReadoutNumber"] = "mapScaleReadoutNumber"; - // DPI_MapScaleWidth, having type int - ParameterId["MapScaleWidth"] = "mapScaleWidth"; - // DPI_MapTileSize, having type int - ParameterId["MapTileSize"] = "mapTileSize"; - // DPI_Margin, having type int - ParameterId["Margin"] = "margin"; - // DPI_MarginBottom, having type int - ParameterId["MarginBottom"] = "marginBottom"; - // DPI_MarginLeft, having type int - ParameterId["MarginLeft"] = "marginLeft"; - // DPI_MarginRight, having type int - ParameterId["MarginRight"] = "marginRight"; - // DPI_MarginTop, having type int - ParameterId["MarginTop"] = "marginTop"; - // DPI_MaxCell, having type int - ParameterId["MaxCell"] = "maxCell"; - // DPI_MaxItemSpan, having type int - ParameterId["MaxItemSpan"] = "maxItemSpan"; - // DPI_MaxPolynomialDegree, having type int - ParameterId["MaxPolynomialDegree"] = "maxDegree"; - // DPI_MaxPosition, having type int - ParameterId["MaxPosition"] = "maxPosition"; - // DPI_MaxSize, having type int - ParameterId["MaxSize"] = "maxSize"; - // DPI_MinCell, having type int - ParameterId["MinCell"] = "minCell"; - // DPI_MinPolynomialDegree, having type int - ParameterId["MinPolynomialDegree"] = "minDegree"; - // DPI_MinPosition, having type int - ParameterId["MinPosition"] = "minPosition"; - // DPI_MinSize, having type int - ParameterId["MinSize"] = "minSize"; - // DPI_ModelDF, having type int - ParameterId["ModelDF"] = "modelDf"; - // DPI_NewIndex, having type int - ParameterId["NewIndex"] = "newIndex"; - // DPI_NumDataSourcesUsingServer, having type int - ParameterId["NumDataSourcesUsingServer"] = "numDataSourcesUsingServer"; - // DPI_NumFilteredObs, having type int - ParameterId["NumFilteredObs"] = "filteredObservations"; - // DPI_NumModeledObs, having type int - ParameterId["NumModeledObs"] = "modeledObservations"; - // DPI_NumNotClustered, having type int - ParameterId["NumNotClustered"] = "numNotClustered"; - // DPI_NumNumericFields, having type int - ParameterId["NumNumericFields"] = "numNumericFields"; - // DPI_NumOutliers, having type int - ParameterId["NumOutliers"] = "numOutliers"; - // DPI_NumRows, having type int - ParameterId["NumRows"] = "numRows"; - // DPI_NumSelected, having type int - ParameterId["NumSelected"] = "numSelected"; - // DPI_OffsetX, having type int - ParameterId["OffsetX"] = "offsetX"; - // DPI_OffsetY, having type int - ParameterId["OffsetY"] = "offsetY"; - // DPI_Padding, having type int - ParameterId["Padding"] = "padding"; - // DPI_PaddingBottom, having type int - ParameterId["PaddingBottom"] = "paddingBottom"; - // DPI_PaddingLeft, having type int - ParameterId["PaddingLeft"] = "paddingLeft"; - // DPI_PaddingRight, having type int - ParameterId["PaddingRight"] = "paddingRight"; - // DPI_PaddingTop, having type int - ParameterId["PaddingTop"] = "paddingTop"; - // DPI_PageLoadPercentage, having type int - ParameterId["PageLoadPercentage"] = "pageLoadPercentage"; - // DPI_PaletteIndex, having type int - ParameterId["PaletteIndex"] = "paletteIndex"; - // DPI_PaneSpecificationId, having type int - ParameterId["PaneSpecificationId"] = "paneSpec"; - // DPI_ParameterCtrlIncrementsPerTick, having type int - ParameterId["ParameterCtrlIncrementsPerTick"] = "parameterControlIncrementMultiplier"; - // DPI_PolynomialDegree, having type int - ParameterId["PolynomialDegree"] = "degree"; - // DPI_Port, having type int - ParameterId["Port"] = "datasourcePort"; - // DPI_Position, having type int - ParameterId["Position"] = "position"; - // DPI_PublishResultStringId, having type int - ParameterId["PublishResultStringId"] = "publishResultStringId"; - // DPI_Radius, having type int - ParameterId["Radius"] = "radius"; - // DPI_ReadoutOffset, having type int - ParameterId["ReadoutOffset"] = "readoutOffset"; - // DPI_ReferenceIndex, having type int - ParameterId["ReferenceIndex"] = "referenceIndex"; - // DPI_RegionHeight, having type int - ParameterId["RegionHeight"] = "regionHeight"; - // DPI_RegionWidth, having type int - ParameterId["RegionWidth"] = "regionWidth"; - // DPI_RemovedDatasourceCount, having type int - ParameterId["RemovedDatasourceCount"] = "removedDatasourceCount"; - // DPI_RemovedSheetCount, having type int - ParameterId["RemovedSheetCount"] = "removedSheetCount"; - // DPI_ResidualDF, having type int - ParameterId["ResidualDF"] = "residualDf"; - // DPI_ResizeColumn, having type int - ParameterId["ResizeColumn"] = "resizeColumn"; - // DPI_RestartEveryIndex, having type int - ParameterId["RestartEveryIndex"] = "restartEveryIndex"; - // DPI_RightMargin, having type int - ParameterId["RightMargin"] = "rightMargin"; - // DPI_RowCount, having type int - ParameterId["RowCount"] = "rowCount"; - // DPI_RowHeight, having type int - ParameterId["RowHeight"] = "rowHeight"; - // DPI_RowInnerLevels, having type int - ParameterId["RowInnerLevels"] = "rowInnerLevels"; - // DPI_RowLevels, having type int - ParameterId["RowLevels"] = "rowLevels"; - // DPI_RowNumber, having type int - ParameterId["RowNumber"] = "rowNumber"; - // DPI_RowWidth, having type int - ParameterId["RowWidth"] = "rowWidth"; - // DPI_SecondValueIndex, having type int - ParameterId["SecondValueIndex"] = "secondValueIndex"; - // DPI_SecondsAgo, having type int - ParameterId["SecondsAgo"] = "secondsAgo"; - // DPI_SelectionEnd, having type int - ParameterId["SelectionEnd"] = "selectionEnd"; - // DPI_SelectionStart, having type int - ParameterId["SelectionStart"] = "selectionStart"; - // DPI_ShapePaletteID, having type int - ParameterId["ShapePaletteID"] = "shapePaletteId"; - // DPI_SheetIndex, having type int - ParameterId["SheetIndex"] = "sheetIndex"; - // DPI_ShelfPositionIndex, having type int - ParameterId["ShelfPositionIndex"] = "shelfPosIndex"; - // DPI_Size, having type int - ParameterId["Size"] = "size"; - // DPI_SizeDifference, having type int - ParameterId["SizeDifference"] = "sizeDelta"; - // DPI_SnapDistance, having type int - ParameterId["SnapDistance"] = "snapDistance"; - // DPI_SnapLocation, having type int - ParameterId["SnapLocation"] = "snapLocation"; - // DPI_SolveOrder, having type int - ParameterId["SolveOrder"] = "solveOrder"; - // DPI_SpaceBetweenPoints, having type int - ParameterId["SpaceBetweenPoints"] = "spaceBetweenPoints"; - // DPI_StepSize, having type int - ParameterId["StepSize"] = "stepSize"; - // DPI_Steps, having type int - ParameterId["Steps"] = "steps"; - // DPI_StoryPointIndex, having type int - ParameterId["StoryPointIndex"] = "currentStorypointIndex"; - // DPI_StyleLen, having type int - ParameterId["StyleLen"] = "tokenLengthForStyle"; - // DPI_StylePos, having type int - ParameterId["StylePos"] = "tokenPositionForStyle"; - // DPI_SwatchAreaWidth, having type int - ParameterId["SwatchAreaWidth"] = "swatchWidth"; - // DPI_TargetBinId, having type int - ParameterId["TargetBinId"] = "targetBinId"; - // DPI_TargetPtX, having type int - ParameterId["TargetPtX"] = "targetX"; - // DPI_TargetPtY, having type int - ParameterId["TargetPtY"] = "targetY"; - // DPI_TileFactor, having type int - ParameterId["TileFactor"] = "tileFactor"; - // DPI_TitleHeight, having type int - ParameterId["TitleHeight"] = "titleHeight"; - // DPI_TitleWidth, having type int - ParameterId["TitleWidth"] = "titleWidth"; - // DPI_TopBottomBorderWidth, having type int - ParameterId["TopBottomBorderWidth"] = "topBottomBorderWidth"; - // DPI_UIAutomationLineSize, having type int - ParameterId["UIAutomationLineSize"] = "uiAutomationLineSize"; - // DPI_UIAutomationPageSize, having type int - ParameterId["UIAutomationPageSize"] = "uiAutomationPageSize"; - // DPI_UID, having type int - ParameterId["UID"] = "uid"; - // DPI_UpperBound, having type int - ParameterId["UpperBound"] = "upperBound"; - // DPI_VertTextCell, having type int - ParameterId["VertTextCell"] = "vertTextCell"; - // DPI_Width, having type int - ParameterId["Width"] = "w"; - // DPI_X, having type int - ParameterId["X"] = "x"; - // DPI_Y, having type int - ParameterId["Y"] = "y"; - // DPI_ZOrder, having type int - ParameterId["ZOrder"] = "zOrder"; - // DPI_ZoneIconIndex, having type int - ParameterId["ZoneIconIndex"] = "zoneIconIndex"; - // DPI_AliasIndices, having type int[] - ParameterId["AliasIndices"] = "aliasIndices"; - // DPI_AnovaDFVec, having type int[] - ParameterId["AnovaDFVec"] = "anovaDfVector"; - // DPI_ColumnIndices, having type int[] - ParameterId["ColumnIndices"] = "columnIndices"; - // DPI_DrillFieldIndices, having type int[] - ParameterId["DrillFieldIndices"] = "drillFieldIndices"; - // DPI_FilterMaxIndices, having type int[] - ParameterId["FilterMaxIndices"] = "filterMaxIndices"; - // DPI_FilterMinIndices, having type int[] - ParameterId["FilterMinIndices"] = "filterMinIndices"; - // DPI_FilterValuesIndices, having type int[] - ParameterId["FilterValuesIndices"] = "filterValueIndices"; - // DPI_FormatStringIndices, having type int[] - ParameterId["FormatStringIndices"] = "formatstrIndices"; - // DPI_FormattedValIndices, having type int[] - ParameterId["FormattedValIndices"] = "formatValIdxs"; - // DPI_PaletteIndices, having type int[] - ParameterId["PaletteIndices"] = "palettesIndices"; - // DPI_PaneIndices, having type int[] - ParameterId["PaneIndices"] = "paneIndices"; - // DPI_Points, having type int[] - ParameterId["Points"] = "points"; - // DPI_QuickFilterSettings, having type int[] - ParameterId["QuickFilterSettings"] = "quickFilterSettings"; - // DPI_SelectedIndices, having type int[] - ParameterId["SelectedIndices"] = "selectedIndices"; - // DPI_ShelfPositionIndices, having type int[] - ParameterId["ShelfPositionIndices"] = "shelfPosIndices"; - // DPI_TileBox, having type int[] - ParameterId["TileBox"] = "tileBox"; - // DPI_TrailOverride, having type int[] - ParameterId["TrailOverride"] = "trailOverride"; - // DPI_UIDs, having type int[] - ParameterId["UIDs"] = "uids"; - // DPI_ValueIndices, having type int[] - ParameterId["ValueIndices"] = "valueIndices"; - // DPI_XCellOffsets, having type int[] - ParameterId["XCellOffsets"] = "xCellOffsets"; - // DPI_XPixelOffsets, having type int[] - ParameterId["XPixelOffsets"] = "xPixelOffsets"; - // DPI_YCellOffsets, having type int[] - ParameterId["YCellOffsets"] = "yCellOffsets"; - // DPI_YPixelOffsets, having type int[] - ParameterId["YPixelOffsets"] = "yPixelOffsets"; - // DPI_IntMap, having type Dictionary(of int) - ParameterId["IntMap"] = "intMap"; - // DPI_SelectedAuthSettingIndices, having type Dictionary(of int) - ParameterId["SelectedAuthSettingIndices"] = "selectedAuthSettingIndices"; - // DPI_ActiveStoryPointID, having type uint - ParameterId["ActiveStoryPointID"] = "activeStoryPointId"; - // DPI_ActiveZoneID, having type uint - ParameterId["ActiveZoneID"] = "activeZoneId"; - // DPI_ActualSize, having type uint - ParameterId["ActualSize"] = "actualSize"; - // DPI_AddInDebugPort, having type uint - ParameterId["AddInDebugPort"] = "addInDebugPort"; - // DPI_AggregationIndex, having type uint - ParameterId["AggregationIndex"] = "aggregationIndex"; - // DPI_AnnotationID, having type uint - ParameterId["AnnotationID"] = "annotationId"; - // DPI_AssignedAliasCount, having type uint - ParameterId["AssignedAliasCount"] = "assignedAliasCount"; - // DPI_CapabilityId, having type uint - ParameterId["CapabilityId"] = "capabilityId"; - // DPI_CaretIndex, having type uint - ParameterId["CaretIndex"] = "caretIndex"; - // DPI_CellID, having type uint - ParameterId["CellID"] = "cellId"; - // DPI_ColumnIndex, having type uint - ParameterId["ColumnIndex"] = "columnIndex"; - // DPI_CommandID, having type uint - ParameterId["CommandID"] = "id"; - // DPI_CommandIndex, having type uint - ParameterId["CommandIndex"] = "index"; - // DPI_ControllerId, having type uint - ParameterId["ControllerId"] = "controllerId"; - // DPI_Count, having type uint - ParameterId["Count"] = "count"; - // DPI_URowCount, having type uint - ParameterId["URowCount"] = "uRowCount"; - // DPI_UColumnCount, having type uint - ParameterId["UColumnCount"] = "uColumnCount"; - // DPI_CurrentPage, having type uint - ParameterId["CurrentPage"] = "currentPage"; - // DPI_DatePeriodsCount, having type uint - ParameterId["DatePeriodsCount"] = "datePeriodsCount"; - // DPI_Decimals, having type uint - ParameterId["Decimals"] = "decimals"; - // DPI_DefaultHeight, having type uint - ParameterId["DefaultHeight"] = "defaultHeight"; - // DPI_DefaultItem, having type uint - ParameterId["DefaultItem"] = "defaultItem"; - // DPI_DefaultWidth, having type uint - ParameterId["DefaultWidth"] = "defaultWidth"; - // DPI_Depth, having type uint - ParameterId["Depth"] = "depth"; - // DPI_DetailID, having type uint - ParameterId["DetailID"] = "detailId"; - // DPI_DrillLevel, having type uint - ParameterId["DrillLevel"] = "drillLevel"; - // DPI_DuplicateIndex, having type uint - ParameterId["DuplicateIndex"] = "duplicateIndex"; - // DPI_EndIndex, having type uint - ParameterId["EndIndex"] = "endIndex"; - // DPI_FieldIconIdx, having type uint - ParameterId["FieldIconIdx"] = "fieldIconIdx"; - // DPI_FilterLevel, having type uint - ParameterId["FilterLevel"] = "filterLevel"; - // DPI_FilterTileSize, having type uint - ParameterId["FilterTileSize"] = "filterTileSize"; - // DPI_FiscalYearStart, having type uint - ParameterId["FiscalYearStart"] = "fiscalYearStart"; - // DPI_FitPagesAcross, having type uint - ParameterId["FitPagesAcross"] = "pageFitHorizontal"; - // DPI_FitPagesDown, having type uint - ParameterId["FitPagesDown"] = "pageFitVertical"; - // DPI_FixedIndex, having type uint - ParameterId["FixedIndex"] = "fixedIndex"; - // DPI_FlipboardZoneID, having type uint - ParameterId["FlipboardZoneID"] = "flipboardZoneId"; - // DPI_ForecastAutoRangeSize, having type uint - ParameterId["ForecastAutoRangeSize"] = "forecastAutoRangeSize"; - // DPI_ForecastEndOfRange, having type uint - ParameterId["ForecastEndOfRange"] = "forecastEndOfRange"; - // DPI_ForecastIgnoreLast, having type uint - ParameterId["ForecastIgnoreLast"] = "forecastIgnoreLast"; - // DPI_ForecastNextRangeSize, having type uint - ParameterId["ForecastNextRangeSize"] = "forecastNextRangeSize"; - // DPI_GroupFlags, having type uint - ParameterId["GroupFlags"] = "groupFlag"; - // DPI_HierarchyLevels, having type uint - ParameterId["HierarchyLevels"] = "hierarchyLevels"; - // DPI_HierarchyMemberId, having type uint - ParameterId["HierarchyMemberId"] = "hierarchyMemberId"; - // DPI_HitTestFlags, having type uint - ParameterId["HitTestFlags"] = "hitTestFlags"; - // DPI_ImageHeight, having type uint - ParameterId["ImageHeight"] = "imageHeight"; - // DPI_ImageWidth, having type uint - ParameterId["ImageWidth"] = "imageWidth"; - // DPI_ItemIndex, having type uint - ParameterId["ItemIndex"] = "itemIndex"; - // DPI_ItemIndex1, having type uint - ParameterId["ItemIndex1"] = "itemIndex1"; - // DPI_LineHeight, having type uint - ParameterId["LineHeight"] = "lineHeight"; - // DPI_MapIntermediateLevels, having type uint - ParameterId["MapIntermediateLevels"] = "mapIntermediateLevels"; - // DPI_MapWorldRepeats, having type uint - ParameterId["MapWorldRepeats"] = "mapWorldRepeats"; - // DPI_MaxAlpha, having type uint - ParameterId["MaxAlpha"] = "maxAlpha"; - // DPI_MaxHeight, having type uint - ParameterId["MaxHeight"] = "maxHeight"; - // DPI_MaxNumberWebListItems, having type uint - ParameterId["MaxNumberWebListItems"] = "maxNumberWebListItems"; - // DPI_MaxPrevOrNextValues, having type uint - ParameterId["MaxPrevOrNextValues"] = "maxPrevOrNextValues"; - // DPI_MaxRows, having type uint - ParameterId["MaxRows"] = "maxRows"; - // DPI_MaxTransparency, having type uint - ParameterId["MaxTransparency"] = "colorMaxTransparencyValue"; - // DPI_MaxWidth, having type uint - ParameterId["MaxWidth"] = "maxWidth"; - // DPI_MinColumns, having type uint - ParameterId["MinColumns"] = "minColumns"; - // DPI_MinHeight, having type uint - ParameterId["MinHeight"] = "minHeight"; - // DPI_MinPrevOrNextValues, having type uint - ParameterId["MinPrevOrNextValues"] = "minPrevOrNextValues"; - // DPI_MinTransparency, having type uint - ParameterId["MinTransparency"] = "colorMinTransparencyValue"; - // DPI_MinWidth, having type uint - ParameterId["MinWidth"] = "minWidth"; - // DPI_NestedCalcsIndex, having type uint - ParameterId["NestedCalcsIndex"] = "nestedCalcsIndex"; - // DPI_NextValues, having type uint - ParameterId["NextValues"] = "nextValues"; - // DPI_NodeLevel, having type uint - ParameterId["NodeLevel"] = "nodeLevel"; - // DPI_NumHighlighted, having type uint - ParameterId["NumHighlighted"] = "numHighlighted"; - // DPI_NumberOfNextValues, having type uint - ParameterId["NumberOfNextValues"] = "numberOfNextValues"; - // DPI_NumberOfPrevValues, having type uint - ParameterId["NumberOfPrevValues"] = "numberOfPrevValues"; - // DPI_ObjectID, having type uint - ParameterId["ObjectID"] = "objectId"; - // DPI_OrderingTypeIndex, having type uint - ParameterId["OrderingTypeIndex"] = "orderingTypeIndex"; - // DPI_PageCount, having type uint - ParameterId["PageCount"] = "pageCount"; - // DPI_PageFadeEnd, having type uint - ParameterId["PageFadeEnd"] = "fadeEnd"; - // DPI_PageFadeStart, having type uint - ParameterId["PageFadeStart"] = "fadeStart"; - // DPI_PageIndex, having type uint - ParameterId["PageIndex"] = "pageIndex"; - // DPI_PageNumber, having type uint - ParameterId["PageNumber"] = "pageNumber"; - // DPI_PageScalePercent, having type uint - ParameterId["PageScalePercent"] = "pageScalePercent"; - // DPI_PageTrailLength, having type uint - ParameterId["PageTrailLength"] = "historyLength"; - // DPI_PaletteFlagsVal, having type uint - ParameterId["PaletteFlagsVal"] = "paletteFlagsVal"; - // DPI_PaneIndex, having type uint - ParameterId["PaneIndex"] = "paneIndex"; - // DPI_ParamCtrlDisplayFlags, having type uint - ParameterId["ParamCtrlDisplayFlags"] = "paramDisplayFlags"; - // DPI_ParentZoneID, having type uint - ParameterId["ParentZoneID"] = "parentZoneId"; - // DPI_PercentileParam, having type uint - ParameterId["PercentileParam"] = "percentileParam"; - // DPI_PrevValues, having type uint - ParameterId["PrevValues"] = "prevValues"; - // DPI_QRGBColor, having type uint - ParameterId["QRGBColor"] = "qrgbColor"; - // DPI_RangeN, having type uint - ParameterId["RangeN"] = "rangeN"; - // DPI_RankTypeIndex, having type uint - ParameterId["RankTypeIndex"] = "rankTypeIndex"; - // DPI_RenderComplexity, having type uint - ParameterId["RenderComplexity"] = "renderComplexityLimit"; - // DPI_RowIndex, having type uint - ParameterId["RowIndex"] = "rowIndex"; - // DPI_SelectedAuthSettingIndex, having type uint - ParameterId["SelectedAuthSettingIndex"] = "selectedAuthSettingIndex"; - // DPI_SelectedFullScheduleIndex, having type uint - ParameterId["SelectedFullScheduleIndex"] = "selectedFullScheduleIndex"; - // DPI_SelectedIncrScheduleIndex, having type uint - ParameterId["SelectedIncrScheduleIndex"] = "selectedIncrScheduleIndex"; - // DPI_SelectedPublishChoiceIndex, having type uint - ParameterId["SelectedPublishChoiceIndex"] = "selectedPublishChoiceIndex"; - // DPI_SelectedMemberCount, having type uint - ParameterId["SelectedMemberCount"] = "selectedMemberCount"; - // DPI_ShapeID, having type uint - ParameterId["ShapeID"] = "shapeId"; - // DPI_SheetUseCount, having type uint - ParameterId["SheetUseCount"] = "useCount"; - // DPI_ShelfItemID, having type uint - ParameterId["ShelfItemID"] = "shelfItemId"; - // DPI_SigFigs, having type uint - ParameterId["SigFigs"] = "sigFigs"; - // DPI_SortAggIndex, having type uint - ParameterId["SortAggIndex"] = "sortAggIndvValues"; - // DPI_SortColumnIndex, having type uint - ParameterId["SortColumnIndex"] = "sortColumnIndex"; - // DPI_SortDirectionIndex, having type uint - ParameterId["SortDirectionIndex"] = "sortDirectionIndex"; - // DPI_SortFieldIndex, having type uint - ParameterId["SortFieldIndex"] = "sortFieldIndex"; - // DPI_StartIndex, having type uint - ParameterId["StartIndex"] = "startIndex"; - // DPI_StartOfWeek, having type uint - ParameterId["StartOfWeek"] = "startOfWeek"; - // DPI_StoryPointID, having type uint - ParameterId["StoryPointID"] = "storyPointId"; - // DPI_TableCalcTypeIndex, having type uint - ParameterId["TableCalcTypeIndex"] = "tableCalcTypeIndex"; - // DPI_TableCalcTypesUsed, having type uint - ParameterId["TableCalcTypesUsed"] = "tableCalcTypesUsed"; - // DPI_TemplateIndex, having type uint - ParameterId["TemplateIndex"] = "templateIndex"; - // DPI_TileCount, having type uint - ParameterId["TileCount"] = "tileCount"; - // DPI_TimeoutSeconds, having type uint - ParameterId["TimeoutSeconds"] = "timeoutSeconds"; - // DPI_TopN, having type uint - ParameterId["TopN"] = "topN"; - // DPI_TotalNumberOfItemsInSet, having type uint - ParameterId["TotalNumberOfItemsInSet"] = "totalNumberOfItemsInSet"; - // DPI_TotalMemberCount, having type uint - ParameterId["TotalMemberCount"] = "totalMemberCount"; - // DPI_Transparency, having type uint - ParameterId["Transparency"] = "colorTransparencyValue"; - // DPI_TupleID, having type uint - ParameterId["TupleID"] = "tupleId"; - // DPI_UIndex, having type uint - ParameterId["UIndex"] = "uindex"; - // DPI_UndoPosition, having type uint - ParameterId["UndoPosition"] = "undoPosition"; - // DPI_UnsignedWidth, having type uint - ParameterId["UnsignedWidth"] = "uw"; - // DPI_UnsignedWidthBottom, having type uint - ParameterId["UnsignedWidthBottom"] = "uwb"; - // DPI_UnsignedWidthLeft, having type uint - ParameterId["UnsignedWidthLeft"] = "uwl"; - // DPI_UnsignedWidthRight, having type uint - ParameterId["UnsignedWidthRight"] = "uwr"; - // DPI_UnsignedWidthTop, having type uint - ParameterId["UnsignedWidthTop"] = "uwt"; - // DPI_ValueIndex, having type uint - ParameterId["ValueIndex"] = "valueIndex"; - // DPI_ValueInt, having type uint - ParameterId["ValueInt"] = "valueInt"; - // DPI_WorldOffset, having type uint - ParameterId["WorldOffset"] = "worldOffset"; - // DPI_XDuplicateIndex, having type uint - ParameterId["XDuplicateIndex"] = "xDuplicateIndex"; - // DPI_XIndex, having type uint - ParameterId["XIndex"] = "xIndex"; - // DPI_YDuplicateIndex, having type uint - ParameterId["YDuplicateIndex"] = "yDuplicateIndex"; - // DPI_YIndex, having type uint - ParameterId["YIndex"] = "yIndex"; - // DPI_ZoneID, having type uint - ParameterId["ZoneID"] = "zoneId"; - // DPI_ZoneZOrder, having type uint - ParameterId["ZoneZOrder"] = "zoneZOrder"; - // DPI_ComponentID, having type uint - ParameterId["ComponentID"] = "componentId"; - // DPI_NonThreadPoolUseCount, having type uint - ParameterId["NonThreadPoolUseCount"] = "nonThreadPoolUseCount"; - // DPI_AddressingIndices, having type uint[] - ParameterId["AddressingIndices"] = "addressingIndices"; - // DPI_AddressingInvalidIndices, having type uint[] - ParameterId["AddressingInvalidIndices"] = "addressingInvalidIndices"; - // DPI_ChildZoneIds, having type uint[] - ParameterId["ChildZoneIds"] = "childZoneIds"; - // DPI_ColorList, having type uint[] - ParameterId["ColorList"] = "colorList"; - // DPI_DuplicateIndices, having type uint[] - ParameterId["DuplicateIndices"] = "duplicateIndices"; - // DPI_FilterAddIndices, having type uint[] - ParameterId["FilterAddIndices"] = "filterAddIndices"; - // DPI_FilterIndices, having type uint[] - ParameterId["FilterIndices"] = "filterIndices"; - // DPI_FilterLevelAdd, having type uint[] - ParameterId["FilterLevelAdd"] = "filterLevelAdd"; - // DPI_FilterLevelRemove, having type uint[] - ParameterId["FilterLevelRemove"] = "filterLevelRemove"; - // DPI_FilterLevels, having type uint[] - ParameterId["FilterLevels"] = "filterLevels"; - // DPI_FilterRemoveIndices, having type uint[] - ParameterId["FilterRemoveIndices"] = "filterRemoveIndices"; - // DPI_FixedValues, having type uint[] - ParameterId["FixedValues"] = "fixedValues"; - // DPI_HierarchyMemberIdList, having type uint[] - ParameterId["HierarchyMemberIdList"] = "hierarchyMemberIdList"; - // DPI_InvalidIndices, having type uint[] - ParameterId["InvalidIndices"] = "invalidIndices"; - // DPI_ItemIndices, having type uint[] - ParameterId["ItemIndices"] = "itemIndices"; - // DPI_LineTupleIDs, having type uint[] - ParameterId["LineTupleIDs"] = "lineTupleIds"; - // DPI_ObjectIDs, having type uint[] - ParameterId["ObjectIDs"] = "objectIds"; - // DPI_PageIndices, having type uint[] - ParameterId["PageIndices"] = "pageIndices"; - // DPI_QRGB, having type uint[] - ParameterId["QRGB"] = "qrgbList"; - // DPI_QRGBColors, having type uint[] - ParameterId["QRGBColors"] = "qrgbColors"; - // DPI_RefLineID, having type uint[] - ParameterId["RefLineID"] = "reflineId"; - // DPI_ShapeIDs, having type uint[] - ParameterId["ShapeIDs"] = "shapeIds"; - // DPI_ShelfSelection, having type uint[] - ParameterId["ShelfSelection"] = "shelfSelection"; - // DPI_StoryPointIDs, having type uint[] - ParameterId["StoryPointIDs"] = "storyPointIds"; - // DPI_TupleIDs, having type uint[] - ParameterId["TupleIDs"] = "tupleIds"; - // DPI_Widths, having type uint[] - ParameterId["Widths"] = "widths"; - // DPI_UintMap, having type Dictionary(of uint32_t) - ParameterId["UintMap"] = "uintMap"; - // DPI_Alpha, having type float - ParameterId["Alpha"] = "alpha"; - // DPI_Angle, having type float - ParameterId["Angle"] = "angle"; - // DPI_AutomaticDrillValueInVector, having type float - ParameterId["AutomaticDrillValueInVector"] = "automaticDrillValueInVector"; - // DPI_DevicePixelRatio, having type float - ParameterId["DevicePixelRatio"] = "devicePixelRatio"; - // DPI_Distance, having type float - ParameterId["Distance"] = "distance"; - // DPI_FloatX, having type float - ParameterId["FloatX"] = "floatX"; - // DPI_FloatY, having type float - ParameterId["FloatY"] = "floatY"; - // DPI_FogDesaturation, having type float - ParameterId["FogDesaturation"] = "fogDesaturation"; - // DPI_MarkScale, having type float - ParameterId["MarkScale"] = "markScale"; - // DPI_MarkSizeInPixelUnits, having type float - ParameterId["MarkSizeInPixelUnits"] = "markSizeInPixelUnits"; - // DPI_PointSize, having type float - ParameterId["PointSize"] = "pointSize"; - // DPI_StrokeWidth, having type float - ParameterId["StrokeWidth"] = "strokeWidth"; - // DPI_TextRegionOrientation, having type float - ParameterId["TextRegionOrientation"] = "orientation"; - // DPI_TransformAngle, having type float - ParameterId["TransformAngle"] = "transformAngle"; - // DPI_ZoomLevel, having type float - ParameterId["ZoomLevel"] = "zoomLevel"; - // DPI_OldZoomLevel, having type float - ParameterId["OldZoomLevel"] = "oldZoomLevel"; - // DPI_NewZoomLevel, having type float - ParameterId["NewZoomLevel"] = "newZoomLevel"; - // DPI_AspectRatio, having type float - ParameterId["AspectRatio"] = "aspectRatio"; - // DPI_BottomPrintMargin, having type float - ParameterId["BottomPrintMargin"] = "bottomPrintMargin"; - // DPI_EarthRadius, having type float - ParameterId["EarthRadius"] = "earthRadius"; - // DPI_FloatHeight, having type float - ParameterId["FloatHeight"] = "floatHeight"; - // DPI_FloatLeft, having type float - ParameterId["FloatLeft"] = "floatLeft"; - // DPI_FloatRadius, having type float - ParameterId["FloatRadius"] = "floatRadius"; - // DPI_FloatTop, having type float - ParameterId["FloatTop"] = "floatTop"; - // DPI_FloatWidth, having type float - ParameterId["FloatWidth"] = "floatWidth"; - // DPI_LeftPrintMargin, having type float - ParameterId["LeftPrintMargin"] = "leftPrintMargin"; - // DPI_MapCenterLatitude, having type float - ParameterId["MapCenterLatitude"] = "mapCenterLatitude"; - // DPI_MapCenterLongitude, having type float - ParameterId["MapCenterLongitude"] = "mapCenterLongitude"; - // DPI_MapDisplayScale, having type float - ParameterId["MapDisplayScale"] = "mapDisplayScale"; - // DPI_MapMaxStretch, having type float - ParameterId["MapMaxStretch"] = "mapMaxStretch"; - // DPI_MapMaxZoom, having type float - ParameterId["MapMaxZoom"] = "mapMaxZoom"; - // DPI_MapMinShrink, having type float - ParameterId["MapMinShrink"] = "mapMinShrink"; - // DPI_MapMinZoom, having type float - ParameterId["MapMinZoom"] = "mapMinZoom"; - // DPI_MapRequestZoom, having type float - ParameterId["MapRequestZoom"] = "mapRequestZoom"; - // DPI_MapWashout, having type float - ParameterId["MapWashout"] = "mapWashout"; - // DPI_MaxLatitude, having type float - ParameterId["MaxLatitude"] = "maxLatitude"; - // DPI_MaxLongitude, having type float - ParameterId["MaxLongitude"] = "maxLongitude"; - // DPI_MinLatitude, having type float - ParameterId["MinLatitude"] = "minLatitude"; - // DPI_MinLongitude, having type float - ParameterId["MinLongitude"] = "minLongitude"; - // DPI_RightPrintMargin, having type float - ParameterId["RightPrintMargin"] = "rightPrintMargin"; - // DPI_TopPrintMargin, having type float - ParameterId["TopPrintMargin"] = "topPrintMargin"; - // DPI_UIAutomationMaximum, having type float - ParameterId["UIAutomationMaximum"] = "uiAutomationMaximum"; - // DPI_UIAutomationMinimum, having type float - ParameterId["UIAutomationMinimum"] = "uiAutomationMinimum"; - // DPI_UIAutomationOffset, having type float - ParameterId["UIAutomationOffset"] = "uiAutomationOffset"; - // DPI_UnitDivisor, having type float - ParameterId["UnitDivisor"] = "unitDivisor"; - // DPI_UnitTransition, having type float - ParameterId["UnitTransition"] = "unitTransition"; - // DPI_AutomaticDrillIdx, having type float[] - ParameterId["AutomaticDrillIdx"] = "automaticDrillIdx"; - // DPI_DestinationBox, having type float[] - ParameterId["DestinationBox"] = "destBox"; - // DPI_LowerEnd, having type float[] - ParameterId["LowerEnd"] = "lowerEnd"; - // DPI_OppositeAxis, having type float[] - ParameterId["OppositeAxis"] = "oppositeAxis"; - // DPI_PointsF, having type float[] - ParameterId["PointsF"] = "pointsF"; - // DPI_SourceBox, having type float[] - ParameterId["SourceBox"] = "sourceBox"; - // DPI_TransformOffset, having type float[] - ParameterId["TransformOffset"] = "transformOffset"; - // DPI_TransformScale, having type float[] - ParameterId["TransformScale"] = "transformScale"; - // DPI_UpperEnd, having type float[] - ParameterId["UpperEnd"] = "upperEnd"; - // DPI_FloatMap, having type Dictionary(of float) - ParameterId["FloatMap"] = "floatMap"; - // DPI_BGSS, having type double - ParameterId["BGSS"] = "betweenGroupSumOfSquares"; - // DPI_ConfidenceLevel, having type double - ParameterId["ConfidenceLevel"] = "confidenceLevel"; - // DPI_ConfidencePercentage, having type double - ParameterId["ConfidencePercentage"] = "confidencePercentage"; - // DPI_DoubleLeft, having type double - ParameterId["DoubleLeft"] = "doubleLeft"; - // DPI_DoubleTop, having type double - ParameterId["DoubleTop"] = "doubleTop"; - // DPI_DoubleValue, having type double - ParameterId["DoubleValue"] = "doubleValue"; - // DPI_DoubleX, having type double - ParameterId["DoubleX"] = "doubleX"; - // DPI_DoubleY, having type double - ParameterId["DoubleY"] = "doubleY"; - // DPI_FStatistic, having type double - ParameterId["FStatistic"] = "fStatistic"; - // DPI_FilterRangeMax, having type double - ParameterId["FilterRangeMax"] = "filterRangeMax"; - // DPI_FilterRangeMin, having type double - ParameterId["FilterRangeMin"] = "filterRangeMin"; - // DPI_GeographicSearchCandidateScore, having type double - ParameterId["GeographicSearchCandidateScore"] = "geographicSearchCandidateScore"; - // DPI_HeightD, having type double - ParameterId["HeightD"] = "height"; - // DPI_InflectionFraction, having type double - ParameterId["InflectionFraction"] = "inflectionFraction"; - // DPI_InflectionValue, having type double - ParameterId["InflectionValue"] = "inflectionValue"; - // DPI_MSE, having type double - ParameterId["MSE"] = "meanSquaredError"; - // DPI_MSM, having type double - ParameterId["MSM"] = "meanSquaredModel"; - // DPI_MapScaleMarginOfError, having type double - ParameterId["MapScaleMarginOfError"] = "mapScaleMarginOfError"; - // DPI_MarkSize, having type double - ParameterId["MarkSize"] = "markSize"; - // DPI_MaxMarkSize, having type double - ParameterId["MaxMarkSize"] = "maxMarkSize"; - // DPI_MinMarkSize, having type double - ParameterId["MinMarkSize"] = "minMarkSize"; - // DPI_NotchPosition, having type double - ParameterId["NotchPosition"] = "notchPosition"; - // DPI_NotchValue, having type double - ParameterId["NotchValue"] = "notchValue"; - // DPI_PValue, having type double - ParameterId["PValue"] = "pValue"; - // DPI_PercentDimensions, having type double - ParameterId["PercentDimensions"] = "percentDimensions"; - // DPI_PercentGroups, having type double - ParameterId["PercentGroups"] = "percentGroups"; - // DPI_PercentMeasures, having type double - ParameterId["PercentMeasures"] = "percentMeasures"; - // DPI_RSquared, having type double - ParameterId["RSquared"] = "rSquared"; - // DPI_SSE, having type double - ParameterId["SSE"] = "sumSquaredError"; - // DPI_SSM, having type double - ParameterId["SSM"] = "sumSquaredModel"; - // DPI_StandardError, having type double - ParameterId["StandardError"] = "standardError"; - // DPI_TSS, having type double - ParameterId["TSS"] = "totalSumOfSquares"; - // DPI_WGSS, having type double - ParameterId["WGSS"] = "withinGroupSumOfSquares"; - // DPI_WidthD, having type double - ParameterId["WidthD"] = "width"; - // DPI_ZoomFactor, having type double - ParameterId["ZoomFactor"] = "zoomFactor"; - // DPI_CoefficientPValueVec, having type double[] - ParameterId["CoefficientPValueVec"] = "coefficientPValueVector"; - // DPI_CoefficientStdErrVec, having type double[] - ParameterId["CoefficientStdErrVec"] = "coefficientStdErrorVector"; - // DPI_CoefficientTValueVec, having type double[] - ParameterId["CoefficientTValueVec"] = "coefficientTValueVector"; - // DPI_CoefficientVec, having type double[] - ParameterId["CoefficientVec"] = "coefficientVector"; - // DPI_FStatisticVec, having type double[] - ParameterId["FStatisticVec"] = "trendLineFStatisticVector"; - // DPI_Factors, having type double[] - ParameterId["Factors"] = "factors"; - // DPI_MSEVec, having type double[] - ParameterId["MSEVec"] = "meanSquaredErrorVector"; - // DPI_Means, having type double[] - ParameterId["Means"] = "means"; - // DPI_PValueVec, having type double[] - ParameterId["PValueVec"] = "pValueVector"; - // DPI_Percentages, having type double[] - ParameterId["Percentages"] = "percentages"; - // DPI_Percentiles, having type double[] - ParameterId["Percentiles"] = "percentiles"; - // DPI_SSEVec, having type double[] - ParameterId["SSEVec"] = "sumSquaredErrorVector"; - // DPI_StDevs, having type double[] - ParameterId["StDevs"] = "stdev"; - // DPI_UnscaledMeans, having type double[] - ParameterId["UnscaledMeans"] = "unscaledMeans"; - // DPI_DeltaTimeMs, having type long - ParameterId["DeltaTimeMs"] = "deltaTimeMs"; - // DPI_ExtractHistoryRowCount, having type long - ParameterId["ExtractHistoryRowCount"] = "extractRowCount"; - // DPI_ExtractHistoryRowsRemoved, having type long - ParameterId["ExtractHistoryRowsRemoved"] = "extractRowsRemoved"; - // DPI_ExtractsSize, having type long - ParameterId["ExtractsSize"] = "extractsSize"; - // DPI_OldExtractSize, having type long - ParameterId["OldExtractSize"] = "oldExtractSize"; - // DPI_RowsInserted, having type long - ParameterId["RowsInserted"] = "rowsInserted"; - // DPI_SampleSize, having type long - ParameterId["SampleSize"] = "sampleSize"; - // DPI_SampleSpace, having type long - ParameterId["SampleSpace"] = "sampleSpace"; - // DPI_ThreadPoolUseCount, having type long - ParameterId["ThreadPoolUseCount"] = "threadPoolUseCount"; - // DPI_ActionId, having type string - ParameterId["ActionId"] = "actionId"; - // DPI_AxisColumn, having type string - ParameterId["AxisColumn"] = "axisColumn"; - // DPI_BaseColumnName, having type string - ParameterId["BaseColumnName"] = "baseColumnName"; - // DPI_PairedFieldName, having type string - ParameterId["PairedFieldName"] = "pairedFn"; - // DPI_FieldNameAllowEmpty, having type string - ParameterId["FieldNameAllowEmpty"] = "fieldNameAllowEmpty"; - // DPI_FieldNameDisAgg, having type string - ParameterId["FieldNameDisAgg"] = "fnDisagg"; - // DPI_FieldNameLocal, having type string - ParameterId["FieldNameLocal"] = "fieldNameLocal"; - // DPI_FieldNamePrev, having type string - ParameterId["FieldNamePrev"] = "fnPrev"; - // DPI_FieldNameSource, having type string - ParameterId["FieldNameSource"] = "fnSource"; - // DPI_FieldNameTarget, having type string - ParameterId["FieldNameTarget"] = "fnTarget"; - // DPI_FieldNameX, having type string - ParameterId["FieldNameX"] = "fnX"; - // DPI_FieldNameY, having type string - ParameterId["FieldNameY"] = "fnY"; - // DPI_FieldToSort, having type string - ParameterId["FieldToSort"] = "fieldToSort"; - // DPI_GlobalFieldName, having type string - ParameterId["GlobalFieldName"] = "globalFieldName"; - // DPI_HierarchyName, having type string - ParameterId["HierarchyName"] = "hierarchyName"; - // DPI_InvalidAggFieldName, having type string - ParameterId["InvalidAggFieldName"] = "invalidAggFieldName"; - // DPI_InvalidFieldName, having type string - ParameterId["InvalidFieldName"] = "invalidFieldName"; - // DPI_LimitParameterName, having type string - ParameterId["LimitParameterName"] = "limitParameterName"; - // DPI_LocalBaseColumnName, having type string - ParameterId["LocalBaseColumnName"] = "localBaseColumnName"; - // DPI_MeasureName, having type string - ParameterId["MeasureName"] = "measureName"; - // DPI_NestedCalcField, having type string - ParameterId["NestedCalcField"] = "nestedCalcFn"; - // DPI_ParameterName, having type string - ParameterId["ParameterName"] = "parameterName"; - // DPI_ReferenceParam, having type string - ParameterId["ReferenceParam"] = "referenceParam"; - // DPI_ReplacementFieldName, having type string - ParameterId["ReplacementFieldName"] = "replacementFieldName"; - // DPI_RHSTableAlias, having type string - ParameterId["RHSTableAlias"] = "rhsTableAlias"; - // DPI_SortMeasureName, having type string - ParameterId["SortMeasureName"] = "sortMeasureName"; - // DPI_UniqueName, having type string - ParameterId["UniqueName"] = "uniqueName"; - // DPI_ValueColumn, having type string - ParameterId["ValueColumn"] = "valueColumn"; - // DPI_PairedValueColumn, having type string - ParameterId["PairedValueColumn"] = "pairedValueColumn"; - // DPI_ActionIds, having type string[] - ParameterId["ActionIds"] = "actionIds"; - // DPI_AddressingValues, having type string[] - ParameterId["AddressingValues"] = "addressingValues"; - // DPI_AllColumns, having type string[] - ParameterId["AllColumns"] = "allColumns"; - // DPI_AtTheLevelValues, having type string[] - ParameterId["AtTheLevelValues"] = "atTheLevelValues"; - // DPI_AutomaticDrillFieldName, having type string[] - ParameterId["AutomaticDrillFieldName"] = "automaticDrillFieldName"; - // DPI_BlendingFieldCandidates, having type string[] - ParameterId["BlendingFieldCandidates"] = "blendingFieldCandidates"; - // DPI_Columns, having type string[] - ParameterId["Columns"] = "columns"; - // DPI_CurrentBlendingFields, having type string[] - ParameterId["CurrentBlendingFields"] = "currentBlendingFields"; - // DPI_DimensionsToSort, having type string[] - ParameterId["DimensionsToSort"] = "dimensionsToSort"; - // DPI_DrillFieldVector, having type string[] - ParameterId["DrillFieldVector"] = "drillFieldVector"; - // DPI_EncodingFieldVector, having type string[] - ParameterId["EncodingFieldVector"] = "encodingFieldVector"; - // DPI_FieldVector, having type string[] - ParameterId["FieldVector"] = "fieldVector"; - // DPI_FilterFields, having type string[] - ParameterId["FilterFields"] = "filterFields"; - // DPI_LODFieldVector, having type string[] - ParameterId["LODFieldVector"] = "lodFieldVector"; - // DPI_LegendColumns, having type string[] - ParameterId["LegendColumns"] = "legendColumns"; - // DPI_LegendNames, having type string[] - ParameterId["LegendNames"] = "legendNames"; - // DPI_NodeColumns, having type string[] - ParameterId["NodeColumns"] = "nodeColumns"; - // DPI_PageFields, having type string[] - ParameterId["PageFields"] = "pageFields"; - // DPI_ParamValues, having type string[] - ParameterId["ParamValues"] = "paramValues"; - // DPI_RefLineFields, having type string[] - ParameterId["RefLineFields"] = "reflineFields"; - // DPI_ReferencedColumns, having type string[] - ParameterId["ReferencedColumns"] = "referencedColumns"; - // DPI_RelatedFieldNames, having type string[] - ParameterId["RelatedFieldNames"] = "relatedFieldNames"; - // DPI_RemoveActionResults, having type string[] - ParameterId["RemoveActionResults"] = "removeActionResults"; - // DPI_ResponseVector, having type string[] - ParameterId["ResponseVector"] = "responseVector"; - // DPI_RestartEveryValues, having type string[] - ParameterId["RestartEveryValues"] = "restartEveryValues"; - // DPI_ResultFields, having type string[] - ParameterId["ResultFields"] = "resultFields"; - // DPI_SortFieldValues, having type string[] - ParameterId["SortFieldValues"] = "sortFieldValues"; - // DPI_XFields, having type string[] - ParameterId["XFields"] = "xFields"; - // DPI_YFields, having type string[] - ParameterId["YFields"] = "yFields"; - // DPI_ConnectionFullName, having type string - ParameterId["ConnectionFullName"] = "connectionFullName"; - // DPI_ConnectionFullNames, having type string[] - ParameterId["ConnectionFullNames"] = "connectionFullNames"; - // DPI_BoundDataValue, having type object - ParameterId["BoundDataValue"] = "boundDataValue"; - // DPI_DataValue, having type object - ParameterId["DataValue"] = "dataValue"; - // DPI_DataValueIncrement, having type object - ParameterId["DataValueIncrement"] = "dataValueIncrement"; - // DPI_DataValueLowerX, having type object - ParameterId["DataValueLowerX"] = "dataValueLowerX"; - // DPI_DataValueLowerY, having type object - ParameterId["DataValueLowerY"] = "dataValueLowerY"; - // DPI_DataValueUpperX, having type object - ParameterId["DataValueUpperX"] = "dataValueUpperX"; - // DPI_DataValueUpperY, having type object - ParameterId["DataValueUpperY"] = "dataValueUpperY"; - // DPI_DefaultDataValue, having type object - ParameterId["DefaultDataValue"] = "defaultDataValue"; - // DPI_MaxDataValue, having type object - ParameterId["MaxDataValue"] = "maxDataValue"; - // DPI_MinDataValue, having type object - ParameterId["MinDataValue"] = "minDataValue"; - // DPI_ValidatedDataValue, having type object - ParameterId["ValidatedDataValue"] = "validatedDataValue"; - // DPI_BinSize, having type object - ParameterId["BinSize"] = "binSize"; - // DPI_LimitCount, having type object - ParameterId["LimitCount"] = "limitCount"; - // DPI_DataValueList, having type object[] - ParameterId["DataValueList"] = "dataValueList"; - // DPI_FieldCaptionPair, having type FieldCaptionPairPresModel - ParameterId["FieldCaptionPair"] = "fieldCaptionPair"; - // DPI_FieldCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["FieldCaptionPairs"] = "fieldCaptionPairs"; - // DPI_ParameterCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["ParameterCaptionPairs"] = "parameterCaptionPairs"; - // DPI_VaryingAttributeDimensions, having type FieldCaptionPairPresModel[] - ParameterId["VaryingAttributeDimensions"] = "varyingAttributeDimensions"; - // DPI_FieldCaptionPairState, having type FieldCaptionPairStatePresModel - ParameterId["FieldCaptionPairState"] = "fieldCaptionPairState"; - // DPI_FieldCaptionPairStates, having type FieldCaptionPairStatePresModel[] - ParameterId["FieldCaptionPairStates"] = "fieldCaptionPairStates"; - // DPI_DatasourceCaptionPair, having type DatasourceCaptionPairPresModel - ParameterId["DatasourceCaptionPair"] = "datasourceCaptionPair"; - // DPI_DatasourceCaptionPairs, having type DatasourceCaptionPairPresModel[] - ParameterId["DatasourceCaptionPairs"] = "datasourceCaptionPairs"; - // DPI_SheetNameInfoPair, having type SheetNameInfoPairPresModel - ParameterId["SheetNameInfoPair"] = "sheetNameInfoPair"; - // DPI_SheetNameInfoPairs, having type SheetNameInfoPairPresModel[] - ParameterId["SheetNameInfoPairs"] = "sheetNameInfoPairs"; - // DPI_BGActiveColor, having type string - ParameterId["BGActiveColor"] = "bgActiveColor"; - // DPI_BGColor, having type string - ParameterId["BGColor"] = "bgColor"; - // DPI_BGRestColor, having type string - ParameterId["BGRestColor"] = "bgRestColor"; - // DPI_BorderColor, having type string - ParameterId["BorderColor"] = "borderColor"; - // DPI_BorderColorBottom, having type string - ParameterId["BorderColorBottom"] = "borderColorBottom"; - // DPI_BorderColorLeft, having type string - ParameterId["BorderColorLeft"] = "borderColorLeft"; - // DPI_BorderColorRight, having type string - ParameterId["BorderColorRight"] = "borderColorRight"; - // DPI_BorderColorTop, having type string - ParameterId["BorderColorTop"] = "borderColorTop"; - // DPI_Color, having type string - ParameterId["Color"] = "color"; - // DPI_Color1, having type string - ParameterId["Color1"] = "color1"; - // DPI_Color2, having type string - ParameterId["Color2"] = "color2"; - // DPI_DefaultColor, having type string - ParameterId["DefaultColor"] = "defaultColor"; - // DPI_DistanceFontColor, having type string - ParameterId["DistanceFontColor"] = "distanceFontColor"; - // DPI_FillColor, having type string - ParameterId["FillColor"] = "fillColor"; - // DPI_FogColor, having type string - ParameterId["FogColor"] = "fogColor"; - // DPI_HeaderColor, having type string - ParameterId["HeaderColor"] = "headerColor"; - // DPI_HighlightBGColor, having type string - ParameterId["HighlightBGColor"] = "highlightBgColor"; - // DPI_HighlightTextColor, having type string - ParameterId["HighlightTextColor"] = "highlightTextColor"; - // DPI_HoverColor, having type string - ParameterId["HoverColor"] = "hoverColor"; - // DPI_MapAttributionFill, having type string - ParameterId["MapAttributionFill"] = "mapAttributionFill"; - // DPI_MapAttributionTextColor, having type string - ParameterId["MapAttributionTextColor"] = "mapAttributionTextColor"; - // DPI_MapPaneBackgroundFill, having type string - ParameterId["MapPaneBackgroundFill"] = "mapPaneBackgroundFill"; - // DPI_MapScaleBorderColor, having type string - ParameterId["MapScaleBorderColor"] = "mapScaleBorderColor"; - // DPI_MapScaleColor, having type string - ParameterId["MapScaleColor"] = "mapScaleColor"; - // DPI_MapWaitTileFill, having type string - ParameterId["MapWaitTileFill"] = "mapWaitTileFill"; - // DPI_MarkColor, having type string - ParameterId["MarkColor"] = "markColor"; - // DPI_NavArrowDisabledColor, having type string - ParameterId["NavArrowDisabledColor"] = "navArrowDisabledColor"; - // DPI_NavArrowHoverColor, having type string - ParameterId["NavArrowHoverColor"] = "navArrowHoverColor"; - // DPI_NavArrowIdleColor, having type string - ParameterId["NavArrowIdleColor"] = "navArrowIdleColor"; - // DPI_NavArrowPressedColor, having type string - ParameterId["NavArrowPressedColor"] = "navArrowPressedColor"; - // DPI_PaneColor, having type string - ParameterId["PaneColor"] = "paneColor"; - // DPI_PressColor, having type string - ParameterId["PressColor"] = "pressColor"; - // DPI_ResizeBorderColor, having type string - ParameterId["ResizeBorderColor"] = "resizeBorderColor"; - // DPI_SelectBGColor, having type string - ParameterId["SelectBGColor"] = "selectBgColor"; - // DPI_SelectionTextColor, having type string - ParameterId["SelectionTextColor"] = "selectionTextColor"; - // DPI_SwatchBackgroundColor, having type string - ParameterId["SwatchBackgroundColor"] = "swatchBgColor"; - // DPI_SwatchBorderColor, having type string - ParameterId["SwatchBorderColor"] = "swatchBorderColor"; - // DPI_TabColor, having type string - ParameterId["TabColor"] = "tabColor"; - // DPI_Colors, having type string[] - ParameterId["Colors"] = "colors"; - // DPI_RampColorSamples, having type string[] - ParameterId["RampColorSamples"] = "rampColorSamples"; - // DPI_Pixmap, having type string - ParameterId["Pixmap"] = "pixmap"; - // DPI_Image, having type string - ParameterId["Image"] = "image"; - // DPI_OverlayImage, having type string - ParameterId["OverlayImage"] = "overlayImage"; - // DPI_IconImage, having type string - ParameterId["IconImage"] = "iconImage"; - // DPI_ImageList, having type string[] - ParameterId["ImageList"] = "imageList"; - // DPI_ImageMap, having type Dictionary(of string) - ParameterId["ImageMap"] = "imageMap"; - // DPI_UUID, having type object - ParameterId["UUID"] = "uuid"; - // DPI_Nanoseconds, having type object - ParameterId["Nanoseconds"] = "nanoseconds"; - // DPI_Microseconds, having type object - ParameterId["Microseconds"] = "microseconds"; - // DPI_Milliseconds, having type object - ParameterId["Milliseconds"] = "milliseconds"; - // DPI_TimeoutS, having type object - ParameterId["TimeoutS"] = "timeoutS"; - // DPI_Minutes, having type object - ParameterId["Minutes"] = "minutes"; - // DPI_Hours, having type object - ParameterId["Hours"] = "hours"; - // DPI_CardType, having type CardType - ParameterId["CardType"] = "cardType"; - // DPI_DocParameterID, having type string - ParameterId["DocParameterID"] = "type"; - // DPI_ArgumentParam, having type string - ParameterId["ArgumentParam"] = "argumentParam"; - // DPI_ArgumentParams, having type string[] - ParameterId["ArgumentParams"] = "argumentParams"; - // DPI_ActionType, having type ActionType - ParameterId["ActionType"] = "actionType"; - // DPI_AnnotateEnum, having type AnnotateEnum - ParameterId["AnnotateEnum"] = "annotateEnum"; - // DPI_JoinType, having type SQLJoinType - ParameterId["JoinType"] = "joinType"; - // DPI_SupportedJoinTypes, having type SQLJoinType[] - ParameterId["SupportedJoinTypes"] = "supportedJoinTypes"; - // DPI_Rounding, having type Rounding - ParameterId["Rounding"] = "roundingEnum"; - // DPI_BodyType, having type BodyType - ParameterId["BodyType"] = "bodyType"; - // DPI_LineEnd, having type LineEnd - ParameterId["LineEnd"] = "lineEndEnum"; - // DPI_LineEndSize, having type LineEndSize - ParameterId["LineEndSize"] = "lineEndSizeEnum"; - // DPI_BrushSpecialFields, having type BrushSpecialFields - ParameterId["BrushSpecialFields"] = "specialFields"; - // DPI_CellSizeChange, having type CellSizeChange - ParameterId["CellSizeChange"] = "cellSizeChange"; - // DPI_CellType, having type CellType - ParameterId["CellType"] = "cellType"; - // DPI_ConnectionAttemptResult, having type ConnectionAttemptResult - ParameterId["ConnectionAttemptResult"] = "connectionAttemptResult"; - // DPI_ConnectionErrorType, having type ConnectionErrorType - ParameterId["ConnectionErrorType"] = "connectionErrorType"; - // DPI_DataServerConnectionResult, having type DataServerConnectionResult - ParameterId["DataServerConnectionResult"] = "dsConnectionResult"; - // DPI_DropWhen, having type DropWhen - ParameterId["DropWhen"] = "dropWhen"; - // DPI_DropType, having type DropFieldResult - ParameterId["DropType"] = "dropType"; - // DPI_EncodingType, having type EncodingType - ParameterId["EncodingType"] = "encodingType"; - // DPI_DropdownEncodingType, having type EncodingType - ParameterId["DropdownEncodingType"] = "dropdownEncodingType"; - // DPI_EncodingTypes, having type EncodingType[] - ParameterId["EncodingTypes"] = "encodingTypes"; - // DPI_FieldOrderType, having type FieldOrderType - ParameterId["FieldOrderType"] = "fieldOrderType"; - // DPI_FilterIconType, having type FilterIconType - ParameterId["FilterIconType"] = "filterIconType"; - // DPI_FilterIconTypes, having type FilterIconType[] - ParameterId["FilterIconTypes"] = "filterIconTypes"; - // DPI_FloatingToolbarVis, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVis"] = "toolbarVisibility"; - // DPI_FolderRole, having type FolderRole - ParameterId["FolderRole"] = "folderRole"; - // DPI_LegendType, having type Enum - ParameterId["LegendType"] = "legendType"; - // DPI_ForecastModelType, having type ForecastModelType - ParameterId["ForecastModelType"] = "forecastModelType"; - // DPI_ForecastTrendType, having type ForecastComponentType - ParameterId["ForecastTrendType"] = "forecastTrendType"; - // DPI_ForecastSeasonType, having type ForecastComponentType - ParameterId["ForecastSeasonType"] = "forecastSeasonType"; - // DPI_ForecastRangeType, having type ForecastRangeType - ParameterId["ForecastRangeType"] = "forecastRangeType"; - // DPI_ForecastStatus, having type ForecastStatus - ParameterId["ForecastStatus"] = "forecastStatus"; - // DPI_SheetForecastStatus, having type ForecastStatus - ParameterId["SheetForecastStatus"] = "sheetForecastStatus"; - // DPI_PDForecastStatusList, having type ForecastStatus[] - ParameterId["PDForecastStatusList"] = "paneDescriptorForecastStatusList"; - // DPI_ForecastColumnType, having type ForecastColumnType - ParameterId["ForecastColumnType"] = "forecastColumnType"; - // DPI_DataScaling, having type DataScaling - ParameterId["DataScaling"] = "dataScaling"; - // DPI_GetFilterItemsJsonResponse, having type GetJsonResponseEnum - ParameterId["GetFilterItemsJsonResponse"] = "getFilterItemsJsonResponse"; - // DPI_FilterSearchJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchJsonResponse"] = "filterSearchJsonResponse"; - // DPI_FilterSearchWithIndexJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchWithIndexJsonResponse"] = "filterSearchWithIndexJsonResponse"; - // DPI_FilterShowChildrenJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterShowChildrenJsonResponse"] = "filterShowChildrenJsonResponse"; - // DPI_HAlignment, having type LabelHAlignment - ParameterId["HAlignment"] = "horizontalLabelAlignment"; - // DPI_JoinValidationError, having type JoinValidationError - ParameterId["JoinValidationError"] = "joinValidationError"; - // DPI_NameConflictResolution, having type NameConflictResolution - ParameterId["NameConflictResolution"] = "nameConflictResolution"; - // DPI_LabelDir, having type TextOrient - ParameterId["LabelDir"] = "labelDirection"; - // DPI_LabelAlign, having type TextAlign - ParameterId["LabelAlign"] = "labelAlignment"; - // DPI_LabelWrap, having type TextWrapMode - ParameterId["LabelWrap"] = "labelWrap"; - // DPI_WrapMode, having type TextWrapMode - ParameterId["WrapMode"] = "wrapMode"; - // DPI_MarkEnum, having type MarkEnum - ParameterId["MarkEnum"] = "markEnum"; - // DPI_PercentMode, having type PercentMode - ParameterId["PercentMode"] = "percentageMode"; - // DPI_ReferenceOptionsSet, having type ReferenceOptionsSet - ParameterId["ReferenceOptionsSet"] = "referenceOptionsSet"; - // DPI_ReferenceOptionsSets, having type ReferenceOptionsSet[] - ParameterId["ReferenceOptionsSets"] = "referenceOptionsSets"; - // DPI_RankType, having type RankType - ParameterId["RankType"] = "rankType"; - // DPI_RankTypeValues, having type RankType[] - ParameterId["RankTypeValues"] = "rankTypeValues"; - // DPI_SpecialValuesMode, having type SpecialValuesMode - ParameterId["SpecialValuesMode"] = "specialValuesMode"; - // DPI_VAlignment, having type LabelVAlignment - ParameterId["VAlignment"] = "verticalLabelAlignment"; - // DPI_ColorMode, having type ColorMode - ParameterId["ColorMode"] = "colorMode"; - // DPI_MarkLabelsMode, having type MarkLabelsMode - ParameterId["MarkLabelsMode"] = "markLabelsMode"; - // DPI_MarkLabelsScope, having type MarkLabelsScope - ParameterId["MarkLabelsScope"] = "markLabelsScope"; - // DPI_MarkLabelsVisibility, having type MarkLabelsVisibility - ParameterId["MarkLabelsVisibility"] = "markLabelsVisibility"; - // DPI_PrimitiveType, having type PrimitiveType - ParameterId["PrimitiveType"] = "primitiveType"; - // DPI_ActualPrimitiveType, having type PrimitiveType - ParameterId["ActualPrimitiveType"] = "actualPrimitiveType"; - // DPI_PrimitiveTypes, having type PrimitiveType[] - ParameterId["PrimitiveTypes"] = "primitiveTypes"; - // DPI_ShapeType, having type ShapeType - ParameterId["ShapeType"] = "shapeType"; - // DPI_SortType, having type SortType - ParameterId["SortType"] = "sortBy"; - // DPI_SortEnd, having type SortEnd - ParameterId["SortEnd"] = "sortEnd"; - // DPI_StackingMode, having type StackingMode - ParameterId["StackingMode"] = "stackingMode"; - // DPI_StyleTheme, having type StyleTheme - ParameterId["StyleTheme"] = "styleTheme"; - // DPI_TrendLineFitType, having type TrendLineFitType - ParameterId["TrendLineFitType"] = "fitType"; - // DPI_UpdateScope, having type UpdateScope - ParameterId["UpdateScope"] = "updateScope"; - // DPI_ParameterCtrlDisplayMode, having type DisplayMode - ParameterId["ParameterCtrlDisplayMode"] = "paramDisplayMode"; - // DPI_ParameterCtrlDisplayFlag, having type ParameterCtrlDisplayFlag - ParameterId["ParameterCtrlDisplayFlag"] = "paramDisplayFlag"; - // DPI_Included, having type QuantitativeIncludedValues - ParameterId["Included"] = "included"; - // DPI_CommandsType, having type CommandsType - ParameterId["CommandsType"] = "commandsType"; - // DPI_ParameterDomainType, having type DomainType - ParameterId["ParameterDomainType"] = "parameterDomainType"; - // DPI_FilterDomainType, having type DomainType - ParameterId["FilterDomainType"] = "filterDomainType"; - // DPI_FilterDomains, having type DomainType[] - ParameterId["FilterDomains"] = "filterDomains"; - // DPI_DatePeriodType, having type DatePeriodType - ParameterId["DatePeriodType"] = "datePeriodType"; - // DPI_FilterPatternType, having type PatternType - ParameterId["FilterPatternType"] = "filterPatternType"; - // DPI_FilterConditionType, having type ConditionType - ParameterId["FilterConditionType"] = "filterConditionType"; - // DPI_FiltersPresetType, having type PresetType - ParameterId["FiltersPresetType"] = "filtersPresetType"; - // DPI_FiltersRangeType, having type RangeType - ParameterId["FiltersRangeType"] = "filtersRangeType"; - // DPI_DateRangeType, having type RelativeDateRangeType - ParameterId["DateRangeType"] = "dateRangeType"; - // DPI_PageFlag, having type PageNavFlags - ParameterId["PageFlag"] = "pageFlag"; - // DPI_MarksToTrail, having type MarksToTrail - ParameterId["MarksToTrail"] = "marksToTrail"; - // DPI_TrailType, having type TrailType - ParameterId["TrailType"] = "trailType"; - // DPI_ChangePageDirection, having type ChangePageType - ParameterId["ChangePageDirection"] = "changeTo"; - // DPI_AnimationControl, having type PageAnimationControl - ParameterId["AnimationControl"] = "animationControl"; - // DPI_LinePattern, having type LinePattern - ParameterId["LinePattern"] = "linePattern"; - // DPI_LineCap, having type LineCap - ParameterId["LineCap"] = "lineCap"; - // DPI_LineJoin, having type LineJoin - ParameterId["LineJoin"] = "lineJoin"; - // DPI_LineAlignment, having type LineAlignment - ParameterId["LineAlignment"] = "lineAlignment"; - // DPI_FillMode, having type FillMode - ParameterId["FillMode"] = "fillMode"; - // DPI_CursorShape, having type CursorShape - ParameterId["CursorShape"] = "cursorShape"; - // DPI_ShowMeCommandType, having type ShowMeCommandType - ParameterId["ShowMeCommandType"] = "showMeCommandType"; - // DPI_ShelfIconType, having type ShelfIconType - ParameterId["ShelfIconType"] = "shelfIconType"; - // DPI_ShelfIconTypes, having type ShelfIconType[] - ParameterId["ShelfIconTypes"] = "shelfIconTypes"; - // DPI_ItemDrawStyle, having type ItemDrawStyle - ParameterId["ItemDrawStyle"] = "itemDrawStyle"; - // DPI_ScaleMode, having type ScaleMode - ParameterId["ScaleMode"] = "pageScaleMode"; - // DPI_PageOrientationOption, having type PageOrientation - ParameterId["PageOrientationOption"] = "pageOrientationOption"; - // DPI_PageSizeOption, having type PageSizeOption - ParameterId["PageSizeOption"] = "pageSizeOption"; - // DPI_SortRegionType, having type SortRegionType - ParameterId["SortRegionType"] = "sortRegion"; - // DPI_LegendItemLayout, having type LegendItemLayout - ParameterId["LegendItemLayout"] = "legendLayout"; - // DPI_LegendItemOrder, having type LegendItemOrder - ParameterId["LegendItemOrder"] = "legendOrder"; - // DPI_VizImageRegion, having type VizImageRegion - ParameterId["VizImageRegion"] = "r"; - // DPI_LegacyMenuName, having type LegacyMenuName - ParameterId["LegacyMenuName"] = "legacyMenuName"; - // DPI_LegacyMenuState, having type LegacyMenuState - ParameterId["LegacyMenuState"] = "legacyMenuState"; - // DPI_LegacyMenuStateList, having type LegacyMenuState[] - ParameterId["LegacyMenuStateList"] = "legacyMenuStates"; - // DPI_DimensionType, having type DimensionType - ParameterId["DimensionType"] = "dimensionType"; - // DPI_LayoutType, having type LayoutType - ParameterId["LayoutType"] = "layoutType"; - // DPI_ShelfType, having type ShelfType - ParameterId["ShelfType"] = "shelfType"; - // DPI_LastSelectionShelf, having type ShelfType - ParameterId["LastSelectionShelf"] = "lastShelf"; - // DPI_SchemaViewerDataSourceType, having type SchemaViewerDataSourceType - ParameterId["SchemaViewerDataSourceType"] = "schemaDatasourceType"; - // DPI_SchemaItemType, having type SchemaItemType - ParameterId["SchemaItemType"] = "schemaItemType"; - // DPI_HSMSelectionMode, having type SelectionMode - ParameterId["HSMSelectionMode"] = "hsmSelectionMode"; - // DPI_HSMDefaultMemberType, having type DefaultMemberType - ParameterId["HSMDefaultMemberType"] = "hsmDefaultMemberType"; - // DPI_HSMNotificationType, having type NotificationType - ParameterId["HSMNotificationType"] = "hsmNotificationType"; - // DPI_HSMSelectionRequestType, having type SelectionRequestType - ParameterId["HSMSelectionRequestType"] = "hsmSelectionRequestType"; - // DPI_HSMMemberSelectRequestType, having type MemberSelectRequestType - ParameterId["HSMMemberSelectRequestType"] = "hsmMemberSelectRequestType"; - // DPI_PivotStrategy, having type FieldPivotStrategy - ParameterId["PivotStrategy"] = "pivotStrategy"; - // DPI_AliasType, having type AliasType - ParameterId["AliasType"] = "aliasType"; - // DPI_DSODimensionSortOrder, having type DataSourceOrder - ParameterId["DSODimensionSortOrder"] = "dsoDimensionSortOrder"; - // DPI_DSOMeasureSortOrder, having type DataSourceOrder - ParameterId["DSOMeasureSortOrder"] = "dsoMeasureSortOrder"; - // DPI_DSOSortOrder, having type DataSourceOrder - ParameterId["DSOSortOrder"] = "dsoSortOrder"; - // DPI_VTAggType, having type VTAggType - ParameterId["VTAggType"] = "vtAggregation"; - // DPI_FieldTypeIconSet, having type FieldTypeIconSet - ParameterId["FieldTypeIconSet"] = "fieldIconSet"; - // DPI_VisualPart, having type VisualPart - ParameterId["VisualPart"] = "visualPart"; - // DPI_DefaultMapToolEnum, having type MapToolSelection - ParameterId["DefaultMapToolEnum"] = "defaultMapToolEnum"; - // DPI_DefaultMapUnitEnum, having type MapUnitSelectionEnum - ParameterId["DefaultMapUnitEnum"] = "defaultMapUnitEnum"; - // DPI_SceneModelDetail, having type Detail - ParameterId["SceneModelDetail"] = "sceneModelDetailEnum"; - // DPI_SceneModelHitType, having type HitType - ParameterId["SceneModelHitType"] = "sceneModelHitType"; - // DPI_HitTestStyle, having type HitTestStyle - ParameterId["HitTestStyle"] = "hitTestStyle"; - // DPI_MarkState, having type MarkState - ParameterId["MarkState"] = "markState"; - // DPI_SheetType, having type SheetType - ParameterId["SheetType"] = "sheetType"; - // DPI_DragSource, having type DragDropType - ParameterId["DragSource"] = "dragSource"; - // DPI_DropTarget, having type DragDropType - ParameterId["DropTarget"] = "dropTarget"; - // DPI_ShelfDropAction, having type ShelfDropAction - ParameterId["ShelfDropAction"] = "shelfDropAction"; - // DPI_ShelfDropContext, having type ShelfDropContext - ParameterId["ShelfDropContext"] = "shelfDropContext"; - // DPI_FilterSelectionTracking, having type SelectionTracking - ParameterId["FilterSelectionTracking"] = "filterSelectionTracking"; - // DPI_FilterUpdateType, having type FilterUpdateType - ParameterId["FilterUpdateType"] = "filterUpdateType"; - // DPI_FilterUpdateQualifierType, having type FilterUpdateQualifierType - ParameterId["FilterUpdateQualifierType"] = "filterUpdateQualifierType"; - // DPI_ParameterError, having type ParameterError - ParameterId["ParameterError"] = "parameterError"; - // DPI_SelectionType, having type SelectionType - ParameterId["SelectionType"] = "selectionType"; - // DPI_SelectionUpdateType, having type SelectionUpdateType - ParameterId["SelectionUpdateType"] = "selectionUpdateType"; - // DPI_SelectOptions, having type SelectOptions - ParameterId["SelectOptions"] = "selectOptions"; - // DPI_AxisOrientation, having type Orientation - ParameterId["AxisOrientation"] = "axisOrientation"; - // DPI_DecimalMode, having type DecimalMode - ParameterId["DecimalMode"] = "decimalMode"; - // DPI_ActivationMethod, having type ActivationMethod - ParameterId["ActivationMethod"] = "activation"; - // DPI_SourceType, having type SourceType - ParameterId["SourceType"] = "sourceType"; - // DPI_OnClear, having type OnClear - ParameterId["OnClear"] = "onClear"; - // DPI_MergeOrSplit, having type MergeOrSplit - ParameterId["MergeOrSplit"] = "mergeOrSplit"; - // DPI_FilterMode, having type FilterMode - ParameterId["FilterMode"] = "filterMode"; - // DPI_ZoneType, having type ZoneType - ParameterId["ZoneType"] = "zoneType"; - // DPI_ZoneLayoutType, having type ZoneLayoutType - ParameterId["ZoneLayoutType"] = "zoneLayoutType"; - // DPI_QuickTableCalcType, having type QuickTableCalcCommandType - ParameterId["QuickTableCalcType"] = "quickTableCalcType"; - // DPI_TableCalcCommandType, having type TableCalcCommandType - ParameterId["TableCalcCommandType"] = "tableCalcCommandType"; - // DPI_TableCalcAddressType, having type TableCalcAddressCommandType - ParameterId["TableCalcAddressType"] = "tableCalcAddressType"; - // DPI_MarkLayoutPrimitive, having type Primitive - ParameterId["MarkLayoutPrimitive"] = "markLayoutPrimitive"; - // DPI_MarkLayoutVizType, having type VizType - ParameterId["MarkLayoutVizType"] = "markLayoutVizType"; - // DPI_MarkAlignment, having type MarkAlignment - ParameterId["MarkAlignment"] = "markAlignment"; - // DPI_ModifyZoneZOrderType, having type ModifyZoneZOrderCommandType - ParameterId["ModifyZoneZOrderType"] = "modifyZoneZOrderType"; - // DPI_TextRegionHAlign, having type TextRegionHAlign - ParameterId["TextRegionHAlign"] = "halign"; - // DPI_TextRegionVAlign, having type TextRegionVAlign - ParameterId["TextRegionVAlign"] = "valign"; - // DPI_PathElement, having type PathElement - ParameterId["PathElement"] = "pathElement"; - // DPI_PathElements, having type PathElement[] - ParameterId["PathElements"] = "pathElements"; - // DPI_RenderMode, having type RenderMode - ParameterId["RenderMode"] = "renderMode"; - // DPI_FontStyle, having type TableauFontStyle - ParameterId["FontStyle"] = "fontStyle"; - // DPI_FontWeight, having type FontWeight - ParameterId["FontWeight"] = "fontWeight"; - // DPI_TextDecoration, having type TextDecoration - ParameterId["TextDecoration"] = "textDecoration"; - // DPI_BorderStyle, having type BorderStyle - ParameterId["BorderStyle"] = "borderStyle"; - // DPI_BorderStyleTop, having type BorderStyle - ParameterId["BorderStyleTop"] = "borderStyleTop"; - // DPI_BorderStyleRight, having type BorderStyle - ParameterId["BorderStyleRight"] = "borderStyleRight"; - // DPI_BorderStyleBottom, having type BorderStyle - ParameterId["BorderStyleBottom"] = "borderStyleBottom"; - // DPI_BorderStyleLeft, having type BorderStyle - ParameterId["BorderStyleLeft"] = "borderStyleLeft"; - // DPI_FloatingToolbarVisibility, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVisibility"] = "floatingToolbarVisibility"; - // DPI_GeoSearchVisibility, having type GeoSearchVisibility - ParameterId["GeoSearchVisibility"] = "geographicSearchVisibility"; - // DPI_MapScaleVisibility, having type MapScaleVisibility - ParameterId["MapScaleVisibility"] = "mapScaleVisibility"; - // DPI_VizNavigationSetting, having type VizNavigationSetting - ParameterId["VizNavigationSetting"] = "vizNavigationSetting"; - // DPI_AutoDrillVisibility, having type AutoDrillVisibility - ParameterId["AutoDrillVisibility"] = "autoDrillVisibility"; - // DPI_ClientUIMetricType, having type ClientUIMetricType - ParameterId["ClientUIMetricType"] = "clientUiMetricType"; - // DPI_SheetScrollDirection, having type SheetScrollDirection - ParameterId["SheetScrollDirection"] = "sheetScrollDirection"; - // DPI_SizeMode, having type SizeMode - ParameterId["SizeMode"] = "sizeMode"; - // DPI_PerspectiveAggregate, having type PerspectiveAggregate - ParameterId["PerspectiveAggregate"] = "perspectiveAggregation"; - // DPI_StyleAttribute, having type StyleAttribute - ParameterId["StyleAttribute"] = "styleAttribute"; - // DPI_StyleAttributes, having type StyleAttribute[] - ParameterId["StyleAttributes"] = "styleAttributes"; - // DPI_StyleElement, having type StyleElement - ParameterId["StyleElement"] = "styleElement"; - // DPI_StyleDataClass, having type StyleDataClass - ParameterId["StyleDataClass"] = "styleClass"; - // DPI_StyleFieldScope, having type StyleFieldScope - ParameterId["StyleFieldScope"] = "styleScope"; - // DPI_FormatControlType, having type FormatControlType - ParameterId["FormatControlType"] = "formatType"; - // DPI_LineInterpolationMode, having type LineInterpolationMode - ParameterId["LineInterpolationMode"] = "lineInterpolationMode"; - // DPI_LineMarkerPosition, having type LineMarkerPosition - ParameterId["LineMarkerPosition"] = "lineMarkerPosition"; - // DPI_MarkersMode, having type MarkMarkersMode - ParameterId["MarkersMode"] = "markersMode"; - // DPI_AppConfigEnum, having type AppConfigEnum - ParameterId["AppConfigEnum"] = "appConfigEnum"; - // DPI_ColorPaletteType, having type ColorPaletteType - ParameterId["ColorPaletteType"] = "colorPaletteType"; - // DPI_ExtractType, having type ExtractType - ParameterId["ExtractType"] = "extractType"; - // DPI_ActivityDisposition, having type ActivityDisposition - ParameterId["ActivityDisposition"] = "activityDisposition"; - // DPI_ActivityResult, having type ActivityResult - ParameterId["ActivityResult"] = "activityResult"; - // DPI_TooltipMode, having type TooltipMode - ParameterId["TooltipMode"] = "tooltipMode"; - // DPI_RuntimeOutput, having type RuntimeOutput - ParameterId["RuntimeOutput"] = "runtimeOutput"; - // DPI_AnalyticsObjectType, having type AnalyticsObjectType - ParameterId["AnalyticsObjectType"] = "analyticsObjectType"; - // DPI_UIAutomationStatus, having type UIAutomationCommandStatus - ParameterId["UIAutomationStatus"] = "uiAutomationStatus"; - // DPI_TableViewDataType, having type TableViewDataType - ParameterId["TableViewDataType"] = "tableViewerDataType"; - // DPI_UnitsFormat, having type UnitsFormatEnum - ParameterId["UnitsFormat"] = "unitsFormat"; - // DPI_FilterLimitType, having type LimitType - ParameterId["FilterLimitType"] = "filterLimitType"; - // DPI_DistributionSelectedType, having type DistributionType - ParameterId["DistributionSelectedType"] = "distributionSelectedType"; - // DPI_DistributionType, having type DistributionType - ParameterId["DistributionType"] = "distributionType"; - // DPI_TranslatedDistributionType, having type TranslatedDistributionTypePresModel - ParameterId["TranslatedDistributionType"] = "translatedDistributionType"; - // DPI_TranslatedDistributionTypes, having type TranslatedDistributionTypePresModel[] - ParameterId["TranslatedDistributionTypes"] = "translatedDistributionTypes"; - // DPI_RefLineFormulaGroup, having type FormulaGroup - ParameterId["RefLineFormulaGroup"] = "reflineFormulaGroup"; - // DPI_ReferenceLineScopeType, having type ScopeType - ParameterId["ReferenceLineScopeType"] = "referenceLineScopeType"; - // DPI_StDevType, having type StDevType - ParameterId["StDevType"] = "stdevType"; - // DPI_ShowBounds, having type ShowBounds - ParameterId["ShowBounds"] = "showBounds"; - // DPI_BoxplotWhiskerType, having type BoxplotWhiskerType - ParameterId["BoxplotWhiskerType"] = "boxplotWhiskerType"; - // DPI_ReferenceLineLabelType, having type LabelType - ParameterId["ReferenceLineLabelType"] = "referenceLineLabelType"; - // DPI_PairedReferenceLineLabelType, having type LabelType - ParameterId["PairedReferenceLineLabelType"] = "pairedReferenceLineLabelType"; - // DPI_ConfidenceIntervalSelectedState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalSelectedState"] = "confidenceIntervalSelectedState"; - // DPI_ConfidenceIntervalState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalState"] = "confidenceIntervalState"; - // DPI_TranslatedLabelType, having type TranslatedLabelTypePresModel - ParameterId["TranslatedLabelType"] = "translatedLabelType"; - // DPI_ReferenceLineValidLabelTypes, having type TranslatedLabelTypePresModel[] - ParameterId["ReferenceLineValidLabelTypes"] = "validReferenceLineLabelTypes"; - // DPI_ReferenceLineFormulaType, having type FormulaType - ParameterId["ReferenceLineFormulaType"] = "referenceLineFormulaType"; - // DPI_PairedReferenceLineFormulaType, having type FormulaType - ParameterId["PairedReferenceLineFormulaType"] = "pairedReferenceLineFormulaType"; - // DPI_TranslatedFormulaType, having type TranslatedFormulaTypePresModel - ParameterId["TranslatedFormulaType"] = "translatedFormulaType"; - // DPI_ReferenceLineValidFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidFormulaTypes"] = "validReferenceLineFormulaTypes"; - // DPI_ReferenceLineValidPairedFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidPairedFormulaTypes"] = "validReferenceLinePairedFormulaTypes"; - // DPI_TranslatedConfidenceIntervalState, having type TranslatedConfidenceIntervalStatePresModel - ParameterId["TranslatedConfidenceIntervalState"] = "translatedConfidenceIntervalState"; - // DPI_TranslatedConfidenceIntervalStates, having type TranslatedConfidenceIntervalStatePresModel[] - ParameterId["TranslatedConfidenceIntervalStates"] = "translatedConfidenceIntervalStates"; - // DPI_TranslatedStDevType, having type TranslatedStDevTypePresModel - ParameterId["TranslatedStDevType"] = "translatedStdevType"; - // DPI_TranslatedStDevTypes, having type TranslatedStDevTypePresModel[] - ParameterId["TranslatedStDevTypes"] = "translatedStdevTypes"; - // DPI_ReferenceLineLODCalcType, having type LODCalcType - ParameterId["ReferenceLineLODCalcType"] = "referenceLineLodCalcType"; - // DPI_ValueDomainType, having type ValueDomainType - ParameterId["ValueDomainType"] = "valueDomainType"; - // DPI_ValueDomainTypes, having type ValueDomainType[] - ParameterId["ValueDomainTypes"] = "valueDomainTypes"; - // DPI_OperationType, having type OperationType - ParameterId["OperationType"] = "operationType"; - // DPI_OperationTypes, having type OperationType[] - ParameterId["OperationTypes"] = "operationTypes"; - // DPI_ConnectionTypeCategory, having type ConnectionTypeCategory - ParameterId["ConnectionTypeCategory"] = "connectionTypeCategory"; - // DPI_ConnectionTypeGroup, having type ConnectionTypeGroup - ParameterId["ConnectionTypeGroup"] = "connectionTypeGroup"; - // DPI_CommandRedirectType, having type CommandRedirectType - ParameterId["CommandRedirectType"] = "commandRedirectType"; - // DPI_CustomSplitMode, having type SplitMode - ParameterId["CustomSplitMode"] = "customSplitMode"; - // DPI_CustomSplitSeparatorType, having type SeparatorType - ParameterId["CustomSplitSeparatorType"] = "customSplitSeparatorType"; - // DPI_LevelSelectionState, having type LevelSelectionState - ParameterId["LevelSelectionState"] = "levelSelectionState"; - // DPI_LevelSelectionStates, having type LevelSelectionState[] - ParameterId["LevelSelectionStates"] = "levelSelectionStates"; - // DPI_SourceDestIcon, having type SourceDestIcon - ParameterId["SourceDestIcon"] = "sourceDestIcon"; - // DPI_LegendLayout, having type LegendLayout - ParameterId["LegendLayout"] = "pageLegendLayout"; - // DPI_ImagesEditResultCode, having type ImagesEditResultCode - ParameterId["ImagesEditResultCode"] = "imagesEditResultCode"; - // DPI_CalculationContext, having type CalculationContext - ParameterId["CalculationContext"] = "calculationContext"; - // DPI_WorkgroupPublishErrorType, having type WorkgroupPublishErrorType - ParameterId["WorkgroupPublishErrorType"] = "workgroupPublishErrorType"; - // DPI_IsParameter, having type TriBool - ParameterId["IsParameter"] = "isParameter"; - // DPI_AddressingState, having type WidgetState - ParameterId["AddressingState"] = "addressingState"; - // DPI_AllPagesState, having type WidgetState - ParameterId["AllPagesState"] = "allPagesState"; - // DPI_AtTheLevelState, having type WidgetState - ParameterId["AtTheLevelState"] = "atTheLevelState"; - // DPI_ComputeCompoundedRateState, having type WidgetState - ParameterId["ComputeCompoundedRateState"] = "computeCompoundedRateState"; - // DPI_CustomNullIfIncompleteState, having type WidgetState - ParameterId["CustomNullIfIncompleteState"] = "customNullIfIncompleteState"; - // DPI_NestedCalcsState, having type WidgetState - ParameterId["NestedCalcsState"] = "nestedCalcsState"; - // DPI_RankTypeState, having type WidgetState - ParameterId["RankTypeState"] = "rankTypeState"; - // DPI_ReferenceOptionsState, having type WidgetState - ParameterId["ReferenceOptionsState"] = "referenceOptionsState"; - // DPI_RestartEveryState, having type WidgetState - ParameterId["RestartEveryState"] = "restartEveryState"; - // DPI_SortAggState, having type WidgetState - ParameterId["SortAggState"] = "sortAggState"; - // DPI_SortState, having type WidgetState - ParameterId["SortState"] = "sortState"; - // DPI_TableCalcTypeState, having type WidgetState - ParameterId["TableCalcTypeState"] = "tableCalcTypeState"; - // DPI_TableCalcAssistanceWidgetState, having type WidgetState - ParameterId["TableCalcAssistanceWidgetState"] = "tableCalcAssistanceWidgetState"; - // DPI_CalcNestingLevel, having type CalcNestingLevel - ParameterId["CalcNestingLevel"] = "calcNestingLevel"; - // DPI_DataProviderType, having type DataProviderType - ParameterId["DataProviderType"] = "dataProviderType"; - // DPI_HeuristicCommandReinterpretation, having type HeuristicCommandReinterpretation - ParameterId["HeuristicCommandReinterpretation"] = "heuristicCommandReinterpretation"; - // DPI_ExtractRefreshStatus, having type ExtractRefreshStatus - ParameterId["ExtractRefreshStatus"] = "extractRefreshStatus"; - // DPI_RichTextEditorWidgetKey, having type RichTextEditorWidgetKey - ParameterId["RichTextEditorWidgetKey"] = "richTextEditorWidgetKey"; - // DPI_RichTextWidgetKeys, having type RichTextEditorWidgetKey[] - ParameterId["RichTextWidgetKeys"] = "richTextWidgetKeys"; - // DPI_TypeOfFormatItem, having type TypeOfFormatItem - ParameterId["TypeOfFormatItem"] = "typeOfFormatItem"; - // DPI_TypeOfFormatContainer, having type TypeOfFormatContainer - ParameterId["TypeOfFormatContainer"] = "typeOfFormatContainer"; - // DPI_TypeOfFormatControl, having type TypeOfFormatControl - ParameterId["TypeOfFormatControl"] = "typeOfFormatControl"; - // DPI_FormatWidgetKey, having type FormatWidgetKey - ParameterId["FormatWidgetKey"] = "formatWidgetKey"; - // DPI_ColorSwatchType, having type ColorSwatchType - ParameterId["ColorSwatchType"] = "formatColorSwatchType"; - // DPI_PickerType, having type PickerType - ParameterId["PickerType"] = "pickerType"; - // DPI_ExtractHistoryRefreshType, having type RefreshType - ParameterId["ExtractHistoryRefreshType"] = "extractHistoryRefreshTypeEnum"; - // DPI_AxisFoldState, having type AxisFoldState - ParameterId["AxisFoldState"] = "axisFoldState"; - // DPI_TickMarkSpacingUnits, having type TickSpacingUnits - ParameterId["TickMarkSpacingUnits"] = "tickSpacingUnits"; - // DPI_TickMarkState, having type TickMarkState - ParameterId["TickMarkState"] = "tickMarkState"; - // DPI_AxisRangeType, having type AxisRangeType - ParameterId["AxisRangeType"] = "axisRangeType"; - // DPI_ScaleType, having type ScaleType - ParameterId["ScaleType"] = "scaleType"; - // DPI_DashboardDeviceLayout, having type DashboardDeviceLayout - ParameterId["DashboardDeviceLayout"] = "dashboardDeviceLayout"; - // DPI_ActivateDeviceLayout, having type DashboardDeviceLayout - ParameterId["ActivateDeviceLayout"] = "activateDeviceLayout"; - // DPI_DashboardDeviceLayouts, having type DashboardDeviceLayout[] - ParameterId["DashboardDeviceLayouts"] = "dashboardDeviceLayouts"; - // DPI_DeviceSource, having type DeviceSource - ParameterId["DeviceSource"] = "deviceSource"; - // DPI_DashboardSizingDimension, having type DashboardSizingDimension - ParameterId["DashboardSizingDimension"] = "dashboardSizingDimension"; - // DPI_DashboardSizingMode, having type DashboardSizingMode - ParameterId["DashboardSizingMode"] = "dashboardSizingMode"; - // DPI_FlipboardNavType, having type FlipboardNavType - ParameterId["FlipboardNavType"] = "flipboardNavType"; - // DPI_FieldPickerDialogUseCase, having type FieldPickerDialogUseCase - ParameterId["FieldPickerDialogUseCase"] = "fieldPickerDialogUseCase"; - // DPI_StartOfWeekEnum, having type SOWValue - ParameterId["StartOfWeekEnum"] = "startOfWeekEnum"; - // DPI_StartOfFiscalYear, having type FYSValues - ParameterId["StartOfFiscalYear"] = "startOfFiscalYear"; - // DPI_TotalsInclusionValue, having type TotalsInclusion - ParameterId["TotalsInclusionValue"] = "totalsInclusionValue"; - // DPI_FormatCode, having type FormatCode - ParameterId["FormatCode"] = "formatCode"; - // DPI_FindType, having type FindType - ParameterId["FindType"] = "findType"; - // DPI_PerspectiveType, having type PerspectiveType - ParameterId["PerspectiveType"] = "perspectiveType"; - // DPI_GeometryType, having type GeometryType - ParameterId["GeometryType"] = "geometryType"; - // DPI_PaneLabelComposition, having type PaneLabelComposition - ParameterId["PaneLabelComposition"] = "paneLabelComposition"; - // DPI_WarningType, having type WarningType - ParameterId["WarningType"] = "warningType"; - // DPI_UIMode, having type WorkbookUIMode - ParameterId["UIMode"] = "uiMode"; - // DPI_MenuItemId, having type TopLevelMenuItem - ParameterId["MenuItemId"] = "menuItemId"; - // DPI_CommandReturn, having type object - ParameterId["CommandReturn"] = "commandReturn"; - // DPI_LegacyPresModel, having type object - ParameterId["LegacyPresModel"] = "legacyPresModel"; - // DPI_PresentationModel, having type object - ParameterId["PresentationModel"] = "presModelHolder"; - // DPI_Event, having type object - ParameterId["Event"] = "eventContainer"; - // DPI_LineStyle, having type Array - ParameterId["LineStyle"] = "lineStyle"; - // DPI_StrokeStyle, having type Array - ParameterId["StrokeStyle"] = "strokeStyle"; - // DPI_Schema, having type Array - ParameterId["Schema"] = "schema"; - // DPI_StartTuple, having type Array - ParameterId["StartTuple"] = "startTuple"; - // DPI_EndTuple, having type Array - ParameterId["EndTuple"] = "endTuple"; - // DPI_Tuple, having type Array - ParameterId["Tuple"] = "tuple"; - // DPI_Tuples, having type Array[] - ParameterId["Tuples"] = "tuples"; - // DPI_CustomDomainTuples, having type Array[] - ParameterId["CustomDomainTuples"] = "customDomainTuples"; - // DPI_UpdatedTuples, having type Array[] - ParameterId["UpdatedTuples"] = "updatedTuples"; - // DPI_Table, having type Array - ParameterId["Table"] = "table"; - // DPI_AliasedValue, having type Array - ParameterId["AliasedValue"] = "valueAlias"; - // DPI_FirstAliasedValue, having type Array - ParameterId["FirstAliasedValue"] = "firstAlisedValue"; - // DPI_MaximumRange, having type Array - ParameterId["MaximumRange"] = "maximumRangeValue"; - // DPI_MinimumRange, having type Array - ParameterId["MinimumRange"] = "minimumRangeValue"; - // DPI_SecondAliasedValue, having type Array - ParameterId["SecondAliasedValue"] = "secondAlisedValue"; - // DPI_AliasedSelectionList, having type Array[] - ParameterId["AliasedSelectionList"] = "aliasedSelectionList"; - // DPI_AliasedValues, having type Array[] - ParameterId["AliasedValues"] = "valuesAliases"; - // DPI_VerboseAliasedRangeMax, having type Array - ParameterId["VerboseAliasedRangeMax"] = "verboseAliasedRangeMax"; - // DPI_VerboseAliasedValue, having type Array - ParameterId["VerboseAliasedValue"] = "verboseAliasedValue"; - // DPI_MultiBucket, having type MultiBucket - ParameterId["MultiBucket"] = "xValues"; - // DPI_PageName, having type PageName - ParameterId["PageName"] = "pageName"; - // DPI_Selector, having type object - ParameterId["Selector"] = "selector"; - // DPI_PaneId, having type object - ParameterId["PaneId"] = "paneId"; - // DPI_PaneIds, having type PaneId[] - ParameterId["PaneIds"] = "paneIds"; - // DPI_ImageRegionInfo, having type object - ParameterId["ImageRegionInfo"] = "vizRegionRect"; - // DPI_ImageRegionInfoList, having type object[] - ParameterId["ImageRegionInfoList"] = "vizRegionRectList"; - // DPI_VisualID, having type VisualID - ParameterId["VisualID"] = "visualId"; - // DPI_VisualIDPM, having type VisualIDPresModel - ParameterId["VisualIDPM"] = "visualIdPresModel"; - // DPI_InvalidSheets, having type VisualIDPresModel[] - ParameterId["InvalidSheets"] = "invalidSheets"; - // DPI_VisualIDPMs, having type VisualIDPresModel[] - ParameterId["VisualIDPMs"] = "visualIds"; - // DPI_SheetPathPM, having type SheetPathPresModel - ParameterId["SheetPathPM"] = "sheetPath"; - // DPI_CapturedSheetPM, having type SheetPathPresModel - ParameterId["CapturedSheetPM"] = "capturedSheetPm"; - // DPI_CurrentSheetPM, having type SheetPathPresModel - ParameterId["CurrentSheetPM"] = "currentSheetPm"; - // DPI_DashboardPM, having type SheetPathPresModel - ParameterId["DashboardPM"] = "dashboardPm"; - // DPI_NewSheetPM, having type SheetPathPresModel - ParameterId["NewSheetPM"] = "newSheetPm"; - // DPI_SheetNamePM, having type SheetPathPresModel - ParameterId["SheetNamePM"] = "sheetNamePm"; - // DPI_SheetPM, having type SheetPathPresModel - ParameterId["SheetPM"] = "sheetPm"; - // DPI_SourceDashboardPM, having type SheetPathPresModel - ParameterId["SourceDashboardPM"] = "sourceDashboardPm"; - // DPI_SourceSheetPM, having type SheetPathPresModel - ParameterId["SourceSheetPM"] = "sourceSheetPm"; - // DPI_TargetSheetPM, having type SheetPathPresModel - ParameterId["TargetSheetPM"] = "targetSheetPm"; - // DPI_WorksheetPM, having type SheetPathPresModel - ParameterId["WorksheetPM"] = "worksheetPm"; - // DPI_ModifiedSheets, having type SheetPathPresModel[] - ParameterId["ModifiedSheets"] = "modifiedSheets"; - // DPI_DataColumn, having type DataColumnPresModel - ParameterId["DataColumn"] = "dataColumn"; - // DPI_DataColumns, having type DataColumnPresModel[] - ParameterId["DataColumns"] = "dataColumns"; - // DPI_Addresses, having type DataColumnPresModel[] - ParameterId["Addresses"] = "addresses"; - // DPI_EncodingColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["EncodingColumns"] = "encodingColumns"; - // DPI_TextRunColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextRunColumns"] = "textRunColumns"; - // DPI_TextStyleColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextStyleColumns"] = "textStyleColumns"; - // DPI_NamedDataColumn, having type NamedDataColumnPresModel - ParameterId["NamedDataColumn"] = "namedDataColumn"; - // DPI_NamedDataColumns, having type NamedDataColumnPresModel[] - ParameterId["NamedDataColumns"] = "namedDataColumns"; - // DPI_DataTable, having type DataTablePresModel - ParameterId["DataTable"] = "dataTable"; - // DPI_ActionSpecification, having type None - ParameterId["ActionSpecification"] = "actionSpec"; - // DPI_Column, having type Column - ParameterId["Column"] = "columnContext"; - // DPI_SetFunction, having type SetFunction - ParameterId["SetFunction"] = "setFunction"; - // DPI_SetFunctions, having type SetFunctions - ParameterId["SetFunctions"] = "setFunctions"; - // DPI_VisualProfileShowMe, having type VisualProfileShowMe - ParameterId["VisualProfileShowMe"] = "vpsm"; - // DPI_DataSourcePtr, having type DataSource - ParameterId["DataSourcePtr"] = "datasourcePtr"; - // DPI_WorkgroupConnection, having type WorkgroupConnection - ParameterId["WorkgroupConnection"] = "workgroupConnection"; - // DPI_Authenticator, having type AuthenticatorRawPtr - ParameterId["Authenticator"] = "authenticator"; - // DPI_UpgradeAttr, having type UpgradeAttr - ParameterId["UpgradeAttr"] = "upgradeAttr"; - // DPI_ExtractAttr, having type ExtractAttr - ParameterId["ExtractAttr"] = "extractAttr"; - // DPI_RefreshAttr, having type RefreshAttr - ParameterId["RefreshAttr"] = "refreshAttr"; - // DPI_ContextSpecification, having type ContextSpecification - ParameterId["ContextSpecification"] = "contextSpecification"; - // DPI_SchemaViewerSelector, having type SchemaViewerSelectorPtr - ParameterId["SchemaViewerSelector"] = "schemaViewerSelector"; - // DPI_Buckets, having type Buckets - ParameterId["Buckets"] = "buckets"; - // DPI_LegendItems, having type MultiBuckets - ParameterId["LegendItems"] = "legendItems"; - // DPI_LegendItem, having type MultiBucket - ParameterId["LegendItem"] = "legendItem"; - // DPI_SourceItem, having type MultiBucket - ParameterId["SourceItem"] = "sourceItem"; - // DPI_DestItem, having type MultiBucket - ParameterId["DestItem"] = "destItem"; - // DPI_IQuickSortState, having type IQuickSortState - ParameterId["IQuickSortState"] = "quickSortState"; - // DPI_AppBuildDate, having type DateTime - ParameterId["AppBuildDate"] = "appBuildDate"; - // DPI_ForecastDateRangeEnd, having type DateTime - ParameterId["ForecastDateRangeEnd"] = "forecastDateRangeEnd"; - // DPI_ForecastDateRangeStart, having type DateTime - ParameterId["ForecastDateRangeStart"] = "forecastDateRangeStart"; - // DPI_LastModified, having type DateTime - ParameterId["LastModified"] = "lastModified"; - // DPI_SearchDomainPtr, having type MultiDomain - ParameterId["SearchDomainPtr"] = "searchDomainPtr"; - // DPI_ResultsDomainPtr, having type MultiDomain - ParameterId["ResultsDomainPtr"] = "resultsDomainPtr"; - // DPI_Actions, having type object - ParameterId["Actions"] = "actions"; - // DPI_SRCommands, having type object - ParameterId["SRCommands"] = "selectionRelaxationCommands"; - // DPI_Commands, having type object - ParameterId["Commands"] = "commands"; - // DPI_DataTypeCommands, having type object - ParameterId["DataTypeCommands"] = "datatypeCommands"; - // DPI_MultiSelectCommands, having type object - ParameterId["MultiSelectCommands"] = "multiselectCommands"; - // DPI_NonVizCommands, having type object - ParameterId["NonVizCommands"] = "nonVizCommands"; - // DPI_QuickFilterCommands, having type object - ParameterId["QuickFilterCommands"] = "quickFilterCommands"; - // DPI_ShowMeCommands, having type object - ParameterId["ShowMeCommands"] = "showMeCommands"; - // DPI_SortIndicatorMenu, having type object - ParameterId["SortIndicatorMenu"] = "sortIndicatorMenu"; - // DPI_StandardCommands, having type object - ParameterId["StandardCommands"] = "standardCommands"; - // DPI_VizCommands, having type object - ParameterId["VizCommands"] = "vizCommands"; - // DPI_ZoneChromeCommands, having type object - ParameterId["ZoneChromeCommands"] = "zoneChromeCommands"; - // DPI_CommandItem, having type CommandsItem - ParameterId["CommandItem"] = "commandItem"; - // DPI_CommandItems, having type CommandsItem[] - ParameterId["CommandItems"] = "commandItems"; - // DPI_Command, having type SimpleCommandsPresModel - ParameterId["Command"] = "simpleCommandModel"; - // DPI_AddCommand, having type SimpleCommandsPresModel - ParameterId["AddCommand"] = "addSimpleCommandModel"; - // DPI_RemoveCommand, having type SimpleCommandsPresModel - ParameterId["RemoveCommand"] = "removeSimpleCommandModel"; - // DPI_AcceptCommand, having type SimpleCommandsPresModel - ParameterId["AcceptCommand"] = "acceptSimpleCommandModel"; - // DPI_DeclineCommand, having type SimpleCommandsPresModel - ParameterId["DeclineCommand"] = "declineSimpleCommandModel"; - // DPI_DropCommand, having type SimpleCommandsPresModel - ParameterId["DropCommand"] = "dropCommandModel"; - // DPI_EditCaptionCommand, having type SimpleCommandsPresModel - ParameterId["EditCaptionCommand"] = "editCaptionCommandModel"; - // DPI_FontCommand, having type SimpleCommandsPresModel - ParameterId["FontCommand"] = "fontCommandModel"; - // DPI_LineStyleCommand, having type SimpleCommandsPresModel - ParameterId["LineStyleCommand"] = "lineStyleCommandModel"; - // DPI_FormatCommand, having type SimpleCommandsPresModel - ParameterId["FormatCommand"] = "formatCommandModel"; - // DPI_DestructorCommand, having type SimpleCommandsPresModel - ParameterId["DestructorCommand"] = "destructorCommand"; - // DPI_ClearFormatCommand, having type SimpleCommandsPresModel - ParameterId["ClearFormatCommand"] = "clearFormatCommandModel"; - // DPI_RichTextCommand, having type SimpleCommandsPresModel - ParameterId["RichTextCommand"] = "richTextCommandModel"; - // DPI_SortIndicatorCommand, having type SimpleCommandsPresModel - ParameterId["SortIndicatorCommand"] = "sortIndicatorCommand"; - // DPI_ResizeRowCommand, having type SimpleCommandsPresModel - ParameterId["ResizeRowCommand"] = "resizeRowCommandModel"; - // DPI_ResizeColCommand, having type SimpleCommandsPresModel - ParameterId["ResizeColCommand"] = "resizeColCommandModel"; - // DPI_CommandList, having type SimpleCommandsPresModel[] - ParameterId["CommandList"] = "commandList"; - // DPI_ParameterCtrl, having type ParameterCtrlPresModel - ParameterId["ParameterCtrl"] = "parameterControl"; - // DPI_ParameterCtrls, having type ParameterCtrlPresModel[] - ParameterId["ParameterCtrls"] = "parameterControls"; - // DPI_PageModel, having type PagePresModel - ParameterId["PageModel"] = "pageModel"; - // DPI_PageTrailOptions, having type PageTrailOptionsPresModel - ParameterId["PageTrailOptions"] = "pageTrailOptions"; - // DPI_Field, having type FieldPresModel - ParameterId["Field"] = "field"; - // DPI_FieldList, having type FieldPresModel[] - ParameterId["FieldList"] = "fieldList"; - // DPI_FieldColumn, having type FieldColumnPresModel - ParameterId["FieldColumn"] = "column"; - // DPI_FieldColumnList, having type FieldColumnPresModel[] - ParameterId["FieldColumnList"] = "columnList"; - // DPI_Parameter, having type ParameterPresModel - ParameterId["Parameter"] = "parameter"; - // DPI_Dimension, having type DimensionPresModel - ParameterId["Dimension"] = "dimension"; - // DPI_AttributeDimensionList, having type DimensionPresModel[] - ParameterId["AttributeDimensionList"] = "attributeDimensionList"; - // DPI_RelationalTable, having type RelationalTablePresModel - ParameterId["RelationalTable"] = "relationalTable"; - // DPI_DrillPath, having type DrillPathPresModel - ParameterId["DrillPath"] = "drillPath"; - // DPI_FieldFolder, having type FieldFolderPresModel - ParameterId["FieldFolder"] = "fieldFolder"; - // DPI_Group, having type GroupPresModel - ParameterId["Group"] = "group"; - // DPI_Hierarchy, having type HierarchyPresModel - ParameterId["Hierarchy"] = "hierarchy"; - // DPI_HierarchyList, having type HierarchyPresModel[] - ParameterId["HierarchyList"] = "hierarchyList"; - // DPI_HierarchyMemberSelectedState, having type HierarchySelect_MemberSelectedStatePresModel - ParameterId["HierarchyMemberSelectedState"] = "hierarchyMemberSelectedState"; - // DPI_HierarchySelectionChanges, having type HierarchySelect_MemberSelectedStatePresModel[] - ParameterId["HierarchySelectionChanges"] = "hierarchySelectionChanges"; - // DPI_DisplayFolder, having type DisplayFolderPresModel - ParameterId["DisplayFolder"] = "displayFolder"; - // DPI_DisplayFolderList, having type DisplayFolderPresModel[] - ParameterId["DisplayFolderList"] = "displayFolderList"; - // DPI_DataSourceLayout, having type DataSourceLayoutPresModel - ParameterId["DataSourceLayout"] = "dataSourceLayout"; - // DPI_DataSource, having type DataSourcePresModel - ParameterId["DataSource"] = "dataSource"; - // DPI_DataSources, having type Dictionary(of DataSourcePresModel) - ParameterId["DataSources"] = "dataSources"; - // DPI_DataSchema, having type DataSchemaPresModel - ParameterId["DataSchema"] = "dataSchema"; - // DPI_SheetListItem, having type SheetListItemPresModel - ParameterId["SheetListItem"] = "sheetListItem"; - // DPI_SheetListItems, having type SheetListItemPresModel[] - ParameterId["SheetListItems"] = "sheetListItems"; - // DPI_SheetList, having type SheetListPresModel - ParameterId["SheetList"] = "sheetList"; - // DPI_SizeModeOption, having type SizeModeOptionPresModel - ParameterId["SizeModeOption"] = "sizeModeOption"; - // DPI_SizeModeOptions, having type SizeModeOptionPresModel[] - ParameterId["SizeModeOptions"] = "sizeModeOptions"; - // DPI_DashboardSizeControl, having type DashboardSizeControlPresModel - ParameterId["DashboardSizeControl"] = "dashboardSizeControl"; - // DPI_DeviceLayoutInfoItem, having type DeviceLayoutInfoItemPresModel - ParameterId["DeviceLayoutInfoItem"] = "deviceLayoutInfoItem"; - // DPI_DeviceLayoutInfoItems, having type DeviceLayoutInfoItemPresModel[] - ParameterId["DeviceLayoutInfoItems"] = "deviceLayoutInfoItems"; - // DPI_DeviceLayoutInfoList, having type DeviceLayoutInfoListPresModel - ParameterId["DeviceLayoutInfoList"] = "deviceLayoutInfoList"; - // DPI_SpecializedDeviceLayoutItem, having type SpecializedDeviceLayoutItemPresModel - ParameterId["SpecializedDeviceLayoutItem"] = "specializedDeviceLayoutItem"; - // DPI_SpecializedDeviceLayoutItems, having type SpecializedDeviceLayoutItemPresModel[] - ParameterId["SpecializedDeviceLayoutItems"] = "specializedDeviceLayoutItems"; - // DPI_SpecializedDeviceLayoutList, having type SpecializedDeviceLayoutListPresModel - ParameterId["SpecializedDeviceLayoutList"] = "specializedDeviceLayoutList"; - // DPI_SizeItem, having type SizeItemPresModel - ParameterId["SizeItem"] = "sizeItem"; - // DPI_SizeItems, having type SizeItemPresModel[] - ParameterId["SizeItems"] = "sizeItems"; - // DPI_DeviceSizesList, having type SizeItemListPresModel - ParameterId["DeviceSizesList"] = "deviceSizesList"; - // DPI_PresetSizesList, having type SizeItemListPresModel - ParameterId["PresetSizesList"] = "presetSizesList"; - // DPI_SizeItemList, having type SizeItemListPresModel - ParameterId["SizeItemList"] = "sizeItemList"; - // DPI_SubstitutionKeyword, having type SubstitutionKeywordPresModel - ParameterId["SubstitutionKeyword"] = "substitutionKeyword"; - // DPI_SubstitutionKeywords, having type SubstitutionKeywordPresModel[] - ParameterId["SubstitutionKeywords"] = "substitutionKeywords"; - // DPI_SubstitutionKeywordSubList, having type SubstitutionKeywordSubListPresModel - ParameterId["SubstitutionKeywordSubList"] = "substitutionKeywordsSublist"; - // DPI_SubstitutionKeywordSubLists, having type SubstitutionKeywordSubListPresModel[] - ParameterId["SubstitutionKeywordSubLists"] = "substitutionKeywordSublists"; - // DPI_SubstitutionKeywordList, having type SubstitutionKeywordListPresModel - ParameterId["SubstitutionKeywordList"] = "substitutionKeywordsList"; - // DPI_DeviceZoneListItem, having type DeviceZoneListItemPresModel - ParameterId["DeviceZoneListItem"] = "deviceZoneListItem"; - // DPI_DeviceZoneListItems, having type DeviceZoneListItemPresModel[] - ParameterId["DeviceZoneListItems"] = "deviceZoneListItems"; - // DPI_DeviceZoneList, having type DeviceZoneListPresModel - ParameterId["DeviceZoneList"] = "deviceZoneList"; - // DPI_DashboardZoneHierarchy, having type DashboardZoneHierarchyPresModel - ParameterId["DashboardZoneHierarchy"] = "dashboardZoneHierarchy"; - // DPI_DeviceZoneVisibilityListItem, having type DeviceZoneVisibilityListItemPresModel - ParameterId["DeviceZoneVisibilityListItem"] = "deviceZoneVisibilityListItem"; - // DPI_DeviceZoneVisibilityListItems, having type DeviceZoneVisibilityListItemPresModel[] - ParameterId["DeviceZoneVisibilityListItems"] = "deviceZoneVisibilityListItems"; - // DPI_DeviceZoneVisibilityList, having type DeviceZoneVisibilityListPresModel - ParameterId["DeviceZoneVisibilityList"] = "deviceZoneVisibilityList"; - // DPI_WorksheetDataSchema, having type WorksheetDataSchemaPresModel - ParameterId["WorksheetDataSchema"] = "worksheetDataSchema"; - // DPI_WorksheetDataSchemaMap, having type Dictionary(of WorksheetDataSchemaPresModel) - ParameterId["WorksheetDataSchemaMap"] = "worksheetDataSchemaMap"; - // DPI_Shelf, having type ShelfPresModel - ParameterId["Shelf"] = "shelf"; - // DPI_ShelfDetail, having type ShelfPresModel - ParameterId["ShelfDetail"] = "shelfDetail"; - // DPI_ShelfList, having type ShelfPresModel[] - ParameterId["ShelfList"] = "shelfList"; - // DPI_ShelfItem, having type ShelfItemPresModel - ParameterId["ShelfItem"] = "shelfItem"; - // DPI_ShelfItems, having type ShelfItemPresModel[] - ParameterId["ShelfItems"] = "shelfItems"; - // DPI_Shelves, having type ShelvesPresModel - ParameterId["Shelves"] = "shelves"; - // DPI_FieldEncoding, having type FieldEncodingPresModel - ParameterId["FieldEncoding"] = "fieldEncoding"; - // DPI_FieldEncodings, having type FieldEncodingPresModel[] - ParameterId["FieldEncodings"] = "fieldEncodings"; - // DPI_UberTip, having type UberTipPresModel - ParameterId["UberTip"] = "uberTip"; - // DPI_AnalyticsObjectDragInfo, having type AnalyticsObjectDragInfoPresModel - ParameterId["AnalyticsObjectDragInfo"] = "analyticsObjectDragInfo"; - // DPI_TrendLine, having type TrendLinePresModel - ParameterId["TrendLine"] = "trendLine"; - // DPI_TrendLineDialog, having type TrendLineDialogPresModel - ParameterId["TrendLineDialog"] = "trendLineDialog"; - // DPI_TrendLineDescribePresModel, having type TrendLineDescribePresModel - ParameterId["TrendLineDescribePresModel"] = "trendLineDescribePresModel"; - // DPI_TrendLineAOVModelPresModel, having type TrendLineAOVModelPresModel - ParameterId["TrendLineAOVModelPresModel"] = "trendLineAovModelPresModel"; - // DPI_TrendLineAOVModelsPresModel, having type TrendLineAOVModelPresModel[] - ParameterId["TrendLineAOVModelsPresModel"] = "trendModelDescriptionVector"; - // DPI_TrendLineLineCoefficientPresModel, having type TrendLineLineCoefficientPresModel - ParameterId["TrendLineLineCoefficientPresModel"] = "trendLineLineCoefficient"; - // DPI_TrendLineLineCoefficientsPresModel, having type TrendLineLineCoefficientPresModel[] - ParameterId["TrendLineLineCoefficientsPresModel"] = "trendLineLineCoefficientsPresModel"; - // DPI_TrendLineLinesPresModel, having type TrendLineLinesPresModel - ParameterId["TrendLineLinesPresModel"] = "trendLineLinesPresModel"; - // DPI_TrendLineAOVPresModel, having type TrendLineAOVPresModel - ParameterId["TrendLineAOVPresModel"] = "trendLineAnovaPresModel"; - // DPI_ReferenceLine, having type ReferenceLinePresModel - ParameterId["ReferenceLine"] = "referenceLine"; - // DPI_ReferenceLines, having type ReferenceLinePresModel[] - ParameterId["ReferenceLines"] = "referenceLines"; - // DPI_PercentileEditDataValue, having type EditDataValuePresModel - ParameterId["PercentileEditDataValue"] = "percentileEditDataValue"; - // DPI_LimitEditDataValue, having type EditDataValuePresModel - ParameterId["LimitEditDataValue"] = "limitEditDataValue"; - // DPI_ConfidenceLevelCombo, having type EditValueWidgetPresModel - ParameterId["ConfidenceLevelCombo"] = "confidenceLevelCombo"; - // DPI_DistributionQuantilesCombo, having type EditValueWidgetPresModel - ParameterId["DistributionQuantilesCombo"] = "distributionQuantilesLevelCombo"; - // DPI_PercentilesCombo, having type EditValueWidgetPresModel - ParameterId["PercentilesCombo"] = "distributionPercentilesLevelCombo"; - // DPI_NumericBinSizeCombo, having type EditValueWidgetPresModel - ParameterId["NumericBinSizeCombo"] = "numericBinSizeCombo"; - // DPI_FieldPickerField, having type FieldPickerFieldPresModel - ParameterId["FieldPickerField"] = "fieldPickerField"; - // DPI_FieldPickerFields, having type FieldPickerFieldPresModel[] - ParameterId["FieldPickerFields"] = "fieldPickerFields"; - // DPI_FieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["FieldPickerCombo"] = "fieldPickerCombo"; - // DPI_PairedFieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["PairedFieldPickerCombo"] = "pairedFieldPickerCombo"; - // DPI_ReferenceLineEditorPresModel, having type ReferenceLineEditorPresModel - ParameterId["ReferenceLineEditorPresModel"] = "referenceLineEditor"; - // DPI_CloseDataSourceErrorDialogPresModel, having type CloseDataSourceErrorDialogPresModel - ParameterId["CloseDataSourceErrorDialogPresModel"] = "closeDsErrorDialog"; - // DPI_EditReferenceLine, having type EditReferenceLinePresModel - ParameterId["EditReferenceLine"] = "editReferenceLine"; - // DPI_EditReferenceBand, having type EditReferenceBandPresModel - ParameterId["EditReferenceBand"] = "editReferenceBand"; - // DPI_EditDistribution, having type EditDistributionPresModel - ParameterId["EditDistribution"] = "editDistribution"; - // DPI_DistributionPercentages, having type DistributionPercentagesPresModel - ParameterId["DistributionPercentages"] = "distributionPercentages"; - // DPI_DistributionPercentiles, having type DistributionPercentilesPresModel - ParameterId["DistributionPercentiles"] = "distributionPercentiles"; - // DPI_DistributionQuantiles, having type DistributionQuantilesPresModel - ParameterId["DistributionQuantiles"] = "distributionQuantiles"; - // DPI_DistributionStandardDeviation, having type DistributionStandardDeviationPresModel - ParameterId["DistributionStandardDeviation"] = "distributionStddev"; - // DPI_SortIndicators, having type SortIndicatorsPresModel - ParameterId["SortIndicators"] = "sortIndicators"; - // DPI_SortIndicatorRegion, having type SortIndicatorRegionPresModel - ParameterId["SortIndicatorRegion"] = "sortIndicatorRegion"; - // DPI_SortIndicatorRegions, having type SortIndicatorRegionPresModel[] - ParameterId["SortIndicatorRegions"] = "sortIndicatorRegions"; - // DPI_SortIndicatorItem, having type SortIndicatorItemPresModel - ParameterId["SortIndicatorItem"] = "sortIndicatorItem"; - // DPI_SortIndicatorItems, having type SortIndicatorItemPresModel[] - ParameterId["SortIndicatorItems"] = "sortIndicatorItems"; - // DPI_BuilderConfig, having type BuilderConfigPresModel - ParameterId["BuilderConfig"] = "builderConfig"; - // DPI_SheetLayoutInfo, having type SheetLayoutInfoPresModel - ParameterId["SheetLayoutInfo"] = "sheetLayoutInfo"; - // DPI_AreaRect, having type RectanglePresModel - ParameterId["AreaRect"] = "areaRect"; - // DPI_Border, having type RectanglePresModel - ParameterId["Border"] = "borderRect"; - // DPI_BoundsRect, having type RectanglePresModel - ParameterId["BoundsRect"] = "boundsRect"; - // DPI_ButtonRect, having type RectanglePresModel - ParameterId["ButtonRect"] = "buttonRect"; - // DPI_DragRect, having type RectanglePresModel - ParameterId["DragRect"] = "dragRect"; - // DPI_FocusRect, having type RectanglePresModel - ParameterId["FocusRect"] = "focusRect"; - // DPI_ImageTileRect, having type RectanglePresModel - ParameterId["ImageTileRect"] = "tileRect"; - // DPI_ItemRect, having type RectanglePresModel - ParameterId["ItemRect"] = "itemRect"; - // DPI_LabelRect, having type RectanglePresModel - ParameterId["LabelRect"] = "labelRect"; - // DPI_MarkRect, having type RectanglePresModel - ParameterId["MarkRect"] = "markRect"; - // DPI_MarkTooltipRect, having type RectanglePresModel - ParameterId["MarkTooltipRect"] = "markTooltipRect"; - // DPI_OutRegionRect, having type RectanglePresModel - ParameterId["OutRegionRect"] = "outRegionRect"; - // DPI_PaneRect, having type RectanglePresModel - ParameterId["PaneRect"] = "paneRect"; - // DPI_PixelExtents, having type RectanglePresModel - ParameterId["PixelExtents"] = "pixelExtents"; - // DPI_RectMaxLabel, having type RectanglePresModel - ParameterId["RectMaxLabel"] = "rectMaxLabel"; - // DPI_RectMinLabel, having type RectanglePresModel - ParameterId["RectMinLabel"] = "rectMinLabel"; - // DPI_RectRamp, having type RectanglePresModel - ParameterId["RectRamp"] = "rectRamp"; - // DPI_RectTitle, having type RectanglePresModel - ParameterId["RectTitle"] = "rectTitle"; - // DPI_RegionRect, having type RectanglePresModel - ParameterId["RegionRect"] = "regionRect"; - // DPI_SelectionRect, having type RectanglePresModel - ParameterId["SelectionRect"] = "selectionRect"; - // DPI_UnusedRect, having type RectanglePresModel - ParameterId["UnusedRect"] = "unusedRect"; - // DPI_ZoneEdgeRect, having type RectanglePresModel - ParameterId["ZoneEdgeRect"] = "zoneEdge"; - // DPI_ZoneEdgeRectPix, having type RectanglePresModel - ParameterId["ZoneEdgeRectPix"] = "zoneEdgePix"; - // DPI_ZoneEdgeRectPp, having type RectanglePresModel - ParameterId["ZoneEdgeRectPp"] = "zoneEdgePp"; - // DPI_UIAutomationLinkRect, having type RectanglePresModel - ParameterId["UIAutomationLinkRect"] = "linkRect"; - // DPI_Borders, having type RectanglePresModel[] - ParameterId["Borders"] = "borderRects"; - // DPI_UIAutomationLinkRects, having type RectanglePresModel[] - ParameterId["UIAutomationLinkRects"] = "linkRects"; - // DPI_DomainExtents, having type DoubleRectanglePresModel - ParameterId["DomainExtents"] = "domainExtents"; - // DPI_MapDomainExtents, having type DoubleRectanglePresModel - ParameterId["MapDomainExtents"] = "mapDomainExtents"; - // DPI_MapLatLongRect, having type MapRectPresModel - ParameterId["MapLatLongRect"] = "mapLatLongRect"; - // DPI_Center, having type PointPresModel - ParameterId["Center"] = "center"; - // DPI_CenterMarkLineBegin, having type PointPresModel - ParameterId["CenterMarkLineBegin"] = "centerMarkLineBegin"; - // DPI_CenterMarkLineEnd, having type PointPresModel - ParameterId["CenterMarkLineEnd"] = "centerMarkLineEnd"; - // DPI_DropLocation, having type PointPresModel - ParameterId["DropLocation"] = "dropLocation"; - // DPI_EndPt, having type PointPresModel - ParameterId["EndPt"] = "endPoint"; - // DPI_GrabLocation, having type PointPresModel - ParameterId["GrabLocation"] = "grabLocation"; - // DPI_GridOrigin, having type PointPresModel - ParameterId["GridOrigin"] = "gridOrigin"; - // DPI_LassoSelectionPoint, having type PointPresModel - ParameterId["LassoSelectionPoint"] = "lassoSelectionPoint"; - // DPI_MenuLocation, having type PointPresModel - ParameterId["MenuLocation"] = "menuLocation"; - // DPI_MoveOffset, having type PointPresModel - ParameterId["MoveOffset"] = "moveOffset"; - // DPI_OverlayAnchor, having type PointPresModel - ParameterId["OverlayAnchor"] = "overlayAnchor"; - // DPI_PanAmount, having type PointPresModel - ParameterId["PanAmount"] = "panAmount"; - // DPI_PanLocation, having type PointPresModel - ParameterId["PanLocation"] = "panLocation"; - // DPI_PaneResolverLocation, having type PointPresModel - ParameterId["PaneResolverLocation"] = "paneResolverLocation"; - // DPI_PixelExtentsOffset, having type PointPresModel - ParameterId["PixelExtentsOffset"] = "extentsOffset"; - // DPI_Point1, having type PointPresModel - ParameterId["Point1"] = "pt1"; - // DPI_Point2, having type PointPresModel - ParameterId["Point2"] = "pt2"; - // DPI_Point3, having type PointPresModel - ParameterId["Point3"] = "pt3"; - // DPI_RegionPoint, having type PointPresModel - ParameterId["RegionPoint"] = "regionPoint"; - // DPI_ScrollOffset, having type PointPresModel - ParameterId["ScrollOffset"] = "scrollOffset"; - // DPI_SelectAtPoint, having type PointPresModel - ParameterId["SelectAtPoint"] = "selectAtPoint"; - // DPI_SelectOffset, having type PointPresModel - ParameterId["SelectOffset"] = "selectOffset"; - // DPI_TargetPt, having type PointPresModel - ParameterId["TargetPt"] = "targetPoint"; - // DPI_TextOrigin, having type PointPresModel - ParameterId["TextOrigin"] = "textOrigin"; - // DPI_TooltipAnchorPoint, having type PointPresModel - ParameterId["TooltipAnchorPoint"] = "tooltipAnchorPoint"; - // DPI_TooltipOffset, having type PointPresModel - ParameterId["TooltipOffset"] = "tooltipOffset"; - // DPI_VizLocation, having type PointPresModel - ParameterId["VizLocation"] = "vizLocation"; - // DPI_ZoomAnchorPoint, having type PointPresModel - ParameterId["ZoomAnchorPoint"] = "zoomAnchorPoint"; - // DPI_OverlayAnchors, having type PointPresModel[] - ParameterId["OverlayAnchors"] = "overlayAnchors"; - // DPI_LassoSelection, having type PointPresModel[] - ParameterId["LassoSelection"] = "lassoSelection"; - // DPI_ScrollOffsetPoints, having type PointPresModel[] - ParameterId["ScrollOffsetPoints"] = "scrollOffsetPoints"; - // DPI_RadialSelection, having type CirclePresModel - ParameterId["RadialSelection"] = "radialSelection"; - // DPI_DomainOrigin, having type FloatPointPresModel - ParameterId["DomainOrigin"] = "domainOrigin"; - // DPI_FloatCenter, having type FloatPointPresModel - ParameterId["FloatCenter"] = "floatCenter"; - // DPI_FloatPoint, having type FloatPointPresModel - ParameterId["FloatPoint"] = "floatPoint"; - // DPI_ClientAvailableSpace, having type SizePresModel - ParameterId["ClientAvailableSpace"] = "clientAvailableSpace"; - // DPI_DashboardPortSize, having type SizePresModel - ParameterId["DashboardPortSize"] = "dashboardPort"; - // DPI_LegendSize, having type SizePresModel - ParameterId["LegendSize"] = "legendSize"; - // DPI_StoryPortSize, having type SizePresModel - ParameterId["StoryPortSize"] = "storyPort"; - // DPI_SwatchAreaSize, having type SizePresModel - ParameterId["SwatchAreaSize"] = "areaSize"; - // DPI_SwatchImageSize, having type SizePresModel - ParameterId["SwatchImageSize"] = "imageSize"; - // DPI_ViewportSize, having type SizePresModel - ParameterId["ViewportSize"] = "viewportSize"; - // DPI_WorksheetPortSize, having type SizePresModel - ParameterId["WorksheetPortSize"] = "worksheetPort"; - // DPI_ResizeEntity, having type ResizeEntityPresModel - ParameterId["ResizeEntity"] = "resizeEntity"; - // DPI_RowResizers, having type ResizeEntityPresModel[] - ParameterId["RowResizers"] = "rowResizers"; - // DPI_ColResizers, having type ResizeEntityPresModel[] - ParameterId["ColResizers"] = "colResizers"; - // DPI_ResizeInfoPresModel, having type ResizeInfoPresModel - ParameterId["ResizeInfoPresModel"] = "resizeInfo"; - // DPI_ServerSheet, having type ServerSheetPresModel - ParameterId["ServerSheet"] = "serverSheet"; - // DPI_ServerSheets, having type ServerSheetPresModel[] - ParameterId["ServerSheets"] = "serverSheets"; - // DPI_SheetInfo, having type SheetInfoPresModel - ParameterId["SheetInfo"] = "sheetInfo"; - // DPI_SheetsInfo, having type SheetInfoPresModel[] - ParameterId["SheetsInfo"] = "sheetsInfo"; - // DPI_ServerWorkbook, having type ServerWorkbookPresModel - ParameterId["ServerWorkbook"] = "serverWorkbook"; - // DPI_PDFExportOptionsPresModel, having type PDFExportOptionsPresModel - ParameterId["PDFExportOptionsPresModel"] = "pdfExport"; - // DPI_ExportFileResultPresModel, having type ExportFileResultPresModel - ParameterId["ExportFileResultPresModel"] = "pdfResult"; - // DPI_PDFSheet, having type PDFSheetPresModel - ParameterId["PDFSheet"] = "pdfSheet"; - // DPI_SheetOptions, having type PDFSheetPresModel[] - ParameterId["SheetOptions"] = "sheetOptions"; - // DPI_ExportLayoutOptions, having type ExportLayoutOptionsPresModel - ParameterId["ExportLayoutOptions"] = "exportLayoutOptions"; - // DPI_DataAlertConditionOperationType, having type DataAlertConditionOperationType - ParameterId["DataAlertConditionOperationType"] = "dataAlertConditionOp"; - // DPI_DataAlertDialogPresModel, having type DataAlertDialogPresModel - ParameterId["DataAlertDialogPresModel"] = "dataAlertDialogPresModel"; - // DPI_DataAlertMeasure, having type DataAlertMeasurePresModel - ParameterId["DataAlertMeasure"] = "dataAlertMeasure"; - // DPI_DataAlertMeasures, having type DataAlertMeasurePresModel[] - ParameterId["DataAlertMeasures"] = "dataAlertMeasures"; - // DPI_DataAlertConstantCondition, having type DataAlertConstantConditionPresModel - ParameterId["DataAlertConstantCondition"] = "dataAlertConstantCondition"; - // DPI_DataAlertDialogMode, having type DataAlertDialogMode - ParameterId["DataAlertDialogMode"] = "dataAlertDialogMode"; - // DPI_LightweightMapOptions, having type LightweightMapOptionsPresModel - ParameterId["LightweightMapOptions"] = "lightweightMapOptions"; - // DPI_DataHighlighter, having type DataHighlighterPresModel - ParameterId["DataHighlighter"] = "dataHighlighter"; - // DPI_DataHighlighterItemSet, having type DataHighlighterItemSetPresModel - ParameterId["DataHighlighterItemSet"] = "dataHighlighterItemSet"; - // DPI_DataHighlighterItem, having type DataHighlighterItemPresModel - ParameterId["DataHighlighterItem"] = "dataHighlighterItem"; - // DPI_DataHighlighterItems, having type DataHighlighterItemPresModel[] - ParameterId["DataHighlighterItems"] = "dataHighlighterItems"; - // DPI_CategoricalLegendLayout, having type CategoricalLegendLayoutPresModel - ParameterId["CategoricalLegendLayout"] = "catLegendLayout"; - // DPI_CategoricalLegend, having type CategoricalLegendPresModel - ParameterId["CategoricalLegend"] = "categoricalLegend"; - // DPI_CategoricalLegends, having type CategoricalLegendPresModel[] - ParameterId["CategoricalLegends"] = "categoricalLegends"; - // DPI_CategoricalColorLegend, having type CategoricalColorLegendPresModel - ParameterId["CategoricalColorLegend"] = "colorLegend"; - // DPI_ColorLegendItem, having type CategoricalColorLegendItemPresModel - ParameterId["ColorLegendItem"] = "colorLegendItem"; - // DPI_ColorLegendItems, having type CategoricalColorLegendItemPresModel[] - ParameterId["ColorLegendItems"] = "colorLegendItems"; - // DPI_CategoricalShapeLegend, having type CategoricalShapeLegendPresModel - ParameterId["CategoricalShapeLegend"] = "categoricalShapeLegend"; - // DPI_ShapeLegendItem, having type CategoricalShapeLegendItemPresModel - ParameterId["ShapeLegendItem"] = "shapeLegendItem"; - // DPI_ShapeLegendItems, having type CategoricalShapeLegendItemPresModel[] - ParameterId["ShapeLegendItems"] = "shapeLegendItems"; - // DPI_CategoricalHighlightLegend, having type CategoricalHighlightLegendPresModel - ParameterId["CategoricalHighlightLegend"] = "categoricalHighlightLegend"; - // DPI_HighlightLegendItem, having type CategoricalLegendItemPresModel - ParameterId["HighlightLegendItem"] = "highlightLegendItem"; - // DPI_HighlightLegendItems, having type CategoricalLegendItemPresModel[] - ParameterId["HighlightLegendItems"] = "highlightLegendItems"; - // DPI_CategoricalSizeLegend, having type CategoricalSizeLegendPresModel - ParameterId["CategoricalSizeLegend"] = "categoricalSizeLegend"; - // DPI_SizeLegendItem, having type CategoricalSizeLegendItemPresModel - ParameterId["SizeLegendItem"] = "sizeLegendItem"; - // DPI_SizeLegendItems, having type CategoricalSizeLegendItemPresModel[] - ParameterId["SizeLegendItems"] = "sizeLegendItems"; - // DPI_CategoricalMapLegend, having type CategoricalMapLegendPresModel - ParameterId["CategoricalMapLegend"] = "categoricalMapLegend"; - // DPI_QuantitativeColorLegend, having type QuantitativeColorLegendPresModel - ParameterId["QuantitativeColorLegend"] = "quantitativeColorLegend"; - // DPI_QuantitativeColorLegends, having type QuantitativeColorLegendPresModel[] - ParameterId["QuantitativeColorLegends"] = "quantitativeColorLegends"; - // DPI_QuantitativeLegendLayout, having type QuantitativeLegendLayoutPresModel - ParameterId["QuantitativeLegendLayout"] = "quantitativeLegendLayout"; - // DPI_ServerRenderedLegend, having type ServerRenderedLegendPresModel - ParameterId["ServerRenderedLegend"] = "serverRenderedLegend"; - // DPI_CategoricalFilter, having type CategoricalFilterPresModel - ParameterId["CategoricalFilter"] = "categoricalFilter"; - // DPI_CategoricalFilterRelational, having type CategoricalFilterRelationalPresModel - ParameterId["CategoricalFilterRelational"] = "categoricalFilterRelational"; - // DPI_CategoricalFilterMemberDomainPage, having type CategoricalFilterMemberDomainPagePresModel - ParameterId["CategoricalFilterMemberDomainPage"] = "categoricalFilterMemberDomainPage"; - // DPI_CategoricalFilterCacheInfo, having type CategoricalFilterCacheInfoPresModel - ParameterId["CategoricalFilterCacheInfo"] = "categoricalFilterCacheInfo"; - // DPI_CategoricalFilterPatternDisplay, having type CategoricalFilterPatternDisplayPresModel - ParameterId["CategoricalFilterPatternDisplay"] = "categoricalFilterPatternDisplay"; - // DPI_CategoricalFilterPatternUpdate, having type CategoricalFilterPatternUpdatePresModel - ParameterId["CategoricalFilterPatternUpdate"] = "categoricalFilterPatternUpdate"; - // DPI_CategoricalFilterConditionDisplay, having type CategoricalFilterConditionDisplayPresModel - ParameterId["CategoricalFilterConditionDisplay"] = "categoricalFilterConditionDisplay"; - // DPI_CategoricalFilterConditionUpdate, having type CategoricalFilterConditionUpdatePresModel - ParameterId["CategoricalFilterConditionUpdate"] = "categoricalFilterConditionUpdate"; - // DPI_CategoricalFilterLimitDisplay, having type CategoricalFilterLimitDisplayPresModel - ParameterId["CategoricalFilterLimitDisplay"] = "categoricalFilterLimitDisplay"; - // DPI_CategoricalFilterLimitUpdate, having type CategoricalFilterLimitUpdatePresModel - ParameterId["CategoricalFilterLimitUpdate"] = "categoricalFilterLimitUpdate"; - // DPI_CategoricalFilterNew, having type CategoricalFilter_NewPresModel - ParameterId["CategoricalFilterNew"] = "categoricalFilterNew"; - // DPI_CategoricalFilterHierarchy, having type CategoricalFilterHierarchyPresModel - ParameterId["CategoricalFilterHierarchy"] = "categoricalFilterHirerarchy"; - // DPI_CategoricalFilterUpdate, having type CategoricalFilterUpdatePresModel - ParameterId["CategoricalFilterUpdate"] = "categoricalFilterUpdate"; - // DPI_CategoricalFilterRelationalState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalState"] = "categoricalRelationalState"; - // DPI_CategoricalFilterRelationalUpdatedState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalUpdatedState"] = "categoricalRelationalUpdatedState"; - // DPI_CategoricalFilterRelationalDomainInfo, having type CategoricalFilterRelationalDomainInfoPresModel - ParameterId["CategoricalFilterRelationalDomainInfo"] = "categoricalFilterRelationalDomainInfo"; - // DPI_CategoricalFilterRelationalDisplay, having type CategoricalFilterRelationalDisplayPresModel - ParameterId["CategoricalFilterRelationalDisplay"] = "categoricalFilterRelationalDisplay"; - // DPI_ExpressionToken, having type ExpressionTokenPresModel - ParameterId["ExpressionToken"] = "expressionToken"; - // DPI_ExpressionTokens, having type ExpressionTokenPresModel[] - ParameterId["ExpressionTokens"] = "expressionTokens"; - // DPI_FormulaValidation, having type FormulaValidationPresModel - ParameterId["FormulaValidation"] = "formulaValidation"; - // DPI_ValidationResults, having type ValidationResultsPresModel - ParameterId["ValidationResults"] = "validationResults"; - // DPI_DomainMember, having type DomainMemberPresModel - ParameterId["DomainMember"] = "domainMember"; - // DPI_DomainMembers, having type DomainMemberPresModel[] - ParameterId["DomainMembers"] = "domainMembers"; - // DPI_QuickFilterDisplay, having type QuickFilterDisplayPresModel - ParameterId["QuickFilterDisplay"] = "quickFilterDisplay"; - // DPI_QuickFilter, having type QuickFilterPresModel - ParameterId["QuickFilter"] = "quickFilter"; - // DPI_QuantitativeQuickFilter, having type QuantitativeQuickFilterPresModel - ParameterId["QuantitativeQuickFilter"] = "quantitativeQuickFilter"; - // DPI_RelativeDateQuickFilter, having type RelativeDateQuickFilterPresModel - ParameterId["RelativeDateQuickFilter"] = "relativeDateQuickFilter"; - // DPI_CategoricalQuickFilter, having type CategoricalQuickFilterPresModel - ParameterId["CategoricalQuickFilter"] = "categoricalQuickFilter"; - // DPI_HierarchicalQuickFilter, having type HierarchicalQuickFilterPresModel - ParameterId["HierarchicalQuickFilter"] = "hierarchicalQuickFilter"; - // DPI_DomainTable, having type DomainTablePresModel - ParameterId["DomainTable"] = "domainTable"; - // DPI_DomainTables, having type DomainTablePresModel[] - ParameterId["DomainTables"] = "domainTables"; - // DPI_DomainTuples, having type Tuples - ParameterId["DomainTuples"] = "domainTuples"; - // DPI_SearchTuples, having type Tuples - ParameterId["SearchTuples"] = "searchTuples"; - // DPI_SelectedTuples, having type TupleHash - ParameterId["SelectedTuples"] = "selectedTuples"; - // DPI_PendingTuples, having type TupleHash - ParameterId["PendingTuples"] = "pendingTuples"; - // DPI_Domain, having type MultiDomain - ParameterId["Domain"] = "domain"; - // DPI_DateOption, having type DateBinDialogOptionPresModel - ParameterId["DateOption"] = "dateOption"; - // DPI_DateOptions, having type DateBinDialogOptionPresModel[] - ParameterId["DateOptions"] = "dateOptions"; - // DPI_FilterRangeAdd, having type FilterRangePresModel - ParameterId["FilterRangeAdd"] = "filterRangeAdd"; - // DPI_FilterRangeRemove, having type FilterRangePresModel - ParameterId["FilterRangeRemove"] = "filterRangeRemove"; - // DPI_FilterOptions, having type FilterOptionsPresModel - ParameterId["FilterOptions"] = "filterOptions"; - // DPI_Layer, having type LayerPresModel - ParameterId["Layer"] = "layer"; - // DPI_Layers, having type LayerPresModel[] - ParameterId["Layers"] = "layers"; - // DPI_MarksCardPresModel, having type MarksCardPresModel - ParameterId["MarksCardPresModel"] = "marksCardPresModel"; - // DPI_UIItem, having type UIItemPresModel - ParameterId["UIItem"] = "uiItem"; - // DPI_EncodingUIItem, having type EncodingUIItemPresModel - ParameterId["EncodingUIItem"] = "encodingUiItem"; - // DPI_EncodingUIItems, having type EncodingUIItemPresModel[] - ParameterId["EncodingUIItems"] = "encodingUiItems"; - // DPI_PrimTypeUIItem, having type PrimitiveTypeUIItemPresModel - ParameterId["PrimTypeUIItem"] = "primitiveTypeUiItem"; - // DPI_PrimTypeUIItems, having type PrimitiveTypeUIItemPresModel[] - ParameterId["PrimTypeUIItems"] = "primitiveTypeUiItems"; - // DPI_PrimitiveTypeUIItemOptions, having type PrimitiveTypeUIItemOptionsPresModel - ParameterId["PrimitiveTypeUIItemOptions"] = "primitiveTypeUiItemOptions"; - // DPI_LineUIItemOptions, having type LineUIItemOptionsPresModel - ParameterId["LineUIItemOptions"] = "lineUiItemOptions"; - // DPI_LineInterpolationModeUIItem, having type LineInterpolationModeUIItemPresModel - ParameterId["LineInterpolationModeUIItem"] = "lineInterpolationModeUiItem"; - // DPI_LineInterpolationModeUIItemSet, having type LineInterpolationModeUIItemPresModel[] - ParameterId["LineInterpolationModeUIItemSet"] = "lineInterpolationModeUiItemSet"; - // DPI_LineMarkerPositionUIItem, having type LineMarkerPositionUIItemPresModel - ParameterId["LineMarkerPositionUIItem"] = "lineMarkerPositionUiItem"; - // DPI_LineMarkerPositionUIItemSet, having type LineMarkerPositionUIItemPresModel[] - ParameterId["LineMarkerPositionUIItemSet"] = "lineMarkerPositionUiItemSet"; - // DPI_MarksCardDropdownItem, having type MarksCardDropdownItemPresModel - ParameterId["MarksCardDropdownItem"] = "marksCardDropdownItem"; - // DPI_TooltipDropdownItem, having type TooltipDropdownItemPresModel - ParameterId["TooltipDropdownItem"] = "tooltipDropdownItem"; - // DPI_TextDropdownItem, having type TextDropdownItemPresModel - ParameterId["TextDropdownItem"] = "textDropdownItem"; - // DPI_ColorDropdownItem, having type ColorDropdownItemPresModel - ParameterId["ColorDropdownItem"] = "colorDropdownItem"; - // DPI_SizeSliderPresModel, having type SizeSliderPresModel - ParameterId["SizeSliderPresModel"] = "sizeSliderPresModel"; - // DPI_InflectionPoint, having type InflectionPointPresModel - ParameterId["InflectionPoint"] = "inflectionPoint"; - // DPI_InflectionPoints, having type InflectionPointPresModel[] - ParameterId["InflectionPoints"] = "inflectionPoints"; - // DPI_Notch, having type NotchPresModel - ParameterId["Notch"] = "notch"; - // DPI_Notches, having type NotchPresModel[] - ParameterId["Notches"] = "notches"; - // DPI_MarkSizeOptionsPresModel, having type MarkSizeOptionsPresModel - ParameterId["MarkSizeOptionsPresModel"] = "markSizeOptionsPresModel"; - // DPI_ModifyMarksInSet, having type AddOrRemoveMarks - ParameterId["ModifyMarksInSet"] = "addOrRemoveMarks"; - // DPI_MarkLabelsSpecification, having type MarkLabelsSpecificationPresModel - ParameterId["MarkLabelsSpecification"] = "markLabelsSpecification"; - // DPI_ColorPalette, having type ColorPalettePresModel - ParameterId["ColorPalette"] = "colorPalette"; - // DPI_SelectedColorPalette, having type ColorPalettePresModel - ParameterId["SelectedColorPalette"] = "selectedColorPalette"; - // DPI_ColorPalettes, having type ColorPalettePresModel[] - ParameterId["ColorPalettes"] = "colorPalettes"; - // DPI_ColorPaletteGroup, having type ColorPaletteGroupPresModel - ParameterId["ColorPaletteGroup"] = "colorPaletteGroup"; - // DPI_CatColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["CatColorPaletteGroups"] = "catColorPaletteGroups"; - // DPI_QColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["QColorPaletteGroups"] = "qColorPaletteGroups"; - // DPI_ColorPaletteCollection, having type ColorPaletteCollectionPresModel - ParameterId["ColorPaletteCollection"] = "colorPaletteCollection"; - // DPI_QuantitativeColor, having type QuantitativeColorPresModel - ParameterId["QuantitativeColor"] = "quantitativeColor"; - // DPI_CategoricalColor, having type CategoricalColorPresModel - ParameterId["CategoricalColor"] = "categoricalColor"; - // DPI_ItemColorPair, having type ItemColorPairPresModel - ParameterId["ItemColorPair"] = "itemColorPair"; - // DPI_ItemColorPairs, having type ItemColorPairPresModel[] - ParameterId["ItemColorPairs"] = "itemColorPairs"; - // DPI_VQLCommandResponse, having type VQLCommandResponsePresModel - ParameterId["VQLCommandResponse"] = "vqlCmdResponse"; - // DPI_LayoutStatus, having type LayoutStatusPresModel - ParameterId["LayoutStatus"] = "layoutStatus"; - // DPI_VizState, having type VizStatePresModel - ParameterId["VizState"] = "vizState"; - // DPI_VizStateList, having type VizStatePresModel[] - ParameterId["VizStateList"] = "vizStateList"; - // DPI_CommandResult, having type CommandResultPresModel - ParameterId["CommandResult"] = "cmdResult"; - // DPI_CommandResultList, having type CommandResultPresModel[] - ParameterId["CommandResultList"] = "cmdResultList"; - // DPI_URLAction, having type URLActionPresModel - ParameterId["URLAction"] = "urlAction"; - // DPI_URLActionList, having type URLActionPresModel[] - ParameterId["URLActionList"] = "urlActionList"; - // DPI_LegacyMenu, having type LegacyMenuPresModel - ParameterId["LegacyMenu"] = "legacyMenu"; - // DPI_LegacyMenus, having type LegacyMenuPresModel[] - ParameterId["LegacyMenus"] = "legacyMenus"; - // DPI_ConnectionAttemptInfo, having type ConnectionAttemptInfoPresModel - ParameterId["ConnectionAttemptInfo"] = "connectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfo, having type DataSourceConnectionAttemptInfoPresModel - ParameterId["DataSourceConnectionAttemptInfo"] = "dataSourceConnectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfos, having type DataSourceConnectionAttemptInfoPresModel[] - ParameterId["DataSourceConnectionAttemptInfos"] = "dataSourceConnectionAttemptInfos"; - // DPI_CommandValidationPresModel, having type CommandValidationPresModel - ParameterId["CommandValidationPresModel"] = "commandValidationPresModel"; - // DPI_WarningMessage, having type WarningMessagePresModel - ParameterId["WarningMessage"] = "warningMessagePresModel"; - // DPI_ApplicationPresModel, having type ApplicationPresModel - ParameterId["ApplicationPresModel"] = "applicationPresModel"; - // DPI_ToolbarPresModel, having type ToolbarPresModel - ParameterId["ToolbarPresModel"] = "toolbarPresModel"; - // DPI_WorkbookPresModel, having type WorkbookPresModel - ParameterId["WorkbookPresModel"] = "workbookPresModel"; - // DPI_ServerFonts, having type ServerFontsPresModel - ParameterId["ServerFonts"] = "serverFonts"; - // DPI_PublishDataSourceMetadataPresModel, having type PublishDataSourceMetadataPresModel - ParameterId["PublishDataSourceMetadataPresModel"] = "publishDataSourceMetadataPresModel"; - // DPI_DashboardPresModel, having type DashboardPresModel - ParameterId["DashboardPresModel"] = "dashboardPresModel"; - // DPI_DashboardSizePresModel, having type DashboardSizePresModel - ParameterId["DashboardSizePresModel"] = "dashboardSizePresModel"; - // DPI_DashboardSizeWithValidationPresModel, having type DashboardSizeWithValidationPresModel - ParameterId["DashboardSizeWithValidationPresModel"] = "dashboardSizeWithValidationPresModel"; - // DPI_DashboardInfoPresModel, having type DashboardInfoPresModel - ParameterId["DashboardInfoPresModel"] = "dashboardInfoPresModel"; - // DPI_VisualPresModel, having type VisualPresModel - ParameterId["VisualPresModel"] = "visual"; - // DPI_VisualPresModels, having type VisualPresModel[] - ParameterId["VisualPresModels"] = "visuals"; - // DPI_DropLinesPresModel, having type DropLinesPresModel - ParameterId["DropLinesPresModel"] = "dropLinesPresModel"; - // DPI_DropFieldPresModel, having type DropFieldPresModel - ParameterId["DropFieldPresModel"] = "dropFieldPresModel"; - // DPI_DropFieldResultPresModel, having type DropFieldResultPresModel - ParameterId["DropFieldResultPresModel"] = "dropFieldResultPresModel"; - // DPI_CurrentAxisRange, having type DataValueRangePresModel - ParameterId["CurrentAxisRange"] = "currentAxisRange"; - // DPI_DefaultAxisRange, having type DataValueRangePresModel - ParameterId["DefaultAxisRange"] = "defaultAxisRange"; - // DPI_NewAxisRange, having type DataValueRangePresModel - ParameterId["NewAxisRange"] = "newAxisRange"; - // DPI_AxisOptions, having type AxisOptionsPresModel - ParameterId["AxisOptions"] = "axis"; - // DPI_AxisMajorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMajorTicks"] = "axisMajorTicks"; - // DPI_AxisMinorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMinorTicks"] = "axisMinorTicks"; - // DPI_EditAxisDialog, having type EditAxisDialogPresModel - ParameterId["EditAxisDialog"] = "editAxisDialog"; - // DPI_MarkLabels, having type ScenePresModel - ParameterId["MarkLabels"] = "markLabels"; - // DPI_Scene, having type ScenePresModel - ParameterId["Scene"] = "scene"; - // DPI_MapServer, having type MapServerPresModel - ParameterId["MapServer"] = "mapServer"; - // DPI_VisualList, having type VisualListPresModel - ParameterId["VisualList"] = "visualList"; - // DPI_DrawFirst, having type VisualListPresModel[] - ParameterId["DrawFirst"] = "drawFirst"; - // DPI_DrawLast, having type VisualListPresModel[] - ParameterId["DrawLast"] = "drawLast"; - // DPI_DrawPane, having type VisualListPresModel[] - ParameterId["DrawPane"] = "drawPane"; - // DPI_UserPaneInfo, having type UserPaneInfoPresModel - ParameterId["UserPaneInfo"] = "userPaneInfo"; - // DPI_AnalyticsPane, having type AnalyticsPanePresModel - ParameterId["AnalyticsPane"] = "analyticsPane"; - // DPI_AnalyticsObjectItem, having type AnalyticsObjectItemPresModel - ParameterId["AnalyticsObjectItem"] = "analyticsObjectItem"; - // DPI_AnalyticsObjectItems, having type AnalyticsObjectItemPresModel[] - ParameterId["AnalyticsObjectItems"] = "analyticsObjectItems"; - // DPI_AnalyticsObjectGroup, having type AnalyticsObjectGroupPresModel - ParameterId["AnalyticsObjectGroup"] = "analyticsObjectGroup"; - // DPI_AnalyticsObjectGroups, having type AnalyticsObjectGroupPresModel[] - ParameterId["AnalyticsObjectGroups"] = "analyticsObjectGroups"; - // DPI_DropZoneItem, having type DropZoneItemPresModel - ParameterId["DropZoneItem"] = "dropZoneItem"; - // DPI_DropZoneItems, having type DropZoneItemPresModel[] - ParameterId["DropZoneItems"] = "dropZoneItems"; - // DPI_DropTargetInfo, having type DropTargetInfoPresModel - ParameterId["DropTargetInfo"] = "dropTargetInfo"; - // DPI_Pane, having type PanePresModel - ParameterId["Pane"] = "pane"; - // DPI_Panes, having type PanePresModel[] - ParameterId["Panes"] = "panes"; - // DPI_RadialSelectionDistanceInfo, having type RadialSelectionDistanceInfoPresModel - ParameterId["RadialSelectionDistanceInfo"] = "radialSelectionDistanceInfo"; - // DPI_MapScaleInfo, having type MapScaleInfoPresModel - ParameterId["MapScaleInfo"] = "mapScaleInfo"; - // DPI_RenderNode, having type RenderNodePresModel - ParameterId["RenderNode"] = "renderNode"; - // DPI_RenderNodes, having type RenderNodePresModel[] - ParameterId["RenderNodes"] = "renderNodes"; - // DPI_PredictionBand, having type PredictionBandPresModel - ParameterId["PredictionBand"] = "predictionBand"; - // DPI_PredictionWhisker, having type PredictionWhiskerPresModel - ParameterId["PredictionWhisker"] = "predictionWhisker"; - // DPI_DrawGroup, having type DrawPointsPresModel - ParameterId["DrawGroup"] = "drawGroup"; - // DPI_ClipReset, having type DrawItemPresModel - ParameterId["ClipReset"] = "clipReset"; - // DPI_DrawItem, having type DrawItemPresModel - ParameterId["DrawItem"] = "drawItem"; - // DPI_TransformPop, having type DrawItemPresModel - ParameterId["TransformPop"] = "transformPop"; - // DPI_TransformPush, having type DrawItemPresModel - ParameterId["TransformPush"] = "transformPush"; - // DPI_DrawItems, having type DrawItemPresModel[] - ParameterId["DrawItems"] = "drawItems"; - // DPI_ClipRect, having type DrawPointsPresModel - ParameterId["ClipRect"] = "clipRect"; - // DPI_DrawEllipse, having type DrawPointsPresModel - ParameterId["DrawEllipse"] = "drawEllipse"; - // DPI_DrawFillEllipse, having type DrawPointsPresModel - ParameterId["DrawFillEllipse"] = "drawFillEllipse"; - // DPI_DrawFillPolygon, having type DrawPointsPresModel - ParameterId["DrawFillPolygon"] = "drawFillPolygon"; - // DPI_DrawFillRect, having type DrawPointsPresModel - ParameterId["DrawFillRect"] = "drawFillRect"; - // DPI_DrawPolygon, having type DrawPointsPresModel - ParameterId["DrawPolygon"] = "drawPolygon"; - // DPI_DrawPolyline, having type DrawPointsPresModel - ParameterId["DrawPolyline"] = "drawPolyline"; - // DPI_DrawRect, having type DrawPointsPresModel - ParameterId["DrawRect"] = "drawRect"; - // DPI_DrawFillPath, having type DrawPathPresModel - ParameterId["DrawFillPath"] = "drawFillPath"; - // DPI_DrawPath, having type DrawPathPresModel - ParameterId["DrawPath"] = "drawPath"; - // DPI_DrawText, having type DrawTextPresModel - ParameterId["DrawText"] = "drawText"; - // DPI_DrawImage, having type DrawImagePresModel - ParameterId["DrawImage"] = "drawImage"; - // DPI_ImageTileInfo, having type ImageTileInfoPresModel - ParameterId["ImageTileInfo"] = "tileInfo"; - // DPI_ImageTileInfos, having type ImageTileInfoPresModel[] - ParameterId["ImageTileInfos"] = "tileInfos"; - // DPI_DrawImageTiles, having type DrawImageTilesPresModel - ParameterId["DrawImageTiles"] = "drawImageTiles"; - // DPI_DrawPen, having type DrawPenPresModel - ParameterId["DrawPen"] = "drawPen"; - // DPI_DrawSolidBrush, having type DrawSolidBrushPresModel - ParameterId["DrawSolidBrush"] = "drawSolidBrush"; - // DPI_DrawTextProperties, having type DrawTextPropertiesPresModel - ParameterId["DrawTextProperties"] = "drawTextProps"; - // DPI_DrawGradientBrush, having type DrawGradientBrushPresModel - ParameterId["DrawGradientBrush"] = "drawGradientBrush"; - // DPI_DrawTransform, having type DrawTransformPresModel - ParameterId["DrawTransform"] = "transform"; - // DPI_DrawAntialias, having type DrawAntialiasPresModel - ParameterId["DrawAntialias"] = "drawAntialias"; - // DPI_ImageDictionary, having type ImageDictionaryPresModel - ParameterId["ImageDictionary"] = "imageDictionary"; - // DPI_ColorDictionary, having type ColorDictionaryPresModel - ParameterId["ColorDictionary"] = "colorDictionary"; - // DPI_MarkShape, having type MarkShapePresModel - ParameterId["MarkShape"] = "markShape"; - // DPI_MarkShapeList, having type MarkShapePresModel[] - ParameterId["MarkShapeList"] = "markShapeList"; - // DPI_PaneDescriptor, having type PaneDescriptorPresModel - ParameterId["PaneDescriptor"] = "paneDescriptor"; - // DPI_PDMarks, having type PDMarksPresModel - ParameterId["PDMarks"] = "pdMarks"; - // DPI_PDMarksMap, having type Dictionary(of PDMarksPresModel) - ParameterId["PDMarksMap"] = "pdMarksMap"; - // DPI_LabelTextTable, having type LabelTextTable - ParameterId["LabelTextTable"] = "labelTextTable"; - // DPI_TextTableHelper, having type TextTableHelper - ParameterId["TextTableHelper"] = "textTableHelper"; - // DPI_GeometryTable, having type GeometryTable - ParameterId["GeometryTable"] = "geometryTable"; - // DPI_PaneMarks, having type PaneMarksPresModel - ParameterId["PaneMarks"] = "paneMarks"; - // DPI_PaneMarksList, having type PaneMarksPresModel[] - ParameterId["PaneMarksList"] = "paneMarksList"; - // DPI_BrushingSelection, having type SelectionPresModel - ParameterId["BrushingSelection"] = "brushing"; - // DPI_Selection, having type SelectionPresModel - ParameterId["Selection"] = "selection"; - // DPI_BrushingSelectionList, having type SelectionPresModel[] - ParameterId["BrushingSelectionList"] = "brushingSelectionList"; - // DPI_SelectionList, having type SelectionPresModel[] - ParameterId["SelectionList"] = "selectionList"; - // DPI_ShelfSelectionModel, having type ShelfSelectionPresModel - ParameterId["ShelfSelectionModel"] = "shelfSelectionModel"; - // DPI_ShelfSelectionModels, having type ShelfSelectionPresModel[] - ParameterId["ShelfSelectionModels"] = "shelfSelectionModels"; - // DPI_ShelfSelectionsModel, having type ShelfSelectionsPresModel - ParameterId["ShelfSelectionsModel"] = "shelfSelectionsModel"; - // DPI_DimValSelectionModel, having type DimensionValueSelectionPresModel - ParameterId["DimValSelectionModel"] = "dimensionValueSelectionModel"; - // DPI_DimValSelectionModels, having type DimensionValueSelectionPresModel[] - ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; - // DPI_HierValSelectionModel, having type HierarchicalValueSelectionPresModel - ParameterId["HierValSelectionModel"] = "hierarchicalValueSelectionModel"; - // DPI_HierValSelectionModels, having type HierarchicalValueSelectionPresModel[] - ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; - // DPI_QuantRangeSelectionModel, having type QuantativeRangeSelectionPresModel - ParameterId["QuantRangeSelectionModel"] = "quantativeRangeSelectionModel"; - // DPI_QuantRangeSelectionModels, having type QuantativeRangeSelectionPresModel[] - ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; - // DPI_QuantValueSelectionModel, having type QuantativeValueSelectionPresModel - ParameterId["QuantValueSelectionModel"] = "quantativeValueSelectionModel"; - // DPI_QuantValueSelectionModels, having type QuantativeValueSelectionPresModel[] - ParameterId["QuantValueSelectionModels"] = "quantativeValueSelectionModels"; - // DPI_LegendSelectionInfo, having type LegendSelectionInfoPresModel - ParameterId["LegendSelectionInfo"] = "legendSelectionInfo"; - // DPI_NodeReference, having type NodeReferencePresModel - ParameterId["NodeReference"] = "nodeReference"; - // DPI_PageReference, having type PageReferencePresModel - ParameterId["PageReference"] = "pageReference"; - // DPI_OrientedNodeReference, having type OrientedNodeReferencePresModel - ParameterId["OrientedNodeReference"] = "orientedNodeReference"; - // DPI_OrientedNodeReferences, having type OrientedNodeReferencePresModel[] - ParameterId["OrientedNodeReferences"] = "orientedNodeReferences"; - // DPI_SelectionData, having type SelectionDataPresModel - ParameterId["SelectionData"] = "selectionData"; - // DPI_HighlightedData, having type HighlightedDataPresModel - ParameterId["HighlightedData"] = "highlightedData"; - // DPI_Node, having type NodePresModel - ParameterId["Node"] = "node"; - // DPI_Nodes, having type NodePresModel[] - ParameterId["Nodes"] = "nodes"; - // DPI_SelectedNodes, having type NodePresModel[] - ParameterId["SelectedNodes"] = "selectedNodes"; - // DPI_UserAction, having type ActionPresModel - ParameterId["UserAction"] = "userAction"; - // DPI_UserActions, having type ActionPresModel[] - ParameterId["UserActions"] = "userActions"; - // DPI_LinkSpec, having type LinkSpecPresModel - ParameterId["LinkSpec"] = "linkSpec"; - // DPI_ActionSpecificationModel, having type ActionSpecificationPresModel - ParameterId["ActionSpecificationModel"] = "actionSpecification"; - // DPI_LinkSpecification, having type LinkSpecificationPresModel - ParameterId["LinkSpecification"] = "linkSpecification"; - // DPI_ScriptDescription, having type ScriptDescriptionPresModel - ParameterId["ScriptDescription"] = "scriptDescription"; - // DPI_ActionSource, having type ActionSourcePresModel - ParameterId["ActionSource"] = "actionSource"; - // DPI_FieldExprItem, having type FieldExprItemPresModel - ParameterId["FieldExprItem"] = "fieldExpressionItem"; - // DPI_FieldExprVector, having type FieldExprItemPresModel[] - ParameterId["FieldExprVector"] = "fieldExpressionVector"; - // DPI_ActionComboItem, having type ActionComboItemPresModel - ParameterId["ActionComboItem"] = "actionComboItem"; - // DPI_ActionComboVector, having type ActionComboItemPresModel[] - ParameterId["ActionComboVector"] = "actionComboVector"; - // DPI_ActionSourceCombo, having type ActionSourceComboPresModel - ParameterId["ActionSourceCombo"] = "actionSourceCombo"; - // DPI_ActionDestCombo, having type ActionComboPresModel - ParameterId["ActionDestCombo"] = "actionDestCombo"; - // DPI_ActionFieldList, having type ActionFieldListPresModel - ParameterId["ActionFieldList"] = "actionFieldList"; - // DPI_EditBrushAction, having type EditBrushActionPresModel - ParameterId["EditBrushAction"] = "editBrushAction"; - // DPI_UpdateActionSource, having type UpdateActionSourcePresModel - ParameterId["UpdateActionSource"] = "updateActionSource"; - // DPI_UpdateBrushAction, having type UpdateBrushActionPresModel - ParameterId["UpdateBrushAction"] = "updateBrushAction"; - // DPI_ActionWarnings, having type ActionWarningsPresModel - ParameterId["ActionWarnings"] = "actionWarnings"; - // DPI_EditHyperlinkAction, having type EditHyperlinkActionPresModel - ParameterId["EditHyperlinkAction"] = "editHyperlinkAction"; - // DPI_UpdateHyperlinkAction, having type UpdateHyperlinkActionPresModel - ParameterId["UpdateHyperlinkAction"] = "updateHyperlinkAction"; - // DPI_EditSheetLinkAction, having type EditSheetLinkActionPresModel - ParameterId["EditSheetLinkAction"] = "editSheetlinkAction"; - // DPI_UpdateSheetLinkAction, having type UpdateSheetLinkActionPresModel - ParameterId["UpdateSheetLinkAction"] = "updateSheetlinkAction"; - // DPI_ActionItem, having type ActionItemPresModel - ParameterId["ActionItem"] = "actionItem"; - // DPI_ActionItemList, having type ActionItemPresModel[] - ParameterId["ActionItemList"] = "actionItemList"; - // DPI_DataSegment, having type DataSegmentPresModel - ParameterId["DataSegment"] = "dataSegment"; - // DPI_DataSegments, having type Dictionary(of DataSegmentPresModel) - ParameterId["DataSegments"] = "dataSegments"; - // DPI_DataDictionary, having type DataDictionaryPresModel - ParameterId["DataDictionary"] = "dataDictionary"; - // DPI_VizData, having type VizDataPresModel - ParameterId["VizData"] = "vizData"; - // DPI_VizColumn, having type VizColumnPresModel - ParameterId["VizColumn"] = "vizColumn"; - // DPI_VizColumns, having type VizColumnPresModel[] - ParameterId["VizColumns"] = "vizColumns"; - // DPI_VizDataColumn, having type VizDataColumnPresModel - ParameterId["VizDataColumn"] = "vizDataColumn"; - // DPI_VizDataColumns, having type VizDataColumnPresModel[] - ParameterId["VizDataColumns"] = "vizDataColumns"; - // DPI_VizPaneColumn, having type VizPaneColumnPresModel - ParameterId["VizPaneColumn"] = "vizPaneColumn"; - // DPI_VizPaneColumns, having type VizPaneColumnPresModel[] - ParameterId["VizPaneColumns"] = "vizPaneColumns"; - // DPI_PaneColumns, having type PaneColumnsPresModel - ParameterId["PaneColumns"] = "paneColumns"; - // DPI_PaneColumnsList, having type PaneColumnsPresModel[] - ParameterId["PaneColumnsList"] = "paneColumnsList"; - // DPI_PaneColumnsData, having type PaneColumnsDataPresModel - ParameterId["PaneColumnsData"] = "paneColumnsData"; - // DPI_FilterContext, having type FilterContextPresModel - ParameterId["FilterContext"] = "filterContext"; - // DPI_UberTipPaneData, having type UberTipPaneDataPresModel - ParameterId["UberTipPaneData"] = "ubertipPaneData"; - // DPI_UberTipPaneDatas, having type UberTipPaneDataPresModel[] - ParameterId["UberTipPaneDatas"] = "ubertipPaneDatas"; - // DPI_UberTipData, having type UberTipDataPresModel - ParameterId["UberTipData"] = "ubertipData"; - // DPI_RefLineTip, having type RefLineTipPresModel - ParameterId["RefLineTip"] = "refLineTip"; - // DPI_RefLineTips, having type RefLineTipPresModel[] - ParameterId["RefLineTips"] = "refLineTips"; - // DPI_NumericBin, having type NumericBinPresModel - ParameterId["NumericBin"] = "numericBin"; - // DPI_NumericBinDialog, having type NumericBinDialogPresModel - ParameterId["NumericBinDialog"] = "numericBinDialog"; - // DPI_DomainRange, having type DomainRangePresModel - ParameterId["DomainRange"] = "domainRange"; - // DPI_BinSizeInfo, having type BinSizeInfoPresModel - ParameterId["BinSizeInfo"] = "binSizeInfo"; - // DPI_DetailedErrorDialog, having type DetailedErrorPresModel - ParameterId["DetailedErrorDialog"] = "detailedErrorDialog"; - // DPI_DragSourcePosition, having type ShelfDropPositionPresModel - ParameterId["DragSourcePosition"] = "shelfDragSourcePosition"; - // DPI_DropTargetPosition, having type ShelfDropPositionPresModel - ParameterId["DropTargetPosition"] = "shelfDropTargetPosition"; - // DPI_ShelfDropPosition, having type ShelfDropPositionPresModel - ParameterId["ShelfDropPosition"] = "shelfDropPosition"; - // DPI_ShelfDropPositions, having type ShelfDropPositionPresModel[] - ParameterId["ShelfDropPositions"] = "shelfDropPositions"; - // DPI_ShelfDropModel, having type ShelfDropPresModel - ParameterId["ShelfDropModel"] = "shelfDropModel"; - // DPI_ShelfDropModels, having type ShelfDropPresModel[] - ParameterId["ShelfDropModels"] = "shelfDropModels"; - // DPI_Drag, having type DragPresModel - ParameterId["Drag"] = "drag"; - // DPI_SceneElement, having type SceneElementPresModel - ParameterId["SceneElement"] = "sceneElement"; - // DPI_SceneElements, having type SceneElementPresModel[] - ParameterId["SceneElements"] = "sceneElements"; - // DPI_QuickFilterType, having type QuickFilterType - ParameterId["QuickFilterType"] = "quickFilterType"; - // DPI_CatMode, having type QuickFilterCategoricalMode - ParameterId["CatMode"] = "categoricalMode"; - // DPI_CatCtrl, having type QuickFilterCategoricalCtrl - ParameterId["CatCtrl"] = "categoricalControl"; - // DPI_QuantMode, having type QuickFilterQuantitativeMode - ParameterId["QuantMode"] = "quantitativeMode"; - // DPI_QuantCtrl, having type QuickFilterQuantitativeCtrl - ParameterId["QuantCtrl"] = "quantitativeControl"; - // DPI_ZoneCommon, having type ZoneCommonPresModel - ParameterId["ZoneCommon"] = "zoneCommon"; - // DPI_ZoneCommonListItems, having type ZoneCommonPresModel[] - ParameterId["ZoneCommonListItems"] = "zoneCommonListItems"; - // DPI_Zone, having type ZonePresModel - ParameterId["Zone"] = "zone"; - // DPI_Zones, having type Dictionary(of ZonePresModel) - ParameterId["Zones"] = "zones"; - // DPI_ImageZone, having type ImageZonePresModel - ParameterId["ImageZone"] = "imageZone"; - // DPI_WebZone, having type WebZonePresModel - ParameterId["WebZone"] = "webZone"; - // DPI_ZoneEdgeMoveType, having type ZoneEdgeMove - ParameterId["ZoneEdgeMoveType"] = "zoneEdgeMoveType"; - // DPI_ZoneSide, having type SideType - ParameterId["ZoneSide"] = "zoneSide"; - // DPI_SnapPoint, having type SnapPointPresModel - ParameterId["SnapPoint"] = "snapPoint"; - // DPI_SnapPoints, having type SnapPointPresModel[] - ParameterId["SnapPoints"] = "snapPoints"; - // DPI_TargetPreviewPair, having type DragDropTargetPreviewPairPresModel - ParameterId["TargetPreviewPair"] = "targetPreviewPair"; - // DPI_TargetPreviewPairs, having type DragDropTargetPreviewPairPresModel[] - ParameterId["TargetPreviewPairs"] = "targetPreviewPairs"; - // DPI_ContainerGuide, having type DragDropContainerGuidePresModel - ParameterId["ContainerGuide"] = "containerGuide"; - // DPI_ContainerGuides, having type DragDropContainerGuidePresModel[] - ParameterId["ContainerGuides"] = "containerGuides"; - // DPI_ZoneBorder, having type DragDropZoneBorderPresModel - ParameterId["ZoneBorder"] = "zoneBorder"; - // DPI_ZoneBorders, having type DragDropZoneBorderPresModel[] - ParameterId["ZoneBorders"] = "zoneBorders"; - // DPI_DashboardDragDrop, having type DashboardDragDropPresModel - ParameterId["DashboardDragDrop"] = "zoneDragDrop"; - // DPI_DragZoneResize, having type DragZoneResizePresModel - ParameterId["DragZoneResize"] = "zoneResize"; - // DPI_DashboardText, having type TextRegionPresModel - ParameterId["DashboardText"] = "dashboardText"; - // DPI_DashboardTitle, having type TextRegionPresModel - ParameterId["DashboardTitle"] = "dashboardTitle"; - // DPI_QuickFilterTitle, having type TextRegionPresModel - ParameterId["QuickFilterTitle"] = "quickFilterTitle"; - // DPI_VisualCaption, having type TextRegionPresModel - ParameterId["VisualCaption"] = "visualCaption"; - // DPI_VisualTitle, having type TextRegionPresModel - ParameterId["VisualTitle"] = "visualTitle"; - // DPI_ZoneTitleRegion, having type TextRegionPresModel - ParameterId["ZoneTitleRegion"] = "zoneTitle"; - // DPI_ForecastOptions, having type ForecastPresModel - ParameterId["ForecastOptions"] = "forecastOptions"; - // DPI_ForecastDescription, having type ForecastDescribePresModel - ParameterId["ForecastDescription"] = "forecastDescription"; - // DPI_ForecastDiagnose, having type ForecastDiagnosePresModel - ParameterId["ForecastDiagnose"] = "forecastDiagnose"; - // DPI_WorkgroupPublishObject, having type WorkgroupPublishObjectPresModel - ParameterId["WorkgroupPublishObject"] = "publishDataSource"; - // DPI_PublishPermissionsSummary, having type PublishPermissionsSummaryPresModel - ParameterId["PublishPermissionsSummary"] = "publishPermissionsSummary"; - // DPI_CheckNameResults, having type CheckNameResultsPresModel - ParameterId["CheckNameResults"] = "checkNameResults"; - // DPI_ValidatePublishViewsResult, having type ValidatePublishViewsResultPresModel - ParameterId["ValidatePublishViewsResult"] = "validatePublishViewsResult"; - // DPI_PublishAuthenticationSettings, having type PublishAuthenticationSettingsPresModel - ParameterId["PublishAuthenticationSettings"] = "publishAuthenticationSettings"; - // DPI_ManageDatasources, having type ManageDatasourcesPresModel - ParameterId["ManageDatasources"] = "manageDatasources"; - // DPI_CredentialsAuthSettings, having type CredentialsAuthSettingsPresModel - ParameterId["CredentialsAuthSettings"] = "credentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettings, having type ConnectionCredentialsAuthSettingsPresModel - ParameterId["ConnectionCredentialsAuthSettings"] = "connectionCredentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettingsList, having type ConnectionCredentialsAuthSettingsPresModel[] - ParameterId["ConnectionCredentialsAuthSettingsList"] = "connectionCredentialsAuthSettingsList"; - // DPI_PublishDatasourceFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel - ParameterId["PublishDatasourceFromWorkbookInfo"] = "publishDatasourceFromWorkbookInfo"; - // DPI_PublishDatasourcesFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel[] - ParameterId["PublishDatasourcesFromWorkbookInfo"] = "publishDatasourcesFromWorkbookInfo"; - // DPI_PublishSheet, having type PublishSheetPresModel - ParameterId["PublishSheet"] = "publishSheet"; - // DPI_PublishSheets, having type PublishSheetPresModel[] - ParameterId["PublishSheets"] = "publishSheets"; - // DPI_PublishObjectViews, having type PublishObjectViewsPresModel - ParameterId["PublishObjectViews"] = "publishObjectViews"; - // DPI_PublishObjectPublishSheetResults, having type PublishObjectPublishSheetResultsPresModel - ParameterId["PublishObjectPublishSheetResults"] = "publishObjectPublishSheetResults"; - // DPI_RefreshExtractSchedulingSettings, having type RefreshExtractSchedulingSettingsPresModel - ParameterId["RefreshExtractSchedulingSettings"] = "refreshExtractSchedulingSettings"; - // DPI_SetRefreshExtractScheduleResult, having type SetRefreshExtractScheduleResultPresModel - ParameterId["SetRefreshExtractScheduleResult"] = "setRefreshExtractScheduleResult"; - // DPI_CheckPublishObjectNameWarningsResults, having type CheckPublishObjectNameWarningsResultsPresModel - ParameterId["CheckPublishObjectNameWarningsResults"] = "checkPublishObjectNameWarningsResults"; - // DPI_PublishDatasourceOnWorkbookPublishResults, having type PublishDatasourceOnWorkbookPublishResultsPresModel - ParameterId["PublishDatasourceOnWorkbookPublishResults"] = "publishDatasourceOnWorkbookPublishResult"; - // DPI_PublishDataSourceResult, having type PublishDataSourceResultPresModel - ParameterId["PublishDataSourceResult"] = "publishDataSourceResult"; - // DPI_PublishWarningMessage, having type PublishWarningMessagePresModel - ParameterId["PublishWarningMessage"] = "publishWarningMessage"; - // DPI_MustDowngradeToPublishWarningMessagePresModel, having type PublishWarningMessagePresModel - ParameterId["MustDowngradeToPublishWarningMessagePresModel"] = "mustDowngradeToPublishWarningMessagePresModel"; - // DPI_PublishSelectedAttributes, having type PublishSelectedAttributesPresModel - ParameterId["PublishSelectedAttributes"] = "publishSelectedAttributes"; - // DPI_AutosaveFile, having type AutosaveFilePresModel - ParameterId["AutosaveFile"] = "autosaveFile"; - // DPI_AutosaveFiles, having type AutosaveFilePresModel[] - ParameterId["AutosaveFiles"] = "autosaveFiles"; - // DPI_FunctionGroup, having type FunctionGroup - ParameterId["FunctionGroup"] = "funcGrp"; - // DPI_FunctionGroups, having type FunctionGroup[] - ParameterId["FunctionGroups"] = "funcGrps"; - // DPI_FunctionArgType, having type FunctionArgType - ParameterId["FunctionArgType"] = "funcArgType"; - // DPI_FunctionArgTypes, having type FunctionArgType[] - ParameterId["FunctionArgTypes"] = "funcArgTypes"; - // DPI_CalculationStyle, having type CalcStyle - ParameterId["CalculationStyle"] = "calculationStyle"; - // DPI_Calculation, having type CalculationPresModel - ParameterId["Calculation"] = "calculation"; - // DPI_TypeInPill, having type CalculationPresModel - ParameterId["TypeInPill"] = "typeInPill"; - // DPI_CalcErrorInfo, having type CalcErrorInfoPresModel - ParameterId["CalcErrorInfo"] = "errorInfo"; - // DPI_CalcErrorInfos, having type CalcErrorInfoPresModel[] - ParameterId["CalcErrorInfos"] = "errorInfoList"; - // DPI_CalcualtionValidation, having type CalculationValidationPresModel - ParameterId["CalcualtionValidation"] = "calculationValidation"; - // DPI_ExpressionFunction, having type ExpressionFunctionPresModel - ParameterId["ExpressionFunction"] = "expressionFunc"; - // DPI_ExpressionFunctions, having type ExpressionFunctionPresModel[] - ParameterId["ExpressionFunctions"] = "expressionFuncList"; - // DPI_ExpressionFunctionsPM, having type ExpressionFunctionsPresModel - ParameterId["ExpressionFunctionsPM"] = "expressionFuncPm"; - // DPI_StyleToken, having type StyleTokenPresModel - ParameterId["StyleToken"] = "styleToken"; - // DPI_StyleTokens, having type StyleTokenPresModel[] - ParameterId["StyleTokens"] = "styleTokenList"; - // DPI_CalcEditorTextSelection, having type CalcEditorTextSelectionPresModel - ParameterId["CalcEditorTextSelection"] = "calcEditorTextSelection"; - // DPI_AutoCompleteItemType, having type AutoCompleteItemType - ParameterId["AutoCompleteItemType"] = "autocompleteType"; - // DPI_AutoCompleteItem, having type AutoCompleteItemPresModel - ParameterId["AutoCompleteItem"] = "autocompleteItem"; - // DPI_AutoCompleteItems, having type AutoCompleteItemPresModel[] - ParameterId["AutoCompleteItems"] = "autocompleteItemList"; - // DPI_CalculationAutoCompleteContextMenu, having type CalculationAutoCompleteContextMenuPresModel - ParameterId["CalculationAutoCompleteContextMenu"] = "calculationAutocompleteContextMenu"; - // DPI_CalcApplyResult, having type CalcApplyResult - ParameterId["CalcApplyResult"] = "calculationApplyResult"; - // DPI_RampBorderStyledBox, having type StyledBoxPresModel - ParameterId["RampBorderStyledBox"] = "rampBorderStyledBox"; - // DPI_StyledBox, having type StyledBoxPresModel - ParameterId["StyledBox"] = "styledBox"; - // DPI_GlobalStyledBox, having type StyledBoxPresModel - ParameterId["GlobalStyledBox"] = "globalStyledBox"; - // DPI_StyleContext, having type StyleContextPresModel - ParameterId["StyleContext"] = "styleContext"; - // DPI_CurrentTextStyle, having type TextStylePresModel - ParameterId["CurrentTextStyle"] = "currentTextStyle"; - // DPI_LabelTextStyle, having type TextStylePresModel - ParameterId["LabelTextStyle"] = "labelTextStyle"; - // DPI_OriginalTextStyle, having type TextStylePresModel - ParameterId["OriginalTextStyle"] = "originalTextStyle"; - // DPI_SelectedTextStyleModel, having type TextStylePresModel - ParameterId["SelectedTextStyleModel"] = "selectedTextStyleModel"; - // DPI_SwatchTextStyleModel, having type TextStylePresModel - ParameterId["SwatchTextStyleModel"] = "swatchTextStyle"; - // DPI_TextStyleModel, having type TextStylePresModel - ParameterId["TextStyleModel"] = "textStyle"; - // DPI_TitleStyleModel, having type TextStylePresModel - ParameterId["TitleStyleModel"] = "titleStyleModel"; - // DPI_PropertyBag, having type PropertyBagPresModel - ParameterId["PropertyBag"] = "propBagWrapper"; - // DPI_PresModelMap, having type Dictionary(of PropertyBagPresModel) - ParameterId["PresModelMap"] = "presModelMap"; - // DPI_PresentationLayerNotifications, having type PresModelMapPresModel - ParameterId["PresentationLayerNotifications"] = "presentationLayerNotifications"; - // DPI_SecondaryInfo, having type PresModelMapPresModel - ParameterId["SecondaryInfo"] = "secondaryInfo"; - // DPI_ClientDashboardUIMetric, having type ClientDashboardUIMetricPresModel - ParameterId["ClientDashboardUIMetric"] = "clientDashboardUiMetric"; - // DPI_ClientDashboardUIMetrics, having type ClientDashboardUIMetricPresModel[] - ParameterId["ClientDashboardUIMetrics"] = "clientDashboardUiMetrics"; - // DPI_ClientDashboardUIMetricContainer, having type ClientDashboardUIMetricContainerPresModel - ParameterId["ClientDashboardUIMetricContainer"] = "clientDashboardUiMetricContainer"; - // DPI_ExtSvcConfig, having type ExtSvcConfigPresModel - ParameterId["ExtSvcConfig"] = "extSvcConfig"; - // DPI_StoryboardSheetItem, having type StoryboardSheetItemPresModel - ParameterId["StoryboardSheetItem"] = "storyboardSheetItem"; - // DPI_StoryboardSheetItems, having type StoryboardSheetItemPresModel[] - ParameterId["StoryboardSheetItems"] = "storyboardSheetItems"; - // DPI_StoryboardSheetList, having type StoryboardSheetListPresModel - ParameterId["StoryboardSheetList"] = "storyboardSheetList"; - // DPI_FitToStoryBoardOptionItem, having type FitToStoryBoardOptionItemPresModel - ParameterId["FitToStoryBoardOptionItem"] = "fitToStoryboardOptionItem"; - // DPI_FitToStoryBoardOptionItems, having type FitToStoryBoardOptionItemPresModel[] - ParameterId["FitToStoryBoardOptionItems"] = "fitToStoryboardOptionItems"; - // DPI_FitToStoryBoardOptionList, having type FitToStoryBoardOptionListPresModel - ParameterId["FitToStoryBoardOptionList"] = "fitToStoryboardOptionList"; - // DPI_StoryPointNavItem, having type StoryPointNavItemPresModel - ParameterId["StoryPointNavItem"] = "storypointNavItem"; - // DPI_StoryPointNavItems, having type StoryPointNavItemPresModel[] - ParameterId["StoryPointNavItems"] = "storypointNavItems"; - // DPI_FlipboardNav, having type FlipboardNavPresModel - ParameterId["FlipboardNav"] = "flipboardNav"; - // DPI_ScrollBarStyle, having type ScrollBarStylePresModel - ParameterId["ScrollBarStyle"] = "scrollBarStyle"; - // DPI_DashboardZoneLayoutPane, having type DashboardZoneLayoutPanePresModel - ParameterId["DashboardZoneLayoutPane"] = "dashboardZoneLayoutPane"; - // DPI_SelectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["SelectedStoryPointStyle"] = "selectedStoryPointStyle"; - // DPI_UnselectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["UnselectedStoryPointStyle"] = "unselectedStoryPointStyle"; - // DPI_FlipboardNavStyle, having type FlipboardNavStylePresModel - ParameterId["FlipboardNavStyle"] = "flipboardNavStyle"; - // DPI_StoryPoint, having type StoryPointPresModel - ParameterId["StoryPoint"] = "storyPoint"; - // DPI_StoryPoints, having type Dictionary(of StoryPointPresModel) - ParameterId["StoryPoints"] = "storyPoints"; - // DPI_Flipboard, having type FlipboardPresModel - ParameterId["Flipboard"] = "flipboard"; - // DPI_StoryPair, having type StoryPairPresModel - ParameterId["StoryPair"] = "storyPair"; - // DPI_StoryPairs, having type StoryPairPresModel[] - ParameterId["StoryPairs"] = "storyPairs"; - // DPI_StoryboardPM, having type StoryboardPresModel - ParameterId["StoryboardPM"] = "storyboardPm"; - // DPI_HiDpiIconDictionary, having type ImageCollectionPresModel - ParameterId["HiDpiIconDictionary"] = "hiDpiIconDictionary"; - // DPI_IconDictionary, having type ImageCollectionPresModel - ParameterId["IconDictionary"] = "iconDictionary"; - // DPI_IconResourceDictionary, having type ImageResourceCollectionPresModel - ParameterId["IconResourceDictionary"] = "iconResDictionary"; - // DPI_DataPreviewWindowMessage, having type DataPreviewWindowMessagePresModel - ParameterId["DataPreviewWindowMessage"] = "dataPreviewWindowMessage"; - // DPI_DataSourceData, having type DataSourceDataPresModel - ParameterId["DataSourceData"] = "dataSrcData"; - // DPI_DataSourceSort, having type DataSourceSortPresModel - ParameterId["DataSourceSort"] = "dataSrcSort"; - // DPI_ColumnInfo, having type DSColumnInfoPresModel - ParameterId["ColumnInfo"] = "columnInfo"; - // DPI_ColumnInfos, having type DSColumnInfoPresModel[] - ParameterId["ColumnInfos"] = "columnInfos"; - // DPI_DataFormatter, having type DVFormatter - ParameterId["DataFormatter"] = "dataFormatter"; - // DPI_JoinDescription, having type JoinDescriptionPresModel - ParameterId["JoinDescription"] = "joinDescription"; - // DPI_JoinDescriptions, having type Dictionary(of JoinDescriptionPresModel) - ParameterId["JoinDescriptions"] = "joinDescriptions"; - // DPI_FileTableInfo, having type FileTableInfoPresModel - ParameterId["FileTableInfo"] = "fileTableInfo"; - // DPI_FieldMapping, having type FieldMappingPresModel - ParameterId["FieldMapping"] = "fieldMapping"; - // DPI_FieldMappingData, having type FieldMappingDataPresModel - ParameterId["FieldMappingData"] = "fieldMappingData"; - // DPI_FieldMappingDataVector, having type FieldMappingDataPresModel[] - ParameterId["FieldMappingDataVector"] = "fieldMappingDataVector"; - // DPI_FrameFinder, having type FrameFinderPresModel - ParameterId["FrameFinder"] = "frameFinder"; - // DPI_SheetLinkFieldMapping, having type SheetLinkFieldMappingPresModel - ParameterId["SheetLinkFieldMapping"] = "sheetLinkFieldMapping"; - // DPI_UnionInfo, having type UnionInfoPresModel - ParameterId["UnionInfo"] = "unionInfo"; - // DPI_UnionTableInfo, having type UnionTableInfoPresMode - ParameterId["UnionTableInfo"] = "unionTableInfo"; - // DPI_UnionTableInfos, having type UnionTableInfoPresModel[] - ParameterId["UnionTableInfos"] = "unionTableInfos"; - // DPI_ConnectionPBUnionInfo, having type PBUnionInfoPresModel - ParameterId["ConnectionPBUnionInfo"] = "connectionPbunionInfo"; - // DPI_ConnectionPBUnionInfos, having type PBUnionInfoPresModel[] - ParameterId["ConnectionPBUnionInfos"] = "connectionPbunionInfos"; - // DPI_JoinClause, having type JoinClausePresModel - ParameterId["JoinClause"] = "joinClause"; - // DPI_JoinClauses, having type JoinClausePresModel[] - ParameterId["JoinClauses"] = "joinClauses"; - // DPI_JoinValidationResult, having type JoinValidationResultPresModel - ParameterId["JoinValidationResult"] = "joinValidationResult"; - // DPI_JoinTableInfo, having type JoinTableInfoPresModel - ParameterId["JoinTableInfo"] = "joinTableInfo"; - // DPI_ParameterInfo, having type JoinTableInfoPresModel - ParameterId["ParameterInfo"] = "parameterInfo"; - // DPI_JoinTableInfos, having type JoinTableInfoPresModel[] - ParameterId["JoinTableInfos"] = "joinTableInfos"; - // DPI_JoinOnCalcInfo, having type JoinOnCalcInfoPresModel - ParameterId["JoinOnCalcInfo"] = "joinOnCalcInfo"; - // DPI_ConnectionSummary, having type ConnectionSummaryPresModel - ParameterId["ConnectionSummary"] = "connectionSummary"; - // DPI_ConnectionSummaries, having type ConnectionSummaryPresModel[] - ParameterId["ConnectionSummaries"] = "connectionSummaries"; - // DPI_TopLevelConnectionDescription, having type TopLevelConnectionDescriptionPresModel - ParameterId["TopLevelConnectionDescription"] = "topLevelConnectionDescription"; - // DPI_DataConnectionTableViewMessages, having type DataConnectionTableViewMessagesPresModel - ParameterId["DataConnectionTableViewMessages"] = "dataConnectionTableViewMessages"; - // DPI_TextTransformScript, having type TextTransformScriptPresModel - ParameterId["TextTransformScript"] = "textTransformScript"; - // DPI_CalendarDateOptions, having type CalendarDateOptionsPresModel - ParameterId["CalendarDateOptions"] = "calendarDateOptions"; - // DPI_GoToWorksheetTooltipPresModel, having type GoToWorksheetTooltipPresModel - ParameterId["GoToWorksheetTooltipPresModel"] = "goToWorksheetTooltipPresModel"; - // DPI_TableCleaningPresModel, having type TableCleaningPresModel - ParameterId["TableCleaningPresModel"] = "tableCleaningPresModel"; - // DPI_PivotPresModel, having type PivotPresModel - ParameterId["PivotPresModel"] = "pivotPresModel"; - // DPI_PivotTreeItemPresModel, having type PivotTreeItemPresModel - ParameterId["PivotTreeItemPresModel"] = "pivotTreeItemPresModel"; - // DPI_PivotTreeItems, having type PivotTreeItemPresModel[] - ParameterId["PivotTreeItems"] = "pivotTreeItemsPresModel"; - // DPI_PivotDisplay, having type PivotDisplayPresModel - ParameterId["PivotDisplay"] = "pivotDisplay"; - // DPI_PivotTag, having type NameColumnsPairPresModel - ParameterId["PivotTag"] = "pivotTag"; - // DPI_PivotGroups, having type NameColumnsPairPresModel[] - ParameterId["PivotGroups"] = "pivotGroups"; - // DPI_DataSourceDropdown, having type DataSourceDropdownPresModel - ParameterId["DataSourceDropdown"] = "dataSourceDropdown"; - // DPI_ConnectionDropdown, having type ConnectionDropdownPresModel - ParameterId["ConnectionDropdown"] = "connectionDropdown"; - // DPI_ActivityEvent, having type ActivityEventPresModel - ParameterId["ActivityEvent"] = "activityEvent"; - // DPI_UIAutomation, having type UIAutomationPresModel - ParameterId["UIAutomation"] = "uiAutomation"; - // DPI_UIAutomationIndex, having type UIAutomationIndexPresModel - ParameterId["UIAutomationIndex"] = "uiAutomationIndex"; - // DPI_UIAutomationIndexList, having type UIAutomationIndexPresModel[] - ParameterId["UIAutomationIndexList"] = "uiAutomationIndexList"; - // DPI_UIAutomationComponentInfo, having type UIAutomationComponentInfoPresModel - ParameterId["UIAutomationComponentInfo"] = "uiAutomationComponentInfo"; - // DPI_UIAutomationComponentInfoList, having type UIAutomationComponentInfoPresModel[] - ParameterId["UIAutomationComponentInfoList"] = "uiAutomationComponentInfoList"; - // DPI_Geometry, having type GeometryPresModel - ParameterId["Geometry"] = "geometry"; - // DPI_MultiPoint, having type MultiPointPresModel - ParameterId["MultiPoint"] = "multiPoint"; - // DPI_MultiLine, having type MultiLinePresModel - ParameterId["MultiLine"] = "multiLine"; - // DPI_MultiPolygon, having type MultiPolygonPresModel - ParameterId["MultiPolygon"] = "multiPolygon"; - // DPI_Polygon, having type PolygonPresModel - ParameterId["Polygon"] = "polygon"; - // DPI_PolygonList, having type PolygonPresModel[] - ParameterId["PolygonList"] = "polygonList"; - // DPI_Line, having type LinePresModel - ParameterId["Line"] = "line"; - // DPI_LineList, having type LinePresModel[] - ParameterId["LineList"] = "lineList"; - // DPI_TabbedAuthentication, having type TabbedAuthenticationPresModel - ParameterId["TabbedAuthentication"] = "tabbedAuthentication"; - // DPI_TabbedAuthenticationTabInfo, having type TabbedAuthenticationTabInfoPresModel - ParameterId["TabbedAuthenticationTabInfo"] = "tabbedAuthenticationTabInfo"; - // DPI_TabbedAuthenticationTabInfos, having type TabbedAuthenticationTabInfoPresModel[] - ParameterId["TabbedAuthenticationTabInfos"] = "tabbedAuthenticationTabInfos"; - // DPI_GeographicSearchCandidate, having type GeographicSearchCandidatePresModel - ParameterId["GeographicSearchCandidate"] = "geographicSearchCandidate"; - // DPI_GeographicSearchCandidateList, having type GeographicSearchCandidatePresModel[] - ParameterId["GeographicSearchCandidateList"] = "geographicSearchCandidateList"; - // DPI_GeographicSearchResults, having type GeographicSearchPresModel - ParameterId["GeographicSearchResults"] = "geographicSearchResults"; - // DPI_ParamInfo, having type ParameterInfoPresModel - ParameterId["ParamInfo"] = "paramInfo"; - // DPI_ParamInfos, having type ParameterInfoPresModel[] - ParameterId["ParamInfos"] = "paramInfos"; - // DPI_ParamNamespaceInfo, having type ParameterNamespaceInfoInfoPresModel - ParameterId["ParamNamespaceInfo"] = "paramNamespaceInfo"; - // DPI_ParamNamespaceInfos, having type ParameterNamespaceInfoPresModel[] - ParameterId["ParamNamespaceInfos"] = "paramNamespaceInfos"; - // DPI_ParamRegistryInfo, having type ParameterRegistryInfoPresModel - ParameterId["ParamRegistryInfo"] = "paramRegistryInfo"; - // DPI_DataSourceProperties, having type DataSourcePropertiesPresModel - ParameterId["DataSourceProperties"] = "connectionProperties"; - // DPI_ConnectionTypePresModel, having type ConnectionTypePresModel - ParameterId["ConnectionTypePresModel"] = "connectionTypePresModel"; - // DPI_ConnectionTypes, having type ConnectionTypePresModel[] - ParameterId["ConnectionTypes"] = "connectionTypes"; - // DPI_ConnectionTypeGroupPresModel, having type ConnectionTypeGroupPresModel - ParameterId["ConnectionTypeGroupPresModel"] = "connectionTypeGroupPresModel"; - // DPI_SavedDataSourcePresModel, having type SavedDataSourcePresModel - ParameterId["SavedDataSourcePresModel"] = "savedDatasourcePresModel"; - // DPI_SavedDataSources, having type SavedDataSourcePresModel[] - ParameterId["SavedDataSources"] = "savedDatasources"; - // DPI_SavedDataSourcesPresModel, having type SavedDataSourcesPresModel - ParameterId["SavedDataSourcesPresModel"] = "savedDatasourcesPresModel"; - // DPI_OpenPaneItemPresModel, having type OpenPaneItemPresModel - ParameterId["OpenPaneItemPresModel"] = "openPaneItemPresModel"; - // DPI_OpenPaneItems, having type OpenPaneItemPresModel[] - ParameterId["OpenPaneItems"] = "openPaneItems"; - // DPI_OpenPaneItemsPresModel, having type OpenPaneItemsPresModel - ParameterId["OpenPaneItemsPresModel"] = "openPaneItemsPresModel"; - // DPI_VariableValue, having type VariableValuePresModel - ParameterId["VariableValue"] = "variableValue"; - // DPI_VariableValues, having type VariableValuePresModel[] - ParameterId["VariableValues"] = "variableValues"; - // DPI_ServerVariableValue, having type ServerVariableValuePresModel - ParameterId["ServerVariableValue"] = "serverVariableValue"; - // DPI_EditableVariableValue, having type EditableVariableValuePresModel - ParameterId["EditableVariableValue"] = "editableVariableValue"; - // DPI_ServerVariableMetadata, having type ServerVariableMetadataPresModel - ParameterId["ServerVariableMetadata"] = "serverVariableMetadata"; - // DPI_PromptVariable, having type PromptVariablePresModel - ParameterId["PromptVariable"] = "promptVariable"; - // DPI_PromptVariables, having type PromptVariablePresModel[] - ParameterId["PromptVariables"] = "promptVariables"; - // DPI_VariablePromptDialog, having type VariablePromptDialogPresModel - ParameterId["VariablePromptDialog"] = "variablePromptDialog"; - // DPI_VariableValueOperation, having type VariableValueOperationPresModel - ParameterId["VariableValueOperation"] = "variableValueOperation"; - // DPI_VariableValueOperations, having type VariableValueOperationPresModel[] - ParameterId["VariableValueOperations"] = "variableValueOperations"; - // DPI_TableOptionsPresModel, having type TableOptionsPresModel - ParameterId["TableOptionsPresModel"] = "tableOptionsPresModel"; - // DPI_ClientInfoPresModel, having type ClientInfoPresModel - ParameterId["ClientInfoPresModel"] = "clientInfoPresModel"; - // DPI_TableauFileInfoPresModel, having type TableauFileInfoPresModel - ParameterId["TableauFileInfoPresModel"] = "tableauFileInfoPresModel"; - // DPI_DebuggingInfoPresModel, having type DebuggingInfoPresModel - ParameterId["DebuggingInfoPresModel"] = "debuggingInfoPresModel"; - // DPI_RunningThreadInfoPresModel, having type RunningThreadInfoPresModel - ParameterId["RunningThreadInfoPresModel"] = "runningThreadInfoPresModel"; - // DPI_AboutDialogInfoPresModel, having type AboutDialogInfoPresModel - ParameterId["AboutDialogInfoPresModel"] = "aboutDialogInfoPresModel"; - // DPI_HybridUIShowcasePresModel, having type HybridUIShowcasePresModel - ParameterId["HybridUIShowcasePresModel"] = "hybridUiShowcasePresModel"; - // DPI_DefaultTextFormat, having type DefaultTextFormatPresModel - ParameterId["DefaultTextFormat"] = "defaultTextFormat"; - // DPI_MapBoxServerInfoPresModel, having type MapBoxServerInfoPresModel - ParameterId["MapBoxServerInfoPresModel"] = "mapboxServerInfoPresModel"; - // DPI_WMSServerInfoPresModel, having type WMSServerInfoPresModel - ParameterId["WMSServerInfoPresModel"] = "wmsServerInfoPresModel"; - // DPI_MapSourceConflictPresModel, having type MapSourceConflictPresModel - ParameterId["MapSourceConflictPresModel"] = "mapSourceConflictPresModel"; - // DPI_EnumeratedSetDialogPresModel, having type EnumeratedSetDialogPresModel - ParameterId["EnumeratedSetDialogPresModel"] = "enumeratedSetDialogPresModel"; - // DPI_EditAliasesDialog, having type EditAliasesDialogPresModel - ParameterId["EditAliasesDialog"] = "editAliasesDialogPresModel"; - // DPI_AliasesPresModel, having type AliasesPresModel - ParameterId["AliasesPresModel"] = "aliasesPresModel"; - // DPI_ClearAliasesPresModel, having type AliasesPresModel - ParameterId["ClearAliasesPresModel"] = "clearAliasesPresModel"; - // DPI_NewAliasesPresModel, having type NewAliasesPresModel - ParameterId["NewAliasesPresModel"] = "newAliasesPresModel"; - // DPI_AliasPresModel, having type AliasPresModel - ParameterId["AliasPresModel"] = "aliasPresModel"; - // DPI_AliasItem, having type AliasItemPresModel - ParameterId["AliasItem"] = "aliasItem"; - // DPI_DuplicateAliasItem, having type AliasItemPresModel - ParameterId["DuplicateAliasItem"] = "duplicateAliasItem"; - // DPI_AliasList, having type AliasItemPresModel[] - ParameterId["AliasList"] = "aliasList"; - // DPI_AliasResultItem, having type AliasResultItemPresModel - ParameterId["AliasResultItem"] = "aliasResultItem"; - // DPI_AliasResultList, having type AliasResultItemPresModel[] - ParameterId["AliasResultList"] = "aliasResultList"; - // DPI_AliasResults, having type AliasResultsPresModel - ParameterId["AliasResults"] = "aliasResults"; - // DPI_EditSetDialogPresModel, having type EditSetDialogPresModel - ParameterId["EditSetDialogPresModel"] = "editSetDialogPresModel"; - // DPI_ConfirmationPresModel, having type ConfirmationPresModel - ParameterId["ConfirmationPresModel"] = "confirmationPresModel"; - // DPI_NotificationPresModel, having type NotificationPresModel - ParameterId["NotificationPresModel"] = "notificationPresModel"; - // DPI_RetargetDataSourceDialogPresModel, having type RetargetDataSourceDialogPresModel - ParameterId["RetargetDataSourceDialogPresModel"] = "retargetDatasourceDialogPresModel"; - // DPI_SharedFilterPresModel, having type SharedFilterPresModel - ParameterId["SharedFilterPresModel"] = "sharedFilterPresModel"; - // DPI_SharedFilterWorksheetInfo, having type SharedFilterWorksheetInfoPresModel - ParameterId["SharedFilterWorksheetInfo"] = "sharedFilterWorksheetInfo"; - // DPI_SharedFilterWorksheetInfoList, having type SharedFilterWorksheetInfoPresModel[] - ParameterId["SharedFilterWorksheetInfoList"] = "sharedFilterWorksheetInfoList"; - // DPI_FieldPickerTreePresModel, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModel"] = "fieldPickerTreePresModel"; - // DPI_FieldPickerTreePresModelSource, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelSource"] = "fieldPickerTreePresModelSource"; - // DPI_FieldPickerTreePresModelTarget, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelTarget"] = "fieldPickerTreePresModelTarget"; - // DPI_ErrorInfo, having type ErrorInfoPresModel - ParameterId["ErrorInfo"] = "errorInfoPresModel"; - // DPI_CustomSplitPresModel, having type CustomSplitPresModel - ParameterId["CustomSplitPresModel"] = "customSplitPresModel"; - // DPI_PageSetup, having type PageSetupPresModel - ParameterId["PageSetup"] = "pageSetup"; - // DPI_ServerConnectStatus, having type ServerConnectionStatus - ParameterId["ServerConnectStatus"] = "serverConnectionStatus"; - // DPI_GetFilterItemsResponse, having type GetFilterItemsResponsePresModel - ParameterId["GetFilterItemsResponse"] = "getFilterItemsResponse"; - // DPI_FilterSearchResponse, having type FilterSearchResponsePresModel - ParameterId["FilterSearchResponse"] = "filterSearchResponse"; - // DPI_FilterSearchWithIndexResponse, having type FilterSearchWithIndexResponsePresModel - ParameterId["FilterSearchWithIndexResponse"] = "filterSearchWithIndexResponse"; - // DPI_FilterShowChildrenResponse, having type FilterShowChildrenResponsePresModel - ParameterId["FilterShowChildrenResponse"] = "filterShowChildrenResponse"; - // DPI_EditDataServerConnection, having type EditDataServerConnectionPresModel - ParameterId["EditDataServerConnection"] = "editDataServerConnection"; - // DPI_ImagesEdit, having type ImagesEditPresModel - ParameterId["ImagesEdit"] = "imagesEdit"; - // DPI_BackgroundImage, having type BackgroundImagePresModel - ParameterId["BackgroundImage"] = "backgroundImage"; - // DPI_BackgroundImages, having type BackgroundImagePresModel[] - ParameterId["BackgroundImages"] = "backgroundImages"; - // DPI_Predicate, having type PredicatePresModel - ParameterId["Predicate"] = "predicate"; - // DPI_Predicates, having type PredicatePresModel[] - ParameterId["Predicates"] = "predicates"; - // DPI_ImagesEditResult, having type ImagesEditResultPresModel - ParameterId["ImagesEditResult"] = "imagesEditResult"; - // DPI_SortDialogPresModel, having type SortDialogPresModel - ParameterId["SortDialogPresModel"] = "sortDialogPresModel"; - // DPI_CompoundTableCalc, having type CompoundTableCalculationPresModel - ParameterId["CompoundTableCalc"] = "compoundTableCalculationPresModel"; - // DPI_TableCalc, having type TableCalculationPresModel - ParameterId["TableCalc"] = "tableCalculationPresModel"; - // DPI_TableCalcs, having type TableCalculationPresModel[] - ParameterId["TableCalcs"] = "tableCalculationPresModels"; - // DPI_TableCalcIdentifier, having type TableCalcIdentifierPresModel - ParameterId["TableCalcIdentifier"] = "tableCalcIdentifier"; - // DPI_NestedTableCalcInfo, having type NestedTableCalcInfoPresModel - ParameterId["NestedTableCalcInfo"] = "nestedTableCalcInfo"; - // DPI_NestedTableCalcInfos, having type NestedTableCalcInfoPresModel[] - ParameterId["NestedTableCalcInfos"] = "nestedTableCalcInfos"; - // DPI_Ordering, having type TableCalcOrderingPresModel - ParameterId["Ordering"] = "tableCalcOrderingPresModel"; - // DPI_Cumulative, having type CumulativeTableCalcPresModel - ParameterId["Cumulative"] = "cumulativeTableCalcPresModel"; - // DPI_ReferenceOptions, having type TableCalcReferenceOptionsPresModel - ParameterId["ReferenceOptions"] = "tableCalcReferenceOptionsPresModel"; - // DPI_Difference, having type DifferenceTableCalcPresModel - ParameterId["Difference"] = "differenceTableCalcPresModel"; - // DPI_Window, having type WindowTableCalcPresModel - ParameterId["Window"] = "windowTableCalcPresModel"; - // DPI_PercentTotal, having type PercentTotalTableCalcPresModel - ParameterId["PercentTotal"] = "percentTotalTableCalcPresModel"; - // DPI_Rank, having type RankTableCalcPresModel - ParameterId["Rank"] = "rankTableCalcPresModel"; - // DPI_Custom, having type CustomTableCalcPresModel - ParameterId["Custom"] = "customTableCalcPresModel"; - // DPI_WebDataUrl, having type WebDataUrlPresModel - ParameterId["WebDataUrl"] = "webDataUrl"; - // DPI_VisitedWebDataConnectors, having type WebDataUrlPresModel[] - ParameterId["VisitedWebDataConnectors"] = "visitedWebDataConnectors"; - // DPI_WebDataSessionUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataSessionUrls"] = "webDataSessionUrls"; - // DPI_WebDataUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataUrls"] = "webDataUrls"; - // DPI_FieldPicker, having type FieldPickerPresModel - ParameterId["FieldPicker"] = "fieldPicker"; - // DPI_DescribeField, having type DescribeFieldPresModel - ParameterId["DescribeField"] = "describeField"; - // DPI_ShowDataPresModel, having type ShowDataPresModel - ParameterId["ShowDataPresModel"] = "showDataPresModel"; - // DPI_DataTablePresModel, having type ShowDataTablePresModel - ParameterId["DataTablePresModel"] = "dataTablePresModel"; - // DPI_DataTablePresModels, having type ShowDataTablePresModel[] - ParameterId["DataTablePresModels"] = "dataTablePresModels"; - // DPI_SummaryTablePresModels, having type ShowDataTablePresModel[] - ParameterId["SummaryTablePresModels"] = "summaryTablePresModels"; - // DPI_RefreshAllExtractsPresModel, having type RefreshAllExtractsPresModel - ParameterId["RefreshAllExtractsPresModel"] = "refeshAllExtractsPresModel"; - // DPI_RefreshExtractDataSourcePresModel, having type RefreshExtractDataSourcePresModel - ParameterId["RefreshExtractDataSourcePresModel"] = "refreshExtractDatasourcePresModel"; - // DPI_RefreshExtractDataSourceList, having type RefreshExtractDataSourcePresModel[] - ParameterId["RefreshExtractDataSourceList"] = "refreshExtractDatasourceList"; - // DPI_ExtractHistoryPresModel, having type ExtractHistoryPresModel - ParameterId["ExtractHistoryPresModel"] = "extractHistoryPresModel"; - // DPI_ExtractHistoryItemPresModel, having type ExtractHistoryItemPresModel - ParameterId["ExtractHistoryItemPresModel"] = "extractHistoryItem"; - // DPI_ExtractHistoryList, having type ExtractHistoryItemPresModel[] - ParameterId["ExtractHistoryList"] = "extractHistoryList"; - // DPI_DataProviderPresModel, having type DataProviderPresModel - ParameterId["DataProviderPresModel"] = "dataProviderPresModel"; - // DPI_FormatItem, having type FormatItemPresModel - ParameterId["FormatItem"] = "formatItem"; - // DPI_FormatItemList, having type FormatItemPresModel[] - ParameterId["FormatItemList"] = "formatItemList"; - // DPI_FormatContainer, having type FormatContainerPresModel - ParameterId["FormatContainer"] = "formatContainer"; - // DPI_FormatPane, having type FormatPanePresModel - ParameterId["FormatPane"] = "formatPane"; - // DPI_FormatSection, having type FormatSectionPresModel - ParameterId["FormatSection"] = "formatSection"; - // DPI_CollapsibleSection, having type CollapsibleSectionPresModel - ParameterId["CollapsibleSection"] = "collapsibleSection"; - // DPI_CompositeContainer, having type CompositeContainerPresModel - ParameterId["CompositeContainer"] = "compositeContainer"; - // DPI_UnitContainer, having type UnitContainerPresModel - ParameterId["UnitContainer"] = "unitContainer"; - // DPI_TabGroup, having type TabGroupPresModel - ParameterId["TabGroup"] = "tabGroup"; - // DPI_Tab, having type TabPresModel - ParameterId["Tab"] = "tab"; - // DPI_FormatControl, having type FormatControlPresModel - ParameterId["FormatControl"] = "formatControl"; - // DPI_TextControl, having type TextControlPresModel - ParameterId["TextControl"] = "textControl"; - // DPI_NumericControl, having type NumericControlPresModel - ParameterId["NumericControl"] = "numericControl"; - // DPI_ColorControl, having type ColorControlPresModel - ParameterId["ColorControl"] = "colorControl"; - // DPI_ToggleControl, having type ToggleControlPresModel - ParameterId["ToggleControl"] = "toggleControl"; - // DPI_SelectorControl, having type SelectorControlPresModel - ParameterId["SelectorControl"] = "enumStringStyle"; - // DPI_StatsAnalyticSpec, having type StatsAnalyticSpecPresModel - ParameterId["StatsAnalyticSpec"] = "statsAnalyticSpec"; - // DPI_ClusterSpec, having type ClusterSpecPresModel - ParameterId["ClusterSpec"] = "clusteringSpec"; - // DPI_ClusterResults, having type ClusterResultsPresModel - ParameterId["ClusterResults"] = "clusterResults"; - // DPI_ClusterUnit, having type ClusterUnitPresModel - ParameterId["ClusterUnit"] = "cluster"; - // DPI_ClusterUnits, having type ClusterUnitPresModel[] - ParameterId["ClusterUnits"] = "clusterUnitPresModels"; - // DPI_ClusterFieldANOVA, having type ClusterFieldANOVAPresModel - ParameterId["ClusterFieldANOVA"] = "clusterFieldAnova"; - // DPI_ClusterFieldANOVATable, having type ClusterFieldANOVAPresModel[] - ParameterId["ClusterFieldANOVATable"] = "clusterFieldAnovaTablePresModel"; - // DPI_ClusterEdit, having type ClusterEditPresModel - ParameterId["ClusterEdit"] = "clusterEditPresModel"; - // DPI_ClusterDescription, having type ClusterDescribePresModel - ParameterId["ClusterDescription"] = "clusterDescription"; - // DPI_OutlierResults, having type OutlierResultsPresModel - ParameterId["OutlierResults"] = "outlierResults"; - // DPI_ConnectToDataServerSourceResult, having type ConnectToDataServerSourceResultPresModel - ParameterId["ConnectToDataServerSourceResult"] = "connectToDataServerSourceResult"; - // DPI_DataServerConnectionReturnStatus, having type ConnectToDataServerSourceResultPresModel - ParameterId["DataServerConnectionReturnStatus"] = "dataServerConnectionReturnStatus"; - // DPI_WebQuantitativeColorDialog, having type WebQuantitativeColorDialogPresModel - ParameterId["WebQuantitativeColorDialog"] = "quantitativeColorDialog"; - // DPI_WebCategoricalColorDialog, having type WebCategoricalColorDialogPresModel - ParameterId["WebCategoricalColorDialog"] = "categoricalColorDialog"; - // DPI_WebSaveDatasourceDialog, having type WebSaveDatasourceDialogPresModel - ParameterId["WebSaveDatasourceDialog"] = "saveDatasourceDialog"; - // DPI_BorderStyleSpec, having type StyleSpecPresModel - ParameterId["BorderStyleSpec"] = "borderStyleSpec"; - // DPI_HaloStyleSpec, having type StyleSpecPresModel - ParameterId["HaloStyleSpec"] = "haloStyleSpec"; - // DPI_MarksColorUberEffects, having type MarksColorUberEffectsPresModel - ParameterId["MarksColorUberEffects"] = "marksColorUberEffects"; - // DPI_CategoricalColorEncoding, having type CategoricalColorEncodingPresModel - ParameterId["CategoricalColorEncoding"] = "categoricalColorEncoding"; - // DPI_CategoricalShapeEncoding, having type CategoricalShapeEncodingPresModel - ParameterId["CategoricalShapeEncoding"] = "categoricalShapeEncoding"; - // DPI_ShapePalettePresModel, having type ShapePalettePresModel - ParameterId["ShapePalettePresModel"] = "shapePalettePresModel"; - // DPI_ShapePalettePresModels, having type ShapePalettePresModel[] - ParameterId["ShapePalettePresModels"] = "shapePalettePresModels"; - // DPI_DataSourceDateProperties, having type DataSourceDatePropertiesPresModel - ParameterId["DataSourceDateProperties"] = "datasourceDateProperties"; - // DPI_DatePropertiesDateFormat, having type DatePropertiesDateFormatPresModel - ParameterId["DatePropertiesDateFormat"] = "datePropertiesDateFormat"; - // DPI_DatePropertiesDateFormats, having type DatePropertiesDateFormatPresModel[] - ParameterId["DatePropertiesDateFormats"] = "datePropertiesDateFormats"; - // DPI_HierarchySelect, having type HierarchySelectModel - ParameterId["HierarchySelect"] = "hierarchySelect"; - // DPI_HierarchySelectMember, having type HierarchySelectMemberPresModel - ParameterId["HierarchySelectMember"] = "hierarchySelectMember"; - // DPI_HierarchySelectMemberList, having type HierarchySelectMemberPresModel[] - ParameterId["HierarchySelectMemberList"] = "hierarchySelectMemberList"; - // DPI_HierarchySetDefaultMember, having type HierarchySetDefaultMemberPresModel - ParameterId["HierarchySetDefaultMember"] = "hierarchySetDefaultMember"; - // DPI_SemiStructSchema, having type SemiStructSchemaPresModel - ParameterId["SemiStructSchema"] = "semiStructSchema"; - // DPI_SemiStructSchemaMember, having type SemiStructSchemaMemberPresModel - ParameterId["SemiStructSchemaMember"] = "semiStructSchemaMember"; - // DPI_SemiStructSchemaMemberList, having type SemiStructSchemaMemberPresModel[] - ParameterId["SemiStructSchemaMemberList"] = "semiStructSchemaMemberList"; - // DPI_ParameterEditInfo, having type ParameterEditInfoPresModel - ParameterId["ParameterEditInfo"] = "parameterEditInfo"; - // DPI_ProductParameterInfo, having type ProductParameterInfoPresModel - ParameterId["ProductParameterInfo"] = "productParameterInfo"; - // DPI_CaptionedDatasourceField, having type CaptionedDatasourceInfoPresModel - ParameterId["CaptionedDatasourceField"] = "captionedDatasourceField"; - // DPI_CaptionedDatasourceFields, having type CaptionedDatasourceInfoPresModel[] - ParameterId["CaptionedDatasourceFields"] = "captionedDatasourceFields"; - // DPI_EditedParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["EditedParameterRangeDomain"] = "editedParameterRangeDomain"; - // DPI_ParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["ParameterRangeDomain"] = "parameterRangeDomain"; - // DPI_ParameterListDomain, having type ParameterListDomainPresModel - ParameterId["ParameterListDomain"] = "parameterListDomain"; - // DPI_ParameterListDomainMember, having type ParameterListDomainMemberPresModel - ParameterId["ParameterListDomainMember"] = "parameterListDomainMember"; - // DPI_ParameterListDomainMembers, having type ParameterListDomainMemberPresModel[] - ParameterId["ParameterListDomainMembers"] = "parameterListDomainMembers"; - // DPI_IndexedDomainMember, having type IndexedDomainMemberPresModel - ParameterId["IndexedDomainMember"] = "indexedDomainMember"; - // DPI_IndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["IndexedDomainMembers"] = "indexedDomainMembers"; - // DPI_NewIndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["NewIndexedDomainMembers"] = "newIndexedDomainMembers"; - // DPI_ParameterListDomainDiff, having type parameter-list-domain-diff - ParameterId["ParameterListDomainDiff"] = "parameterListDomainDiff"; - // DPI_IndexRange, having type IndexRangePresModel - ParameterId["IndexRange"] = "indexRange"; - // DPI_IndexRanges, having type IndexRangePresModel[] - ParameterId["IndexRanges"] = "indexRanges"; - // DPI_CategoricalFind, having type CategoricalFindPresModel - ParameterId["CategoricalFind"] = "categoricalFind"; - // DPI_CaptionedDataValue, having type CaptionedDataValuePresModel - ParameterId["CaptionedDataValue"] = "captionedDataValue"; - // DPI_SelectedValueCaption, having type CaptionedDataValuePresModel - ParameterId["SelectedValueCaption"] = "selectedValueCaption"; - // DPI_DataValueCaptionList, having type CaptionedDataValuePresModel[] - ParameterId["DataValueCaptionList"] = "dataValueCatpionList"; - // DPI_RangeDataValue, having type RangeDataValuePresModel - ParameterId["RangeDataValue"] = "rangeDataValue"; - // DPI_ParameterRangeDataValue, having type RangeDataValuePresModel - ParameterId["ParameterRangeDataValue"] = "parameterRangeDataValue"; - // DPI_DataValueRangeCaptions, having type DataValueRangeCaptionsPresModel - ParameterId["DataValueRangeCaptions"] = "dataValueRangeCaptions"; - // DPI_IndependentDimension, having type IndependentDimensionPresModel - ParameterId["IndependentDimension"] = "independentDimension"; - // DPI_IndependentDimensions, having type IndependentDimensionPresModel[] - ParameterId["IndependentDimensions"] = "independentDimensions"; - // DPI_AttributePerspective, having type PerspectivePresModel - ParameterId["AttributePerspective"] = "attributePerspective"; - // DPI_CubePerspective, having type PerspectivePresModel - ParameterId["CubePerspective"] = "cubePerspective"; - // DPI_AttributePerspectives, having type PerspectivePresModel[] - ParameterId["AttributePerspectives"] = "attributePerspectives"; - // DPI_CalculatedMembersForEditingPresModel, having type EditCalculatedMembersPresModel - ParameterId["CalculatedMembersForEditingPresModel"] = "calculatedMembersForEditingPresmodel"; - // DPI_CalculatedMember, having type CalculatedMemberPresModel - ParameterId["CalculatedMember"] = "calculatedMember"; - // DPI_NewCalculatedMember, having type CalculatedMemberPresModel - ParameterId["NewCalculatedMember"] = "newCalculatedMember"; - // DPI_UpdatedCalculatedMember, having type CalculatedMemberPresModel - ParameterId["UpdatedCalculatedMember"] = "updatedCalculatedMember"; - // DPI_CalculatedMembersList, having type CalculatedMemberPresModel[] - ParameterId["CalculatedMembersList"] = "calculatedMembersList"; - // DPI_CalculatedMemberHierarchyItem, having type CalculatedMemberHierarchyItemPresModel - ParameterId["CalculatedMemberHierarchyItem"] = "calculatedMemberHierarchyItem"; - // DPI_CalculatedMemberHierarchyList, having type CalculatedMemberHierarchyItemPresModel[] - ParameterId["CalculatedMemberHierarchyList"] = "calculatedMemberHierarchyList"; - // DPI_SummaryCardPresModel, having type SummaryCardPresModel - ParameterId["SummaryCardPresModel"] = "summaryCard"; - // DPI_MeasureSummary, having type MeasureSummaryPresModel - ParameterId["MeasureSummary"] = "measureSummary"; - // DPI_MeasureSummaryList, having type MeasureSummaryPresModel[] - ParameterId["MeasureSummaryList"] = "measureSummaryList"; - // DPI_AnnotationPresModel, having type AnnotationPresModel - ParameterId["AnnotationPresModel"] = "annotation"; - // DPI_AnnotationList, having type AnnotationPresModel[] - ParameterId["AnnotationList"] = "annotationList"; - // DPI_AnnotationShapeStyle, having type AnnotationShapeStylePresModel - ParameterId["AnnotationShapeStyle"] = "annotationShapeStyle"; - // DPI_Telemetry, having type TelemetryPresModel - ParameterId["Telemetry"] = "telemetry"; - // DPI_DataSourceTelemetry, having type DataSourceTelemetryPresModel - ParameterId["DataSourceTelemetry"] = "dataSourceTelemetry"; - // DPI_DataSourceTelemetryList, having type DataSourceTelemetryPresModel[] - ParameterId["DataSourceTelemetryList"] = "dataSourceTelemetryList"; - // DPI_VisualSpecificationTelemetry, having type VisualSpecificationTelemetryPresModel - ParameterId["VisualSpecificationTelemetry"] = "visualSpecificationTelemetry"; - // DPI_VisualSpecificationTelemetryList, having type VisualSpecificationTelemetryPresModel[] - ParameterId["VisualSpecificationTelemetryList"] = "visualSpecificationTelemetryList"; - // DPI_UnderlyingDataTable, having type UnderlyingDataTablePresModel - ParameterId["UnderlyingDataTable"] = "underlyingDataTable"; - // DPI_UnderlyingDataTables, having type UnderlyingDataTablePresModel[] - ParameterId["UnderlyingDataTables"] = "underlyingDataTables"; - // DPI_UnderlyingDataTableColumn, having type UnderlyingDataTableColumnPresModel - ParameterId["UnderlyingDataTableColumn"] = "underlyingDataTableColumn"; - // DPI_UnderlyingDataTableColumns, having type UnderlyingDataTableColumnPresModel[] - ParameterId["UnderlyingDataTableColumns"] = "underlyingDataTableColumns"; - // DPI_PageCacheID, having type PageCacheIDPresModel - ParameterId["PageCacheID"] = "pageCacheId"; - // DPI_RelationalPageCacheID, having type PageCacheIDPresModel - ParameterId["RelationalPageCacheID"] = "relationalPageCacheId"; - // DPI_SearchResultsCacheID, having type PageCacheIDPresModel - ParameterId["SearchResultsCacheID"] = "searchResultsCacheId"; - // DPI_PageInfo, having type PageInfoPresModel - ParameterId["PageInfo"] = "pageInfo"; - // DPI_RowColPair, having type RowColPairPresModel - ParameterId["RowColPair"] = "rowColPair"; - // DPI_TopLeftRowCol, having type RowColPairPresModel - ParameterId["TopLeftRowCol"] = "topLeftRowCol"; - // DPI_BotRightRowCol, having type RowColPairPresModel - ParameterId["BotRightRowCol"] = "botRightRowCol"; - // DPI_RowColPairs, having type RowColPairPresModel[] - ParameterId["RowColPairs"] = "rowColPairs"; - // DPI_TableViewCacheInfo, having type TableViewCachePresModel - ParameterId["TableViewCacheInfo"] = "tableViewCacheInfo"; - // DPI_TableViewInfo, having type tableViewInfoPresModel - ParameterId["TableViewInfo"] = "tableViewInfo"; - // DPI_TableViewColumnInfo, having type TableViewColumnInfoPresModel - ParameterId["TableViewColumnInfo"] = "tableViewColumnInfo"; - // DPI_TableViewColumns, having type TableViewColumnInfoPresModel[] - ParameterId["TableViewColumns"] = "tableViewColumns"; - // DPI_TableViewPageItem, having type TableViewPageItemPresModel - ParameterId["TableViewPageItem"] = "tableViewPageItem"; - // DPI_TableViewPageColumns, having type TableViewPageItemPresModel[] - ParameterId["TableViewPageColumns"] = "tableViewPageColumns"; - // DPI_TableViewPageRow, having type TableViewPageRowPresModel - ParameterId["TableViewPageRow"] = "tableViewPageRow"; - // DPI_TableViewPageRows, having type TableViewPageRowPresModel[] - ParameterId["TableViewPageRows"] = "tableViewPageRows"; - // DPI_TableViewPage, having type TableViewPagePresModel - ParameterId["TableViewPage"] = "tableViewPage"; - // DPI_CategoricalValuePicker, having type CategoricalValuePickerPresModel - ParameterId["CategoricalValuePicker"] = "categoricalValuePicker"; - // DPI_AnnotationShapeBorderStyle, having type LineStylePresModel - ParameterId["AnnotationShapeBorderStyle"] = "annotationShapeBorderStyle"; - // DPI_AnotationShapeStrokeStyle, having type LineStylePresModel - ParameterId["AnotationShapeStrokeStyle"] = "annotationShapeStrokeStyle"; - // DPI_CategoricalBinEditorPresModel, having type CategoricalBinEditorPresModel - ParameterId["CategoricalBinEditorPresModel"] = "categoricalBinEditor"; - // DPI_CategoricalBinItem, having type CategoricalBinItemPresModel - ParameterId["CategoricalBinItem"] = "categoricalBinItemPresModel"; - // DPI_CategoricalBinItems, having type CategoricalBinItemPresModel[] - ParameterId["CategoricalBinItems"] = "categoricalBinItemPresModels"; - // DPI_MeasurePickerFieldInfo, having type MeasurePickerFieldInfoPresModel - ParameterId["MeasurePickerFieldInfo"] = "measurePickerFieldInfo"; - // DPI_MeasurePickerFields, having type MeasurePickerFieldInfoPresModel[] - ParameterId["MeasurePickerFields"] = "measurePickerFields"; - // DPI_MeasureAggregationInfo, having type MeasureAggregationInfoPresModel - ParameterId["MeasureAggregationInfo"] = "measureAggregationInfo"; - // DPI_MeasureAggregations, having type MeasureAggregationInfoPresModel[] - ParameterId["MeasureAggregations"] = "measureAggregations"; - // DPI_TuplePair, having type TuplePairPresModel - ParameterId["TuplePair"] = "tuplePair"; - // DPI_DimensionBound, having type DimensionBoundPresModel - ParameterId["DimensionBound"] = "dimensionBound"; - // DPI_PerspectiveBounds, having type DimensionBoundPresModel[] - ParameterId["PerspectiveBounds"] = "perspectiveBounds"; - // DPI_FilterPerspectiveInfoPresModel, having type FilterPerspectiveInfoPresModel - ParameterId["FilterPerspectiveInfoPresModel"] = "filterPerspectiveInfo"; - // DPI_TableRelevance, having type TableRelevancePresModel - ParameterId["TableRelevance"] = "tableRelevance"; - // DPI_AddInRegistrationPresModel, having type AddInRegistrationPresModel - ParameterId["AddInRegistrationPresModel"] = "addInRegistrationPresModel"; - // DPI_AddInRegistrationPresModelList, having type AddInRegistrationPresModel[] - ParameterId["AddInRegistrationPresModelList"] = "addInRegistrationPresModelList"; - // DPI_AddInDashboardAuthoringWidget, having type AddInDashboardWidgetPresModel - ParameterId["AddInDashboardAuthoringWidget"] = "addInDashboardAuthoringWidgetPresModel"; - // DPI_AddInInstance, having type AddInInstancePresModel - ParameterId["AddInInstance"] = "addInInstancePresModel"; - // DPI_AddInLocator, having type AddInLocatorPresModel - ParameterId["AddInLocator"] = "addInLocatorPresModel"; - // DPI_AddInContext, having type AddInContext - ParameterId["AddInContext"] = "addInContext"; - // DPI_AddInMode, having type AddInMode - ParameterId["AddInMode"] = "addInMode"; - // DPI_SetAxisRangeStartResult, having type SetAxisRangeResult - ParameterId["SetAxisRangeStartResult"] = "setAxisRangeStartResult"; - // DPI_SetAxisRangeEndResult, having type SetAxisRangeResult - ParameterId["SetAxisRangeEndResult"] = "setAxisRangeEndResult"; - // DPI_AddInEnvironment, having type AddInEnvironmentPresModel - ParameterId["AddInEnvironment"] = "addInEnvironmentPresModel"; - // DPI_AddInDashboardInfo, having type AddInDashboardInfoPresModel - ParameterId["AddInDashboardInfo"] = "addInDashboardInfoPresModel"; - // DPI_AddInSettingsInfo, having type AddInSettingsInfoPresModel - ParameterId["AddInSettingsInfo"] = "addInSettingsInfo"; - // DPI_AddInBootstrapInfo, having type AddInBootstrapInfoPresModel - ParameterId["AddInBootstrapInfo"] = "addInBootstrapInfo"; - // DPI_AddInDebugSettings, having type AddInDebugSettingsPresModel - ParameterId["AddInDebugSettings"] = "addInDebugSettings"; - // DPI_RichText, having type RichTextPresModel - ParameterId["RichText"] = "richText"; - // DPI_RichTextKeywordSubList, having type RichTextKeywordSubListPresModel - ParameterId["RichTextKeywordSubList"] = "richTextKeywordsSublist"; - // DPI_RichTextKeywordSubLists, having type RichTextKeywordSubListPresModel[] - ParameterId["RichTextKeywordSubLists"] = "richTextKeywordSublists"; - // DPI_RichTextKeywordList, having type RichTextKeywordListPresModel - ParameterId["RichTextKeywordList"] = "richTextKeywordsList"; - // DPI_RichTextBlockStyle, having type RichTextBlockStylePresModel - ParameterId["RichTextBlockStyle"] = "richTextBlockStyle"; - // DPI_RichTextContentStyle, having type RichTextContentStylePresModel - ParameterId["RichTextContentStyle"] = "richTextContentStyle"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var CommandIds_1 = __webpack_require__(12); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistry_1 = __webpack_require__(13); - var CommandRegistration_1 = __webpack_require__(14); - var CommandMappingRegistryFactory = (function () { - function CommandMappingRegistryFactory() { - } - /** - * Creates and populates a new CommandMappingRegistry for the specific version number requested - * - * @static - * @param {VersionNumber} versionNumber - * @returns {CommandMappingRegistry} - * @memberof CommandMappingRegistryFactory - */ - CommandMappingRegistryFactory.createCommandMappingRegistry = function (versionNumber) { - var result = new CommandMappingRegistry_1.CommandMappingRegistry(); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.InitializeAddIn, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInBootstrapInfo, Params_1.ParameterId.AddInBootstrapInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetUnderlyingData, CommandIds_1.DocCommands.GetUnderlyingData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IncludeAllColumns, Params_1.ParameterId.IncludeAllColumns), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSummaryData, CommandIds_1.DocCommands.GetSummaryData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingSummaryDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyCategoricalFilter, CommandIds_1.DocCommands.CategoricalFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterValues, Params_1.ParameterId.FilterAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterUpdateType, Params_1.ParameterId.FilterUpdateType), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IsExcludeMode, Params_1.ParameterId.Exclude, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyRangeFilter, CommandIds_1.DocCommands.RangeFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMin, Params_1.ParameterId.RangeMin, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMax, Params_1.ParameterId.RangeMax, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeNullOption, Params_1.ParameterId.Included, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearFilter, CommandIds_1.DocCommands.ClearExistingFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.WorksheetName, Params_1.ParameterId.Worksheet))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetSelectedMarks, CommandIds_1.DocCommands.GetSelectionData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectedData, Params_1.ParameterId.SelectionData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetHighlightedMarks, CommandIds_1.DocCommands.GetHighlightedData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HighlightedData, Params_1.ParameterId.HighlightedData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SaveAddInSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SettingsValues, Params_1.ParameterId.AddInSettings)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInSettingsInfo, Params_1.ParameterId.AddInSettingsInfo))); - return result; - }; - return CommandMappingRegistryFactory; - }()); - exports.CommandMappingRegistryFactory = CommandMappingRegistryFactory; - - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\commands-enum-ts.template', u'..\\js-api\\api-core\\temp-pres-layer\\all-cmd-wrappers.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var DocCommands; - (function (DocCommands) { - // Saves the settings for the specified add-in id - DocCommands["SaveAddInSettings"] = "save-add-in-settings"; - // Gets the pres model for an add-in instance. - DocCommands["GetAddInInstancePresModel"] = "get-add-in-instance-pres-model"; - // Gets the pres model for the dashboard authoring widget for add-ins. - DocCommands["GetAddInDashboardAuthoringWidgetPresModel"] = "get-add-in-dashboard-authoring-widget-pres-model"; - // Gets the necessary information for an add-in to initialize itself. - DocCommands["InitializeAddInInstance"] = "initialize-add-in-instance"; - // Enables or disable javascript debugging of an add-in. - DocCommands["SetAddInJsDebuggingEnabled"] = "set-add-in-js-debugging-enabled"; - // Whether or not we should pause before loading. If missing, toggle the value - DocCommands["SetPauseBeforeLoadingAddIn"] = "set-pause-before-loading-add-in"; - // Reloads the Add-In widget and web page. - DocCommands["ReloadAddIn"] = "reload-add-in"; - // Retrieves the context menu for a dashboard add-in. - DocCommands["GetAddInZoneContextMenu"] = "get-add-in-zone-context-menu"; - // Gets the pres model which indicates what the debug settings for add-ins is. - DocCommands["GetAddInDebugSettingsPresModel"] = "get-add-in-debug-settings-pres-model"; - // Gets the summary data for a worksheet - DocCommands["GetSummaryData"] = "get-summary-data"; - // Gets the underlying data for a worksheet - DocCommands["GetUnderlyingData"] = "get-underlying-data"; - // Select all marks that have the tuple's value for the given field . - DocCommands["SelectByTupleValue"] = "select-by-tuple-value"; - // Creates or updates and existing filter based on the provided updates. - DocCommands["ApplyCategoricalFilterUpdates"] = "apply-categorical-filter-updates"; - // Search filter domain for text and return any matching tuples. - DocCommands["CategoricalFilterSearch"] = "categorical-filter-search"; - // Clear all members from the table of the identified cache. - DocCommands["CategoricalFilterClearRelationalCache"] = "categorical-filter-clear-relational-cache"; - // Create tuples for an existing filter from supplied text. - DocCommands["GetCategoricalFilterTuplesFromText"] = "get-categorical-filter-tuples-from-text"; - // Returns a presmodel backing a categorical filter, initializing a data cache for fast lookup of the filter's member domain. - DocCommands["GetCategoricalFilter"] = "get-categorical-filter"; - // Retrieves a page of data to display in the filter's list domain - DocCommands["GetCategoricalFilterDomainPage"] = "get-categorical-filter-domain-page"; - // Reset filter to committed state - DocCommands["ResetCategoricalFilterDeferred"] = "reset-categorical-filter-deferred"; - // Use uncommitted state to reset the filter's controller - DocCommands["RecreateCategoricalFilterController"] = "recreate-categorical-filter-controller"; - // Validates a Categroical Filter name. - DocCommands["ValidateCategoricalFilterName"] = "validate-categorical-filter-name"; - // Gets a summary of the filter pattern. - DocCommands["GetCategoricalFilterPatternSummary"] = "get-categorical-filter-pattern-summary"; - // Gets a summery of the filter condition. - DocCommands["GetCategoricalFilterConditionSummary"] = "get-categorical-filter-condition-summary"; - // Load the current minimum and maximum data value range for the condition field. - DocCommands["LoadCategoricalFilterConditionFieldValueRange"] = "load-categorical-filter-condition-field-value-range"; - // Validates a Categorical Filter's condition formula and re-writes it. - DocCommands["ValidateCategoricalFilterConditionFormula"] = "validate-categorical-filter-condition-formula"; - // Gets a summery of the filter limit. - DocCommands["GetCategoricalFilterLimitSummary"] = "get-categorical-filter-limit-summary"; - // Validates a Categorical Filter's limit count. - DocCommands["ValidateCategoricalFilterLimitCount"] = "validate-categorical-filter-limit-count"; - // Validates a Categorical Filter's limit formula, and re-writes the formula. - DocCommands["ValidateCategoricalFilterLimitFormula"] = "validate-categorical-filter-limit-formula"; - // Validates a Categorical Filter's limit. - DocCommands["ValidateCategoricalFilterLimit"] = "validate-categorical-filter-limit"; - // Inform cache when a user changes the range - DocCommands["CategoricalFilterSetRangeTypeDeferred"] = "categorical-filter-set-range-type-deferred"; - // Inform cache when a user changes whether the selection is exclusive - DocCommands["CategoricalFilterSetSelectionExclusiveDeferred"] = "categorical-filter-set-selection-exclusive-deferred"; - // Inform cache when a user changes whether an empty selection should be considered a selection of 'All' in a Manual selection mode - DocCommands["CategoricalFilterSetUseAllWhenManualIsEmptyDeferred"] = "categorical-filter-set-use-all-when-manual-is-empty-deferred"; - // Inform cache when a user alters the preset type - DocCommands["CategoricalFilterSetPresetTypeDeferred"] = "categorical-filter-set-preset-type-deferred"; - // Inform cache the user has selected one or more members - DocCommands["CategoricalFilterSelectRelationalMembersDeferred"] = "categorical-filter-select-relational-members-deferred"; - // Inform cache the user has deselected one or more members - DocCommands["CategoricalFilterDeselectRelationalMembersDeferred"] = "categorical-filter-deselect-relational-members-deferred"; - // Inform cache when a user selects everything in the domain - DocCommands["CategoricalFilterSelectAllRelationalMembersDeferred"] = "categorical-filter-select-all-relational-members-deferred"; - // Inform cache when a user deselects everything in the domain - DocCommands["CategoricalFilterDeselectAllRelationalMembersDeferred"] = "categorical-filter-deselect-all-relational-members-deferred"; - // Inform cache the user wants to see a different domain (e.g. relevant values only) - DocCommands["CategoricalFilterSetDomainTypeDeferred"] = "categorical-filter-set-domain-type-deferred"; - // Set whether filters apply to totals as well as non-totals table calcs - DocCommands["FilterApplyToTotalTableCalcs"] = "filter-apply-to-total-table-calcs"; - // Gets the axis options . - DocCommands["GetAxisOptions"] = "get-axis-options"; - // Reset the axis options . - DocCommands["ResetAxisOptions"] = "reset-axis-options"; - // Show axis edit dialog - DocCommands["ShowEditAxisDialog"] = "show-edit-axis-dialog"; - // Sets the axis direction - DocCommands["SetAxisReversed"] = "set-axis-reversed"; - // Sets the axis scale type - DocCommands["SetAxisScaleType"] = "set-axis-scale-type"; - // Sets the main title of a quantitative axis - DocCommands["SetAxisTitle"] = "set-axis-title"; - // Sets the subtitle of a quantitative axis - DocCommands["SetAxisSubtitle"] = "set-axis-subtitle"; - // Sets whether we should use the automatic subtitle for a quantitative axis - DocCommands["SetAxisUseAutomaticSubtitle"] = "set-axis-use-automatic-subtitle"; - // Sets the axis range type of a quantitative axis - DocCommands["SetAxisRangeType"] = "set-axis-range-type"; - // Sets whether or not to force-include zero on a quantitative axis - DocCommands["SetAxisIncludeZero"] = "set-axis-include-zero"; - // Sets new min/max range endings for axis - DocCommands["SetAxisRange"] = "set-axis-range"; - // Synchronize dual axes on a folded quantitative axis - DocCommands["SetAxisFoldState"] = "set-axis-fold-state"; - // - DocCommands["GetHighlightedData"] = "get-highlighted-data"; - // - DocCommands["GetSelectionData"] = "get-selection"; - // - DocCommands["Select"] = "select"; - // - DocCommands["SelectAll"] = "select-all"; - // - DocCommands["SelectByValue"] = "select-by-value"; - // - DocCommands["SelectNoneIncludingMaster"] = "select-none-including-master"; - // - DocCommands["AddManualItemsToFilter"] = "add-manual-items-to-filter"; - // - DocCommands["CategoricalFilter"] = "categorical-filter"; - // - DocCommands["CategoricalFilterByIndex"] = "categorical-filter-by-index"; - // - DocCommands["ChangeSharedFilter"] = "change-shared-filter"; - // - DocCommands["ClearContextFilters"] = "clear-context-filters"; - // - DocCommands["ClearExistingFilter"] = "clear-existing-filter"; - // - DocCommands["DefaultFilter"] = "default-filter"; - // - DocCommands["FilterGeo"] = "filter-geo"; - // - DocCommands["FilterNeg"] = "filter-neg"; - // - DocCommands["FilterNulls"] = "filter-nulls"; - // - DocCommands["FilterTargets"] = "filter-targets"; - // - DocCommands["GetSharedFilterPresModel"] = "get-shared-filter-pres-model"; - // - DocCommands["HierarchicalFilter"] = "hierarchical-filter"; - // - DocCommands["KeepOnlyOrExclude"] = "keep-only-or-exclude"; - // - DocCommands["RangeFilter"] = "range-filter"; - // - DocCommands["RelDateFilter"] = "relative-date-filter"; - // - DocCommands["ResetFilter"] = "reset-filter"; - // - DocCommands["ShowGeoAtDefault"] = "show-geo-at-default"; - // - DocCommands["ShowSVAtDefault"] = "show-sv-at-default"; - // - DocCommands["ToggleLockQuickFilters"] = "toggle-lock-quick-filters"; - })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); - - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Registry which contains mappings from an Api VerbId to a pres-layer command. - * This includes the parameters and return values of the command as well - * - * @export - * @class CommandMappingRegistry - */ - var CommandMappingRegistry = (function () { - /** - * Creates an instance of CommandMappingRegistry. - * @memberof CommandMappingRegistry - */ - function CommandMappingRegistry() { - this.commands = {}; - } - /** - * Adds a new command to the registry - * - * @param {CommandRegistration} command - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.addCommand = function (command) { - this.commands[command.apiVerbId] = command; - }; - /** - * Whether or not this registry contains a definition for this ApiVerbId - * - * @param {ApiVerbId} apiVerbId - * @returns {boolean} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.hasCommand = function (apiVerbId) { - if (!this.commands.hasOwnProperty(apiVerbId)) { - return false; - } - if (!this.commands[apiVerbId]) { - return false; - } - return true; - }; - /** - * Gets the command registration for this command id or throws if it doesn't exist - * - * @param {ApiVerbId} apiVerbId - * @returns {CommandRegistration} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.getCommand = function (apiVerbId) { - if (!this.hasCommand(apiVerbId)) { - throw new Error('Unknown ApiVerb: ' + apiVerbId); - } - return this.commands[apiVerbId]; - }; - return CommandMappingRegistry; - }()); - exports.CommandMappingRegistry = CommandMappingRegistry; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - /** - * Represents an input or output paramter for a command. - * - * @export - * @class CommandParameter - */ - var CommandParameter = (function () { - /** - * Creates an instance of CommandParameter. - * @param {ApiParameterId} apiId - * @param {PresLayerParameterId} presLayerId - * @param {boolean} [isOptional] - * @memberof CommandParameter - */ - function CommandParameter(_apiId, _presLayerId, _isOptional) { - this._apiId = _apiId; - this._presLayerId = _presLayerId; - this._isOptional = _isOptional; - } - Object.defineProperty(CommandParameter.prototype, "apiId", { - /** - * The Id of the Api Parameter - * - * @readonly - * @type {ApiParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "presLayerId", { - /** - * The Id of the Pres Layer Parameter - * - * @readonly - * @type {PresLayerParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "isOptional", { - /** - * Whether or not this is an optional parameter - * - * @readonly - * @type {boolean} - * @memberof CommandParameter - */ - get: function () { - return !!this._isOptional; - }, - enumerable: true, - configurable: true - }); - return CommandParameter; - }()); - exports.CommandParameter = CommandParameter; - /** - * Represents a the complete mapping of an ApiCommand to its corresponding pres-layer command - * and the conversion of the output value as well - * - * @export - * @class CommandRegistration - */ - var CommandRegistration = (function () { - function CommandRegistration(_apiVerbId, _commandId, _inputParameters, _outputParameter) { - this._apiVerbId = _apiVerbId; - this._commandId = _commandId; - this._inputParameters = _inputParameters; - this._outputParameter = _outputParameter; - } - Object.defineProperty(CommandRegistration.prototype, "apiVerbId", { - get: function () { - return this._apiVerbId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "commandId", { - get: function () { - return this._commandId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "inputs", { - get: function () { - return this._inputParameters || new Array(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "output", { - get: function () { - return this._outputParameter; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "needsAddInLocator", { - /** - * Whether or not this command requires an add-in locator to be injected into it - * - * @readonly - * @type {boolean} - * @memberof CommandRegistration - */ - get: function () { - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var input = _a[_i]; - if (input.apiId === api_internal_contract_1.ParameterId.AddInLocator) { - return true; - } - } - return false; - }, - enumerable: true, - configurable: true - }); - /** - * Creates a dictionary of pres-layer parameters from the input dictionary - * of api parameters. - * - * @param {ExecuteParameters} parameters - The parameters to convert - * @param {ApiToPresLayerMappingRegistry} apiToPresLayer - mapping to determine the conversion - * @returns {{ [paramId: string]: object; }} - parameters to send to the pres-layer - * @memberof CommandRegistration - */ - CommandRegistration.prototype.createParams = function (parameters, apiToPresLayer) { - var result = {}; - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var inputParam = _a[_i]; - // First make sure the parameter is there or that it's optional - if (!parameters.hasOwnProperty(inputParam.apiId)) { - if (inputParam.isOptional) { - continue; - } - else { - throw new Error('Missing parameter for command: ' + inputParam.apiId); - } - } - // Find the conversion function for this parameter - var conversionFn = apiToPresLayer.get(inputParam.apiId, inputParam.presLayerId); - // Convert the pres model and insert it into our results object - result[inputParam.presLayerId] = conversionFn(parameters[inputParam.apiId]); - } - return result; - }; - /** - * Processes the result received back after executing a pres-layer command - * - * @param {{ [docParamId: string]: object; }} resultParameters - * @param {PresLayerToApiMappingRegistry} presLayerToApi - * @returns {Model} - * @memberof CommandRegistration - */ - CommandRegistration.prototype.ProcessResult = function (resultParameters, presLayerToApi) { - // TODO: Add error handling - if (!resultParameters.hasOwnProperty(this.output.presLayerId)) { - throw new Error('Missing exptected result parameter: ' + this.output.presLayerId); - } - var conversionFn = presLayerToApi.get(this.output.presLayerId, this.output.apiId); - return conversionFn(resultParameters[this.output.presLayerId]); - }; - return CommandRegistration; - }()); - exports.CommandRegistration = CommandRegistration; - - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Events_1 = __webpack_require__(16); - var PresLayerToApiConverter_1 = __webpack_require__(17); - /** - * Simple wrapper which holds a mapping to go from a pres-layer event to an API event - */ - var EventMappingRegistration = (function () { - function EventMappingRegistration(_presLayerId, _apiId, _converter) { - this._presLayerId = _presLayerId; - this._apiId = _apiId; - this._converter = _converter; - } - Object.defineProperty(EventMappingRegistration.prototype, "presLayerId", { - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "apiId", { - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "converter", { - get: function () { - return this._converter; - }, - enumerable: true, - configurable: true - }); - return EventMappingRegistration; - }()); - exports.EventMappingRegistration = EventMappingRegistration; - var EventMappingRegistryFactory = (function () { - function EventMappingRegistryFactory() { - } - /** - * Creates and populates a new EventMappingRegistry for the specific version number requested - * - * @param {VersionNumber} versionNumber - * @returns {EventMappingRegistry} - */ - EventMappingRegistryFactory.createEventMappingRegistry = function (versionNumber) { - var registry = {}; - registry[Events_1.NotificationId.SelectionChanged] = new EventMappingRegistration(Events_1.NotificationId.SelectionChanged, api_internal_contract_1.NotificationId.SelectedMarksChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId); - return registry; - }; - return EventMappingRegistryFactory; - }()); - exports.EventMappingRegistryFactory = EventMappingRegistryFactory; - - -/***/ }, -/* 16 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\events-ts.template', u'..\\js-api\\api-core\\temp-pres-layer\\all-events.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // Events you can register to receive presentation models - var NotificationId; - (function (NotificationId) { - // Triggered when aliases are to be edited. Used to launch a dialog. - NotificationId["EditAliasesDialogNotification"] = "edit-aliases-dialog-notification-event"; - // for the calculation dialog - NotificationId["CalculationDialog"] = "calculation-dialog-event"; - // update for an adhoc calc in a type in pill - NotificationId["TypeInPill"] = "type-in-pill-event"; - // results of a validation command - NotificationId["CommandValidation"] = "command-validation-event"; - // event for the groups dialog - NotificationId["UpdateCategoricalBinEditDialog"] = "update-categorical-bin-edit-dialog-event"; - // for the categorical color dialog - NotificationId["CategoricalColor"] = "categorical-color-event"; - // update the web categorical color dialog - NotificationId["WebCategoricalColorDialog"] = "web-categorical-color-dialog-event"; - // user invoked action which requires a Data Alert Dialog - NotificationId["DataAlertDialog"] = "data-alert-dialog-event"; - // event for when the data source being edited is updated - NotificationId["UpdateDataPreparation"] = "update-data-preparation-event"; - // event for when the data source data is updated - NotificationId["UpdateDataSourceData"] = "update-data-source-data-event"; - // event for getting the pres model to update file join table properties - NotificationId["TextFileProperties"] = "text-file-properties-event"; - // event for the detailed error dialog - NotificationId["UpdateDetailedErrorDialog"] = "update-detailed-error-dialog-event"; - // notify changes to the state of a filter's relational model - NotificationId["FilterRelationalStateChanged"] = "filter-relational-state-changed-event"; - // notify changes to the size/selection count of a relational domain - NotificationId["FilterRelationalDomainChanged"] = "filter-relational-domain-changed-event"; - // notify when filter cache was requested but not found - NotificationId["FilterCacheNotFound"] = "filter-cache-not-found-event"; - // Hierarchy Select model observable notification. - NotificationId["HierarchyNotification"] = "hierarchy-notification-event"; - // Hierarchy selection change notifications. - NotificationId["HierarchySelection"] = "hierarchy-selection-event"; - // event for the bin dialog - NotificationId["UpdateNumericBinEditDialog"] = "update-numeric-bin-edit-dialog-event"; - // event for the map options dialog - NotificationId["MapOptionsDialog"] = "map-options-dialog-event"; - // notify the Page UI(hide/show states, layout) needs to be updated - NotificationId["UpdatePageUINotification"] = "update-page-uinotification-event"; - // notify to the SceneView has been drawn. - NotificationId["SceneViewDrawnNotification"] = "scene-view-drawn-notification-event"; - // The AnimationControlChange event fires when the user clicks an animation playback button: forward, stop, slow, fast, etc. - NotificationId["AnimationControlChange"] = "animation-control-change-event"; - // update the web quantitative color dialog - NotificationId["WebQuantitativeColorDialog"] = "web-quantitative-color-dialog-event"; - // update the axis edit dialog - NotificationId["UpdateEditAxisDialog"] = "update-edit-axis-dialog-event"; - // event for the reference line dialog, which is only valid during web authoring - NotificationId["UpdateRefLineDialog"] = "update-ref-line-dialog-event"; - // event to trigger other reference line dialogs to close - NotificationId["RefLineDialogOpening"] = "ref-line-dialog-opening-event"; - // event for the close data source error dialog, which is only valid during web authoring - NotificationId["CloseDataSourceErrorDialog"] = "close-data-source-error-dialog-event"; - // update the web Save Datasource dialog - NotificationId["WebSaveDatasourceDialog"] = "web-save-datasource-dialog-event"; - // warning resulting from WarningMsg - NotificationId["WarningMessage"] = "warning-message-event"; - // event for the table calc dialog, on web, this is only valid during web authoring - NotificationId["TableCalcDialog"] = "table-calc-dialog-event"; - // user invoked action which requires Table Calc Dialog - NotificationId["TableCalcActivateDialog"] = "table-calc-activate-dialog-event"; - // event for the trend line dialog - NotificationId["UpdateTrendLineEditDialog"] = "update-trend-line-edit-dialog-event"; - // The table page cache has been refreshed; pages must be reloaded from the cache. - NotificationId["PageCacheRefresh"] = "page-cache-refresh-event"; - // The table page cache has expired and all resources have been released. - NotificationId["PageCacheExpired"] = "page-cache-expired-event"; - // All pages, identified by row/col, in the provided list have expired and should be reloaded. - NotificationId["PageCachePagesExpired"] = "page-cache-pages-expired-event"; - // All pages betweem the range (inclusive) in the provided list have expired and should be reloaded. - NotificationId["PageCachePageRangeExpired"] = "page-cache-page-range-expired-event"; - // Update for the rich text editor dialog - NotificationId["RichTextEditorDialog"] = "rich-text-editor-dialog-event"; - // notification to launch the hybrid UI showcase - NotificationId["LaunchHybridUIShowcase"] = "launch-hybrid-uishowcase-event"; - // notification of new echoed text for HybridUI showcase demo - NotificationId["HybridUIShowcaseEcho"] = "hybrid-uishowcase-echo-event"; - // Triggered when the user wants to reload an add-in instance. - NotificationId["ReloadAddIn"] = "reload-add-in-event"; - // Triggered when the selected marks have changed. - NotificationId["SelectionChanged"] = "selection-changed-event"; - // a test event with a pres model - NotificationId["TestEventWithModel"] = "test-event-with-model-event"; - // a test event without a pres model - NotificationId["TestEventWithoutModel"] = "test-event-without-model-event"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumMappings_1 = __webpack_require__(18); - /** - * Class containing helper methods for converting from PresLayerPresModels to their ApiPresModels equivalents - * - * @export - * @class PresLayerToApiConverter - */ - var PresLayerToApiConverter = (function () { - function PresLayerToApiConverter() { - } - PresLayerToApiConverter.convertSheetPath = function (plSheetPath) { - var result = { - sheetName: plSheetPath.sheetName, - isDashboard: plSheetPath.isDashboard, - storyboard: plSheetPath.storyboard, - flipboardZoneID: plSheetPath.flipboardZoneId, - storyPointID: plSheetPath.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertVisualId = function (plVisualId) { - var result = { - worksheet: plVisualId.worksheet, - dashboard: plVisualId.dashboard, - storyboard: plVisualId.storyboard, - flipboardZoneID: plVisualId.flipboardZoneId, - storyPointID: plVisualId.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertAddInLocator = function (plAddInLocator) { - var dashboardPath = undefined; - if (plAddInLocator.sheetPath) { - dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath); - } - var result = { - instanceId: plAddInLocator.addInInstanceId, - dashboardPath: dashboardPath - }; - return result; - }; - PresLayerToApiConverter.convertDashboardInZones = function (plDashboard) { - var result = new Array(); - for (var _i = 0, _a = Object.keys(plDashboard.zones); _i < _a.length; _i++) { - var zoneKey = _a[_i]; - var zone = plDashboard.zones[zoneKey]; - var apiZone = { - name: zone.zoneCommon.name, - zoneId: zone.zoneId, - zoneType: EnumMappings_1.PresLayerToApiEnumMappings.zoneType.convert(zone.zoneCommon.zoneType), - height: zone.zoneCommon.h, - width: zone.zoneCommon.w, - x: zone.zoneCommon.x, - y: zone.zoneCommon.y - }; - result.push(apiZone); - } - return result; - }; - PresLayerToApiConverter.convertDashboardInfo = function (plDashboardInfo) { - var result = { - zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel), - name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName, - addInZoneId: plDashboardInfo.zoneId - }; - return result; - }; - PresLayerToApiConverter.convertAddInInstance = function (plAddInInstance) { - var result = { - url: plAddInInstance.addInRegistrationPresModel.url, - locator: PresLayerToApiConverter.convertAddInLocator(plAddInInstance.addInLocatorPresModel) - }; - return result; - }; - PresLayerToApiConverter.convertAddInEnivrionment = function (plAddInEnvironment) { - var result = { - addInContext: EnumMappings_1.PresLayerToApiEnumMappings.addInContext.convert(plAddInEnvironment.addInContext), - addInMode: EnumMappings_1.PresLayerToApiEnumMappings.addInMode.convert(plAddInEnvironment.addInMode), - addInLocale: plAddInEnvironment.addInLocale, - addInLanguage: plAddInEnvironment.addInLanguage, - tableauVersion: plAddInEnvironment.tableauVersion, - operatingSystem: plAddInEnvironment.operatingSystem, - apiVersion: plAddInEnvironment.apiVersion - }; - return result; - }; - PresLayerToApiConverter.convertAddInSettingsInfo = function (plAddInSettings) { - var result = { - // addInSettings is undefined during bootstrap initialization - settingsValues: plAddInSettings.addInSettings || {} - }; - return result; - }; - PresLayerToApiConverter.convertAddInBootstrapInfo = function (plBootstrapInfo) { - var result = { - addinDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel), - addInEnvironment: PresLayerToApiConverter.convertAddInEnivrionment(plBootstrapInfo.addInEnvironmentPresModel), - addInInstance: PresLayerToApiConverter.convertAddInInstance(plBootstrapInfo.addInInstancePresModel), - addInSettingsInfo: PresLayerToApiConverter.convertAddInSettingsInfo(plBootstrapInfo.addInSettingsInfo) - }; - return result; - }; - return PresLayerToApiConverter; - }()); - exports.PresLayerToApiConverter = PresLayerToApiConverter; - - -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var api_utils_1 = __webpack_require__(19); - var Enums = __webpack_require__(22); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - var PresLayerToApiEnumMappings = (function () { - function PresLayerToApiEnumMappings() { - } - PresLayerToApiEnumMappings.zoneType = new api_utils_1.EnumConverter((_a = {}, - _a[Enums.ZoneType.ZT_Invalid] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Viz] = api_internal_contract_1.DashboardObjectType.Worksheet, - _a[Enums.ZoneType.ZT_ColorLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_ShapeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_SizeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_MapLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_QuickFilter] = api_internal_contract_1.DashboardObjectType.QuickFilter, - _a[Enums.ZoneType.ZT_Highlighter] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_CurrPage] = api_internal_contract_1.DashboardObjectType.PageFilter, - _a[Enums.ZoneType.ZT_Empty] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Title] = api_internal_contract_1.DashboardObjectType.Title, - _a[Enums.ZoneType.ZT_Text] = api_internal_contract_1.DashboardObjectType.Text, - _a[Enums.ZoneType.ZT_Bitmap] = api_internal_contract_1.DashboardObjectType.Image, - _a[Enums.ZoneType.ZT_Web] = api_internal_contract_1.DashboardObjectType.WebPage, - _a[Enums.ZoneType.ZT_AddIn] = api_internal_contract_1.DashboardObjectType.AddIn, - _a[Enums.ZoneType.ZT_ParamCtrl] = api_internal_contract_1.DashboardObjectType.ParameterControl, - _a[Enums.ZoneType.ZT_FlipboardNav] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Flipboard] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutBasic] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFlow] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFreeForm] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_End] = api_internal_contract_1.DashboardObjectType.Blank, - _a), api_internal_contract_1.DashboardObjectType.Blank); - PresLayerToApiEnumMappings.addInContext = new api_utils_1.EnumConverter((_b = {}, - _b[Enums.AddInContext.Unknown] = api_internal_contract_1.AddInContext.Unknown, - _b[Enums.AddInContext.Desktop] = api_internal_contract_1.AddInContext.Desktop, - _b[Enums.AddInContext.Server] = api_internal_contract_1.AddInContext.Server, - _b)); - PresLayerToApiEnumMappings.addInMode = new api_utils_1.EnumConverter((_c = {}, - _c[Enums.AddInMode.Unknown] = api_internal_contract_1.AddInMode.Unknown, - _c[Enums.AddInMode.Authoring] = api_internal_contract_1.AddInMode.Authoring, - _c[Enums.AddInMode.Viewing] = api_internal_contract_1.AddInMode.Viewing, - _c)); - PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {}, - _d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool, - _d[Enums.DataType.DT_DATE] = api_internal_contract_1.DataType.Date, - _d[Enums.DataType.DT_DATETIME] = api_internal_contract_1.DataType.DateTime, - _d[Enums.DataType.DT_INTEGER] = api_internal_contract_1.DataType.Int, - _d[Enums.DataType.DT_REAL] = api_internal_contract_1.DataType.Float, - _d[Enums.DataType.DT_STRING] = api_internal_contract_1.DataType.String, - _d[Enums.DataType.DT_SPATIAL] = api_internal_contract_1.DataType.Spatial, - _d)); - return PresLayerToApiEnumMappings; - }()); - exports.PresLayerToApiEnumMappings = PresLayerToApiEnumMappings; - var ApiToPresLayerEnumMappings = (function () { - function ApiToPresLayerEnumMappings() { - } - ApiToPresLayerEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.FilterUpdateType.Add] = Enums.FilterUpdateType.ADD, - _a[api_internal_contract_1.FilterUpdateType.All] = Enums.FilterUpdateType.ALL, - _a[api_internal_contract_1.FilterUpdateType.Replace] = Enums.FilterUpdateType.REPLACE, - _a[api_internal_contract_1.FilterUpdateType.Remove] = Enums.FilterUpdateType.REMOVE, - _a)); - ApiToPresLayerEnumMappings.nullOption = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.NullOption.AllValues] = Enums.FiltersQuantitativeIncludedValues.All, - _b[api_internal_contract_1.NullOption.NonNullValues] = Enums.FiltersQuantitativeIncludedValues.NonNull, - _b[api_internal_contract_1.NullOption.NullValues] = Enums.FiltersQuantitativeIncludedValues.Null, - _b)); - return ApiToPresLayerEnumMappings; - }()); - exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings; - var _a, _b, _c, _d, _a, _b; - /* tslint:enable:typedef */ - - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(20); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(21); - exports.Param = Param_1.Param; - - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(mappings, defaultVal) { - this.mappings = mappings; - this.defaultVal = defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this.mappings.hasOwnProperty(enumVal)) { - return this.mappings[enumVal]; - } - if (this.defaultVal !== undefined && !throwIfMissing) { - return this.defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - - -/***/ }, -/* 21 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - return Param; - }()); - exports.Param = Param; - - -/***/ }, -/* 22 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\enum-ts.template', u'..\\js-api\\api-core\\temp-pres-layer\\all-enums.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // - var DataScaling; - (function (DataScaling) { - // - DataScaling["SCALING_NONE"] = "none"; - // - DataScaling["SCALING_STANDARDIZED"] = "standardized"; - // - DataScaling["SCALING_NORMALIZED"] = "normalized"; - })(DataScaling = exports.DataScaling || (exports.DataScaling = {})); - // Should the parser be dumb or not - var ParserMode; - (function (ParserMode) { - // With Validation - ParserMode["ParserWithValidation"] = "parser-validation"; - // Without Validation - ParserMode["ParserWithoutValidation"] = "parser-without"; - })(ParserMode = exports.ParserMode || (exports.ParserMode = {})); - // - var ForecastModelType; - (function (ForecastModelType) { - // - ForecastModelType["ForecastModelTypeAutoSeason"] = "auto-season"; - // - ForecastModelType["ForecastModelTypeAuto"] = "auto"; - // - ForecastModelType["ForecastModelTypeCustom"] = "custom"; - })(ForecastModelType = exports.ForecastModelType || (exports.ForecastModelType = {})); - // - var ForecastRangeType; - (function (ForecastRangeType) { - // - ForecastRangeType["ForecastRangeTypeAuto"] = "auto"; - // - ForecastRangeType["ForecastRangeTypeNext"] = "next"; - // - ForecastRangeType["ForecastRangeTypeEndOf"] = "end-of"; - })(ForecastRangeType = exports.ForecastRangeType || (exports.ForecastRangeType = {})); - // - var ForecastStatus; - (function (ForecastStatus) { - // - ForecastStatus["FS_VALID"] = "fs-valid"; - // - ForecastStatus["FS_INVALID_DATETIME"] = "fs-invalid-datetime"; - // - ForecastStatus["FS_INVALID_RESPONSE"] = "fs-invalid-response"; - // - ForecastStatus["FS_NEED_MORE_DATA"] = "fs-need-more-data"; - // - ForecastStatus["FS_TIME_SERIES_TOO_SHORT"] = "fs-time-series-too-short"; - // - ForecastStatus["FS_TIME_SERIES_IRREGULAR"] = "fs-time-series-irregular"; - // - ForecastStatus["FS_NULL_DATETIME"] = "fs-null-datetime"; - // - ForecastStatus["FS_NULL_RESPONSE"] = "fs-null-response"; - // - ForecastStatus["FS_METADATA_INVALID"] = "fs-metadata-invalid"; - // - ForecastStatus["FS_NO_RESPONSE"] = "fs-no-response"; - // - ForecastStatus["FS_EXCESS_DATA"] = "fs-excess-data"; - // - ForecastStatus["FS_EXCESS_PARTITIONS"] = "fs-excess-partitions"; - // - ForecastStatus["FS_DIMENSION_INVALID"] = "fs-dimension-invalid"; - // - ForecastStatus["FS_TABLECALC_INVALID"] = "fs-tablecalc-invalid"; - // - ForecastStatus["FS_TIME_SERIES_TOO_IRREGULAR"] = "fs-time-series-too-irregular"; - // - ForecastStatus["FS_AGGREGATE_FILTER"] = "fs-aggregate-filter"; - // - ForecastStatus["FS_DISAGGREGATE_RESPONSE"] = "fs-disaggregate-response"; - // - ForecastStatus["FS_PERCENTAGE_INVALID"] = "fs-percentage-invalid"; - // - ForecastStatus["FS_TOTAL_INVALID"] = "fs-total-invalid"; - // - ForecastStatus["FS_EXCESS_DATETIME"] = "fs-excess-datetime"; - // - ForecastStatus["FS_DATE_AGG_INCOMPATIBLE"] = "fs-date-agg-incompatible"; - // - ForecastStatus["FS_TIME_SERIES_NOT_POSITIVE"] = "fs-time-series-not-positive"; - // - ForecastStatus["FS_REQUESTED_MODEL_INVALID"] = "fs-requested-model-invalid"; - // - ForecastStatus["FS_TOO_SHORT_FOR_SEASON"] = "fs-too-short-for-season"; - // - ForecastStatus["FS_REQUESTED_MODEL_UNSTABLE"] = "fs-requested-model-unstable"; - // - ForecastStatus["FS_UNDEFINED"] = "fs-undefined"; - })(ForecastStatus = exports.ForecastStatus || (exports.ForecastStatus = {})); - // - var StyleAttribute; - (function (StyleAttribute) { - // - StyleAttribute["saAlternateText"] = "saAlternateText"; - // - StyleAttribute["saAltMarkColor"] = "saAltMarkColor"; - // - StyleAttribute["saAspect"] = "saAspect"; - // - StyleAttribute["saAutoSubtitle"] = "saAutoSubtitle"; - // - StyleAttribute["saBackgroundColor"] = "saBackgroundColor"; - // - StyleAttribute["saBackgroundTransparency"] = "saBackgroundTransparency"; - // - StyleAttribute["saBandSize"] = "saBandSize"; - // - StyleAttribute["saBandColor"] = "saBandColor"; - // - StyleAttribute["saBandLevel"] = "saBandLevel"; - // - StyleAttribute["saBodyType"] = "saBodyType"; - // - StyleAttribute["saBorderColor"] = "saBorderColor"; - // - StyleAttribute["saBorderColorTop"] = "saBorderColorTop"; - // - StyleAttribute["saBorderColorRight"] = "saBorderColorRight"; - // - StyleAttribute["saBorderColorBottom"] = "saBorderColorBottom"; - // - StyleAttribute["saBorderColorLeft"] = "saBorderColorLeft"; - // - StyleAttribute["saBorderStyle"] = "saBorderStyle"; - // - StyleAttribute["saBorderStyleTop"] = "saBorderStyleTop"; - // - StyleAttribute["saBorderStyleRight"] = "saBorderStyleRight"; - // - StyleAttribute["saBorderStyleBottom"] = "saBorderStyleBottom"; - // - StyleAttribute["saBorderStyleLeft"] = "saBorderStyleLeft"; - // - StyleAttribute["saBorderWidth"] = "saBorderWidth"; - // - StyleAttribute["saBorderWidthTop"] = "saBorderWidthTop"; - // - StyleAttribute["saBorderWidthRight"] = "saBorderWidthRight"; - // - StyleAttribute["saBorderWidthBottom"] = "saBorderWidthBottom"; - // - StyleAttribute["saBorderWidthLeft"] = "saBorderWidthLeft"; - // - StyleAttribute["saBoxplotStyle"] = "saBoxplotStyle"; - // - StyleAttribute["saBreakOnSpecial"] = "saBreakOnSpecial"; - // - StyleAttribute["saCell"] = "saCell"; - // - StyleAttribute["saCellW"] = "saCellW"; - // - StyleAttribute["saCellH"] = "saCellH"; - // - StyleAttribute["saCellQ"] = "saCellQ"; - // - StyleAttribute["saCellQMark"] = "saCellQMark"; - // - StyleAttribute["saColor"] = "saColor"; - // - StyleAttribute["saColorMode"] = "saColorMode"; - // - StyleAttribute["saColLevels"] = "saColLevels"; - // - StyleAttribute["saColVertLevels"] = "saColVertLevels"; - // - StyleAttribute["saColHorizHeight"] = "saColHorizHeight"; - // - StyleAttribute["saColVertHeight"] = "saColVertHeight"; - // Deprecated - StyleAttribute["saColHeight"] = "saColHeight"; - // - StyleAttribute["saColWidth"] = "saColWidth"; - // - StyleAttribute["saContent"] = "saContent"; - // - StyleAttribute["saDisplayFieldLabels"] = "saDisplayFieldLabels"; - // - StyleAttribute["saDisplayHeader"] = "saDisplayHeader"; - // - StyleAttribute["saDisplayAlternateText"] = "saDisplayAlternateText"; - // - StyleAttribute["saDivLevel"] = "saDivLevel"; - // - StyleAttribute["saEnabled"] = "saEnabled"; - // - StyleAttribute["saFillAboveColor"] = "saFillAboveColor"; - // - StyleAttribute["saFillBelowColor"] = "saFillBelowColor"; - // - StyleAttribute["saFillColor"] = "saFillColor"; - // - StyleAttribute["saFogBGColor"] = "saFogBGColor"; - // - StyleAttribute["saFogDesaturationWithoutSelection"] = "saFogDesaturationWithoutSelection"; - // - StyleAttribute["saFogDesaturationWithSelection"] = "saFogDesaturationWithSelection"; - // - StyleAttribute["saFont"] = "saFont"; - // - StyleAttribute["saFontFamily"] = "saFontFamily"; - // - StyleAttribute["saFontSize"] = "saFontSize"; - // - StyleAttribute["saFontStyle"] = "saFontStyle"; - // - StyleAttribute["saFontWeight"] = "saFontWeight"; - // - StyleAttribute["saGeographicAreaType"] = "saGeographicAreaType"; - // - StyleAttribute["saHAlign"] = "saHAlign"; - // - StyleAttribute["saHaloColor"] = "saHaloColor"; - // - StyleAttribute["saHaloColorSelected"] = "saHaloColorSelected"; - // - StyleAttribute["saHasFill"] = "saHasFill"; - // - StyleAttribute["saHasHalo"] = "saHasHalo"; - // Deprecated - StyleAttribute["saHasLabel"] = "saHasLabel"; - // - StyleAttribute["saHasStroke"] = "saHasStroke"; - // - StyleAttribute["saHeight"] = "saHeight"; - // - StyleAttribute["saHeightHeader"] = "saHeightHeader"; - // - StyleAttribute["saHighlightLegend"] = "saHighlightLegend"; - // - StyleAttribute["saHnaxis"] = "saHnaxis"; - // - StyleAttribute["saHnlabel"] = "saHnlabel"; - // - StyleAttribute["saInTooltip"] = "saInTooltip"; - // - StyleAttribute["saLineEnd"] = "saLineEnd"; - // - StyleAttribute["saLineEndSize"] = "saLineEndSize"; - // - StyleAttribute["saLineInterpolation"] = "saLineInterpolation"; - // - StyleAttribute["saLineMarkerPosition"] = "saLineMarkerPosition"; - // - StyleAttribute["saLinePattern"] = "saLinePattern"; - // - StyleAttribute["saLinePatternOnly"] = "saLinePatternOnly"; - // - StyleAttribute["saLineVisibility"] = "saLineVisibility"; - // - StyleAttribute["saMap"] = "saMap"; - // - StyleAttribute["saMapStyle"] = "saMapStyle"; - // - StyleAttribute["saMargin"] = "saMargin"; - // - StyleAttribute["saMarginTop"] = "saMarginTop"; - // - StyleAttribute["saMarginRight"] = "saMarginRight"; - // - StyleAttribute["saMarginBottom"] = "saMarginBottom"; - // - StyleAttribute["saMarginLeft"] = "saMarginLeft"; - // - StyleAttribute["saMarkColor"] = "saMarkColor"; - // - StyleAttribute["saMarkTransparency"] = "saMarkTransparency"; - // - StyleAttribute["saMarkLabelsShow"] = "saMarkLabelsShow"; - // - StyleAttribute["saRunningOrderLabelsShow"] = "saRunningOrderLabelsShow"; - // - StyleAttribute["saMarkLabelsMode"] = "saMarkLabelsMode"; - // - StyleAttribute["saMarkLabelsCull"] = "saMarkLabelsCull"; - // - StyleAttribute["saMarkLabelsLineEndFirst"] = "saMarkLabelsLineEndFirst"; - // - StyleAttribute["saMarkLabelsLineEndLast"] = "saMarkLabelsLineEndLast"; - // - StyleAttribute["saMarkLabelsRangeMin"] = "saMarkLabelsRangeMin"; - // - StyleAttribute["saMarkLabelsRangeMax"] = "saMarkLabelsRangeMax"; - // - StyleAttribute["saMarkLabelsRangeScope"] = "saMarkLabelsRangeScope"; - // - StyleAttribute["saMarkLabelsRangeField"] = "saMarkLabelsRangeField"; - // - StyleAttribute["saMarkMarkersMode"] = "saMarkMarkersMode"; - // - StyleAttribute["saMaxHeight"] = "saMaxHeight"; - // - StyleAttribute["saMaxFontSize"] = "saMaxFontSize"; - // - StyleAttribute["saMaxStrokeWidth"] = "saMaxStrokeWidth"; - // - StyleAttribute["saMaxWidth"] = "saMaxWidth"; - // - StyleAttribute["saMidStrokeWidth"] = "saMidStrokeWidth"; - // - StyleAttribute["saMinHeight"] = "saMinHeight"; - // - StyleAttribute["saMinFontSize"] = "saMinFontSize"; - // - StyleAttribute["saMinLength"] = "saMinLength"; - // - StyleAttribute["saMinMapSize"] = "saMinMapSize"; - // - StyleAttribute["saMinSize"] = "saMinSize"; - // - StyleAttribute["saMinStrokeWidth"] = "saMinStrokeWidth"; - // - StyleAttribute["saMinWidth"] = "saMinWidth"; - // - StyleAttribute["saNonhighlightColor"] = "saNonhighlightColor"; - // - StyleAttribute["saOmitOnSpecial"] = "saOmitOnSpecial"; - // - StyleAttribute["saOpacity"] = "saOpacity"; - // - StyleAttribute["saOrientation"] = "saOrientation"; - // - StyleAttribute["saPadding"] = "saPadding"; - // - StyleAttribute["saPaddingTop"] = "saPaddingTop"; - // - StyleAttribute["saPaddingRight"] = "saPaddingRight"; - // - StyleAttribute["saPaddingBottom"] = "saPaddingBottom"; - // - StyleAttribute["saPaddingLeft"] = "saPaddingLeft"; - // - StyleAttribute["saPalette"] = "saPalette"; - // - StyleAttribute["saRenderFoldReversed"] = "saRenderFoldReversed"; - // - StyleAttribute["saReversePalette"] = "saReversePalette"; - // - StyleAttribute["saRounding"] = "saRounding"; - // - StyleAttribute["saRowHorizLevels"] = "saRowHorizLevels"; - // - StyleAttribute["saRowHorizWidth"] = "saRowHorizWidth"; - // - StyleAttribute["saRowLevels"] = "saRowLevels"; - // - StyleAttribute["saRowVertWidth"] = "saRowVertWidth"; - // - StyleAttribute["saSeparator"] = "saSeparator"; - // - StyleAttribute["saShape"] = "saShape"; - // Deprecated - StyleAttribute["saShowLabels"] = "saShowLabels"; - // - StyleAttribute["saSize"] = "saSize"; - // - StyleAttribute["saSizeBar"] = "saSizeBar"; - // - StyleAttribute["saSmartAutoAlignment"] = "saSmartAutoAlignment"; - // - StyleAttribute["saSpace"] = "saSpace"; - // - StyleAttribute["saStrokeColor"] = "saStrokeColor"; - // - StyleAttribute["saStrokeSize"] = "saStrokeSize"; - // - StyleAttribute["saSubtitle"] = "saSubtitle"; - // - StyleAttribute["saTextAlign"] = "saTextAlign"; - // - StyleAttribute["saTextAlignDefault"] = "saTextAlignDefault"; - // - StyleAttribute["saTextDecoration"] = "saTextDecoration"; - // - StyleAttribute["saTextIndent"] = "saTextIndent"; - // - StyleAttribute["saTextOrientation"] = "saTextOrientation"; - // - StyleAttribute["saTextFormat"] = "saTextFormat"; - // - StyleAttribute["saTickColor"] = "saTickColor"; - // - StyleAttribute["saTickLength"] = "saTickLength"; - // Deprecated - StyleAttribute["saTickSpacing"] = "saTickSpacing"; - // - StyleAttribute["saTitle"] = "saTitle"; - // - StyleAttribute["saTotalLabel"] = "saTotalLabel"; - // - StyleAttribute["saVAlign"] = "saVAlign"; - // - StyleAttribute["saVerticalAlign"] = "saVerticalAlign"; - // - StyleAttribute["saVerticalAlignDefault"] = "saVerticalAlignDefault"; - // - StyleAttribute["saVnaxis"] = "saVnaxis"; - // - StyleAttribute["saVnlabel"] = "saVnlabel"; - // - StyleAttribute["saWarnOnSpecial"] = "saWarnOnSpecial"; - // - StyleAttribute["saWashout"] = "saWashout"; - // - StyleAttribute["saWhiskerEnd"] = "saWhiskerEnd"; - // - StyleAttribute["saWhiskerStrokeColor"] = "saWhiskerStrokeColor"; - // - StyleAttribute["saWhiskerStrokeSize"] = "saWhiskerStrokeSize"; - // - StyleAttribute["saWidth"] = "saWidth"; - // - StyleAttribute["saWidthHeader"] = "saWidthHeader"; - // - StyleAttribute["saWrap"] = "saWrap"; - // - StyleAttribute["saZoom"] = "saZoom"; - // Special attributes used for matching - StyleAttribute["saNone"] = "saNone"; - // Special attributes used for matching - StyleAttribute["saAny"] = "saAny"; - })(StyleAttribute = exports.StyleAttribute || (exports.StyleAttribute = {})); - // lowest bit of enum value denotes two-tone styles; newly added styles should follow this pattern. - var BoxplotStyle; - (function (BoxplotStyle) { - // mask for checking if a style is two-tone - BoxplotStyle["BoxplotStyleTwoTone"] = "two-tone"; - // - BoxplotStyle["BoxplotStyleModern"] = "modern"; - // - BoxplotStyle["BoxplotStyleGlass"] = "glass"; - // - BoxplotStyle["BoxplotStyleClassic"] = "classic"; - // - BoxplotStyle["BoxplotStyleClassicTwoTone"] = "classic-two-tone"; - })(BoxplotStyle = exports.BoxplotStyle || (exports.BoxplotStyle = {})); - // used for boxplots and prediction band whiskers - var WhiskerEnd; - (function (WhiskerEnd) { - // - WhiskerEnd["WhiskerEndNone"] = "none"; - // - WhiskerEnd["WhiskerEndSmall"] = "small"; - // - WhiskerEnd["WhiskerEndLarge"] = "large"; - })(WhiskerEnd = exports.WhiskerEnd || (exports.WhiskerEnd = {})); - // - var StyleElement; - (function (StyleElement) { - // - StyleElement["elementAxis"] = "elementAxis"; - // - StyleElement["elementCell"] = "elementCell"; - // - StyleElement["elementDatalabel"] = "elementDatalabel"; - // - StyleElement["elementDropspot"] = "elementDropspot"; - // - StyleElement["elementHeader"] = "elementHeader"; - // - StyleElement["elementFieldLabel"] = "elementFieldLabel"; - // - StyleElement["elementFieldLabelDecoration"] = "elementFieldLabelDecoration"; - // - StyleElement["elementFieldLabelSpanner"] = "elementFieldLabelSpanner"; - // - StyleElement["elementLabel"] = "elementLabel"; - // - StyleElement["elementMark"] = "elementMark"; - // - StyleElement["elementPane"] = "elementPane"; - // - StyleElement["elementTable"] = "elementTable"; - // - StyleElement["elementWorksheet"] = "elementWorksheet"; - // - StyleElement["elementBasesheet"] = "elementBasesheet"; - // - StyleElement["elementDashboard"] = "elementDashboard"; - // - StyleElement["elementStoryboard"] = "elementStoryboard"; - // - StyleElement["elementCaption"] = "elementCaption"; - // - StyleElement["elementDropline"] = "elementDropline"; - // - StyleElement["elementRefline"] = "elementRefline"; - // - StyleElement["elementRefBand"] = "elementRefBand"; - // - StyleElement["elementRefBoxplot"] = "elementRefBoxplot"; - // - StyleElement["elementGridline"] = "elementGridline"; - // - StyleElement["elementZeroline"] = "elementZeroline"; - // - StyleElement["elementTrendline"] = "elementTrendline"; - // - StyleElement["elementTableDiv"] = "elementTableDiv"; - // - StyleElement["elementHeaderDiv"] = "elementHeaderDiv"; - // - StyleElement["elementMappedImage"] = "elementMappedImage"; - // - StyleElement["elementAction"] = "elementAction"; - // - StyleElement["elementTitle"] = "elementTitle"; - // - StyleElement["elementLegend"] = "elementLegend"; - // - StyleElement["elementLegendTitle"] = "elementLegendTitle"; - // - StyleElement["elementLegendTitleText"] = "elementLegendTitleText"; - // - StyleElement["elementAxisTitle"] = "elementAxisTitle"; - // - StyleElement["elementAnnotation"] = "elementAnnotation"; - // - StyleElement["elementDashTitle"] = "elementDashTitle"; - // - StyleElement["elementDashSubtitle"] = "elementDashSubtitle"; - // - StyleElement["elementDashText"] = "elementDashText"; - // - StyleElement["elementDashZone"] = "elementDashZone"; - // - StyleElement["elementDashContainer"] = "elementDashContainer"; - // - StyleElement["elementScrollbar"] = "elementScrollbar"; - // Static on/off map layers - StyleElement["elementMapLayer"] = "elementMapLayer"; - // Contains washout - StyleElement["elementMap"] = "elementMap"; - // Initially for UrbanMapping/Claritas data - StyleElement["elementMapDataLayer"] = "elementMapDataLayer"; - // - StyleElement["elementQuickFilter"] = "elementQuickFilter"; - // - StyleElement["elementQuickFilterTitle"] = "elementQuickFilterTitle"; - // - StyleElement["elementParameterCtrl"] = "elementParameterCtrl"; - // - StyleElement["elementParameterCtrlTitle"] = "elementParameterCtrlTitle"; - // - StyleElement["elementPageCardTitle"] = "elementPageCardTitle"; - // - StyleElement["elementStoryDescription"] = "elementStoryDescription"; - // - StyleElement["elementStoryPointCaption"] = "elementStoryPointCaption"; - // - StyleElement["elementStoryTitle"] = "elementStoryTitle"; - // - StyleElement["elementTooltip"] = "elementTooltip"; - // - StyleElement["elementAll"] = "elementAll"; - // - StyleElement["elementPageCardBody"] = "elementPageCardBody"; - // - StyleElement["elementDataHighlighter"] = "elementDataHighlighter"; - // - StyleElement["elementDataHighlighterTitle"] = "elementDataHighlighterTitle"; - // Special elements used for matching and organization - StyleElement["elementNone"] = "elementNone"; - // Special elements used for matching and organization - StyleElement["elementAny"] = "elementAny"; - // Special elements used for matching and organization - StyleElement["elementRoot"] = "elementRoot"; - })(StyleElement = exports.StyleElement || (exports.StyleElement = {})); - // Do not mess with these values. They are sometimes used as array indexes/bounds - var StyleDataClass; - (function (StyleDataClass) { - // - StyleDataClass["dcNormal"] = "dcNormal"; - // - StyleDataClass["dcTotal"] = "dcTotal"; - // - StyleDataClass["dcSubtotal"] = "dcSubtotal"; - // - StyleDataClass["dcCOUNT"] = "dcCOUNT"; - })(StyleDataClass = exports.StyleDataClass || (exports.StyleDataClass = {})); - // - var StyleFieldScope; - (function (StyleFieldScope) { - // - StyleFieldScope["fsNone"] = "fsNone"; - // - StyleFieldScope["fsRows"] = "fsRows"; - // - StyleFieldScope["fsCols"] = "fsCols"; - })(StyleFieldScope = exports.StyleFieldScope || (exports.StyleFieldScope = {})); - // - var StyleSwatch; - (function (StyleSwatch) { - // - StyleSwatch["ssUnspecified"] = "ssUnspecified"; - // - StyleSwatch["ssLight"] = "ssLight"; - // - StyleSwatch["ssDark"] = "ssDark"; - })(StyleSwatch = exports.StyleSwatch || (exports.StyleSwatch = {})); - // - var TableauFontStyle; - (function (TableauFontStyle) { - // - TableauFontStyle["NormalStyle"] = "font-style-normal"; - // - TableauFontStyle["Italic"] = "font-style-italic"; - })(TableauFontStyle = exports.TableauFontStyle || (exports.TableauFontStyle = {})); - // Unsupported for Betsy - var TextDecoration; - (function (TextDecoration) { - // - TextDecoration["NoDecoration"] = "text-decoration-none"; - // - TextDecoration["Underline"] = "text-decoration-underline"; - // not yet supported - TextDecoration["Overline"] = "text-decoration-overline"; - // - TextDecoration["Strikethrough"] = "text-decoration-strikethrough"; - })(TextDecoration = exports.TextDecoration || (exports.TextDecoration = {})); - // - var FontWeight; - (function (FontWeight) { - // - FontWeight["NormalWeight"] = "font-weight-normal"; - // - FontWeight["Bold"] = "font-weight-bold"; - })(FontWeight = exports.FontWeight || (exports.FontWeight = {})); - // - var TextOrient; - (function (TextOrient) { - // - TextOrient["TO_Auto"] = "text-orient-auto"; - // - TextOrient["TO_Horz"] = "text-orient-horizontal"; - // - TextOrient["TO_VertUp"] = "text-orient-vertical-up"; - // - TextOrient["TO_VertDown"] = "text-orient-vertical-down"; - })(TextOrient = exports.TextOrient || (exports.TextOrient = {})); - // - var TextAlign; - (function (TextAlign) { - // - TextAlign["TA_Start"] = "text-align-start"; - // - TextAlign["TA_Center"] = "text-align-center"; - // - TextAlign["TA_End"] = "text-align-end"; - })(TextAlign = exports.TextAlign || (exports.TextAlign = {})); - // - var TextWrapMode; - (function (TextWrapMode) { - // - TextWrapMode["TextWrapOff"] = "text-wrap-off"; - // - TextWrapMode["TextWrapTruncate"] = "text-wrap-truncate"; - // - TextWrapMode["TextWrapOn"] = "text-wrap-on"; - // - TextWrapMode["TextWrapAuto"] = "text-wrap-auto"; - })(TextWrapMode = exports.TextWrapMode || (exports.TextWrapMode = {})); - // - var TextWholeLineMode; - (function (TextWholeLineMode) { - // - TextWholeLineMode["TextWholeLineOff"] = "text-whole-line-off"; - // - TextWholeLineMode["TextWholeLineOn"] = "text-whole-line-on"; - // - TextWholeLineMode["TextWholeLineAuto"] = "text-whole-line-auto"; - })(TextWholeLineMode = exports.TextWholeLineMode || (exports.TextWholeLineMode = {})); - // - var TextBreakMode; - (function (TextBreakMode) { - // - TextBreakMode["TextBreakWhitespaceOnly"] = "text-break-ws-only"; - // - TextBreakMode["TextBreakAuto"] = "text-break-auto"; - })(TextBreakMode = exports.TextBreakMode || (exports.TextBreakMode = {})); - // type of aggregation - var AggType; - (function (AggType) { - // - AggType["AGG_SUM"] = "sum"; - // - AggType["AGG_AVG"] = "average"; - // - AggType["AGG_MIN"] = "min"; - // - AggType["AGG_MAX"] = "max"; - // - AggType["AGG_STDEV"] = "std-dev"; - // - AggType["AGG_STDEVP"] = "std-dev-p"; - // - AggType["AGG_VAR"] = "var"; - // - AggType["AGG_VARP"] = "var-p"; - // - AggType["AGG_COUNT"] = "count"; - // - AggType["AGG_COUNTD"] = "count-d"; - // - AggType["AGG_MEDIAN"] = "median"; - // - AggType["AGG_ATTR"] = "attr"; - // - AggType["AGG_NONE"] = "none"; - // - AggType["AGG_PERCENTILE"] = "percentile"; - // - AggType["AGG_YEAR"] = "year"; - // - AggType["AGG_QTR"] = "qtr"; - // - AggType["AGG_MONTH"] = "month"; - // - AggType["AGG_DAY"] = "day"; - // - AggType["AGG_HOUR"] = "hour"; - // - AggType["AGG_MINUTE"] = "minute"; - // - AggType["AGG_SECOND"] = "second"; - // - AggType["AGG_WEEK"] = "week"; - // - AggType["AGG_WEEKDAY"] = "weekday"; - // - AggType["AGG_MONTHYEAR"] = "month-year"; - // - AggType["AGG_MDY"] = "mdy"; - // - AggType["AGG_END"] = "end"; - // - AggType["TRUNC_YEAR"] = "trunc-year"; - // - AggType["TRUNC_QTR"] = "trunc-qtr"; - // - AggType["TRUNC_MONTH"] = "trunc-month"; - // - AggType["TRUNC_WEEK"] = "trunc-week"; - // - AggType["TRUNC_DAY"] = "trunc-day"; - // - AggType["TRUNC_HOUR"] = "trunc-hour"; - // - AggType["TRUNC_MINUTE"] = "trunc-minute"; - // - AggType["TRUNC_SECOND"] = "trunc-second"; - // - AggType["AGG_QUART1"] = "quart1"; - // - AggType["AGG_QUART3"] = "quart3"; - // - AggType["AGG_SKEWNESS"] = "skewness"; - // - AggType["AGG_KURTOSIS"] = "kurtosis"; - // - AggType["AGG_INOUT"] = "in-out"; - // - AggType["AGG_SUM_XSQR"] = "sum-xsqr"; - // - AggType["AGG_USER"] = "user"; - // - AggType["AGG_COLLECT"] = "collect"; - // - AggType["AGG_COVAR"] = "covar"; - // - AggType["AGG_COVARP"] = "covarp"; - // - AggType["AGG_CORR"] = "corr"; - })(AggType = exports.AggType || (exports.AggType = {})); - // DataValueFormatter::DataTypeEncodings has hardcoded values corresponding to following enum members - var DataType; - (function (DataType) { - // - DataType["DT_INTEGER"] = "integer"; - // - DataType["DT_REAL"] = "real"; - // - DataType["DT_STRING"] = "cstring"; - // - DataType["DT_DATETIME"] = "datetime"; - // - DataType["DT_BOOLEAN"] = "boolean"; - // - DataType["DT_DATE"] = "date"; - // - DataType["DT_TUPLE"] = "tuple"; - // - DataType["DT_SPATIAL"] = "spatial"; - // - DataType["DT_UNKNOWN"] = "unknown"; - // - DataType["DT_BINARY"] = "binary"; - })(DataType = exports.DataType || (exports.DataType = {})); - // - var SortDirection; - (function (SortDirection) { - // ascending - SortDirection["ST_ASC"] = "asc"; - // descending - SortDirection["ST_DESC"] = "desc"; - })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); - // - var SortType; - (function (SortType) { - // Use the defined ordering - SortType["ST_NATURAL"] = "data-source-order"; - // Alphabetic/numeric ordering of data - SortType["ST_ALPHABETIC"] = "alpha"; - // Specify a secondary field - SortType["ST_COMPUTED"] = "field"; - // Manually defined ordering - SortType["ST_MANUAL"] = "manual"; - })(SortType = exports.SortType || (exports.SortType = {})); - // - var SortEnd; - (function (SortEnd) { - // - SortEnd["ST_TOP"] = "top"; - // - SortEnd["ST_BOTTOM"] = "bottom"; - })(SortEnd = exports.SortEnd || (exports.SortEnd = {})); - // - var ForecastColumnType; - (function (ForecastColumnType) { - // - ForecastColumnType["FORECAST_NONE"] = "none"; - // - ForecastColumnType["FORECAST_VALUE"] = "value"; - // - ForecastColumnType["FORECAST_INDICATOR"] = "indicator"; - // - ForecastColumnType["FORECAST_PRECISION"] = "precision"; - // - ForecastColumnType["FORECAST_QUALITY"] = "quality"; - // - ForecastColumnType["FORECAST_FIT_TREND"] = "fit_trend"; - // - ForecastColumnType["FORECAST_PRECISION_PERCENT"] = "precision_percent"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_UPPER"] = "prediction_upper"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_LOWER"] = "prediction_lower"; - })(ForecastColumnType = exports.ForecastColumnType || (exports.ForecastColumnType = {})); - // - var MarkMarkersMode; - (function (MarkMarkersMode) { - // - MarkMarkersMode["MMM_Auto"] = "mmm-auto"; - // - MarkMarkersMode["MMM_All"] = "mmm_all"; - // - MarkMarkersMode["MMM_None"] = "mmm_none"; - // - MarkMarkersMode["MMM_Default"] = "mmm_default"; - })(MarkMarkersMode = exports.MarkMarkersMode || (exports.MarkMarkersMode = {})); - // - var PercentMode; - (function (PercentMode) { - // - PercentMode["PERCENT_CELL_IN_PANE"] = "cell-in-pane"; - // - PercentMode["PERCENT_ROW_IN_PANE"] = "row-in-pane"; - // - PercentMode["PERCENT_COLUMN_IN_PANE"] = "column-in-pane"; - // - PercentMode["PERCENT_PANE"] = "pane"; - // - PercentMode["PERCENT_ROW"] = "row"; - // - PercentMode["PERCENT_COLUMN"] = "column"; - // - PercentMode["PERCENT_TABLE"] = "table"; - })(PercentMode = exports.PercentMode || (exports.PercentMode = {})); - // - var SpecialValuesMode; - (function (SpecialValuesMode) { - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_AND_WARN"] = "hide-and-warn"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE"] = "hide"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_BREAK_LINES"] = "hide-break-lines"; - // - SpecialValuesMode["SPECIAL_VALUES_SHOW"] = "show"; - })(SpecialValuesMode = exports.SpecialValuesMode || (exports.SpecialValuesMode = {})); - // - var LayoutType; - (function (LayoutType) { - // - LayoutType["LAYOUT_CARTESIAN"] = "cartesian"; - // - LayoutType["LAYOUT_DEFAULT"] = "default"; - })(LayoutType = exports.LayoutType || (exports.LayoutType = {})); - // - var ShelfType; - (function (ShelfType) { - // - ShelfType["ST_NONE"] = "none-shelf"; - // - ShelfType["ST_COLUMNS_SHELF"] = "columns-shelf"; - // - ShelfType["ST_ROWS_SHELF"] = "rows-shelf"; - // - ShelfType["ST_PAGES_SHELF"] = "pages-shelf"; - // - ShelfType["ST_FILTER_SHELF"] = "filter-shelf"; - // - ShelfType["ST_IMAGE_SHELF"] = "image-shelf"; - // - ShelfType["ST_MEASURES_SHELF"] = "measures-shelf"; - // - ShelfType["ST_SHOWME_SHELF"] = "show-me-shelf"; - // - ShelfType["ST_ENCODING_SHELF"] = "encoding-shelf"; - // - ShelfType["ST_CLUSTER_SHELF"] = "cluster-shelf"; - // - ShelfType["ST_GEOMETRY_SHELF"] = "geometry-shelf"; - // - ShelfType["ST_END"] = "end-shelf"; - // - ShelfType["ST_FINAL"] = "final-shelf"; - })(ShelfType = exports.ShelfType || (exports.ShelfType = {})); - // - var RestrictType; - (function (RestrictType) { - // - RestrictType["RT_INTERSECT"] = "rt-intersection"; - // - RestrictType["RT_UNION"] = "rt-union"; - })(RestrictType = exports.RestrictType || (exports.RestrictType = {})); - // - var TooltipMode; - (function (TooltipMode) { - // - TooltipMode["TM_NONE"] = "none"; - // - TooltipMode["TM_STICKY"] = "sticky"; - // - TooltipMode["TM_SMOOTH"] = "smooth"; - })(TooltipMode = exports.TooltipMode || (exports.TooltipMode = {})); - // - var ColumnGroups; - (function (ColumnGroups) { - // 0x01 - ColumnGroups["COLS_IN_OUTPUT"] = "cols-in-output"; - // 0x02 - ColumnGroups["COLS_IN_FILTER_SHELF"] = "cols-in-filter-shelf"; - // 0x04 - ColumnGroups["COLS_REF_BY_FILTERS"] = "cols-ref-by-filters"; - // 0x08 - ColumnGroups["COLS_REF_BY_OMEASURES"] = "cols-ref-by-omeasures"; - // 0x10 - ColumnGroups["COLS_REF_BY_JOIN_LOD"] = "cols-ref-by-join-lod"; - // 0x20 - ColumnGroups["COLS_HIDDEN"] = "cols-hidden"; - // 0x40 - ColumnGroups["COLS_REF_BY_SORTS"] = "cols-ref-by-sorts"; - // - ColumnGroups["COLS_REF_BY_FILTERS_OR_SORTS"] = "cols-ref-by-filters-or-sorts"; - // - ColumnGroups["COLS_ON_SHELVES"] = "cols-on-shelves"; - // - ColumnGroups["COLS_ALL"] = "cols-all"; - })(ColumnGroups = exports.ColumnGroups || (exports.ColumnGroups = {})); - // - var ButtonsOption; - (function (ButtonsOption) { - // - ButtonsOption["BO_HIDE"] = "buttons-hide"; - })(ButtonsOption = exports.ButtonsOption || (exports.ButtonsOption = {})); - // - var SelectionRelaxationOption; - (function (SelectionRelaxationOption) { - // - SelectionRelaxationOption["SRO_ALLOW"] = "selection-relaxation-allow"; - // - SelectionRelaxationOption["SRO_DISALLOW"] = "selection-relaxation-disallow"; - })(SelectionRelaxationOption = exports.SelectionRelaxationOption || (exports.SelectionRelaxationOption = {})); - // - var EncodingType; - (function (EncodingType) { - // a text encoding - EncodingType["ET_TEXT"] = "text-encoding"; - // a color encoding - EncodingType["ET_COLOR"] = "color-encoding"; - // a size encoding - EncodingType["ET_SIZE"] = "size-encoding"; - // a shape encoding - EncodingType["ET_SHAPE"] = "shape-encoding"; - // an image encoding - EncodingType["ET_IMAGE"] = "image-encoding"; - // a sort (path) encoding (currently only for line or polygon charts) - EncodingType["ET_SORT"] = "sort-encoding"; - // a wedge size (angle) encoding (currently only for pie charts) - EncodingType["ET_WEDGESIZE"] = "wedge-size-encoding"; - // a geometry encoding - EncodingType["ET_GEOMETRY"] = "geometry-encoding"; - // a level of detail encoding - EncodingType["ET_LOD"] = "level-of-detail-encoding"; - // encoding used for the data highlighter/legend mechanism - EncodingType["ET_HIGHLIGHT"] = "highlight-encoding"; - // a tooltip encoding - EncodingType["ET_TOOLTIP"] = "tooltip-encoding"; - // a temporary label placed above marks for the table calc dialog - EncodingType["ET_RUNNINGORDER"] = "runningorder-encoding"; - // the number of encodings, this is invalid input for an encoding presentation model - EncodingType["NUM_ENCODINGS"] = "num-encodings"; - // an invalid encoding - EncodingType["ET_INVALID"] = "invalid-encoding"; - })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); - // Enumeration of valid horizontal alignments. - var LabelHAlignment; - (function (LabelHAlignment) { - // - LabelHAlignment["LHA_Left"] = "h-align-left"; - // - LabelHAlignment["LHA_Center"] = "h-align-center"; - // - LabelHAlignment["LHA_Right"] = "h-align-right"; - // - LabelHAlignment["LHA_Automatic"] = "h-align-auto"; - })(LabelHAlignment = exports.LabelHAlignment || (exports.LabelHAlignment = {})); - // Enumeration of valid vertical alignments. - var LabelVAlignment; - (function (LabelVAlignment) { - // - LabelVAlignment["LVA_Bottom"] = "v-align-bottom"; - // - LabelVAlignment["LVA_Center"] = "v-align-center"; - // - LabelVAlignment["LVA_Top"] = "v-align-top"; - // - LabelVAlignment["LVA_Automatic"] = "v-align-auto"; - })(LabelVAlignment = exports.LabelVAlignment || (exports.LabelVAlignment = {})); - // Enumeration of valid label positions. - var LabelPosition; - (function (LabelPosition) { - // Position each text run relative to the center of the original bbox. Use the original bbox as the height and width of the text mark. Used for non-stacked OO text marks. - LabelPosition["CenterInOriginalBbox"] = "label-position-center-in-original-box"; - // Position each text run relative to the bottom left corner of the measured bbox. Use the measured bbox as the width and height of the label. Used for labels - LabelPosition["OriginAtLowerLeft"] = "label-position-origin-at-lower-left"; - // Position each text run relative to the center of the measured bbox. Use the measured bbox as the width and height of the text mark. Used for most text marks. - LabelPosition["OriginAtCenter"] = "label-position-origin-at-center"; - })(LabelPosition = exports.LabelPosition || (exports.LabelPosition = {})); - // Enumeration of ways to use color. Values can be or'ed together to make a mask for allowed options - var ColorMode; - (function (ColorMode) { - // Color user specified - ColorMode["CLRM_User"] = "clrm-user"; - // Color selected automatically - ColorMode["CLRM_Auto"] = "clrm-auto"; - // Color matches mark color - ColorMode["CLRM_Match"] = "clrm-match"; - // No color (transparent or not drawn) - ColorMode["CLRM_None"] = "clrm-none"; - })(ColorMode = exports.ColorMode || (exports.ColorMode = {})); - // - var MarkLabelsMode; - (function (MarkLabelsMode) { - // - MarkLabelsMode["MLM_All"] = "mlm-all"; - // - MarkLabelsMode["MLM_Selection"] = "mlm-selection"; - // - MarkLabelsMode["MLM_Highlight"] = "mlm-highlight"; - // - MarkLabelsMode["MLM_LineEnds"] = "mlm-line-ends"; - // min/max setting - MarkLabelsMode["MLM_Range"] = "mlm-range"; - // most recent (only relevant when date field is in play) - MarkLabelsMode["MLM_MostRecent"] = "mlm-most-recent"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting - MarkLabelsMode["MLM_MultipleValues"] = "mlm-multiple-values"; - // - MarkLabelsMode["MLM_Default"] = "mlm-default"; - })(MarkLabelsMode = exports.MarkLabelsMode || (exports.MarkLabelsMode = {})); - // - var MarkLabelsScope; - (function (MarkLabelsScope) { - // - MarkLabelsScope["MLS_Table"] = "mls-table"; - // - MarkLabelsScope["MLS_Pane"] = "mls-pane"; - // - MarkLabelsScope["MLS_Cell"] = "mls-cell"; - // - MarkLabelsScope["MLS_MultiMark"] = "mls-multimark"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting) - MarkLabelsScope["MLS_MultipleValues"] = "mls-multiple-values"; - // - MarkLabelsScope["MLS_Default"] = "mls-default"; - })(MarkLabelsScope = exports.MarkLabelsScope || (exports.MarkLabelsScope = {})); - // - var MarkLabelsVisibility; - (function (MarkLabelsVisibility) { - // - MarkLabelsVisibility["MLV_Hidden"] = "mlv-hidden"; - // - MarkLabelsVisibility["MLV_Visible"] = "mlv-visible"; - // - MarkLabelsVisibility["MLV_UseCurrent"] = "mlv-use-current"; - })(MarkLabelsVisibility = exports.MarkLabelsVisibility || (exports.MarkLabelsVisibility = {})); - // - var StackingMode; - (function (StackingMode) { - // - StackingMode["StackingOff"] = "off"; - // - StackingMode["StackingOn"] = "on"; - // - StackingMode["StackingAuto"] = "auto"; - })(StackingMode = exports.StackingMode || (exports.StackingMode = {})); - // - var MarkAlignment; - (function (MarkAlignment) { - // - MarkAlignment["MarkAlignmentLeft"] = "mark-alignment-left"; - // - MarkAlignment["MarkAlignmentRight"] = "mark-alignment-right"; - // - MarkAlignment["MarkAlignmentCenter"] = "mark-alignment-center"; - })(MarkAlignment = exports.MarkAlignment || (exports.MarkAlignment = {})); - // - var PaneLabelComposition; - (function (PaneLabelComposition) { - // - PaneLabelComposition["PLC_None"] = "pane-label-composition-none"; - // - PaneLabelComposition["PLC_Mixed"] = "pane-label-composition-mixed"; - // - PaneLabelComposition["PLC_All"] = "pane-label-composition-all"; - })(PaneLabelComposition = exports.PaneLabelComposition || (exports.PaneLabelComposition = {})); - // The user-specified mark type on the Marks Card - var PrimitiveType; - (function (PrimitiveType) { - // - PrimitiveType["PT_AUTOMATIC"] = "automatic"; - // - PrimitiveType["PT_TEXT"] = "text"; - // - PrimitiveType["PT_IMAGE"] = "image"; - // - PrimitiveType["PT_SHAPE"] = "shape"; - // - PrimitiveType["PT_RECTANGLE"] = "rectangle"; - // - PrimitiveType["PT_BAR"] = "bar"; - // - PrimitiveType["PT_GANTT"] = "gantt"; - // - PrimitiveType["PT_SQUARE"] = "square"; - // - PrimitiveType["PT_CIRCLE"] = "circle"; - // - PrimitiveType["PT_POLYLINE"] = "polyline"; - // line chart - PrimitiveType["PT_LINE"] = "line"; - // - PrimitiveType["PT_POLYGON"] = "polygon"; - // area chart - PrimitiveType["PT_AREA"] = "area"; - // - PrimitiveType["PT_PIE"] = "pie"; - // - PrimitiveType["PT_MULTIPOLYGON"] = "multipolygon"; - // Not an actual primitive type. This is just used to flag the UI that multiple types are in play. - PrimitiveType["PT_MULTIPLE"] = "multiple"; - // used for looping over all values - PrimitiveType["NUM_PRIMITIVES"] = "count"; - // used to flag an unset or invalid state - PrimitiveType["PT_INVALID"] = "invalid"; - })(PrimitiveType = exports.PrimitiveType || (exports.PrimitiveType = {})); - // Defines the way a given primitive behaves on a viz - for instance, a PT_CIRCLE is treated as a point, while a PT_POLYGON would be treated as an area. - var MarkType; - (function (MarkType) { - // - MarkType["MT_POINT"] = "point"; - // - MarkType["MT_LINE"] = "line"; - // - MarkType["MT_AREA"] = "area"; - // - MarkType["MT_INVALID"] = "invalid"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - // PaneAxis is used to describe which axis of a pane is the independent axis. - var PaneAxis; - (function (PaneAxis) { - // The independent axis is inferred from other properties of the pane. - PaneAxis["AXIS_AUTO"] = "auto"; - // - PaneAxis["AXIS_X"] = "x"; - // - PaneAxis["AXIS_Y"] = "y"; - })(PaneAxis = exports.PaneAxis || (exports.PaneAxis = {})); - // - var Rounding; - (function (Rounding) { - // - Rounding["Rounding_None"] = "none"; - // - Rounding["Rounding_Small"] = "small"; - // - Rounding["Rounding_Medium"] = "medium"; - // - Rounding["Rounding_Large"] = "large"; - })(Rounding = exports.Rounding || (exports.Rounding = {})); - // - var LineEnd; - (function (LineEnd) { - // - LineEnd["LineEnd_None"] = "none"; - // - LineEnd["LineEnd_Arrow"] = "arrow"; - // - LineEnd["LineEnd_OpenArrow"] = "open-arrow"; - // - LineEnd["LineEnd_Dot"] = "dot"; - })(LineEnd = exports.LineEnd || (exports.LineEnd = {})); - // - var LineEndSize; - (function (LineEndSize) { - // - LineEndSize["LineEndSize_Smallest"] = "smallest"; - // - LineEndSize["LineEndSize_Smaller"] = "smaller"; - // - LineEndSize["LineEndSize_Small"] = "small"; - // - LineEndSize["LineEndSize_Medium"] = "medium"; - // - LineEndSize["LineEndSize_Large"] = "large"; - // - LineEndSize["LineEndSize_Larger"] = "larger"; - // - LineEndSize["LineEndSize_Largest"] = "largest"; - })(LineEndSize = exports.LineEndSize || (exports.LineEndSize = {})); - // - var BodyType; - (function (BodyType) { - // - BodyType["BodyType_None"] = "none"; - // - BodyType["BodyType_Box"] = "box"; - // - BodyType["BodyType_Edge"] = "edge"; - })(BodyType = exports.BodyType || (exports.BodyType = {})); - // - var StyleTheme; - (function (StyleTheme) { - // - StyleTheme["themeClassic"] = "classic"; - // - StyleTheme["themeModern"] = "modern"; - // - StyleTheme["themeClean"] = "clean"; - // - StyleTheme["themeSmooth"] = "smooth"; - // - StyleTheme["themeCustom"] = "custom"; - })(StyleTheme = exports.StyleTheme || (exports.StyleTheme = {})); - // - var AxisFoldState; - (function (AxisFoldState) { - // - AxisFoldState["afNone"] = "none"; - // - AxisFoldState["afFolded"] = "folded"; - // - AxisFoldState["afSynchronized"] = "synchronized"; - })(AxisFoldState = exports.AxisFoldState || (exports.AxisFoldState = {})); - // - var LinePattern; - (function (LinePattern) { - // - LinePattern["LinePatternNone"] = "none"; - // - LinePattern["LinePatternSolid"] = "solid"; - // - LinePattern["LinePatternDashed"] = "dashed"; - // - LinePattern["LinePatternDotted"] = "dotted"; - })(LinePattern = exports.LinePattern || (exports.LinePattern = {})); - // - var LineVisibility; - (function (LineVisibility) { - // - LineVisibility["LineVisibilityAuto"] = "automatic"; - // - LineVisibility["LineVisibilityOn"] = "on"; - // - LineVisibility["LineVisibilityOff"] = "off"; - })(LineVisibility = exports.LineVisibility || (exports.LineVisibility = {})); - // - var StylesLinePattern; - (function (StylesLinePattern) { - // - StylesLinePattern["StylesLinePatternSolid"] = "solid"; - // - StylesLinePattern["StylesLinePatternDashed"] = "dashed"; - // - StylesLinePattern["StylesLinePatternDotted"] = "dotted"; - })(StylesLinePattern = exports.StylesLinePattern || (exports.StylesLinePattern = {})); - // - var LineCap; - (function (LineCap) { - // - LineCap["LineCapFlat"] = "flat"; - // - LineCap["LineCapSquare"] = "square"; - // - LineCap["LineCapRound"] = "round"; - // - LineCap["LineCapTriangle"] = "triangle"; - })(LineCap = exports.LineCap || (exports.LineCap = {})); - // - var LineJoin; - (function (LineJoin) { - // - LineJoin["BevelJoin"] = "bevel"; - // - LineJoin["MiterJoin"] = "miter"; - // - LineJoin["RoundJoin"] = "round"; - })(LineJoin = exports.LineJoin || (exports.LineJoin = {})); - // - var LineAlignment; - (function (LineAlignment) { - // - LineAlignment["AlignmentCenter"] = "center"; - // - LineAlignment["AlignmentInset"] = "inset"; - })(LineAlignment = exports.LineAlignment || (exports.LineAlignment = {})); - // - var FillMode; - (function (FillMode) { - // - FillMode["FillEvenOdd"] = "even-odd"; - // - FillMode["FillWinding"] = "winding"; - })(FillMode = exports.FillMode || (exports.FillMode = {})); - // - var BorderStyle; - (function (BorderStyle) { - // none - BorderStyle["BorderStyleNone"] = "bs-none"; - // hidden - BorderStyle["BorderStyleHidden"] = "bs-hidden"; - // dotted - BorderStyle["BorderStyleDotted"] = "bs-dotted"; - // dashed - BorderStyle["BorderStyleDashed"] = "bs-dashed"; - // solid - BorderStyle["BorderStyleSolid"] = "bs-solid"; - // double - BorderStyle["BorderStyleDouble"] = "bs-double"; - // groove - BorderStyle["BorderStyleGroove"] = "bs-groove"; - // ridge - BorderStyle["BorderStyleRidge"] = "bs-ridge"; - // inset - BorderStyle["BorderStyleInset"] = "bs-inset"; - // outset - BorderStyle["BorderStyleOutset"] = "bs-outset"; - // invalid - BorderStyle["BorderStyleInvalid"] = "bs-invalid"; - })(BorderStyle = exports.BorderStyle || (exports.BorderStyle = {})); - // - var ColorPaletteType; - (function (ColorPaletteType) { - // - ColorPaletteType["ColorPaletteRegular"] = "color-palette-regular"; - // - ColorPaletteType["ColorPaletteOrderedDiverging"] = "palette-ordered-diverging"; - // - ColorPaletteType["ColorPaletteOrderedLinear"] = "palette-ordered-linear"; - })(ColorPaletteType = exports.ColorPaletteType || (exports.ColorPaletteType = {})); - // - var PaletteFlags; - (function (PaletteFlags) { - // - PaletteFlags["PaletteFlagNone"] = "palette-flag-none"; - // - PaletteFlags["PaletteFlagCustom"] = "palette-flag-custom"; - // - PaletteFlags["PaletteFlagNotQuantitative"] = "palette-flag-not-quantitative"; - // - PaletteFlags["PaletteFlagNotCategorical"] = "palette-flag-not-categorical"; - // - PaletteFlags["PaletteFlagNotReferenceBand"] = "palette-flag-not-reference-band"; - // - PaletteFlags["PaletteFlagNotBoxplot"] = "palette-flag-not-boxplot"; - // - PaletteFlags["PaletteFlagNotFilledMapLight"] = "palette-flag-not-filled-map-light"; - // - PaletteFlags["PaletteFlagNotFilledMapDark"] = "palette-flag-not-filled-map-dark"; - // - PaletteFlags["PaletteFlagLegacy"] = "palette-flag-legacy"; - })(PaletteFlags = exports.PaletteFlags || (exports.PaletteFlags = {})); - // - var DefaultPaletteType; - (function (DefaultPaletteType) { - // - DefaultPaletteType["SmallNominal"] = "palette-default-small-nominal"; - // - DefaultPaletteType["LargeNominal"] = "palette-default-large-nominal"; - // - DefaultPaletteType["Ordinal"] = "palette-default-ordinal"; - // - DefaultPaletteType["QuantitativePositive"] = "palette-default-quant-pos"; - // - DefaultPaletteType["QuantitativeNegative"] = "palette-default-quant-neg"; - // - DefaultPaletteType["QuantitativeDiverging"] = "palette-default-quant-div"; - // - DefaultPaletteType["QuantitativePositiveLight"] = "palette-default-quant-pos-light"; - // - DefaultPaletteType["QuantitativeNegativeLight"] = "palette-default-quant-neg-light"; - // - DefaultPaletteType["QuantitativeDivergingLight"] = "palette-default-quant-div-light"; - // - DefaultPaletteType["QuantitativePositiveArea"] = "palette-default-quant-pos-area"; - // - DefaultPaletteType["QuantitativeNegativeArea"] = "palette-default-quant-neg-area"; - // - DefaultPaletteType["QuantitativeDivergingArea"] = "palette-default-quant-div-area"; - })(DefaultPaletteType = exports.DefaultPaletteType || (exports.DefaultPaletteType = {})); - // - var ShowBounds; - (function (ShowBounds) { - // - ShowBounds["Both"] = "show-both"; - // - ShowBounds["Upper"] = "show-upper"; - // - ShowBounds["Lower"] = "show-lower"; - })(ShowBounds = exports.ShowBounds || (exports.ShowBounds = {})); - // Sample vs. population standard deviation - var StDevType; - (function (StDevType) { - // - StDevType["Sample"] = "stdev-sample"; - // - StDevType["Population"] = "stdev-population"; - })(StDevType = exports.StDevType || (exports.StDevType = {})); - // - var ReferenceLineFormulaGroup; - (function (ReferenceLineFormulaGroup) { - // - ReferenceLineFormulaGroup["None"] = "none"; - // - ReferenceLineFormulaGroup["Line"] = "line"; - // - ReferenceLineFormulaGroup["Band"] = "band"; - // - ReferenceLineFormulaGroup["Distribution"] = "distribution"; - // - ReferenceLineFormulaGroup["Boxplot"] = "boxplot"; - })(ReferenceLineFormulaGroup = exports.ReferenceLineFormulaGroup || (exports.ReferenceLineFormulaGroup = {})); - // - var ReferenceLineScopeType; - (function (ReferenceLineScopeType) { - // - ReferenceLineScopeType["PerCell"] = "per-cell"; - // - ReferenceLineScopeType["PerPane"] = "per-pane"; - // - ReferenceLineScopeType["PerTable"] = "per-table"; - })(ReferenceLineScopeType = exports.ReferenceLineScopeType || (exports.ReferenceLineScopeType = {})); - // how should the line be labeled - var ReferenceLineLabelType; - (function (ReferenceLineLabelType) { - // no label - ReferenceLineLabelType["None"] = "none"; - // an automatically generated label - ReferenceLineLabelType["Automatic"] = "automatic"; - // - ReferenceLineLabelType["Value"] = "value"; - // - ReferenceLineLabelType["Computation"] = "computation"; - // a user defined label - ReferenceLineLabelType["Custom"] = "custom"; - })(ReferenceLineLabelType = exports.ReferenceLineLabelType || (exports.ReferenceLineLabelType = {})); - // how should the line be computed - var ReferenceLineFormulaType; - (function (ReferenceLineFormulaType) { - // a user specified constant value - ReferenceLineFormulaType["Constant"] = "constant"; - // - ReferenceLineFormulaType["Total"] = "total"; - // total of all values at the given scope <- is this correct? looks like comment from FormulaTotal - ReferenceLineFormulaType["Sum"] = "sum"; - // minimum value in the scope - ReferenceLineFormulaType["Min"] = "min"; - // maximum value in the scope - ReferenceLineFormulaType["Max"] = "max"; - // average value in the scope - ReferenceLineFormulaType["Average"] = "average"; - // median value in the scope - ReferenceLineFormulaType["Median"] = "median"; - // the n quantiles values in the scope - ReferenceLineFormulaType["Quantiles"] = "quantiles"; - // a given percentile in the scope - ReferenceLineFormulaType["Percentile"] = "percentile"; - // mean +- standard deviation - ReferenceLineFormulaType["StandardDeviation"] = "standard-deviation"; - // a given confidence interval around the mean - ReferenceLineFormulaType["ConfidenceInterval"] = "confidence-interval"; - // - ReferenceLineFormulaType["MedianConfidenceInterval"] = "median-confidence-interval"; - })(ReferenceLineFormulaType = exports.ReferenceLineFormulaType || (exports.ReferenceLineFormulaType = {})); - // Line or confidence interval or both - var ReferenceLineConfidenceIntervalState; - (function (ReferenceLineConfidenceIntervalState) { - // display line only - ReferenceLineConfidenceIntervalState["LineOnly"] = "line-only"; - // display the line and a confidence interval - ReferenceLineConfidenceIntervalState["LineAndConfidenceInterval"] = "line-and-interval"; - // display confidence interval only - ReferenceLineConfidenceIntervalState["ConfidenceIntervalOnly"] = "interval-only"; - })(ReferenceLineConfidenceIntervalState = exports.ReferenceLineConfidenceIntervalState || (exports.ReferenceLineConfidenceIntervalState = {})); - // type of distribution. i.e. Percentage, Percentile, Quantile, and Standard Deviation - var ReferenceLineDistributionType; - (function (ReferenceLineDistributionType) { - // distribution type percentage - ReferenceLineDistributionType["Percentages"] = "percentages"; - // distribution type percentile - ReferenceLineDistributionType["Percentiles"] = "percentiles"; - // distribution type quantile - ReferenceLineDistributionType["Quantiles"] = "quantiles"; - // distribution type standard deviation - ReferenceLineDistributionType["StandardDeviation"] = "standard-deviation"; - })(ReferenceLineDistributionType = exports.ReferenceLineDistributionType || (exports.ReferenceLineDistributionType = {})); - // the kind of LOD calc to use for a given reference line - var ReferenceLineLODCalcType; - (function (ReferenceLineLODCalcType) { - // Create a formula using a FIXED-like level-of-detail calculation, to which sheet filters apply, that will go onto a specific sheet - ReferenceLineLODCalcType["MeasureFormula"] = "measure-formula"; - // Create a boolean formula that can be used as a filter - ReferenceLineLODCalcType["BooleanFilter"] = "boolean-filter"; - })(ReferenceLineLODCalcType = exports.ReferenceLineLODCalcType || (exports.ReferenceLineLODCalcType = {})); - // - var BoxplotWhiskerType; - (function (BoxplotWhiskerType) { - // - BoxplotWhiskerType["Standard"] = "standard"; - // - BoxplotWhiskerType["Minmax"] = "minmax"; - })(BoxplotWhiskerType = exports.BoxplotWhiskerType || (exports.BoxplotWhiskerType = {})); - // categories of connection types displayed by the connection UI - var ConnectionTypeCategory; - (function (ConnectionTypeCategory) { - // standard database - ConnectionTypeCategory["CTC_Database"] = "database"; - // 'More Items ...' meta item - ConnectionTypeCategory["CTC_More"] = "more"; - // Other file types - ConnectionTypeCategory["CTC_Other"] = "other"; - // invalid connection category - ConnectionTypeCategory["CTC_Invalid"] = "invalid"; - })(ConnectionTypeCategory = exports.ConnectionTypeCategory || (exports.ConnectionTypeCategory = {})); - // a logical grouping of connection types displayed by the connection UI - var ConnectionTypeGroup; - (function (ConnectionTypeGroup) { - // in a file - ConnectionTypeGroup["CTG_File"] = "file"; - // on a server - ConnectionTypeGroup["CTG_Server"] = "server"; - // on a recent server - ConnectionTypeGroup["CTG_MruServer"] = "mru-server"; - // invalid group - ConnectionTypeGroup["CTG_Invalid"] = "invalid"; - })(ConnectionTypeGroup = exports.ConnectionTypeGroup || (exports.ConnectionTypeGroup = {})); - // The type of metadata a column contains - var CubeMetadataCategory; - (function (CubeMetadataCategory) { - // cube's name - CubeMetadataCategory["CMC_Name"] = "name"; - // cube's description - CubeMetadataCategory["CMC_Description"] = "description"; - // cube's last updated timestamp - CubeMetadataCategory["CMC_LastUpdated"] = "last-updated"; - // invalid - CubeMetadataCategory["CMC_Invalid"] = "invalid"; - })(CubeMetadataCategory = exports.CubeMetadataCategory || (exports.CubeMetadataCategory = {})); - // The type of widget to display to the user when they are specifying connection info - var ConnectionWidgetType; - (function (ConnectionWidgetType) { - // show the join area - ConnectionWidgetType["CWT_JoinArea"] = "join-area"; - // show the cube selection ui - ConnectionWidgetType["CWT_CubeSelection"] = "cube-selection"; - // show the google analytics ui - ConnectionWidgetType["CWT_GoogleAnalytics"] = "google-analytics"; - // show the tableau server ui - ConnectionWidgetType["CWT_TableauServer"] = "tableau-server"; - // do not show any connection widget - ConnectionWidgetType["CWT_NoWidget"] = "no-widget"; - // invalid - ConnectionWidgetType["CWT_Invalid"] = "invalid"; - })(ConnectionWidgetType = exports.ConnectionWidgetType || (exports.ConnectionWidgetType = {})); - // The type of google analytics basic info - var GoogleBasicInfoType; - (function (GoogleBasicInfoType) { - // google analytics account - GoogleBasicInfoType["GA_Account"] = "ga-account"; - // google analytics property - GoogleBasicInfoType["GA_Property"] = "ga-property"; - // google analytics view - GoogleBasicInfoType["GA_View"] = "ga-view"; - // invalid - GoogleBasicInfoType["GA_Invalid"] = "invalid"; - })(GoogleBasicInfoType = exports.GoogleBasicInfoType || (exports.GoogleBasicInfoType = {})); - // The way in which a piece of connection information is specified - var ConnectionSpecificationType; - (function (ConnectionSpecificationType) { - // Uses a combo box - ConnectionSpecificationType["CST_ComboBox"] = "combo-box"; - // Uses a line edit - ConnectionSpecificationType["CST_LineEdit"] = "line-edit"; - // Uses a line edit with a browse button next to it - ConnectionSpecificationType["CST_LineEditBrowse"] = "line-edit-browse"; - // invalid - ConnectionSpecificationType["CST_Invalid"] = "invalid"; - })(ConnectionSpecificationType = exports.ConnectionSpecificationType || (exports.ConnectionSpecificationType = {})); - // GA Date Range - var DateRange; - (function (DateRange) { - // - DateRange["DateRangeFirst"] = "date-range-first"; - // - DateRange["DateRangeLast30Days"] = "date-range-last30"; - // - DateRange["DateRangeToday"] = "date-range-today"; - // - DateRange["DateRangeYesterday"] = "date-range-yesterday"; - // - DateRange["DateRangeLastWeek"] = "date-range-last-week"; - // - DateRange["DateRangeLastMonth"] = "date-range-last-month"; - // - DateRange["DateRangeLastYear"] = "date-range-last-year"; - // - DateRange["DateRangeThisWeekToYesterday"] = "date-range-this-week-to-yesterday"; - // - DateRange["DateRangeThisMonthToYesterday"] = "date-range-this-month-to-yesterday"; - // - DateRange["DateRangeThisYearToYesterday"] = "date-range-this-year-to-yesterday"; - // - DateRange["DateRangeLastWeekToYesterday"] = "date-range-last-week-to-yesterday"; - // - DateRange["DateRangeLastMonthToYesterday"] = "date-range-last-month-to-yesterday"; - // - DateRange["DateRangeLastYearToYesterday"] = "date-range-last-year-to-yesterday"; - // - DateRange["DateRangeFixedRange"] = "date-range-fixed-range"; - // - DateRange["DateRangeFixedStart"] = "date-range-fixed-start"; - // - DateRange["DateRangeCount"] = "date-range-count"; - })(DateRange = exports.DateRange || (exports.DateRange = {})); - // Specifies the type of widget to show in ConnectServerWidget - var ConnectServerWidgetType; - (function (ConnectServerWidgetType) { - // invalid - ConnectServerWidgetType["CSWT_Invalid"] = "invalid"; - // microsoft access - ConnectServerWidgetType["CSWT_Access"] = "access"; - // generic odbc - ConnectServerWidgetType["CSWT_ODBC"] = "odbc"; - // cubes - ConnectServerWidgetType["CSWT_Cube"] = "cube"; - // relational data sources - ConnectServerWidgetType["CSWT_Relational"] = "relational"; - // drill data source - ConnectServerWidgetType["CSWT_Drill"] = "drill"; - })(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {})); - // - var AuthenticationEnumsMode; - (function (AuthenticationEnumsMode) { - // no authentication widget - AuthenticationEnumsMode["AuthModeNone"] = "auth-mode-none"; - // username and password - AuthenticationEnumsMode["AuthModeBasic"] = "auth-mode-basic"; - // username and password can be blank - AuthenticationEnumsMode["AuthModeBasicNoValidateFields"] = "auth-mode-basic-no-validate-fields"; - // only username - AuthenticationEnumsMode["AuthModeBasicUserNameOnly"] = "auth-mode-basic-username-only"; - // aws access key and secret ID - AuthenticationEnumsMode["AuthModeBasicAWS"] = "auth-mode-basic-aws"; - // username, password, and a list of AuthOptions with radio buttons - AuthenticationEnumsMode["AuthModeRadio"] = "auth-mode-radio"; - // Like AuthModeRadio, but enable username/password even for integrated auth - AuthenticationEnumsMode["AuthModeRadioUnindented"] = "auth-mode-radio-unindented"; - // username, password, and a list of AuthOptions with a combobox - AuthenticationEnumsMode["AuthModeComboBox"] = "auth-mode-combobox"; - // Like AuthModeCombobox, but with option not requiring username/password - AuthenticationEnumsMode["AuthModeComboBoxIntegrated"] = "auth-mode-combobox-integrated"; - // driver, authentication, username, realm, etc - AuthenticationEnumsMode["AuthModeHive"] = "auth-mode-hive"; - // none, azure marketplace account, explicit - AuthenticationEnumsMode["AuthModeOData"] = "auth-mode-odata"; - // edition, authentication, sso domain, etc - AuthenticationEnumsMode["AuthModeSharePoint"] = "auth-mode-sharepoint"; - // username, password, client, & language - AuthenticationEnumsMode["AuthModeSAPBW"] = "auth-mode-sapbw"; - // Ability to switch between two different auth modes each in their own modal dialogs (basic and oauth) - AuthenticationEnumsMode["AuthModeSwitchModal"] = "auth-mode-switch-modal"; - })(AuthenticationEnumsMode = exports.AuthenticationEnumsMode || (exports.AuthenticationEnumsMode = {})); - // - var AuthenticationEnumsReconnectMode; - (function (AuthenticationEnumsReconnectMode) { - // Auth not needed for reconnect - AuthenticationEnumsReconnectMode["ReconnectModeNone"] = "reconnect-mode-none"; - // Username and password - AuthenticationEnumsReconnectMode["ReconnectModeBasic"] = "reconnect-mode-basic"; - // Access file - AuthenticationEnumsReconnectMode["ReconnectModeAccess"] = "reconnect-mode-access"; - // Microsoft Azure Data Market (OData) - AuthenticationEnumsReconnectMode["ReconnectModeDataMarket"] = "reconnect-mode-data-market"; - // Google OAuth - AuthenticationEnumsReconnectMode["ReconnectModeGoogleOAuth"] = "reconnect-mode-google-oauth"; - // SalesforceOAuth, with the option of username/password auth - AuthenticationEnumsReconnectMode["ReconnectModeSalesforceOAuth"] = "reconnect-mode-salesforce-oauth"; - // Web data connector - AuthenticationEnumsReconnectMode["ReconnectModeWebData"] = "reconnect-mode-web-data"; - })(AuthenticationEnumsReconnectMode = exports.AuthenticationEnumsReconnectMode || (exports.AuthenticationEnumsReconnectMode = {})); - // - var AuthenticationEnumsAuthOption; - (function (AuthenticationEnumsAuthOption) { - // FIRST - AuthenticationEnumsAuthOption["AuthExplicit"] = "auth-option-explicit"; - // - AuthenticationEnumsAuthOption["AuthExplicitUnindented"] = "auth-option-explicit-unindented"; - // - AuthenticationEnumsAuthOption["AuthUseWindows"] = "auth-option-use-windows"; - // - AuthenticationEnumsAuthOption["AuthUseWindowsPreferred"] = "auth-option-windows-preferred"; - // - AuthenticationEnumsAuthOption["AuthTeradata"] = "auth-option-teradata"; - // - AuthenticationEnumsAuthOption["AuthLDAP"] = "auth-option-ldap"; - // - AuthenticationEnumsAuthOption["AuthVirtualNode"] = "auth-option-virtual-node"; - // - AuthenticationEnumsAuthOption["AuthODataAccount"] = "auth-option-odata"; - // - AuthenticationEnumsAuthOption["AuthNone"] = "auth-option-none"; - // - AuthenticationEnumsAuthOption["AuthKerberos"] = "auth-option-kerberos"; - // Introduced for Kerberos with fallback, recognizing that the db may or may not be on Windows - AuthenticationEnumsAuthOption["AuthIntegrated"] = "auth-option-integrated"; - // - AuthenticationEnumsAuthOption["AuthUsername"] = "auth-option-username"; - // - AuthenticationEnumsAuthOption["AuthUsernameAndPassword"] = "auth-option-username-and-password"; - // - AuthenticationEnumsAuthOption["AuthSSL"] = "auth-option-ssl"; - // - AuthenticationEnumsAuthOption["AuthHDIEmulator"] = "auth-hdi-emulator"; - // - AuthenticationEnumsAuthOption["AuthHDIService"] = "auth-hdi-service"; - // - AuthenticationEnumsAuthOption["AuthHTTP"] = "auth-http"; - // - AuthenticationEnumsAuthOption["AuthHTTPS"] = "auth-https"; - // - AuthenticationEnumsAuthOption["AuthAccessNoSecurity"] = "auth-option-access-no"; - // - AuthenticationEnumsAuthOption["AuthAccessYesSecurity"] = "auth-option-access-yes"; - // - AuthenticationEnumsAuthOption["AuthOAuth"] = "auth-oauth"; - // - AuthenticationEnumsAuthOption["AuthForms"] = "auth-forms"; - // - AuthenticationEnumsAuthOption["AuthThirdPartySSO"] = "auth-third-party-SSO"; - // LAST - AuthenticationEnumsAuthOption["AuthInvalid"] = "auth-option-invalid"; - })(AuthenticationEnumsAuthOption = exports.AuthenticationEnumsAuthOption || (exports.AuthenticationEnumsAuthOption = {})); - // data source validation modes - var DataSourceParserValidationMode; - (function (DataSourceParserValidationMode) { - // - DataSourceParserValidationMode["WorkbookLoadValidation"] = "workbook-load-validation"; - // - DataSourceParserValidationMode["AutoValidation"] = "auto-validation"; - // - DataSourceParserValidationMode["ForceValidation"] = "force-validation"; - // - DataSourceParserValidationMode["PreventValidation"] = "prevent-validation"; - // - DataSourceParserValidationMode["PreventValidationAndThrow"] = "prevent-validation-and-throw"; - })(DataSourceParserValidationMode = exports.DataSourceParserValidationMode || (exports.DataSourceParserValidationMode = {})); - // Enum for DataGrid/MetadataGrid fields reordering - var FieldOrderType; - (function (FieldOrderType) { - // - FieldOrderType["DATASOURCE_ORDER"] = "datasource-order"; - // - FieldOrderType["ALPHA_PER_TABLE"] = "alpha-per-table"; - // - FieldOrderType["ALPHABETICAL_ORDER"] = "alphabetical-order"; - // - FieldOrderType["CUSTOM_ORDER"] = "custom-order"; - })(FieldOrderType = exports.FieldOrderType || (exports.FieldOrderType = {})); - // - var LineInterpolationMode; - (function (LineInterpolationMode) { - // - LineInterpolationMode["LIM_Linear"] = "lim-linear"; - // - LineInterpolationMode["LIM_Step"] = "lim-step"; - // - LineInterpolationMode["LIM_Jump"] = "lim-jump"; - })(LineInterpolationMode = exports.LineInterpolationMode || (exports.LineInterpolationMode = {})); - // - var LineMarkerPosition; - (function (LineMarkerPosition) { - // - LineMarkerPosition["LMP_Left"] = "lmp-left"; - // - LineMarkerPosition["LMP_Center"] = "lmp-center"; - // - LineMarkerPosition["LMP_Right"] = "lmp-right"; - })(LineMarkerPosition = exports.LineMarkerPosition || (exports.LineMarkerPosition = {})); - // Enumeration for the type of join connecting two tables - var SQLJoinType; - (function (SQLJoinType) { - // - SQLJoinType["SQL_InnerJoin"] = "sql-inner-join"; - // - SQLJoinType["SQL_LeftJoin"] = "sql-left-join"; - // - SQLJoinType["SQL_RightJoin"] = "sql-right-join"; - // - SQLJoinType["SQL_FullJoin"] = "sql-full-join"; - // - SQLJoinType["SQL_CrossJoin"] = "sql-cross-join"; - })(SQLJoinType = exports.SQLJoinType || (exports.SQLJoinType = {})); - // - var FolderRole; - (function (FolderRole) { - // - FolderRole["FOLDER_DIMENSIONS"] = "dimensions"; - // - FolderRole["FOLDER_MEASURES"] = "measure"; - // - FolderRole["FOLDER_GROUPS"] = "groups"; - // - FolderRole["FOLDER_PARAMETERS"] = "parameters"; - })(FolderRole = exports.FolderRole || (exports.FolderRole = {})); - // - var FieldTypeIconSet; - (function (FieldTypeIconSet) { - // - FieldTypeIconSet["FT_SET_ALL"] = "all"; - // - FieldTypeIconSet["FT_SET_CUBE_MEASURES"] = "cube-measures"; - // - FieldTypeIconSet["FT_SET_CUBE_DIMENSIONS"] = "cube-dimensions"; - })(FieldTypeIconSet = exports.FieldTypeIconSet || (exports.FieldTypeIconSet = {})); - // - var FieldPivotStrategy; - (function (FieldPivotStrategy) { - // - FieldPivotStrategy["PIVOT_ON_KEY"] = "pivot-on-key"; - // - FieldPivotStrategy["PIVOT_ON_ALIAS"] = "pivot-on-alias"; - })(FieldPivotStrategy = exports.FieldPivotStrategy || (exports.FieldPivotStrategy = {})); - // - var AliasType; - (function (AliasType) { - // - AliasType["ALIAS_NOTSET"] = "alias-not-set"; - // - AliasType["ALIAS_BEGIN"] = "alias-begin"; - // - AliasType["ALIAS_KEY"] = "alias-key"; - // - AliasType["ALIAS_KEY_NAME"] = "alias-key-name"; - // - AliasType["ALIAS_KEY_MEDNAME"] = "alias-key-medname"; - // - AliasType["ALIAS_KEY_LONGNAME"] = "alias-key-longname"; - // - AliasType["ALIAS_NAME"] = "alias-name"; - // - AliasType["ALIAS_NAME_KEY"] = "alias-name-key"; - // - AliasType["ALIAS_MEDNAME"] = "alias-medname"; - // - AliasType["ALIAS_MEDNAME_KEY"] = "alias-medname-key"; - // - AliasType["ALIAS_LONGNAME"] = "alias-longname"; - // - AliasType["ALIAS_LONGNAME_KEY"] = "alias-longname-key"; - // - AliasType["ALIAS_END"] = "alias-end"; - })(AliasType = exports.AliasType || (exports.AliasType = {})); - // - var AliasTypes; - (function (AliasTypes) { - // - AliasTypes["MASK_ALIAS_KEY"] = "mask-alias-key"; - // - AliasTypes["MASK_ALIAS_NAME"] = "mask-alias-name"; - // - AliasTypes["MASK_ALIAS_MEDNAME"] = "mask-alias-medname"; - // - AliasTypes["MASK_ALIAS_LONGNAME"] = "mask-alias-longname"; - })(AliasTypes = exports.AliasTypes || (exports.AliasTypes = {})); - // - var FieldRole; - (function (FieldRole) { - // - FieldRole["ROLE_DIMENSION"] = "dimension"; - // - FieldRole["ROLE_MEASURE"] = "measure"; - // - FieldRole["ROLE_UNKNOWN"] = "unknown"; - })(FieldRole = exports.FieldRole || (exports.FieldRole = {})); - // - var FieldType; - (function (FieldType) { - // - FieldType["TYPE_QUANTITATIVE"] = "quantitative"; - // - FieldType["TYPE_ORDINAL"] = "ordinal"; - // - FieldType["TYPE_NOMINAL"] = "nominal"; - // - FieldType["TYPE_UNKNOWN"] = "unknown"; - })(FieldType = exports.FieldType || (exports.FieldType = {})); - // - var DataSourceOrder; - (function (DataSourceOrder) { - // - DataSourceOrder["DSO_ALPHABETIC"] = "dso-alphabetic"; - // - DataSourceOrder["DSO_ORDINAL"] = "dso-ordinal"; - })(DataSourceOrder = exports.DataSourceOrder || (exports.DataSourceOrder = {})); - // Where the column comes from - var ColumnClass; - (function (ColumnClass) { - // A metadata column (O or Q Measures) - ColumnClass["COL_METADATA"] = "col-metadata"; - // A physical column on the database - ColumnClass["COL_DATABASE"] = "col-database"; - // A numberic bin (a special kind of calculated column) - ColumnClass["COL_NUMERICBIN"] = "col-numericbin"; - // A Categorical bin (group) - ColumnClass["COL_CATEGORICALBIN"] = "col-categoricalbin"; - // A column instance - ColumnClass["COL_INSTANCE"] = "col-instance"; - // A (raw) mdx calculated column - ColumnClass["COL_MDXCALC"] = "col-mdxcalc"; - // A user-defined calculated column, Tableau expression syntax - ColumnClass["COL_USERCALC"] = "col-usercalc"; - // A column that would have been COL_DATABASE, but the underlying database column does not exist - ColumnClass["COL_DANGLING"] = "col-dangling"; - // A column that contains local supplied data (e.g. Latitude) - ColumnClass["COL_LOCALDATA"] = "col-localdata"; - // A column that contains a visual model attribute (e.g. PaneIndex, Color, ...) - ColumnClass["COL_VISUALDATA"] = "col-visualdata"; - // A column that's a Group (a " Set " in UI terminology) - ColumnClass["COL_GROUP"] = "col-group"; - })(ColumnClass = exports.ColumnClass || (exports.ColumnClass = {})); - // - var VTAggType; - (function (VTAggType) { - // - VTAggType["VTAGG_SUM"] = "sum"; - // - VTAggType["VTAGG_AVG"] = "avg"; - // - VTAggType["VTAGG_MIN"] = "min"; - // - VTAggType["VTAGG_MAX"] = "max"; - // - VTAggType["VTAGG_SERVER"] = "server"; - // - VTAggType["VTAGG_NONE"] = "none"; - // - VTAggType["VTAGG_DEFAULT"] = "default"; - })(VTAggType = exports.VTAggType || (exports.VTAggType = {})); - // - var EntityType; - (function (EntityType) { - // - EntityType["NoEnumerationEntity"] = "no-enumeration-entity"; - // - EntityType["DatabaseEntity"] = "database-entity"; - // - EntityType["SchemaEntity"] = "schema-entity"; - // - EntityType["TableEntity"] = "table-entity"; - })(EntityType = exports.EntityType || (exports.EntityType = {})); - // - var PickEntitySearchType; - (function (PickEntitySearchType) { - // - PickEntitySearchType["PickEntitySearchType_StartsWith"] = "starts-with"; - // - PickEntitySearchType["PickEntitySearchType_Contains"] = "contains"; - // - PickEntitySearchType["PickEntitySearchType_ExactMatch"] = "exact-match"; - // - PickEntitySearchType["PickEntitySearchType_DEFAULT"] = "default"; - })(PickEntitySearchType = exports.PickEntitySearchType || (exports.PickEntitySearchType = {})); - // Parsing methods and structures. - var ExpressionOp; - (function (ExpressionOp) { - // - ExpressionOp["LogicalOr"] = "op-logical-or"; - // - ExpressionOp["LogicalAnd"] = "op-logical-and"; - // - ExpressionOp["LogicalNot"] = "op-logical-not"; - // - ExpressionOp["BitwiseXOr"] = "op-bitwise-xor"; - // - ExpressionOp["BitwiseOr"] = "op-bitwise-or"; - // - ExpressionOp["Equals"] = "op-equals"; - // - ExpressionOp["Greater"] = "op-greater"; - // - ExpressionOp["Less"] = "op-less"; - // - ExpressionOp["GEqual"] = "op-gequal"; - // - ExpressionOp["LEqual"] = "op-lequal"; - // - ExpressionOp["NEqual"] = "op-nequal"; - // - ExpressionOp["Plus"] = "op-plus"; - // - ExpressionOp["Minus"] = "op-minus"; - // - ExpressionOp["BitwiseAnd"] = "op-bitwise-and"; - // - ExpressionOp["Multiply"] = "op-multiply"; - // - ExpressionOp["Divide"] = "op-divide"; - // - ExpressionOp["Modulo"] = "op-modulo"; - // - ExpressionOp["Power"] = "op-power"; - // - ExpressionOp["Positive"] = "op-positive"; - // - ExpressionOp["Negative"] = "op-negative"; - // - ExpressionOp["BitwiseNot"] = "op-bitwise-not"; - // - ExpressionOp["Column"] = "op-column"; - // - ExpressionOp["String"] = "op-string"; - // - ExpressionOp["Number"] = "op-number"; - // - ExpressionOp["Date"] = "op-date"; - // - ExpressionOp["Boolean"] = "op-boolean"; - // - ExpressionOp["Funcall"] = "op-funcall"; - // - ExpressionOp["LParen"] = "op-lparen"; - // - ExpressionOp["RParen"] = "op-rparen"; - // - ExpressionOp["Comma"] = "op-comma"; - // - ExpressionOp["Ident"] = "op-ident"; - // - ExpressionOp["Null"] = "op-null"; - // - ExpressionOp["If"] = "op-if"; - // - ExpressionOp["Elseif"] = "op-elseif"; - // - ExpressionOp["Case"] = "op-case"; - // - ExpressionOp["When"] = "op-when"; - // - ExpressionOp["Then"] = "op-then"; - // - ExpressionOp["Else"] = "op-else"; - // - ExpressionOp["EndExpr"] = "op-endexpr"; - // - ExpressionOp["Whitespace"] = "op-whitespace"; - // - ExpressionOp["Comment"] = "op-comment"; - // - ExpressionOp["LBrace"] = "op-lbrace"; - // - ExpressionOp["RBrace"] = "op-rbrace"; - // - ExpressionOp["Colon"] = "op-colon"; - // - ExpressionOp["Bar"] = "op-bar"; - // - ExpressionOp["Txtype"] = "op-txtype"; - // - ExpressionOp["End"] = "op-end"; - // - ExpressionOp["RBrackets"] = "op-rbrackets"; - // used to represent invalid tokens - ExpressionOp["Invalid"] = "op-invalid"; - })(ExpressionOp = exports.ExpressionOp || (exports.ExpressionOp = {})); - // tri-state bool - var TriBool; - (function (TriBool) { - // - TriBool["TB_Invalid"] = "tribool-invalid"; - // - TriBool["TB_False"] = "tribool-false"; - // - TriBool["TB_True"] = "tribool-true"; - })(TriBool = exports.TriBool || (exports.TriBool = {})); - // table calc reference options set - var ReferenceOptionsSet; - (function (ReferenceOptionsSet) { - // - ReferenceOptionsSet["ROS_Relative"] = "reference-options-set-relative"; - // - ReferenceOptionsSet["ROS_Fixed"] = "reference-options-set-fixed"; - // - ReferenceOptionsSet["ROS_Parameter"] = "reference-options-set-parameter"; - // - ReferenceOptionsSet["ROS_None"] = "reference-options-set-none"; - })(ReferenceOptionsSet = exports.ReferenceOptionsSet || (exports.ReferenceOptionsSet = {})); - // widget state - var WidgetState; - (function (WidgetState) { - // - WidgetState["Hidden"] = "widget-state-hidden"; - // - WidgetState["Disabled"] = "widget-state-disabled"; - // - WidgetState["Enabled"] = "widget-state-enabled"; - })(WidgetState = exports.WidgetState || (exports.WidgetState = {})); - // rank type - var RankType; - (function (RankType) { - // - RankType["Competition"] = "rank-type-competition"; - // - RankType["ModifiedCompetition"] = "rank-type-modified-competition"; - // - RankType["Dense"] = "rank-type-dense"; - // - RankType["Unique"] = "rank-type-unique"; - })(RankType = exports.RankType || (exports.RankType = {})); - // - var TableCalcCommandType; - (function (TableCalcCommandType) { - // - TableCalcCommandType["TableCalcCommandClear"] = "clear"; - })(TableCalcCommandType = exports.TableCalcCommandType || (exports.TableCalcCommandType = {})); - // - var CalcNestingLevel; - (function (CalcNestingLevel) { - // - CalcNestingLevel["Primary"] = "primary"; - // used only for type != TC_CUSTOM - CalcNestingLevel["Secondary"] = "secondary"; - // used only for type == TC_CUSTOM - CalcNestingLevel["Nested"] = "nested"; - })(CalcNestingLevel = exports.CalcNestingLevel || (exports.CalcNestingLevel = {})); - // - var DecimalMode; - (function (DecimalMode) { - // - DecimalMode["DecimalModeAutomatic"] = "automatic"; - // - DecimalMode["DecimalModeManual"] = "manual"; - })(DecimalMode = exports.DecimalMode || (exports.DecimalMode = {})); - // - var TableCalcOrderingType; - (function (TableCalcOrderingType) { - // Advanced... - TableCalcOrderingType["OTField"] = "field"; - // Table (Across) - TableCalcOrderingType["OTRows"] = "rows"; - // Table (Down) - TableCalcOrderingType["OTColumns"] = "columns"; - // Table (Across then Down) - TableCalcOrderingType["OTTable"] = "table"; - // Table (Down then Across) - TableCalcOrderingType["OTTableColumnPrecedence"] = "table-column-precedence"; - // Pane Across - TableCalcOrderingType["OTRowInPane"] = "row-in-pane"; - // Pane (Down) - TableCalcOrderingType["OTColumnInPane"] = "column-in-pane"; - // Pane (Across then Down) - TableCalcOrderingType["OTPane"] = "pane"; - // Pane (Down then Across) - TableCalcOrderingType["OTPaneColumnPrecedence"] = "pane-column-precedence"; - // Cell - TableCalcOrderingType["OTCellInPane"] = "cell-in-pane"; - })(TableCalcOrderingType = exports.TableCalcOrderingType || (exports.TableCalcOrderingType = {})); - // - var TableCalcSortMode; - (function (TableCalcSortMode) { - // - TableCalcSortMode["SM_Automatic"] = "sort-mode-automatic"; - // - TableCalcSortMode["SM_Custom"] = "sort-mode-custom"; - })(TableCalcSortMode = exports.TableCalcSortMode || (exports.TableCalcSortMode = {})); - // - var TableCalcTableCalcType; - (function (TableCalcTableCalcType) { - // none (used to initialize variables) - TableCalcTableCalcType["TC_NONE"] = "none"; - // Running Total - TableCalcTableCalcType["TC_CUMULATIVE"] = "cumulative"; - // Moving Calculation - TableCalcTableCalcType["TC_WINDOW"] = "window"; - // Difference From - TableCalcTableCalcType["TC_DIFF"] = "diff"; - // Percent Difference From - TableCalcTableCalcType["TC_PCTDIFF"] = "pct-diff"; - // Percent From - TableCalcTableCalcType["TC_PCTVALUE"] = "pct-value"; - // Percent Of Total - TableCalcTableCalcType["TC_PCTTOTAL"] = "pct-total"; - // Rank - TableCalcTableCalcType["TC_RANK"] = "rank"; - // Percentile - TableCalcTableCalcType["TC_PCTRANK"] = "pct-rank"; - // Custom - TableCalcTableCalcType["TC_CUSTOM"] = "custom"; - })(TableCalcTableCalcType = exports.TableCalcTableCalcType || (exports.TableCalcTableCalcType = {})); - // - var QuickTableCalcCommandType; - (function (QuickTableCalcCommandType) { - // - QuickTableCalcCommandType["QuickTableCalcCommandRunTotal"] = "run-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandDifference"] = "difference"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctDiff"] = "pct-diff"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctTotal"] = "pct-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandRank"] = "rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctRank"] = "pct-rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandMovingAvg"] = "moving-avg"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtd"] = "ytd"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCgr"] = "cgr"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYOverY"] = "y-over-y"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtdGrowth"] = "ytd-growth"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCustom"] = "custom"; - })(QuickTableCalcCommandType = exports.QuickTableCalcCommandType || (exports.QuickTableCalcCommandType = {})); - // - var TableCalcAddressCommandType; - (function (TableCalcAddressCommandType) { - // - TableCalcAddressCommandType["TableCalcAddressCommandRel"] = "rel"; - // - TableCalcAddressCommandType["TableCalcAddressCommandAbs"] = "abs"; - // - TableCalcAddressCommandType["TableCalcAddressCommandParam"] = "param"; - // - TableCalcAddressCommandType["TableCalcAddressCommandMore"] = "more"; - })(TableCalcAddressCommandType = exports.TableCalcAddressCommandType || (exports.TableCalcAddressCommandType = {})); - // relative addressing - var TableCalcRelativeAddress; - (function (TableCalcRelativeAddress) { - // - TableCalcRelativeAddress["RelAddrFirst"] = "relative-address-first"; - // - TableCalcRelativeAddress["RelAddrPrevious"] = "relative-address-previous"; - // - TableCalcRelativeAddress["RelAddrNext"] = "relative-address-next"; - // - TableCalcRelativeAddress["RelAddrLast"] = "relative-address-last"; - })(TableCalcRelativeAddress = exports.TableCalcRelativeAddress || (exports.TableCalcRelativeAddress = {})); - // - var CategoricalBinItemType; - (function (CategoricalBinItemType) { - // - CategoricalBinItemType["Unbinned"] = "unbinned"; - // - CategoricalBinItemType["BinMember"] = "categorical-bin-member"; - // - CategoricalBinItemType["Bin"] = "categorical-bin"; - })(CategoricalBinItemType = exports.CategoricalBinItemType || (exports.CategoricalBinItemType = {})); - // The class properties - var CredentialTypePropertiesFlag; - (function (CredentialTypePropertiesFlag) { - // - CredentialTypePropertiesFlag["None"] = "none"; - // - CredentialTypePropertiesFlag["GenericAuthClass"] = "generic-auth-class"; - // - CredentialTypePropertiesFlag["ProviderClass"] = "provider-class"; - // - CredentialTypePropertiesFlag["DataConnectionClass"] = "data-connection-class"; - })(CredentialTypePropertiesFlag = exports.CredentialTypePropertiesFlag || (exports.CredentialTypePropertiesFlag = {})); - // The connector type - var ConnectorType; - (function (ConnectorType) { - // - ConnectorType["Invalid"] = "invalid"; - // - ConnectorType["WebDataConnector"] = "web-data-connector"; - // - ConnectorType["CloudFileConnector"] = "cloud-file-connector"; - // - ConnectorType["LegacyConnector"] = "legacy-connector"; - })(ConnectorType = exports.ConnectorType || (exports.ConnectorType = {})); - // - var TablePillIcon; - (function (TablePillIcon) { - // - TablePillIcon["ListItem"] = "list-item"; - // - TablePillIcon["Sheet"] = "sheet"; - // - TablePillIcon["FoundTable"] = "found-table"; - // - TablePillIcon["NamedRange"] = "named-range"; - // - TablePillIcon["StoredProcedure"] = "stored-procedure"; - })(TablePillIcon = exports.TablePillIcon || (exports.TablePillIcon = {})); - // - var JoinValidationError; - (function (JoinValidationError) { - // - JoinValidationError["JVE_NoError"] = "no-error"; - // - JoinValidationError["JVE_EmptyClause"] = "empty-clause"; - // - JoinValidationError["JVE_TypeMismatch"] = "type-mismatch"; - // - JoinValidationError["JVE_InvalidField"] = "invalid-field"; - // - JoinValidationError["JVE_BadClause"] = "bad-clause"; - // - JoinValidationError["JVE_BadInputRelation"] = "bad-input-relation"; - // - JoinValidationError["JVE_RepeatedFieldReferences"] = "repeated-field-references"; - // - JoinValidationError["JVE_UnsupportedJoinType"] = "unsupported-join-type"; - // - JoinValidationError["JVE_InvalidCalculation"] = "invalid-calculation"; - // - JoinValidationError["JVE_Unknown"] = "unknown"; - })(JoinValidationError = exports.JoinValidationError || (exports.JoinValidationError = {})); - // - var ConnectionTypeEnum; - (function (ConnectionTypeEnum) { - // -d-s is used to force the enum generator to generate DS with capital letters in .cs just like the .cpp - ConnectionTypeEnum["InvalidDS"] = "invalid-d-s"; - // - ConnectionTypeEnum["FileDS"] = "file-d-s"; - // - ConnectionTypeEnum["ServerDS"] = "server-d-s"; - // - ConnectionTypeEnum["InternetDS"] = "internet-d-s"; - // - ConnectionTypeEnum["TableauServerDS"] = "tableau-server-d-s"; - })(ConnectionTypeEnum = exports.ConnectionTypeEnum || (exports.ConnectionTypeEnum = {})); - // The result of setting one end of an axis range - var SetAxisRangeResult; - (function (SetAxisRangeResult) { - // - SetAxisRangeResult["Success"] = "set-axis-range-success-result"; - // - SetAxisRangeResult["Failure"] = "set-axis-range-failure-result"; - })(SetAxisRangeResult = exports.SetAxisRangeResult || (exports.SetAxisRangeResult = {})); - // Enumeration of units tick spacing can take - var TickSpacingUnits; - (function (TickSpacingUnits) { - // - TickSpacingUnits["TickSpacingUnits__NoUnits"] = "no-units"; - // - TickSpacingUnits["TickSpacingUnits__Years"] = "years"; - // - TickSpacingUnits["TickSpacingUnits__Quarters"] = "quarters"; - // - TickSpacingUnits["TickSpacingUnits__Months"] = "months"; - // - TickSpacingUnits["TickSpacingUnits__Weeks"] = "weeks"; - // - TickSpacingUnits["TickSpacingUnits__Days"] = "days"; - // - TickSpacingUnits["TickSpacingUnits__Hours"] = "hours"; - // - TickSpacingUnits["TickSpacingUnits__Minutes"] = "minutes"; - // - TickSpacingUnits["TickSpacingUnits__Seconds"] = "seconds"; - })(TickSpacingUnits = exports.TickSpacingUnits || (exports.TickSpacingUnits = {})); - // Enumeration of whether totals are included in or excluded from the color encoding - var TotalsInclusion; - (function (TotalsInclusion) { - // Totals included in color encoding - TotalsInclusion["IncludeTotals"] = "include-totals"; - // Totals excluded from color encoding - TotalsInclusion["ExcludeTotals"] = "exclude-totals"; - })(TotalsInclusion = exports.TotalsInclusion || (exports.TotalsInclusion = {})); - // How tick marks are being calculated - var AxisOptionsTickMarkState; - (function (AxisOptionsTickMarkState) { - // - AxisOptionsTickMarkState["TicksNone"] = "ticks-None"; - // - AxisOptionsTickMarkState["TicksAutomatic"] = "ticks-automatic"; - // - AxisOptionsTickMarkState["TicksManual"] = "ticks-manual"; - })(AxisOptionsTickMarkState = exports.AxisOptionsTickMarkState || (exports.AxisOptionsTickMarkState = {})); - // Setting for type of axis range - var AxisRangeType; - (function (AxisRangeType) { - // - AxisRangeType["AxisRangeType__AutomaticRange"] = "automatic-range"; - // - AxisRangeType["AxisRangeType__UniformRange"] = "uniform-range"; - // - AxisRangeType["AxisRangeType__IndependentRange"] = "independent-range"; - // - AxisRangeType["AxisRangeType__FixedRange"] = "fixed-range"; - // - AxisRangeType["AxisRangeType__FixedMin"] = "fixed-min"; - // - AxisRangeType["AxisRangeType__FixedMax"] = "fixed-max"; - // - AxisRangeType["AxisRangeType__FixedMinIndependentMax"] = "fixed-min-independent-max"; - // - AxisRangeType["AxisRangeType__FixedMaxIndependentMin"] = "fixed-max-independent-min"; - // - AxisRangeType["AxisRangeType__FixedMinUniformMax"] = "fixed-min-uniform-max"; - // - AxisRangeType["AxisRangeType__FixedMaxUniformMin"] = "fixed-max-uniform-min"; - })(AxisRangeType = exports.AxisRangeType || (exports.AxisRangeType = {})); - // represents type of widget on the toolbar of rich text editor - var RichTextEditorWidgetKey; - (function (RichTextEditorWidgetKey) { - // - RichTextEditorWidgetKey["None"] = "none"; - // - RichTextEditorWidgetKey["FontSize"] = "fontsize"; - // - RichTextEditorWidgetKey["FontName"] = "fontname"; - // - RichTextEditorWidgetKey["FontColor"] = "color"; - // - RichTextEditorWidgetKey["Bold"] = "bold"; - // - RichTextEditorWidgetKey["Italic"] = "italic"; - // - RichTextEditorWidgetKey["Underline"] = "underline"; - // - RichTextEditorWidgetKey["AlignLeft"] = "justifyleft"; - // - RichTextEditorWidgetKey["AlignCenter"] = "justifycenter"; - // - RichTextEditorWidgetKey["AlignRight"] = "justifyright"; - // - RichTextEditorWidgetKey["ClearFormatting"] = "clearformatting"; - // - RichTextEditorWidgetKey["TableauKeywords"] = "tableaukeywords"; - })(RichTextEditorWidgetKey = exports.RichTextEditorWidgetKey || (exports.RichTextEditorWidgetKey = {})); - // - var CellSizeChange; - (function (CellSizeChange) { - // - CellSizeChange["CSC_Taller"] = "taller"; - // - CellSizeChange["CSC_Shorter"] = "shorter"; - // - CellSizeChange["CSC_Wider"] = "wider"; - // - CellSizeChange["CSC_Narrower"] = "narrower"; - // - CellSizeChange["CSC_Bigger"] = "bigger"; - // - CellSizeChange["CSC_Smaller"] = "smaller"; - })(CellSizeChange = exports.CellSizeChange || (exports.CellSizeChange = {})); - // - var CellTypeEnum; - (function (CellTypeEnum) { - // - CellTypeEnum["CLT_Square"] = "square"; - // - CellTypeEnum["CLT_Text"] = "text"; - })(CellTypeEnum = exports.CellTypeEnum || (exports.CellTypeEnum = {})); - // represents type of formatting pres model - var TypeOfFormatItem; - (function (TypeOfFormatItem) { - // - TypeOfFormatItem["FT_FormatItem"] = "formatItem"; - // - TypeOfFormatItem["FT_FormatContainer"] = "formatContainer"; - // - TypeOfFormatItem["FT_FormatControl"] = "formatControl"; - })(TypeOfFormatItem = exports.TypeOfFormatItem || (exports.TypeOfFormatItem = {})); - // represents type of formatting container - var TypeOfFormatContainer; - (function (TypeOfFormatContainer) { - // - TypeOfFormatContainer["FT_FormatPane"] = "formatPane"; - // - TypeOfFormatContainer["FT_FormatSection"] = "formatSection"; - // - TypeOfFormatContainer["FT_CollapsibleSection"] = "collapsibleSection"; - // - TypeOfFormatContainer["FT_CompositeContainer"] = "compositeContainer"; - // - TypeOfFormatContainer["FT_UnitContainer"] = "unitContainer"; - // - TypeOfFormatContainer["FT_Tab"] = "tab"; - // - TypeOfFormatContainer["FT_TabGroup"] = "tabGroup"; - })(TypeOfFormatContainer = exports.TypeOfFormatContainer || (exports.TypeOfFormatContainer = {})); - // represents type of formatting control - var TypeOfFormatControl; - (function (TypeOfFormatControl) { - // - TypeOfFormatControl["FT_None"] = "none"; - // - TypeOfFormatControl["FT_NumericControl"] = "numeric-control"; - // - TypeOfFormatControl["FT_TextControl"] = "text-control"; - // - TypeOfFormatControl["FT_ColorControl"] = "color-control"; - // - TypeOfFormatControl["FT_SelectorControl"] = "selector-control"; - // - TypeOfFormatControl["FT_ToggleControl"] = "toggle-control"; - })(TypeOfFormatControl = exports.TypeOfFormatControl || (exports.TypeOfFormatControl = {})); - // represents type of formatting widget - var FormatWidgetKey; - (function (FormatWidgetKey) { - // - FormatWidgetKey["FWK_None"] = "none"; - // - FormatWidgetKey["FWK_FontFamily"] = "fontFamily"; - // - FormatWidgetKey["FWK_FontSize"] = "fontSize"; - // - FormatWidgetKey["FWK_ColorSwatch"] = "colorSwatch"; - // - FormatWidgetKey["FWK_Bold"] = "bold"; - // - FormatWidgetKey["FWK_Italics"] = "italics"; - // - FormatWidgetKey["FWK_Underline"] = "underline"; - // - FormatWidgetKey["FWK_LineVisibility"] = "lineVisibility"; - // - FormatWidgetKey["FWK_LinePattern"] = "linePattern"; - // - FormatWidgetKey["FWK_LineSize"] = "lineSize"; - // - FormatWidgetKey["FWK_NumberType"] = "numericType"; - // - FormatWidgetKey["FWK_DecimalPlaces"] = "decimalPlaces"; - // - FormatWidgetKey["FWK_ThousandsSeparator"] = "thousandsSeparator"; - // - FormatWidgetKey["FWK_NumericUnits"] = "numericUnits"; - })(FormatWidgetKey = exports.FormatWidgetKey || (exports.FormatWidgetKey = {})); - // represents identifier for each node in format pane - var FormatNodeIdentifier; - (function (FormatNodeIdentifier) { - // - FormatNodeIdentifier["Format_None_Key"] = "none"; - // - FormatNodeIdentifier["Format_Workbook_Key"] = "workbook"; - // - FormatNodeIdentifier["Format_Font_Key"] = "font"; - // - FormatNodeIdentifier["Format_Color_Key"] = "color"; - // - FormatNodeIdentifier["Format_Lines_Key"] = "lines"; - // - FormatNodeIdentifier["Format_FontAll_Key"] = "font-all"; - // - FormatNodeIdentifier["Format_FontAllControls_Key"] = "font-all-controls"; - // - FormatNodeIdentifier["Format_FontMore_Key"] = "font-more"; - // - FormatNodeIdentifier["Format_FontWorksheetTitles_Key"] = "worksheet-titles"; - // - FormatNodeIdentifier["Format_FontToolTip_Key"] = "font-tooltip"; - // - FormatNodeIdentifier["Format_FontWorksheet_Key"] = "font-worksheet"; - // - FormatNodeIdentifier["Format_FontDashTitles_Key"] = "dash-titles"; - // - FormatNodeIdentifier["Format_FontStoryTitles_Key"] = "story-titles"; - // - FormatNodeIdentifier["Format_FontTitlesControls_Key"] = "titles-controls"; - // - FormatNodeIdentifier["Format_FontTooltipControls_Key"] = "tooltip-controls"; - // - FormatNodeIdentifier["Format_FontWorksheetControls_Key"] = "worksheet-controls"; - // - FormatNodeIdentifier["Format_LineMore_Key"] = "line-more"; - // - FormatNodeIdentifier["Format_LineGrid_Key"] = "line-grid"; - // - FormatNodeIdentifier["Format_LineGridTabs_Key"] = "line-grid-tabs"; - // - FormatNodeIdentifier["Format_LineZero_Key"] = "line-zero"; - // - FormatNodeIdentifier["Format_LineZeroTabs_Key"] = "line-zero-tabs"; - // - FormatNodeIdentifier["Format_LineAxisTick_Key"] = "line-axis-tick"; - // - FormatNodeIdentifier["Format_LineAxisTickTabs_Key"] = "line-axis-tick-tabs"; - // - FormatNodeIdentifier["Format_LineAxisRuler_Key"] = "line-axis-ruler"; - // - FormatNodeIdentifier["Format_LineAxisRulerTabs_Key"] = "line-axis-ruler-tabs"; - // - FormatNodeIdentifier["Format_LineHeaderDivider_Key"] = "line-header-divider"; - // - FormatNodeIdentifier["Format_LineHeaderDividerTabs_Key"] = "line-header-divider-tabs"; - // - FormatNodeIdentifier["Format_LinePaneDivider_Key"] = "line-paneDivider"; - // - FormatNodeIdentifier["Format_LinePaneDividerTabs_Key"] = "line-paneDivider-tabs"; - // - FormatNodeIdentifier["Format_LineGridAll_Key"] = "line-grid-all"; - // - FormatNodeIdentifier["Format_LineGridRow_Key"] = "line-grid-row"; - // - FormatNodeIdentifier["Format_LineGridColumn_Key"] = "line-grid-column"; - // - FormatNodeIdentifier["Format_LineZeroAll_Key"] = "line-zero-all"; - // - FormatNodeIdentifier["Format_LineZeroRow_Key"] = "line-zero-row"; - // - FormatNodeIdentifier["Format_LineZeroColumn_Key"] = "line-zero-column"; - // - FormatNodeIdentifier["Format_LineAxisTickAll_Key"] = "line-axis-tick-all"; - // - FormatNodeIdentifier["Format_LineAxisTickRow_Key"] = "line-axis-tick-row"; - // - FormatNodeIdentifier["Format_LineAxisTickColumn_Key"] = "line-axis-tick-column"; - // - FormatNodeIdentifier["Format_LineAxisRulerAll_Key"] = "line-axis-ruler-all"; - // - FormatNodeIdentifier["Format_LineAxisRulerRow_Key"] = "line-axis-ruler-row"; - // - FormatNodeIdentifier["Format_LineAxisRulerColumn_Key"] = "line-axis-ruler-column"; - // - FormatNodeIdentifier["Format_LineReference_Key"] = "line-reference"; - // - FormatNodeIdentifier["Format_LineDrop_Key"] = "line-drop"; - // - FormatNodeIdentifier["Format_LineTrend_Key"] = "line-trend"; - // - FormatNodeIdentifier["Format_LineVisibility_Key"] = "line-visibility"; - // - FormatNodeIdentifier["Format_LinePattern_Key"] = "line-pattern"; - // - FormatNodeIdentifier["Format_LineWidth_Key"] = "line-width"; - // - FormatNodeIdentifier["Format_LineColor_Key"] = "line-color"; - // - FormatNodeIdentifier["Format_TickColor_Key"] = "tick-color"; - // - FormatNodeIdentifier["Format_BorderPattern_Key"] = "border-pattern"; - // - FormatNodeIdentifier["Format_BorderColor_Key"] = "border-color"; - // - FormatNodeIdentifier["Format_DividerColor_Key"] = "divider-color"; - // - FormatNodeIdentifier["Format_FontFamily_Key"] = "font-family-key"; - // - FormatNodeIdentifier["Format_FontSize_Key"] = "font-size-key"; - // - FormatNodeIdentifier["Format_Bold_Key"] = "bold-key"; - // - FormatNodeIdentifier["Format_Italics_Key"] = "italics-key"; - // - FormatNodeIdentifier["Format_Underline_Key"] = "underline-key"; - // - FormatNodeIdentifier["Format_FontColor_Key"] = "font-color-key"; - // - FormatNodeIdentifier["Format_Number_Container_Key"] = "number-container"; - // - FormatNodeIdentifier["Format_Number_Type_Key"] = "number-container-type"; - // - FormatNodeIdentifier["Format_Number_Units_Key"] = "number-container-units"; - // - FormatNodeIdentifier["Format_Number_Decimal_Key"] = "number-container-decimal"; - // - FormatNodeIdentifier["Format_Number_Thousands_Separator_Key"] = "number-container-thousands-separator"; - // - FormatNodeIdentifier["Format_FontPickerMinimal_Key"] = "font-picker-minimal"; - // - FormatNodeIdentifier["Format_FontPickerDefault_Key"] = "font-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerDefault_Key"] = "line-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerNoVis_Key"] = "line-picker-no-visibility"; - // - FormatNodeIdentifier["Format_LineAxisTickPicker_Key"] = "line-axis-tick-picker"; - })(FormatNodeIdentifier = exports.FormatNodeIdentifier || (exports.FormatNodeIdentifier = {})); - // Format prepended to format strings to specify type - var FormatCode; - (function (FormatCode) { - // - FormatCode["AutoFormat"] = "auto-format"; - // - FormatCode["SystemLongDate"] = "system-long-date"; - // - FormatCode["SystemShortDate"] = "system-short-date"; - // - FormatCode["SystemNumber"] = "system-number"; - // - FormatCode["SystemCurrency"] = "system-currency"; - // - FormatCode["SystemTime"] = "system-time"; - // - FormatCode["Custom"] = "custom"; - // - FormatCode["CustomICU"] = "custom-icu"; - // - FormatCode["CustomNumber"] = "custom-number"; - // - FormatCode["CustomCurrency"] = "custom-currency"; - // - FormatCode["CustomScientific"] = "custom-scientific"; - // - FormatCode["CustomPercentage"] = "custom-percentage"; - })(FormatCode = exports.FormatCode || (exports.FormatCode = {})); - // Units specified in a format string - var UnitsFormatEnum; - (function (UnitsFormatEnum) { - // - UnitsFormatEnum["UnitsFmtNone"] = "units-none"; - // - UnitsFormatEnum["UnitsFmtThousands"] = "units-thousands"; - // - UnitsFormatEnum["UnitsFmtMillions"] = "units-millions"; - // - UnitsFormatEnum["UnitsFmtBillionsEnglish"] = "units-billions-english"; - // - UnitsFormatEnum["UnitsFmtBillionsStandard"] = "units-billions-standard"; - })(UnitsFormatEnum = exports.UnitsFormatEnum || (exports.UnitsFormatEnum = {})); - // represents the color swatch that will be used in the ColorControlPresModel - var ColorSwatchType; - (function (ColorSwatchType) { - // - ColorSwatchType["CST_Dark"] = "dark-swatch"; - // - ColorSwatchType["CST_Light"] = "light-swatch"; - })(ColorSwatchType = exports.ColorSwatchType || (exports.ColorSwatchType = {})); - // represents the type of a style picker, affecting the preview rendering and, possibly, the layout - var PickerType; - (function (PickerType) { - // - PickerType["PT_None"] = "none"; - // - PickerType["PT_Font"] = "font"; - // - PickerType["PT_Line"] = "line"; - // - PickerType["PT_Number"] = "number"; - })(PickerType = exports.PickerType || (exports.PickerType = {})); - // - var UpdateScope; - (function (UpdateScope) { - // - UpdateScope["US_Worksheet"] = "worksheet"; - // - UpdateScope["US_Dashboard"] = "dashboard"; - // - UpdateScope["US_QuickFilters"] = "quick-filters"; - // - UpdateScope["US_Story"] = "story"; - })(UpdateScope = exports.UpdateScope || (exports.UpdateScope = {})); - // - var ParameterCtrlTypesDisplayMode; - (function (ParameterCtrlTypesDisplayMode) { - // - ParameterCtrlTypesDisplayMode["MODE_TYPE_IN"] = "type_in"; - // - ParameterCtrlTypesDisplayMode["MODE_COMPACT_LIST"] = "compact"; - // - ParameterCtrlTypesDisplayMode["MODE_LIST"] = "list"; - // - ParameterCtrlTypesDisplayMode["MODE_SLIDER"] = "slider"; - // - ParameterCtrlTypesDisplayMode["MODE_DATETIME"] = "datetime"; - })(ParameterCtrlTypesDisplayMode = exports.ParameterCtrlTypesDisplayMode || (exports.ParameterCtrlTypesDisplayMode = {})); - // flags for display options - var ParameterCtrlTypesDisplayFlag; - (function (ParameterCtrlTypesDisplayFlag) { - // - ParameterCtrlTypesDisplayFlag["DISPLAY_CUSTOM_TITLE"] = "custom_title"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_SLIDER"] = "hide_slider_slider"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_READOUT"] = "hide_slider_readout"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_BUTTONS"] = "hide_slider_buttons"; - })(ParameterCtrlTypesDisplayFlag = exports.ParameterCtrlTypesDisplayFlag || (exports.ParameterCtrlTypesDisplayFlag = {})); - // The follow supports 1024 custom palettes, each with 4m shapes. Encoding is palette << PaletteShift | shape. - var ShapeEncodeConstants; - (function (ShapeEncodeConstants) { - // Shift value for palette - ShapeEncodeConstants["EncodePaletteShift"] = "paletteShift"; - // Mask for getting palette from encoded value. (Then shift down) - ShapeEncodeConstants["EncodePaletteMask"] = "paletteMask"; - // Mask for getting shape from encoded value - ShapeEncodeConstants["EncodeShapeMask"] = "shapeMask"; - })(ShapeEncodeConstants = exports.ShapeEncodeConstants || (exports.ShapeEncodeConstants = {})); - // - var ShapeType; - (function (ShapeType) { - // - ShapeType["ShapeCircle"] = "circle"; - // - ShapeType["ShapeSquare"] = "square"; - // - ShapeType["ShapePlus"] = "plus"; - // - ShapeType["ShapeTimes"] = "times"; - // - ShapeType["ShapeAsterisk"] = "asterisk"; - // - ShapeType["ShapeDiamond"] = "diamond"; - // - ShapeType["ShapeTriangle"] = "triangle"; - // - ShapeType["ShapeDownTriangle"] = "down-triangle"; - // - ShapeType["ShapeLeftTriangle"] = "left-triangle"; - // - ShapeType["ShapeRightTriangle"] = "right-triangle"; - // - ShapeType["MaxAllShapes"] = "invalid"; - })(ShapeType = exports.ShapeType || (exports.ShapeType = {})); - // - var ShapePalette; - (function (ShapePalette) { - // built-in palette - ShapePalette["ShapePaletteFilled"] = "filled"; - // custom palettes - ShapePalette["ShapePaletteCustom1"] = "custom1"; - // - ShapePalette["ShapePaletteCustom2"] = "custom2"; - // - ShapePalette["ShapePaletteCustom3"] = "custom3"; - // - ShapePalette["ShapePaletteCustom4"] = "custom4"; - // - ShapePalette["ShapePaletteCustom5"] = "custom5"; - // - ShapePalette["ShapePaletteCustom6"] = "custom6"; - // - ShapePalette["ShapePaletteCustom7"] = "custom7"; - // - ShapePalette["ShapePaletteCustom8"] = "custom8"; - // - ShapePalette["ShapePaletteCustom9"] = "custom9"; - // - ShapePalette["ShapePaletteCustom10"] = "custom10"; - // - ShapePalette["ShapePaletteCustom11"] = "custom11"; - // and so on... - ShapePalette["ShapePaletteCustom12"] = "custom12"; - // - ShapePalette["ShapePaletteHidden"] = "hidden"; - })(ShapePalette = exports.ShapePalette || (exports.ShapePalette = {})); - // ShapeType and palette mapped into a single value. This enum depends on ShapeType and the implementation of ShapeManager::IntEncode. - var ShapeID; - (function (ShapeID) { - // - ShapeID["ShapeIDCircle"] = "shapeIDCircle"; - // - ShapeID["ShapeIDSquare"] = "shapeIDSquare"; - // - ShapeID["ShapeIDPlus"] = "shapeIDPlus"; - // - ShapeID["ShapeIDTimes"] = "shapeIDTimes"; - // - ShapeID["ShapeIDAsterisk"] = "shapeIDAsterisk"; - // - ShapeID["ShapeIDDiamond"] = "shapeIDDiamond"; - // - ShapeID["ShapeIDTriangle"] = "shapeIDTriangle"; - // - ShapeID["ShapeIDDownTriangle"] = "shapeIDDownTriangle"; - // - ShapeID["ShapeIDLeftTriangle"] = "shapeIDLeftTriangle"; - // - ShapeID["ShapeIDRightTriangle"] = "shapeIDRightTriangle"; - // - ShapeID["ShapeIDFilledCircle"] = "shapeIDFilledCircle"; - // - ShapeID["ShapeIDFilledSquare"] = "shapeIDFilledSquare"; - // - ShapeID["ShapeIDFilledPlus"] = "shapeIDFilledPlus"; - // - ShapeID["ShapeIDFilledTimes"] = "shapeIDFilledTimes"; - // - ShapeID["ShapeIDFilledStar"] = "shapeIDFilledStar"; - // - ShapeID["ShapeIDFilledDiamond"] = "shapeIDFilledDiamond"; - // - ShapeID["ShapeIDFilledTriangle"] = "shapeIDFilledTriangle"; - // - ShapeID["ShapeIDFilledDownTriangle"] = "shapeIDFilledDownTriangle"; - // - ShapeID["ShapeIDFilledLeftTriangle"] = "shapeIDFilledLeftTriangle"; - // - ShapeID["ShapeIDFilledRightTriangle"] = "shapeIDFilledRightTriangle"; - // 0+(ShapePaletteHidden< -1; - }); - // Create a mapping of which index in the data dictionary our columns are in - var columnIndices = columns.map(function (vizDataColumn) { - // The columnIndex is in the same position as the paneIndex - var paneIndex = vizDataColumn.paneIndices.indexOf(i); - var columnIndex = vizDataColumn.columnIndices[paneIndex]; - return columnIndex; - }); - // Get the data for the pane we are processing - var vizPane = vizData.paneColumnsData.paneColumnsList[i]; - if (vizPane.vizPaneColumns.length !== columns.length) { - throw new Error('Malformed data table'); - } - var headers = new Array(); - var rows = new Array(); - // Column 0 will be the tuple id column. We can use this as a counter for how many rows we have - var tupleIds = vizPane.vizPaneColumns[0].tupleIds; - for (var tupleIndex = 0; tupleIndex < tupleIds.length; tupleIndex++) { - // We will have 1 less value in this row since there's the tupleId column - var cells = new Array(vizPane.vizPaneColumns.length - 1); - for (var j = 1 /* skip the first which is tuple ids */; j < vizPane.vizPaneColumns.length; j++) { - // Next, we need to figure out which column we are reading data for - var column = columns[columnIndices[j]]; - var vizPaneColumnData = vizPane.vizPaneColumns[j]; - // Define the header when we are processing the first row - if (tupleIndex === 0) { - var header = { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - isReferenced: true, - index: j - 1, - fieldCaption: column.fieldCaption - }; - headers.push(header); - } - var value = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.valueIndices[tupleIndex]); - var aliasValue = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.aliasIndices[tupleIndex]) || ''; - var formattedValue = aliasValue; // TODO - Figure out how to use the formatStrings - var dataCell = { - value: value, - formattedValue: formattedValue, - aliasedValue: aliasValue - }; - // Add our cell to this row - cells[j - 1] = dataCell; - } - rows.push(cells); - } - var dataTable = { - dataTable: rows, - headers: headers - }; - result.push(dataTable); - }; - // The data model for the VizDataPresModel is a little strange, so this parsing takes some time to figure out. - // There can be multiple panes of data, so we must go through them one at a time to create data tables - for (var i = 0; i < vizData.paneColumnsData.paneColumnsList.length; i++) { - _loop_1(i); - } - return result; - }; - return ActiveMarksDataConverter; - }()); - exports.ActiveMarksDataConverter = ActiveMarksDataConverter; - - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Enums = __webpack_require__(22); - var EnumMappings_1 = __webpack_require__(18); - /** - * Contains static helper methods for converting from an underlying data pres model into the api representation. - * Most of the code is a direct port from ApiUnderlyingDataHandler.cs - * https://opengrok/source/xref/teams_near/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiUnderlyingDataHandler.cs - */ - var UnderlyingDataConverter = (function () { - function UnderlyingDataConverter() { - } - UnderlyingDataConverter.lookupValueFromDictionary = function (dataDictionary, dt, index) { - if (index < 0) { - // per cl 280396 / bugzid 81197 negative data value index means that it is special - dt = Enums.DataType.DT_STRING; - index = -index - 1; - } - var result = null; - var rawValue = UnderlyingDataConverter.getRawValue(dataDictionary, dt, index); - if (rawValue !== null) { - result = rawValue.toString(); - } - return result; - }; - /* tslint:disable-next-line:no-any */ - UnderlyingDataConverter.getRawValue = function (dataDictionary, dt, index) { - if (!dataDictionary.dataSegments) { - return null; - } - for (var _i = 0, _a = Object.keys(dataDictionary.dataSegments); _i < _a.length; _i++) { - var key = _a[_i]; - var dataSegment = dataDictionary.dataSegments[key]; - for (var _b = 0, _c = dataSegment.dataColumns; _b < _c.length; _b++) { - var dataColumn = _c[_b]; - if (!dataColumn || dataColumn.dataType !== dt) { - continue; - } - if (index < dataColumn.dataValues.length) { - return dataColumn.dataValues[index]; - } - index -= dataColumn.dataValues.length; - break; - } - } - return null; - }; - UnderlyingDataConverter.buildDataTable = function (dataDictionary, columns) { - var result = { - dataTable: UnderlyingDataConverter.buildTable(dataDictionary, columns), - headers: columns.map(function (c, i) { return UnderlyingDataConverter.buildColumnModel(c, i); }) - }; - return result; - }; - UnderlyingDataConverter.buildUnderlyingDataTable = function (isSummary, underlyingDataTable) { - var result = { - data: UnderlyingDataConverter.buildDataTable(underlyingDataTable.dataDictionary, underlyingDataTable.underlyingDataTableColumns), - isSummary: isSummary - }; - return result; - }; - UnderlyingDataConverter.buildActiveMarksTable = function (dataDictionary, vizData) { - throw new Error(); - }; - UnderlyingDataConverter.buildColumnModel = function (column, index) { - return { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - fieldCaption: column.fieldCaption, - isReferenced: !!column.isReferenced, - index: index - }; - }; - UnderlyingDataConverter.buildTable = function (dataDictionary, columns) { - if (columns.length === 0) { - return new Array(); - } - var rowCount = columns[0].formatValIdxs.length; - var columnCount = columns.length; - var result = new Array(rowCount); - // Initialize all of our rows - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - result[rowIndex] = new Array(columnCount); - } - // Go through column-by-column and convert the values - for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { - var column = columns[columnIndex]; - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - var formattedValue = UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, Enums.DataType.DT_STRING, column.formatValIdxs[rowIndex]); - if (formattedValue === null) { - throw new Error('formattedValue was null'); - } - var value = { - value: UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, column.valueIndices[rowIndex]), - formattedValue: formattedValue, - aliasedValue: formattedValue - }; - result[rowIndex][columnIndex] = value; - } - } - return result; - }; - return UnderlyingDataConverter; - }()); - exports.UnderlyingDataConverter = UnderlyingDataConverter; - - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumMappings_1 = __webpack_require__(18); - /** - * Class containing helper methods for converting from ApiPresModels to their PresLayer equivalents - * - * @export - * @class ApiToPresLayerConverter - */ - var ApiToPresLayerConverter = (function () { - function ApiToPresLayerConverter() { - } - ApiToPresLayerConverter.convertSheetPath = function (apiSheetPath) { - if (!apiSheetPath) { - throw new Error('sheetPath not defined'); - } - var result = { - sheetName: apiSheetPath.sheetName, - isDashboard: apiSheetPath.isDashboard, - storyboard: apiSheetPath.storyboard || '', - flipboardZoneId: apiSheetPath.flipboardZoneID || 0, - storyPointId: apiSheetPath.storyPointID || 0, - }; - return result; - }; - ApiToPresLayerConverter.convertAddInLocator = function (apiAddInLocator) { - var result = { - addInInstanceId: apiAddInLocator.instanceId, - sheetPath: ApiToPresLayerConverter.convertSheetPath(apiAddInLocator.dashboardPath) - }; - return result; - }; - ApiToPresLayerConverter.convertVisualId = function (apiVisualid) { - var result = { - worksheet: apiVisualid.worksheet, - dashboard: apiVisualid.dashboard, - storyboard: apiVisualid.storyboard, - storyPointId: apiVisualid.storyPointID, - flipboardZoneId: apiVisualid.flipboardZoneID - }; - return result; - }; - ApiToPresLayerConverter.convertVisualIdToWorksheet = function (apiVisualId) { - return apiVisualId.worksheet; - }; - ApiToPresLayerConverter.convertVisualIdToDashboard = function (apiVisualId) { - return apiVisualId.dashboard || ''; - }; - ApiToPresLayerConverter.convertFilterValues = function (filterValues) { - if (filterValues.length === 0) { - // platform code expects an empty string for clearing filter values - return ['']; - } - return filterValues; - }; - ApiToPresLayerConverter.convertFilterType = function (filterUpdateType) { - return EnumMappings_1.ApiToPresLayerEnumMappings.filterUpdateType.convert(filterUpdateType); - }; - ApiToPresLayerConverter.ConvertNullOption = function (nullOption) { - return EnumMappings_1.ApiToPresLayerEnumMappings.nullOption.convert(nullOption); - }; - return ApiToPresLayerConverter; - }()); - exports.ApiToPresLayerConverter = ApiToPresLayerConverter; - - -/***/ }, -/* 27 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Simple registry class which creates a mapping based on two keys. - * - * @export - * @class MappingRegistry - * @template TInputEnumType - * @template TOutputEnumType - * @template TMappingStorageType - */ - var MappingRegistry = (function () { - function MappingRegistry() { - this.registry = {}; - } - MappingRegistry.prototype.has = function (inputType, outputType) { - var key = this.makeKey(inputType, outputType); - if (!this.registry.hasOwnProperty(key)) { - return false; - } - if (!this.registry[key]) { - return false; - } - return true; - }; - MappingRegistry.prototype.get = function (inputType, outputType) { - if (!this.has(inputType, outputType)) { - throw new Error('Missing requested mapping: ' + inputType + ' to ' + outputType); - } - var key = this.makeKey(inputType, outputType); - return this.registry[key]; - }; - MappingRegistry.prototype.addRegistration = function (inputType, outputType, storageItem) { - var key = this.makeKey(inputType, outputType); - // Add this item - this.registry[key] = storageItem; - }; - /** - * Combines the two keys into a unique string - * - * @private - * @param {TInputEnumType} inputType - * @param {TOutputEnumType} outputType - * @returns {string} - * @memberof MappingRegistry - */ - MappingRegistry.prototype.makeKey = function (inputType, outputType) { - var keyObj = { input: inputType, output: outputType }; - return JSON.stringify(keyObj); - }; - return MappingRegistry; - }()); - exports.MappingRegistry = MappingRegistry; - - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - __export(__webpack_require__(9)); - - -/***/ }, -/* 29 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implemenation of the PresentationLayer contract with a bit of extra information - * added to work with add-ins. Most work is delegated down to the interopObject which - * communicates directly with the c++ layer via QWebChannel - * - * @class AddInApiPresLayerImpl - * @implements {contract.PresentationLayer} - */ - var AddInApiPresLayerImpl = (function () { - function AddInApiPresLayerImpl(interopObject) { - var _this = this; - this.interopObject = interopObject; - this.notificationHandlers = {}; - if (interopObject && interopObject.OnNotification) { - interopObject.OnNotification.connect(function (notification) { - _this.dispatchNotification(notification); - }); - } - } - Object.defineProperty(AddInApiPresLayerImpl.prototype, "AddInInstanceInfo", { - /** - * Gets the instance info for this particular add-in from the c++ code - * - * @readonly - * @type {AddInInstancePresModel} - * @memberof AddInApiPresLayerImpl - */ - get: function () { - return this.interopObject.addInInstanceInfo; - }, - enumerable: true, - configurable: true - }); - /** - * Invokes a command using the pres-layer interop - * - * @template T - The expected return type - * @param {string} commandNamespace - * @param {string} commandName - * @param {object} params - * @returns {Promise} - * @memberof AddInApiPresLayerImpl - */ - AddInApiPresLayerImpl.prototype.invokeCommand = function (commandNamespace, commandName, params) { - var _this = this; - return new Promise(function (resolve, reject) { - try { - commandNamespace = commandNamespace || 'tabdoc'; - _this.interopObject.ExecuteCommand(commandNamespace, commandName, params, function (response) { - if (!response.Success) { - var msg = 'ExecuteCommand failed, with result:' + JSON.stringify(response.Result); - reject(new Error(msg)); - } - else { - resolve(response.Result); - } - }); - } - catch (err) { - reject(err); - } - }); - }; - // This implementation will registration a single instance of a notification handler with the Native C++ object, - // and implement multi-dispatch to the web objects from h.ere - AddInApiPresLayerImpl.prototype.registerNotificationHandler = function (eventId, handler) { - var _this = this; - if (eventId in this.notificationHandlers) { - this.notificationHandlers[eventId].push(handler); - } - else { - this.notificationHandlers[eventId] = [handler]; - try { - this.interopObject.RegisterNotificationHandler(eventId); - } - catch (err) { - // console.log('RegisterNotificationHandler failed: ' + err); - } - } - return function () { return _this.removeNotificationHandler(eventId, handler); }; - }; - AddInApiPresLayerImpl.prototype.removeNotificationHandler = function (eventId, handler) { - var handlerList = this.notificationHandlers[eventId]; - if (!handlerList) { - return; - } - var foundIndex = handlerList.indexOf(handler); - if (foundIndex >= 0) { - handlerList.splice(foundIndex, 1); - } - if (handlerList.length === 0) { - delete this.notificationHandlers[eventId]; - } - }; - AddInApiPresLayerImpl.prototype.dispatchNotification = function (notification) { - // console.log('received notification: ' + JSON.stringify(notification)); - var eventId = notification.eventId; - var presModel = notification.presModel; - if (eventId in this.notificationHandlers) { - var handlers = this.notificationHandlers[eventId]; - for (var i = handlers.length - 1; i >= 0; i--) { - handlers[i](presModel); - } - } - }; - return AddInApiPresLayerImpl; - }()); - exports.AddInApiPresLayerImpl = AddInApiPresLayerImpl; - - -/***/ }, -/* 30 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the InternalApiDispatcher for desktop. Since this will run in the same - * frame as the ApiEventHandler, this class mostly just marshalls down to that implementation - * - * @export - * @class DesktopApiDispatcher - * @implements {InternalApiDispatcher} - */ - var DesktopApiDispatcher = (function () { - function DesktopApiDispatcher(apiEventHandler) { - var _this = this; - this.apiEventHandler = apiEventHandler; - this.notificationHandlers = []; - this.apiEventHandler.setEventHandler(function (notificationId, model) { - _this.notificationHandlers.forEach(function (handler) { return handler({ - notificationId: notificationId, - data: model - }); }); - }); - } - DesktopApiDispatcher.prototype.setVersionNumber = function (versionNumber) { - this.apiEventHandler.setVersionNumber(versionNumber); - }; - DesktopApiDispatcher.prototype.execute = function (verb, parameters) { - // Just pass this right through to the ApiEventHandler - return this.apiEventHandler.execute(verb, parameters); - }; - DesktopApiDispatcher.prototype.registerNotificationHandler = function (handler) { - this.notificationHandlers.push(handler); - }; - DesktopApiDispatcher.prototype.unregisterNotificationHandler = function (handler) { - this.notificationHandlers = this.notificationHandlers.filter(function (h) { return h !== handler; }); - }; - return DesktopApiDispatcher; - }()); - exports.DesktopApiDispatcher = DesktopApiDispatcher; - - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - __webpack_require__(32); - var qwebchannel_1 = __webpack_require__(33); - /** - * Initializes the QWebChannel contract and returns the pres layer interop object - * - * @returns {Promise} - */ - function initializeWebChannelPresLayer() { - return new Promise(function (resolve, reject) { - try { - // tslint:disable-next-line - new qwebchannel_1.QWebChannel(qt.webChannelTransport, function (channel) { - // tslint:disable-next-line - var addInPresLayer = channel.objects['addInPresLayer']; - resolve(addInPresLayer); - }); - } - catch (e) { - reject(e); - } - }); - } - exports.initializeWebChannelPresLayer = initializeWebChannelPresLayer; - - -/***/ }, -/* 32 */ -/***/ function(module, exports) { - - - -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { - - /**************************************************************************** - ** - ** Copyright (C) 2015 The Qt Company Ltd. - ** Copyright (C) 2014 KlarÀlvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff - ** Contact: http://www.qt.io/licensing/ - ** - ** This file is part of the QtWebChannel module of the Qt Toolkit. - ** - ** $QT_BEGIN_LICENSE:LGPL21$ - ** Commercial License Usage - ** Licensees holding valid commercial Qt licenses may use this file in - ** accordance with the commercial license agreement provided with the - ** Software or, alternatively, in accordance with the terms contained in - ** a written agreement between you and The Qt Company. For licensing terms - ** and conditions see http://www.qt.io/terms-conditions. For further - ** information use the contact form at http://www.qt.io/contact-us. - ** - ** GNU Lesser General Public License Usage - ** Alternatively, this file may be used under the terms of the GNU Lesser - ** General Public License version 2.1 or version 3 as published by the Free - ** Software Foundation and appearing in the file LICENSE.LGPLv21 and - ** LICENSE.LGPLv3 included in the packaging of this file. Please review the - ** following information to ensure the GNU Lesser General Public License - ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and - ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. - ** - ** As a special exception, The Qt Company gives you certain additional - ** rights. These rights are described in The Qt Company LGPL Exception - ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. - ** - ** $QT_END_LICENSE$ - ** - ****************************************************************************/ - - "use strict"; - - var QWebChannelMessageTypes = { - signal: 1, - propertyUpdate: 2, - init: 3, - idle: 4, - debug: 5, - invokeMethod: 6, - connectToSignal: 7, - disconnectFromSignal: 8, - setProperty: 9, - response: 10, - }; - - var QWebChannel = function(transport, initCallback) - { - if (typeof transport !== "object" || typeof transport.send !== "function") { - console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." + - " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send)); - return; - } - - var channel = this; - this.transport = transport; - - this.send = function(data) - { - if (typeof(data) !== "string") { - data = JSON.stringify(data); - } - channel.transport.send(data); - } - - this.transport.onmessage = function(message) - { - var data = message.data; - if (typeof data === "string") { - data = JSON.parse(data); - } - switch (data.type) { - case QWebChannelMessageTypes.signal: - channel.handleSignal(data); - break; - case QWebChannelMessageTypes.response: - channel.handleResponse(data); - break; - case QWebChannelMessageTypes.propertyUpdate: - channel.handlePropertyUpdate(data); - break; - default: - console.error("invalid message received:", message.data); - break; - } - } - - this.execCallbacks = {}; - this.execId = 0; - this.exec = function(data, callback) - { - if (!callback) { - // if no callback is given, send directly - channel.send(data); - return; - } - if (channel.execId === Number.MAX_VALUE) { - // wrap - channel.execId = Number.MIN_VALUE; - } - if (data.hasOwnProperty("id")) { - console.error("Cannot exec message with property id: " + JSON.stringify(data)); - return; - } - data.id = channel.execId++; - channel.execCallbacks[data.id] = callback; - channel.send(data); - }; - - this.objects = {}; - - this.handleSignal = function(message) - { - var object = channel.objects[message.object]; - if (object) { - object.signalEmitted(message.signal, message.args); - } else { - console.warn("Unhandled signal: " + message.object + "::" + message.signal); - } - } - - this.handleResponse = function(message) - { - if (!message.hasOwnProperty("id")) { - console.error("Invalid response message received: ", JSON.stringify(message)); - return; - } - channel.execCallbacks[message.id](message.data); - delete channel.execCallbacks[message.id]; - } - - this.handlePropertyUpdate = function(message) - { - for (var i in message.data) { - var data = message.data[i]; - var object = channel.objects[data.object]; - if (object) { - object.propertyUpdate(data.signals, data.properties); - } else { - console.warn("Unhandled property update: " + data.object + "::" + data.signal); - } - } - channel.exec({type: QWebChannelMessageTypes.idle}); - } - - this.debug = function(message) - { - channel.send({type: QWebChannelMessageTypes.debug, data: message}); - }; - - channel.exec({type: QWebChannelMessageTypes.init}, function(data) { - for (var objectName in data) { - var object = new QObject(objectName, data[objectName], channel); - } - // now unwrap properties, which might reference other registered objects - for (var objectName in channel.objects) { - channel.objects[objectName].unwrapProperties(); - } - if (initCallback) { - initCallback(channel); - } - channel.exec({type: QWebChannelMessageTypes.idle}); - }); - }; - - function QObject(name, data, webChannel) - { - this.__id__ = name; - webChannel.objects[name] = this; - - // List of callbacks that get invoked upon signal emission - this.__objectSignals__ = {}; - - // Cache of all properties, updated when a notify signal is emitted - this.__propertyCache__ = {}; - - var object = this; - - // ---------------------------------------------------------------------- - - this.unwrapQObject = function(response) - { - if (response instanceof Array) { - // support list of objects - var ret = new Array(response.length); - for (var i = 0; i < response.length; ++i) { - ret[i] = object.unwrapQObject(response[i]); - } - return ret; - } - if (!response - || !response["__QObject*__"] - || response["id"] === undefined) { - return response; - } - - var objectId = response.id; - if (webChannel.objects[objectId]) - return webChannel.objects[objectId]; - - if (!response.data) { - console.error("Cannot unwrap unknown QObject " + objectId + " without data."); - return; - } - - var qObject = new QObject( objectId, response.data, webChannel ); - qObject.destroyed.connect(function() { - if (webChannel.objects[objectId] === qObject) { - delete webChannel.objects[objectId]; - // reset the now deleted QObject to an empty {} object - // just assigning {} though would not have the desired effect, but the - // below also ensures all external references will see the empty map - // NOTE: this detour is necessary to workaround QTBUG-40021 - var propertyNames = []; - for (var propertyName in qObject) { - propertyNames.push(propertyName); - } - for (var idx in propertyNames) { - delete qObject[propertyNames[idx]]; - } - } - }); - // here we are already initialized, and thus must directly unwrap the properties - qObject.unwrapProperties(); - return qObject; - } - - this.unwrapProperties = function() - { - for (var propertyIdx in object.__propertyCache__) { - object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]); - } - } - - function addSignal(signalData, isPropertyNotifySignal) - { - var signalName = signalData[0]; - var signalIndex = signalData[1]; - object[signalName] = { - connect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to connect to signal " + signalName); - return; - } - - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - object.__objectSignals__[signalIndex].push(callback); - - if (!isPropertyNotifySignal && signalName !== "destroyed") { - // only required for "pure" signals, handled separately for properties in propertyUpdate - // also note that we always get notified about the destroyed signal - webChannel.exec({ - type: QWebChannelMessageTypes.connectToSignal, - object: object.__id__, - signal: signalIndex - }); - } - }, - disconnect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to disconnect from signal " + signalName); - return; - } - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - var idx = object.__objectSignals__[signalIndex].indexOf(callback); - if (idx === -1) { - console.error("Cannot find connection of signal " + signalName + " to " + callback.name); - return; - } - object.__objectSignals__[signalIndex].splice(idx, 1); - if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) { - // only required for "pure" signals, handled separately for properties in propertyUpdate - webChannel.exec({ - type: QWebChannelMessageTypes.disconnectFromSignal, - object: object.__id__, - signal: signalIndex - }); - } - } - }; - } - - /** - * Invokes all callbacks for the given signalname. Also works for property notify callbacks. - */ - function invokeSignalCallbacks(signalName, signalArgs) - { - var connections = object.__objectSignals__[signalName]; - if (connections) { - connections.forEach(function(callback) { - callback.apply(callback, signalArgs); - }); - } - } - - this.propertyUpdate = function(signals, propertyMap) - { - // update property cache - for (var propertyIndex in propertyMap) { - var propertyValue = propertyMap[propertyIndex]; - object.__propertyCache__[propertyIndex] = propertyValue; - } - - for (var signalName in signals) { - // Invoke all callbacks, as signalEmitted() does not. This ensures the - // property cache is updated before the callbacks are invoked. - invokeSignalCallbacks(signalName, signals[signalName]); - } - } - - this.signalEmitted = function(signalName, signalArgs) - { - invokeSignalCallbacks(signalName, signalArgs); - } - - function addMethod(methodData) - { - var methodName = methodData[0]; - var methodIdx = methodData[1]; - object[methodName] = function() { - var args = []; - var callback; - for (var i = 0; i < arguments.length; ++i) { - if (typeof arguments[i] === "function") - callback = arguments[i]; - else - args.push(arguments[i]); - } - - webChannel.exec({ - "type": QWebChannelMessageTypes.invokeMethod, - "object": object.__id__, - "method": methodIdx, - "args": args - }, function(response) { - if (response !== undefined) { - var result = object.unwrapQObject(response); - if (callback) { - (callback)(result); - } - } - }); - }; - } - - function bindGetterSetter(propertyInfo) - { - var propertyIndex = propertyInfo[0]; - var propertyName = propertyInfo[1]; - var notifySignalData = propertyInfo[2]; - // initialize property cache with current value - // NOTE: if this is an object, it is not directly unwrapped as it might - // reference other QObject that we do not know yet - object.__propertyCache__[propertyIndex] = propertyInfo[3]; - - if (notifySignalData) { - if (notifySignalData[0] === 1) { - // signal name is optimized away, reconstruct the actual name - notifySignalData[0] = propertyName + "Changed"; - } - addSignal(notifySignalData, true); - } - - Object.defineProperty(object, propertyName, { - get: function () { - var propertyValue = object.__propertyCache__[propertyIndex]; - if (propertyValue === undefined) { - // This shouldn't happen - console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__); - } - - return propertyValue; - }, - set: function(value) { - if (value === undefined) { - console.warn("Property setter for " + propertyName + " called with undefined value!"); - return; - } - object.__propertyCache__[propertyIndex] = value; - webChannel.exec({ - "type": QWebChannelMessageTypes.setProperty, - "object": object.__id__, - "property": propertyIndex, - "value": value - }); - } - }); - - } - - // ---------------------------------------------------------------------- - - data.methods.forEach(addMethod); - - data.properties.forEach(bindGetterSetter); - - data.signals.forEach(function(signal) { addSignal(signal, false); }); - - for (var name in data.enums) { - object[name] = data.enums[name]; - } - } - - //required for use with nodejs - if (true) { - module.exports = { - QWebChannel: QWebChannel - }; - } - - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=frelard-desktop-bootstrap.js.map - -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["tableau"] = factory(); - else - root["tableau"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - // Due to the way we configured webpack, we should be exporting things which will be under - // a global variable called "tableau". Export everything we want to be visible under tableau - // from this file. - var AddIn_1 = __webpack_require__(1); - var AddInImpl_1 = __webpack_require__(2); - var addInImpl = new AddInImpl_1.AddInImpl(); - exports.addIn = new AddIn_1.AddIn(addInImpl); - // Export Enums - var api_external_contract_1 = __webpack_require__(42); - exports.FilterUpdateType = api_external_contract_1.FilterUpdateType; - exports.NullOption = api_external_contract_1.NullOption; - - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external AddIn namespace. - */ - var AddIn = (function () { - function AddIn(addInImpl) { - this.addInImpl = addInImpl; - this.addInImpl = addInImpl; - } - Object.defineProperty(AddIn.prototype, "dashboardContent", { - get: function () { - return this.addInImpl.dashboardContent; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "environment", { - get: function () { - return this.addInImpl.environment; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "settings", { - get: function () { - return this.addInImpl.settings; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "ui", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - AddIn.prototype.initializeAsync = function () { - return this.addInImpl.initializeAsync(); - }; - return AddIn; - }()); - exports.AddIn = AddIn; - - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var api_shared_1 = __webpack_require__(9); - var Dashboard_1 = __webpack_require__(32); - var DashboardContent_1 = __webpack_require__(34); - var Environment_1 = __webpack_require__(35); - var Settings_1 = __webpack_require__(36); - var RegisterAllAddInServices_1 = __webpack_require__(37); - var VersionNumber_1 = __webpack_require__(40); - var DashboardImpl_1 = __webpack_require__(41); - var SettingsImpl_1 = __webpack_require__(47); - var AddInImpl = (function () { - function AddInImpl() { - } - AddInImpl.prototype.initializeAsync = function () { - var _this = this; - if (!this.initializationPromise) { - this.initializationPromise = new Promise(function (resolve, reject) { - // First thing we want to do is check to see if there is a desktop dispatcher already registered for us - if (api_internal_contract_1.InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise()) { - // Running in desktop, use this promise - var desktopDispatcherPromise = api_internal_contract_1.InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - desktopDispatcherPromise.then(_this.onDispatcherReceived.bind(_this)).then(function () { resolve(); }); - } - else { - reject('Not running in desktop. Server support coming soon!'); - } - }); - } - return this.initializationPromise; - }; - AddInImpl.prototype.onDispatcherReceived = function (dispatcher) { - var _this = this; - dispatcher.setVersionNumber(VersionNumber_1.VersionNumber.Instance); - // Call to register all the services which will use the newly initialized dispatcher - api_shared_1.registerAllSharedServices(dispatcher); - RegisterAllAddInServices_1.registerAllAddInServices(dispatcher); - // Get the initialization service and initialize this add-in - var initializationService = api_shared_1.ApiServiceRegistry.instance.getService("InitializationService" /* InitializationService */); - return initializationService.initializeDashboardAddInAsync().then(function (result) { - if (!result.addInInstance.locator.dashboardPath) { - throw new Error('DashboardPath is undefined'); - } - _this.dashboardContent = _this.initializeDashboardContent(result.addinDashboardInfo, result.addInInstance.locator.dashboardPath); - _this.environment = new Environment_1.Environment(result.addInEnvironment); - _this.settings = _this.initializeSettings(result.addInSettingsInfo); - }); - }; - AddInImpl.prototype.initializeDashboardContent = function (info, sheetPath) { - var dashboardImpl = new DashboardImpl_1.DashboardImpl(info, sheetPath); - var dashboard = new Dashboard_1.Dashboard(dashboardImpl); - return new DashboardContent_1.DashboardContent(dashboard); - }; - AddInImpl.prototype.initializeSettings = function (settingsInfo) { - var settingsImpl = new SettingsImpl_1.SettingsImpl(settingsInfo); - return new Settings_1.Settings(settingsImpl); - }; - return AddInImpl; - }()); - exports.AddInImpl = AddInImpl; - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(4)); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - - -/***/ }, -/* 4 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - /** - * The option for specifying which values to include for filtering. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "nullvalues"; - NullOption["NonNullValues"] = "nonnullvalues"; - NullOption["AllValues"] = "allvalues"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetName"] = "worksheet-name"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(10)); - __export(__webpack_require__(11)); - __export(__webpack_require__(12)); - __export(__webpack_require__(13)); - __export(__webpack_require__(18)); - __export(__webpack_require__(17)); - __export(__webpack_require__(16)); - __export(__webpack_require__(19)); - __export(__webpack_require__(20)); - __export(__webpack_require__(21)); - __export(__webpack_require__(30)); - __export(__webpack_require__(31)); - - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Class designed to register and unregister handlers from a user. Only those events - * which are added via AddNewEventType will be supported by this instance - */ - var EventListenerManager = (function () { - function EventListenerManager() { - this.eventListenerManagers = {}; - } - EventListenerManager.prototype.addEventListener = function (eventType, handler) { - if (!this.eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this.eventListenerManagers[eventType].addEventListener(handler); - }; - EventListenerManager.prototype.removeEventListener = function (eventType, handler) { - if (!this.eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this.eventListenerManagers[eventType].removeEventListener(handler); - }; - EventListenerManager.prototype.addNewEventType = function (eventManager) { - this.eventListenerManagers[eventManager.eventType] = eventManager; - }; - return EventListenerManager; - }()); - exports.EventListenerManager = EventListenerManager; - - -/***/ }, -/* 11 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var DataTable = (function () { - function DataTable(_data, _columns, _totalRowCount, _isSummaryData) { - this._data = _data; - this._columns = _columns; - this._totalRowCount = _totalRowCount; - this._isSummaryData = _isSummaryData; - // TODO: get rid of this in redesign. - this._name = _isSummaryData ? 'Summary Data Table' : 'Underlying Data Table'; - } - Object.defineProperty(DataTable.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "data", { - get: function () { - return this._data; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "columns", { - get: function () { - return this._columns; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "totalRowCount", { - get: function () { - return this._totalRowCount; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "isSummaryData", { - get: function () { - return this._isSummaryData; - }, - enumerable: true, - configurable: true - }); - return DataTable; - }()); - exports.DataTable = DataTable; - var Column = (function () { - function Column(_fieldName, _dataType, // TODO: this shoudl be an enum type - _isReferenced, _index) { - this._fieldName = _fieldName; - this._dataType = _dataType; - this._isReferenced = _isReferenced; - this._index = _index; - } - Object.defineProperty(Column.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "dataType", { - get: function () { - return this._dataType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "isReferenced", { - get: function () { - return this._isReferenced; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "index", { - get: function () { - return this._index; - }, - enumerable: true, - configurable: true - }); - return Column; - }()); - exports.Column = Column; - var DataValue = (function () { - /* tslint:disable:no-any */ - function DataValue(_value, _formattedValue) { - this._value = _value; - this._formattedValue = _formattedValue; - } - Object.defineProperty(DataValue.prototype, "value", { - get: function () { - return this._value; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataValue.prototype, "formattedValue", { - get: function () { - return this._formattedValue; - }, - enumerable: true, - configurable: true - }); - return DataValue; - }()); - exports.DataValue = DataValue; - - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauExceptions = (function () { - function TableauExceptions() { - } - return TableauExceptions; - }()); - exports.TableauExceptions = TableauExceptions; - - -/***/ }, -/* 13 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(14); - var TableauWorksheetEvent_1 = __webpack_require__(16); - var MarksSelectedEvent = (function (_super) { - __extends(MarksSelectedEvent, _super); - function MarksSelectedEvent(worksheet) { - return _super.call(this, api_external_contract_1.TableauEventType.MarkSelectionChanged, worksheet) || this; - } - MarksSelectedEvent.prototype.getMarksAsync = function () { - return this.worksheet.getSelectedMarksAsync(); - }; - return MarksSelectedEvent; - }(TableauWorksheetEvent_1.TableauWorksheetEvent)); - exports.MarksSelectedEvent = MarksSelectedEvent; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(15)); - - -/***/ }, -/* 15 */ -/***/ function(module, exports) { - - "use strict"; - // All enum values made available to AddIn developers. - // Enums should be kept in alphabetical order. - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * The context in which the AddIn is currently running. - */ - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - /** - * The mode in which the AddIn is currently running. - */ - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - /** - * What the object represents in a dashboard. - */ - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - /** - * The different types of data a value can have - */ - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - /** - * Valid date ranges for a relative date filter. - */ - var DateRangeType; - (function (DateRangeType) { - DateRangeType["Last"] = "last"; - DateRangeType["LastN"] = "last-n"; - DateRangeType["Next"] = "next"; - DateRangeType["NextN"] = "next-n"; - DateRangeType["Current"] = "current"; - DateRangeType["ToDate"] = "to-date"; - })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); - /** - * Types of dialog event for event listening between a parent AddIn and a popup dialog. - */ - var DialogEventType; - (function (DialogEventType) { - DialogEventType["DialogMessage"] = "dialog-message"; - DialogEventType["DialogEvent"] = "dialog-event"; - })(DialogEventType = exports.DialogEventType || (exports.DialogEventType = {})); - /** - * All error codes used by the AddIn API. - */ - var ErrorCodes; - (function (ErrorCodes) { - /** - * Only one dialog can be opened at time with the UI namespace functionality. - */ - ErrorCodes["DialogAlreadyOpen"] = "dialog-already-open"; - /** - * The open dialog was closed by the user. - */ - ErrorCodes["DialogClosedByUser"] = "dialog-closed-by-user"; - /** - * An error occurred while attempting to perform a filter operation. - */ - ErrorCodes["FilterCannotBePerformed"] = "filter-cannot-be-performed"; - /** - * An error occurred within the Tableau AddIn API. Contact Tableau Support. - */ - ErrorCodes["InternalError"] = "internal-error"; - /** - * An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales". - */ - ErrorCodes["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - /** - * A dialog must first launch to, and send messages from, the same domain as the parent AddIn. - */ - ErrorCodes["InvalidDomainDialog"] = "invalid-dialog-domain"; - /** - * An invalid date was specified in a method that required a date parameter. - */ - ErrorCodes["InvalidDateParameter"] = "invalid-date-parameter"; - /** - * A filter operation was attempted on a field that does not exist in the data source. - */ - ErrorCodes["InvalidFilterFieldName"] = "invalid-filter-field-name"; - /** - * A filter operation was attempted using a value that is the wrong data type or format. - */ - ErrorCodes["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - /** - * A parameter is not the correct data type or format. The name of the parameter is specified in the Error.message field. - */ - ErrorCodes["InvalidParameter"] = "invalid-parameter"; - /** - * An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field. - */ - ErrorCodes["InvalidSelectionDate"] = "invalid-selection-date"; - /** - * A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source. - */ - ErrorCodes["InvalidSelectionFieldName"] = "invalid-selection-field-name"; - /** - * An invalid value was specified in a Sheet.selectMarksAsync() call. - */ - ErrorCodes["InvalidSelectionValue"] = "invalid-selection-value"; - /** - * A required parameter was not specified, null, or an empty string/array. - */ - ErrorCodes["NullOrEmptyParameter"] = "null-or-empty-parameter"; - /** - * An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener. - */ - ErrorCodes["UnsupportedEventName"] = "unsupported-event-name"; - })(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); - /** - * Type of aggregation on a field. - */ - var FieldAggreationType; - (function (FieldAggreationType) { - FieldAggreationType["Sum"] = "sum"; - FieldAggreationType["Avg"] = "avg"; - FieldAggreationType["Min"] = "min"; - FieldAggreationType["Max"] = "max"; - FieldAggreationType["Stdev"] = "stdev"; - FieldAggreationType["Stdevp"] = "stdevp"; - FieldAggreationType["Var"] = "var"; - FieldAggreationType["Varp"] = "varp"; - FieldAggreationType["Count"] = "count"; - FieldAggreationType["Countd"] = "countd"; - FieldAggreationType["Median"] = "median"; - FieldAggreationType["Attr"] = "attr"; - FieldAggreationType["None"] = "none"; - FieldAggreationType["Year"] = "year"; - FieldAggreationType["Qtr"] = "qtr"; - FieldAggreationType["Month"] = "month"; - FieldAggreationType["Day"] = "day"; - FieldAggreationType["Hour"] = "hour"; - FieldAggreationType["Minute"] = "minute"; - FieldAggreationType["Second"] = "second"; - FieldAggreationType["Week"] = "week"; - FieldAggreationType["Weekday"] = "weekday"; - FieldAggreationType["MomthYear"] = "month-year"; - FieldAggreationType["Mdy"] = "mdy"; - FieldAggreationType["End"] = "end"; - FieldAggreationType["TruncYear"] = "trunc-year"; - FieldAggreationType["TruncQtr"] = "trunc-qtr"; - FieldAggreationType["TruncMonth"] = "trunc-month"; - FieldAggreationType["TruncWeek"] = "trunc-week"; - FieldAggreationType["TruncDay"] = "trunc-day"; - FieldAggreationType["TruncHour"] = "trunc-hour"; - FieldAggreationType["TruncMinute"] = "trunc-minute"; - FieldAggreationType["TruncSecond"] = "trunc-second"; - FieldAggreationType["Quart1"] = "quart1"; - FieldAggreationType["Quart3"] = "quart3"; - FieldAggreationType["Skewness"] = "skewness"; - FieldAggreationType["Kurtosis"] = "kurtosis"; - FieldAggreationType["InOut"] = "in-out"; - FieldAggreationType["User"] = "user"; - })(FieldAggreationType = exports.FieldAggreationType || (exports.FieldAggreationType = {})); - /** - * Role of a field. - */ - var FieldRoleType; - (function (FieldRoleType) { - FieldRoleType["Dimension"] = "dimension"; - FieldRoleType["Measure"] = "measure"; - FieldRoleType["Unknown"] = "unknown"; - })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); - /** - * An enumeration of the valid types of filters that can be applied. - */ - var FilterType; - (function (FilterType) { - FilterType["Categorical"] = "categorical"; - FilterType["Quantitative"] = "quantitative"; - FilterType["Hierarchical"] = "hierarchical"; - FilterType["RelativeDate"] = "relative-data"; - })(FilterType = exports.FilterType || (exports.FilterType = {})); - /** - * The different update types for applying filter - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - /** - * Indicates what to do with null values for a given filter or mark selection call. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "null-values"; - NullOption["NonNullValues"] = "non-null-values"; - NullOption["AllValues"] = "all-values"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - /** - * Date period used in filters and in parameters. - */ - var PeriodType; - (function (PeriodType) { - PeriodType["Years"] = "years"; - PeriodType["Quarters"] = "quarters"; - PeriodType["Months"] = "months"; - PeriodType["Weeks"] = "weeks"; - PeriodType["Days"] = "days"; - PeriodType["Hours"] = "hours"; - PeriodType["Minutes"] = "minutes"; - PeriodType["Seconds"] = "seconds"; - })(PeriodType = exports.PeriodType || (exports.PeriodType = {})); - /** - * The type of sheet a Sheet object represents - */ - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["AddIn"] = "add-in"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - /** - * Represents a certain type of event which can be listened for - */ - var TableauEventType; - (function (TableauEventType) { - /** The selected marks on a visualization has changed */ - TableauEventType["MarkSelectionChanged"] = "mark-selection-changed"; - })(TableauEventType = exports.TableauEventType || (exports.TableauEventType = {})); - - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauSheetEvent_1 = __webpack_require__(17); - var TableauWorksheetEvent = (function (_super) { - __extends(TableauWorksheetEvent, _super); - function TableauWorksheetEvent(type, worksheet) { - var _this = _super.call(this, type, worksheet) || this; - _this._worksheet = worksheet; - return _this; - } - Object.defineProperty(TableauWorksheetEvent.prototype, "worksheet", { - get: function () { - return this._worksheet; - }, - enumerable: true, - configurable: true - }); - return TableauWorksheetEvent; - }(TableauSheetEvent_1.TableauSheetEvent)); - exports.TableauWorksheetEvent = TableauWorksheetEvent; - - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent_1 = __webpack_require__(18); - var TableauSheetEvent = (function (_super) { - __extends(TableauSheetEvent, _super); - function TableauSheetEvent(type, sheet) { - var _this = _super.call(this, type) || this; - _this._sheet = sheet; - return _this; - } - Object.defineProperty(TableauSheetEvent.prototype, "sheet", { - get: function () { - return this._sheet; - }, - enumerable: true, - configurable: true - }); - return TableauSheetEvent; - }(TableauEvent_1.TableauEvent)); - exports.TableauSheetEvent = TableauSheetEvent; - - -/***/ }, -/* 18 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent = (function () { - function TableauEvent(type) { - this._type = type; - } - Object.defineProperty(TableauEvent.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - return TableauEvent; - }()); - exports.TableauEvent = TableauEvent; - - -/***/ }, -/* 19 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class implements the SingleEventManager interface for a single type of Tableau event - * - * @template TEventType The Tableau event type this class specializes - */ - var SingleEventManagerImpl = (function () { - function SingleEventManagerImpl(eventType) { - this._eventType = eventType; - this.handlers = []; - } - Object.defineProperty(SingleEventManagerImpl.prototype, "eventType", { - get: function () { - return this._eventType; - }, - enumerable: true, - configurable: true - }); - SingleEventManagerImpl.prototype.addEventListener = function (handler) { - var _this = this; - this.handlers.push(handler); - return function () { return _this.removeEventListener(handler); }; - }; - SingleEventManagerImpl.prototype.removeEventListener = function (handler) { - var beforeCount = this.handlers.length; - this.handlers = this.handlers.filter(function (h) { return h !== handler; }); - return beforeCount > this.handlers.length; - }; - SingleEventManagerImpl.prototype.triggerEvent = function (eventGenerator) { - for (var _i = 0, _a = this.handlers; _i < _a.length; _i++) { - var handler = _a[_i]; - try { - var eventModel = eventGenerator(); - handler(eventModel); - } - catch (e) { - // Since this handler could be outside our control, just catch anything it throws and continue on - continue; - } - } - }; - return SingleEventManagerImpl; - }()); - exports.SingleEventManagerImpl = SingleEventManagerImpl; - - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Defines which type of getData call to make. - */ - var GetDataType; - (function (GetDataType) { - GetDataType["Summary"] = "summary"; - GetDataType["Underlying"] = "underlying"; - })(GetDataType = exports.GetDataType || (exports.GetDataType = {})); - - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var FilterServiceImpl_1 = __webpack_require__(22); - var GetDataServiceImpl_1 = __webpack_require__(28); - var NotificationServiceImpl_1 = __webpack_require__(29); - var ServiceRegistry_1 = __webpack_require__(30); - function registerAllSharedServices(dispatcher) { - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new GetDataServiceImpl_1.GetDataServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new FilterServiceImpl_1.FilterServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new NotificationServiceImpl_1.NotificationServiceImpl(dispatcher)); - // TODO - more shared services - } - exports.registerAllSharedServices = registerAllSharedServices; - - -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(14); - var api_internal_contract_1 = __webpack_require__(23); - var api_utils_1 = __webpack_require__(24); - var ExternalToInternalEnumMappings_1 = __webpack_require__(27); - var FilterServiceImpl = (function () { - function FilterServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(FilterServiceImpl.prototype, "serviceName", { - get: function () { - return "filter-service" /* Filter */; - }, - enumerable: true, - configurable: true - }); - FilterServiceImpl.prototype.applyFilterAsync = function (visualId, fieldName, values, updateType, filterOptions) { - if (!api_utils_1.Param.isValidEnumValue(updateType, api_external_contract_1.FilterUpdateType)) { - throw new Error('Invalid value for parameter FilterUpdateType'); - } - var verb = api_internal_contract_1.VerbId.ApplyCategoricalFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.FilterValues] = values; - parameters[api_internal_contract_1.ParameterId.FilterUpdateType] = updateType; - parameters[api_internal_contract_1.ParameterId.IsExcludeMode] = - (filterOptions === undefined || filterOptions.isExcludeMode === undefined) ? false : filterOptions.isExcludeMode; - return this.dispatcher.execute(verb, parameters).then(function (response) { - var error = response.result; - if (!(error.errorCode === null || error.errorCode === undefined)) { - // TODO: come back and implement error handling logic - throw new Error('Error Applying Filter: ' + error.errorCode); - } - return fieldName; - }); - }; - FilterServiceImpl.prototype.applyRangeFilterAsync = function (visualId, fieldName, filterOptions) { - if (!filterOptions) { - throw new Error('Missing Parameter: RangeFilterOptions'); - } - api_utils_1.Param.verifyRangeParamType(filterOptions.min, filterOptions.max); - var verb = api_internal_contract_1.VerbId.ApplyRangeFilter; - var parameters = {}; - if (filterOptions.min) { - var min = void 0; - if (filterOptions.min instanceof Date) { - min = api_utils_1.Param.serializeDateForPlatform(filterOptions.min); - } - else { - min = filterOptions.min; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMin] = min; - } - if (filterOptions.max) { - var max = void 0; - if (filterOptions.max instanceof Date) { - max = api_utils_1.Param.serializeDateForPlatform(filterOptions.max); - } - else { - max = filterOptions.max; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMax] = max; - } - if (filterOptions.nullOption) { - if (!api_utils_1.Param.isValidEnumValue(filterOptions.nullOption, api_external_contract_1.NullOption)) { - throw new Error('Invalid value for parameter NullOption'); - } - parameters[api_internal_contract_1.ParameterId.FilterRangeNullOption] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.nullOptions.convert(filterOptions.nullOption); - } - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - return this.dispatcher.execute(verb, parameters).then(function (response) { - return fieldName; - }); - }; - FilterServiceImpl.prototype.clearFilterAsync = function (visualId, fieldName) { - var verb = api_internal_contract_1.VerbId.ClearFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - return this.dispatcher.execute(verb, parameters).then(function (resposne) { - return fieldName; - }); - }; - return FilterServiceImpl; - }()); - exports.FilterServiceImpl = FilterServiceImpl; - - -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(4)); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - - -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(25); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(26); - exports.Param = Param_1.Param; - - -/***/ }, -/* 25 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(mappings, defaultVal) { - this.mappings = mappings; - this.defaultVal = defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this.mappings.hasOwnProperty(enumVal)) { - return this.mappings[enumVal]; - } - if (this.defaultVal !== undefined && !throwIfMissing) { - return this.defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - - -/***/ }, -/* 26 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies the value is part of the Enum - * - * String enums are {string : string} dictionaries which are not reverse mappable - * This is an ugly workaround - * @param value value to verify - * @param enumType enum to verify against - */ - /* tslint:disable:no-any */ - Param.isValidEnumValue = function (value, enumType) { - var isValid = false; - Object.keys(enumType).forEach(function (enumKey) { - if (enumType[enumKey] === value.toString()) { - isValid = true; - } - }); - return isValid; - }; - /* tslint:enable:no-any */ - /** - * serializes the date into the format that the server expects. - * @param date the date to serialize - */ - Param.serializeDateForPlatform = function (date) { - var year = date.getUTCFullYear(); - var month = date.getUTCMonth() + 1; - var day = date.getUTCDate(); - var hh = date.getUTCHours(); - var mm = date.getUTCMinutes(); - var sec = date.getUTCSeconds(); - return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; - }; - /** - * Verifies the params min and max for applying range filter - * @param min range min - * @param max range max - */ - /* tslint:disable:no-any */ - Param.verifyRangeParamType = function (min, max) { - /* tslint:enable:no-any */ - if (!min && !max) { - throw new Error('Missing Parameter: At least one of min or max is required'); - } - if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); - } - if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); - } - if (typeof (min) !== typeof (max)) { - throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); - } - }; - /** - * Verifies the input is a number - */ - /* tslint:disable:no-any */ - Param.isTypeNumber = function (input) { - return typeof (input) === 'number' || input instanceof Number; - }; - /* tslint:enable:no-any */ - /** - * Verifies the input is a Date - */ - /* tslint:disable:no-any */ - Param.isTypeDate = function (input) { - return input instanceof Date; - }; - return Param; - }()); - exports.Param = Param; - - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(14); - var api_internal_contract_1 = __webpack_require__(23); - var api_utils_1 = __webpack_require__(24); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the external-api-contract to the enums used - * in the internal-api-contract, which developers code against. - */ - var ExternalToInternalEnumMappings = (function () { - function ExternalToInternalEnumMappings() { - } - ExternalToInternalEnumMappings.nullOptions = new api_utils_1.EnumConverter((_a = {}, - _a[api_external_contract_1.NullOption.AllValues] = api_internal_contract_1.NullOption.AllValues, - _a[api_external_contract_1.NullOption.NonNullValues] = api_internal_contract_1.NullOption.NonNullValues, - _a[api_external_contract_1.NullOption.NonNullValues] = api_internal_contract_1.NullOption.NullValues, - _a)); - return ExternalToInternalEnumMappings; - }()); - exports.ExternalToInternalEnumMappings = ExternalToInternalEnumMappings; - var _a; - /* tslint:enable:typedef */ - - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(14); - var api_internal_contract_1 = __webpack_require__(23); - var GetDataModels_1 = __webpack_require__(11); - var GetDataService_1 = __webpack_require__(20); - var GetDataServiceImpl = (function () { - function GetDataServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(GetDataServiceImpl.prototype, "serviceName", { - get: function () { - return "get-data-service" /* GetData */; - }, - enumerable: true, - configurable: true - }); - GetDataServiceImpl.prototype.getUnderlyingDataAsync = function (visualId, getType, ignoreAliases, ignoreSelection, includeAllColumns, maxRows) { - var _this = this; - // Create all of our parameters - var verb = getType === GetDataService_1.GetDataType.Summary ? api_internal_contract_1.VerbId.GetDataSummaryData : api_internal_contract_1.VerbId.GetUnderlyingData; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases; - parameters[api_internal_contract_1.ParameterId.IgnoreSelection] = ignoreSelection; - parameters[api_internal_contract_1.ParameterId.IncludeAllColumns] = includeAllColumns; - parameters[api_internal_contract_1.ParameterId.MaxRows] = maxRows; - return this.dispatcher.execute(verb, parameters).then(function (response) { - var responseData = response.result; - return _this.processResultsTable(responseData.data, responseData.isSummary); - }); - }; - GetDataServiceImpl.prototype.getSelectedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.GetSelectedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.getHighlightedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.GetHighlightedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.processResultsTable = function (responseData, isSummary) { - var headers = responseData.headers.map(function (h) { return new GetDataModels_1.Column(h.fieldCaption, api_external_contract_1.DataType.String /*h.DataType*/, h.isReferenced, h.index); }); - var table = responseData.dataTable.map(function (row) { - return row.map(function (cell) { - return new GetDataModels_1.DataValue(cell.value, cell.formattedValue); - }); - }); - return new GetDataModels_1.DataTable(table, headers, table.length, isSummary); - }; - return GetDataServiceImpl; - }()); - exports.GetDataServiceImpl = GetDataServiceImpl; - - -/***/ }, -/* 29 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Registration = (function () { - function Registration(filterFn, callbackFn) { - this.filterFn = filterFn; - this.callbackFn = callbackFn; - // Nothing Here - } - Registration.prototype.onNotification = function (notificationModel) { - if (this.filterFn(notificationModel)) { - this.callbackFn(notificationModel); - } - }; - return Registration; - }()); - var NotificationServiceImpl = (function () { - function NotificationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - this.handlers = {}; - this.dispatcher.registerNotificationHandler(this.onNotification.bind(this)); - } - Object.defineProperty(NotificationServiceImpl.prototype, "serviceName", { - get: function () { - return "notification-service" /* Notification */; - }, - enumerable: true, - configurable: true - }); - NotificationServiceImpl.prototype.registerHandler = function (id, filterFn, handler) { - var _this = this; - var handlers = this.handlers[id] || new Array(); - var registration = new Registration(filterFn, handler); - handlers.push(registration); - this.handlers[id] = handlers; - return function () { return _this.removeRegistration(id, registration); }; - }; - NotificationServiceImpl.prototype.hasHandlersForNotificationType = function (id) { - return this.handlers.hasOwnProperty(id); - }; - NotificationServiceImpl.prototype.onNotification = function (notification) { - if (!this.hasHandlersForNotificationType(notification.notificationId)) { - return; - } - // Go through and check for all the handlers of this particular notification - this.handlers[notification.notificationId].forEach(function (h) { return h.onNotification(notification.data); }); - }; - NotificationServiceImpl.prototype.removeRegistration = function (id, registration) { - if (!this.hasHandlersForNotificationType(id)) { - return; - } - this.handlers[id] = this.handlers[id].filter(function (reg) { return reg !== registration; }); - }; - return NotificationServiceImpl; - }()); - exports.NotificationServiceImpl = NotificationServiceImpl; - - -/***/ }, -/* 30 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ServiceRegistryImpl = (function () { - function ServiceRegistryImpl() { - this.services = {}; - } - ServiceRegistryImpl.prototype.registerService = function (service) { - this.services[service.serviceName] = service; - }; - ServiceRegistryImpl.prototype.getService = function (serviceName) { - if (!this.services.hasOwnProperty(serviceName)) { - throw new Error("No Service " + serviceName + " is registered"); - } - return this.services[serviceName]; - }; - return ServiceRegistryImpl; - }()); - /** - * static class used for getting access to the single instance - * of the ApiServiceRegistry - */ - var ApiServiceRegistry = (function () { - // Private to avoid anyone constructing this - function ApiServiceRegistry() { - } - Object.defineProperty(ApiServiceRegistry, "instance", { - /** - * Gets the singleton instance of the ServiceRegistry - */ - get: function () { - if (!window.__tableauApiServiceRegistry) { - ApiServiceRegistry.setInstance(new ServiceRegistryImpl()); - } - if (!window.__tableauApiServiceRegistry) { - throw new Error('Assigning service registry failed'); - } - return window.__tableauApiServiceRegistry; - }, - enumerable: true, - configurable: true - }); - /** - * Helper method to override the registry instance. Can be used by unit tests - * - * @param {ServiceRegistry} serviceRegistry The new registry - */ - ApiServiceRegistry.setInstance = function (serviceRegistry) { - window.__tableauApiServiceRegistry = serviceRegistry; - }; - return ApiServiceRegistry; - }()); - exports.ApiServiceRegistry = ApiServiceRegistry; - - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(14); - var api_internal_contract_1 = __webpack_require__(23); - var api_utils_1 = __webpack_require__(24); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the internal-api-contract to the enums used - * in the external-api-contract, which developers code against. - */ - var InternalToExternalEnumMappings = (function () { - function InternalToExternalEnumMappings() { - } - InternalToExternalEnumMappings.addInContext = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.AddInContext.Desktop] = api_external_contract_1.AddInContext.Desktop, - _a[api_internal_contract_1.AddInContext.Server] = api_external_contract_1.AddInContext.Server, - _a[api_internal_contract_1.AddInContext.Unknown] = api_external_contract_1.AddInContext.Unknown, - _a)); - InternalToExternalEnumMappings.addInMode = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.AddInMode.Authoring] = api_external_contract_1.AddInMode.Authoring, - _b[api_internal_contract_1.AddInMode.Viewing] = api_external_contract_1.AddInMode.Viewing, - _b[api_internal_contract_1.AddInMode.Unknown] = api_external_contract_1.AddInMode.Unknown, - _b)); - InternalToExternalEnumMappings.sheetType = new api_utils_1.EnumConverter((_c = {}, - _c[api_internal_contract_1.SheetType.Dashboard] = api_external_contract_1.SheetType.Dashboard, - _c[api_internal_contract_1.SheetType.Story] = api_external_contract_1.SheetType.Story, - _c[api_internal_contract_1.SheetType.Worksheet] = api_external_contract_1.SheetType.Worksheet, - _c)); - InternalToExternalEnumMappings.dashboardObjectType = new api_utils_1.EnumConverter((_d = {}, - _d[api_internal_contract_1.DashboardObjectType.Blank] = api_external_contract_1.DashboardObjectType.Blank, - _d[api_internal_contract_1.DashboardObjectType.Image] = api_external_contract_1.DashboardObjectType.Image, - _d[api_internal_contract_1.DashboardObjectType.Legend] = api_external_contract_1.DashboardObjectType.Legend, - _d[api_internal_contract_1.DashboardObjectType.PageFilter] = api_external_contract_1.DashboardObjectType.PageFilter, - _d[api_internal_contract_1.DashboardObjectType.ParameterControl] = api_external_contract_1.DashboardObjectType.ParameterControl, - _d[api_internal_contract_1.DashboardObjectType.QuickFilter] = api_external_contract_1.DashboardObjectType.QuickFilter, - _d[api_internal_contract_1.DashboardObjectType.Text] = api_external_contract_1.DashboardObjectType.Text, - _d[api_internal_contract_1.DashboardObjectType.Title] = api_external_contract_1.DashboardObjectType.Title, - _d[api_internal_contract_1.DashboardObjectType.WebPage] = api_external_contract_1.DashboardObjectType.WebPage, - _d[api_internal_contract_1.DashboardObjectType.Worksheet] = api_external_contract_1.DashboardObjectType.Worksheet, - _d)); - InternalToExternalEnumMappings.dataType = new api_utils_1.EnumConverter((_e = {}, - _e[api_internal_contract_1.DataType.Bool] = api_external_contract_1.DataType.Bool, - _e[api_internal_contract_1.DataType.Date] = api_external_contract_1.DataType.Date, - _e[api_internal_contract_1.DataType.DateTime] = api_external_contract_1.DataType.DateTime, - _e[api_internal_contract_1.DataType.Float] = api_external_contract_1.DataType.Float, - _e[api_internal_contract_1.DataType.Int] = api_external_contract_1.DataType.Int, - _e[api_internal_contract_1.DataType.String] = api_external_contract_1.DataType.String, - _e)); - InternalToExternalEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_f = {}, - _f[api_internal_contract_1.FilterUpdateType.Add] = api_external_contract_1.FilterUpdateType.Add, - _f[api_internal_contract_1.FilterUpdateType.All] = api_external_contract_1.FilterUpdateType.All, - _f[api_internal_contract_1.FilterUpdateType.Remove] = api_external_contract_1.FilterUpdateType.Remove, - _f[api_internal_contract_1.FilterUpdateType.Replace] = api_external_contract_1.FilterUpdateType.Replace, - _f)); - return InternalToExternalEnumMappings; - }()); - exports.InternalToExternalEnumMappings = InternalToExternalEnumMappings; - var _a, _b, _c, _d, _e, _f; - /* tslint:enable:typedef */ - - -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(33); - var Dashboard = (function (_super) { - __extends(Dashboard, _super); - function Dashboard(dashboardImpl) { - var _this = _super.call(this, dashboardImpl) || this; - _this.dashboardImpl = dashboardImpl; - return _this; - } - Object.defineProperty(Dashboard.prototype, "worksheets", { - get: function () { - return this.dashboardImpl.worksheets; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Dashboard.prototype, "objects", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - return Dashboard; - }(Sheet_1.Sheet)); - exports.Dashboard = Dashboard; - - -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var Sheet = (function (_super) { - __extends(Sheet, _super); - function Sheet(sheetImpl) { - var _this = _super.call(this) || this; - _this.sheetImpl = sheetImpl; - return _this; - } - Object.defineProperty(Sheet.prototype, "name", { - get: function () { - return this.sheetImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "sheetType", { - get: function () { - return this.sheetImpl.sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "size", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - return Sheet; - }(api_shared_1.EventListenerManager)); - exports.Sheet = Sheet; - - -/***/ }, -/* 34 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external DashboardContent namespace. - * This does not follow the Impl pattern as DashboardContent is - * currently just a (single) property bag. - */ - var DashboardContent = (function () { - function DashboardContent(_dashboard) { - this._dashboard = _dashboard; - } - Object.defineProperty(DashboardContent.prototype, "dashboard", { - get: function () { - return this._dashboard; - }, - enumerable: true, - configurable: true - }); - return DashboardContent; - }()); - exports.DashboardContent = DashboardContent; - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - /** - * Implementation of the external environment namespace. - * Environment does not follow the Impl pattern as it is - * just a property bag. - */ - var Environment = (function () { - function Environment(addInEnvironment) { - this._apiVersion = addInEnvironment.apiVersion; - this._context = api_shared_1.InternalToExternalEnumMappings.addInContext.convert(addInEnvironment.addInContext); - this._language = addInEnvironment.addInLanguage; - this._locale = addInEnvironment.addInLocale; - this._mode = api_shared_1.InternalToExternalEnumMappings.addInMode.convert(addInEnvironment.addInMode); - this._operatingSystem = addInEnvironment.operatingSystem; - this._tableauVersion = addInEnvironment.tableauVersion; - } - Object.defineProperty(Environment.prototype, "apiVersion", { - get: function () { - return this._apiVersion; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "context", { - get: function () { - return this._context; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "language", { - get: function () { - return this._language; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "locale", { - get: function () { - return this._locale; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "mode", { - get: function () { - return this._mode; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "operatingSystem", { - get: function () { - return this._operatingSystem; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "tableauVersion", { - get: function () { - return this._tableauVersion; - }, - enumerable: true, - configurable: true - }); - return Environment; - }()); - exports.Environment = Environment; - - -/***/ }, -/* 36 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external settings namespace. - */ - var Settings = (function () { - function Settings(settingsImpl) { - this.settingsImpl = settingsImpl; - } - Settings.prototype.erase = function (key) { - this.settingsImpl.erase(key); - }; - Settings.prototype.get = function (key) { - return this.settingsImpl.get(key); - }; - Settings.prototype.getAll = function () { - return this.settingsImpl.getAll(); - }; - Object.defineProperty(Settings.prototype, "isModified", { - get: function () { - return this.settingsImpl.isModified; - }, - enumerable: true, - configurable: true - }); - Settings.prototype.saveAsync = function () { - return this.settingsImpl.saveAsync(); - }; - Settings.prototype.set = function (key, value) { - this.settingsImpl.set(key, value); - }; - return Settings; - }()); - exports.Settings = Settings; - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var InitializationServiceImpl_1 = __webpack_require__(38); - var SettingsServiceImpl_1 = __webpack_require__(39); - function registerAllAddInServices(dispatcher) { - api_shared_1.ApiServiceRegistry.instance.registerService(new InitializationServiceImpl_1.InitializationServiceImpl(dispatcher)); - api_shared_1.ApiServiceRegistry.instance.registerService(new SettingsServiceImpl_1.SettingsServiceImpl(dispatcher)); - } - exports.registerAllAddInServices = registerAllAddInServices; - - -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var InitializationServiceImpl = (function () { - function InitializationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(InitializationServiceImpl.prototype, "serviceName", { - get: function () { - return "InitializationService" /* InitializationService */; - }, - enumerable: true, - configurable: true - }); - InitializationServiceImpl.prototype.initializeDashboardAddInAsync = function () { - // We don't need any parameters for this call because they are added in for us by the dispatcher - return this.dispatcher.execute(api_internal_contract_1.VerbId.InitializeAddIn, {}).then(function (response) { - // TODO - Validate return value - var result = response.result; - return result; - }); - }; - return InitializationServiceImpl; - }()); - exports.InitializationServiceImpl = InitializationServiceImpl; - - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var SettingsServiceImpl = (function () { - function SettingsServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(SettingsServiceImpl.prototype, "serviceName", { - get: function () { - return "SettingsService" /* SettingsService */; - }, - enumerable: true, - configurable: true - }); - SettingsServiceImpl.prototype.saveSettingsAsync = function (settings) { - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.SettingsValues] = settings; - return this.dispatcher.execute(api_internal_contract_1.VerbId.SaveAddInSettings, parameters).then(function (value) { - var result = value.result; - if (!result || !result.settingsValues) { - throw new Error('Internal error saving settings.'); - } - return (result.settingsValues); - }); - }; - return SettingsServiceImpl; - }()); - exports.SettingsServiceImpl = SettingsServiceImpl; - - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Represents the current version of the addin library - */ - var VersionNumber = (function () { - // private constructor so everyone uses the singleton instance - function VersionNumber(versionString) { - var parts = versionString.split('.').map(function (p) { return parseInt(p, 10); }); - if (parts.length !== 3) { - throw new Error('Invalid version number: ' + versionString); - } - this._major = parts[0]; - this._minor = parts[1]; - this._fix = parts[2]; - } - Object.defineProperty(VersionNumber, "Instance", { - /** - * Gets the singleton instance of the version number. - */ - get: function () { - return VersionNumber.instance; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "major", { - get: function () { - return this._major; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "minor", { - get: function () { - return this._minor; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "fix", { - get: function () { - return this._fix; - }, - enumerable: true, - configurable: true - }); - // Using some webpack tricks, we can inject this version into our code (kinda like c++ preprocessor stuff) - VersionNumber.instance = new VersionNumber(("0.2.0")); - return VersionNumber; - }()); - exports.VersionNumber = VersionNumber; - - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(42); - var api_internal_contract_1 = __webpack_require__(3); - var AddInSheetInfoImpl_1 = __webpack_require__(43); - var SheetImpl_1 = __webpack_require__(44); - var WorksheetImpl_1 = __webpack_require__(45); - var Worksheet_1 = __webpack_require__(46); - var DashboardImpl = (function (_super) { - __extends(DashboardImpl, _super); - function DashboardImpl(info, sheetPath) { - var _this = _super.call(this, new AddInSheetInfoImpl_1.AddInSheetInfoImpl(info.name, api_external_contract_1.SheetType.Dashboard)) || this; - _this._worksheets = new Array(); - // Process all the zones which are contained in this dashboard - for (var _i = 0, _a = info.zones; _i < _a.length; _i++) { - var zone = _a[_i]; - if (zone.zoneType === api_internal_contract_1.DashboardObjectType.Worksheet) { - var sheetInfo = new AddInSheetInfoImpl_1.AddInSheetInfoImpl(zone.name, api_external_contract_1.SheetType.Worksheet); - var vizId = { - worksheet: zone.name, - dashboard: info.name, - storyboard: sheetPath.storyboard, - flipboardZoneID: sheetPath.flipboardZoneID, - storyPointID: sheetPath.storyPointID - }; - var worksheetImpl = new WorksheetImpl_1.WorksheetImpl(sheetInfo, vizId); - _this._worksheets.push(new Worksheet_1.Worksheet(worksheetImpl)); - } - } - return _this; - } - Object.defineProperty(DashboardImpl.prototype, "worksheets", { - get: function () { - return this._worksheets; - }, - enumerable: true, - configurable: true - }); - return DashboardImpl; - }(SheetImpl_1.SheetImpl)); - exports.DashboardImpl = DashboardImpl; - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(15)); - - -/***/ }, -/* 43 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInSheetInfoImpl = (function () { - function AddInSheetInfoImpl(_name, _sheetType) { - this._name = _name; - this._sheetType = _sheetType; - } - Object.defineProperty(AddInSheetInfoImpl.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddInSheetInfoImpl.prototype, "sheetType", { - get: function () { - return this._sheetType; - }, - enumerable: true, - configurable: true - }); - return AddInSheetInfoImpl; - }()); - exports.AddInSheetInfoImpl = AddInSheetInfoImpl; - - -/***/ }, -/* 44 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var SheetImpl = (function () { - function SheetImpl(sheetInfoImpl) { - this._name = sheetInfoImpl.name; - this._sheetType = sheetInfoImpl.sheetType; - } - Object.defineProperty(SheetImpl.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "sheetType", { - get: function () { - return this._sheetType; - }, - enumerable: true, - configurable: true - }); - return SheetImpl; - }()); - exports.SheetImpl = SheetImpl; - - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(42); - var api_internal_contract_1 = __webpack_require__(3); - var api_shared_1 = __webpack_require__(9); - var SheetImpl_1 = __webpack_require__(44); - var visualIdsAreEqual = function (a, b) { - return a && b && - a.worksheet === b.worksheet && - a.dashboard === b.dashboard && - a.storyboard === b.storyboard && - a.storyPointID === b.storyPointID && - a.flipboardZoneID === b.flipboardZoneID; - }; - var WorksheetImpl = (function (_super) { - __extends(WorksheetImpl, _super); - function WorksheetImpl(sheetInfoImpl, _visualId) { - var _this = _super.call(this, sheetInfoImpl) || this; - _this._visualId = _visualId; - return _this; - } - /** - * Helper method which goes through and registers each event type this impl knows about - * with the NotificationService. It returns an array of SingleEventManager objects which - * can then be passed to an EventListenerManager to handle user registration / unregistration. - * - * @param {Worksheet} worksheet The worksheet object which will be included with the event notifications - * @returns {Array} Collection of event managers to pass to an EventListenerManager - */ - WorksheetImpl.prototype.initializeEvents = function (worksheet) { - var _this = this; - var results = new Array(); - var notificationService; - try { - notificationService = api_shared_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); - } - catch (e) { - // If we don't have this service registered, just return - return results; - } - // Initialize all of the event managers we'll need (one for each event type) - var marksEvent = new api_shared_1.SingleEventManagerImpl(api_external_contract_1.TableauEventType.MarkSelectionChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.SelectedMarksChanged, function (model) { - var visualId = model; - return visualIdsAreEqual(visualId, _this.visualId); - }, function (viz) { - marksEvent.triggerEvent(function () { return new api_shared_1.MarksSelectedEvent(worksheet); }); - }); - results.push(marksEvent); - // TODO - other event types - return results; - }; - Object.defineProperty(WorksheetImpl.prototype, "visualId", { - get: function () { - return this._visualId; - }, - enumerable: true, - configurable: true - }); - WorksheetImpl.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyFilterAsync(this.visualId, fieldName, values, updateType, options); - }; - WorksheetImpl.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyRangeFilterAsync(this.visualId, fieldName, filterOptions); - }; - WorksheetImpl.prototype.clearFilterAsync = function (fieldName) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.clearFilterAsync(this.visualId, fieldName); - }; - WorksheetImpl.prototype.getSelectedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getSelectedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getHighlightedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getHighlightedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getSummaryDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Summary, !!options.ignoreAliases, !!options.ignoreSelection, true, 0); - }; - WorksheetImpl.prototype.getUnderlyingDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Underlying, !!options.ignoreAliases, !!options.ignoreSelection, !!options.includeAllColumns, options.maxRows || 0); - }; - return WorksheetImpl; - }(SheetImpl_1.SheetImpl)); - exports.WorksheetImpl = WorksheetImpl; - - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(33); - var Worksheet = (function (_super) { - __extends(Worksheet, _super); - function Worksheet(worksheetImpl) { - var _this = _super.call(this, worksheetImpl) || this; - _this.worksheetImpl = worksheetImpl; - // Call to initialize events and then call down to the event listener manager to handle things - _this.worksheetImpl.initializeEvents(_this).forEach(function (e) { return _this.addNewEventType(e); }); - return _this; - } - Object.defineProperty(Worksheet.prototype, "parentDashboard", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - Worksheet.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - return this.worksheetImpl.applyFilterAsync(fieldName, values, updateType, options); - }; - Worksheet.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - return this.worksheetImpl.applyRangeFilterAsync(fieldName, filterOptions); - }; - Worksheet.prototype.clearFilterAsync = function (fieldName) { - return this.worksheetImpl.clearFilterAsync(fieldName); - }; - Worksheet.prototype.getFiltersAsync = function () { - throw new Error('API call not yet implemented'); - }; - Worksheet.prototype.getSelectedMarksAsync = function () { - return this.worksheetImpl.getSelectedMarksAsync(); - }; - Worksheet.prototype.getHighlightedMarksAsync = function () { - return this.worksheetImpl.getHighlightedMarksAsync(); - }; - Worksheet.prototype.getSummaryDataAsync = function (options) { - return this.worksheetImpl.getSummaryDataAsync(options); - }; - Worksheet.prototype.getUnderlyingDataAsync = function (options) { - return this.worksheetImpl.getUnderlyingDataAsync(options); - }; - return Worksheet; - }(Sheet_1.Sheet)); - exports.Worksheet = Worksheet; - - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var api_utils_1 = __webpack_require__(48); - var SettingsImpl = (function () { - function SettingsImpl(settingsInfo) { - // Since promises can't be introspected for state, keep a variable that - // indicates a save is in progress, so that set/erase can't be called during a save. - this.saveInProgress = false; - this.initializeSettings(settingsInfo); - } - SettingsImpl.prototype.erase = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - // Only make a modification if we have the key already - if (this.currentSettings[key]) { - this.verifySettingsAreUnlocked(); - delete this.currentSettings[key]; - this._isModified = true; - } - }; - SettingsImpl.prototype.get = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - return this.currentSettings[key]; - }; - SettingsImpl.prototype.getAll = function () { - // Returns a mutable copy of the settings - return Object.assign({}, this.currentSettings); - }; - Object.defineProperty(SettingsImpl.prototype, "isModified", { - get: function () { - return this._isModified; - }, - enumerable: true, - configurable: true - }); - SettingsImpl.prototype.saveAsync = function () { - var _this = this; - this.verifySettingsAreUnlocked(); - // Just resolve immediately if settings are unchanged - if (!this._isModified) { - return Promise.resolve(this.currentSettings); - } - this.saveInProgress = true; - // Use the settings service to save settings to twb - var settingsService = api_shared_1.ApiServiceRegistry.instance.getService("SettingsService" /* SettingsService */); - return settingsService.saveSettingsAsync(this.currentSettings).then(function (newSettings) { - _this.saveInProgress = false; - _this._isModified = false; - Object.assign(_this.currentSettings, newSettings); - return newSettings; - }); - }; - SettingsImpl.prototype.set = function (key, value) { - api_utils_1.Param.verifyValue(key, 'key'); // Key shouldn't be an empty string. - api_utils_1.Param.verifyString(value, 'value'); // Empty string value is allowed. - this.verifySettingsAreUnlocked(); - this.currentSettings[key] = value; - this._isModified = true; - }; - SettingsImpl.prototype.initializeSettings = function (settingsInfo) { - api_utils_1.Param.verifyValue(settingsInfo, 'settingsInfo'); - api_utils_1.Param.verifyValue(settingsInfo.settingsValues, 'settingsInfo.SettingsValues'); - this.currentSettings = settingsInfo.settingsValues; - // Reset the isModified flag - this._isModified = false; - }; - /** - * This helper should be called before any local update to this.currentSettings. - * Checks if a current save call is still in progress and throws an error if so. - */ - SettingsImpl.prototype.verifySettingsAreUnlocked = function () { - if (this.saveInProgress) { - throw new Error('Async Save is in progress, updating settings is not allowed.'); - } - }; - return SettingsImpl; - }()); - exports.SettingsImpl = SettingsImpl; - - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(25); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(26); - exports.Param = Param_1.Param; - - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBhZGZhOTkyYzlkYTU1MWVlOTRmYiIsIndlYnBhY2s6Ly8vLi4vc3JjL0FkZEluQXBpLnRzIiwid2VicGFjazovLy8uLi9zcmMvRXh0ZXJuYWxOYW1lc3BhY2VzL0FkZEluLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvQWRkSW5JbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvTm90aWZpY2F0aW9ucy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9QYXJhbWV0ZXJzLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL1ZlcmJzLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudExpc3RlbmVyTWFuYWdlci50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvR2V0RGF0YU1vZGVscy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9BcGlFeHRlcm5hbENvbnRyYWN0LnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVFdmVudC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktdXRpbHMvc3JjL0FwaVV0aWxzLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvRW51bUNvbnZlcnRlci50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktdXRpbHMvc3JjL1BhcmFtLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9HZXREYXRhU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9Ob3RpZmljYXRpb25TZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0Rhc2hib2FyZC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1NoZWV0LnRzIiwid2VicGFjazovLy8uLi9zcmMvRXh0ZXJuYWxOYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9FeHRlcm5hbE5hbWVzcGFjZXMvRW52aXJvbm1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9FeHRlcm5hbE5hbWVzcGFjZXMvU2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9SZWdpc3RlckFsbEFkZEluU2VydmljZXMudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9WZXJzaW9uTnVtYmVyLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvRGFzaGJvYXJkSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL0FkZEluU2hlZXRJbmZvSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL1NoZWV0SW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL1dvcmtzaGVldEltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9Xb3Jrc2hlZXQudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9JbnRlcm5hbC9TZXR0aW5nc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQ3RDQTs7OztJQUlHOztBQUVILDJGQUEwRjtBQUMxRiw2RkFBNEY7QUFDNUYsbUJBQWtCO0FBRWxCLHNDQUFtRDtBQUNuRCwwQ0FBaUQ7QUFFakQsS0FBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7QUFDckIsY0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTFDLGdCQUFlO0FBQ2YsdURBR3dDO0FBRnRDLG9FQUFnQjtBQUNoQix3REFBVTs7Ozs7Ozs7O0FDVFo7O0lBRUc7QUFDSDtLQUNFLGVBQTJCLFNBQW9CO1NBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7U0FDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7S0FDN0IsQ0FBQztLQUVELHNCQUFXLG1DQUFnQjtjQUEzQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1NBQ3pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsOEJBQVc7Y0FBdEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7U0FDcEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywyQkFBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHFCQUFFO2NBQWI7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbEQsQ0FBQzs7O1FBQUE7S0FFTSwrQkFBZSxHQUF0QjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO0tBQzFDLENBQUM7S0FDSCxZQUFDO0FBQUQsRUFBQztBQXhCWSx1QkFBSzs7Ozs7Ozs7O0FDYmxCLHNEQU13QztBQUN4QywyQ0FBb0Y7QUFFcEYsMkNBQXlDO0FBQ3pDLGtEQUEwRTtBQUMxRSw2Q0FBZ0U7QUFDaEUsMENBQTBEO0FBRzFELDBEQUFnRjtBQUNoRiwrQ0FBaUQ7QUFDakQsK0NBQWdEO0FBQ2hELDhDQUE4QztBQUU5QztLQUFBO0tBd0RBLENBQUM7S0FqRFEsbUNBQWUsR0FBdEI7U0FBQSxpQkFlQztTQWRDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQzthQUNoQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxPQUFPLENBQU8sVUFBQyxPQUFPLEVBQUUsTUFBTTtpQkFDN0QsdUdBQXVHO2lCQUN2RyxFQUFFLENBQUMsQ0FBQyxtREFBMkIsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakUsdUNBQXVDO3FCQUN2QyxJQUFNLHdCQUF3QixHQUFHLG1EQUEyQixDQUFDLDJCQUEyQixFQUFFLENBQUM7cUJBQzNGLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQVEsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakcsQ0FBQztpQkFBQyxJQUFJLENBQUMsQ0FBQztxQkFDTixNQUFNLENBQUMscURBQXFELENBQUMsQ0FBQztpQkFDaEUsQ0FBQzthQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0wsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7S0FDcEMsQ0FBQztLQUVPLHdDQUFvQixHQUE1QixVQUE2QixVQUFpQztTQUE5RCxpQkFvQkM7U0FuQkMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLDZCQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FFcEQsb0ZBQW9GO1NBQ3BGLHNDQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RDLG1EQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBRXJDLDREQUE0RDtTQUM1RCxJQUFNLHFCQUFxQixHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHFEQUMxQixDQUFDO1NBRTNDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBTTthQUN0RSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7aUJBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQzthQUNoRCxDQUFDO2FBRUQsS0FBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0gsS0FBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDNUQsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDcEUsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU8sOENBQTBCLEdBQWxDLFVBQW1DLElBQXdCLEVBQUUsU0FBb0I7U0FDL0UsSUFBTSxhQUFhLEdBQUcsSUFBSSw2QkFBYSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN6RCxJQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDL0MsTUFBTSxDQUFDLElBQUksbUNBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDekMsQ0FBQztLQUVPLHNDQUFrQixHQUExQixVQUEyQixZQUErQjtTQUN4RCxJQUFNLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEQsTUFBTSxDQUFDLElBQUksbUJBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNwQyxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDO0FBeERZLCtCQUFTOzs7Ozs7OztBQ3BCdEI7Ozs7SUFJRzs7Ozs7QUFFSCxrQ0FBa0M7QUFDbEMsa0NBQWtEO0FBRWxELGtDQUEwQztBQUMxQyxrQ0FBdUM7QUFDdkMsa0NBQWtDOzs7Ozs7Ozs7QUNYbEMsS0FBWSxZQUlYO0FBSkQsWUFBWSxZQUFZO0tBQ3RCLG1DQUFtQjtLQUNuQixpQ0FBaUI7S0FDakIsbUNBQW1CO0FBQ3JCLEVBQUMsRUFKVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUl2QjtBQUVELEtBQVksU0FJWDtBQUpELFlBQVksU0FBUztLQUNuQixvQ0FBdUI7S0FDdkIsZ0NBQW1CO0tBQ25CLGdDQUFtQjtBQUNyQixFQUFDLEVBSlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFJcEI7QUFFRCxLQUFZLG1CQVlYO0FBWkQsWUFBWSxtQkFBbUI7S0FDN0Isc0NBQWU7S0FDZiw4Q0FBdUI7S0FDdkIsbURBQTRCO0tBQzVCLDZEQUFzQztLQUN0QyxpREFBMEI7S0FDMUIsd0NBQWlCO0tBQ2pCLHNDQUFlO0tBQ2Ysb0NBQWE7S0FDYixzQ0FBZTtLQUNmLDJDQUFvQjtLQUNwQixzQ0FBZTtBQUNqQixFQUFDLEVBWlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFZOUI7QUFFRCxLQUFZLFFBUVg7QUFSRCxZQUFZLFFBQVE7S0FDbEIsNkJBQWlCO0tBQ2pCLHVCQUFXO0tBQ1gsMkJBQWU7S0FDZix5QkFBYTtLQUNiLHlCQUFhO0tBQ2Isa0NBQXNCO0tBQ3RCLCtCQUFtQjtBQUNyQixFQUFDLEVBUlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFRbkI7QUFFRCxLQUFZLGVBS1g7QUFMRCxZQUFZLGVBQWU7S0FDekIsb0NBQWlCO0tBQ2pCLG9DQUFpQjtLQUNqQixnQ0FBYTtLQUNiLHNDQUFtQjtBQUNyQixFQUFDLEVBTFcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFLMUI7QUFFRCxLQUFZLFNBS1g7QUFMRCxZQUFZLFNBQVM7S0FDbkIseUNBQTRCO0tBQzVCLDJFQUE4RDtLQUM5RCxnRUFBbUQ7S0FDbkQsbUVBQXNEO0FBQ3hELEVBQUMsRUFMVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUtwQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxnQkFLWDtBQUxELFlBQVksZ0JBQWdCO0tBQzFCLCtCQUFXO0tBQ1gsK0JBQVc7S0FDWCx1Q0FBbUI7S0FDbkIscUNBQWlCO0FBQ25CLEVBQUMsRUFMVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUszQjtBQUVELEtBQVksU0FLWDtBQUxELFlBQVksU0FBUztLQUNuQixvQ0FBdUI7S0FDdkIsNEJBQWU7S0FDZixvQ0FBdUI7S0FDdkIsNEJBQWU7QUFDakIsRUFBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFVBSVg7QUFKRCxZQUFZLFVBQVU7S0FDcEIsdUNBQXlCO0tBQ3pCLDZDQUErQjtLQUMvQixxQ0FBdUI7QUFDekIsRUFBQyxFQUpXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBSXJCOzs7Ozs7Ozs7QUMzQ0QsS0FBaUIsMkJBQTJCLENBWTNDO0FBWkQsWUFBaUIsMkJBQTJCO0tBQzFDO1NBQ0UsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztLQUMzQyxDQUFDO0tBRmUsdURBQTJCLDhCQUUxQztLQUVEO1NBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0tBQ3JFLENBQUM7S0FGZSwwREFBOEIsaUNBRTdDO0tBRUQscUNBQTRDLFVBQTBDO1NBQ3BGLE1BQU0sQ0FBQywwQkFBMEIsR0FBRyxVQUFVLENBQUM7S0FDakQsQ0FBQztLQUZlLHVEQUEyQiw4QkFFMUM7QUFDSCxFQUFDLEVBWmdCLDJCQUEyQixHQUEzQixtQ0FBMkIsS0FBM0IsbUNBQTJCLFFBWTNDOzs7Ozs7Ozs7QUMzQ0QsS0FBWSxjQUVYO0FBRkQsWUFBWSxjQUFjO0tBQ3hCLGlFQUErQztBQUNqRCxFQUFDLEVBRlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFFekI7Ozs7Ozs7OztBQ0ZELEtBQVksV0EwQlg7QUExQkQsWUFBWSxXQUFXO0tBQ3JCLDhDQUErQjtLQUMvQiwyREFBNEM7S0FDNUMseURBQTBDO0tBQzFDLHFDQUFzQjtLQUN0Qix1Q0FBd0I7S0FDeEIsK0NBQWdDO0tBQ2hDLG1EQUFvQztLQUNwQyx3REFBeUM7S0FDekMsbUNBQW9CO0tBQ3BCLDREQUE2QztLQUM3QywyRUFBNEQ7S0FDNUQsaURBQWtDO0tBQ2xDLDZDQUE4QjtLQUM5QixtREFBb0M7S0FFbkMsZ0JBQWdCO0tBQ2pCLHVDQUF3QjtLQUN4Qiw2Q0FBOEI7S0FDOUIsc0RBQXVDO0tBQ3ZDLDJDQUE0QjtLQUM1QixrREFBbUM7S0FDbkMsa0RBQW1DO0tBQ25DLGlFQUFrRDtLQUVsRCwrQ0FBZ0M7QUFDbEMsRUFBQyxFQTFCVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQTBCdEI7Ozs7Ozs7OztBQzFCRCw4RkFBNkY7QUFDN0YsS0FBWSxNQVVYO0FBVkQsWUFBWSxNQUFNO0tBQ2hCLHVEQUE2QztLQUM3QywyQ0FBaUM7S0FDakMsc0NBQTRCO0tBQzVCLCtDQUFxQztLQUNyQyxpREFBdUM7S0FDdkMsbURBQXlDO0tBQ3pDLG9EQUEwQztLQUMxQyxpREFBdUM7S0FDdkMsdURBQTZDO0FBQy9DLEVBQUMsRUFWVyxNQUFNLEdBQU4sY0FBTSxLQUFOLGNBQU0sUUFVakI7Ozs7Ozs7O0FDWEQ7Ozs7SUFJRzs7Ozs7QUFFSCxtQ0FBdUM7QUFFdkMsbUNBQXVDO0FBQ3ZDLG1DQUErQztBQUMvQyxtQ0FBNEM7QUFDNUMsbUNBQXNDO0FBQ3RDLG1DQUEyQztBQUMzQyxtQ0FBK0M7QUFDL0MsbUNBQWtEO0FBQ2xELG1DQUEwQztBQUcxQyxtQ0FBcUQ7QUFDckQsbUNBQTJDO0FBQzNDLG1DQUE4RDs7Ozs7Ozs7O0FDWDlEOzs7SUFHRztBQUNIO0tBR0U7U0FDRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0tBQ2xDLENBQUM7S0FFTSwrQ0FBZ0IsR0FBdkIsVUFBd0IsU0FBMkIsRUFBRSxPQUE4QjtTQUNqRixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTRCLFNBQVcsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FFRCxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3pFLENBQUM7S0FFTSxrREFBbUIsR0FBMUIsVUFBMkIsU0FBMkIsRUFBRSxPQUE4QjtTQUNwRixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQTRCLFNBQVcsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FFRCxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzVFLENBQUM7S0FFUyw4Q0FBZSxHQUF6QixVQUEwQixZQUFnQztTQUN4RCxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFlBQVksQ0FBQztLQUNwRSxDQUFDO0tBQ0gsMkJBQUM7QUFBRCxFQUFDO0FBMUJZLHFEQUFvQjs7Ozs7Ozs7O0FDTmpDO0tBR0UsbUJBQ1UsS0FBc0MsRUFDdEMsUUFBK0IsRUFDL0IsY0FBc0IsRUFDdEIsY0FBdUI7U0FIdkIsVUFBSyxHQUFMLEtBQUssQ0FBaUM7U0FDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBdUI7U0FDL0IsbUJBQWMsR0FBZCxjQUFjLENBQVE7U0FDdEIsbUJBQWMsR0FBZCxjQUFjLENBQVM7U0FDM0IscUNBQXFDO1NBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxHQUFHLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0tBQ2pGLENBQUM7S0FFSCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBTztjQUFsQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0NBQWE7Y0FBeEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM3QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG9DQUFhO2NBQXhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDN0IsQ0FBQzs7O1FBQUE7S0FDSCxnQkFBQztBQUFELEVBQUM7QUEvQlksK0JBQVM7QUFpQ3RCO0tBQ0UsZ0JBQ1UsVUFBa0IsRUFDbEIsU0FBbUIsRUFBRSxvQ0FBb0M7U0FDekQsYUFBc0IsRUFDdEIsTUFBYztTQUhkLGVBQVUsR0FBVixVQUFVLENBQVE7U0FDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtTQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBUztTQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQUcsQ0FBQztLQUU1QixzQkFBVyw2QkFBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNEJBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFZO2NBQXZCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDNUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx5QkFBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBQ0gsYUFBQztBQUFELEVBQUM7QUF0QlkseUJBQU07QUF3Qm5CO0tBQ0UsMkJBQTJCO0tBQzNCLG1CQUNVLE1BQVcsRUFDWCxlQUF1QjtTQUR2QixXQUFNLEdBQU4sTUFBTSxDQUFLO1NBQ1gsb0JBQWUsR0FBZixlQUFlLENBQVE7S0FBRyxDQUFDO0tBRXJDLHNCQUFXLDRCQUFLO2NBQWhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxxQ0FBYztjQUF6QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRUgsZ0JBQUM7QUFBRCxFQUFDO0FBZFksK0JBQVM7Ozs7Ozs7OztBQ2hFdEI7S0FBQTtLQUVBLENBQUM7S0FBRCx3QkFBQztBQUFELEVBQUM7QUFGWSwrQ0FBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBOUIsdURBS3dDO0FBRXhDLHVEQUFnRTtBQUVoRTtLQUF3QyxzQ0FBcUI7S0FDM0QsNEJBQW1CLFNBQTRCO2dCQUM3QyxrQkFBTSx3Q0FBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUM7S0FDekQsQ0FBQztLQUVNLDBDQUFhLEdBQXBCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztLQUNoRCxDQUFDO0tBQ0gseUJBQUM7QUFBRCxFQUFDLENBUnVDLDZDQUFxQixHQVE1RDtBQVJZLGlEQUFrQjs7Ozs7Ozs7QUNUL0I7Ozs7SUFJRzs7Ozs7QUFHSCxtQ0FBd0I7Ozs7Ozs7O0FDUHhCLHVEQUFzRDtBQUN0RCwrQ0FBOEM7O0FBRTlDOztJQUVHO0FBQ0gsS0FBWSxZQUlYO0FBSkQsWUFBWSxZQUFZO0tBQ3RCLG1DQUFtQjtLQUNuQixpQ0FBaUI7S0FDakIsbUNBQW1CO0FBQ3JCLEVBQUMsRUFKVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQUl2QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxTQUlYO0FBSkQsWUFBWSxTQUFTO0tBQ25CLG9DQUF1QjtLQUN2QixnQ0FBbUI7S0FDbkIsZ0NBQW1CO0FBQ3JCLEVBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxtQkFZWDtBQVpELFlBQVksbUJBQW1CO0tBQzdCLHNDQUFlO0tBQ2YsOENBQXVCO0tBQ3ZCLG1EQUE0QjtLQUM1Qiw2REFBc0M7S0FDdEMsaURBQTBCO0tBQzFCLHdDQUFpQjtLQUNqQixzQ0FBZTtLQUNmLG9DQUFhO0tBQ2Isc0NBQWU7S0FDZiwyQ0FBb0I7S0FDcEIsc0NBQWU7QUFDakIsRUFBQyxFQVpXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBWTlCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFFBUVg7QUFSRCxZQUFZLFFBQVE7S0FDbEIsNkJBQWlCO0tBQ2pCLHVCQUFXO0tBQ1gsMkJBQWU7S0FDZix5QkFBYTtLQUNiLHlCQUFhO0tBQ2Isa0NBQXNCO0tBQ3RCLCtCQUFtQjtBQUNyQixFQUFDLEVBUlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFRbkI7QUFFRDs7SUFFRztBQUNILEtBQVksYUFPWDtBQVBELFlBQVksYUFBYTtLQUN2Qiw4QkFBYTtLQUNiLGlDQUFnQjtLQUNoQiw4QkFBYTtLQUNiLGlDQUFnQjtLQUNoQixvQ0FBbUI7S0FDbkIsbUNBQWtCO0FBQ3BCLEVBQUMsRUFQVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQU94QjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxlQUdYO0FBSEQsWUFBWSxlQUFlO0tBQ3pCLG1EQUFnQztLQUNoQywrQ0FBNEI7QUFDOUIsRUFBQyxFQUhXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRzFCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFVBNkRYO0FBN0RELFlBQVksVUFBVTtLQUNwQjs7UUFFRztLQUNILHVEQUF5QztLQUN6Qzs7UUFFRztLQUNILDBEQUE0QztLQUM1Qzs7UUFFRztLQUNILG9FQUFzRDtLQUN0RDs7UUFFRztLQUNILDhDQUFnQztLQUNoQzs7UUFFRztLQUNILDRFQUE4RDtLQUM5RDs7UUFFRztLQUNILDJEQUE2QztLQUM3Qzs7UUFFRztLQUNILDZEQUErQztLQUMvQzs7UUFFRztLQUNILGtFQUFvRDtLQUNwRDs7UUFFRztLQUNILG9FQUFzRDtLQUN0RDs7UUFFRztLQUNILG9EQUFzQztLQUN0Qzs7UUFFRztLQUNILDZEQUErQztLQUMvQzs7UUFFRztLQUNILHdFQUEwRDtLQUMxRDs7UUFFRztLQUNILCtEQUFpRDtLQUNqRDs7UUFFRztLQUNILDhEQUFnRDtLQUNoRDs7UUFFRztLQUNILDZEQUErQztBQUNqRCxFQUFDLEVBN0RXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBNkRyQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxtQkF3Q1g7QUF4Q0QsWUFBWSxtQkFBbUI7S0FDN0Isa0NBQVc7S0FDWCxrQ0FBVztLQUNYLGtDQUFXO0tBQ1gsa0NBQVc7S0FDWCxzQ0FBZTtLQUNmLHdDQUFpQjtLQUNqQixrQ0FBVztLQUNYLG9DQUFhO0tBQ2Isc0NBQWU7S0FDZix3Q0FBaUI7S0FDakIsd0NBQWlCO0tBQ2pCLG9DQUFhO0tBQ2Isb0NBQWE7S0FDYixvQ0FBYTtLQUNiLGtDQUFXO0tBQ1gsc0NBQWU7S0FDZixrQ0FBVztLQUNYLG9DQUFhO0tBQ2Isd0NBQWlCO0tBQ2pCLHdDQUFpQjtLQUNqQixvQ0FBYTtLQUNiLDBDQUFtQjtLQUNuQiwrQ0FBd0I7S0FDeEIsa0NBQVc7S0FDWCxrQ0FBVztLQUNYLCtDQUF3QjtLQUN4Qiw2Q0FBc0I7S0FDdEIsaURBQTBCO0tBQzFCLCtDQUF3QjtLQUN4Qiw2Q0FBc0I7S0FDdEIsK0NBQXdCO0tBQ3hCLG1EQUE0QjtLQUM1QixtREFBNEI7S0FDNUIsd0NBQWlCO0tBQ2pCLHdDQUFpQjtLQUNqQiw0Q0FBcUI7S0FDckIsNENBQXFCO0tBQ3JCLHVDQUFnQjtLQUNoQixvQ0FBYTtBQUNmLEVBQUMsRUF4Q1csbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUF3QzlCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGFBSVg7QUFKRCxZQUFZLGFBQWE7S0FDdkIsd0NBQXVCO0tBQ3ZCLG9DQUFtQjtLQUNuQixvQ0FBbUI7QUFDckIsRUFBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFVBS1g7QUFMRCxZQUFZLFVBQVU7S0FDcEIseUNBQTJCO0tBQzNCLDJDQUE2QjtLQUM3QiwyQ0FBNkI7S0FDN0IsNENBQThCO0FBQ2hDLEVBQUMsRUFMVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUtyQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxnQkFLWDtBQUxELFlBQVksZ0JBQWdCO0tBQzFCLCtCQUFXO0tBQ1gsK0JBQVc7S0FDWCx1Q0FBbUI7S0FDbkIscUNBQWlCO0FBQ25CLEVBQUMsRUFMVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUszQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxVQUlYO0FBSkQsWUFBWSxVQUFVO0tBQ3BCLHdDQUEwQjtLQUMxQiwrQ0FBaUM7S0FDakMsc0NBQXdCO0FBQzFCLEVBQUMsRUFKVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQUlyQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxVQVNYO0FBVEQsWUFBWSxVQUFVO0tBQ3BCLDZCQUFlO0tBQ2YsbUNBQXFCO0tBQ3JCLCtCQUFpQjtLQUNqQiw2QkFBZTtLQUNmLDJCQUFhO0tBQ2IsNkJBQWU7S0FDZixpQ0FBbUI7S0FDbkIsaUNBQW1CO0FBQ3JCLEVBQUMsRUFUVyxVQUFVLEdBQVYsa0JBQVUsS0FBVixrQkFBVSxRQVNyQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxTQUtYO0FBTEQsWUFBWSxTQUFTO0tBQ25CLG9DQUF1QjtLQUN2Qiw0QkFBZTtLQUNmLG9DQUF1QjtLQUN2Qiw2QkFBZ0I7QUFDbEIsRUFBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCO0FBQ0Q7O0lBRUc7QUFDSCxLQUFZLGdCQUdYO0FBSEQsWUFBWSxnQkFBZ0I7S0FDMUIsd0RBQXdEO0tBQ3hELG1FQUErQztBQUNqRCxFQUFDLEVBSFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFHM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuUEQsbURBQXdEO0FBRXhEO0tBQTJDLHlDQUFpQjtLQU8xRCwrQkFBbUIsSUFBc0IsRUFBRSxTQUE0QjtTQUF2RSxZQUNFLGtCQUFNLElBQUksRUFBRSxTQUFTLENBQUMsU0FHdkI7U0FEQyxLQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzs7S0FDOUIsQ0FBQztLQVJELHNCQUFXLDRDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FPSCw0QkFBQztBQUFELEVBQUMsQ0FaMEMscUNBQWlCLEdBWTNEO0FBWlksdURBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRmxDLDhDQUE4QztBQUU5QztLQUF1QyxxQ0FBWTtLQU9qRCwyQkFBbUIsSUFBc0IsRUFBRSxLQUFvQjtTQUEvRCxZQUNFLGtCQUFNLElBQUksQ0FBQyxTQUdaO1NBREMsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7O0tBQ3RCLENBQUM7S0FSRCxzQkFBVyxvQ0FBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBT0gsd0JBQUM7QUFBRCxFQUFDLENBWnNDLDJCQUFZLEdBWWxEO0FBWlksK0NBQWlCOzs7Ozs7Ozs7QUNOOUI7S0FHRSxzQkFBbUIsSUFBc0I7U0FDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7S0FDcEIsQ0FBQztLQUVELHNCQUFXLDhCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUNILG1CQUFDO0FBQUQsRUFBQztBQVZZLHFDQUFZOzs7Ozs7Ozs7QUNFekI7Ozs7SUFJRztBQUNIO0tBSUUsZ0NBQW1CLFNBQTJCO1NBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1NBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0tBQ3JCLENBQUM7S0FFRCxzQkFBVyw2Q0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRU0saURBQWdCLEdBQXZCLFVBQXdCLE9BQXVDO1NBQS9ELGlCQUdDO1NBRkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUIsTUFBTSxDQUFDLGNBQU0sWUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFqQyxDQUFpQyxDQUFDO0tBQ2pELENBQUM7S0FFTSxvREFBbUIsR0FBMUIsVUFBMkIsT0FBdUM7U0FDaEUsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFDLElBQUksUUFBQyxLQUFLLE9BQU8sRUFBYixDQUFhLENBQUMsQ0FBQztTQUN6RCxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQzVDLENBQUM7S0FFTSw2Q0FBWSxHQUFuQixVQUFvQixjQUFnQztTQUNsRCxHQUFHLENBQUMsQ0FBa0IsVUFBYSxFQUFiLFNBQUksQ0FBQyxRQUFRLEVBQWIsY0FBYSxFQUFiLElBQWE7YUFBOUIsSUFBTSxPQUFPO2FBQ2hCLElBQUksQ0FBQztpQkFDSCxJQUFNLFVBQVUsR0FBRyxjQUFjLEVBQUUsQ0FBQztpQkFDcEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3RCLENBQUM7YUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNYLGlHQUFpRztpQkFDakcsUUFBUSxDQUFDO2FBQ1gsQ0FBQztVQUNGO0tBQ0gsQ0FBQztLQUNILDZCQUFDO0FBQUQsRUFBQztBQW5DWSx5REFBc0I7Ozs7Ozs7OztBQ0huQzs7SUFFRztBQUNILEtBQVksV0FHWDtBQUhELFlBQVksV0FBVztLQUNyQixrQ0FBbUI7S0FDbkIsd0NBQXlCO0FBQzNCLEVBQUMsRUFIVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQUd0Qjs7Ozs7Ozs7O0FDVkQsbURBQTZEO0FBQzdELG9EQUErRDtBQUMvRCx5REFBeUU7QUFDekUsaURBQXVEO0FBRXZELG9DQUEwQyxVQUFpQztLQUN6RSxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksdUNBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUNoRixvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUkscUNBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUMvRSxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksaURBQXVCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztLQUNyRiw4QkFBOEI7QUFDaEMsRUFBQztBQUxELCtEQUtDOzs7Ozs7Ozs7QUNaRCx1REFLd0M7QUFDeEMsdURBT3dDO0FBQ3hDLDJDQUEyQztBQUUzQyxnRUFBb0g7QUFLcEg7S0FHRSwyQkFBbUIsVUFBaUM7U0FDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7S0FDL0IsQ0FBQztLQUVELHNCQUFXLDBDQUFXO2NBQXRCO2FBQ0UsTUFBTSwrQkFBcUI7U0FDN0IsQ0FBQzs7O1FBQUE7S0FFTSw0Q0FBZ0IsR0FBdkIsVUFDRSxRQUFrQixFQUNsQixTQUFpQixFQUNqQixNQUFxQixFQUNyQixVQUE0QixFQUM1QixhQUE0QjtTQUMxQixFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFLLENBQUMsZ0JBQWdCLENBQW1CLFVBQVUsRUFBRSx3Q0FBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1RSxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDbEUsQ0FBQztTQUNELElBQU0sSUFBSSxHQUFHLDhCQUFNLENBQUMsc0JBQXNCLENBQUM7U0FDM0MsSUFBTSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUN6QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDNUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzlDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUM5QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUN0RCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxhQUFhLENBQUM7YUFDbkMsQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLGFBQWEsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLEdBQUcsS0FBSyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUM7U0FFbkgsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQVMsa0JBQVE7YUFDcEUsSUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQXNCLENBQUM7YUFDOUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRSxxREFBcUQ7aUJBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9ELENBQUM7YUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVJLGlEQUFxQixHQUE1QixVQUE2QixRQUFrQixFQUFFLFNBQWlCLEVBQUUsYUFBaUM7U0FDbkcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUMzRCxDQUFDO1NBQ0QsaUJBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUVqRSxJQUFNLElBQUksR0FBRyw4QkFBTSxDQUFDLGdCQUFnQixDQUFDO1NBQ3JDLElBQU0sVUFBVSxHQUFzQixFQUFFLENBQUM7U0FFekMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEIsSUFBSSxHQUFHLFNBQWlCLENBQUM7YUFDekIsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxHQUFHLEdBQUcsaUJBQUssQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUQsQ0FBQzthQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNOLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2FBQzFCLENBQUM7YUFDRCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDL0MsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3RCLElBQUksR0FBRyxTQUFpQixDQUFDO2FBQ3pCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDdEMsR0FBRyxHQUFHLGlCQUFLLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFELENBQUM7YUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQzthQUMxQixDQUFDO2FBQ0QsVUFBVSxDQUFDLG1DQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQy9DLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUM3QixFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFLLENBQUMsZ0JBQWdCLENBQWEsYUFBYSxDQUFDLFVBQVUsRUFBRSxrQ0FBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5RSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7YUFDNUQsQ0FBQzthQUNELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsK0RBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5RyxDQUFDO1NBQ0QsVUFBVSxDQUFDLG1DQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzlDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUU1QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBUyxrQkFBUTthQUNwRSxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVNLDRDQUFnQixHQUF2QixVQUF3QixRQUFrQixFQUFFLFNBQWlCO1NBQzNELElBQU0sSUFBSSxHQUFHLDhCQUFNLENBQUMsV0FBVyxDQUFDO1NBQ2hDLElBQUksVUFBVSxHQUFzQixFQUFFLENBQUM7U0FDdkMsVUFBVSxDQUFDLG1DQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzVDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUM5QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBUyxrQkFBUTthQUNwRSxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25CLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUNILHdCQUFDO0FBQUQsRUFBQztBQTNGWSwrQ0FBaUI7Ozs7Ozs7O0FuQnJCOUI7Ozs7SUFJRzs7Ozs7QUFFSCxrQ0FBa0M7QUFDbEMsa0NBQWtEO0FBRWxELGtDQUEwQztBQUMxQyxrQ0FBdUM7QUFDdkMsa0NBQWtDOzs7Ozs7OztBb0JYbEM7Ozs7SUFJRzs7QUFFSCwrQ0FBZ0Q7QUFBdkMsc0RBQWE7QUFDdEIsdUNBQWdDO0FBQXZCLDhCQUFLOzs7Ozs7Ozs7QUNQZDs7O0lBR0c7QUFDSDtLQUNFLHVCQUNVLFFBQWtELEVBQ2xELFVBQTZCO1NBRDdCLGFBQVEsR0FBUixRQUFRLENBQTBDO1NBQ2xELGVBQVUsR0FBVixVQUFVLENBQW1CO0tBQUksQ0FBQztLQUVyQywrQkFBTyxHQUFkLFVBQWUsT0FBb0IsRUFBRSxjQUF3QjtTQUMzRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1NBQzFDLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQztTQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLENBQUM7S0FDdEQsQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQztBQWhCWSx1Q0FBYTs7Ozs7Ozs7O0FDSjFCO0tBQUE7S0F5R0EsQ0FBQztLQXhHQzs7Ozs7OztRQU9HO0tBQ0gsNkJBQTZCO0tBQ2YsaUJBQVcsR0FBekIsVUFBMEIsYUFBa0IsRUFBRSxZQUFvQjtTQUNoRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxZQUFZLENBQUMsQ0FBQztTQUNwRSxDQUFDO0tBQ0gsQ0FBQztLQUVEOzs7Ozs7UUFNRztLQUNXLGtCQUFZLEdBQTFCLFVBQTJCLGFBQXFCLEVBQUUsWUFBb0I7U0FDcEUsRUFBRSxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQzNFLENBQUM7S0FDSCxDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNILDJCQUEyQjtLQUNiLHNCQUFnQixHQUE5QixVQUF5QyxLQUFlLEVBQUUsUUFBYTtTQUNyRSxJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUM7U0FDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPO2FBQ3BDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMzQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2pCLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztTQUNILE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDakIsQ0FBQztLQUNELDBCQUEwQjtLQUUxQjs7O1FBR0c7S0FDVyw4QkFBd0IsR0FBdEMsVUFBdUMsSUFBVTtTQUMvQyxJQUFNLElBQUksR0FBVyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDM0MsSUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM3QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdEMsSUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDLElBQU0sRUFBRSxHQUFXLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7S0FDMUUsQ0FBQztLQUVEOzs7O1FBSUc7S0FDSCwyQkFBMkI7S0FDYiwwQkFBb0IsR0FBbEMsVUFBbUMsR0FBUSxFQUFFLEdBQVE7U0FDckQsMEJBQTBCO1NBQ3hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDL0UsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztTQUNoRyxDQUFDO1NBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1NBQ2hHLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7U0FDL0YsQ0FBQztLQUNILENBQUM7S0FFRDs7UUFFRztLQUNILDJCQUEyQjtLQUNiLGtCQUFZLEdBQTFCLFVBQTJCLEtBQVU7U0FDbkMsTUFBTSxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztLQUMvRCxDQUFDO0tBQ0QsMEJBQTBCO0tBRTFCOztRQUVHO0tBQ0gsMkJBQTJCO0tBQ2IsZ0JBQVUsR0FBeEIsVUFBeUIsS0FBVTtTQUNqQyxNQUFNLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQztLQUMvQixDQUFDO0tBRUgsWUFBQztBQUFELEVBQUM7QUF6R1ksdUJBQUs7Ozs7Ozs7OztBQ0FsQix1REFBa0Y7QUFDbEYsdURBQWtGO0FBRWxGLDJDQUFtRDtBQUVuRCx5RkFBd0Y7QUFDeEY7OztJQUdHO0FBQ0g7S0FBQTtLQU1BLENBQUM7S0FMZSwwQ0FBVyxHQUFHLElBQUkseUJBQWE7U0FDM0MsR0FBQyxrQ0FBa0IsQ0FBQyxTQUFTLElBQUcsa0NBQWtCLENBQUMsU0FBUztTQUM1RCxHQUFDLGtDQUFrQixDQUFDLGFBQWEsSUFBRyxrQ0FBa0IsQ0FBQyxhQUFhO1NBQ3BFLEdBQUMsa0NBQWtCLENBQUMsYUFBYSxJQUFHLGtDQUFrQixDQUFDLFVBQVU7YUFDakUsQ0FBQztLQUNMLHFDQUFDO0VBQUE7QUFOWSx5RUFBOEI7O0FBTzNDLDRCQUEyQjs7Ozs7Ozs7O0FDakIzQix1REFBdUU7QUFDdkUsdURBVXdDO0FBRXhDLCtDQUEwRTtBQUMxRSxnREFBZ0U7QUFHaEU7S0FHRSw0QkFBbUIsVUFBaUM7U0FDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7S0FDL0IsQ0FBQztLQUVELHNCQUFXLDJDQUFXO2NBQXRCO2FBQ0UsTUFBTSxrQ0FBc0I7U0FDOUIsQ0FBQzs7O1FBQUE7S0FFTSxtREFBc0IsR0FBN0IsVUFDRSxRQUFrQixFQUNsQixPQUFvQixFQUNwQixhQUFzQixFQUN0QixlQUF3QixFQUN4QixpQkFBMEIsRUFDMUIsT0FBZTtTQU5qQixpQkFvQkc7U0FiQywrQkFBK0I7U0FDL0IsSUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLDRCQUFXLENBQUMsT0FBTyxHQUFHLDhCQUFNLENBQUMsa0JBQWtCLEdBQUcsOEJBQU0sQ0FBQyxpQkFBaUIsQ0FBQztTQUNwRyxJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUM1QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxhQUFhLENBQUM7U0FDdEQsVUFBVSxDQUFDLG1DQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsZUFBZSxDQUFDO1NBQzFELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsaUJBQWlCLENBQUM7U0FDOUQsVUFBVSxDQUFDLG1DQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO1NBRTFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFZLGtCQUFRO2FBQ3ZFLElBQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUE2QixDQUFDO2FBQzVELE1BQU0sQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDN0UsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRUksa0RBQXFCLEdBQTVCLFVBQTZCLFFBQWtCO1NBQS9DLGlCQVFDO1NBUEMsSUFBTSxVQUFVLGFBQXdCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFFLENBQUM7U0FDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFjLGtCQUFRO2FBQzVGLElBQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUE0QixDQUFDO2FBQzNELE1BQU0sQ0FBQztpQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBSyxJQUFJLFlBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQXJDLENBQXFDLENBQUM7Y0FDNUUsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFTSxxREFBd0IsR0FBL0IsVUFBZ0MsUUFBa0I7U0FBbEQsaUJBUUM7U0FQQyxJQUFNLFVBQVUsYUFBd0IsR0FBQyxtQ0FBVyxDQUFDLFFBQVEsSUFBRyxRQUFRLEtBQUUsQ0FBQztTQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQWMsa0JBQVE7YUFDL0YsSUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQStCLENBQUM7YUFDOUQsTUFBTSxDQUFDO2lCQUNMLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFLLElBQUksWUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBckMsQ0FBcUMsQ0FBQztjQUM1RSxDQUFDO1NBQ0osQ0FBQyxDQUFDLENBQUM7O0tBQ0wsQ0FBQztLQUVTLGdEQUFtQixHQUE3QixVQUE4QixZQUF1QyxFQUFFLFNBQWtCO1NBQ3ZGLElBQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQUMsSUFBSSxXQUFJLHNCQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxnQ0FBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQW5GLENBQW1GLENBQUMsQ0FBQztTQUNuSSxJQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFHO2FBQzFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQUk7aUJBQ2pCLE1BQU0sQ0FBQyxJQUFJLHlCQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDeEQsQ0FBQyxDQUFDLENBQUM7U0FDTCxDQUFDLENBQUMsQ0FBQztTQUVILE1BQU0sQ0FBQyxJQUFJLHlCQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ2hFLENBQUM7S0FDSCx5QkFBQztBQUFELEVBQUM7QUEvRFksaURBQWtCOzs7Ozs7Ozs7QUNaL0I7S0FDRSxzQkFDVSxRQUErQyxFQUMvQyxVQUE4QztTQUQ5QyxhQUFRLEdBQVIsUUFBUSxDQUF1QztTQUMvQyxlQUFVLEdBQVYsVUFBVSxDQUFvQztTQUNwRCxlQUFlO0tBQ25CLENBQUM7S0FFTSxxQ0FBYyxHQUFyQixVQUFzQixpQkFBd0I7U0FDNUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDckMsQ0FBQztLQUNILENBQUM7S0FDSCxtQkFBQztBQUFELEVBQUM7QUFFRDtLQUdFLGlDQUEyQixVQUFpQztTQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtTQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztTQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDOUUsQ0FBQztLQUVELHNCQUFXLGdEQUFXO2NBQXRCO2FBQ0UsTUFBTSwyQ0FBMkI7U0FDbkMsQ0FBQzs7O1FBQUE7S0FFTSxpREFBZSxHQUF0QixVQUF1QixFQUFrQixFQUFFLFFBQW1DLEVBQUUsT0FBK0I7U0FBL0csaUJBTUM7U0FMQyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFnQixDQUFDO1NBQ2hFLElBQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQzdCLE1BQU0sQ0FBQyxjQUFNLFlBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQXpDLENBQXlDLENBQUM7S0FDekQsQ0FBQztLQUVPLGdFQUE4QixHQUF0QyxVQUF1QyxFQUFrQjtTQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDMUMsQ0FBQztLQUVPLGdEQUFjLEdBQXRCLFVBQXVCLFlBQTBCO1NBQy9DLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEUsTUFBTSxDQUFDO1NBQ1QsQ0FBQztTQUVELDRFQUE0RTtTQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBQyxJQUFJLFFBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFuQyxDQUFtQyxDQUFDLENBQUM7S0FDL0YsQ0FBQztLQUVPLG9EQUFrQixHQUExQixVQUEyQixFQUFrQixFQUFFLFlBQTBCO1NBQ3ZFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QyxNQUFNLENBQUM7U0FDVCxDQUFDO1NBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFHLElBQUksVUFBRyxLQUFLLFlBQVksRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDO0tBQzVFLENBQUM7S0FDSCw4QkFBQztBQUFELEVBQUM7QUF4Q1ksMkRBQXVCOzs7Ozs7Ozs7QUMyQnBDO0tBR0U7U0FDRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztLQUNyQixDQUFDO0tBRU0sNkNBQWUsR0FBdEIsVUFBdUIsT0FBbUI7U0FDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9DLENBQUM7S0FFTSx3Q0FBVSxHQUFqQixVQUF3QyxXQUFtQjtTQUN6RCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFjLFdBQVcsbUJBQWdCLENBQUMsQ0FBQztTQUM3RCxDQUFDO1NBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFNLENBQUM7S0FDekMsQ0FBQztLQUNILDBCQUFDO0FBQUQsRUFBQztBQUVEOzs7SUFHRztBQUNIO0tBeUJFLDRDQUE0QztLQUM1QztLQUF1QixDQUFDO0tBdEJ4QixzQkFBa0IsOEJBQVE7U0FIMUI7O1lBRUc7Y0FDSDthQUNFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztpQkFDeEMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO2FBQzVELENBQUM7YUFFRCxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7aUJBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQzthQUN2RCxDQUFDO2FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQztTQUM1QyxDQUFDOzs7UUFBQTtLQUVEOzs7O1FBSUc7S0FDVyw4QkFBVyxHQUF6QixVQUEwQixlQUFpQztTQUN6RCxNQUFNLENBQUMsMkJBQTJCLEdBQUcsZUFBZSxDQUFDO0tBQ3ZELENBQUM7S0FJSCx5QkFBQztBQUFELEVBQUM7QUEzQlksaURBQWtCOzs7Ozs7Ozs7QUN0RS9CLHVEQU93QztBQUN4Qyx1REFPd0M7QUFFeEMsMkNBQW1EO0FBRW5ELHlGQUF3RjtBQUN4Rjs7O0lBR0c7QUFDSDtLQUFBO0tBK0NBLENBQUM7S0E5Q2UsMkNBQVksR0FBRyxJQUFJLHlCQUFhO1NBQzVDLEdBQUMsb0NBQW9CLENBQUMsT0FBTyxJQUFHLG9DQUFvQixDQUFDLE9BQU87U0FDNUQsR0FBQyxvQ0FBb0IsQ0FBQyxNQUFNLElBQUcsb0NBQW9CLENBQUMsTUFBTTtTQUMxRCxHQUFDLG9DQUFvQixDQUFDLE9BQU8sSUFBRyxvQ0FBb0IsQ0FBQyxPQUFPO2FBQzVELENBQUM7S0FFVyx3Q0FBUyxHQUFHLElBQUkseUJBQWE7U0FDekMsR0FBQyxpQ0FBaUIsQ0FBQyxTQUFTLElBQUcsaUNBQWlCLENBQUMsU0FBUztTQUMxRCxHQUFDLGlDQUFpQixDQUFDLE9BQU8sSUFBRyxpQ0FBaUIsQ0FBQyxPQUFPO1NBQ3RELEdBQUMsaUNBQWlCLENBQUMsT0FBTyxJQUFHLGlDQUFpQixDQUFDLE9BQU87YUFDdEQsQ0FBQztLQUVXLHdDQUFTLEdBQUcsSUFBSSx5QkFBYTtTQUN6QyxHQUFDLGlDQUFpQixDQUFDLFNBQVMsSUFBRyxpQ0FBaUIsQ0FBQyxTQUFTO1NBQzFELEdBQUMsaUNBQWlCLENBQUMsS0FBSyxJQUFHLGlDQUFpQixDQUFDLEtBQUs7U0FDbEQsR0FBQyxpQ0FBaUIsQ0FBQyxTQUFTLElBQUcsaUNBQWlCLENBQUMsU0FBUzthQUMxRCxDQUFDO0tBRVcsa0RBQW1CLEdBQUcsSUFBSSx5QkFBYTtTQUNuRCxHQUFDLDJDQUEyQixDQUFDLEtBQUssSUFBRywyQ0FBMkIsQ0FBQyxLQUFLO1NBQ3RFLEdBQUMsMkNBQTJCLENBQUMsS0FBSyxJQUFHLDJDQUEyQixDQUFDLEtBQUs7U0FDdEUsR0FBQywyQ0FBMkIsQ0FBQyxNQUFNLElBQUcsMkNBQTJCLENBQUMsTUFBTTtTQUN4RSxHQUFDLDJDQUEyQixDQUFDLFVBQVUsSUFBRywyQ0FBMkIsQ0FBQyxVQUFVO1NBQ2hGLEdBQUMsMkNBQTJCLENBQUMsZ0JBQWdCLElBQUcsMkNBQTJCLENBQUMsZ0JBQWdCO1NBQzVGLEdBQUMsMkNBQTJCLENBQUMsV0FBVyxJQUFHLDJDQUEyQixDQUFDLFdBQVc7U0FDbEYsR0FBQywyQ0FBMkIsQ0FBQyxJQUFJLElBQUcsMkNBQTJCLENBQUMsSUFBSTtTQUNwRSxHQUFDLDJDQUEyQixDQUFDLEtBQUssSUFBRywyQ0FBMkIsQ0FBQyxLQUFLO1NBQ3RFLEdBQUMsMkNBQTJCLENBQUMsT0FBTyxJQUFHLDJDQUEyQixDQUFDLE9BQU87U0FDMUUsR0FBQywyQ0FBMkIsQ0FBQyxTQUFTLElBQUcsMkNBQTJCLENBQUMsU0FBUzthQUM5RSxDQUFDO0tBRVcsdUNBQVEsR0FBRyxJQUFJLHlCQUFhO1NBQ3hDLEdBQUMsZ0NBQWdCLENBQUMsSUFBSSxJQUFHLGdDQUFnQixDQUFDLElBQUk7U0FDOUMsR0FBQyxnQ0FBZ0IsQ0FBQyxJQUFJLElBQUcsZ0NBQWdCLENBQUMsSUFBSTtTQUM5QyxHQUFDLGdDQUFnQixDQUFDLFFBQVEsSUFBRyxnQ0FBZ0IsQ0FBQyxRQUFRO1NBQ3RELEdBQUMsZ0NBQWdCLENBQUMsS0FBSyxJQUFHLGdDQUFnQixDQUFDLEtBQUs7U0FDaEQsR0FBQyxnQ0FBZ0IsQ0FBQyxHQUFHLElBQUcsZ0NBQWdCLENBQUMsR0FBRztTQUM1QyxHQUFDLGdDQUFnQixDQUFDLE1BQU0sSUFBRyxnQ0FBZ0IsQ0FBQyxNQUFNO2FBQ2xELENBQUM7S0FFVywrQ0FBZ0IsR0FBRyxJQUFJLHlCQUFhO1NBQ2hELEdBQUMsd0NBQXdCLENBQUMsR0FBRyxJQUFHLHdDQUF3QixDQUFDLEdBQUc7U0FDNUQsR0FBQyx3Q0FBd0IsQ0FBQyxHQUFHLElBQUcsd0NBQXdCLENBQUMsR0FBRztTQUM1RCxHQUFDLHdDQUF3QixDQUFDLE1BQU0sSUFBRyx3Q0FBd0IsQ0FBQyxNQUFNO1NBQ2xFLEdBQUMsd0NBQXdCLENBQUMsT0FBTyxJQUFHLHdDQUF3QixDQUFDLE9BQU87YUFDcEUsQ0FBQztLQUNMLHFDQUFDO0VBQUE7QUEvQ1kseUVBQThCOztBQWdEM0MsNEJBQTJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckUzQix1Q0FBZ0M7QUFHaEM7S0FBK0IsNkJBQUs7S0FDbEMsbUJBQTJCLGFBQTRCO1NBQXZELFlBQ0Usa0JBQU0sYUFBYSxDQUFDLFNBQ3JCO1NBRjBCLG1CQUFhLEdBQWIsYUFBYSxDQUFlOztLQUV2RCxDQUFDO0tBRUQsc0JBQVcsaUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7U0FDdkMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBTztjQUFsQjthQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNsRCxDQUFDOzs7UUFBQTtLQUNILGdCQUFDO0FBQUQsRUFBQyxDQVo4QixhQUFLLEdBWW5DO0FBWlksK0JBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMdEIsMkNBQTJEO0FBSTNEO0tBQTJCLHlCQUFvQjtLQUM3QyxlQUEyQixTQUFvQjtTQUEvQyxZQUNFLGlCQUFPLFNBQ1I7U0FGMEIsZUFBUyxHQUFULFNBQVMsQ0FBVzs7S0FFL0MsQ0FBQztLQUVELHNCQUFXLHVCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDN0IsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw0QkFBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNsQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHVCQUFJO2NBQWY7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbEQsQ0FBQzs7O1FBQUE7S0FDSCxZQUFDO0FBQUQsRUFBQyxDQWhCMEIsaUNBQW9CLEdBZ0I5QztBQWhCWSx1QkFBSzs7Ozs7Ozs7O0FDRGxCOzs7O0lBSUc7QUFDSDtLQUNFLDBCQUEyQixVQUFxQjtTQUFyQixlQUFVLEdBQVYsVUFBVSxDQUFXO0tBQUksQ0FBQztLQUVyRCxzQkFBVyx1Q0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBQ0gsdUJBQUM7QUFBRCxFQUFDO0FBTlksNkNBQWdCOzs7Ozs7Ozs7QUNIN0IsMkNBQXFGO0FBRXJGOzs7O0lBSUc7QUFDSDtLQVNFLHFCQUFtQixnQkFBa0M7U0FDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7U0FDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7U0FDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7U0FDNUMsSUFBSSxDQUFDLEtBQUssR0FBRywyQ0FBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztLQUN6RCxDQUFDO0tBRUQsc0JBQVcsbUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFPO2NBQWxCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxpQ0FBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQU07Y0FBakI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN0QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDZCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHdDQUFlO2NBQTFCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHVDQUFjO2NBQXpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDOUIsQ0FBQzs7O1FBQUE7S0FDSCxrQkFBQztBQUFELEVBQUM7QUE5Q1ksbUNBQVc7Ozs7Ozs7OztBQ1J4Qjs7SUFFRztBQUNIO0tBQ0Usa0JBQTJCLFlBQTBCO1NBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0tBQUksQ0FBQztLQUVuRCx3QkFBSyxHQUFaLFVBQWEsR0FBVztTQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvQixDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVc7U0FDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDLENBQUM7S0FFTSx5QkFBTSxHQUFiO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDcEMsQ0FBQztLQUVELHNCQUFXLGdDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQ3RDLENBQUM7OztRQUFBO0tBRU0sNEJBQVMsR0FBaEI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUN2QyxDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVcsRUFBRSxLQUFhO1NBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNwQyxDQUFDO0tBQ0gsZUFBQztBQUFELEVBQUM7QUExQlksNkJBQVE7Ozs7Ozs7OztBQ1ByQiwyQ0FBeUQ7QUFFekQsMkRBQTZFO0FBQzdFLHFEQUFrRTtBQUVsRSxtQ0FBeUMsVUFBaUM7S0FDeEUsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHFEQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDdkYsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHlDQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBQztBQUhELDZEQUdDOzs7Ozs7Ozs7QUNURCxzREFBbUc7QUFLbkc7S0FDRSxtQ0FBMkIsVUFBaUM7U0FBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7S0FBSSxDQUFDO0tBRWpFLHNCQUFXLGtEQUFXO2NBQXRCO2FBQ0UsTUFBTSxxREFBeUM7U0FDakQsQ0FBQzs7O1FBQUE7S0FFTSxpRUFBNkIsR0FBcEM7U0FDRSxnR0FBZ0c7U0FDaEcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBcUIsa0JBQVE7YUFDMUYsK0JBQStCO2FBRS9CLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUE0QixDQUFDO2FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsZ0NBQUM7QUFBRCxFQUFDO0FBaEJZLCtEQUF5Qjs7Ozs7Ozs7O0FDTHRDLHNEQU13QztBQUt4QztLQUNFLDZCQUEyQixVQUFpQztTQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtLQUFJLENBQUM7S0FFakUsc0JBQVcsNENBQVc7Y0FBdEI7YUFDRSxNQUFNLHlDQUFtQztTQUMzQyxDQUFDOzs7UUFBQTtLQUVNLCtDQUFpQixHQUF4QixVQUF5QixRQUE0QjtTQUNuRCxJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUVsRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQXFCLGVBQUs7YUFDakcsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTJCLENBQUM7YUFFakQsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQ3JELENBQUM7YUFFRCxNQUFNLEVBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUNILDBCQUFDO0FBQUQsRUFBQztBQXJCWSxtREFBbUI7Ozs7Ozs7OztBQ1BoQzs7SUFFRztBQUNIO0tBZ0JFLDhEQUE4RDtLQUM5RCx1QkFBb0IsYUFBcUI7U0FDdkMsSUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBQyxJQUFJLGVBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQWYsQ0FBZSxDQUFDLENBQUM7U0FDakUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsYUFBYSxDQUFDLENBQUM7U0FDOUQsQ0FBQztTQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7S0FsQkQsc0JBQWtCLHlCQUFRO1NBSDFCOztZQUVHO2NBQ0g7YUFDRSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUNoQyxDQUFDOzs7UUFBQTtLQWtCRCxzQkFBVyxnQ0FBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsZ0NBQUs7Y0FBaEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNyQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDhCQUFHO2NBQWQ7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNuQixDQUFDOzs7UUFBQTtLQXBDRCwwR0FBMEc7S0FDM0Ysc0JBQVEsR0FBa0IsSUFBSSxhQUFhLENBQUMsU0FBd0IsQ0FBQyxDQUFDO0tBb0N2RixvQkFBQztFQUFBO0FBdkNZLHVDQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUDFCLHVEQUEyRDtBQUMzRCxzREFLd0M7QUFFeEMsb0RBQTBEO0FBQzFELDJDQUF3QztBQUN4QywrQ0FBZ0Q7QUFFaEQsMkNBQXlDO0FBRXpDO0tBQW1DLGlDQUFTO0tBRzFDLHVCQUFtQixJQUF3QixFQUFFLFNBQW9CO1NBQWpFLFlBQ0Usa0JBQU0sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGlDQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FtQjlEO1NBbEJDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztTQUUxQyw4REFBOEQ7U0FDOUQsR0FBRyxDQUFDLENBQWUsVUFBVSxFQUFWLFNBQUksQ0FBQyxLQUFLLEVBQVYsY0FBVSxFQUFWLElBQVU7YUFBeEIsSUFBTSxJQUFJO2FBQ2IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSywyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUNwRCxJQUFNLFNBQVMsR0FBRyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsaUNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekUsSUFBTSxLQUFLLEdBQWE7cUJBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSTtxQkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO3FCQUNwQixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7cUJBQ2hDLGVBQWUsRUFBRSxTQUFTLENBQUMsZUFBZTtxQkFDMUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZO2tCQUNyQyxDQUFDO2lCQUVGLElBQU0sYUFBYSxHQUFHLElBQUksNkJBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzFELEtBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUkscUJBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ3RELENBQUM7VUFDRjs7S0FDSCxDQUFDO0tBRUQsc0JBQVcscUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUNILG9CQUFDO0FBQUQsRUFBQyxDQTVCa0MscUJBQVMsR0E0QjNDO0FBNUJZLHVDQUFhOzs7Ozs7OztBMUJkMUI7Ozs7SUFJRzs7Ozs7QUFHSCxtQ0FBd0I7Ozs7Ozs7OztBMkJMeEI7S0FDRSw0QkFDVSxLQUFhLEVBQ2IsVUFBcUI7U0FEckIsVUFBSyxHQUFMLEtBQUssQ0FBUTtTQUNiLGVBQVUsR0FBVixVQUFVLENBQVc7S0FBSSxDQUFDO0tBRXBDLHNCQUFXLG9DQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHlDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FDSCx5QkFBQztBQUFELEVBQUM7QUFaWSxpREFBa0I7Ozs7Ozs7OztBQ0UvQjtLQUlFLG1CQUFtQixhQUFpQztTQUNsRCxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7U0FDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0tBQzVDLENBQUM7S0FFRCxzQkFBSSwyQkFBSTtjQUFSO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBSSxnQ0FBUztjQUFiO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FDSCxnQkFBQztBQUFELEVBQUM7QUFoQlksK0JBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKdEIsdURBU3dDO0FBQ3hDLHNEQUEwRTtBQUMxRSwyQ0FVNkI7QUFJN0IsMkNBQXdDO0FBRXhDLEtBQU0saUJBQWlCLEdBQUcsVUFBUyxDQUFXLEVBQUUsQ0FBVztLQUN6RCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDWCxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVM7U0FDM0IsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxZQUFZO1NBQ2pDLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQztBQUM1QyxFQUFDLENBQUM7QUFFRjtLQUFtQyxpQ0FBUztLQUMxQyx1QkFBbUIsYUFBaUMsRUFBVSxTQUFtQjtTQUFqRixZQUNFLGtCQUFNLGFBQWEsQ0FBQyxTQUNyQjtTQUY2RCxlQUFTLEdBQVQsU0FBUyxDQUFVOztLQUVqRixDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNJLHdDQUFnQixHQUF2QixVQUF3QixTQUFvQjtTQUE1QyxpQkF5QkM7U0F4QkMsSUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7U0FDaEQsSUFBSSxtQkFBd0MsQ0FBQztTQUU3QyxJQUFJLENBQUM7YUFDSCxtQkFBbUIsR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwyQ0FBZ0QsQ0FBQztTQUMvRyxDQUFDO1NBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYLHdEQUF3RDthQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2pCLENBQUM7U0FFRCw0RUFBNEU7U0FDNUUsSUFBTSxVQUFVLEdBQUcsSUFBSSxtQ0FBc0IsQ0FBcUIsd0NBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN6RyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsc0NBQWMsQ0FBQyxvQkFBb0IsRUFBRSxVQUFDLEtBQUs7YUFDN0UsSUFBTSxRQUFRLEdBQUcsS0FBaUIsQ0FBQzthQUNuQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwRCxDQUFDLEVBQUUsVUFBQyxHQUFhO2FBQ2YsVUFBVSxDQUFDLFlBQVksQ0FBQyxjQUFNLFdBQUksK0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQWpDLENBQWlDLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUMsQ0FBQztTQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FFekIsMkJBQTJCO1NBRTNCLE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDakIsQ0FBQztLQUVELHNCQUFXLG1DQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDeEIsQ0FBQzs7O1FBQUE7S0FFTSx3Q0FBZ0IsR0FBdkIsVUFDRSxTQUFpQixFQUFFLE1BQXFCLEVBQUUsVUFBNEIsRUFBRSxPQUFzQjtTQUM1RixJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekYsQ0FBQztLQUVJLDZDQUFxQixHQUE1QixVQUE2QixTQUFpQixFQUFFLGFBQWlDO1NBQy9FLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLCtCQUFvQyxDQUFDO1NBQzNGLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDaEYsQ0FBQztLQUVNLHdDQUFnQixHQUF2QixVQUF3QixTQUFpQjtTQUN2QyxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDNUQsQ0FBQztLQUVNLDZDQUFxQixHQUE1QjtTQUNFLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLGtDQUFzQyxDQUFDO1NBQzdGLE1BQU0sQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3RELENBQUM7S0FFTSxnREFBd0IsR0FBL0I7U0FDRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxrQ0FBc0MsQ0FBQztTQUM3RixNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6RCxDQUFDO0tBRU0sMkNBQW1CLEdBQTFCLFVBQTJCLE9BQThCO1NBQ3ZELElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLGtDQUFzQyxDQUFDO1NBQzdGLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1NBRXhCLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsd0JBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ25HLENBQUM7S0FFSSw4Q0FBc0IsR0FBN0IsVUFBOEIsT0FBaUM7U0FDN0QsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsa0NBQXNDLENBQUM7U0FDN0YsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FDbkMsSUFBSSxDQUFDLFFBQVEsRUFDYix3QkFBVyxDQUFDLFVBQVUsRUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQ3ZCLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUMzQixPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzFCLENBQUM7S0FDSCxvQkFBQztBQUFELEVBQUMsQ0F6RmtDLHFCQUFTLEdBeUYzQztBQXpGWSx1Q0FBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZCMUIsdUNBQWdDO0FBSWhDO0tBQStCLDZCQUFLO0tBR2xDLG1CQUFtQixhQUE0QjtTQUEvQyxZQUNFLGtCQUFNLGFBQWEsQ0FBQyxTQUtyQjtTQUpDLEtBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1NBRW5DLDhGQUE4RjtTQUM5RixLQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEtBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFDLElBQUksWUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDOztLQUNsRixDQUFDO0tBRUQsc0JBQVcsc0NBQWU7Y0FBMUI7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbEQsQ0FBQzs7O1FBQUE7S0FFTSxvQ0FBZ0IsR0FBdkIsVUFDRSxTQUFpQixFQUFFLE1BQXFCLEVBQUUsVUFBNEIsRUFBRSxPQUFzQjtTQUM1RixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN2RixDQUFDO0tBRU0seUNBQXFCLEdBQTVCLFVBQTZCLFNBQWlCLEVBQUUsYUFBaUM7U0FDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQzVFLENBQUM7S0FFTSxvQ0FBZ0IsR0FBdkIsVUFBd0IsU0FBaUI7U0FDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDeEQsQ0FBQztLQUVNLG1DQUFlLEdBQXRCO1NBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0tBQ2xELENBQUM7S0FFTSx5Q0FBcUIsR0FBNUI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0tBQ3BELENBQUM7S0FFTSw0Q0FBd0IsR0FBL0I7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0tBQ3ZELENBQUM7S0FFTSx1Q0FBbUIsR0FBMUIsVUFBMkIsT0FBOEI7U0FDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDekQsQ0FBQztLQUVNLDBDQUFzQixHQUE3QixVQUE4QixPQUFpQztTQUM3RCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM1RCxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDLENBL0M4QixhQUFLLEdBK0NuQztBQS9DWSwrQkFBUzs7Ozs7Ozs7O0FDaEJ0QiwyQ0FBeUQ7QUFDekQsMkNBQTJDO0FBSzNDO0tBUUUsc0JBQW1CLFlBQStCO1NBSmxELHVFQUF1RTtTQUN2RSxvRkFBb0Y7U0FDNUUsbUJBQWMsR0FBWSxLQUFLLENBQUM7U0FHdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQ3hDLENBQUM7S0FFTSw0QkFBSyxHQUFaLFVBQWEsR0FBVztTQUN0QixpQkFBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FFOUIsc0RBQXNEO1NBQ3RELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2FBRWpDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQixDQUFDO0tBQ0gsQ0FBQztLQUVNLDBCQUFHLEdBQVYsVUFBVyxHQUFXO1NBQ3BCLGlCQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNuQyxDQUFDO0tBRU0sNkJBQU0sR0FBYjtTQUNFLHlDQUF5QztTQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2pELENBQUM7S0FFRCxzQkFBVyxvQ0FBVTtjQUFyQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFCLENBQUM7OztRQUFBO0tBRU0sZ0NBQVMsR0FBaEI7U0FBQSxpQkFvQkM7U0FuQkMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FFakMscURBQXFEO1NBQ3JELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQXFCLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNuRSxDQUFDO1NBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FFM0IsbURBQW1EO1NBQ25ELElBQU0sZUFBZSxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHlDQUMxQixDQUFDO1NBRXJDLE1BQU0sQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBcUIscUJBQVc7YUFDakcsS0FBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7YUFDNUIsS0FBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQ2pELE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDckIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU0sMEJBQUcsR0FBVixVQUFXLEdBQVcsRUFBRSxLQUFhO1NBQ25DLGlCQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztTQUNuRSxpQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQ0FBaUM7U0FDckUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FFakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7S0FDMUIsQ0FBQztLQUVPLHlDQUFrQixHQUExQixVQUEyQixZQUErQjtTQUN4RCxpQkFBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDaEQsaUJBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1NBRTlFLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztTQUVuRCw0QkFBNEI7U0FDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7S0FDM0IsQ0FBQztLQUVEOzs7UUFHRztLQUNLLGdEQUF5QixHQUFqQztTQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztTQUNsRixDQUFDO0tBQ0gsQ0FBQztLQUNILG1CQUFDO0FBQUQsRUFBQztBQXhGWSxxQ0FBWTs7Ozs7Ozs7QXRCUHpCOzs7O0lBSUc7O0FBRUgsK0NBQWdEO0FBQXZDLHNEQUFhO0FBQ3RCLHVDQUFnQztBQUF2Qiw4QkFBSyIsImZpbGUiOiJAdGFibGVhdS9hZGRpbi1hcGkuMC4yLjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0YWJsZWF1XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRhYmxlYXVcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiBcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svYm9vdHN0cmFwIGFkZmE5OTJjOWRhNTUxZWU5NGZiXG4gKiovIiwiLyoqXHJcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXHJcbiAqXHJcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cclxuICovXHJcblxyXG4vLyBEdWUgdG8gdGhlIHdheSB3ZSBjb25maWd1cmVkIHdlYnBhY2ssIHdlIHNob3VsZCBiZSBleHBvcnRpbmcgdGhpbmdzIHdoaWNoIHdpbGwgYmUgdW5kZXJcclxuLy8gYSBnbG9iYWwgdmFyaWFibGUgY2FsbGVkIFwidGFibGVhdVwiLiBFeHBvcnQgZXZlcnl0aGluZyB3ZSB3YW50IHRvIGJlIHZpc2libGUgdW5kZXIgdGFibGVhdVxyXG4vLyBmcm9tIHRoaXMgZmlsZS5cclxuXHJcbmltcG9ydCB7IEFkZEluIH0gZnJvbSAnLi9FeHRlcm5hbE5hbWVzcGFjZXMvQWRkSW4nO1xyXG5pbXBvcnQgeyBBZGRJbkltcGwgfSBmcm9tICcuL0ludGVybmFsL0FkZEluSW1wbCc7XHJcblxyXG5jb25zdCBhZGRJbkltcGwgPSBuZXcgQWRkSW5JbXBsKCk7XHJcbmV4cG9ydCBjb25zdCBhZGRJbiA9IG5ldyBBZGRJbihhZGRJbkltcGwpO1xyXG5cclxuLy8gRXhwb3J0IEVudW1zXHJcbmV4cG9ydCB7XHJcbiAgRmlsdGVyVXBkYXRlVHlwZSxcclxuICBOdWxsT3B0aW9uXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0FkZEluQXBpLnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBBZGRJbiBhcyBBZGRJbkNvbnRyYWN0LFxyXG4gIERhc2hib2FyZENvbnRlbnQsXHJcbiAgRW52aXJvbm1lbnQsXHJcbiAgU2V0dGluZ3MsXHJcbiAgVUlcclxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5JbXBsIH0gZnJvbSAnLi4vSW50ZXJuYWwvQWRkSW5JbXBsJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgQWRkSW4gbmFtZXNwYWNlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFkZEluIGltcGxlbWVudHMgQWRkSW5Db250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgYWRkSW5JbXBsOiBBZGRJbkltcGwpIHtcclxuICAgIHRoaXMuYWRkSW5JbXBsID0gYWRkSW5JbXBsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXNoYm9hcmRDb250ZW50KCk6IERhc2hib2FyZENvbnRlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLmRhc2hib2FyZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50KCk6IEVudmlyb25tZW50IHtcclxuICAgIHJldHVybiB0aGlzLmFkZEluSW1wbC5lbnZpcm9ubWVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogU2V0dGluZ3Mge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLnNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1aSgpOiBVSSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRJbkltcGwuaW5pdGlhbGl6ZUFzeW5jKCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9FeHRlcm5hbE5hbWVzcGFjZXMvQWRkSW4udHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEFkZEluRGFzaGJvYXJkSW5mbyxcclxuICBBZGRJblNldHRpbmdzSW5mbyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLFxyXG4gIFNoZWV0UGF0aCxcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IERhc2hib2FyZCB9IGZyb20gJy4uL0Rhc2hib2FyZCc7XHJcbmltcG9ydCB7IERhc2hib2FyZENvbnRlbnQgfSBmcm9tICcuLi9FeHRlcm5hbE5hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuLi9FeHRlcm5hbE5hbWVzcGFjZXMvU2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBBZGRJblNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VzL0FkZEluU2VydmljZU5hbWVzJztcclxuaW1wb3J0IHsgSW5pdGlhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvSW5pdGlhbGl6YXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgcmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzIH0gZnJvbSAnLi4vU2VydmljZXMvUmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzJztcclxuaW1wb3J0IHsgVmVyc2lvbk51bWJlciB9IGZyb20gJy4uL1ZlcnNpb25OdW1iZXInO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRJbXBsIH0gZnJvbSAnLi9EYXNoYm9hcmRJbXBsJztcclxuaW1wb3J0IHsgU2V0dGluZ3NJbXBsIH0gZnJvbSAnLi9TZXR0aW5nc0ltcGwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkZEluSW1wbCB7XHJcbiAgcHJpdmF0ZSBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIHB1YmxpYyBkYXNoYm9hcmRDb250ZW50OiBEYXNoYm9hcmRDb250ZW50O1xyXG4gIHB1YmxpYyBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XHJcbiAgcHVibGljIHNldHRpbmdzOiBTZXR0aW5ncztcclxuXHJcbiAgcHVibGljIGluaXRpYWxpemVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pbml0aWFsaXphdGlvblByb21pc2UpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXphdGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgLy8gRmlyc3QgdGhpbmcgd2Ugd2FudCB0byBkbyBpcyBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBkZXNrdG9wIGRpc3BhdGNoZXIgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB1c1xyXG4gICAgICAgIGlmIChJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuaGFzRGVza3RvcEFwaURpc3BhdGNoZXJQcm9taXNlKCkpIHtcclxuICAgICAgICAgIC8vIFJ1bm5pbmcgaW4gZGVza3RvcCwgdXNlIHRoaXMgcHJvbWlzZVxyXG4gICAgICAgICAgY29uc3QgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlID0gSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xyXG4gICAgICAgICAgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlLnRoZW4odGhpcy5vbkRpc3BhdGNoZXJSZWNlaXZlZC5iaW5kKHRoaXMpKS50aGVuKCgpID0+IHsgcmVzb2x2ZSgpOyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCdOb3QgcnVubmluZyBpbiBkZXNrdG9wLiBTZXJ2ZXIgc3VwcG9ydCBjb21pbmcgc29vbiEnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemF0aW9uUHJvbWlzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25EaXNwYXRjaGVyUmVjZWl2ZWQoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBkaXNwYXRjaGVyLnNldFZlcnNpb25OdW1iZXIoVmVyc2lvbk51bWJlci5JbnN0YW5jZSk7XHJcblxyXG4gICAgLy8gQ2FsbCB0byByZWdpc3RlciBhbGwgdGhlIHNlcnZpY2VzIHdoaWNoIHdpbGwgdXNlIHRoZSBuZXdseSBpbml0aWFsaXplZCBkaXNwYXRjaGVyXHJcbiAgICByZWdpc3RlckFsbFNoYXJlZFNlcnZpY2VzKGRpc3BhdGNoZXIpO1xyXG4gICAgcmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzKGRpc3BhdGNoZXIpO1xyXG5cclxuICAgIC8vIEdldCB0aGUgaW5pdGlhbGl6YXRpb24gc2VydmljZSBhbmQgaW5pdGlhbGl6ZSB0aGlzIGFkZC1pblxyXG4gICAgY29uc3QgaW5pdGlhbGl6YXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8SW5pdGlhbGl6YXRpb25TZXJ2aWNlPihcclxuICAgICAgQWRkSW5TZXJ2aWNlTmFtZXMuSW5pdGlhbGl6YXRpb25TZXJ2aWNlKTtcclxuXHJcbiAgICByZXR1cm4gaW5pdGlhbGl6YXRpb25TZXJ2aWNlLmluaXRpYWxpemVEYXNoYm9hcmRBZGRJbkFzeW5jKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAoIXJlc3VsdC5hZGRJbkluc3RhbmNlLmxvY2F0b3IuZGFzaGJvYXJkUGF0aCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGFzaGJvYXJkUGF0aCBpcyB1bmRlZmluZWQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kYXNoYm9hcmRDb250ZW50ID0gdGhpcy5pbml0aWFsaXplRGFzaGJvYXJkQ29udGVudChyZXN1bHQuYWRkaW5EYXNoYm9hcmRJbmZvLCByZXN1bHQuYWRkSW5JbnN0YW5jZS5sb2NhdG9yLmRhc2hib2FyZFBhdGgpO1xyXG4gICAgICB0aGlzLmVudmlyb25tZW50ID0gbmV3IEVudmlyb25tZW50KHJlc3VsdC5hZGRJbkVudmlyb25tZW50KTtcclxuICAgICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMuaW5pdGlhbGl6ZVNldHRpbmdzKHJlc3VsdC5hZGRJblNldHRpbmdzSW5mbyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhc2hib2FyZENvbnRlbnQoaW5mbzogQWRkSW5EYXNoYm9hcmRJbmZvLCBzaGVldFBhdGg6IFNoZWV0UGF0aCk6IERhc2hib2FyZENvbnRlbnQge1xyXG4gICAgY29uc3QgZGFzaGJvYXJkSW1wbCA9IG5ldyBEYXNoYm9hcmRJbXBsKGluZm8sIHNoZWV0UGF0aCk7XHJcbiAgICBjb25zdCBkYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKGRhc2hib2FyZEltcGwpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXNoYm9hcmRDb250ZW50KGRhc2hib2FyZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm86IEFkZEluU2V0dGluZ3NJbmZvKTogU2V0dGluZ3Mge1xyXG4gICAgY29uc3Qgc2V0dGluZ3NJbXBsID0gbmV3IFNldHRpbmdzSW1wbChzZXR0aW5nc0luZm8pO1xyXG4gICAgcmV0dXJuIG5ldyBTZXR0aW5ncyhzZXR0aW5nc0ltcGwpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvQWRkSW5JbXBsLnRzXG4gKiovIiwiLyoqXHJcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXHJcbiAqXHJcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9FbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL01vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9QYXJhbWV0ZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvVmVyYnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9WZXJzaW9uTnVtYmVyJztcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL0FwaUludGVybmFsQ29udHJhY3QudHNcbiAqKi8iLCJleHBvcnQgZW51bSBBZGRJbkNvbnRleHQge1xyXG4gIERlc2t0b3AgPSAnZGVza3RvcCcsXHJcbiAgU2VydmVyID0gJ3NlcnZlcicsXHJcbiAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBBZGRJbk1vZGUge1xyXG4gIEF1dGhvcmluZyA9ICdhdXRob3JpbmcnLFxyXG4gIFZpZXdpbmcgPSAndmlld2luZycsXHJcbiAgVW5rbm93biA9ICd1bmtub3duJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXNoYm9hcmRPYmplY3RUeXBlIHtcclxuICBCbGFuayA9ICdibGFuaycsXHJcbiAgV29ya3NoZWV0ID0gJ3dvcmtzaGVldCcsXHJcbiAgUXVpY2tGaWx0ZXIgPSAncXVpY2stZmlsdGVyJyxcclxuICBQYXJhbWV0ZXJDb250cm9sID0gJ3BhcmFtZXRlci1jb250cm9sJyxcclxuICBQYWdlRmlsdGVyID0gJ3BhZ2UtZmlsdGVyJyxcclxuICBMZWdlbmQgPSAnbGVnZW5kJyxcclxuICBUaXRsZSA9ICd0aXRsZScsXHJcbiAgVGV4dCA9ICd0ZXh0JyxcclxuICBJbWFnZSA9ICdpbWFnZScsXHJcbiAgV2ViUGFnZSA9ICd3ZWItcGFnZScsXHJcbiAgQWRkSW4gPSAnYWRkaW4nXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICBTdHJpbmcgPSAnc3RyaW5nJyxcclxuICBJbnQgPSAnaW50JyxcclxuICBGbG9hdCA9ICdmbG9hdCcsXHJcbiAgQm9vbCA9ICdib29sJyxcclxuICBEYXRlID0gJ2RhdGUnLFxyXG4gIERhdGVUaW1lID0gJ2RhdGUtdGltZScsXHJcbiAgU3BhdGlhbCA9ICdzcGF0aWFsJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbmNvZGVkRGF0YVR5cGUge1xyXG4gIE51bWJlciA9ICdudW1iZXInLFxyXG4gIFN0cmluZyA9ICdzdHJpbmcnLFxyXG4gIERhdGUgPSAnZGF0ZScsXHJcbiAgQm9vbGVhbiA9ICdib29sZWFuJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xyXG4gIFNlcnZlckVycm9yID0gJ3NlcnZlci1lcnJvcicsXHJcbiAgSW52YWxpZEFnZ3JlZ2F0aW9uRmllbGROYW1lID0gJ2ludmFsaWQtYWdncmVnYXRpb24tZmllbGQtbmFtZScsXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZG5hbWUnLFxyXG4gIEludmFsaWRGaWx0ZXJGaWVsZFZhbHVlID0gJ2ludmFsaWQtZmlsdGVyLWZpZWxkLXZhbHVlJ1xyXG59XHJcblxyXG4vKipcclxuICogIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXIuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJVcGRhdGVUeXBlIHtcclxuICBBZGQgPSAnYWRkJyxcclxuICBBbGwgPSAnYWxsJyxcclxuICBSZXBsYWNlID0gJ3JlcGxhY2UnLFxyXG4gIFJlbW92ZSA9ICdyZW1vdmUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFNoZWV0VHlwZSB7XHJcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXHJcbiAgU3RvcnkgPSAnc3RvcnknLFxyXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxyXG4gIEFkZGluID0gJ2FkZGluJ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gTnVsbE9wdGlvbiB7XHJcbiAgTnVsbFZhbHVlcyA9ICdudWxsdmFsdWVzJyxcclxuICBOb25OdWxsVmFsdWVzID0gJ25vbm51bGx2YWx1ZXMnLFxyXG4gIEFsbFZhbHVlcyA9ICdhbGx2YWx1ZXMnXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50c1xuICoqLyIsImltcG9ydCB7IE1vZGVsIH0gZnJvbSAnLi9Nb2RlbHMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25JZCB9IGZyb20gJy4vTm90aWZpY2F0aW9ucyc7XHJcbmltcG9ydCB7IFZlcmJJZCB9IGZyb20gJy4vVmVyYnMnO1xyXG5pbXBvcnQgeyBWZXJzaW9uTnVtYmVyIH0gZnJvbSAnLi9WZXJzaW9uTnVtYmVyJztcclxuXHJcbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvbkhhbmRsZXIgPSAobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVQYXJhbWV0ZXJzIHtcclxuICBba2V5OiBzdHJpbmddOiBNb2RlbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlUmVzcG9uc2Uge1xyXG4gIHJlc3VsdDogTW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uIHtcclxuICBub3RpZmljYXRpb25JZDogTm90aWZpY2F0aW9uSWQ7XHJcbiAgZGF0YTogTW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIHtcclxuICBzZXRWZXJzaW9uTnVtYmVyKHZlcnNpb25OdW1iZXI6IFZlcnNpb25OdW1iZXIpOiB2b2lkO1xyXG4gIGV4ZWN1dGUodmVyYjogVmVyYklkLCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyk6IFByb21pc2U8RXhlY3V0ZVJlc3BvbnNlPjtcclxuICByZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQ7XHJcbiAgdW5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoaGFuZGxlcjogTm90aWZpY2F0aW9uSGFuZGxlcik6IHZvaWQ7XHJcbn1cclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHsgX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXI6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPjsgfVxyXG59XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlciB7XHJcbiAgZXhwb3J0IGZ1bmN0aW9uIGdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpOiBQcm9taXNlPEludGVybmFsQXBpRGlzcGF0Y2hlcj4ge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVEZXNrdG9wRGlzcGF0Y2hlcjtcclxuICB9XHJcblxyXG4gIGV4cG9ydCBmdW5jdGlvbiBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISFJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQgZnVuY3Rpb24gc2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKGRpc3BhdGNoZXI6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPik6IHZvaWQge1xyXG4gICAgd2luZG93Ll9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHNcbiAqKi8iLCJleHBvcnQgZW51bSBOb3RpZmljYXRpb25JZCB7XHJcbiAgU2VsZWN0ZWRNYXJrc0NoYW5nZWQgPSAnc2VsZWN0ZWQtbWFya3MtY2hhbmdlZCdcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMudHNcbiAqKi8iLCJleHBvcnQgZW51bSBQYXJhbWV0ZXJJZCB7XHJcbiAgQWRkSW5Mb2NhdG9yID0gJ2FkZC1pbi1sb2NhdG9yJyxcclxuICBBZGRJbkJvb3RzdHJhcEluZm8gPSAnYWRkLWluLWJvb3RzdHJhcC1pbmZvJyxcclxuICBBZGRJblNldHRpbmdzSW5mbyA9ICdhZGQtaW4tc2V0dGluZ3MtaW5mbycsXHJcbiAgVmlzdWFsSWQgPSAndmlzdWFsLWlkJyxcclxuICBTaGVldFBhdGggPSAnc2hlZXQtcGF0aCcsXHJcbiAgSWdub3JlQWxpYXNlcyA9ICdpZ25vcmUtYWxpYXNlcycsXHJcbiAgSWdub3JlU2VsZWN0aW9uID0gJ2lnbm9yZS1zZWxlY3Rpb24nLFxyXG4gIEluY2x1ZGVBbGxDb2x1bW5zID0gJ2luY2x1ZGUtYWxsLWNvbHVtbnMnLFxyXG4gIE1heFJvd3MgPSAnbWF4LXJvd3MnLFxyXG4gIFVuZGVybHlpbmdEYXRhVGFibGUgPSAndW5kZXJseWluZy1kYXRhLXRhYmxlJyxcclxuICBVbmRlcmx5aW5nU3VtbWFyeURhdGFUYWJsZSA9ICd1bmRlcmx5aW5nLXN1bW1hcnktZGF0YS10YWJsZScsXHJcbiAgU2V0dGluZ3NWYWx1ZXMgPSAnc2V0dGluZ3MtdmFsdWVzJyxcclxuICBTZWxlY3RlZERhdGEgPSAnc2VsZWN0ZWQtZGF0YScsXHJcbiAgSGlnaGxpZ2h0ZWREYXRhID0gJ2hpZ2hsaWdodGVkLWRhdGEnLFxyXG5cclxuICAgLy8gRmlsdGVyIFBhcmFtc1xyXG4gIEZpZWxkTmFtZSA9ICdmaWVsZC1uYW1lJyxcclxuICBGaWx0ZXJWYWx1ZXMgPSAnZmlsdGVyLXZhbHVlcycsXHJcbiAgRmlsdGVyVXBkYXRlVHlwZSA9ICdmaWx0ZXItdXBkYXRlLXR5cGUnLFxyXG4gIElzRXhjbHVkZU1vZGUgPSAnaXMtZXhjbHVkZScsXHJcbiAgRmlsdGVyUmFuZ2VNaW4gPSAnZmlsdGVyLXJhbmdlLW1pbicsXHJcbiAgRmlsdGVyUmFuZ2VNYXggPSAnZmlsdGVyLXJhbmdlLW1heCcsXHJcbiAgRmlsdGVyUmFuZ2VOdWxsT3B0aW9uID0gJ2ZpbHRlci1yYW5nZS1udWxsLW9wdGlvbicsXHJcblxyXG4gIFdvcmtzaGVldE5hbWUgPSAnd29ya3NoZWV0LW5hbWUnXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9QYXJhbWV0ZXJzLnRzXG4gKiovIiwiLy8gRGVjbGFyZSB0aGlzIGtleSB0eXBlIGFuZCBleHBvcnQgdGhlIE5vdGlmaWNhdGlvbklkIHRvIG1ha2UgdGhpcyBiZWhhdmUgbGlrZSBhIHN0cmluZyBlbnVtXHJcbmV4cG9ydCBlbnVtIFZlcmJJZCB7XHJcbiAgQXBwbHlDYXRlZ29yaWNhbEZpbHRlciA9ICdjYXRlZ29yaWNhbC1maWx0ZXInLFxyXG4gIEFwcGx5UmFuZ2VGaWx0ZXIgPSAncmFuZ2UtZmlsdGVyJyxcclxuICBDbGVhckZpbHRlciA9ICdjbGVhci1maWx0ZXInLFxyXG4gIEluaXRpYWxpemVBZGRJbiA9ICdpbml0aWFsaXplLWFkZC1pbicsXHJcbiAgR2V0RGF0YVN1bW1hcnlEYXRhID0gJ2dldC1zdW1tYXJ5LWRhdGEnLFxyXG4gIEdldFVuZGVybHlpbmdEYXRhID0gJ2dldC11bmRlcmx5aW5nLWRhdGEnLFxyXG4gIFNhdmVBZGRJblNldHRpbmdzID0gJ3NhdmUtYWRkLWluLXNldHRpbmdzJyxcclxuICBHZXRTZWxlY3RlZE1hcmtzID0gJ2dldC1zZWxlY3RlZC1tYXJrcycsXHJcbiAgR2V0SGlnaGxpZ2h0ZWRNYXJrcyA9ICdnZXQtaGlnaGxpZ2h0ZWQtbWFya3MnXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9WZXJicy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudExpc3RlbmVyTWFuYWdlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcclxuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9HZXREYXRhU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcclxuZXhwb3J0ICogZnJvbSAnLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzJztcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9BcGlTaGFyZWQudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGFzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyQ29udHJhY3QsXHJcbiAgVGFibGVhdUV2ZW50SGFuZGxlckZuLFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgVGFibGVhdUV2ZW50VW5yZWdpc3RlckZuXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyBkZXNpZ25lZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBoYW5kbGVycyBmcm9tIGEgdXNlci4gT25seSB0aG9zZSBldmVudHNcclxuICogd2hpY2ggYXJlIGFkZGVkIHZpYSBBZGROZXdFdmVudFR5cGUgd2lsbCBiZSBzdXBwb3J0ZWQgYnkgdGhpcyBpbnN0YW5jZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgRXZlbnRMaXN0ZW5lck1hbmFnZXJDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBldmVudExpc3RlbmVyTWFuYWdlcnM6IHsgW3RhYmxlYXVFdmVudFR5cGU6IHN0cmluZ106IFNpbmdsZUV2ZW50TWFuYWdlcjsgfTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnMgPSB7fTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogVGFibGVhdUV2ZW50VHlwZSwgaGFuZGxlcjogVGFibGVhdUV2ZW50SGFuZGxlckZuKTogVGFibGVhdUV2ZW50VW5yZWdpc3RlckZuIHtcclxuICAgIGlmICghdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnMuaGFzT3duUHJvcGVydHkoZXZlbnRUeXBlKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5hZGRFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBUYWJsZWF1RXZlbnRUeXBlLCBoYW5kbGVyOiBUYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnMuaGFzT3duUHJvcGVydHkoZXZlbnRUeXBlKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZE5ld0V2ZW50VHlwZShldmVudE1hbmFnZXI6IFNpbmdsZUV2ZW50TWFuYWdlcik6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRNYW5hZ2VyLmV2ZW50VHlwZV0gPSBldmVudE1hbmFnZXI7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRMaXN0ZW5lck1hbmFnZXIudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIENvbHVtbiBhcyBDb2x1bW5Db250cmFjdCxcclxuICBEYXRhVGFibGUgYXMgRGF0YVRhYmxlQ29udHJhY3QsXHJcbiAgRGF0YVR5cGUsXHJcbiAgRGF0YVZhbHVlIGFzIERhdGFWYWx1ZUNvbnRyYWN0XHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGUgaW1wbGVtZW50cyBEYXRhVGFibGVDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kYXRhOiBBcnJheTxBcnJheTxEYXRhVmFsdWVDb250cmFjdD4+LFxyXG4gICAgcHJpdmF0ZSBfY29sdW1uczogQXJyYXk8Q29sdW1uQ29udHJhY3Q+LFxyXG4gICAgcHJpdmF0ZSBfdG90YWxSb3dDb3VudDogbnVtYmVyLFxyXG4gICAgcHJpdmF0ZSBfaXNTdW1tYXJ5RGF0YTogYm9vbGVhbikge1xyXG4gICAgICAgIC8vIFRPRE86IGdldCByaWQgb2YgdGhpcyBpbiByZWRlc2lnbi5cclxuICAgICAgICB0aGlzLl9uYW1lID0gX2lzU3VtbWFyeURhdGEgPyAnU3VtbWFyeSBEYXRhIFRhYmxlJyA6ICdVbmRlcmx5aW5nIERhdGEgVGFibGUnO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXRhKCk6IEFycmF5PEFycmF5PERhdGFWYWx1ZUNvbnRyYWN0Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogQXJyYXk8Q29sdW1uQ29udHJhY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0b3RhbFJvd0NvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSb3dDb3VudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNTdW1tYXJ5RGF0YSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1N1bW1hcnlEYXRhO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtbiBpbXBsZW1lbnRzIENvbHVtbkNvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9maWVsZE5hbWU6IHN0cmluZyxcclxuICAgIHByaXZhdGUgX2RhdGFUeXBlOiBEYXRhVHlwZSwgLy8gVE9ETzogdGhpcyBzaG91ZGwgYmUgYW4gZW51bSB0eXBlXHJcbiAgICBwcml2YXRlIF9pc1JlZmVyZW5jZWQ6IGJvb2xlYW4sXHJcbiAgICBwcml2YXRlIF9pbmRleDogbnVtYmVyKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpZWxkTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YVR5cGUoKTogRGF0YVR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1JlZmVyZW5jZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNSZWZlcmVuY2VkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luZGV4O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFWYWx1ZSBpbXBsZW1lbnRzIERhdGFWYWx1ZUNvbnRyYWN0IHtcclxuICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF92YWx1ZTogYW55LFxyXG4gICAgcHJpdmF0ZSBfZm9ybWF0dGVkVmFsdWU6IHN0cmluZykge31cclxuXHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JtYXR0ZWRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZFZhbHVlO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvTW9kZWxzL0dldERhdGFNb2RlbHMudHNcbiAqKi8iLCJleHBvcnQgY2xhc3MgVGFibGVhdUV4Y2VwdGlvbnMge1xyXG4gIC8vIFRPRE8sIEFwaUVycm9yQ29kZXMgbmVlZCB0byBiZSBhZGRlZCB0byBleHRlcm5hbCBpbnRlcmZhY2VzLlxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucy50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWN0aXZlTWFya3MsXHJcbiAgTWFya3NTZWxlY3RlZEV2ZW50IGFzIE1hcmtzU2VsZWN0ZWRFdmVudENvbnRyYWN0LFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgV29ya3NoZWV0IGFzIFdvcmtzaGVldENvbnRyYWN0LFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1V29ya3NoZWV0RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVXb3Jrc2hlZXRFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya3NTZWxlY3RlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgTWFya3NTZWxlY3RlZEV2ZW50Q29udHJhY3Qge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih3b3Jrc2hlZXQ6IFdvcmtzaGVldENvbnRyYWN0KSB7XHJcbiAgICBzdXBlcihUYWJsZWF1RXZlbnRUeXBlLk1hcmtTZWxlY3Rpb25DaGFuZ2VkLCB3b3Jrc2hlZXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1hcmtzQXN5bmMoKTogUHJvbWlzZTxBY3RpdmVNYXJrcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NoZWV0LmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQudHNcbiAqKi8iLCIvKipcclxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cclxuICpcclxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vRGF0YVNvdXJjZUludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0VudW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudEludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0ZpbHRlckludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0dldERhdGFJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9TaGVldEludGVyZmFjZXMnO1xyXG5leHBvcnQgeyBBZGRJbiB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0FkZGluJztcclxuZXhwb3J0IHsgRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQnO1xyXG5leHBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Vudmlyb25tZW50JztcclxuZXhwb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuL0V4dGVybmFsTmFtZXNwYWNlcy9TZXR0aW5ncyc7XHJcbmV4cG9ydCB7IFVJIH0gZnJvbSAnLi9FeHRlcm5hbE5hbWVzcGFjZXMvVUknO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvQXBpRXh0ZXJuYWxDb250cmFjdC50c1xuICoqLyIsIi8vIEFsbCBlbnVtIHZhbHVlcyBtYWRlIGF2YWlsYWJsZSB0byBBZGRJbiBkZXZlbG9wZXJzLlxyXG4vLyBFbnVtcyBzaG91bGQgYmUga2VwdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuXHJcblxyXG4vKipcclxuICogVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIEFkZEluIGlzIGN1cnJlbnRseSBydW5uaW5nLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gQWRkSW5Db250ZXh0IHtcclxuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxyXG4gIFNlcnZlciA9ICdzZXJ2ZXInLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBBZGRJbiBpcyBjdXJyZW50bHkgcnVubmluZy5cclxuICovXHJcbmV4cG9ydCBlbnVtIEFkZEluTW9kZSB7XHJcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXHJcbiAgVmlld2luZyA9ICd2aWV3aW5nJyxcclxuICBVbmtub3duID0gJ3Vua25vd24nXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXaGF0IHRoZSBvYmplY3QgcmVwcmVzZW50cyBpbiBhIGRhc2hib2FyZC5cclxuICovXHJcbmV4cG9ydCBlbnVtIERhc2hib2FyZE9iamVjdFR5cGUge1xyXG4gIEJsYW5rID0gJ2JsYW5rJyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcclxuICBRdWlja0ZpbHRlciA9ICdxdWljay1maWx0ZXInLFxyXG4gIFBhcmFtZXRlckNvbnRyb2wgPSAncGFyYW1ldGVyLWNvbnRyb2wnLFxyXG4gIFBhZ2VGaWx0ZXIgPSAncGFnZS1maWx0ZXInLFxyXG4gIExlZ2VuZCA9ICdsZWdlbmQnLFxyXG4gIFRpdGxlID0gJ3RpdGxlJyxcclxuICBUZXh0ID0gJ3RleHQnLFxyXG4gIEltYWdlID0gJ2ltYWdlJyxcclxuICBXZWJQYWdlID0gJ3dlYi1wYWdlJyxcclxuICBBZGRJbiA9ICdhZGRpbidcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSBhIHZhbHVlIGNhbiBoYXZlXHJcbiAqL1xyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgU3RyaW5nID0gJ3N0cmluZycsXHJcbiAgSW50ID0gJ2ludCcsXHJcbiAgRmxvYXQgPSAnZmxvYXQnLFxyXG4gIEJvb2wgPSAnYm9vbCcsXHJcbiAgRGF0ZSA9ICdkYXRlJyxcclxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxyXG4gIFNwYXRpYWwgPSAnc3BhdGlhbCdcclxufVxyXG5cclxuLyoqXHJcbiAqIFZhbGlkIGRhdGUgcmFuZ2VzIGZvciBhIHJlbGF0aXZlIGRhdGUgZmlsdGVyLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRGF0ZVJhbmdlVHlwZSB7XHJcbiAgTGFzdCA9ICdsYXN0JyxcclxuICBMYXN0TiA9ICdsYXN0LW4nLFxyXG4gIE5leHQgPSAnbmV4dCcsXHJcbiAgTmV4dE4gPSAnbmV4dC1uJyxcclxuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxyXG4gIFRvRGF0ZSA9ICd0by1kYXRlJ1xyXG59XHJcblxyXG4vKipcclxuICogVHlwZXMgb2YgZGlhbG9nIGV2ZW50IGZvciBldmVudCBsaXN0ZW5pbmcgYmV0d2VlbiBhIHBhcmVudCBBZGRJbiBhbmQgYSBwb3B1cCBkaWFsb2cuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBEaWFsb2dFdmVudFR5cGUge1xyXG4gIERpYWxvZ01lc3NhZ2UgPSAnZGlhbG9nLW1lc3NhZ2UnLFxyXG4gIERpYWxvZ0V2ZW50ID0gJ2RpYWxvZy1ldmVudCdcclxufVxyXG5cclxuLyoqXHJcbiAqIEFsbCBlcnJvciBjb2RlcyB1c2VkIGJ5IHRoZSBBZGRJbiBBUEkuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBFcnJvckNvZGVzIHtcclxuICAvKipcclxuICAgKiBPbmx5IG9uZSBkaWFsb2cgY2FuIGJlIG9wZW5lZCBhdCB0aW1lIHdpdGggdGhlIFVJIG5hbWVzcGFjZSBmdW5jdGlvbmFsaXR5LlxyXG4gICAqL1xyXG4gIERpYWxvZ0FscmVhZHlPcGVuID0gJ2RpYWxvZy1hbHJlYWR5LW9wZW4nLFxyXG4gIC8qKlxyXG4gICAqIFRoZSBvcGVuIGRpYWxvZyB3YXMgY2xvc2VkIGJ5IHRoZSB1c2VyLlxyXG4gICAqL1xyXG4gIERpYWxvZ0Nsb3NlZEJ5VXNlciA9ICdkaWFsb2ctY2xvc2VkLWJ5LXVzZXInLFxyXG4gIC8qKlxyXG4gICAqIEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhIGZpbHRlciBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgRmlsdGVyQ2Fubm90QmVQZXJmb3JtZWQgPSAnZmlsdGVyLWNhbm5vdC1iZS1wZXJmb3JtZWQnLFxyXG4gIC8qKlxyXG4gICAqIEFuIGVycm9yIG9jY3VycmVkIHdpdGhpbiB0aGUgVGFibGVhdSBBZGRJbiBBUEkuIENvbnRhY3QgVGFibGVhdSBTdXBwb3J0LlxyXG4gICAqL1xyXG4gIEludGVybmFsRXJyb3IgPSAnaW50ZXJuYWwtZXJyb3InLFxyXG4gIC8qKlxyXG4gICAqIEFuIGludmFsaWQgYWdncmVnYXRpb24gd2FzIHNwZWNpZmllZCBmb3IgdGhlIGZpbHRlciwgc3VjaCBhcyBzZXR0aW5nIGEgcmFuZ2UgZmlsdGVyIHRvIFwiU1VNKFNhbGVzKVwiIGluc3RlYWQgb2YgXCJTYWxlc1wiLlxyXG4gICAqL1xyXG4gIEludmFsaWRBZ2dyZWdhdGlvbkZpZWxkTmFtZSA9ICdpbnZhbGlkLWFnZ3JlZ2F0aW9uLWZpZWxkLW5hbWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgZGlhbG9nIG11c3QgZmlyc3QgbGF1bmNoIHRvLCBhbmQgc2VuZCBtZXNzYWdlcyBmcm9tLCB0aGUgc2FtZSBkb21haW4gYXMgdGhlIHBhcmVudCBBZGRJbi5cclxuICAgKi9cclxuICBJbnZhbGlkRG9tYWluRGlhbG9nID0gJ2ludmFsaWQtZGlhbG9nLWRvbWFpbicsXHJcbiAgLyoqXHJcbiAgICogQW4gaW52YWxpZCBkYXRlIHdhcyBzcGVjaWZpZWQgaW4gYSBtZXRob2QgdGhhdCByZXF1aXJlZCBhIGRhdGUgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIEludmFsaWREYXRlUGFyYW1ldGVyID0gJ2ludmFsaWQtZGF0ZS1wYXJhbWV0ZXInLFxyXG4gIC8qKlxyXG4gICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIG9uIGEgZmllbGQgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBzb3VyY2UuXHJcbiAgICovXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC1uYW1lJyxcclxuICAvKipcclxuICAgKiBBIGZpbHRlciBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgdGhlIHdyb25nIGRhdGEgdHlwZSBvciBmb3JtYXQuXHJcbiAgICovXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkVmFsdWUgPSAnaW52YWxpZC1maWx0ZXItZmllbGQtdmFsdWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgcGFyYW1ldGVyIGlzIG5vdCB0aGUgY29ycmVjdCBkYXRhIHR5cGUgb3IgZm9ybWF0LiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgRXJyb3IubWVzc2FnZSBmaWVsZC5cclxuICAgKi9cclxuICBJbnZhbGlkUGFyYW1ldGVyID0gJ2ludmFsaWQtcGFyYW1ldGVyJyxcclxuICAvKipcclxuICAgKiBBbiBpbnZhbGlkIGRhdGUgdmFsdWUgd2FzIHNwZWNpZmllZCBpbiBhIFNoZWV0LnNlbGVjdE1hcmtzQXN5bmMoKSBjYWxsIGZvciBhIGRhdGUgZmllbGQuXHJcbiAgICovXHJcbiAgSW52YWxpZFNlbGVjdGlvbkRhdGUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZGF0ZScsXHJcbiAgLyoqXHJcbiAgICogQSBmaWVsZCB3YXMgc3BlY2lmaWVkIGluIGEgU2hlZXQuc2VsZWN0TWFya3NBc3luYygpIGNhbGwgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBzb3VyY2UuXHJcbiAgICovXHJcbiAgSW52YWxpZFNlbGVjdGlvbkZpZWxkTmFtZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi1maWVsZC1uYW1lJyxcclxuICAvKipcclxuICAgKiBBbiBpbnZhbGlkIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbC5cclxuICAgKi9cclxuICBJbnZhbGlkU2VsZWN0aW9uVmFsdWUgPSAnaW52YWxpZC1zZWxlY3Rpb24tdmFsdWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgcmVxdWlyZWQgcGFyYW1ldGVyIHdhcyBub3Qgc3BlY2lmaWVkLCBudWxsLCBvciBhbiBlbXB0eSBzdHJpbmcvYXJyYXkuXHJcbiAgICovXHJcbiAgTnVsbE9yRW1wdHlQYXJhbWV0ZXIgPSAnbnVsbC1vci1lbXB0eS1wYXJhbWV0ZXInLFxyXG4gIC8qKlxyXG4gICAqIEFuIHVua25vd24gZXZlbnQgbmFtZSB3YXMgc3BlY2lmaWVkIGluIHRoZSBjYWxsIHRvIFZpei5hZGRFdmVudExpc3RlbmVyb3IgVml6LnJlbW92ZUV2ZW50TGlzdGVuZXIuXHJcbiAgICovXHJcbiAgVW5zdXBwb3J0ZWRFdmVudE5hbWUgPSAndW5zdXBwb3J0ZWQtZXZlbnQtbmFtZSdcclxufVxyXG5cclxuLyoqXHJcbiAqICBUeXBlIG9mIGFnZ3JlZ2F0aW9uIG9uIGEgZmllbGQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWVsZEFnZ3JlYXRpb25UeXBlIHtcclxuICBTdW0gPSAnc3VtJyxcclxuICBBdmcgPSAnYXZnJyxcclxuICBNaW4gPSAnbWluJyxcclxuICBNYXggPSAnbWF4JyxcclxuICBTdGRldiA9ICdzdGRldicsXHJcbiAgU3RkZXZwID0gJ3N0ZGV2cCcsXHJcbiAgVmFyID0gJ3ZhcicsXHJcbiAgVmFycCA9ICd2YXJwJyxcclxuICBDb3VudCA9ICdjb3VudCcsXHJcbiAgQ291bnRkID0gJ2NvdW50ZCcsXHJcbiAgTWVkaWFuID0gJ21lZGlhbicsXHJcbiAgQXR0ciA9ICdhdHRyJyxcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFllYXIgPSAneWVhcicsXHJcbiAgUXRyID0gJ3F0cicsXHJcbiAgTW9udGggPSAnbW9udGgnLFxyXG4gIERheSA9ICdkYXknLFxyXG4gIEhvdXIgPSAnaG91cicsXHJcbiAgTWludXRlID0gJ21pbnV0ZScsXHJcbiAgU2Vjb25kID0gJ3NlY29uZCcsXHJcbiAgV2VlayA9ICd3ZWVrJyxcclxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxyXG4gIE1vbXRoWWVhciA9ICdtb250aC15ZWFyJyxcclxuICBNZHkgPSAnbWR5JyxcclxuICBFbmQgPSAnZW5kJyxcclxuICBUcnVuY1llYXIgPSAndHJ1bmMteWVhcicsXHJcbiAgVHJ1bmNRdHIgPSAndHJ1bmMtcXRyJyxcclxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcclxuICBUcnVuY1dlZWsgPSAndHJ1bmMtd2VlaycsXHJcbiAgVHJ1bmNEYXkgPSAndHJ1bmMtZGF5JyxcclxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXHJcbiAgVHJ1bmNNaW51dGUgPSAndHJ1bmMtbWludXRlJyxcclxuICBUcnVuY1NlY29uZCA9ICd0cnVuYy1zZWNvbmQnLFxyXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxyXG4gIFF1YXJ0MyA9ICdxdWFydDMnLFxyXG4gIFNrZXduZXNzID0gJ3NrZXduZXNzJyxcclxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXHJcbiAgSW5PdXQgPSAnaW4tb3V0JyxcclxuICBVc2VyID0gJ3VzZXInXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSb2xlIG9mIGEgZmllbGQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWVsZFJvbGVUeXBlIHtcclxuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcclxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJUeXBlIHtcclxuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXHJcbiAgUXVhbnRpdGF0aXZlID0gJ3F1YW50aXRhdGl2ZScsXHJcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCcsXHJcbiAgUmVsYXRpdmVEYXRlID0gJ3JlbGF0aXZlLWRhdGEnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgZGlmZmVyZW50IHVwZGF0ZSB0eXBlcyBmb3IgYXBwbHlpbmcgZmlsdGVyXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJVcGRhdGVUeXBlIHtcclxuICBBZGQgPSAnYWRkJyxcclxuICBBbGwgPSAnYWxsJyxcclxuICBSZXBsYWNlID0gJ3JlcGxhY2UnLFxyXG4gIFJlbW92ZSA9ICdyZW1vdmUnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJbmRpY2F0ZXMgd2hhdCB0byBkbyB3aXRoIG51bGwgdmFsdWVzIGZvciBhIGdpdmVuIGZpbHRlciBvciBtYXJrIHNlbGVjdGlvbiBjYWxsLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gTnVsbE9wdGlvbiB7XHJcbiAgTnVsbFZhbHVlcyA9ICdudWxsLXZhbHVlcycsXHJcbiAgTm9uTnVsbFZhbHVlcyA9ICdub24tbnVsbC12YWx1ZXMnLFxyXG4gIEFsbFZhbHVlcyA9ICdhbGwtdmFsdWVzJ1xyXG59XHJcblxyXG4vKipcclxuICogRGF0ZSBwZXJpb2QgdXNlZCBpbiBmaWx0ZXJzIGFuZCBpbiBwYXJhbWV0ZXJzLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gUGVyaW9kVHlwZSB7XHJcbiAgWWVhcnMgPSAneWVhcnMnLFxyXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcclxuICBNb250aHMgPSAnbW9udGhzJyxcclxuICBXZWVrcyA9ICd3ZWVrcycsXHJcbiAgRGF5cyA9ICdkYXlzJyxcclxuICBIb3VycyA9ICdob3VycycsXHJcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcclxuICBTZWNvbmRzID0gJ3NlY29uZHMnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgdHlwZSBvZiBzaGVldCBhIFNoZWV0IG9iamVjdCByZXByZXNlbnRzXHJcbiAqL1xyXG5leHBvcnQgZW51bSBTaGVldFR5cGUge1xyXG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxyXG4gIFN0b3J5ID0gJ3N0b3J5JyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcclxuICBBZGRJbiA9ICdhZGQtaW4nXHJcbn1cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBjZXJ0YWluIHR5cGUgb2YgZXZlbnQgd2hpY2ggY2FuIGJlIGxpc3RlbmVkIGZvclxyXG4gKi9cclxuZXhwb3J0IGVudW0gVGFibGVhdUV2ZW50VHlwZSB7XHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBtYXJrcyBvbiBhIHZpc3VhbGl6YXRpb24gaGFzIGNoYW5nZWQgKi9cclxuICBNYXJrU2VsZWN0aW9uQ2hhbmdlZCA9ICdtYXJrLXNlbGVjdGlvbi1jaGFuZ2VkJ1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9FbnVtcy50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgVGFibGVhdUV2ZW50VHlwZSxcclxuICBUYWJsZWF1V29ya3NoZWV0RXZlbnQgYXMgVGFibGVhdVdvcmtTaGVldEV2ZW50Q29udHJhY3QsXHJcbiAgV29ya3NoZWV0IGFzIFdvcmtzaGVldENvbnRyYWN0XHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFRhYmxlYXVTaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1U2hlZXRFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVhdVdvcmtzaGVldEV2ZW50IGV4dGVuZHMgVGFibGVhdVNoZWV0RXZlbnQgaW1wbGVtZW50cyBUYWJsZWF1V29ya1NoZWV0RXZlbnRDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBfd29ya3NoZWV0OiBXb3Jrc2hlZXRDb250cmFjdDtcclxuXHJcbiAgcHVibGljIGdldCB3b3Jrc2hlZXQoKTogV29ya3NoZWV0Q29udHJhY3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0eXBlOiBUYWJsZWF1RXZlbnRUeXBlLCB3b3Jrc2hlZXQ6IFdvcmtzaGVldENvbnRyYWN0KSB7XHJcbiAgICBzdXBlcih0eXBlLCB3b3Jrc2hlZXQpO1xyXG5cclxuICAgIHRoaXMuX3dvcmtzaGVldCA9IHdvcmtzaGVldDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBTaGVldCBhcyBTaGVldENvbnRyYWN0LFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgVGFibGVhdVNoZWV0RXZlbnQgYXMgVGFibGVhdVNoZWV0RXZlbnRDb250cmFjdFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVhdVNoZWV0RXZlbnQgZXh0ZW5kcyBUYWJsZWF1RXZlbnQgaW1wbGVtZW50cyBUYWJsZWF1U2hlZXRFdmVudENvbnRyYWN0IHtcclxuICBwcml2YXRlIF9zaGVldDogU2hlZXRDb250cmFjdDtcclxuXHJcbiAgcHVibGljIGdldCBzaGVldCgpOiBTaGVldENvbnRyYWN0IHtcclxuICAgIHJldHVybiB0aGlzLl9zaGVldDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0eXBlOiBUYWJsZWF1RXZlbnRUeXBlLCBzaGVldDogU2hlZXRDb250cmFjdCkge1xyXG4gICAgc3VwZXIodHlwZSk7XHJcblxyXG4gICAgdGhpcy5fc2hlZXQgPSBzaGVldDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHNcbiAqKi8iLCJpbXBvcnQgeyBUYWJsZWF1RXZlbnQgYXMgVGFibGVhdUV2ZW50Q29udHJhY3QsIFRhYmxlYXVFdmVudFR5cGUgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlYXVFdmVudCBpbXBsZW1lbnRzIFRhYmxlYXVFdmVudENvbnRyYWN0IHtcclxuICBwcml2YXRlIF90eXBlOiBUYWJsZWF1RXZlbnRUeXBlO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogVGFibGVhdUV2ZW50VHlwZSkge1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHR5cGUoKTogVGFibGVhdUV2ZW50VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdUV2ZW50LnRzXG4gKiovIiwiaW1wb3J0IHsgVGFibGVhdUV2ZW50LCBUYWJsZWF1RXZlbnRUeXBlLCBUYWJsZWF1RXZlbnRVbnJlZ2lzdGVyRm4gfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgU2luZ2xlRXZlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIFNpbmdsZUV2ZW50TWFuYWdlciBpbnRlcmZhY2UgZm9yIGEgc2luZ2xlIHR5cGUgb2YgVGFibGVhdSBldmVudFxyXG4gKlxyXG4gKiBAdGVtcGxhdGUgVEV2ZW50VHlwZSBUaGUgVGFibGVhdSBldmVudCB0eXBlIHRoaXMgY2xhc3Mgc3BlY2lhbGl6ZXNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsPFRFdmVudFR5cGUgZXh0ZW5kcyBUYWJsZWF1RXZlbnQ+IGltcGxlbWVudHMgU2luZ2xlRXZlbnRNYW5hZ2VyIHtcclxuICBwcml2YXRlIF9ldmVudFR5cGU6IFRhYmxlYXVFdmVudFR5cGU7XHJcbiAgcHJpdmF0ZSBoYW5kbGVyczogQXJyYXk8KGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGV2ZW50VHlwZTogVGFibGVhdUV2ZW50VHlwZSkge1xyXG4gICAgdGhpcy5fZXZlbnRUeXBlID0gZXZlbnRUeXBlO1xyXG4gICAgdGhpcy5oYW5kbGVycyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBldmVudFR5cGUoKTogVGFibGVhdUV2ZW50VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRUeXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoaGFuZGxlcjogKGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkKTogVGFibGVhdUV2ZW50VW5yZWdpc3RlckZuIHtcclxuICAgIHRoaXMuaGFuZGxlcnMucHVzaChoYW5kbGVyKTtcclxuICAgIHJldHVybiAoKSA9PiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaGFuZGxlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRXZlbnRMaXN0ZW5lcihoYW5kbGVyOiAoZXZlbnRPYmo6IFRFdmVudFR5cGUpID0+IHZvaWQpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGJlZm9yZUNvdW50ID0gdGhpcy5oYW5kbGVycy5sZW5ndGg7XHJcbiAgICB0aGlzLmhhbmRsZXJzID0gdGhpcy5oYW5kbGVycy5maWx0ZXIoaCA9PiBoICE9PSBoYW5kbGVyKTtcclxuICAgIHJldHVybiBiZWZvcmVDb3VudCA+IHRoaXMuaGFuZGxlcnMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyaWdnZXJFdmVudChldmVudEdlbmVyYXRvcjogKCkgPT4gVEV2ZW50VHlwZSk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBldmVudE1vZGVsID0gZXZlbnRHZW5lcmF0b3IoKTtcclxuICAgICAgICBoYW5kbGVyKGV2ZW50TW9kZWwpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gU2luY2UgdGhpcyBoYW5kbGVyIGNvdWxkIGJlIG91dHNpZGUgb3VyIGNvbnRyb2wsIGp1c3QgY2F0Y2ggYW55dGhpbmcgaXQgdGhyb3dzIGFuZCBjb250aW51ZSBvblxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvSW50ZXJuYWwvU2luZ2xlRXZlbnRNYW5hZ2VySW1wbC50c1xuICoqLyIsImltcG9ydCB7IEFjdGl2ZU1hcmtzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRGF0YVRhYmxlIH0gZnJvbSAnLi4vTW9kZWxzL0dldERhdGFNb2RlbHMnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuLyoqXHJcbiAqIERlZmluZXMgd2hpY2ggdHlwZSBvZiBnZXREYXRhIGNhbGwgdG8gbWFrZS5cclxuICovXHJcbmV4cG9ydCBlbnVtIEdldERhdGFUeXBlIHtcclxuICBTdW1tYXJ5ID0gJ3N1bW1hcnknLFxyXG4gIFVuZGVybHlpbmcgPSAndW5kZXJseWluZydcclxufVxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgZm9yIGltcGxlbWVudGluZyB0aGUgbG9naWMgZm9yIHZhcmlvdXMgZ2V0RGF0YSBjYWxsc1xyXG4gKlxyXG4gKiBAaW50ZXJmYWNlIEdldERhdGFTZXJ2aWNlXHJcbiAqIEBleHRlbmRzIHtBcGlTZXJ2aWNlfVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBHZXREYXRhU2VydmljZSBleHRlbmRzIEFwaVNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHZpc3VhbFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtWaXN1YWxJZH0gdmlzdWFsSWQgIFRoZSB2aXN1YWwgdG8gZ2V0IGRhdGEgZm9yXHJcbiAgICogQHBhcmFtIHtHZXREYXRhVHlwZX0gZ2V0VHlwZSAgVGhlIHR5cGUgb2YgZ2V0RGF0YSBjYWxsIHRvIG1ha2VcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlnbm9yZUFsaWFzZXMgIFdoZXRoZXIgb3Igbm90IGFsaWFzZXMgc2hvdWxkIGJlIGlnbm9yZWRcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlnbm9yZVNlbGVjdGlvbiAgV2hldGhlciBvciBub3Qgc2VsZWN0aW9uIHNob3VsZCBiZSBpZ25vcmVkXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQWxsQ29sdW1ucyAgU2hvdWxkIGFsbCBjb2x1bW5zIGJlIGluY2x1ZGVkXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heFJvd3MgIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gcmV0dXJuXHJcbiAgICogQHJldHVybnMge1Byb21pc2U8RGF0YVRhYmxlPn0gIERhdGEgdGFibGUgd2l0aCB0aGUgcmVxdWVzdGVkIGRhdGFcclxuICAgKi9cclxuICAgIGdldFVuZGVybHlpbmdEYXRhQXN5bmMoXHJcbiAgICAgIHZpc3VhbElkOiBWaXN1YWxJZCxcclxuICAgICAgZ2V0VHlwZTogR2V0RGF0YVR5cGUsXHJcbiAgICAgIGlnbm9yZUFsaWFzZXM6IGJvb2xlYW4sXHJcbiAgICAgIGlnbm9yZVNlbGVjdGlvbjogYm9vbGVhbixcclxuICAgICAgaW5jbHVkZUFsbENvbHVtbnM6IGJvb2xlYW4sXHJcbiAgICAgIG1heFJvd3M6IG51bWJlcik6IFByb21pc2U8RGF0YVRhYmxlPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBtYXJrcyBmb3IgYSBnaXZlbiB2aXN1YWxcclxuICAgICAqXHJcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxyXG4gICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBY3RpdmVNYXJrcz59ICBDb2xsZWN0aW9uIG9mIGRhdGEgdGFibGVzIHdpdGggdGhlIGFjdGl2ZSBtYXJrc1xyXG4gICAgKi9cclxuICAgIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPEFjdGl2ZU1hcmtzPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBtYXJrcyBmb3IgYSBnaXZlbiB2aXN1YWxcclxuICAgICAqXHJcbiAgICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxyXG4gICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBY3RpdmVNYXJrcz59ICBDb2xsZWN0aW9uIG9mIGRhdGEgdGFibGVzIHdpdGggdGhlIGFjdGl2ZSBtYXJrc1xyXG4gICAgKi9cclxuICAgIGdldEhpZ2hsaWdodGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPEFjdGl2ZU1hcmtzPjtcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsJztcclxuaW1wb3J0IHsgR2V0RGF0YVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogdm9pZCB7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgR2V0RGF0YVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBGaWx0ZXJTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgTm90aWZpY2F0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xyXG4gIC8vIFRPRE8gLSBtb3JlIHNoYXJlZCBzZXJ2aWNlc1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcy50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgRmlsdGVyT3B0aW9ucyxcclxuICBGaWx0ZXJVcGRhdGVUeXBlLFxyXG4gIE51bGxPcHRpb24sXHJcbiAgUmFuZ2VGaWx0ZXJPcHRpb25zXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBDb21tYW5kRXJyb3IsXHJcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFZlcmJJZCxcclxuICBWaXN1YWxJZFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcclxuXHJcbmltcG9ydCB7IEV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncyBhcyBFbnVtQ29udmVydGVyIH0gZnJvbSAnLi4vLi4vRW51bU1hcHBpbmdzL0V4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncyc7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vRmlsdGVyU2VydmljZSc7XHJcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VydmljZUltcGwgaW1wbGVtZW50cyBGaWx0ZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xyXG4gICAgdGhpcy5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuRmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXHJcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIHZhbHVlczogQXJyYXk8c3RyaW5nPixcclxuICAgIHVwZGF0ZVR5cGU6IEZpbHRlclVwZGF0ZVR5cGUsXHJcbiAgICBmaWx0ZXJPcHRpb25zOiBGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPEZpbHRlclVwZGF0ZVR5cGU+KHVwZGF0ZVR5cGUsIEZpbHRlclVwZGF0ZVR5cGUpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgRmlsdGVyVXBkYXRlVHlwZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuQXBwbHlDYXRlZ29yaWNhbEZpbHRlcjtcclxuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclZhbHVlc10gPSB2YWx1ZXM7XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmlsdGVyVXBkYXRlVHlwZV0gPSB1cGRhdGVUeXBlO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklzRXhjbHVkZU1vZGVdID1cclxuICAgICAgICAoZmlsdGVyT3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlck9wdGlvbnMuaXNFeGNsdWRlTW9kZSA9PT0gdW5kZWZpbmVkKSA/IGZhbHNlIDogZmlsdGVyT3B0aW9ucy5pc0V4Y2x1ZGVNb2RlO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZS5yZXN1bHQgYXMgQ29tbWFuZEVycm9yO1xyXG4gICAgICAgIGlmICghKGVycm9yLmVycm9yQ29kZSA9PT0gbnVsbCB8fCBlcnJvci5lcnJvckNvZGUgPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgIC8vIFRPRE86IGNvbWUgYmFjayBhbmQgaW1wbGVtZW50IGVycm9yIGhhbmRsaW5nIGxvZ2ljXHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIEFwcGx5aW5nIEZpbHRlcjogJyArIGVycm9yLmVycm9yQ29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWVsZE5hbWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlSYW5nZUZpbHRlckFzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCwgZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IFJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBpZiAoIWZpbHRlck9wdGlvbnMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogUmFuZ2VGaWx0ZXJPcHRpb25zJyk7XHJcbiAgICB9XHJcbiAgICBQYXJhbS52ZXJpZnlSYW5nZVBhcmFtVHlwZShmaWx0ZXJPcHRpb25zLm1pbiwgZmlsdGVyT3B0aW9ucy5tYXgpO1xyXG5cclxuICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuQXBwbHlSYW5nZUZpbHRlcjtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XHJcblxyXG4gICAgaWYgKGZpbHRlck9wdGlvbnMubWluKSB7XHJcbiAgICAgIGxldCBtaW46IHN0cmluZyB8IG51bWJlcjtcclxuICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWluIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIG1pbiA9IFBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybShmaWx0ZXJPcHRpb25zLm1pbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWluID0gZmlsdGVyT3B0aW9ucy5taW47XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU1pbl0gPSBtaW47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlck9wdGlvbnMubWF4KSB7XHJcbiAgICAgIGxldCBtYXg6IHN0cmluZyB8IG51bWJlcjtcclxuICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWF4IGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIG1heCA9IFBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybShmaWx0ZXJPcHRpb25zLm1heCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWF4ID0gZmlsdGVyT3B0aW9ucy5tYXg7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU1heF0gPSBtYXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbikge1xyXG4gICAgICBpZiAoIVBhcmFtLmlzVmFsaWRFbnVtVmFsdWU8TnVsbE9wdGlvbj4oZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uLCBOdWxsT3B0aW9uKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyIE51bGxPcHRpb24nKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclJhbmdlTnVsbE9wdGlvbl0gPSBFbnVtQ29udmVydGVyLm51bGxPcHRpb25zLmNvbnZlcnQoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uKTtcclxuICAgIH1cclxuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcclxuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW48c3RyaW5nPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWVsZE5hbWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlckFzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCwgZmllbGROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgdmVyYiA9IFZlcmJJZC5DbGVhckZpbHRlcjtcclxuICAgIGxldCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcclxuICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPHN0cmluZz4ocmVzcG9zbmUgPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGROYW1lO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbC50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJy4vRW51bUNvbnZlcnRlcic7XHJcbmV4cG9ydCB7IFBhcmFtIH0gZnJvbSAnLi9QYXJhbSc7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL3NyYy9BcGlVdGlscy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGNsYXNzIGNvbnZlcnRzIGZyb20gYSBzb3VyY2UgZW51bSB2YWx1ZSB0byBkZXN0aW5hdGlvbiBlbnVtXHJcbiAqIHZhbHVlIGdpdmVuIGEgbWFwcGluZyBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiB3aGVuIGNvbnN0cnVjdGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVudW1Db252ZXJ0ZXI8VFNvdXJjZVR5cGUgZXh0ZW5kcyBzdHJpbmcsIFREZXN0aW5hdGlvblR5cGU+IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hcHBpbmdzOiB7IFtlbnVtVmFsOiBzdHJpbmddOiBURGVzdGluYXRpb25UeXBlOyB9LFxyXG4gICAgcHJpdmF0ZSBkZWZhdWx0VmFsPzogVERlc3RpbmF0aW9uVHlwZSkgeyB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0KGVudW1WYWw6IFRTb3VyY2VUeXBlLCB0aHJvd0lmTWlzc2luZz86IGJvb2xlYW4pOiBURGVzdGluYXRpb25UeXBlIHtcclxuICAgIGlmICh0aGlzLm1hcHBpbmdzLmhhc093blByb3BlcnR5KGVudW1WYWwpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1hcHBpbmdzW2VudW1WYWwgYXMgc3RyaW5nXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VmFsICE9PSB1bmRlZmluZWQgJiYgIXRocm93SWZNaXNzaW5nKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNYXBwaW5nIG5vdCBmb3VuZCBmb3IgJyArIGVudW1WYWwpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvRW51bUNvbnZlcnRlci50c1xuICoqLyIsImV4cG9ydCBjbGFzcyBQYXJhbSB7XHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhhdCBhbiBpbmNvbWluZyBwYXJhbWV0ZXIgaXMgJ3RydXRoeScgYW5kIHRocm93c1xyXG4gICAqIGFuIGVycm9yIGlmIGl0J3Mgbm90LiBUaGlzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHZhbHVlXHJcbiAgICogaXMgbnVsbCwgdW5kZWZpbmVkLCBOYU4sIHRoZSBlbXB0eSBzdHJpbmcsIDAsIG9yIGZhbHNlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGFyZ3VtZW50VmFsdWUgdmFsdWUgdG8gdmVyaWZ5XHJcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxyXG4gICAqL1xyXG4gIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXHJcbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlWYWx1ZShhcmd1bWVudFZhbHVlOiBhbnksIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWFyZ3VtZW50VmFsdWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBpcyBpbnZhbGlkIGZvciBhcmd1bWVudDogJyArIGFyZ3VtZW50TmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGF0IGEgc3RyaW5nIGlzIHZhbGlkLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgaXNcclxuICAgKiBudWxsLCB1bmRlZmluZWQsIG9yIE5hTi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxyXG4gICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHZlcmlmeVN0cmluZyhhcmd1bWVudFZhbHVlOiBzdHJpbmcsIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRWYWx1ZSA9PT0gbnVsbCB8fCBhcmd1bWVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIHZhbHVlIGlzIHBhcnQgb2YgdGhlIEVudW1cclxuICAgKlxyXG4gICAqIFN0cmluZyBlbnVtcyBhcmUge3N0cmluZyA6IHN0cmluZ30gZGljdGlvbmFyaWVzIHdoaWNoIGFyZSBub3QgcmV2ZXJzZSBtYXBwYWJsZVxyXG4gICAqIFRoaXMgaXMgYW4gdWdseSB3b3JrYXJvdW5kXHJcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHZlcmlmeVxyXG4gICAqIEBwYXJhbSBlbnVtVHlwZSBlbnVtIHRvIHZlcmlmeSBhZ2FpbnN0XHJcbiAgICovXHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkRW51bVZhbHVlPEVudW1UeXBlPih2YWx1ZTogRW51bVR5cGUsIGVudW1UeXBlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaCgoZW51bUtleSkgPT4ge1xyXG4gICAgICBpZiAoZW51bVR5cGVbZW51bUtleV0gPT09IHZhbHVlLnRvU3RyaW5nKCkpIHtcclxuICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogc2VyaWFsaXplcyB0aGUgZGF0ZSBpbnRvIHRoZSBmb3JtYXQgdGhhdCB0aGUgc2VydmVyIGV4cGVjdHMuXHJcbiAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gc2VyaWFsaXplXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB5ZWFyOiBudW1iZXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aDogbnVtYmVyID0gZGF0ZS5nZXRVVENNb250aCgpICsgMTtcclxuICAgIGNvbnN0IGRheTogbnVtYmVyID0gZGF0ZS5nZXRVVENEYXRlKCk7XHJcbiAgICBjb25zdCBoaDogbnVtYmVyID0gZGF0ZS5nZXRVVENIb3VycygpO1xyXG4gICAgY29uc3QgbW06IG51bWJlciA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xyXG4gICAgY29uc3Qgc2VjOiBudW1iZXIgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcclxuICAgIHJldHVybiB5ZWFyICsgJy0nICsgbW9udGggKyAnLScgKyBkYXkgKyAnICcgKyBoaCArICc6JyArIG1tICsgJzonICsgc2VjO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIHBhcmFtcyBtaW4gYW5kIG1heCBmb3IgYXBwbHlpbmcgcmFuZ2UgZmlsdGVyXHJcbiAgICogQHBhcmFtIG1pbiByYW5nZSBtaW5cclxuICAgKiBAcGFyYW0gbWF4IHJhbmdlIG1heFxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5UmFuZ2VQYXJhbVR5cGUobWluOiBhbnksIG1heDogYW55KTogdm9pZCB7XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuICAgIGlmICghbWluICYmICFtYXgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIVBhcmFtLmlzVHlwZU51bWJlcihtaW4pICYmICFQYXJhbS5pc1R5cGVEYXRlKG1pbikpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1pbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1heCkgJiYgIVBhcmFtLmlzVHlwZURhdGUobWF4KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWF4Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZihtaW4pICE9PSB0eXBlb2YobWF4KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IFBhcmFtZXRlcnMgbWluIGFuZCBtYXggc2hvdWxkIGJlIG9mIHRoZSBzYW1lIHR5cGUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlTnVtYmVyKGlucHV0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YoaW5wdXQpID09PSAnbnVtYmVyJyB8fCBpbnB1dCBpbnN0YW5jZW9mIE51bWJlcjtcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIGlucHV0IGlzIGEgRGF0ZVxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlRGF0ZShpbnB1dDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL3NyYy9QYXJhbS50c1xuICoqLyIsImltcG9ydCB7IE51bGxPcHRpb24gYXMgRXh0ZXJuYWxOdWxsT3B0aW9uIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgTnVsbE9wdGlvbiBhcyBJbnRlcm5hbE51bGxPcHRpb24gfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XHJcblxyXG4vKiB0c2xpbnQ6ZGlzYWJsZTp0eXBlZGVmIC0gRGlzYWJsZSB0aGlzIHRvIG1ha2UgZGVjbGFyaW5nIHRoZXNlIGNsYXNzZXMgYSBiaXQgZWFzaWVyICovXHJcbi8qKlxyXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGV4dGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxyXG4gKiBpbiB0aGUgaW50ZXJuYWwtYXBpLWNvbnRyYWN0LCB3aGljaCBkZXZlbG9wZXJzIGNvZGUgYWdhaW5zdC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3Mge1xyXG4gIHB1YmxpYyBzdGF0aWMgbnVsbE9wdGlvbnMgPSBuZXcgRW51bUNvbnZlcnRlcjxFeHRlcm5hbE51bGxPcHRpb24sIEludGVybmFsTnVsbE9wdGlvbj4oe1xyXG4gICAgW0V4dGVybmFsTnVsbE9wdGlvbi5BbGxWYWx1ZXNdOiBJbnRlcm5hbE51bGxPcHRpb24uQWxsVmFsdWVzLFxyXG4gICAgW0V4dGVybmFsTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzXTogSW50ZXJuYWxOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXMsXHJcbiAgICBbRXh0ZXJuYWxOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXNdOiBJbnRlcm5hbE51bGxPcHRpb24uTnVsbFZhbHVlc1xyXG4gIH0pO1xyXG59XHJcbi8qIHRzbGludDplbmFibGU6dHlwZWRlZiAqL1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MudHNcbiAqKi8iLCJpbXBvcnQgeyBBY3RpdmVNYXJrcywgRGF0YVR5cGUgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQge1xyXG4gIERhdGFUYWJsZSBhcyBEYXRhVGFibGVJbnRlcm5hbENvbnRyYWN0LFxyXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxyXG4gIEhpZ2hsaWdodGVkTWFya3NUYWJsZSxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgU2VsZWN0ZWRNYXJrc1RhYmxlLFxyXG4gIFVuZGVybHlpbmdEYXRhVGFibGUsXHJcbiAgVmVyYklkLFxyXG4gIFZpc3VhbElkLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBDb2x1bW4sIERhdGFUYWJsZSwgRGF0YVZhbHVlIH0gZnJvbSAnLi4vLi4vTW9kZWxzL0dldERhdGFNb2RlbHMnO1xyXG5pbXBvcnQgeyBHZXREYXRhU2VydmljZSwgR2V0RGF0YVR5cGUgfSBmcm9tICcuLi9HZXREYXRhU2VydmljZSc7XHJcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XHJcblxyXG5leHBvcnQgY2xhc3MgR2V0RGF0YVNlcnZpY2VJbXBsIGltcGxlbWVudHMgR2V0RGF0YVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5HZXREYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhQXN5bmMoXHJcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICBnZXRUeXBlOiBHZXREYXRhVHlwZSxcclxuICAgIGlnbm9yZUFsaWFzZXM6IGJvb2xlYW4sXHJcbiAgICBpZ25vcmVTZWxlY3Rpb246IGJvb2xlYW4sXHJcbiAgICBpbmNsdWRlQWxsQ29sdW1uczogYm9vbGVhbixcclxuICAgIG1heFJvd3M6IG51bWJlcik6IFByb21pc2U8RGF0YVRhYmxlPiB7XHJcbiAgICAgIC8vIENyZWF0ZSBhbGwgb2Ygb3VyIHBhcmFtZXRlcnNcclxuICAgICAgY29uc3QgdmVyYiA9IGdldFR5cGUgPT09IEdldERhdGFUeXBlLlN1bW1hcnkgPyBWZXJiSWQuR2V0RGF0YVN1bW1hcnlEYXRhIDogVmVyYklkLkdldFVuZGVybHlpbmdEYXRhO1xyXG4gICAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdID0gaWdub3JlQWxpYXNlcztcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5JZ25vcmVTZWxlY3Rpb25dID0gaWdub3JlU2VsZWN0aW9uO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkluY2x1ZGVBbGxDb2x1bW5zXSA9IGluY2x1ZGVBbGxDb2x1bW5zO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLk1heFJvd3NdID0gbWF4Um93cztcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPERhdGFUYWJsZT4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBVbmRlcmx5aW5nRGF0YVRhYmxlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSZXN1bHRzVGFibGUocmVzcG9uc2VEYXRhLmRhdGEsIHJlc3BvbnNlRGF0YS5pc1N1bW1hcnkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPEFjdGl2ZU1hcmtzPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHsgW1BhcmFtZXRlcklkLlZpc3VhbElkXTogdmlzdWFsSWQgfTtcclxuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoZXIuZXhlY3V0ZShWZXJiSWQuR2V0U2VsZWN0ZWRNYXJrcywgcGFyYW1ldGVycykudGhlbjxBY3RpdmVNYXJrcz4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgU2VsZWN0ZWRNYXJrc1RhYmxlO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YS5kYXRhLm1hcCh0YWJsZSA9PiB0aGlzLnByb2Nlc3NSZXN1bHRzVGFibGUodGFibGUsIHRydWUpKVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKHZpc3VhbElkOiBWaXN1YWxJZCk6IFByb21pc2U8QWN0aXZlTWFya3M+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0geyBbUGFyYW1ldGVySWQuVmlzdWFsSWRdOiB2aXN1YWxJZCB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXRIaWdobGlnaHRlZE1hcmtzLCBwYXJhbWV0ZXJzKS50aGVuPEFjdGl2ZU1hcmtzPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBIaWdobGlnaHRlZE1hcmtzVGFibGU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwcm9jZXNzUmVzdWx0c1RhYmxlKHJlc3BvbnNlRGF0YTogRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCwgaXNTdW1tYXJ5OiBib29sZWFuKTogRGF0YVRhYmxlIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZURhdGEuaGVhZGVycy5tYXAoaCA9PiBuZXcgQ29sdW1uKGguZmllbGRDYXB0aW9uLCBEYXRhVHlwZS5TdHJpbmcgLypoLkRhdGFUeXBlKi8sIGguaXNSZWZlcmVuY2VkLCBoLmluZGV4KSk7XHJcbiAgICBjb25zdCB0YWJsZSA9IHJlc3BvbnNlRGF0YS5kYXRhVGFibGUubWFwKHJvdyA9PiB7XHJcbiAgICAgIHJldHVybiByb3cubWFwKGNlbGwgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGNlbGwudmFsdWUsIGNlbGwuZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXcgRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9HZXREYXRhU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBJbnRlcm5hbEFwaURpc3BhdGNoZXIsIE1vZGVsLCBOb3RpZmljYXRpb24sIE5vdGlmaWNhdGlvbklkIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFVucmVnaXN0ZXJGbiB9IGZyb20gJy4uL05vdGlmaWNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuY2xhc3MgUmVnaXN0cmF0aW9uIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpbHRlckZuOiAobm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBjYWxsYmFja0ZuOiAobm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKSA9PiB2b2lkKSB7XHJcbiAgICAgIC8vIE5vdGhpbmcgSGVyZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbk1vZGVsOiBNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyRm4obm90aWZpY2F0aW9uTW9kZWwpKSB7XHJcbiAgICAgIHRoaXMuY2FsbGJhY2tGbihub3RpZmljYXRpb25Nb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZUltcGwgaW1wbGVtZW50cyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIGhhbmRsZXJzOiB7IFtub3RpZmljYXRpb25JZDogc3RyaW5nXTogQXJyYXk8UmVnaXN0cmF0aW9uPiB9O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpIHtcclxuICAgIHRoaXMuaGFuZGxlcnMgPSB7fTtcclxuICAgIHRoaXMuZGlzcGF0Y2hlci5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIodGhpcy5vbk5vdGlmaWNhdGlvbi5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuTm90aWZpY2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVySGFuZGxlcihpZDogTm90aWZpY2F0aW9uSWQsIGZpbHRlckZuOiAobW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLCBoYW5kbGVyOiAobW9kZWw6IE1vZGVsKSA9PiB2b2lkKTogVW5yZWdpc3RlckZuIHtcclxuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5oYW5kbGVyc1tpZF0gfHwgbmV3IEFycmF5PFJlZ2lzdHJhdGlvbj4oKTtcclxuICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IG5ldyBSZWdpc3RyYXRpb24oZmlsdGVyRm4sIGhhbmRsZXIpO1xyXG4gICAgaGFuZGxlcnMucHVzaChyZWdpc3RyYXRpb24pO1xyXG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBoYW5kbGVycztcclxuICAgIHJldHVybiAoKSA9PiB0aGlzLnJlbW92ZVJlZ2lzdHJhdGlvbihpZCwgcmVnaXN0cmF0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSGFuZGxlcnNGb3JOb3RpZmljYXRpb25UeXBlKGlkOiBOb3RpZmljYXRpb25JZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcnMuaGFzT3duUHJvcGVydHkoaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHbyB0aHJvdWdoIGFuZCBjaGVjayBmb3IgYWxsIHRoZSBoYW5kbGVycyBvZiB0aGlzIHBhcnRpY3VsYXIgbm90aWZpY2F0aW9uXHJcbiAgICB0aGlzLmhhbmRsZXJzW25vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25JZF0uZm9yRWFjaChoID0+IGgub25Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRhdGEpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlUmVnaXN0cmF0aW9uKGlkOiBOb3RpZmljYXRpb25JZCwgcmVnaXN0cmF0aW9uOiBSZWdpc3RyYXRpb24pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUoaWQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IHRoaXMuaGFuZGxlcnNbaWRdLmZpbHRlcihyZWcgPT4gcmVnICE9PSByZWdpc3RyYXRpb24pO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCIvKipcclxuICogQmFzZSBpbnRlcmZhY2UgZm9yIGFuIGFwaSBzZXJ2aWNlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFwaVNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG5hbWUgZm9yIHRoaXMgc2VydmljZS5cclxuICAgKi9cclxuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBzZXJ2aWNlIG5hbWUgd2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBhcGktc2hhcmVkIHByb2plY3RcclxuICovXHJcbmV4cG9ydCBjb25zdCBlbnVtIFNlcnZpY2VOYW1lcyB7XHJcbiAgR2V0RGF0YSA9ICdnZXQtZGF0YS1zZXJ2aWNlJyxcclxuICBGaWx0ZXIgPSAnZmlsdGVyLXNlcnZpY2UnLFxyXG4gIE5vdGlmaWNhdGlvbiA9ICdub3RpZmljYXRpb24tc2VydmljZSdcclxufVxyXG5cclxuLyoqXHJcbiAqIERvIHNvbWUgZ2xvYmFibCBkZWNsYXJhdGlvbnMgc28gd2UgY2FuIGNyZWF0ZSBhIHNpbmdsZXRvbiBvbiB0aGUgd2luZG93IG9iamVjdFxyXG4gKi9cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBXaW5kb3cgeyBfX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk6IFNlcnZpY2VSZWdpc3RyeSB8IHVuZGVmaW5lZDsgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWdpc3RyeSB7XHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgbmV3IHNlcnZpY2UgaW50byB0aGUgc2VydmljZSByZWdpc3RyeS4gQW55IGV4aXN0aW5nIG9uZSB3aWxsXHJcbiAgICogYmUgb3ZlcndyaXR0ZW4uIHRoZSBzZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgdW5kZXIgc2VydmljZS5zZXJ2aWNlTmFtZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBcGlTZXJ2aWNlfSBzZXJ2aWNlIFRoZSBzZXJ2aXZlIHRvIHJlZ2lzdGVyXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJTZXJ2aWNlKHNlcnZpY2U6IEFwaVNlcnZpY2UpOiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGdpdmVuIHNlcnZpY2UgZnJvbSB0aGUgcmVnaXN0cnkuIElmIHRoZXJlIGlzIG5vdCBhXHJcbiAgICogc2VydmljZSByZWdpc3RlcmVkIHVuZGVyIHRoYXQgbmFtZSwgdGhyb3dzIGFuZCBlcnJvclxyXG4gICAqXHJcbiAgICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UuXHJcbiAgICogQHJldHVybnMge1R9IFRoZSByZXF1ZXN0ZWQgc2VydmljZVxyXG4gICAqL1xyXG4gIGdldFNlcnZpY2U8VCBleHRlbmRzIEFwaVNlcnZpY2U+KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBUO1xyXG59XHJcblxyXG5jbGFzcyBTZXJ2aWNlUmVnaXN0cnlJbXBsIGltcGxlbWVudHMgU2VydmljZVJlZ2lzdHJ5IHtcclxuICBwcml2YXRlIHNlcnZpY2VzOiB7IFtzZXJ2aWNlTmFtZTogc3RyaW5nXTogQXBpU2VydmljZTsgfTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5zZXJ2aWNlcyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyU2VydmljZShzZXJ2aWNlOiBBcGlTZXJ2aWNlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2VzW3NlcnZpY2Uuc2VydmljZU5hbWVdID0gc2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZXJ2aWNlPFQgZXh0ZW5kcyBBcGlTZXJ2aWNlPihzZXJ2aWNlTmFtZTogc3RyaW5nKTogVCB7XHJcbiAgICBpZiAoIXRoaXMuc2VydmljZXMuaGFzT3duUHJvcGVydHkoc2VydmljZU5hbWUpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gU2VydmljZSAke3NlcnZpY2VOYW1lfSBpcyByZWdpc3RlcmVkYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZXNbc2VydmljZU5hbWVdIGFzIFQ7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogc3RhdGljIGNsYXNzIHVzZWQgZm9yIGdldHRpbmcgYWNjZXNzIHRvIHRoZSBzaW5nbGUgaW5zdGFuY2VcclxuICogb2YgdGhlIEFwaVNlcnZpY2VSZWdpc3RyeVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2VSZWdpc3RyeSB7XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBTZXJ2aWNlUmVnaXN0cnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBTZXJ2aWNlUmVnaXN0cnkge1xyXG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XHJcbiAgICAgIEFwaVNlcnZpY2VSZWdpc3RyeS5zZXRJbnN0YW5jZShuZXcgU2VydmljZVJlZ2lzdHJ5SW1wbCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NpZ25pbmcgc2VydmljZSByZWdpc3RyeSBmYWlsZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2luZG93Ll9fdGFibGVhdUFwaVNlcnZpY2VSZWdpc3RyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIHJlZ2lzdHJ5IGluc3RhbmNlLiBDYW4gYmUgdXNlZCBieSB1bml0IHRlc3RzXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1NlcnZpY2VSZWdpc3RyeX0gc2VydmljZVJlZ2lzdHJ5IFRoZSBuZXcgcmVnaXN0cnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHNlcnZpY2VSZWdpc3RyeT86IFNlcnZpY2VSZWdpc3RyeSk6IHZvaWQge1xyXG4gICAgd2luZG93Ll9fdGFibGVhdUFwaVNlcnZpY2VSZWdpc3RyeSA9IHNlcnZpY2VSZWdpc3RyeTtcclxuICB9XHJcblxyXG4gIC8vIFByaXZhdGUgdG8gYXZvaWQgYW55b25lIGNvbnN0cnVjdGluZyB0aGlzXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEFkZEluQ29udGV4dCBhcyBFeHRlcm5hbEFkZEluQ29udGV4dCxcclxuICBBZGRJbk1vZGUgYXMgRXh0ZXJuYWxBZGRJbk1vZGUsXHJcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSBhcyBFeHRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUsXHJcbiAgRGF0YVR5cGUgYXMgRXh0ZXJuYWxEYXRhVHlwZSxcclxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcclxuICBTaGVldFR5cGUgYXMgRXh0ZXJuYWxTaGVldFR5cGVcclxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQge1xyXG4gIEFkZEluQ29udGV4dCBhcyBJbnRlcm5hbEFkZEluQ29udGV4dCxcclxuICBBZGRJbk1vZGUgYXMgSW50ZXJuYWxBZGRJbk1vZGUsXHJcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSBhcyBJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUsXHJcbiAgRGF0YVR5cGUgYXMgSW50ZXJuYWxEYXRhVHlwZSxcclxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcclxuICBTaGVldFR5cGUgYXMgSW50ZXJuYWxTaGVldFR5cGVcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XHJcblxyXG4vKiB0c2xpbnQ6ZGlzYWJsZTp0eXBlZGVmIC0gRGlzYWJsZSB0aGlzIHRvIG1ha2UgZGVjbGFyaW5nIHRoZXNlIGNsYXNzZXMgYSBiaXQgZWFzaWVyICovXHJcbi8qKlxyXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGludGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxyXG4gKiBpbiB0aGUgZXh0ZXJuYWwtYXBpLWNvbnRyYWN0LCB3aGljaCBkZXZlbG9wZXJzIGNvZGUgYWdhaW5zdC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3Mge1xyXG4gIHB1YmxpYyBzdGF0aWMgYWRkSW5Db250ZXh0ID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxBZGRJbkNvbnRleHQsIEV4dGVybmFsQWRkSW5Db250ZXh0Pih7XHJcbiAgICBbSW50ZXJuYWxBZGRJbkNvbnRleHQuRGVza3RvcF06IEV4dGVybmFsQWRkSW5Db250ZXh0LkRlc2t0b3AsXHJcbiAgICBbSW50ZXJuYWxBZGRJbkNvbnRleHQuU2VydmVyXTogRXh0ZXJuYWxBZGRJbkNvbnRleHQuU2VydmVyLFxyXG4gICAgW0ludGVybmFsQWRkSW5Db250ZXh0LlVua25vd25dOiBFeHRlcm5hbEFkZEluQ29udGV4dC5Vbmtub3duXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYWRkSW5Nb2RlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxBZGRJbk1vZGUsIEV4dGVybmFsQWRkSW5Nb2RlPih7XHJcbiAgICBbSW50ZXJuYWxBZGRJbk1vZGUuQXV0aG9yaW5nXTogRXh0ZXJuYWxBZGRJbk1vZGUuQXV0aG9yaW5nLFxyXG4gICAgW0ludGVybmFsQWRkSW5Nb2RlLlZpZXdpbmddOiBFeHRlcm5hbEFkZEluTW9kZS5WaWV3aW5nLFxyXG4gICAgW0ludGVybmFsQWRkSW5Nb2RlLlVua25vd25dOiBFeHRlcm5hbEFkZEluTW9kZS5Vbmtub3duXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc2hlZXRUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxTaGVldFR5cGUsIEV4dGVybmFsU2hlZXRUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuRGFzaGJvYXJkXTogRXh0ZXJuYWxTaGVldFR5cGUuRGFzaGJvYXJkLFxyXG4gICAgW0ludGVybmFsU2hlZXRUeXBlLlN0b3J5XTogRXh0ZXJuYWxTaGVldFR5cGUuU3RvcnksXHJcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGFzaGJvYXJkT2JqZWN0VHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSwgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuTGVnZW5kXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuUGFnZUZpbHRlcl06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhcmFtZXRlckNvbnRyb2wsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5UZXh0XTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRleHQsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldlYlBhZ2UsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldF06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXRcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRhVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGF0YVR5cGUsIEV4dGVybmFsRGF0YVR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERhdGFUeXBlLkJvb2xdOiBFeHRlcm5hbERhdGFUeXBlLkJvb2wsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5EYXRlXTogRXh0ZXJuYWxEYXRhVHlwZS5EYXRlLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRGF0ZVRpbWVdOiBFeHRlcm5hbERhdGFUeXBlLkRhdGVUaW1lLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRmxvYXRdOiBFeHRlcm5hbERhdGFUeXBlLkZsb2F0LFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuSW50XTogRXh0ZXJuYWxEYXRhVHlwZS5JbnQsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5TdHJpbmddOiBFeHRlcm5hbERhdGFUeXBlLlN0cmluZ1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpbHRlclVwZGF0ZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsIEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZT4oe1xyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWRkLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BbGxdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWxsLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmVdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuUmVtb3ZlLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2VcclxuICB9KTtcclxufVxyXG4vKiB0c2xpbnQ6ZW5hYmxlOnR5cGVkZWYgKi9cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHsgRGFzaGJvYXJkIGFzIERhc2hib2FyZENvbnRyYWN0LCBEYXNoYm9hcmRPYmplY3QgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRGFzaGJvYXJkSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvRGFzaGJvYXJkSW1wbCc7XHJcbmltcG9ydCB7IFNoZWV0IH0gZnJvbSAnLi9TaGVldCc7XHJcbmltcG9ydCB7IFdvcmtzaGVldCB9IGZyb20gJy4vV29ya3NoZWV0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmQgZXh0ZW5kcyBTaGVldCBpbXBsZW1lbnRzIERhc2hib2FyZENvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkYXNoYm9hcmRJbXBsOiBEYXNoYm9hcmRJbXBsKSB7XHJcbiAgICBzdXBlcihkYXNoYm9hcmRJbXBsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0cygpOiBBcnJheTxXb3Jrc2hlZXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhc2hib2FyZEltcGwud29ya3NoZWV0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgb2JqZWN0cygpOiBBcnJheTxEYXNoYm9hcmRPYmplY3Q+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRGFzaGJvYXJkLnRzXG4gKiovIiwiaW1wb3J0IHsgU2hlZXQgYXMgU2hlZXRDb250cmFjdCwgU2hlZXRUeXBlLCBTaXplIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgRXZlbnRMaXN0ZW5lck1hbmFnZXIgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IFNoZWV0SW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvU2hlZXRJbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaGVldCBleHRlbmRzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgU2hlZXRDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hlZXRJbXBsOiBTaGVldEltcGwpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNoZWV0SW1wbC5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaGVldFR5cGUoKTogU2hlZXRUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnNoZWV0SW1wbC5zaGVldFR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNpemUoKTogU2l6ZSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1NoZWV0LnRzXG4gKiovIiwiaW1wb3J0IHsgRGFzaGJvYXJkQ29udGVudCBhcyBEYXNoYm9hcmRDb250ZW50Q29udHJhY3QgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgRGFzaGJvYXJkIH0gZnJvbSAnLi4vRGFzaGJvYXJkJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgRGFzaGJvYXJkQ29udGVudCBuYW1lc3BhY2UuXHJcbiAqIFRoaXMgZG9lcyBub3QgZm9sbG93IHRoZSBJbXBsIHBhdHRlcm4gYXMgRGFzaGJvYXJkQ29udGVudCBpc1xyXG4gKiBjdXJyZW50bHkganVzdCBhIChzaW5nbGUpIHByb3BlcnR5IGJhZy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDb250ZW50IGltcGxlbWVudHMgRGFzaGJvYXJkQ29udGVudENvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGFzaGJvYXJkOiBEYXNoYm9hcmQpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBEYXNoYm9hcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9EYXNoYm9hcmRDb250ZW50LnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBBZGRJbkNvbnRleHQsXHJcbiAgQWRkSW5Nb2RlLFxyXG4gIEVudmlyb25tZW50IGFzIEVudmlyb25tZW50Q29udHJhY3RcclxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBZGRJbkVudmlyb25tZW50IH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzIGFzIEVudW1NYXBwaW5ncyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCBuYW1lc3BhY2UuXHJcbiAqIEVudmlyb25tZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzXHJcbiAqIGp1c3QgYSBwcm9wZXJ0eSBiYWcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnQgaW1wbGVtZW50cyBFbnZpcm9ubWVudENvbnRyYWN0IHtcclxuICBwcml2YXRlIF9hcGlWZXJzaW9uOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfY29udGV4dDogQWRkSW5Db250ZXh0O1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbW9kZTogQWRkSW5Nb2RlO1xyXG4gIHByaXZhdGUgX29wZXJhdGluZ1N5c3RlbTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3RhYmxlYXVWZXJzaW9uOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihhZGRJbkVudmlyb25tZW50OiBBZGRJbkVudmlyb25tZW50KSB7XHJcbiAgICB0aGlzLl9hcGlWZXJzaW9uID0gYWRkSW5FbnZpcm9ubWVudC5hcGlWZXJzaW9uO1xyXG4gICAgdGhpcy5fY29udGV4dCA9IEVudW1NYXBwaW5ncy5hZGRJbkNvbnRleHQuY29udmVydChhZGRJbkVudmlyb25tZW50LmFkZEluQ29udGV4dCk7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGFkZEluRW52aXJvbm1lbnQuYWRkSW5MYW5ndWFnZTtcclxuICAgIHRoaXMuX2xvY2FsZSA9IGFkZEluRW52aXJvbm1lbnQuYWRkSW5Mb2NhbGU7XHJcbiAgICB0aGlzLl9tb2RlID0gRW51bU1hcHBpbmdzLmFkZEluTW9kZS5jb252ZXJ0KGFkZEluRW52aXJvbm1lbnQuYWRkSW5Nb2RlKTtcclxuICAgIHRoaXMuX29wZXJhdGluZ1N5c3RlbSA9IGFkZEluRW52aXJvbm1lbnQub3BlcmF0aW5nU3lzdGVtO1xyXG4gICAgdGhpcy5fdGFibGVhdVZlcnNpb24gPSBhZGRJbkVudmlyb25tZW50LnRhYmxlYXVWZXJzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGlWZXJzaW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBpVmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29udGV4dCgpOiBBZGRJbkNvbnRleHQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBBZGRJbk1vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9wZXJhdGluZ1N5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGluZ1N5c3RlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVhdVZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90YWJsZWF1VmVyc2lvbjtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9FbnZpcm9ubWVudC50c1xuICoqLyIsImltcG9ydCB7IFNldHRpbmdzIGFzIFNldHRpbmdzQ29udHJhY3QgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgU2V0dGluZ3NJbXBsIH0gZnJvbSAnLi4vSW50ZXJuYWwvU2V0dGluZ3NJbXBsJztcclxuaW1wb3J0IHsgU2V0dGluZ3NDb2xsZWN0aW9uIH0gZnJvbSAnLi4vU2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgc2V0dGluZ3MgbmFtZXNwYWNlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIGltcGxlbWVudHMgU2V0dGluZ3NDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3NJbXBsOiBTZXR0aW5nc0ltcGwpIHsgfVxyXG5cclxuICBwdWJsaWMgZXJhc2Uoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0dGluZ3NJbXBsLmVyYXNlKGtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXQoa2V5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGwoKTogU2V0dGluZ3NDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXRBbGwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNNb2RpZmllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5pc01vZGlmaWVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBc3luYygpOiBQcm9taXNlPFNldHRpbmdzQ29sbGVjdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLnNhdmVBc3luYygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR0aW5nc0ltcGwuc2V0KGtleSwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRXh0ZXJuYWxOYW1lc3BhY2VzL1NldHRpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2VJbXBsIH0gZnJvbSAgJy4vSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFsbEFkZEluU2VydmljZXMoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogdm9pZCB7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgU2V0dGluZ3NTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcy50c1xuICoqLyIsImltcG9ydCB7IEFkZEluQm9vdHN0cmFwSW5mbywgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLCBWZXJiSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5TZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9BZGRJblNlcnZpY2VOYW1lcyc7XHJcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL0luaXRpYWxpemF0aW9uU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEluaXRpYWxpemF0aW9uU2VydmljZSB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEFkZEluU2VydmljZU5hbWVzLkluaXRpYWxpemF0aW9uU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplRGFzaGJvYXJkQWRkSW5Bc3luYygpOiBQcm9taXNlPEFkZEluQm9vdHN0cmFwSW5mbz4ge1xyXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBhbnkgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGJlY2F1c2UgdGhleSBhcmUgYWRkZWQgaW4gZm9yIHVzIGJ5IHRoZSBkaXNwYXRjaGVyXHJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkluaXRpYWxpemVBZGRJbiwge30pLnRoZW48QWRkSW5Cb290c3RyYXBJbmZvPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIC8vIFRPRE8gLSBWYWxpZGF0ZSByZXR1cm4gdmFsdWVcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBBZGRJbkJvb3RzdHJhcEluZm87XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1NlcnZpY2VzL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWRkSW5TZXR0aW5nc0luZm8sXHJcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFZlcmJJZFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJblNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL0FkZEluU2VydmljZU5hbWVzJztcclxuaW1wb3J0IHsgU2V0dGluZ3NDb2xsZWN0aW9uLCBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9TZXR0aW5nc1NlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZUltcGwgaW1wbGVtZW50cyBTZXR0aW5nc1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBZGRJblNlcnZpY2VOYW1lcy5TZXR0aW5nc1NlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVNldHRpbmdzQXN5bmMoc2V0dGluZ3M6IFNldHRpbmdzQ29sbGVjdGlvbik6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlc10gPSBzZXR0aW5ncztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLlNhdmVBZGRJblNldHRpbmdzLCBwYXJhbWV0ZXJzKS50aGVuPFNldHRpbmdzQ29sbGVjdGlvbj4odmFsdWUgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZS5yZXN1bHQgYXMgQWRkSW5TZXR0aW5nc0luZm87XHJcblxyXG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnNldHRpbmdzVmFsdWVzKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvciBzYXZpbmcgc2V0dGluZ3MuJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybihyZXN1bHQuc2V0dGluZ3NWYWx1ZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBWZXJzaW9uTnVtYmVyIGFzIFZlcnNpb25OdW1iZXJDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5kZWNsYXJlIHZhciBBRERJTl9BUElfVkVSU0lPTl9OVU1CRVI6IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGFkZGluIGxpYnJhcnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJzaW9uTnVtYmVyIGltcGxlbWVudHMgVmVyc2lvbk51bWJlckNvbnRyYWN0IHtcclxuXHJcbiAgLy8gVXNpbmcgc29tZSB3ZWJwYWNrIHRyaWNrcywgd2UgY2FuIGluamVjdCB0aGlzIHZlcnNpb24gaW50byBvdXIgY29kZSAoa2luZGEgbGlrZSBjKysgcHJlcHJvY2Vzc29yIHN0dWZmKVxyXG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBWZXJzaW9uTnVtYmVyID0gbmV3IFZlcnNpb25OdW1iZXIoQURESU5fQVBJX1ZFUlNJT05fTlVNQkVSKTtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSB2ZXJzaW9uIG51bWJlci5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBWZXJzaW9uTnVtYmVyIHtcclxuICAgIHJldHVybiBWZXJzaW9uTnVtYmVyLmluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbWFqb3I6IG51bWJlcjtcclxuICBwcml2YXRlIF9taW5vcjogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2ZpeDogbnVtYmVyO1xyXG5cclxuICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIHNvIGV2ZXJ5b25lIHVzZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxyXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmVyc2lvblN0cmluZzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IHZlcnNpb25TdHJpbmcuc3BsaXQoJy4nKS5tYXAocCA9PiBwYXJzZUludChwLCAxMCkpO1xyXG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmVyc2lvbiBudW1iZXI6ICcgKyB2ZXJzaW9uU3RyaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9tYWpvciA9IHBhcnRzWzBdO1xyXG4gICAgdGhpcy5fbWlub3IgPSBwYXJ0c1sxXTtcclxuICAgIHRoaXMuX2ZpeCA9IHBhcnRzWzJdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtYWpvcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21ham9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtaW5vcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21pbm9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmaXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9maXg7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9WZXJzaW9uTnVtYmVyLnRzXG4gKiovIiwiaW1wb3J0IHsgU2hlZXRUeXBlIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBBZGRJbkRhc2hib2FyZEluZm8sXHJcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSxcclxuICBTaGVldFBhdGgsXHJcbiAgVmlzdWFsSWRcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5TaGVldEluZm9JbXBsIH0gZnJvbSAnLi9BZGRJblNoZWV0SW5mb0ltcGwnO1xyXG5pbXBvcnQgeyBTaGVldEltcGwgfSBmcm9tICcuL1NoZWV0SW1wbCc7XHJcbmltcG9ydCB7IFdvcmtzaGVldEltcGwgfSBmcm9tICcuL1dvcmtzaGVldEltcGwnO1xyXG5cclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcclxuICBwcml2YXRlIF93b3Jrc2hlZXRzOiBBcnJheTxXb3Jrc2hlZXQ+O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoaW5mbzogQWRkSW5EYXNoYm9hcmRJbmZvLCBzaGVldFBhdGg6IFNoZWV0UGF0aCkge1xyXG4gICAgc3VwZXIobmV3IEFkZEluU2hlZXRJbmZvSW1wbChpbmZvLm5hbWUsIFNoZWV0VHlwZS5EYXNoYm9hcmQpKTtcclxuICAgIHRoaXMuX3dvcmtzaGVldHMgPSBuZXcgQXJyYXk8V29ya3NoZWV0PigpO1xyXG5cclxuICAgIC8vIFByb2Nlc3MgYWxsIHRoZSB6b25lcyB3aGljaCBhcmUgY29udGFpbmVkIGluIHRoaXMgZGFzaGJvYXJkXHJcbiAgICBmb3IgKGNvbnN0IHpvbmUgb2YgaW5mby56b25lcykge1xyXG4gICAgICBpZiAoem9uZS56b25lVHlwZSA9PT0gRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXQpIHtcclxuICAgICAgICBjb25zdCBzaGVldEluZm8gPSBuZXcgQWRkSW5TaGVldEluZm9JbXBsKHpvbmUubmFtZSwgU2hlZXRUeXBlLldvcmtzaGVldCk7XHJcbiAgICAgICAgY29uc3Qgdml6SWQ6IFZpc3VhbElkID0ge1xyXG4gICAgICAgICAgd29ya3NoZWV0OiB6b25lLm5hbWUsXHJcbiAgICAgICAgICBkYXNoYm9hcmQ6IGluZm8ubmFtZSxcclxuICAgICAgICAgIHN0b3J5Ym9hcmQ6IHNoZWV0UGF0aC5zdG9yeWJvYXJkLFxyXG4gICAgICAgICAgZmxpcGJvYXJkWm9uZUlEOiBzaGVldFBhdGguZmxpcGJvYXJkWm9uZUlELFxyXG4gICAgICAgICAgc3RvcnlQb2ludElEOiBzaGVldFBhdGguc3RvcnlQb2ludElEXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgd29ya3NoZWV0SW1wbCA9IG5ldyBXb3Jrc2hlZXRJbXBsKHNoZWV0SW5mbywgdml6SWQpO1xyXG4gICAgICAgIHRoaXMuX3dvcmtzaGVldHMucHVzaChuZXcgV29ya3NoZWV0KHdvcmtzaGVldEltcGwpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB3b3Jrc2hlZXRzKCk6IEFycmF5PFdvcmtzaGVldD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldHM7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9JbnRlcm5hbC9EYXNoYm9hcmRJbXBsLnRzXG4gKiovIiwiaW1wb3J0IHsgU2hlZXRUeXBlIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBZGRJblNoZWV0SW5mb0ltcGwge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyxcclxuICAgIHByaXZhdGUgX3NoZWV0VHlwZTogU2hlZXRUeXBlKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXRUeXBlKCk6IFNoZWV0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hlZXRUeXBlO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvQWRkSW5TaGVldEluZm9JbXBsLnRzXG4gKiovIiwiaW1wb3J0IHsgU2hlZXRUeXBlIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEFkZEluU2hlZXRJbmZvSW1wbCB9IGZyb20gJy4vQWRkSW5TaGVldEluZm9JbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaGVldEltcGwge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9zaGVldFR5cGU6IFNoZWV0VHlwZTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNoZWV0SW5mb0ltcGw6IEFkZEluU2hlZXRJbmZvSW1wbCkge1xyXG4gICAgdGhpcy5fbmFtZSA9IHNoZWV0SW5mb0ltcGwubmFtZTtcclxuICAgIHRoaXMuX3NoZWV0VHlwZSA9IHNoZWV0SW5mb0ltcGwuc2hlZXRUeXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNoZWV0VHlwZSgpOiBTaGVldFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0VHlwZTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ludGVybmFsL1NoZWV0SW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWN0aXZlTWFya3MsXHJcbiAgRGF0YVRhYmxlLFxyXG4gIEZpbHRlck9wdGlvbnMsXHJcbiAgRmlsdGVyVXBkYXRlVHlwZSxcclxuICBHZXRTdW1tYXJ5RGF0YU9wdGlvbnMsXHJcbiAgR2V0VW5kZXJseWluZ0RhdGFPcHRpb25zLFxyXG4gIFJhbmdlRmlsdGVyT3B0aW9ucyxcclxuICBUYWJsZWF1RXZlbnRUeXBlLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbklkLCBWaXN1YWxJZCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5LFxyXG4gIEZpbHRlclNlcnZpY2UsXHJcbiAgR2V0RGF0YVNlcnZpY2UsXHJcbiAgR2V0RGF0YVR5cGUsXHJcbiAgTWFya3NTZWxlY3RlZEV2ZW50LFxyXG4gIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgU2VydmljZU5hbWVzLFxyXG4gIFNpbmdsZUV2ZW50TWFuYWdlcixcclxuICBTaW5nbGVFdmVudE1hbmFnZXJJbXBsLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcclxuaW1wb3J0IHsgQWRkSW5TaGVldEluZm9JbXBsIH0gZnJvbSAnLi9BZGRJblNoZWV0SW5mb0ltcGwnO1xyXG5pbXBvcnQgeyBTaGVldEltcGwgfSBmcm9tICcuL1NoZWV0SW1wbCc7XHJcblxyXG5jb25zdCB2aXN1YWxJZHNBcmVFcXVhbCA9IGZ1bmN0aW9uKGE6IFZpc3VhbElkLCBiOiBWaXN1YWxJZCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBhICYmIGIgJiZcclxuICAgIGEud29ya3NoZWV0ID09PSBiLndvcmtzaGVldCAmJlxyXG4gICAgYS5kYXNoYm9hcmQgPT09IGIuZGFzaGJvYXJkICYmXHJcbiAgICBhLnN0b3J5Ym9hcmQgPT09IGIuc3Rvcnlib2FyZCAmJlxyXG4gICAgYS5zdG9yeVBvaW50SUQgPT09IGIuc3RvcnlQb2ludElEICYmXHJcbiAgICBhLmZsaXBib2FyZFpvbmVJRCA9PT0gYi5mbGlwYm9hcmRab25lSUQ7XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya3NoZWV0SW1wbCBleHRlbmRzIFNoZWV0SW1wbCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNoZWV0SW5mb0ltcGw6IEFkZEluU2hlZXRJbmZvSW1wbCwgcHJpdmF0ZSBfdmlzdWFsSWQ6IFZpc3VhbElkKSB7XHJcbiAgICBzdXBlcihzaGVldEluZm9JbXBsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxyXG4gICAqIHdpdGggdGhlIE5vdGlmaWNhdGlvblNlcnZpY2UuIEl0IHJldHVybnMgYW4gYXJyYXkgb2YgU2luZ2xlRXZlbnRNYW5hZ2VyIG9iamVjdHMgd2hpY2hcclxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1dvcmtzaGVldH0gd29ya3NoZWV0IFRoZSB3b3Jrc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xyXG4gICAqIEByZXR1cm5zIHtBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+fSBDb2xsZWN0aW9uIG9mIGV2ZW50IG1hbmFnZXJzIHRvIHBhc3MgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXJcclxuICAgKi9cclxuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50cyh3b3Jrc2hlZXQ6IFdvcmtzaGVldCk6IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4ge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+KCk7XHJcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgdGhpcyBzZXJ2aWNlIHJlZ2lzdGVyZWQsIGp1c3QgcmV0dXJuXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcclxuICAgIGNvbnN0IG1hcmtzRXZlbnQgPSBuZXcgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxNYXJrc1NlbGVjdGVkRXZlbnQ+KFRhYmxlYXVFdmVudFR5cGUuTWFya1NlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuU2VsZWN0ZWRNYXJrc0NoYW5nZWQsIChtb2RlbCkgPT4ge1xyXG4gICAgICBjb25zdCB2aXN1YWxJZCA9IG1vZGVsIGFzIFZpc3VhbElkO1xyXG4gICAgICByZXR1cm4gdmlzdWFsSWRzQXJlRXF1YWwodmlzdWFsSWQsIHRoaXMudmlzdWFsSWQpO1xyXG4gICAgfSwgKHZpejogVmlzdWFsSWQpID0+IHtcclxuICAgICAgbWFya3NFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IE1hcmtzU2VsZWN0ZWRFdmVudCh3b3Jrc2hlZXQpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJlc3VsdHMucHVzaChtYXJrc0V2ZW50KTtcclxuXHJcbiAgICAvLyBUT0RPIC0gb3RoZXIgZXZlbnQgdHlwZXNcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmlzdWFsSWQoKTogVmlzdWFsSWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Zpc3VhbElkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZywgdmFsdWVzOiBBcnJheTxzdHJpbmc+LCB1cGRhdGVUeXBlOiBGaWx0ZXJVcGRhdGVUeXBlLCBvcHRpb25zOiBGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gc2VydmljZS5hcHBseUZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSwgdmFsdWVzLCB1cGRhdGVUeXBlLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyT3B0aW9uczogUmFuZ2VGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmFwcGx5UmFuZ2VGaWx0ZXJBc3luYyh0aGlzLnZpc3VhbElkLCBmaWVsZE5hbWUsIGZpbHRlck9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEZpbHRlclNlcnZpY2U+KFNlcnZpY2VOYW1lcy5GaWx0ZXIpO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuY2xlYXJGaWx0ZXJBc3luYyh0aGlzLnZpc3VhbElkLCBmaWVsZE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPEFjdGl2ZU1hcmtzPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmdldFNlbGVjdGVkTWFya3NBc3luYyh0aGlzLnZpc3VhbElkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxBY3RpdmVNYXJrcz4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEdldERhdGFTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuR2V0RGF0YSk7XHJcbiAgICByZXR1cm4gc2VydmljZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBHZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPERhdGFUYWJsZT4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEdldERhdGFTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuR2V0RGF0YSk7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICByZXR1cm4gc2VydmljZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxyXG4gICAgICB0aGlzLnZpc3VhbElkLCBHZXREYXRhVHlwZS5TdW1tYXJ5LCAhIW9wdGlvbnMuaWdub3JlQWxpYXNlcywgISFvcHRpb25zLmlnbm9yZVNlbGVjdGlvbiwgdHJ1ZSwgMCk7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM6IEdldFVuZGVybHlpbmdEYXRhT3B0aW9ucyk6IFByb21pc2U8RGF0YVRhYmxlPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8R2V0RGF0YVNlcnZpY2U+KFNlcnZpY2VOYW1lcy5HZXREYXRhKTtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhcclxuICAgICAgdGhpcy52aXN1YWxJZCxcclxuICAgICAgR2V0RGF0YVR5cGUuVW5kZXJseWluZyxcclxuICAgICAgISFvcHRpb25zLmlnbm9yZUFsaWFzZXMsXHJcbiAgICAgICEhb3B0aW9ucy5pZ25vcmVTZWxlY3Rpb24sXHJcbiAgICAgICEhb3B0aW9ucy5pbmNsdWRlQWxsQ29sdW1ucyxcclxuICAgICAgb3B0aW9ucy5tYXhSb3dzIHx8IDApO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvV29ya3NoZWV0SW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWN0aXZlTWFya3MsXHJcbiAgRGFzaGJvYXJkLFxyXG4gIERhdGFUYWJsZSxcclxuICBGaWx0ZXIsXHJcbiAgRmlsdGVyT3B0aW9ucyxcclxuICBGaWx0ZXJVcGRhdGVUeXBlLFxyXG4gIEdldFN1bW1hcnlEYXRhT3B0aW9ucyxcclxuICBHZXRVbmRlcmx5aW5nRGF0YU9wdGlvbnMsXHJcbiAgUmFuZ2VGaWx0ZXJPcHRpb25zLFxyXG4gIFdvcmtzaGVldCBhcyBXb3Jrc2hlZXRDb250cmFjdFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldCB9IGZyb20gJy4vU2hlZXQnO1xyXG5cclxuaW1wb3J0IHsgV29ya3NoZWV0SW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvV29ya3NoZWV0SW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya3NoZWV0IGV4dGVuZHMgU2hlZXQgaW1wbGVtZW50cyBXb3Jrc2hlZXRDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSB3b3Jrc2hlZXRJbXBsOiBXb3Jrc2hlZXRJbXBsO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3Iod29ya3NoZWV0SW1wbDogV29ya3NoZWV0SW1wbCkge1xyXG4gICAgc3VwZXIod29ya3NoZWV0SW1wbCk7XHJcbiAgICB0aGlzLndvcmtzaGVldEltcGwgPSB3b3Jrc2hlZXRJbXBsO1xyXG5cclxuICAgIC8vIENhbGwgdG8gaW5pdGlhbGl6ZSBldmVudHMgYW5kIHRoZW4gY2FsbCBkb3duIHRvIHRoZSBldmVudCBsaXN0ZW5lciBtYW5hZ2VyIHRvIGhhbmRsZSB0aGluZ3NcclxuICAgIHRoaXMud29ya3NoZWV0SW1wbC5pbml0aWFsaXplRXZlbnRzKHRoaXMpLmZvckVhY2goZSA9PiB0aGlzLmFkZE5ld0V2ZW50VHlwZShlKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHBhcmVudERhc2hib2FyZCgpOiBEYXNoYm9hcmQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXJBc3luYyhcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZXM6IEFycmF5PHN0cmluZz4sIHVwZGF0ZVR5cGU6IEZpbHRlclVwZGF0ZVR5cGUsIG9wdGlvbnM6IEZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICByZXR1cm4gdGhpcy53b3Jrc2hlZXRJbXBsLmFwcGx5RmlsdGVyQXN5bmMoZmllbGROYW1lLCB2YWx1ZXMsIHVwZGF0ZVR5cGUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZywgZmlsdGVyT3B0aW9uczogUmFuZ2VGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtzaGVldEltcGwuYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc2hlZXRJbXBsLmNsZWFyRmlsdGVyQXN5bmMoZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWx0ZXJzQXN5bmMoKTogUHJvbWlzZTxGaWx0ZXJbXT4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8QWN0aXZlTWFya3M+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtzaGVldEltcGwuZ2V0U2VsZWN0ZWRNYXJrc0FzeW5jKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8QWN0aXZlTWFya3M+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtzaGVldEltcGwuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBHZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPERhdGFUYWJsZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NoZWV0SW1wbC5nZXRTdW1tYXJ5RGF0YUFzeW5jKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhQXN5bmMob3B0aW9uczogR2V0VW5kZXJseWluZ0RhdGFPcHRpb25zKTogUHJvbWlzZTxEYXRhVGFibGU+IHtcclxuICAgIHJldHVybiB0aGlzLndvcmtzaGVldEltcGwuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhvcHRpb25zKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1dvcmtzaGVldC50c1xuICoqLyIsImltcG9ydCB7IEFkZEluU2V0dGluZ3NJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcclxuXHJcbmltcG9ydCB7IEFkZEluU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvQWRkSW5TZXJ2aWNlTmFtZXMnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1NldHRpbmdzU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NJbXBsIHtcclxuICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgY3VycmVudFNldHRpbmdzOiBTZXR0aW5nc0NvbGxlY3Rpb247XHJcblxyXG4gIC8vIFNpbmNlIHByb21pc2VzIGNhbid0IGJlIGludHJvc3BlY3RlZCBmb3Igc3RhdGUsIGtlZXAgYSB2YXJpYWJsZSB0aGF0XHJcbiAgLy8gaW5kaWNhdGVzIGEgc2F2ZSBpcyBpbiBwcm9ncmVzcywgc28gdGhhdCBzZXQvZXJhc2UgY2FuJ3QgYmUgY2FsbGVkIGR1cmluZyBhIHNhdmUuXHJcbiAgcHJpdmF0ZSBzYXZlSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2V0dGluZ3NJbmZvOiBBZGRJblNldHRpbmdzSW5mbykge1xyXG4gICAgdGhpcy5pbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlcmFzZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoa2V5LCAna2V5Jyk7XHJcblxyXG4gICAgLy8gT25seSBtYWtlIGEgbW9kaWZpY2F0aW9uIGlmIHdlIGhhdmUgdGhlIGtleSBhbHJlYWR5XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U2V0dGluZ3Nba2V5XSkge1xyXG4gICAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRTZXR0aW5nc1trZXldO1xyXG4gICAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoa2V5LCAna2V5Jyk7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U2V0dGluZ3Nba2V5XTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGwoKTogU2V0dGluZ3NDb2xsZWN0aW9uIHtcclxuICAgIC8vIFJldHVybnMgYSBtdXRhYmxlIGNvcHkgb2YgdGhlIHNldHRpbmdzXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXJyZW50U2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc01vZGlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAvLyBKdXN0IHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgc2V0dGluZ3MgYXJlIHVuY2hhbmdlZFxyXG4gICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmU8U2V0dGluZ3NDb2xsZWN0aW9uPih0aGlzLmN1cnJlbnRTZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYXZlSW5Qcm9ncmVzcyA9IHRydWU7XHJcblxyXG4gICAgLy8gVXNlIHRoZSBzZXR0aW5ncyBzZXJ2aWNlIHRvIHNhdmUgc2V0dGluZ3MgdG8gdHdiXHJcbiAgICBjb25zdCBzZXR0aW5nc1NlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZXR0aW5nc1NlcnZpY2U+KFxyXG4gICAgICBBZGRJblNlcnZpY2VOYW1lcy5TZXR0aW5nc1NlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiBzZXR0aW5nc1NlcnZpY2Uuc2F2ZVNldHRpbmdzQXN5bmModGhpcy5jdXJyZW50U2V0dGluZ3MpLnRoZW48U2V0dGluZ3NDb2xsZWN0aW9uPihuZXdTZXR0aW5ncyA9PiB7XHJcbiAgICAgIHRoaXMuc2F2ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgdGhpcy5faXNNb2RpZmllZCA9IGZhbHNlO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY3VycmVudFNldHRpbmdzLCBuZXdTZXR0aW5ncyk7XHJcbiAgICAgIHJldHVybiBuZXdTZXR0aW5ncztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoa2V5LCAna2V5Jyk7IC8vIEtleSBzaG91bGRuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAgUGFyYW0udmVyaWZ5U3RyaW5nKHZhbHVlLCAndmFsdWUnKTsgLy8gRW1wdHkgc3RyaW5nIHZhbHVlIGlzIGFsbG93ZWQuXHJcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRTZXR0aW5nc1trZXldID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNldHRpbmdzKHNldHRpbmdzSW5mbzogQWRkSW5TZXR0aW5nc0luZm8pOiB2b2lkIHtcclxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKHNldHRpbmdzSW5mbywgJ3NldHRpbmdzSW5mbycpO1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzLCAnc2V0dGluZ3NJbmZvLlNldHRpbmdzVmFsdWVzJyk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50U2V0dGluZ3MgPSBzZXR0aW5nc0luZm8uc2V0dGluZ3NWYWx1ZXM7XHJcblxyXG4gICAgLy8gUmVzZXQgdGhlIGlzTW9kaWZpZWQgZmxhZ1xyXG4gICAgdGhpcy5faXNNb2RpZmllZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBoZWxwZXIgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IGxvY2FsIHVwZGF0ZSB0byB0aGlzLmN1cnJlbnRTZXR0aW5ncy5cclxuICAgKiBDaGVja3MgaWYgYSBjdXJyZW50IHNhdmUgY2FsbCBpcyBzdGlsbCBpbiBwcm9ncmVzcyBhbmQgdGhyb3dzIGFuIGVycm9yIGlmIHNvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNhdmVJblByb2dyZXNzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXN5bmMgU2F2ZSBpcyBpbiBwcm9ncmVzcywgdXBkYXRpbmcgc2V0dGluZ3MgaXMgbm90IGFsbG93ZWQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9JbnRlcm5hbC9TZXR0aW5nc0ltcGwudHNcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/Examples/HelloFrelard/tableau-addin-0.3.0.js b/Examples/HelloFrelard/tableau-addin-0.3.0.js deleted file mode 100644 index 5e13a1e0..00000000 --- a/Examples/HelloFrelard/tableau-addin-0.3.0.js +++ /dev/null @@ -1,20442 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Main"] = factory(); - else - root["Main"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var FrelardDesktopBootstrap_1 = __webpack_require__(1); - // This Main function will be executed when this module is loaded. Attempt to do our - // bootstrapping with qt and log any errors we encounter - FrelardDesktopBootstrap_1.doBootstrap().catch(function (e) { - console.error('Desktop bootstrapping failed: ' + e); - }); - - -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_core_1 = __webpack_require__(2); - var api_internal_contract_1 = __webpack_require__(29); - var AddInApiPresLayerImpl_1 = __webpack_require__(30); - var DesktopApiDispatcher_1 = __webpack_require__(31); - var QtWebChannelImpl_1 = __webpack_require__(32); - /** - * Wrapper for all the bootstrapping logic. This code attempts to initialize the qt pres-layer - * as well as the desktop dispatcher. It then assigns it to the global desktop dispatcher to - * be picked up by the add-in external Api - */ - function doBootstrap() { - // First we need to initialize the webchannel pres-layer - var dispatcherPromise = QtWebChannelImpl_1.initializeWebChannelPresLayer().then(function (preslayer) { - var presLayerApi = new AddInApiPresLayerImpl_1.AddInApiPresLayerImpl(preslayer); - if (!presLayerApi.AddInInstanceInfo.addInLocatorPresModel) { - throw new Error('AddInInstanceInfo undefined'); - } - // Initialize the apiEventHandler and the desktopDispatcher with it - var apiEventHandler = new api_core_1.ApiEventHandler(presLayerApi, presLayerApi.AddInInstanceInfo.addInLocatorPresModel); - var desktopDispatcher = new DesktopApiDispatcher_1.DesktopApiDispatcher(apiEventHandler); - return desktopDispatcher; - }); - // Assign the desktop dispatcher for the other project to find it - api_internal_contract_1.InternalApiDispatcherHolder.setDesktopDispatcherPromise(dispatcherPromise); - return dispatcherPromise; - } - exports.doBootstrap = doBootstrap; - - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(3)); - var Events_1 = __webpack_require__(16); - exports.NotificationId = Events_1.NotificationId; - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistryFactory_1 = __webpack_require__(11); - var EventMappingRegistryFactory_1 = __webpack_require__(15); - var ParameterMappingRegistryFactory_1 = __webpack_require__(23); - /** - * Main class for the api-core project. This class is responsible for executing comamnd and marshalling notifcations - * between the internal Api and the pres-layer Api. After construction, SetVersionNumber must be called in order to - * use this class - * - * @export - * @class ApiEventHandler - */ - var ApiEventHandler = (function () { - /** - * Creates an instance of ApiEventHandler. - * @param {PresentationLayer} presLayer - An implementation of the pres-layer Api to use - * @param {AddInLocatorPresModel} addInLocatorPresModel - locator for the add-in which is being referenced - * @memberof ApiEventHandler - */ - function ApiEventHandler(presLayer, addInLocatorPresModel) { - this._presLayer = presLayer; - this._presLayerAddInLocator = addInLocatorPresModel; - } - /** - * Sets the internal Api version number which the external library is expecting to use. This must be called before - * anything else in order to properly set up the translation layers. - * - * @param {VersionNumber} versionNumber - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setVersionNumber = function (versionNumber) { - this._versionNumber = versionNumber; - // Initialize all our registries - this._commandRegistry = CommandMappingRegistryFactory_1.CommandMappingRegistryFactory.createCommandMappingRegistry(versionNumber); - this._apiToPresLayerRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createApiToPresLayerParamRegistry(versionNumber); - this._presLayerToApiRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createPresLayerToApiParamRegistry(versionNumber); - this._eventRegistry = EventMappingRegistryFactory_1.EventMappingRegistryFactory.createEventMappingRegistry(versionNumber); - // Convert our addInLocator to the Api version - this._apiAddInLocator = this._presLayerToApiRegistry - .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.AddInLocator)(this._presLayerAddInLocator); - for (var _i = 0, _a = Object.keys(this._eventRegistry); _i < _a.length; _i++) { - var plEventId = _a[_i]; - // Register for all notifications we know about and bind the event type to the callback - this._presLayer.registerNotificationHandler(plEventId, this.onPresLayerNotification.bind(this, plEventId)); - } - }; - /** - * Sets an event handler function to be notified when Api events come in. Only a single registration is supported. - * - * @param {NotificationHandler} eventHandler - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setEventHandler = function (eventHandler) { - this._eventHandler = eventHandler; - // TODO - Register for pres layer events - }; - /** - * Executes the requested Api command by converting the parameters, running the command against the pres-layer, - * then processing the result back into a format the Api can understand - * - * @param {VerbId} verb - * @param {ExecuteParameters} parameters - * @returns {Promise} - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.execute = function (verb, parameters) { - var _this = this; - this.assertInitialized(); - var command = this._commandRegistry.getCommand(verb); - parameters = parameters || {}; - // Augment the command with the locator if it's needed - if (command.needsAddInLocator) { - parameters[api_internal_contract_1.ParameterId.AddInLocator] = this._apiAddInLocator; - } - var commandsParams = command.createParams(parameters, this._apiToPresLayerRegistry); - return this._presLayer.invokeCommand('tabdoc', command.commandId, commandsParams) - .then(function (commandResult) { - var convertedResult = command.ProcessResult(commandResult, _this._presLayerToApiRegistry); - return { - result: convertedResult - }; - }); - }; - /** - * Helper method to check that things are initialized as expected. Throws if initialization not complete - * - * @private - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.assertInitialized = function () { - if (!this._versionNumber) { - throw new Error('VersionNumber not yet configured. Cannot take any actions'); - } - }; - /** - * Called when a new event notification comes in from the presentation layer - * - * @param eventId The pres layer event id - * @param presModel The pres model that is included with the event - */ - ApiEventHandler.prototype.onPresLayerNotification = function (eventId, presModel) { - // First look up this eventId in our registry and convert to presModel - var eventMapping = this._eventRegistry[eventId]; - var apiModel = eventMapping.converter(presModel); - if (this._eventHandler) { - this._eventHandler(eventMapping.apiId, apiModel); - } - }; - return ApiEventHandler; - }()); - exports.ApiEventHandler = ApiEventHandler; - - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - __export(__webpack_require__(9)); - - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - var DomainRestrictionType; - (function (DomainRestrictionType) { - DomainRestrictionType["All"] = "all"; - DomainRestrictionType["List"] = "list"; - DomainRestrictionType["Range"] = "range"; - })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {})); - var DateStepPeriod; - (function (DateStepPeriod) { - DateStepPeriod["Years"] = "years"; - DateStepPeriod["Quarters"] = "quarters"; - DateStepPeriod["Months"] = "months"; - DateStepPeriod["Weeks"] = "weeks"; - DateStepPeriod["Days"] = "days"; - DateStepPeriod["Hours"] = "hours"; - DateStepPeriod["Minutes"] = "minutes"; - DateStepPeriod["Seconds"] = "seconds"; - })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {})); - /** - * The option for specifying which values to include for filtering. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "nullvalues"; - NullOption["NonNullValues"] = "nonnullvalues"; - NullOption["AllValues"] = "allvalues"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - NotificationId["ParameterChanged"] = "parameter-changed"; - NotificationId["FilterChanged"] = "filter-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetName"] = "worksheet-name"; - ParameterId["DashboardName"] = "dashboard"; - ParameterId["ParameterInfo"] = "parameter-info"; - ParameterId["ParameterInfos"] = "parameter-infos"; - ParameterId["ParameterCaption"] = "paremeter-caption"; - ParameterId["ParameterFieldName"] = "parameter-field-name"; - ParameterId["ParameterValue"] = "parameter-value"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - VerbId["GetParametersForSheet"] = "get-parameters-for-sheet"; - VerbId["FindParameter"] = "find-parameter"; - VerbId["ChangeParameterValue"] = "change-parameter-value"; - VerbId["ClearSelectedMarks"] = "clear-selected-marks"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - "use strict"; - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\typescript\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\params-ts.template', u'..\\typescript\\js-api\\api-core\\temp-pres-layer\\all-params.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - // DPI_IntegerRLE, having type int[] - ParameterId["IntegerRLE"] = "intRle"; - // DPI_UnsignedIntegerRLE, having type uint[] - ParameterId["UnsignedIntegerRLE"] = "uintRle"; - // DPI_FloatRLE, having type float[] - ParameterId["FloatRLE"] = "floatRle"; - // DPI_ParameterID, having type string - ParameterId["ParameterID"] = "paramType"; - // DPI_AllowCustomDatabase, having type bool - ParameterId["AllowCustomDatabase"] = "allowCustomDatabase"; - // DPI_AllowCustomSchema, having type bool - ParameterId["AllowCustomSchema"] = "allowCustomSchema"; - // DPI_AllowCustomSQL, having type bool - ParameterId["AllowCustomSQL"] = "allowCustomSql"; - // DPI_AllowCustomSQLWithoutSchema, having type bool - ParameterId["AllowCustomSQLWithoutSchema"] = "allowCustomSqlWithoutSchema"; - // DPI_AllowPreviewData, having type bool - ParameterId["AllowPreviewData"] = "allowPreviewData"; - // DPI_AllowStoredProc, having type bool - ParameterId["AllowStoredProc"] = "allowStoredProcedure"; - // DPI_AllowUnion, having type bool - ParameterId["AllowUnion"] = "allowUnion"; - // DPI_AreVariablesVisible, having type bool - ParameterId["AreVariablesVisible"] = "areVariablesVisible"; - // DPI_AttrLegacyConnection, having type bool - ParameterId["AttrLegacyConnection"] = "widgetAttrLegacy"; - // DPI_AttrReadUncommitted, having type bool - ParameterId["AttrReadUncommitted"] = "widgetAttrReadUncommittedData"; - // DPI_AttrRequireSSL, having type bool - ParameterId["AttrRequireSSL"] = "widgetAttrRequireSsl"; - // DPI_AttrRequireEncryption, having type bool - ParameterId["AttrRequireEncryption"] = "widgetAttrRequireEncryption"; - // DPI_Bool, having type bool - ParameterId["Bool"] = "bool"; - // DPI_CanPartition, having type bool - ParameterId["CanPartition"] = "canPartition"; - // DPI_CanRecommendDataSources, having type bool - ParameterId["CanRecommendDataSources"] = "canRecommendDatasources"; - // DPI_CanRecommendTables, having type bool - ParameterId["CanRecommendTables"] = "canRecommendTables"; - // DPI_CheckPermissions, having type bool - ParameterId["CheckPermissions"] = "checkPermissions"; - // DPI_DatabaseNameOptional, having type bool - ParameterId["DatabaseNameOptional"] = "databaseNameOptional"; - // DPI_DatabaseWHOptional, having type bool - ParameterId["DatabaseWHOptional"] = "databaseWarehouseOptional"; - // DPI_DoValidation, having type bool - ParameterId["DoValidation"] = "doValidation"; - // DPI_DoneLoadingAllSheets, having type bool - ParameterId["DoneLoadingAllSheets"] = "googleSheetDoneLoading"; - // DPI_GABasicItemsEnabled, having type bool - ParameterId["GABasicItemsEnabled"] = "gaBasicItemsEnabled"; - // DPI_GADimensionMeasuresEnabled, having type bool - ParameterId["GADimensionMeasuresEnabled"] = "gaDimensionsMeasuresEnabled"; - // DPI_GAFiltersEnabled, having type bool - ParameterId["GAFiltersEnabled"] = "gaFiltersEnabled"; - // DPI_HasDatabase, having type bool - ParameterId["HasDatabase"] = "hasDatabase"; - // DPI_HasDataLoss, having type bool - ParameterId["HasDataLoss"] = "hasDataLoss"; - // DPI_HasFastMetadata, having type bool - ParameterId["HasFastMetadata"] = "hasFastMetadata"; - // DPI_HasNewlyDiscoveredSchema, having type bool - ParameterId["HasNewlyDiscoveredSchema"] = "hasNewlyDiscoveredSchema"; - // DPI_HasPermissions, having type bool - ParameterId["HasPermissions"] = "hasPermissions"; - // DPI_HasSchema, having type bool - ParameterId["HasSchema"] = "hasSchema"; - // DPI_HasSchemaCount, having type bool - ParameterId["HasSchemaCount"] = "hasSchemaCount"; - // DPI_HasTables, having type bool - ParameterId["HasTables"] = "hasTables"; - // DPI_HasUncommittedChanges, having type bool - ParameterId["HasUncommittedChanges"] = "hasUncommittedChanges"; - // DPI_HasWarehouse, having type bool - ParameterId["HasWarehouse"] = "hasWarehouse"; - // DPI_HasWarning, having type bool - ParameterId["HasWarning"] = "hasWarning"; - // DPI_IsCalculated, having type bool - ParameterId["IsCalculated"] = "isCalculated"; - // DPI_IsConnectedToDataSource, having type bool - ParameterId["IsConnectedToDataSource"] = "isConnectedDatasource"; - // DPI_IsDisabledDataConnection, having type bool - ParameterId["IsDisabledDataConnection"] = "isDisabledDataConnection"; - // DPI_IsEditable, having type bool - ParameterId["IsEditable"] = "isEditable"; - // DPI_IsEnabled, having type bool - ParameterId["IsEnabled"] = "isEnabled"; - // DPI_IsFinishedConnecting, having type bool - ParameterId["IsFinishedConnecting"] = "isFinishedConnecting"; - // DPI_IsHidden, having type bool - ParameterId["IsHidden"] = "isHidden"; - // DPI_IsMultiTable, having type bool - ParameterId["IsMultiTable"] = "isMultiTable"; - // DPI_IsNewCustomSQL, having type bool - ParameterId["IsNewCustomSQL"] = "isNewCustomSql"; - // DPI_IsNewDataSource, having type bool - ParameterId["IsNewDataSource"] = "isNewDataSrc"; - // DPI_IsPublishedFederated, having type bool - ParameterId["IsPublishedFederated"] = "isPublishedFederated"; - // DPI_IsSampled, having type bool - ParameterId["IsSampled"] = "isSampled"; - // DPI_IsSchemaMemberNewlyDiscovered, having type bool - ParameterId["IsSchemaMemberNewlyDiscovered"] = "isSchemaMemberNewlyDiscovered"; - // DPI_IsSlowFast, having type bool - ParameterId["IsSlowFast"] = "isSlowfast"; - // DPI_IsSupported, having type bool - ParameterId["IsSupported"] = "isSupported"; - // DPI_IsTableSelectionVisible, having type bool - ParameterId["IsTableSelectionVisible"] = "isTableSelectionVisible"; - // DPI_IsTableauServerDatasource, having type bool - ParameterId["IsTableauServerDatasource"] = "isTableauServerDatasource"; - // DPI_IsTableauServerDatasourceConnectable, having type bool - ParameterId["IsTableauServerDatasourceConnectable"] = "isTableauServerDatasourceConnectable"; - // DPI_IsTableauServerDatasourceDownloadable, having type bool - ParameterId["IsTableauServerDatasourceDownloadable"] = "isTableauServerDatasourceDownloadable"; - // DPI_IsVisible, having type bool - ParameterId["IsVisible"] = "isVisible"; - // DPI_NeedFlatten, having type bool - ParameterId["NeedFlatten"] = "needFlatten"; - // DPI_SSLRequiresCertificate, having type bool - ParameterId["SSLRequiresCertificate"] = "sslRequiresCertificate"; - // DPI_SchemaOptional, having type bool - ParameterId["SchemaOptional"] = "schemaOptional"; - // DPI_ServiceNameOptional, having type bool - ParameterId["ServiceNameOptional"] = "serviceNameOptional"; - // DPI_ShouldWarnForCrossSchemaJoins, having type bool - ParameterId["ShouldWarnForCrossSchemaJoins"] = "shouldWarnCrossSchemaJoins"; - // DPI_ShowBrowseButton, having type bool - ParameterId["ShowBrowseButton"] = "showBrowseButton"; - // DPI_ShowConnectionPrompt, having type bool - ParameterId["ShowConnectionPrompt"] = "showConnectionPrompt"; - // DPI_ShowDBBrowseButton, having type bool - ParameterId["ShowDBBrowseButton"] = "showDbBrowseButton"; - // DPI_ShowDBNamePrompt, having type bool - ParameterId["ShowDBNamePrompt"] = "showDbPrompt"; - // DPI_ShowDBWHNamePrompt, having type bool - ParameterId["ShowDBWHNamePrompt"] = "showDbwhPrompt"; - // DPI_ShowImportSSLCertLabel, having type bool - ParameterId["ShowImportSSLCertLabel"] = "showImportSslcertLabel"; - // DPI_ShowPortPrompt, having type bool - ParameterId["ShowPortPrompt"] = "showPortPrompt"; - // DPI_ShowSSLCheckbox, having type bool - ParameterId["ShowSSLCheckbox"] = "showSslCheckbox"; - // DPI_ShowEncryptionCheckbox, having type bool - ParameterId["ShowEncryptionCheckbox"] = "showEncryptionCheckbox"; - // DPI_ShowServerNamePrompt, having type bool - ParameterId["ShowServerNamePrompt"] = "showServerPrompt"; - // DPI_ShowServiceNamePrompt, having type bool - ParameterId["ShowServiceNamePrompt"] = "showServicePrompt"; - // DPI_ShowUncommittedDataCheckbox, having type bool - ParameterId["ShowUncommittedDataCheckbox"] = "showUncommittedDataCheckbox"; - // DPI_SupportsGenericAuth, having type bool - ParameterId["SupportsGenericAuth"] = "supportsGenericAuth"; - // DPI_TableauServerFetchAscending, having type bool - ParameterId["TableauServerFetchAscending"] = "tableauServerFetchAscending"; - // DPI_UsesRadioButton, having type bool - ParameterId["UsesRadioButton"] = "usesRadioButton"; - // DPI_BigQueryLegacySQLCheckStatus, having type bool - ParameterId["BigQueryLegacySQLCheckStatus"] = "datasourceBigqueryLegacySqlCheckStatus"; - // DPI_HasBigQueryLegacySQLCheck, having type bool - ParameterId["HasBigQueryLegacySQLCheck"] = "datasourceBigqueryLegacySqlCheck"; - // DPI_AutoFetchLimit, having type int - ParameterId["AutoFetchLimit"] = "autoFetchLimit"; - // DPI_ConnectionType, having type int - ParameterId["ConnectionType"] = "connectionType"; - // DPI_IconId, having type int - ParameterId["IconId"] = "iconId"; - // DPI_SelectedCatalogIndex, having type int - ParameterId["SelectedCatalogIndex"] = "selectedCatalogIndex"; - // DPI_SelectedCubeIndex, having type int - ParameterId["SelectedCubeIndex"] = "selectedCubeIndex"; - // DPI_SelectedGAAccountIndex, having type int - ParameterId["SelectedGAAccountIndex"] = "selectedGaAccountIndex"; - // DPI_SelectedGAMeasureSetIndex, having type int - ParameterId["SelectedGAMeasureSetIndex"] = "selectedGaMeasureSetIndex"; - // DPI_SelectedGAPropertyIndex, having type int - ParameterId["SelectedGAPropertyIndex"] = "selectedGaPropertyIndex"; - // DPI_SelectedGASegmentIndex, having type int - ParameterId["SelectedGASegmentIndex"] = "selectedGaSegmentIndex"; - // DPI_SelectedGAViewIndex, having type int - ParameterId["SelectedGAViewIndex"] = "selectedGaViewIndex"; - // DPI_SelectedGoogleSheetIndex, having type int - ParameterId["SelectedGoogleSheetIndex"] = "selectedGoogleSheetIndex"; - // DPI_SelectedOptionIndex, having type int - ParameterId["SelectedOptionIndex"] = "selectedOptionIndex"; - // DPI_SlowMetadataCount, having type int - ParameterId["SlowMetadataCount"] = "slowMetadataCount"; - // DPI_TableauServerFetchSortBy, having type int - ParameterId["TableauServerFetchSortBy"] = "tableauServerFetchSort"; - // DPI_ActualParameterOrdinal, having type uint - ParameterId["ActualParameterOrdinal"] = "actualParameterOrdinal"; - // DPI_ActualParameterType, having type uint - ParameterId["ActualParameterType"] = "actualParameterType"; - // DPI_CharSetID, having type uint - ParameterId["CharSetID"] = "charsetId"; - // DPI_DataSourceOrdinal, having type uint - ParameterId["DataSourceOrdinal"] = "datasourceOrdinal"; - // DPI_FilterCount, having type uint - ParameterId["FilterCount"] = "filterCount"; - // DPI_VariablesCount, having type uint - ParameterId["VariablesCount"] = "variablesCount"; - // DPI_ActualParameterDisplayName, having type string - ParameterId["ActualParameterDisplayName"] = "actualParameterDisplayName"; - // DPI_ActualParameterName, having type string - ParameterId["ActualParameterName"] = "actualParameterName"; - // DPI_ActualParameterValue, having type string - ParameterId["ActualParameterValue"] = "actualParameterValue"; - // DPI_AttrAPIVersion, having type string - ParameterId["AttrAPIVersion"] = "attrApiVersion"; - // DPI_AttrAuthType, having type string - ParameterId["AttrAuthType"] = "widgetAttrAuthtype"; - // DPI_AttrConnectionData, having type string - ParameterId["AttrConnectionData"] = "attrConnectionData"; - // DPI_AttrConnectionName, having type string - ParameterId["AttrConnectionName"] = "attrConnectionName"; - // DPI_AttrConnectionType, having type string - ParameterId["AttrConnectionType"] = "widgetAttrConnectiontype"; - // DPI_AttrConnectionURL, having type string - ParameterId["AttrConnectionURL"] = "attrConnectionUrl"; - // DPI_AttrCubeSpecificationId, having type string - ParameterId["AttrCubeSpecificationId"] = "widgetAttrCubeSpecificationId"; - // DPI_AttrCubeSpecificationValue, having type string - ParameterId["AttrCubeSpecificationValue"] = "widgetAttrCubeSpecificationValue"; - // DPI_AttrDSN, having type string - ParameterId["AttrDSN"] = "widgetAttrDsn"; - // DPI_AttrDatabase, having type string - ParameterId["AttrDatabase"] = "widgetAttrDb"; - // DPI_AttrDatabaseWarehouse, having type string - ParameterId["AttrDatabaseWarehouse"] = "widgetAttrDbwh"; - // DPI_AttrDriver, having type string - ParameterId["AttrDriver"] = "widgetAttrDriver"; - // DPI_AttrFilename, having type string - ParameterId["AttrFilename"] = "widgetAttrFilename"; - // DPI_AttrHTTPPath, having type string - ParameterId["AttrHTTPPath"] = "widgetAttrHttpPath"; - // DPI_AttrIncrementalRefreshKey, having type string - ParameterId["AttrIncrementalRefreshKey"] = "attrIncrementalRefreshKey"; - // DPI_AttrKerberosHost, having type string - ParameterId["AttrKerberosHost"] = "widgetAttrKerberosHost"; - // DPI_AttrKerberosRealm, having type string - ParameterId["AttrKerberosRealm"] = "widgetAttrKerberosRealm"; - // DPI_AttrKerberosService, having type string - ParameterId["AttrKerberosService"] = "widgetAttrKerberosService"; - // DPI_AttrLastRecordToken, having type string - ParameterId["AttrLastRecordToken"] = "attrLastRecordToken"; - // DPI_AttrMDWPath, having type string - ParameterId["AttrMDWPath"] = "widgetAttrMdwPath"; - // DPI_AttrMDWUsername, having type string - ParameterId["AttrMDWUsername"] = "widgetAttrMdwUsername"; - // DPI_AttrODBCPrompt, having type string - ParameterId["AttrODBCPrompt"] = "widgetAttrOdbcPrompt"; - // DPI_AttrODBCStringExtras, having type string - ParameterId["AttrODBCStringExtras"] = "widgetAttrOdbcStringExtras"; - // DPI_AttrPort, having type string - ParameterId["AttrPort"] = "widgetAttrPort"; - // DPI_AttrSAPClient, having type string - ParameterId["AttrSAPClient"] = "widgetAttrSapClient"; - // DPI_AttrSAPLanguage, having type string - ParameterId["AttrSAPLanguage"] = "widgetAttrSapLanguage"; - // DPI_AttrEdition, having type string - ParameterId["AttrEdition"] = "widgetAttrSslEdition"; - // DPI_AttrSSODomain, having type string - ParameterId["AttrSSODomain"] = "widgetAttrSsoDomain"; - // DPI_AttrSSLCert, having type string - ParameterId["AttrSSLCert"] = "widgetAttrSslCert"; - // DPI_AttrScriptVersion, having type string - ParameterId["AttrScriptVersion"] = "attrScriptVersion"; - // DPI_AttrServer, having type string - ParameterId["AttrServer"] = "widgetAttrServer"; - // DPI_AttrService, having type string - ParameterId["AttrService"] = "widgetAttrService"; - // DPI_AttrUsername, having type string - ParameterId["AttrUsername"] = "widgetAttrUser"; - // DPI_AuthenticationPrompt, having type string - ParameterId["AuthenticationPrompt"] = "authenticationPrompt"; - // DPI_Caption, having type string - ParameterId["Caption"] = "caption"; - // DPI_CatalogListPrompt, having type string - ParameterId["CatalogListPrompt"] = "catalogListPrompt"; - // DPI_CatalogName, having type string - ParameterId["CatalogName"] = "catalogName"; - // DPI_CatalogSearchTerm, having type string - ParameterId["CatalogSearchTerm"] = "catalogSearchTerm"; - // DPI_Category, having type string - ParameterId["Category"] = "itemCategory"; - // DPI_ClassName, having type string - ParameterId["ClassName"] = "classNameForCleaning"; - // DPI_CloudFileClassName, having type string - ParameterId["CloudFileClassName"] = "cloudFileClassName"; - // DPI_CloudFileStorageProvider, having type string - ParameterId["CloudFileStorageProvider"] = "cloudFileStorageProvider"; - // DPI_ConfigName, having type string - ParameterId["ConfigName"] = "connectionConfigName"; - // DPI_ConnectionCaption, having type string - ParameterId["ConnectionCaption"] = "connectionCaption"; - // DPI_ConnectionDescriptionLabel, having type string - ParameterId["ConnectionDescriptionLabel"] = "connectionDescriptionLabel"; - // DPI_ConnectionClass, having type string - ParameterId["ConnectionClass"] = "connectionClassName"; - // DPI_ConnectionName, having type string - ParameterId["ConnectionName"] = "connectionName"; - // DPI_ConnectionOptionName, having type string - ParameterId["ConnectionOptionName"] = "connectionOptionName"; - // DPI_ConnectionSpecificationTitle, having type string - ParameterId["ConnectionSpecificationTitle"] = "connectionSpecificationTitle"; - // DPI_ConnectionTypeLabel, having type string - ParameterId["ConnectionTypeLabel"] = "connectionTypeLabel"; - // DPI_CubeDescription, having type string - ParameterId["CubeDescription"] = "cubeDescription"; - // DPI_CubeLastUpdated, having type string - ParameterId["CubeLastUpdated"] = "cubeLastUpdated"; - // DPI_CubeListPrompt, having type string - ParameterId["CubeListPrompt"] = "cubeListPrompt"; - // DPI_CubeName, having type string - ParameterId["CubeName"] = "cubeName"; - // DPI_CubeSearchTerm, having type string - ParameterId["CubeSearchTerm"] = "cubeSearchTerm"; - // DPI_CurrentText, having type string - ParameterId["CurrentText"] = "currentText"; - // DPI_CustomSplitStringSeparator, having type string - ParameterId["CustomSplitStringSeparator"] = "customSplitStringSeparator"; - // DPI_DatasourceId, having type string - ParameterId["DatasourceId"] = "datasourceId"; - // DPI_DBNamePrompt, having type string - ParameterId["DBNamePrompt"] = "dbNamePrompt"; - // DPI_DBWHNamePrompt, having type string - ParameterId["DBWHNamePrompt"] = "dbWarehouseNamePrompt"; - // DPI_DSClass, having type string - ParameterId["DSClass"] = "dsClass"; - // DPI_DatabaseName, having type string - ParameterId["DatabaseName"] = "datasourceDatabaseName"; - // DPI_DatabaseNote, having type string - ParameterId["DatabaseNote"] = "databaseNote"; - // DPI_DragLabel, having type string - ParameterId["DragLabel"] = "dragLabel"; - // DPI_EffectiveDateRange, having type string - ParameterId["EffectiveDateRange"] = "effectiveDateRange"; - // DPI_GoogleSheetCreatedTime, having type string - ParameterId["GoogleSheetCreatedTime"] = "googleSheetCreatedTime"; - // DPI_GoogleSheetId, having type string - ParameterId["GoogleSheetId"] = "googleSheetId"; - // DPI_GoogleSheetLastModifiedTime, having type string - ParameterId["GoogleSheetLastModifiedTime"] = "googleSheetLastModifiedTime"; - // DPI_GoogleSheetLastModifyingUser, having type string - ParameterId["GoogleSheetLastModifyingUser"] = "googleSheetLastModifyingUser"; - // DPI_GoogleSheetLastViewedByUserTime, having type string - ParameterId["GoogleSheetLastViewedByUserTime"] = "googleSheetLastViewedByUserTime"; - // DPI_GoogleSheetMimeType, having type string - ParameterId["GoogleSheetMimeType"] = "googleSheetMimeType"; - // DPI_GoogleSheetName, having type string - ParameterId["GoogleSheetName"] = "googleSheetName"; - // DPI_GoogleSheetOwner, having type string - ParameterId["GoogleSheetOwner"] = "googleSheetOwner"; - // DPI_GoogleSheetThumbnailLink, having type string - ParameterId["GoogleSheetThumbnailLink"] = "googleSheetThumbnailLink"; - // DPI_GoogleSheetThumbnailId, having type string - ParameterId["GoogleSheetThumbnailId"] = "googleSheetThumbnailId"; - // DPI_GoogleSheetThumbnailLocalPath, having type string - ParameterId["GoogleSheetThumbnailLocalPath"] = "googleSheetThumbnailLocalPath"; - // DPI_GoogleSheetWebViewLink, having type string - ParameterId["GoogleSheetWebViewLink"] = "googleSheetWebViewLink"; - // DPI_GoogleSheetsListErrorMessage, having type string - ParameterId["GoogleSheetsListErrorMessage"] = "googleSheetsListErrorMessage"; - // DPI_InitialSQL, having type string - ParameterId["InitialSQL"] = "initialSql"; - // DPI_ISODate, having type string - ParameterId["ISODate"] = "isoDate"; - // DPI_ISOEndDate, having type string - ParameterId["ISOEndDate"] = "isoEndDate"; - // DPI_ISOStartDate, having type string - ParameterId["ISOStartDate"] = "isoStartDate"; - // DPI_IsolationLevel, having type string - ParameterId["IsolationLevel"] = "datasourceIsolationLevel"; - // DPI_ItemDescription, having type string - ParameterId["ItemDescription"] = "itemDescription"; - // DPI_ItemId, having type string - ParameterId["ItemId"] = "itemId"; - // DPI_KerberosHost, having type string - ParameterId["KerberosHost"] = "datasourceKerberosHost"; - // DPI_KerberosRealm, having type string - ParameterId["KerberosRealm"] = "datasourceKerberosRealm"; - // DPI_KerberosService, having type string - ParameterId["KerberosService"] = "datasourceKerberosService"; - // DPI_Name, having type string - ParameterId["Name"] = "name"; - // DPI_OptionId, having type string - ParameterId["OptionId"] = "optionId"; - // DPI_PartitioningButtonLabel, having type string - ParameterId["PartitioningButtonLabel"] = "partitioningButtonLabel"; - // DPI_PartitioningButtonTooltip, having type string - ParameterId["PartitioningButtonTooltip"] = "partitioningButtonTooltip"; - // DPI_PartitioningText, having type string - ParameterId["PartitioningText"] = "queryPartitioningText"; - // DPI_PdfStartPage, having type string - ParameterId["PdfStartPage"] = "pdfStartPage"; - // DPI_PdfEndPage, having type string - ParameterId["PdfEndPage"] = "pdfEndPage"; - // DPI_PortPrompt, having type string - ParameterId["PortPrompt"] = "portPrompt"; - // DPI_PromptText, having type string - ParameterId["PromptText"] = "promptText"; - // DPI_QueryBanding, having type string - ParameterId["QueryBanding"] = "queryBanding"; - // DPI_QueryText, having type string - ParameterId["QueryText"] = "queryText"; - // DPI_RecommendationUUID, having type string - ParameterId["RecommendationUUID"] = "recommendationUuid"; - // DPI_SQLQuery, having type string - ParameterId["SQLQuery"] = "sqlQuery"; - // DPI_SchemaComboFallbackText, having type string - ParameterId["SchemaComboFallbackText"] = "schemaComboFallbackText"; - // DPI_SchemaLabel, having type string - ParameterId["SchemaLabel"] = "schemaLabel"; - // DPI_SchemaMemberGlobalName, having type string - ParameterId["SchemaMemberGlobalName"] = "schemaMemberGlobalName"; - // DPI_SchemaName, having type string - ParameterId["SchemaName"] = "datasourceSchemaName"; - // DPI_ScriptText, having type string - ParameterId["ScriptText"] = "scriptText"; - // DPI_SecondaryWhiteList, having type string - ParameterId["SecondaryWhiteList"] = "secondaryWhiteList"; - // DPI_Server, having type string - ParameterId["Server"] = "datasourceServer"; - // DPI_ServerNamePrompt, having type string - ParameterId["ServerNamePrompt"] = "serverNamePrompt"; - // DPI_Service, having type string - ParameterId["Service"] = "datasourceService"; - // DPI_ServiceNamePrompt, having type string - ParameterId["ServiceNamePrompt"] = "servicePrompt"; - // DPI_SheetFormatting, having type string - ParameterId["SheetFormatting"] = "sheetFormatting"; - // DPI_SlowMetadataSearchTerm, having type string - ParameterId["SlowMetadataSearchTerm"] = "slowMetadataSearchTerm"; - // DPI_StandardConnectionName, having type string - ParameterId["StandardConnectionName"] = "datasourceStandardConnectionName"; - // DPI_StandardConnectionPlaceholderText, having type string - ParameterId["StandardConnectionPlaceholderText"] = "standardConnectionPlaceholderText"; - // DPI_StoredProcedureParameterTitle, having type string - ParameterId["StoredProcedureParameterTitle"] = "storedProcedureParameterTitle"; - // DPI_TableAlias, having type string - ParameterId["TableAlias"] = "tableAlias"; - // DPI_RightTableAlias, having type string - ParameterId["RightTableAlias"] = "rightTableAlias"; - // DPI_TableCaption, having type string - ParameterId["TableCaption"] = "tableCaption"; - // DPI_TableCollectionName, having type string - ParameterId["TableCollectionName"] = "tableCollectionName"; - // DPI_TablePlaceholderText, having type string - ParameterId["TablePlaceholderText"] = "tablePlaceholderText"; - // DPI_TableRanking, having type string - ParameterId["TableRanking"] = "tableRanking"; - // DPI_TableSortKey, having type string - ParameterId["TableSortKey"] = "tableSortkey"; - // DPI_TableTooltip, having type string - ParameterId["TableTooltip"] = "tableTooltip"; - // DPI_TableToReplace, having type string - ParameterId["TableToReplace"] = "tableToReplace"; - // DPI_TableWarningMessage, having type string - ParameterId["TableWarningMessage"] = "tableWarningMessage"; - // DPI_TableauServerDatasourceDescription, having type string - ParameterId["TableauServerDatasourceDescription"] = "tableauServerDatasourceDescription"; - // DPI_TableauServerDatasourceLastExtract, having type string - ParameterId["TableauServerDatasourceLastExtract"] = "tableauServerDatasourceLastExtract"; - // DPI_TableauServerDatasourceModified, having type string - ParameterId["TableauServerDatasourceModified"] = "tableauServerDatasourceModified"; - // DPI_TableauServerDatasourceOwner, having type string - ParameterId["TableauServerDatasourceOwner"] = "tableauServerDatasourceOwner"; - // DPI_TableauServerDatasourcePath, having type string - ParameterId["TableauServerDatasourcePath"] = "tableauServerDatasourcePath"; - // DPI_TableauServerFetchSearchQuery, having type string - ParameterId["TableauServerFetchSearchQuery"] = "tableauServerFetchSearchQuery"; - // DPI_TableauServerName, having type string - ParameterId["TableauServerName"] = "tableauServerName"; - // DPI_TableauServerProjectName, having type string - ParameterId["TableauServerProjectName"] = "tableauServerProjectName"; - // DPI_TableauServerUsername, having type string - ParameterId["TableauServerUsername"] = "tableauServerUsername"; - // DPI_TransportType, having type string - ParameterId["TransportType"] = "transportType"; - // DPI_WarehouseName, having type string - ParameterId["WarehouseName"] = "datasourceWarehouseName"; - // DPI_WorkgroupWorkbookName, having type string - ParameterId["WorkgroupWorkbookName"] = "workgroupWorkbookName"; - // DPI_AnalyticsItemTooltip, having type string - ParameterId["AnalyticsItemTooltip"] = "analyticsItemTooltip"; - // DPI_Description, having type string - ParameterId["Description"] = "description"; - // DPI_DSClassCaption, having type string - ParameterId["DSClassCaption"] = "dsClassCaption"; - // DPI_Formula, having type string - ParameterId["Formula"] = "formula"; - // DPI_MessageText, having type string - ParameterId["MessageText"] = "messageText"; - // DPI_Datasource, having type string - ParameterId["Datasource"] = "datasource"; - // DPI_DatasourceSource, having type string - ParameterId["DatasourceSource"] = "datasourceSource"; - // DPI_DatasourceTarget, having type string - ParameterId["DatasourceTarget"] = "datasourceTarget"; - // DPI_FirstDatasource, having type string - ParameterId["FirstDatasource"] = "firstDatasource"; - // DPI_NewDatasource, having type string - ParameterId["NewDatasource"] = "newDatasource"; - // DPI_ParametersDatasource, having type string - ParameterId["ParametersDatasource"] = "parametersDatasource"; - // DPI_PrimaryDatasource, having type string - ParameterId["PrimaryDatasource"] = "primaryDatasource"; - // DPI_ConnectionDatabases, having type string[] - ParameterId["ConnectionDatabases"] = "connectionDatabases"; - // DPI_ConnectionSchemas, having type string[] - ParameterId["ConnectionSchemas"] = "connectionSchemas"; - // DPI_ConnectionWarehouses, having type string[] - ParameterId["ConnectionWarehouses"] = "connectionWarehouses"; - // DPI_PossibleChoices, having type string[] - ParameterId["PossibleChoices"] = "possibleChoices"; - // DPI_StandardConnections, having type string[] - ParameterId["StandardConnections"] = "standardConnections"; - // DPI_Strings, having type string[] - ParameterId["Strings"] = "strings"; - // DPI_TableauServerProjectNames, having type string[] - ParameterId["TableauServerProjectNames"] = "tableauServerProjectNames"; - // DPI_TableCaptions, having type string[] - ParameterId["TableCaptions"] = "tableCaptions"; - // DPI_DataValues, having type object[] - ParameterId["DataValues"] = "dataValues"; - // DPI_QueryBandErrors, having type object[] - ParameterId["QueryBandErrors"] = "queryBandErrors"; - // DPI_QueryBandParameters, having type object[] - ParameterId["QueryBandParameters"] = "queryBandParameters"; - // DPI_InitialSQLParameters, having type object[] - ParameterId["InitialSQLParameters"] = "initialSqlParameters"; - // DPI_ConnectionAttributes, having type Dictionary(of string) - ParameterId["ConnectionAttributes"] = "connectionAttrs"; - // DPI_ConnectionProps, having type Dictionary(of string) - ParameterId["ConnectionProps"] = "connectionProps"; - // DPI_DisplayNameMap, having type Dictionary(of string) - ParameterId["DisplayNameMap"] = "displayNameMap"; - // DPI_LookupTable, having type Dictionary(of string) - ParameterId["LookupTable"] = "lookupTable"; - // DPI_OAuthAttrs, having type Dictionary(of string) - ParameterId["OAuthAttrs"] = "oauthAttrs"; - // DPI_StringMap, having type Dictionary(of string) - ParameterId["StringMap"] = "stringMap"; - // DPI_TableRankingMap, having type Dictionary(of string) - ParameterId["TableRankingMap"] = "tableRankingMap"; - // DPI_WDCAttributes, having type Dictionary(of string) - ParameterId["WDCAttributes"] = "wdcAttrs"; - // DPI_ConnectorAttributes, having type Dictionary(of string) - ParameterId["ConnectorAttributes"] = "connectorAttrs"; - // DPI_TableRelevanceParams, having type Dictionary(of string) - ParameterId["TableRelevanceParams"] = "tableRelevanceParams"; - // DPI_ActualParameterParameter, having type string - ParameterId["ActualParameterParameter"] = "actualParameterParameter"; - // DPI_DataColumnName, having type string - ParameterId["DataColumnName"] = "dataColumnName"; - // DPI_LHSDataColumnName, having type string - ParameterId["LHSDataColumnName"] = "lhsDataColumnName"; - // DPI_RHSDataColumnName, having type string - ParameterId["RHSDataColumnName"] = "rhsDataColumnName"; - // DPI_FullCubeName, having type string - ParameterId["FullCubeName"] = "fullCubeName"; - // DPI_FullVariableName, having type string - ParameterId["FullVariableName"] = "fullVariableName"; - // DPI_SemanticRole, having type string - ParameterId["SemanticRole"] = "semanticRole"; - // DPI_StoredProcedureName, having type string - ParameterId["StoredProcedureName"] = "storedProcName"; - // DPI_TableName, having type string - ParameterId["TableName"] = "tableName"; - // DPI_AddedTableNames, having type string[] - ParameterId["AddedTableNames"] = "addedTableNames"; - // DPI_CoalesceGroupFields, having type string[] - ParameterId["CoalesceGroupFields"] = "coalesceGroupFields"; - // DPI_FieldNames, having type string[] - ParameterId["FieldNames"] = "fieldNames"; - // DPI_JoinFieldAliases, having type string[] - ParameterId["JoinFieldAliases"] = "joinField_aliases"; - // DPI_JoinInfoFields, having type string[] - ParameterId["JoinInfoFields"] = "joinInfoFields"; - // DPI_PivotGroupFields, having type string[] - ParameterId["PivotGroupFields"] = "pivotGroupFields"; - // DPI_RemovedTableNames, having type string[] - ParameterId["RemovedTableNames"] = "removedTableNames"; - // DPI_StoredProcedures, having type string[] - ParameterId["StoredProcedures"] = "storedProcedures"; - // DPI_TableNames, having type string[] - ParameterId["TableNames"] = "tableNames"; - // DPI_ColumnName, having type string - ParameterId["ColumnName"] = "columnName"; - // DPI_FieldName, having type string - ParameterId["FieldName"] = "fn"; - // DPI_GoogleSheetThumbnailImage, having type string - ParameterId["GoogleSheetThumbnailImage"] = "googleSheetThumbnailImage"; - // DPI_AttrMDWPassword, having type string - ParameterId["AttrMDWPassword"] = "widgetAttrMdwPassword"; - // DPI_AttrPassword, having type string - ParameterId["AttrPassword"] = "widgetAttrPassword"; - // DPI_DatasourcePassword, having type string - ParameterId["DatasourcePassword"] = "datasourcePassword"; - // DPI_FederatedKeychain, having type string - ParameterId["FederatedKeychain"] = "federatedKeychain"; - // DPI_DataParameterID, having type string - ParameterId["DataParameterID"] = "dataParamType"; - // DPI_ConnectServerWidgetType, having type ConnectServerWidgetType - ParameterId["ConnectServerWidgetType"] = "connectServerWidgetType"; - // DPI_AuthenticationMode, having type Mode - ParameterId["AuthenticationMode"] = "authMode"; - // DPI_ReconnectAuthMode, having type ReconnectMode - ParameterId["ReconnectAuthMode"] = "reconnectAuthMode"; - // DPI_CurrentAuthOption, having type AuthOption - ParameterId["CurrentAuthOption"] = "currAuthOption"; - // DPI_AuthOptionList, having type AuthOption[] - ParameterId["AuthOptionList"] = "authOptions"; - // DPI_ConnectionSpecificationType, having type ConnectionSpecificationType - ParameterId["ConnectionSpecificationType"] = "connectionSpecificationType"; - // DPI_DataType, having type DataType - ParameterId["DataType"] = "dataType"; - // DPI_LHSDataType, having type DataType - ParameterId["LHSDataType"] = "lhsDataType"; - // DPI_RHSDataType, having type DataType - ParameterId["RHSDataType"] = "rhsDataType"; - // DPI_DefaultFieldRole, having type FieldRole - ParameterId["DefaultFieldRole"] = "defaultFieldRole"; - // DPI_FieldRole, having type FieldRole - ParameterId["FieldRole"] = "fieldRole"; - // DPI_DefaultFieldType, having type FieldType - ParameterId["DefaultFieldType"] = "defaultFieldType"; - // DPI_FieldType, having type FieldType - ParameterId["FieldType"] = "fieldType"; - // DPI_FieldTypeList, having type FieldType[] - ParameterId["FieldTypeList"] = "fieldTypeList"; - // DPI_FieldTypeListDetail, having type FieldType[] - ParameterId["FieldTypeListDetail"] = "fieldTypeListDetail"; - // DPI_AggType, having type AggType - ParameterId["AggType"] = "aggregation"; - // DPI_DefaultAggType, having type AggType - ParameterId["DefaultAggType"] = "defaultAggregation"; - // DPI_ForecastAgg, having type AggType - ParameterId["ForecastAgg"] = "forecastSummarizeTo"; - // DPI_ForecastAutoAgg, having type AggType - ParameterId["ForecastAutoAgg"] = "forecastAutoSummarizeTo"; - // DPI_ForecastAutoRangeUnits, having type AggType - ParameterId["ForecastAutoRangeUnits"] = "forecastAutoRangeUnits"; - // DPI_ForecastEndOfRangeUnits, having type AggType - ParameterId["ForecastEndOfRangeUnits"] = "forecastEndOfRangeUnits"; - // DPI_ForecastNextRangeUnits, having type AggType - ParameterId["ForecastNextRangeUnits"] = "forecastNextRangeUnits"; - // DPI_SourceAgg, having type AggType - ParameterId["SourceAgg"] = "sourceAggregation"; - // DPI_TargetAgg, having type AggType - ParameterId["TargetAgg"] = "targetAggregation"; - // DPI_AggregateByAggTypes, having type AggType[] - ParameterId["AggregateByAggTypes"] = "aggregateByAggTypes"; - // DPI_AggregationValues, having type AggType[] - ParameterId["AggregationValues"] = "aggregationValues"; - // DPI_SortAggValues, having type AggType[] - ParameterId["SortAggValues"] = "sortAggValues"; - // DPI_ColumnClass, having type ColumnClass - ParameterId["ColumnClass"] = "columnClass"; - // DPI_ConnectionWidgetType, having type ConnectionWidgetType - ParameterId["ConnectionWidgetType"] = "connectionWidgetType"; - // DPI_TablePillIcon, having type TablePillIcon - ParameterId["TablePillIcon"] = "tablePillIconType"; - // DPI_EnumeratedEntityType, having type EntityType - ParameterId["EnumeratedEntityType"] = "enumeratedEntityType"; - // DPI_PickEntitySearchType, having type PickEntitySearchType - ParameterId["PickEntitySearchType"] = "entitySearchType"; - // DPI_ExpressionOp, having type Op - ParameterId["ExpressionOp"] = "expressionOp"; - // DPI_ExpressionOperatorCaption, having type ExpressionOperatorCaptionPresModel - ParameterId["ExpressionOperatorCaption"] = "expressionOperatorCaption"; - // DPI_RelationalExperessionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["RelationalExperessionOps"] = "relationalExpressionOps"; - // DPI_HierarchyExpressionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["HierarchyExpressionOps"] = "hierarchyExpressionOps"; - // DPI_DefaultSortDirection, having type SortDirection - ParameterId["DefaultSortDirection"] = "defSortOrder"; - // DPI_SortDirection, having type SortDirection - ParameterId["SortDirection"] = "sortOrder"; - // DPI_SortDirectionValues, having type SortDirection[] - ParameterId["SortDirectionValues"] = "sortDirectionValues"; - // DPI_CubeMetadataCategory, having type CubeMetadataCategory - ParameterId["CubeMetadataCategory"] = "cubeMetadataCategory"; - // DPI_CubeMetadataCategories, having type CubeMetadataCategory[] - ParameterId["CubeMetadataCategories"] = "cubeMetadataCategories"; - // DPI_GoogleBasicInfoType, having type GoogleBasicInfoType - ParameterId["GoogleBasicInfoType"] = "googleBasicInfoType"; - // DPI_GoogleAnalyticsDateRangeOptionType, having type DateRange - ParameterId["GoogleAnalyticsDateRangeOptionType"] = "googleAnalyticsDateRangeOptionType"; - // DPI_TableCalcType, having type TableCalcType - ParameterId["TableCalcType"] = "tableCalcType"; - // DPI_TableCalcTypeValues, having type TableCalcType[] - ParameterId["TableCalcTypeValues"] = "tableCalcTypeValues"; - // DPI_RelativeAddress, having type RelativeAddress - ParameterId["RelativeAddress"] = "relativeAddress"; - // DPI_RelativeValues, having type RelativeAddress[] - ParameterId["RelativeValues"] = "relativeValues"; - // DPI_OrderingType, having type OrderingType - ParameterId["OrderingType"] = "orderingType"; - // DPI_OrderingTypeValues, having type OrderingType[] - ParameterId["OrderingTypeValues"] = "orderingTypeValues"; - // DPI_CategoricalBinItemType, having type CategoricalBinItemType - ParameterId["CategoricalBinItemType"] = "categoricalBinItemType"; - // DPI_AuthenticationInfos, having type AuthenticationSettingsPresModel - ParameterId["AuthenticationInfos"] = "authInfo"; - // DPI_ConnectionWidgetParams, having type ConnectionParamsPresModel - ParameterId["ConnectionWidgetParams"] = "widgetConnectionParams"; - // DPI_ConnectionSettings, having type ConnectionSettingsPresModel - ParameterId["ConnectionSettings"] = "connectionSettings"; - // DPI_ReconnectAuthenticationSettings, having type AuthenticationSettingsPresModel - ParameterId["ReconnectAuthenticationSettings"] = "reconnectAuthSettings"; - // DPI_CubeConnectionSpecificationOption, having type CubeConnectionSpecificationOptionPresModel - ParameterId["CubeConnectionSpecificationOption"] = "cubeConnectionSpecificationOption"; - // DPI_CubeConnectionSpecificationOptions, having type CubeConnectionSpecificationOptionPresModel[] - ParameterId["CubeConnectionSpecificationOptions"] = "cubeConnectionSpecificationOptions"; - // DPI_CubeConnectionSpecification, having type CubeConnectionSpecificationPresModel - ParameterId["CubeConnectionSpecification"] = "cubeConnectionSpecification"; - // DPI_ConnectionSettingsOption, having type ConnectionSettingsOptionPresModel - ParameterId["ConnectionSettingsOption"] = "connectionSettingsOption"; - // DPI_ConnectionSettingsOptions, having type ConnectionSettingsOptionPresModel[] - ParameterId["ConnectionSettingsOptions"] = "connectionSettingsOptions"; - // DPI_StringCollation, having type StringCollationPresModel - ParameterId["StringCollation"] = "stringCollation"; - // DPI_DatabaseEnumeration, having type DatabaseEnumerationPresModel - ParameterId["DatabaseEnumeration"] = "databaseEnumeration"; - // DPI_SchemaEnumeration, having type SchemaEnumerationPresModel - ParameterId["SchemaEnumeration"] = "schemaEnumeration"; - // DPI_StandardConnectionEnumeration, having type StandardConnectionEnumerationPresModel - ParameterId["StandardConnectionEnumeration"] = "standardConnectionEnumeration"; - // DPI_StoredProcedureEnumeration, having type StoredProcedureEnumerationPresModel - ParameterId["StoredProcedureEnumeration"] = "storedProcedureEnumeration"; - // DPI_TableEnumeration, having type TableEnumerationPresModel - ParameterId["TableEnumeration"] = "tableEnumeration"; - // DPI_WarehouseEnumeration, having type WarehouseEnumerationPresModel - ParameterId["WarehouseEnumeration"] = "warehouseEnumeration"; - // DPI_SlowMetadataSchemaList, having type SlowMetadataSchemaListPresModel - ParameterId["SlowMetadataSchemaList"] = "slowMetadataSchemaList"; - // DPI_SlowMetadataTableList, having type SlowMetadataTableListPresModel - ParameterId["SlowMetadataTableList"] = "slowMetadataTableList"; - // DPI_CubeCatalog, having type CubeCatalogPresModel - ParameterId["CubeCatalog"] = "cubeCatalog"; - // DPI_CubeCatalogs, having type CubeCatalogPresModel[] - ParameterId["CubeCatalogs"] = "cubeCatalogs"; - // DPI_CubeCatalogEnumeration, having type CubeCatalogEnumerationPresModel - ParameterId["CubeCatalogEnumeration"] = "cubeCatalogEnumeration"; - // DPI_Cube, having type CubePresModel - ParameterId["Cube"] = "cube"; - // DPI_Cubes, having type CubePresModel[] - ParameterId["Cubes"] = "cubes"; - // DPI_CubeEnumeration, having type CubeEnumerationPresModel - ParameterId["CubeEnumeration"] = "cubeEnumeration"; - // DPI_GoogleAnalyticsBasicItem, having type GoogleAnalyticsBasicItemPresModel - ParameterId["GoogleAnalyticsBasicItem"] = "googleAnalyticsBasicItem"; - // DPI_GAMeasureSets, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GAMeasureSets"] = "gaMeasureSets"; - // DPI_GoogleAnalyticsViews, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsViews"] = "googleAnalyticsViews"; - // DPI_GoogleAnalyticsProperties, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsProperties"] = "googleAnalyticsProperties"; - // DPI_GoogleBasicInfoItems, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleBasicInfoItems"] = "googleAnalyticsAccounts"; - // DPI_GoogleAnalyticsComplexItem, having type GoogleAnalyticsComplexItemPresModel - ParameterId["GoogleAnalyticsComplexItem"] = "googleAnalyticsComplexItem"; - // DPI_GoogleAnalyticsPossibleDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleDimensions"] = "googleAnalyticsPossibleDimensions"; - // DPI_GoogleAnalyticsPossibleMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleMeasures"] = "googleAnalyticsPossibleMeasures"; - // DPI_GoogleAnalyticsPossibleSegments, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleSegments"] = "googleAnalyticsPossibleSegments"; - // DPI_GoogleAnalyticsSelectedDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedDimensions"] = "googleAnalyticsSelectedDimensions"; - // DPI_GoogleAnalyticsSelectedMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedMeasures"] = "googleAnalyticsSelectedMeasures"; - // DPI_GoogleAnalyticsDateRangeOption, having type GoogleAnalyticsDateRangeOptionPresModel - ParameterId["GoogleAnalyticsDateRangeOption"] = "googleAnalyticsDateRangeOption"; - // DPI_GoogleAnalyticsDateRangeOptions, having type GoogleAnalyticsDateRangeOptionPresModel[] - ParameterId["GoogleAnalyticsDateRangeOptions"] = "googleAnalyticsDateRangeOptions"; - // DPI_GoogleAnalyticsEndDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsEndDate"] = "googleAnalyticsEndDate"; - // DPI_GoogleAnalyticsStartDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsStartDate"] = "googleAnalyticsStartDate"; - // DPI_GoogleAnalyticsDateRange, having type GoogleAnalyticsDateRangePresModel - ParameterId["GoogleAnalyticsDateRange"] = "googleAnalyticsDateRange"; - // DPI_GoogleAnalyticsQueryPartitioning, having type GoogleAnalyticsQueryPartitioningPresModel - ParameterId["GoogleAnalyticsQueryPartitioning"] = "googleAnalyticsQueryPartitioning"; - // DPI_GAConnectionDescription, having type GoogleAnalyticsConnectionDescriptionPresModel - ParameterId["GAConnectionDescription"] = "gaConnectionDescription"; - // DPI_GoogleSheetItem, having type GoogleSheetItemPresModel - ParameterId["GoogleSheetItem"] = "googleSheetItem"; - // DPI_GoogleSheetItems, having type GoogleSheetItemPresModel[] - ParameterId["GoogleSheetItems"] = "googleSheetItems"; - // DPI_GoogleSheetsListPresModel, having type GoogleSheetsListPresModel - ParameterId["GoogleSheetsListPresModel"] = "googleSheetsList"; - // DPI_GoogleSheetPanePresModel, having type GoogleSheetPanePresModel - ParameterId["GoogleSheetPanePresModel"] = "googleSheetPane"; - // DPI_TableauServerConnectionDescription, having type TableauServerConnectionDescriptionPresModel - ParameterId["TableauServerConnectionDescription"] = "tableauServerConnectionDescription"; - // DPI_InitialSQLPresModel, having type InitialSQLPresModel - ParameterId["InitialSQLPresModel"] = "initialSqlPresModel"; - // DPI_QueryBandingPresModel, having type QueryBandingPresModel - ParameterId["QueryBandingPresModel"] = "queryBandingPresModel"; - // DPI_SlowMetadata, having type SlowMetadataPresModel - ParameterId["SlowMetadata"] = "slowMetadata"; - // DPI_SlowMetadataSchemaSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataSchemaSearchPresModel"] = "slowMetadataSchemaSearch"; - // DPI_SlowMetadataTableSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataTableSearchPresModel"] = "slowMetadataTableSearch"; - // DPI_TableauServerProjectsPresModel, having type TableauServerProjectsPresModel - ParameterId["TableauServerProjectsPresModel"] = "tableauServerProjectsPresmodel"; - // DPI_TableauServerDataSourcePresModel, having type TableauServerDataSourcePresModel - ParameterId["TableauServerDataSourcePresModel"] = "tableauServerDataSourcePresmodel"; - // DPI_TableauServerDataSourcePresModels, having type TableauServerDataSourcePresModel[] - ParameterId["TableauServerDataSourcePresModels"] = "tableauServerDataSourcePresmodels"; - // DPI_TableauServerDataSourcesPresModel, having type TableauServerDataSourcesPresModel - ParameterId["TableauServerDataSourcesPresModel"] = "tableauServerDataSourcesPresmodel"; - // DPI_TableauServerDataPresModel, having type TableauServerDataPresModel - ParameterId["TableauServerDataPresModel"] = "tableauServerDataPresmodel"; - // DPI_StoredProcedureParameterPresModel, having type StoredProcedureParameterPresModel - ParameterId["StoredProcedureParameterPresModel"] = "storedProcedureParameter"; - // DPI_StoredProcedureParametersPresModel, having type StoredProcedureParameterPresModel[] - ParameterId["StoredProcedureParametersPresModel"] = "storedProcedureParameters"; - // DPI_CustomSQLInfo, having type CustomSQLInfoPresModel - ParameterId["CustomSQLInfo"] = "customSqlInfo"; - // DPI_ConnectionTableInfo, having type ConnectionTableInfoPresModel - ParameterId["ConnectionTableInfo"] = "connectionTableInfo"; - // DPI_TableInfos, having type ConnectionTableInfoPresModel[] - ParameterId["TableInfos"] = "tableInfos"; - // DPI_ConnectionDescription, having type ConnectionDescriptionPresModel - ParameterId["ConnectionDescription"] = "connectionDescription"; - // DPI_DataSourceParserValidationMode, having type DataSourceParserValidationMode - ParameterId["DataSourceParserValidationMode"] = "dataSourceParserValidationMode"; - // DPI_OAuthCredentialTypeInfo, having type OAuthCredentialTypeInfoPresModel - ParameterId["OAuthCredentialTypeInfo"] = "oauthCredentialTypeInfo"; - // DPI_OAuthCredentialTypeInfos, having type OAuthCredentialTypeInfoPresModel[] - ParameterId["OAuthCredentialTypeInfos"] = "oauthCredentialTypeInfos"; - // DPI_OAuthSettings, having type OAuthSettingsPresModel - ParameterId["OAuthSettings"] = "oauthSettings"; - // DPI_CredentialTypePropertiesFlag, having type CredentialTypePropertiesFlag - ParameterId["CredentialTypePropertiesFlag"] = "credentialTypePropertiesFlag"; - // DPI_CredentialTypePropertiesFlags, having type CredentialTypePropertiesFlag[] - ParameterId["CredentialTypePropertiesFlags"] = "credentialTypePropertiesFlags"; - // DPI_ConnectionTypeEnum, having type ConnectionTypeEnum - ParameterId["ConnectionTypeEnum"] = "connectionTypeEnum"; - // DPI_ConnectorType, having type ConnectorType - ParameterId["ConnectorType"] = "connectorType"; - // DPI_PdfPagePicker, having type PdfPagePickerPresModel - ParameterId["PdfPagePicker"] = "pdfPagePicker"; - // DPI_ActivateNew, having type bool - ParameterId["ActivateNew"] = "activateNew"; - // DPI_AddActions, having type bool - ParameterId["AddActions"] = "addActions"; - // DPI_AddAsFloating, having type bool - ParameterId["AddAsFloating"] = "addAsFloating"; - // DPI_AddColorDictionary, having type bool - ParameterId["AddColorDictionary"] = "addColorDictionary"; - // DPI_AddDroplines, having type bool - ParameterId["AddDroplines"] = "addDroplines"; - // DPI_AddHeaders, having type bool - ParameterId["AddHeaders"] = "addHeaders"; - // DPI_AddHighlighting, having type bool - ParameterId["AddHighlighting"] = "addHighlighting"; - // DPI_AddImageDictionary, having type bool - ParameterId["AddImageDictionary"] = "addImageDictionary"; - // DPI_AddMarkLabels, having type bool - ParameterId["AddMarkLabels"] = "addMarkLabels"; - // DPI_AddPages, having type bool - ParameterId["AddPages"] = "addPages"; - // DPI_AddSelection, having type bool - ParameterId["AddSelection"] = "addSelection"; - // DPI_AddToFolder, having type bool - ParameterId["AddToFolder"] = "addToFolder"; - // DPI_AddVizData, having type bool - ParameterId["AddVizData"] = "addVizData"; - // DPI_AlertConditionMet, having type bool - ParameterId["AlertConditionMet"] = "alertConditionMet"; - // DPI_AllFields, having type bool - ParameterId["AllFields"] = "allFields"; - // DPI_AllOnEmpty, having type bool - ParameterId["AllOnEmpty"] = "allOnEmpty"; - // DPI_AllPages, having type bool - ParameterId["AllPages"] = "includeAllPages"; - // DPI_AllowPreviewSizeChange, having type bool - ParameterId["AllowPreviewSizeChange"] = "allowPreviewSizeChange"; - // DPI_AllSelectedIsEffectivelyRangeTypeAll, having type bool - ParameterId["AllSelectedIsEffectivelyRangeTypeAll"] = "allSelectedIsEffectivelyRangeTypeAll"; - // DPI_AllStoryPoints, having type bool - ParameterId["AllStoryPoints"] = "allStorypoints"; - // DPI_AllowAllRange, having type bool - ParameterId["AllowAllRange"] = "allowAllRange"; - // DPI_AllowCreatingNewParameters, having type bool - ParameterId["AllowCreatingNewParameters"] = "allowCreatingNewParameters"; - // DPI_AllowDuplicateFieldDropOnFilterShelf, having type bool - ParameterId["AllowDuplicateFieldDropOnFilterShelf"] = "allowDuplicateFieldDropOnFilterShelf"; - // DPI_AllowFilterPreset, having type bool - ParameterId["AllowFilterPreset"] = "allowFilterPreset"; - // DPI_AllowHoverActions, having type bool - ParameterId["AllowHoverActions"] = "allowHoverActions"; - // DPI_AllowHyphenation, having type bool - ParameterId["AllowHyphenation"] = "allowHyphenation"; - // DPI_AllowJoinOnCalc, having type bool - ParameterId["AllowJoinOnCalc"] = "allowJoinOnCalc"; - // DPI_AllowManualRange, having type bool - ParameterId["AllowManualRange"] = "allowManualRange"; - // DPI_AllowMapping, having type bool - ParameterId["AllowMapping"] = "allowMapping"; - // DPI_AllowMultiSelect, having type bool - ParameterId["AllowMultiSelect"] = "allowMultiSelect"; - // DPI_AllowNull, having type bool - ParameterId["AllowNull"] = "allowNull"; - // DPI_AllowPanZoom, having type bool - ParameterId["AllowPanZoom"] = "allowPanZoom"; - // DPI_AllowPatternBased, having type bool - ParameterId["AllowPatternBased"] = "allowPatternBasedUnion"; - // DPI_AllowPromptText, having type bool - ParameterId["AllowPromptText"] = "allowPromptText"; - // DPI_AllowSaveDataSource, having type bool - ParameterId["AllowSaveDataSource"] = "allowSaveDataSource"; - // DPI_AllowWholeDate, having type bool - ParameterId["AllowWholeDate"] = "allowWholeDate"; - // DPI_AllowWork, having type bool - ParameterId["AllowWork"] = "allowWork"; - // DPI_AllowWrap, having type bool - ParameterId["AllowWrap"] = "allowWrap"; - // DPI_AppIs32Bit, having type bool - ParameterId["AppIs32Bit"] = "appIs32Bit"; - // DPI_AppIs64Bit, having type bool - ParameterId["AppIs64Bit"] = "appIs64Bit"; - // DPI_AppIsBeta, having type bool - ParameterId["AppIsBeta"] = "appIsBeta"; - // DPI_AppIsOEM, having type bool - ParameterId["AppIsOEM"] = "appIsOem"; - // DPI_AppendTde, having type bool - ParameterId["AppendTde"] = "appendTde"; - // DPI_ApplyColors, having type bool - ParameterId["ApplyColors"] = "applyColors"; - // DPI_ApplyNewSelection, having type bool - ParameterId["ApplyNewSelection"] = "applyNewSelection"; - // DPI_AreConfidenceBandsValid, having type bool - ParameterId["AreConfidenceBandsValid"] = "areConfidenceBandsValid"; - // DPI_AreDataSourceFiltersVisible, having type bool - ParameterId["AreDataSourceFiltersVisible"] = "areDataSourceFiltersVisible"; - // DPI_AreExtractFiltersEnabled, having type bool - ParameterId["AreExtractFiltersEnabled"] = "areExtractFiltersEnabled"; - // DPI_AreTotalsUsed, having type bool - ParameterId["AreTotalsUsed"] = "areTotalsUsed"; - // DPI_AtTheLevelFieldIsInvalid, having type bool - ParameterId["AtTheLevelFieldIsInvalid"] = "atTheLevelFieldIsInvalid"; - // DPI_AutoURL, having type bool - ParameterId["AutoURL"] = "autoUrl"; - // DPI_AutoUpdate, having type bool - ParameterId["AutoUpdate"] = "autoUpdate"; - // DPI_BackingSheetIsDashboard, having type bool - ParameterId["BackingSheetIsDashboard"] = "isBackingSheetDashboard"; - // DPI_BeginDataSourcePresModelUpdate, having type bool - ParameterId["BeginDataSourcePresModelUpdate"] = "beginDataSourcePresModelUpdate"; - // DPI_AggregateDrillUp, having type bool - ParameterId["AggregateDrillUp"] = "boolAggregateDrillUp"; - // DPI_BoxplotMarkExclusion, having type bool - ParameterId["BoxplotMarkExclusion"] = "boxplotMarkExclusion"; - // DPI_BreakPageOnPane, having type bool - ParameterId["BreakPageOnPane"] = "breakPageOnPane"; - // DPI_BrushLegends, having type bool - ParameterId["BrushLegends"] = "brushLegends"; - // DPI_CachePresModels, having type bool - ParameterId["CachePresModels"] = "cachePresModels"; - // DPI_CanAddConnections, having type bool - ParameterId["CanAddConnections"] = "canAddConnections"; - // DPI_SortPillCanBeDragged, having type bool - ParameterId["SortPillCanBeDragged"] = "sortPillCanBeDragged"; - // DPI_CanAddTable, having type bool - ParameterId["CanAddTable"] = "canAddTable"; - // DPI_CanAnalyzeData, having type bool - ParameterId["CanAnalyzeData"] = "canAnalyzeData"; - // DPI_CanChangeDataType, having type bool - ParameterId["CanChangeDataType"] = "canChangeDataType"; - // DPI_CanChangeSemanticRole, having type bool - ParameterId["CanChangeSemanticRole"] = "canChangeSemanticRole"; - // DPI_CanDerive, having type bool - ParameterId["CanDerive"] = "canDerive"; - // DPI_CanDrop, having type bool - ParameterId["CanDrop"] = "canDrop"; - // DPI_CanEdit, having type bool - ParameterId["CanEdit"] = "canEdit"; - // DPI_CanEditLegendColor, having type bool - ParameterId["CanEditLegendColor"] = "canEditLegendColor"; - // DPI_CanEnableCenter, having type bool - ParameterId["CanEnableCenter"] = "canEnableCenter"; - // DPI_CanEnableFilterStateButton, having type bool - ParameterId["CanEnableFilterStateButton"] = "canEnableFilterStateButton"; - // DPI_CanFloat, having type bool - ParameterId["CanFloat"] = "canFloat"; - // DPI_CanHaveTitle, having type bool - ParameterId["CanHaveTitle"] = "canHaveTitle"; - // DPI_CanIgnoreUpdate, having type bool - ParameterId["CanIgnoreUpdate"] = "canIgnoreUpdate"; - // DPI_CanNavigateBack, having type bool - ParameterId["CanNavigateBack"] = "canNavigateBack"; - // DPI_CanNavigateForward, having type bool - ParameterId["CanNavigateForward"] = "canNavigateForward"; - // DPI_CanScrollX, having type bool - ParameterId["CanScrollX"] = "canScrollX"; - // DPI_CanScrollY, having type bool - ParameterId["CanScrollY"] = "canScrollY"; - // DPI_CanSetDomain, having type bool - ParameterId["CanSetDomain"] = "canSetDomain"; - // DPI_CanSetMapUnit, having type bool - ParameterId["CanSetMapUnit"] = "canSetMapUnit"; - // DPI_CanShowApplyButton, having type bool - ParameterId["CanShowApplyButton"] = "canShowApplyButton"; - // DPI_CanShowFilterStateButton, having type bool - ParameterId["CanShowFilterStateButton"] = "canShowFilterStateButton"; - // DPI_CanShowMoreFewerButton, having type bool - ParameterId["CanShowMoreFewerButton"] = "canShowMoreFewerButton"; - // DPI_CanShowSyncClientOptions, having type bool - ParameterId["CanShowSyncClientOptions"] = "canShowSyncClientOptions"; - // DPI_CanSort, having type bool - ParameterId["CanSort"] = "canSort"; - // DPI_CanSortOrdinally, having type bool - ParameterId["CanSortOrdinally"] = "canSortOrdinal"; - // DPI_CanToggleAutomaticDrill, having type bool - ParameterId["CanToggleAutomaticDrill"] = "canToggleAutomaticDrill"; - // DPI_CanToggleGeographicSearch, having type bool - ParameterId["CanToggleGeographicSearch"] = "canToggleGeographicSearch"; - // DPI_CanToggleMapScale, having type bool - ParameterId["CanToggleMapScale"] = "canToggleMapScale"; - // DPI_CanUseFullColorRange, having type bool - ParameterId["CanUseFullColorRange"] = "canUseFullColorRange"; - // DPI_CenterHorizontally, having type bool - ParameterId["CenterHorizontally"] = "centerHorizontally"; - // DPI_CenterVertically, having type bool - ParameterId["CenterVertically"] = "centerVertically"; - // DPI_ChangeAllFields, having type bool - ParameterId["ChangeAllFields"] = "changeAllFields"; - // DPI_Changed, having type bool - ParameterId["Changed"] = "changed"; - // DPI_ClearBrushing, having type bool - ParameterId["ClearBrushing"] = "clearBrushing"; - // DPI_ClearSort, having type bool - ParameterId["ClearSort"] = "clearSort"; - // DPI_ClearView, having type bool - ParameterId["ClearView"] = "clearView"; - // DPI_Collapsed, having type bool - ParameterId["Collapsed"] = "collapsed"; - // DPI_ConsolidateInCommit, having type bool - ParameterId["ConsolidateInCommit"] = "consolidateInCommit"; - // DPI_ClusterEnableScaledCheckbox, having type bool - ParameterId["ClusterEnableScaledCheckbox"] = "clusterEnableScaledCheckbox"; - // DPI_CommitPillFinished, having type bool - ParameterId["CommitPillFinished"] = "commitPillFinished"; - // DPI_CompressArrays, having type bool - ParameterId["CompressArrays"] = "compressArrays"; - // DPI_ComputeCompoundedRate, having type bool - ParameterId["ComputeCompoundedRate"] = "computeCompoundedRate"; - // DPI_ConfidenceIntervalAllowed, having type bool - ParameterId["ConfidenceIntervalAllowed"] = "confidenceIntervalAllowed"; - // DPI_ConfigIsDesktopStandard, having type bool - ParameterId["ConfigIsDesktopStandard"] = "configIsDesktopStandard"; - // DPI_ConfigIsInteractor, having type bool - ParameterId["ConfigIsInteractor"] = "configIsInteractor"; - // DPI_ConfigIsPublic, having type bool - ParameterId["ConfigIsPublic"] = "configIsPublic"; - // DPI_ConfigIsReader, having type bool - ParameterId["ConfigIsReader"] = "configIsReader"; - // DPI_ContainsQuant, having type bool - ParameterId["ContainsQuant"] = "containsQuant"; - // DPI_ContainsValidDatasources, having type bool - ParameterId["ContainsValidDatasources"] = "containsValidDatasources"; - // DPI_ControllerMissing, having type bool - ParameterId["ControllerMissing"] = "controllerMissing"; - // DPI_CreateExtractForPublish, having type bool - ParameterId["CreateExtractForPublish"] = "createExtractForPublish"; - // DPI_CrossTab, having type bool - ParameterId["CrossTab"] = "crossTab"; - // DPI_CullLabels, having type bool - ParameterId["CullLabels"] = "cullLabels"; - // DPI_CurrentCustViewIdFlag, having type bool - ParameterId["CurrentCustViewIdFlag"] = "isCurrentCustViewIdValid"; - // DPI_DashboardEnableSnap, having type bool - ParameterId["DashboardEnableSnap"] = "dashboardEnableSnap"; - // DPI_DashboardShowGrid, having type bool - ParameterId["DashboardShowGrid"] = "dashboardShowGrid"; - // DPI_DataGridSortOrder, having type bool - ParameterId["DataGridSortOrder"] = "datagridSortOrder"; - // DPI_DeleteExtract, having type bool - ParameterId["DeleteExtract"] = "deleteExtract"; - // DPI_DeleteOnlySpecifiedSelection, having type bool - ParameterId["DeleteOnlySpecifiedSelection"] = "deleteOnlySpecifiedSelection"; - // DPI_DeleteOrphans, having type bool - ParameterId["DeleteOrphans"] = "deleteOrphans"; - // DPI_DisabledDataConnectionClassNames, having type bool - ParameterId["DisabledDataConnectionClassNames"] = "disabledDataConnectionClassNames"; - // DPI_DisablePresModelHandler, having type bool - ParameterId["DisablePresModelHandler"] = "disablePresModelHandler"; - // DPI_DisplayDate, having type bool - ParameterId["DisplayDate"] = "displayDate"; - // DPI_DisplayTime, having type bool - ParameterId["DisplayTime"] = "displayTime"; - // DPI_DoDropUIAction, having type bool - ParameterId["DoDropUIAction"] = "doDropUiAction"; - // DPI_DoMerge, having type bool - ParameterId["DoMerge"] = "doMerge"; - // DPI_DoPreDropUIAction, having type bool - ParameterId["DoPreDropUIAction"] = "doPreDropUiAction"; - // DPI_DoQuery, having type bool - ParameterId["DoQuery"] = "doQuery"; - // DPI_DragHorz, having type bool - ParameterId["DragHorz"] = "dragHorz"; - // DPI_DrillDown, having type bool - ParameterId["DrillDown"] = "drillDown"; - // DPI_DropToXAxis, having type bool - ParameterId["DropToXAxis"] = "dropToXAxis"; - // DPI_DropToYAxis, having type bool - ParameterId["DropToYAxis"] = "dropToYAxis"; - // DPI_DropUnnamedFields, having type bool - ParameterId["DropUnnamedFields"] = "dropUnnamedFields"; - // DPI_EditExisting, having type bool - ParameterId["EditExisting"] = "editExisting"; - // DPI_EditingConnection, having type bool - ParameterId["EditingConnection"] = "editingConnection"; - // DPI_EmbedCredentials, having type bool - ParameterId["EmbedCredentials"] = "embedCredentials"; - // DPI_EmbedOAuthCredential, having type bool - ParameterId["EmbedOAuthCredential"] = "embedOauthCredentials"; - // DPI_EmptyHighlightFogAll, having type bool - ParameterId["EmptyHighlightFogAll"] = "emptyHighlightFogAll"; - // DPI_EnableAlphabeticSort, having type bool - ParameterId["EnableAlphabeticSort"] = "enableAlphabeticSort"; - // DPI_EnableAutomaticDrill, having type bool - ParameterId["EnableAutomaticDrill"] = "enableAutomaticDrill"; - // DPI_EnableConfidenceBands, having type bool - ParameterId["EnableConfidenceBands"] = "enableConfidenceBands"; - // DPI_EnableDataOrderSort, having type bool - ParameterId["EnableDataOrderSort"] = "enableDataOrderSort"; - // DPI_EnableFieldSort, having type bool - ParameterId["EnableFieldSort"] = "enableFieldSort"; - // DPI_EnableInstantAnalytics, having type bool - ParameterId["EnableInstantAnalytics"] = "enableInstantAnalytics"; - // DPI_EnableLines, having type bool - ParameterId["EnableLines"] = "enableLines"; - // DPI_EnableManualSort, having type bool - ParameterId["EnableManualSort"] = "enableManualSort"; - // DPI_EnableMarks, having type bool - ParameterId["EnableMarks"] = "enableMarks"; - // DPI_EnableMultipleSelection, having type bool - ParameterId["EnableMultipleSelection"] = "enableMultipleSelection"; - // DPI_EnablePrefetching, having type bool - ParameterId["EnablePrefetching"] = "enablePrefetching"; - // DPI_EnableTableCalcDensification, having type bool - ParameterId["EnableTableCalcDensification"] = "enableTableCalcDensification"; - // DPI_EndDataSourcePresModelUpdate, having type bool - ParameterId["EndDataSourcePresModelUpdate"] = "endDataSourcePresModelUpdate"; - // DPI_EstimateNulls, having type bool - ParameterId["EstimateNulls"] = "estimateNulls"; - // DPI_Exclude, having type bool - ParameterId["Exclude"] = "exclude"; - // DPI_ExcludeColor, having type bool - ParameterId["ExcludeColor"] = "excludeColor"; - // DPI_ExcludeCubeDenorm, having type bool - ParameterId["ExcludeCubeDenorm"] = "excludeCubeDenorm"; - // DPI_ExcludeInterceptEnabled, having type bool - ParameterId["ExcludeInterceptEnabled"] = "excludeInterceptEnabled"; - // DPI_ExcludeLocalFunctions, having type bool - ParameterId["ExcludeLocalFunctions"] = "excludeLocalFunctions"; - // DPI_ExportDashboardImageFromSheet, having type bool - ParameterId["ExportDashboardImageFromSheet"] = "exportImageSheetAsDashboard"; - // DPI_ExtSvcConfigIsAuthEnabled, having type bool - ParameterId["ExtSvcConfigIsAuthEnabled"] = "extSvcConfigIsAuthEnabled"; - // DPI_ExtractFullRefresh, having type bool - ParameterId["ExtractFullRefresh"] = "extractFullRefresh"; - // DPI_ExtractNeedsRefresh, having type bool - ParameterId["ExtractNeedsRefresh"] = "extractNeedsRefresh"; - // DPI_ExtractPending, having type bool - ParameterId["ExtractPending"] = "extractPending"; - // DPI_ExtractSelected, having type bool - ParameterId["ExtractSelected"] = "extractSelected"; - // DPI_FederatableOnly, having type bool - ParameterId["FederatableOnly"] = "federatableOnly"; - // DPI_FieldSortOrder, having type bool - ParameterId["FieldSortOrder"] = "fieldSortOrder"; - // DPI_FieldSupportsContains, having type bool - ParameterId["FieldSupportsContains"] = "fieldSupportsContains"; - // DPI_FieldSupportsEndsWith, having type bool - ParameterId["FieldSupportsEndsWith"] = "fieldSupportsEndsWith"; - // DPI_FieldSupportsStartsWith, having type bool - ParameterId["FieldSupportsStartsWith"] = "fieldSupportsStartsWith"; - // DPI_FillAbove, having type bool - ParameterId["FillAbove"] = "fillAbove"; - // DPI_FillBelow, having type bool - ParameterId["FillBelow"] = "fillBelow"; - // DPI_FillWithZeroes, having type bool - ParameterId["FillWithZeroes"] = "fillZeroes"; - // DPI_FilterIsNamed, having type bool - ParameterId["FilterIsNamed"] = "filterIsNamed"; - // DPI_Focus, having type bool - ParameterId["Focus"] = "focus"; - // DPI_ForInternalUse, having type bool - ParameterId["ForInternalUse"] = "internalUse"; - // DPI_ForceBrowserRendering, having type bool - ParameterId["ForceBrowserRendering"] = "forceBrowserRendering"; - // DPI_ForceCache, having type bool - ParameterId["ForceCache"] = "forceCache"; - // DPI_ForceColorFromApp, having type bool - ParameterId["ForceColorFromApp"] = "forceColorFromApp"; - // DPI_ForceConnectionAttempt, having type bool - ParameterId["ForceConnectionAttempt"] = "forceConnectionAttempt"; - // DPI_ForceConsolidateInCommit, having type bool - ParameterId["ForceConsolidateInCommit"] = "forceConsolidateInCommit"; - // DPI_ForceExtractRefresh, having type bool - ParameterId["ForceExtractRefresh"] = "extractForceRefresh"; - // DPI_ForceInterceptZero, having type bool - ParameterId["ForceInterceptZero"] = "forceInterceptZero"; - // DPI_ForceOldConnectExperience, having type bool - ParameterId["ForceOldConnectExperience"] = "forceOldConnectExperience"; - // DPI_ForceToggleHighlightStateOn, having type bool - ParameterId["ForceToggleHighlightStateOn"] = "forceHighlightOn"; - // DPI_ForceWholeDate, having type bool - ParameterId["ForceWholeDate"] = "forceWholeDate"; - // DPI_ForecastSelected, having type bool - ParameterId["ForecastSelected"] = "forecastSelected"; - // DPI_ForecastUseAutoAgg, having type bool - ParameterId["ForecastUseAutoAgg"] = "forecastUseAutoSummarize"; - // DPI_ForJoin, having type bool - ParameterId["ForJoin"] = "forJoin"; - // DPI_FormatDataValueLocally, having type bool - ParameterId["FormatDataValueLocally"] = "formatDataValueLocally"; - // DPI_FormatIfColumn, having type bool - ParameterId["FormatIfColumn"] = "formatIfColumn"; - // DPI_FormatIfParameter, having type bool - ParameterId["FormatIfParameter"] = "formatIfParameter"; - // DPI_GeographicSearchIsDataLoaded, having type bool - ParameterId["GeographicSearchIsDataLoaded"] = "geographicSearchDataLoaded"; - // DPI_GeographicSearchLoadDataAsync, having type bool - ParameterId["GeographicSearchLoadDataAsync"] = "geographicSearchLoadDataAsync"; - // DPI_GroupByAll, having type bool - ParameterId["GroupByAll"] = "groupByAll"; - // DPI_HasAlias, having type bool - ParameterId["HasAlias"] = "hasAlias"; - // DPI_HasAllMember, having type bool - ParameterId["HasAllMember"] = "hasAllMember"; - // DPI_HasApply, having type bool - ParameterId["HasApply"] = "hasApply"; - // DPI_HasBackgroundImage, having type bool - ParameterId["HasBackgroundImage"] = "hasBackgroundImage"; - // DPI_HasBeenDismissed, having type bool - ParameterId["HasBeenDismissed"] = "hasBeenDismissed"; - // DPI_HasCaption, having type bool - ParameterId["HasCaption"] = "hasCaption"; - // DPI_HasCondition, having type bool - ParameterId["HasCondition"] = "hasCondition"; - // DPI_HasConnectPermissions, having type bool - ParameterId["HasConnectPermissions"] = "hasConnectPermissions"; - // DPI_HasDashboard, having type bool - ParameterId["HasDashboard"] = "hasDashboard"; - // DPI_HasDownloadPermissions, having type bool - ParameterId["HasDownloadPermissions"] = "hasDownloadPermissions"; - // DPI_HasDrill, having type bool - ParameterId["HasDrill"] = "hasDrill"; - // DPI_HasExclude, having type bool - ParameterId["HasExclude"] = "hasExclude"; - // DPI_HasFill, having type bool - ParameterId["HasFill"] = "hasFill"; - // DPI_HasLabels, having type bool - ParameterId["HasLabels"] = "hasLabels"; - // DPI_HasLimit, having type bool - ParameterId["HasLimit"] = "hasLimit"; - // DPI_HasLine, having type bool - ParameterId["HasLine"] = "hasLine"; - // DPI_HasModifiedAxes, having type bool - ParameterId["HasModifiedAxes"] = "hasModifiedAxes"; - // DPI_HasNonRootCalculations, having type bool - ParameterId["HasNonRootCalculations"] = "hasNonRootCalculations"; - // DPI_HasPattern, having type bool - ParameterId["HasPattern"] = "hasPattern"; - // DPI_HasPublishGuidanceResults, having type bool - ParameterId["HasPublishGuidanceResults"] = "hasPublishGuidanceResults"; - // DPI_HasSelection, having type bool - ParameterId["HasSelection"] = "hasSelection"; - // DPI_HasServerCredentials, having type bool - ParameterId["HasServerCredentials"] = "hasServerCredentials"; - // DPI_HasSpace, having type bool - ParameterId["HasSpace"] = "hasSpace"; - // DPI_HasStoredProcedure, having type bool - ParameterId["HasStoredProcedure"] = "hasStoredProcedure"; - // DPI_HasStringCalculatedMeasures, having type bool - ParameterId["HasStringCalculatedMeasures"] = "hasStringCalculatedMeasures"; - // DPI_HasTableCalcData, having type bool - ParameterId["HasTableCalcData"] = "hasTableCalcData"; - // DPI_HasTitle, having type bool - ParameterId["HasTitle"] = "hasTitle"; - // DPI_HasUserSpecificContent, having type bool - ParameterId["HasUserSpecificContent"] = "hasUserSpecificContent"; - // DPI_HasUnjoinedTable, having type bool - ParameterId["HasUnjoinedTable"] = "hasUnjoinedTable"; - // DPI_HasVarArgs, having type bool - ParameterId["HasVarArgs"] = "hasVarArgs"; - // DPI_HasVisitedWDCPage, having type bool - ParameterId["HasVisitedWDCPage"] = "hasVisitedWdcPage"; - // DPI_IgnoreAliases, having type bool - ParameterId["IgnoreAliases"] = "ignoreAliases"; - // DPI_IgnoreDomain, having type bool - ParameterId["IgnoreDomain"] = "ignoreDomain"; - // DPI_IgnoreSelection, having type bool - ParameterId["IgnoreSelection"] = "ignoreSelection"; - // DPI_IncludeAllColumns, having type bool - ParameterId["IncludeAllColumns"] = "includeAllColumns"; - // DPI_IncludeContext, having type bool - ParameterId["IncludeContext"] = "includeContext"; - // DPI_IncludeDashboardPresModels, having type bool - ParameterId["IncludeDashboardPresModels"] = "includeDashboardPresModels"; - // DPI_IncludeItemSet, having type bool - ParameterId["IncludeItemSet"] = "includeItemSet"; - // DPI_IncludeLocalFiles, having type bool - ParameterId["IncludeLocalFiles"] = "includeLocalFiles"; - // DPI_IncludeOtherSelected, having type bool - ParameterId["IncludeOtherSelected"] = "includeOtherSelected"; - // DPI_IncludeNulls, having type bool - ParameterId["IncludeNulls"] = "includeNulls"; - // DPI_IncludeParent, having type bool - ParameterId["IncludeParent"] = "includeParent"; - // DPI_IncludeSelections, having type bool - ParameterId["IncludeSelections"] = "includeSelections"; - // DPI_IncludeSiblings, having type bool - ParameterId["IncludeSiblings"] = "includeSiblings"; - // DPI_IncludeStories, having type bool - ParameterId["IncludeStories"] = "includeStories"; - // DPI_IncludeSubfolders, having type bool - ParameterId["IncludeSubfolders"] = "includeSubfolders"; - // DPI_IncludeVolatileProps, having type bool - ParameterId["IncludeVolatileProps"] = "includeVolatileProps"; - // DPI_IncludesTag, having type bool - ParameterId["IncludesTag"] = "includesTag"; - // DPI_InsertAfter, having type bool - ParameterId["InsertAfter"] = "insertAfter"; - // DPI_InsertAtEnd, having type bool - ParameterId["InsertAtEnd"] = "insertAtEnd"; - // DPI_InstantAnalyticsAllowed, having type bool - ParameterId["InstantAnalyticsAllowed"] = "instantAnalyticsAllowed"; - // DPI_IntegerCoordinates, having type bool - ParameterId["IntegerCoordinates"] = "intCoords"; - // DPI_InvalidatedLayout, having type bool - ParameterId["InvalidatedLayout"] = "invalidatedLayout"; - // DPI_IsActive, having type bool - ParameterId["IsActive"] = "isActive"; - // DPI_IsAddToFilter, having type bool - ParameterId["IsAddToFilter"] = "isAddToFilterButtonChecked"; - // DPI_IsAllButtonVisible, having type bool - ParameterId["IsAllButtonVisible"] = "isAllButtonVisible"; - // DPI_IsAllowedInCalcs, having type bool - ParameterId["IsAllowedInCalcs"] = "isAllowedInCalcs"; - // DPI_IsAppMapSource, having type bool - ParameterId["IsAppMapSource"] = "isAppMapSource"; - // DPI_IsArchive, having type bool - ParameterId["IsArchive"] = "isArchive"; - // DPI_IsAuthoringMode, having type bool - ParameterId["IsAuthoringMode"] = "isAuthoringMode"; - // DPI_IsAuto, having type bool - ParameterId["IsAuto"] = "isAuto"; - // DPI_IsAutoClear, having type bool - ParameterId["IsAutoClear"] = "isAutoClear"; - // DPI_IsAutoColumn, having type bool - ParameterId["IsAutoColumn"] = "isAutoColumn"; - // DPI_IsAutoHidden, having type bool - ParameterId["IsAutoHidden"] = "isAutoHidden"; - // DPI_IsAutoSelect, having type bool - ParameterId["IsAutoSelect"] = "isAutoSelect"; - // DPI_IsBold, having type bool - ParameterId["IsBold"] = "isBold"; - // DPI_IsBorderVisible, having type bool - ParameterId["IsBorderVisible"] = "isBorderVisible"; - // DPI_IsBoxplot, having type bool - ParameterId["IsBoxplot"] = "isBoxplot"; - // DPI_IsCapable, having type bool - ParameterId["IsCapable"] = "isCapable"; - // DPI_IsCaptured, having type bool - ParameterId["IsCaptured"] = "isCaptured"; - // DPI_IsCentered, having type bool - ParameterId["IsCentered"] = "isCentered"; - // DPI_IsChecked, having type bool - ParameterId["IsChecked"] = "isChecked"; - // DPI_IsColorDiverging, having type bool - ParameterId["IsColorDiverging"] = "isColorDiverging"; - // DPI_IsColorStepped, having type bool - ParameterId["IsColorStepped"] = "isColorStepped"; - // DPI_IsCombinedField, having type bool - ParameterId["IsCombinedField"] = "isCombinedField"; - // DPI_IsConnected, having type bool - ParameterId["IsConnected"] = "isConnected"; - // DPI_IsContextMenuAllowed, having type bool - ParameterId["IsContextMenuAllowed"] = "isContextMenuAllowed"; - // DPI_IsContinuous, having type bool - ParameterId["IsContinuous"] = "isContinuous"; - // DPI_IsCopy, having type bool - ParameterId["IsCopy"] = "isCopy"; - // DPI_IsCustomPalette, having type bool - ParameterId["IsCustomPalette"] = "isCustomPalette"; - // DPI_IsCustomSQL, having type bool - ParameterId["IsCustomSQL"] = "isCustomSql"; - // DPI_IsCustomValueEnabled, having type bool - ParameterId["IsCustomValueEnabled"] = "isCustomValueEnabled"; - // DPI_IsDataAlertConditionMet, having type bool - ParameterId["IsDataAlertConditionMet"] = "isDataAlertConditionMet"; - // DPI_IsDataAlertDialogVisible, having type bool - ParameterId["IsDataAlertDialogVisible"] = "isDataAlertDialogVisible"; - // DPI_IsDataBin, having type bool - ParameterId["IsDataBin"] = "isDataBin"; - // DPI_IsDataGridVisible, having type bool - ParameterId["IsDataGridVisible"] = "isDataGridVisible"; - // DPI_IsDatabase, having type bool - ParameterId["IsDatabase"] = "isDatabase"; - // DPI_IsDatabaseFilterInclusive, having type bool - ParameterId["IsDatabaseFilterInclusive"] = "isDbFilterInclusive"; - // DPI_IsWebDataTabViewSupported, having type bool - ParameterId["IsWebDataTabViewSupported"] = "isWebDataTabViewSupported"; - // DPI_IsPublishedDatasourceReplacement, having type bool - ParameterId["IsPublishedDatasourceReplacement"] = "isPublishedDatasourceReplacement"; - // DPI_IsDeadDrop, having type bool - ParameterId["IsDeadDrop"] = "isDeadDrop"; - // DPI_IsDefault, having type bool - ParameterId["IsDefault"] = "isDefault"; - // DPI_IsDeleteCalcConfirm, having type bool - ParameterId["IsDeleteCalcConfirm"] = "isDeleteCalcConfirmed"; - // DPI_IsDimension, having type bool - ParameterId["IsDimension"] = "isDimension"; - // DPI_IsDropdownEnabled, having type bool - ParameterId["IsDropdownEnabled"] = "isDropdownEnabled"; - // DPI_IsEditing, having type bool - ParameterId["IsEditing"] = "isEditing"; - // DPI_IsEmbedded, having type bool - ParameterId["IsEmbedded"] = "isEmbedded"; - // DPI_IsEmpty, having type bool - ParameterId["IsEmpty"] = "isEmpty"; - // DPI_IsAddInEnabled, having type bool - ParameterId["IsAddInEnabled"] = "isAddInEnabled"; - // DPI_AddInJSDebuggingEnabled, having type bool - ParameterId["AddInJSDebuggingEnabled"] = "addInJsDebugginEnabled"; - // DPI_AddInPauseBeforeLoading, having type bool - ParameterId["AddInPauseBeforeLoading"] = "addInPauseBeforeLoading"; - // DPI_IsEndPtMoveable, having type bool - ParameterId["IsEndPtMoveable"] = "isEndpointMovable"; - // DPI_IsExclude, having type bool - ParameterId["IsExclude"] = "isExcludeButtonChecked"; - // DPI_IsExistingConnection, having type bool - ParameterId["IsExistingConnection"] = "isExistingConnection"; - // DPI_IsExistingObject, having type bool - ParameterId["IsExistingObject"] = "isExistingObject"; - // DPI_IsExtract, having type bool - ParameterId["IsExtract"] = "isExtract"; - // DPI_IsExtractOnlyConnection, having type bool - ParameterId["IsExtractOnlyConnection"] = "isExtractOnlyConnection"; - // DPI_IsExtractSelectionVisible, having type bool - ParameterId["IsExtractSelectionVisible"] = "isExtractSelectionVisible"; - // DPI_IsFederatable, having type bool - ParameterId["IsFederatable"] = "isFederatable"; - // DPI_IsField, having type bool - ParameterId["IsField"] = "isField"; - // DPI_IsFieldParameter, having type bool - ParameterId["IsFieldParameter"] = "isFieldParameter"; - // DPI_IsFilterActionField, having type bool - ParameterId["IsFilterActionField"] = "isFilterActionField"; - // DPI_IsFirstClassConnector, having type bool - ParameterId["IsFirstClassConnector"] = "isFirstClassConnector"; - // DPI_IsFloating, having type bool - ParameterId["IsFloating"] = "isFloating"; - // DPI_IsFolded, having type bool - ParameterId["IsFolded"] = "isFolded"; - // DPI_IsForInput, having type bool - ParameterId["IsForInput"] = "isForInput"; - // DPI_IsForecastEnabled, having type bool - ParameterId["IsForecastEnabled"] = "isForecastEnabled"; - // DPI_IsForceDirty, having type bool - ParameterId["IsForceDirty"] = "isForceDirty"; - // DPI_IsFullScan, having type bool - ParameterId["IsFullScan"] = "isFullScan"; - // DPI_IsFullStyling, having type bool - ParameterId["IsFullStyling"] = "isFullStyling"; - // DPI_IsGenerated, having type bool - ParameterId["IsGenerated"] = "isGenerated"; - // DPI_IsGlobalNames, having type bool - ParameterId["IsGlobalNames"] = "isGlobalNames"; - // DPI_IsGrayed, having type bool - ParameterId["IsGrayed"] = "isGrayed"; - // DPI_IsGrayscale, having type bool - ParameterId["IsGrayscale"] = "isGrayscale"; - // DPI_IsGroup, having type bool - ParameterId["IsGroup"] = "isGroup"; - // DPI_IsHierarchy, having type bool - ParameterId["IsHierarchy"] = "isHierarchy"; - // DPI_IsHierarchySingleSelect, having type bool - ParameterId["IsHierarchySingleSelect"] = "isHierarchySingleSelect"; - // DPI_IsHighlightAllowed, having type bool - ParameterId["IsHighlightAllowed"] = "isHighlightAllowed"; - // DPI_IsHighlightEnabled, having type bool - ParameterId["IsHighlightEnabled"] = "isHighlightEnabled"; - // DPI_IsHighlightField, having type bool - ParameterId["IsHighlightField"] = "isHighlightField"; - // DPI_IsHorizontal, having type bool - ParameterId["IsHorizontal"] = "isHorizontal"; - // DPI_IsImageEnabled, having type bool - ParameterId["IsImageEnabled"] = "isImageEnabled"; - // DPI_IsInDefault, having type bool - ParameterId["IsInDefault"] = "isInDefault"; - // DPI_IsInPrimaryDataSource, having type bool - ParameterId["IsInPrimaryDataSource"] = "isInPrimaryDataSource"; - // DPI_IsInner, having type bool - ParameterId["IsInner"] = "isInner"; - // DPI_IsInstance, having type bool - ParameterId["IsInstance"] = "isInstance"; - // DPI_IsInvalid, having type bool - ParameterId["IsInvalid"] = "isInvalid"; - // DPI_IsInvalidCalcOnDG, having type bool - ParameterId["IsInvalidCalcOnDG"] = "isInvalidDgCalc"; - // DPI_IsItalics, having type bool - ParameterId["IsItalics"] = "isItalics"; - // DPI_IsJoinAreaVisible, having type bool - ParameterId["IsJoinAreaVisible"] = "isJoinAreaVisible"; - // DPI_IsLabels, having type bool - ParameterId["IsLabels"] = "isLabels"; - // DPI_IsLayered, having type bool - ParameterId["IsLayered"] = "isLayered"; - // DPI_IsLeft, having type bool - ParameterId["IsLeft"] = "isLeft"; - // DPI_IsLegacy, having type bool - ParameterId["IsLegacy"] = "isLegacy"; - // DPI_IsLevel, having type bool - ParameterId["IsLevel"] = "isLevel"; - // DPI_IsLevelOrLevelIdentity, having type bool - ParameterId["IsLevelOrLevelIdentity"] = "isLevelOrLevelIdentity"; - // DPI_IsLicensed, having type bool - ParameterId["IsLicensed"] = "isLicensed"; - // DPI_IsLink, having type bool - ParameterId["IsLink"] = "isLink"; - // DPI_IsMap, having type bool - ParameterId["IsMap"] = "isMap"; - // DPI_IsMeasure, having type bool - ParameterId["IsMeasure"] = "isMeasure"; - // DPI_IsMerge, having type bool - ParameterId["IsMerge"] = "isMerge"; - // DPI_IsMessageSourceRemote, having type bool - ParameterId["IsMessageSourceRemote"] = "isMessageSourceRemote"; - // DPI_IsMissingFromExtract, having type bool - ParameterId["IsMissingFromExtract"] = "isMissingFromExtract"; - // DPI_IsMobile, having type bool - ParameterId["IsMobile"] = "isMobile"; - // DPI_IsModified, having type bool - ParameterId["IsModified"] = "isModified"; - // DPI_IsNew, having type bool - ParameterId["IsNew"] = "isNew"; - // DPI_IsNewCloudFileDataSource, having type bool - ParameterId["IsNewCloudFileDataSource"] = "isNewCloudFileDataSource"; - // DPI_IsNone, having type bool - ParameterId["IsNone"] = "isNone"; - // DPI_IsOfflineMode, having type bool - ParameterId["IsOfflineMode"] = "isOfflineMode"; - // DPI_IsPreAqlBin, having type bool - ParameterId["IsPreAqlBin"] = "isPreAqlBin"; - // DPI_IsOMeasuresAndRelational, having type bool - ParameterId["IsOMeasuresAndRelational"] = "isOmeasuresAndRelational"; - // DPI_IsOpaque, having type bool - ParameterId["IsOpaque"] = "isOpaque"; - // DPI_IsOrphaned, having type bool - ParameterId["IsOrphaned"] = "isOrphaned"; - // DPI_IsOverlay, having type bool - ParameterId["IsOverlay"] = "isOverlay"; - // DPI_IsOverride, having type bool - ParameterId["IsOverride"] = "isOverride"; - // DPI_IsPageLoading, having type bool - ParameterId["IsPageLoading"] = "isPageLoading"; - // DPI_IsParameterSelected, having type bool - ParameterId["IsParameterSelected"] = "isParameterSelected"; - // DPI_IsParameterSelectedOnFrom, having type bool - ParameterId["IsParameterSelectedOnFrom"] = "isParameterSelectedOnFrom"; - // DPI_IsParameterSelectedOnTo, having type bool - ParameterId["IsParameterSelectedOnTo"] = "isParameterSelectedOnTo"; - // DPI_IsPatternBased, having type bool - ParameterId["IsPatternBased"] = "isPatternBased"; - // DPI_IsPinned, having type bool - ParameterId["IsPinned"] = "isPinned"; - // DPI_IsPresentationMode, having type bool - ParameterId["IsPresentationMode"] = "isPresentationModeDoc"; - // DPI_IsPublishAllowed, having type bool - ParameterId["IsPublishAllowed"] = "isPublishAllowed"; - // DPI_IsMustDowngradeToPublish, having type bool - ParameterId["IsMustDowngradeToPublish"] = "isDowngradeToPublishRequired"; - // DPI_IsPublished, having type bool - ParameterId["IsPublished"] = "isPublished"; - // DPI_IsQuickTableCalc, having type bool - ParameterId["IsQuickTableCalc"] = "isQuickTableCalc"; - // DPI_IsRadioOn, having type bool - ParameterId["IsRadioOn"] = "isRadioOn"; - // DPI_IsReconnect, having type bool - ParameterId["IsReconnect"] = "isReconnect"; - // DPI_IsRecursive, having type bool - ParameterId["IsRecursive"] = "isRecursive"; - // DPI_IsReferenced, having type bool - ParameterId["IsReferenced"] = "isReferenced"; - // DPI_IsRemovalAllowed, having type bool - ParameterId["IsRemovalAllowed"] = "isRowRemovalAllowed"; - // DPI_IsRenderCapable, having type bool - ParameterId["IsRenderCapable"] = "isRenderCapable"; - // DPI_IsRequired, having type bool - ParameterId["IsRequired"] = "isRequired"; - // DPI_IsReversed, having type bool - ParameterId["IsReversed"] = "isReversed"; - // DPI_IsRightDrag, having type bool - ParameterId["IsRightDrag"] = "isRightDrag"; - // DPI_IsRowLabels, having type bool - ParameterId["IsRowLabels"] = "isRowLabels"; - // DPI_IsPercentage, having type bool - ParameterId["IsPercentage"] = "isPercentage"; - // DPI_IsSalesforceInConnection, having type bool - ParameterId["IsSalesforceInConnection"] = "isSalesforceInConnection"; - // DPI_IsScaled, having type bool - ParameterId["IsScaled"] = "isScaled"; - // DPI_IsSelected, having type bool - ParameterId["IsSelected"] = "isSelected"; - // DPI_IsSelectedItem, having type bool - ParameterId["IsSelectedItem"] = "isSelectedItem"; - // DPI_IsSelectionDisabled, having type bool - ParameterId["IsSelectionDisabled"] = "isSelectionDisabled"; - // DPI_IsShiftDrag, having type bool - ParameterId["IsShiftDrag"] = "isShiftDrag"; - // DPI_IsSingleLabel, having type bool - ParameterId["IsSingleLabel"] = "isSingleLabel"; - // DPI_IsSingleSelect, having type bool - ParameterId["IsSingleSelect"] = "isSingleSelect"; - // DPI_IsSingleSelectMode, having type bool - ParameterId["IsSingleSelectMode"] = "isSingleSelectMode"; - // DPI_IsSingleSelection, having type bool - ParameterId["IsSingleSelection"] = "isSingleSelection"; - // DPI_IsSorted, having type bool - ParameterId["IsSorted"] = "isSorted"; - // DPI_IsSortPill, having type bool - ParameterId["IsSortPill"] = "isSortPill"; - // DPI_IsSpecial, having type bool - ParameterId["IsSpecial"] = "isSpecial"; - // DPI_IsSplashScreen, having type bool - ParameterId["IsSplashScreen"] = "isSplashScreen"; - // DPI_IsStoryEmpty, having type bool - ParameterId["IsStoryEmpty"] = "isStoryEmpty"; - // DPI_IsStrikeThrough, having type bool - ParameterId["IsStrikeThrough"] = "isStrikeThrough"; - // DPI_IsTableCalc, having type bool - ParameterId["IsTableCalc"] = "isTableCalc"; - // DPI_IsTableCleaningSubtable, having type bool - ParameterId["IsTableCleaningSubtable"] = "isTableCleaningSubtable"; - // DPI_IsTableFilterInclusive, having type bool - ParameterId["IsTableFilterInclusive"] = "isTableFilterInclusive"; - // DPI_IsTableRanked, having type bool - ParameterId["IsTableRanked"] = "isTableRanked"; - // DPI_IsTemporary, having type bool - ParameterId["IsTemporary"] = "isTemporary"; - // DPI_IsTitleVisible, having type bool - ParameterId["IsTitleVisible"] = "isTitleVisible"; - // DPI_IsTopLevel, having type bool - ParameterId["IsTopLevel"] = "isTopLevel"; - // DPI_IsTwoValued, having type bool - ParameterId["IsTwoValued"] = "isTwoValued"; - // DPI_IsTypeInFinished, having type bool - ParameterId["IsTypeInFinished"] = "isTypeinFinished"; - // DPI_IsTypeInPill, having type bool - ParameterId["IsTypeInPill"] = "isTypeInPill"; - // DPI_IsURLActionField, having type bool - ParameterId["IsURLActionField"] = "isUrlActionField"; - // DPI_IsUnderlined, having type bool - ParameterId["IsUnderlined"] = "isUnderlined"; - // DPI_IsUnion, having type bool - ParameterId["IsUnion"] = "isUnion"; - // DPI_IsUnionReplacement, having type bool - ParameterId["IsUnionReplacement"] = "isUnionReplacement"; - // DPI_IsUnnamedCalc, having type bool - ParameterId["IsUnnamedCalc"] = "isUnnamed"; - // DPI_IsUserEditable, having type bool - ParameterId["IsUserEditable"] = "isUserEditable"; - // DPI_IsUserPrompted, having type bool - ParameterId["IsUserPrompted"] = "isUserPrompted"; - // DPI_IsUserResponded, having type bool - ParameterId["IsUserResponded"] = "isUserResponded"; - // DPI_IsValid, having type bool - ParameterId["IsValid"] = "isValid"; - // DPI_IsValidWDCPage, having type bool - ParameterId["IsValidWDCPage"] = "isValidWdcPage"; - // DPI_IsVaryingAttributeDimension, having type bool - ParameterId["IsVaryingAttributeDimension"] = "isVaryingAttributeDimension"; - // DPI_IsVertical, having type bool - ParameterId["IsVertical"] = "isVertical"; - // DPI_IsViewModified, having type bool - ParameterId["IsViewModified"] = "isViewModified"; - // DPI_IsVisuallyCategorical, having type bool - ParameterId["IsVisuallyCategorical"] = "isVisuallyCat"; - // DPI_IsVizInTooltip, having type bool - ParameterId["IsVizInTooltip"] = "isVizInTooltip"; - // DPI_IsWeb, having type bool - ParameterId["IsWeb"] = "isWeb"; - // DPI_IsWhite, having type bool - ParameterId["IsWhite"] = "isWhite"; - // DPI_IsWorldNew, having type bool - ParameterId["IsWorldNew"] = "isWorldNew"; - // DPI_IsXAxis, having type bool - ParameterId["IsXAxis"] = "isXAxis"; - // DPI_KeepAspectRatio, having type bool - ParameterId["KeepAspectRatio"] = "keepAspectRatio"; - // DPI_LabelLineEndFirst, having type bool - ParameterId["LabelLineEndFirst"] = "labelLineEndFirst"; - // DPI_LabelLineEndLast, having type bool - ParameterId["LabelLineEndLast"] = "labelLineEndLast"; - // DPI_LabelMarkMax, having type bool - ParameterId["LabelMarkMax"] = "labelMarkMax"; - // DPI_LabelMarkMin, having type bool - ParameterId["LabelMarkMin"] = "labelMarkMin"; - // DPI_LockAspectRatio, having type bool - ParameterId["LockAspectRatio"] = "lockAspectRatio"; - // DPI_LoopPlayback, having type bool - ParameterId["LoopPlayback"] = "loopPlayback"; - // DPI_LossyImages, having type bool - ParameterId["LossyImages"] = "lossyImages"; - // DPI_MakeGlobal, having type bool - ParameterId["MakeGlobal"] = "isMakeGlobal"; - // DPI_ManualSortOnly, having type bool - ParameterId["ManualSortOnly"] = "manualSortOnly"; - // DPI_MapBoxDefaultStyleSelected, having type bool - ParameterId["MapBoxDefaultStyleSelected"] = "mapboxDefaultStyleSelected"; - // DPI_MapBoxURLParseSuccessful, having type bool - ParameterId["MapBoxURLParseSuccessful"] = "mapboxUrlParseSuccessful"; - // DPI_MapClientRequestsMapTiles, having type bool - ParameterId["MapClientRequestsMapTiles"] = "clientRequestsMapTiles"; - // DPI_MapHasValidLayer, having type bool - ParameterId["MapHasValidLayer"] = "mapHasValidLayer"; - // DPI_MapShowAttribution, having type bool - ParameterId["MapShowAttribution"] = "showAttribution"; - // DPI_MarkLabelsVisibilityChanged, having type bool - ParameterId["MarkLabelsVisibilityChanged"] = "markLabelsVisibilityChanged"; - // DPI_MembersLoaded, having type bool - ParameterId["MembersLoaded"] = "membersLoaded"; - // DPI_MinimizeNames, having type bool - ParameterId["MinimizeNames"] = "useMinNames"; - // DPI_MoveRefereceLineUp, having type bool - ParameterId["MoveRefereceLineUp"] = "moveReferenceLineUp"; - // DPI_MultiDataSources, having type bool - ParameterId["MultiDataSources"] = "multiDataSources"; - // DPI_NavArrowsVisible, having type bool - ParameterId["NavArrowsVisible"] = "navArrowsVisible"; - // DPI_OEMHasSplashScreen, having type bool - ParameterId["OEMHasSplashScreen"] = "oemHasSplashScreen"; - // DPI_OneWayBrushing, having type bool - ParameterId["OneWayBrushing"] = "oneWayBrushing"; - // DPI_OnlyAggregations, having type bool - ParameterId["OnlyAggregations"] = "onlyAggregations"; - // DPI_OverrideAllowed, having type bool - ParameterId["OverrideAllowed"] = "overrideAllowed"; - // DPI_OverrideStackDumper, having type bool - ParameterId["OverrideStackDumper"] = "overrideStackDumper"; - // DPI_PageAutoColorLines, having type bool - ParameterId["PageAutoColorLines"] = "autoColorLines"; - // DPI_PageAutoColorMarks, having type bool - ParameterId["PageAutoColorMarks"] = "autoColorMarks"; - // DPI_PageHistoryFade, having type bool - ParameterId["PageHistoryFade"] = "historyFade"; - // DPI_PercentageBands, having type bool - ParameterId["PercentageBands"] = "percentageBands"; - // DPI_PublishWithRemoteQueryAgent, having type bool - ParameterId["PublishWithRemoteQueryAgent"] = "publishWithRemoteQueryAgent"; - // DPI_PreviousSheet, having type bool - ParameterId["PreviousSheet"] = "previousSheet"; - // DPI_PromptDeleteSheetsWithVizInTooltip, having type bool - ParameterId["PromptDeleteSheetsWithVizInTooltip"] = "promptDeleteSheetsWithVizInTooltip"; - // DPI_QuantilesAllowed, having type bool - ParameterId["QuantilesAllowed"] = "quantilesAllowed"; - // DPI_RadialDistanceHitTest, having type bool - ParameterId["RadialDistanceHitTest"] = "radialDistanceHitTest"; - // DPI_RefLineSelected, having type bool - ParameterId["RefLineSelected"] = "refLineSelected"; - // DPI_RemovedSheets, having type bool - ParameterId["RemovedSheets"] = "removedSheets"; - // DPI_RenderImagesAsUrls, having type bool - ParameterId["RenderImagesAsUrls"] = "imagesAsUrls"; - // DPI_RenderOnTop, having type bool - ParameterId["RenderOnTop"] = "renderOnTop"; - // DPI_RepeatHeadersLegends, having type bool - ParameterId["RepeatHeadersLegends"] = "repeatHeadersLegends"; - // DPI_ReplaceActiveConfig, having type bool - ParameterId["ReplaceActiveConfig"] = "replaceActiveConfig"; - // DPI_ReplaceDatasourceAfterPublish, having type bool - ParameterId["ReplaceDatasourceAfterPublish"] = "replaceDatasourceAfterPublish"; - // DPI_ReplaceDatasourceFailed, having type bool - ParameterId["ReplaceDatasourceFailed"] = "replaceDatasourceFailed"; - // DPI_ReplaceTde, having type bool - ParameterId["ReplaceTde"] = "replaceTde"; - // DPI_RequireSelection, having type bool - ParameterId["RequireSelection"] = "requireSelection"; - // DPI_RequiresDBVariables, having type bool - ParameterId["RequiresDBVariables"] = "requiresDbVariables"; - // DPI_RequiresFieldList, having type bool - ParameterId["RequiresFieldList"] = "requiresFieldList"; - // DPI_RestartEveryFieldIsInvalid, having type bool - ParameterId["RestartEveryFieldIsInvalid"] = "restartEveryFieldIsInvalid"; - // DPI_RightJustify, having type bool - ParameterId["RightJustify"] = "rightJustify"; - // DPI_SaveEnabled, having type bool - ParameterId["SaveEnabled"] = "saveEnabled"; - // DPI_SavePasswordAllowed, having type bool - ParameterId["SavePasswordAllowed"] = "savePasswordAllowed"; - // DPI_ScopeIsolation, having type bool - ParameterId["ScopeIsolation"] = "scopeIsolation"; - // DPI_SelectionRequired, having type bool - ParameterId["SelectionRequired"] = "selectionRequired"; - // DPI_SendNotifications, having type bool - ParameterId["SendNotifications"] = "sendNotifications"; - // DPI_SetActive, having type bool - ParameterId["SetActive"] = "setActive"; - // DPI_SetDefaultSort, having type bool - ParameterId["SetDefaultSort"] = "setDefault"; - // DPI_SheetIsDashboard, having type bool - ParameterId["SheetIsDashboard"] = "isDashboard"; - // DPI_SheetIsStoryboard, having type bool - ParameterId["SheetIsStoryboard"] = "isStory"; - // DPI_ShouldAlwaysDisplayAlias, having type bool - ParameterId["ShouldAlwaysDisplayAlias"] = "shouldAlwaysDisplayAlias"; - // DPI_ShouldAutoCapture, having type bool - ParameterId["ShouldAutoCapture"] = "shouldAutoCapture"; - // DPI_ShouldAutoRevert, having type bool - ParameterId["ShouldAutoRevert"] = "shouldAutoRevert"; - // DPI_ShouldChangeUIMode, having type bool - ParameterId["ShouldChangeUIMode"] = "shouldChangeUiMode"; - // DPI_ShouldDisplay, having type bool - ParameterId["ShouldDisplay"] = "shouldDisplay"; - // DPI_ShouldDrill, having type bool - ParameterId["ShouldDrill"] = "shouldDrill"; - // DPI_ShouldForceConnectionAttempt, having type bool - ParameterId["ShouldForceConnectionAttempt"] = "shouldForceConnectionAttempt"; - // DPI_ShouldRefreshDS, having type bool - ParameterId["ShouldRefreshDS"] = "shouldRefreshDs"; - // DPI_ShouldScaleMarksInAxisUnits, having type bool - ParameterId["ShouldScaleMarksInAxisUnits"] = "shouldScaleMarksInAxisUnits"; - // DPI_ShouldSeedCredentials, having type bool - ParameterId["ShouldSeedCredentials"] = "shouldSeedCredentials"; - // DPI_ShouldShowDistance, having type bool - ParameterId["ShouldShowDistance"] = "shouldShowDistance"; - // DPI_ShouldShowMapScale, having type bool - ParameterId["ShouldShowMapScale"] = "shouldShowMapScale"; - // DPI_ShouldURLEscape, having type bool - ParameterId["ShouldURLEscape"] = "shouldUrlEscape"; - // DPI_ShouldUpdateDomainInfo, having type bool - ParameterId["ShouldUpdateDomainInfo"] = "shouldUpdateDomInfo"; - // DPI_ShowAddToFilter, having type bool - ParameterId["ShowAddToFilter"] = "showAddToFilterButton"; - // DPI_ShowAliases, having type bool - ParameterId["ShowAliases"] = "showAliases"; - // DPI_ShowAllPages, having type bool - ParameterId["ShowAllPages"] = "showAllPages"; - // DPI_ShowApply, having type bool - ParameterId["ShowApply"] = "showApplyButton"; - // DPI_ShowApplyAndCancelButtons, having type bool - ParameterId["ShowApplyAndCancelButtons"] = "showApplyAndCancelButtons"; - // DPI_ShowAuthenticationOptions, having type bool - ParameterId["ShowAuthenticationOptions"] = "showAuthenticationOptions"; - // DPI_ShowAuthenticationSetting, having type bool - ParameterId["ShowAuthenticationSetting"] = "showAuthenticationSetting"; - // DPI_ShowAuto, having type bool - ParameterId["ShowAuto"] = "showAuto"; - // DPI_ShowBold, having type bool - ParameterId["ShowBold"] = "showBoldOption"; - // DPI_ShowButtons, having type bool - ParameterId["ShowButtons"] = "showButtons"; - // DPI_ShowCaption, having type bool - ParameterId["ShowCaption"] = "showCaption"; - // DPI_ShowColorLegend, having type bool - ParameterId["ShowColorLegend"] = "showColorLegend"; - // DPI_ShowDataGridInlineRename, having type bool - ParameterId["ShowDataGridInlineRename"] = "showDataGridInlineRename"; - // DPI_ShowDetailMessages, having type bool - ParameterId["ShowDetailMessages"] = "showDetailMessages"; - // DPI_ShowDate, having type bool - ParameterId["ShowDate"] = "showDate"; - // DPI_ShowDragLabel, having type bool - ParameterId["ShowDragLabel"] = "showDragLabel"; - // DPI_ShowDropMeasures, having type bool - ParameterId["ShowDropMeasures"] = "showDropMeasures"; - // DPI_ShowEmbedAll, having type bool - ParameterId["ShowEmbedAll"] = "showEmbedAll"; - // DPI_ShowEntireImage, having type bool - ParameterId["ShowEntireImage"] = "showEntireImage"; - // DPI_ShowExclude, having type bool - ParameterId["ShowExclude"] = "showExcludeButton"; - // DPI_ShowFloatingZoomToolbar, having type bool - ParameterId["ShowFloatingZoomToolbar"] = "showFloatingZoomToolbar"; - // DPI_ShowFormatter, having type bool - ParameterId["ShowFormatter"] = "showFormatter"; - // DPI_ShowFullSchedules, having type bool - ParameterId["ShowFullSchedules"] = "showFullSchedules"; - // DPI_ShowGeographicSearch, having type bool - ParameterId["ShowGeographicSearch"] = "showGeographicSearch"; - // DPI_ShowHiddenFields, having type bool - ParameterId["ShowHiddenFields"] = "showHiddenFields"; - // DPI_ShowHistoryControls, having type bool - ParameterId["ShowHistoryControls"] = "showHistoryControls"; - // DPI_ShowIncludeLocalFiles, having type bool - ParameterId["ShowIncludeLocalFiles"] = "showIncludeLocalFiles"; - // DPI_ShowIncludeOtherOption, having type bool - ParameterId["ShowIncludeOtherOption"] = "showIncludeOtherOption"; - // DPI_ShowIncludeSelections, having type bool - ParameterId["ShowIncludeSelections"] = "showIncludeSelections"; - // DPI_ShowIncrSchedules, having type bool - ParameterId["ShowIncrSchedules"] = "showIncrSchedules"; - // DPI_ShowInnerMostLevel, having type bool - ParameterId["ShowInnerMostLevel"] = "showInnermostLevel"; - // DPI_ShowItalics, having type bool - ParameterId["ShowItalics"] = "showItalicsOption"; - // DPI_ShowLegend, having type bool - ParameterId["ShowLegend"] = "showLegend"; - // DPI_ShowLockedPermissionsIcon, having type bool - ParameterId["ShowLockedPermissionsIcon"] = "showLockedPermissionsIcon"; - // DPI_ShowManageDatasources, having type bool - ParameterId["ShowManageDatasources"] = "showManageDatasources"; - // DPI_ShowMapLegend, having type bool - ParameterId["ShowMapLegend"] = "showMapLegend"; - // DPI_ShowMapScale, having type bool - ParameterId["ShowMapScale"] = "showMapScale"; - // DPI_ShowMappedFilterCols, having type bool - ParameterId["ShowMappedFilterCols"] = "showMappedFilterColumns"; - // DPI_ShowName, having type bool - ParameterId["ShowName"] = "showName"; - // DPI_ShowNone, having type bool - ParameterId["ShowNone"] = "showNone"; - // DPI_ShowPagePlayback, having type bool - ParameterId["ShowPagePlayback"] = "showPagePlayback"; - // DPI_ShowPageReadout, having type bool - ParameterId["ShowPageReadout"] = "showPageReadout"; - // DPI_ShowPageSlider, having type bool - ParameterId["ShowPageSlider"] = "showPageSlider"; - // DPI_ShowParent, having type bool - ParameterId["ShowParent"] = "showParent"; - // DPI_ShowPercentages, having type bool - ParameterId["ShowPercentages"] = "showPercentages"; - // DPI_ShowPredictionIntervals, having type bool - ParameterId["ShowPredictionIntervals"] = "showPredictionIntervals"; - // DPI_ShowPublishedDatasources, having type bool - ParameterId["ShowPublishedDatasources"] = "showPublishedDatasources"; - // DPI_ShowRelDatePicker, having type bool - ParameterId["ShowRelDatePicker"] = "showRelDatePicker"; - // DPI_ShowReplaceDatasource, having type bool - ParameterId["ShowReplaceDatasource"] = "showReplaceDatasource"; - // DPI_ShowSeparator, having type bool - ParameterId["ShowSeparator"] = "showSeparator"; - // DPI_ShowShapeLegend, having type bool - ParameterId["ShowShapeLegend"] = "showShapeLegend"; - // DPI_ShowSizeLegend, having type bool - ParameterId["ShowSizeLegend"] = "showSizeLegend"; - // DPI_ShowShelf, having type bool - ParameterId["ShowShelf"] = "showShelf"; - // DPI_ShowStructure, having type bool - ParameterId["ShowStructure"] = "showStructure"; - // DPI_ShowSyncClientOptions, having type bool - ParameterId["ShowSyncClientOptions"] = "showSyncClientOptions"; - // DPI_ShowTabsAllowed, having type bool - ParameterId["ShowTabsAllowed"] = "showTabsAllowed"; - // DPI_ShowTime, having type bool - ParameterId["ShowTime"] = "showTime"; - // DPI_ShowTitle, having type bool - ParameterId["ShowTitle"] = "showTitle"; - // DPI_ShowTransSlider, having type bool - ParameterId["ShowTransSlider"] = "showTransparencySlider"; - // DPI_ShowUnderline, having type bool - ParameterId["ShowUnderline"] = "showUnderlineOption"; - // DPI_ShowUserThumbnailOptions, having type bool - ParameterId["ShowUserThumbnailOptions"] = "showUserThumbnailOptions"; - // DPI_ShowView, having type bool - ParameterId["ShowView"] = "showView"; - // DPI_ShowViews, having type bool - ParameterId["ShowViews"] = "showViews"; - // DPI_ShowingPageLoadError, having type bool - ParameterId["ShowingPageLoadError"] = "showingPageLoadError"; - // DPI_SupressAliases, having type bool - ParameterId["SupressAliases"] = "suspressAliases"; - // DPI_SupressThousandsSeparator, having type bool - ParameterId["SupressThousandsSeparator"] = "supressThousandsSeparator"; - // DPI_SingleSelectOnly, having type bool - ParameterId["SingleSelectOnly"] = "singleSelectOnly"; - // DPI_SkipIfActive, having type bool - ParameterId["SkipIfActive"] = "skipIfActive"; - // DPI_SkipRefresh, having type bool - ParameterId["SkipRefresh"] = "skipRefresh"; - // DPI_SkipValidation, having type bool - ParameterId["SkipValidation"] = "skipValidation"; - // DPI_Skipped, having type bool - ParameterId["Skipped"] = "skipped"; - // DPI_SortFieldIsInvalid, having type bool - ParameterId["SortFieldIsInvalid"] = "sortFieldIsInvalid"; - // DPI_SortModeIsAuto, having type bool - ParameterId["SortModeIsAuto"] = "sortModeIsAuto"; - // DPI_SplitOnEdgeSnap, having type bool - ParameterId["SplitOnEdgeSnap"] = "splitOnEdgeSnap"; - // DPI_StandardDeviationAllowed, having type bool - ParameterId["StandardDeviationAllowed"] = "standardDeviationAllowed"; - // DPI_State, having type bool - ParameterId["State"] = "state"; - // DPI_StoredProcDisabled, having type bool - ParameterId["StoredProcDisabled"] = "storedProcDisabled"; - // DPI_StoredProcsDropable, having type bool - ParameterId["StoredProcsDropable"] = "storedProcsDropable"; - // DPI_StoryIsEmpty, having type bool - ParameterId["StoryIsEmpty"] = "storyIsEmpty"; - // DPI_StoryPointIsEmpty, having type bool - ParameterId["StoryPointIsEmpty"] = "storyPointIsEmpty"; - // DPI_SuccessfulSave, having type bool - ParameterId["SuccessfulSave"] = "successfulSave"; - // DPI_SupportXAxis, having type bool - ParameterId["SupportXAxis"] = "supportXAxis"; - // DPI_SupportYAxis, having type bool - ParameterId["SupportYAxis"] = "supportYAxis"; - // DPI_SupportsCenterAlignment, having type bool - ParameterId["SupportsCenterAlignment"] = "supportsCenterAlignment"; - // DPI_SupportsDBFilters, having type bool - ParameterId["SupportsDBFilters"] = "supportsDatabaseFilters"; - // DPI_SupportsMultipleValues, having type bool - ParameterId["SupportsMultipleValues"] = "supportsMultipleValues"; - // DPI_SupportsRightAlignment, having type bool - ParameterId["SupportsRightAlignment"] = "supportsRightAlignment"; - // DPI_SupportsTableFilters, having type bool - ParameterId["SupportsTableFilters"] = "supportsTableFilters"; - // DPI_Symmetric, having type bool - ParameterId["Symmetric"] = "symmetric"; - // DPI_SyncAutomaticDrill, having type bool - ParameterId["SyncAutomaticDrill"] = "syncAutomaticDrill"; - // DPI_TabsAllowed, having type bool - ParameterId["TabsAllowed"] = "tabsAllowed"; - // DPI_TextDropdownState, having type bool - ParameterId["TextDropdownState"] = "toggleState"; - // DPI_TitleInline, having type bool - ParameterId["TitleInline"] = "titleInline"; - // DPI_ToggleHighlightStateChanged, having type bool - ParameterId["ToggleHighlightStateChanged"] = "toggleHighlight"; - // DPI_Transformed80Format, having type bool - ParameterId["Transformed80Format"] = "oldFormat"; - // DPI_TrendLineSelected, having type bool - ParameterId["TrendLineSelected"] = "trendLineSelected"; - // DPI_TruncDate, having type bool - ParameterId["TruncDate"] = "truncDate"; - // DPI_TupleSelected, having type bool - ParameterId["TupleSelected"] = "tupleSelected"; - // DPI_UIAutomationDidPageLoad, having type bool - ParameterId["UIAutomationDidPageLoad"] = "uiAutomationDidPageLoad"; - // DPI_UIAutomationIsChecked, having type bool - ParameterId["UIAutomationIsChecked"] = "uiAutomationIsChecked"; - // DPI_UIAutomationIsEnabled, having type bool - ParameterId["UIAutomationIsEnabled"] = "uiAutomationIsEnabled"; - // DPI_UIAutomationIsEventProcessed, having type bool - ParameterId["UIAutomationIsEventProcessed"] = "uiAutomationIsEventProcessed"; - // DPI_UIAutomationIsFocused, having type bool - ParameterId["UIAutomationIsFocused"] = "uiAutomationIsFocused"; - // DPI_UIAutomationIsFound, having type bool - ParameterId["UIAutomationIsFound"] = "uiAutomationIsFound"; - // DPI_UIAutomationIsReadonly, having type bool - ParameterId["UIAutomationIsReadonly"] = "uiAutomationIsReadonly"; - // DPI_UIAutomationIsSelected, having type bool - ParameterId["UIAutomationIsSelected"] = "uiAutomationIsSelected"; - // DPI_UpdateAllPanes, having type bool - ParameterId["UpdateAllPanes"] = "updateAllPanes"; - // DPI_UpdateDSCaptionOnly, having type bool - ParameterId["UpdateDSCaptionOnly"] = "updateDsCaptionOnly"; - // DPI_UpdateModelFromParams, having type bool - ParameterId["UpdateModelFromParams"] = "updateModelFromParams"; - // DPI_UpdateShelves, having type bool - ParameterId["UpdateShelves"] = "updateShelves"; - // DPI_UpdatesUseContext, having type bool - ParameterId["UpdatesUseContext"] = "updatesUseContext"; - // DPI_UpgradeDocumentVersion, having type bool - ParameterId["UpgradeDocumentVersion"] = "upgradeDocumentVersion"; - // DPI_UseAliases, having type bool - ParameterId["UseAliases"] = "useAliases"; - // DPI_UseBlankForNull, having type bool - ParameterId["UseBlankForNull"] = "useBlankForNull"; - // DPI_UseCalculationEditor, having type bool - ParameterId["UseCalculationEditor"] = "useCalculationEditor"; - // DPI_UseCenterValue, having type bool - ParameterId["UseCenterValue"] = "useCenterValue"; - // DPI_UseColor, having type bool - ParameterId["UseColor"] = "useColor"; - // DPI_UseCustomMarkSize, having type bool - ParameterId["UseCustomMarkSize"] = "useCustomMarkSize"; - // DPI_UseDarkIcons, having type bool - ParameterId["UseDarkIcons"] = "useDarkIcons"; - // DPI_UseDataStoreMinfiedNames, having type bool - ParameterId["UseDataStoreMinfiedNames"] = "useDatastoreMinNames"; - // DPI_UseInitialDomainType, having type bool - ParameterId["UseInitialDomainType"] = "useInitialDomainType"; - // DPI_UseEndValue, having type bool - ParameterId["UseEndValue"] = "useEndValue"; - // DPI_UseForOverlayHitTest, having type bool - ParameterId["UseForOverlayHitTest"] = "useForOverlayHitTest"; - // DPI_UseFullColorRange, having type bool - ParameterId["UseFullColorRange"] = "useFullColorRange"; - // DPI_UseFullDomain, having type bool - ParameterId["UseFullDomain"] = "useFullDomain"; - // DPI_UseInlineImages, having type bool - ParameterId["UseInlineImages"] = "useInlineImages"; - // DPI_UseMeasures, having type bool - ParameterId["UseMeasures"] = "useMeasures"; - // DPI_UseNewQuickFilters, having type bool - ParameterId["UseNewQuickFilters"] = "useNewQuickFilters"; - // DPI_UseNotificationReturn, having type bool - ParameterId["UseNotificationReturn"] = "useNotificationReturn"; - // DPI_UseParameters, having type bool - ParameterId["UseParameters"] = "useParameters"; - // DPI_UseSelector, having type bool - ParameterId["UseSelector"] = "useSelector"; - // DPI_UseSignificantDigits, having type bool - ParameterId["UseSignificantDigits"] = "useSignificantDigits"; - // DPI_UseSpecialStrings, having type bool - ParameterId["UseSpecialStrings"] = "useSpecialStrings"; - // DPI_UseStartValue, having type bool - ParameterId["UseStartValue"] = "useStartValue"; - // DPI_UseTabletAsDefaultPreview, having type bool - ParameterId["UseTabletAsDefaultPreview"] = "useTabletAsDefaultPreview"; - // DPI_UseTargetPt, having type bool - ParameterId["UseTargetPt"] = "useTargetPoint"; - // DPI_UseUSLocale, having type bool - ParameterId["UseUSLocale"] = "useUsLocale"; - // DPI_UseYAxis, having type bool - ParameterId["UseYAxis"] = "useYAxis"; - // DPI_Valid, having type bool - ParameterId["Valid"] = "valid"; - // DPI_VizDataV82, having type bool - ParameterId["VizDataV82"] = "vizData82"; - // DPI_WMSConnectionSuccessful, having type bool - ParameterId["WMSConnectionSuccessful"] = "wmsConnectionSuccessful"; - // DPI_WMSShouldUseTiles, having type bool - ParameterId["WMSShouldUseTiles"] = "wmsShouldUseTiles"; - // DPI_WantDomain, having type bool - ParameterId["WantDomain"] = "wantDomain"; - // DPI_WorkbookModified, having type bool - ParameterId["WorkbookModified"] = "workbookModified"; - // DPI_ZoomIn, having type bool - ParameterId["ZoomIn"] = "zoomIn"; - // DPI_ShowMarkLabels, having type bool - ParameterId["ShowMarkLabels"] = "showMarkLabels"; - // DPI_HasDuplicates, having type bool - ParameterId["HasDuplicates"] = "hasDuplicates"; - // DPI_HasUserDefinedIncrement, having type bool - ParameterId["HasUserDefinedIncrement"] = "hasUserDefinedIncrement"; - // DPI_HasUserDefinedMax, having type bool - ParameterId["HasUserDefinedMax"] = "hasUserDefinedMax"; - // DPI_HasUserDefinedMin, having type bool - ParameterId["HasUserDefinedMin"] = "hasUserDefinedMin"; - // DPI_IsDuplicate, having type bool - ParameterId["IsDuplicate"] = "isDuplicate"; - // DPI_IsEditingValue, having type bool - ParameterId["IsEditingValue"] = "isEditingValue"; - // DPI_ShouldRestrictDataType, having type bool - ParameterId["ShouldRestrictDataType"] = "restrictDataType"; - // DPI_EnableIncludeZero, having type bool - ParameterId["EnableIncludeZero"] = "enableIncludeZero"; - // DPI_EnableSyncDualAxes, having type bool - ParameterId["EnableSyncDualAxes"] = "enableSynchronizeDualAxes"; - // DPI_EnableShowTimes, having type bool - ParameterId["EnableShowTimes"] = "enableShowTimes"; - // DPI_IsTemporal, having type bool - ParameterId["IsTemporal"] = "isTemporal"; - // DPI_ShouldIncludeZero, having type bool - ParameterId["ShouldIncludeZero"] = "shouldIncludeZero"; - // DPI_ShouldReverseAxis, having type bool - ParameterId["ShouldReverseAxis"] = "shouldReverseAxis"; - // DPI_ShouldShowTimes, having type bool - ParameterId["ShouldShowTimes"] = "shouldShowTimes"; - // DPI_UseAutomaticAxisSubtitle, having type bool - ParameterId["UseAutomaticAxisSubtitle"] = "useAutomaticSubtitle"; - // DPI_UseAutomaticAxisTitle, having type bool - ParameterId["UseAutomaticAxisTitle"] = "useAutomaticTitle"; - // DPI_AllSelected, having type bool - ParameterId["AllSelected"] = "allSelected"; - // DPI_AutoCommit, having type bool - ParameterId["AutoCommit"] = "autoCommit"; - // DPI_CacheOnly, having type bool - ParameterId["CacheOnly"] = "cacheOnly"; - // DPI_IncludeData, having type bool - ParameterId["IncludeData"] = "includeData"; - // DPI_IsPatternExclusive, having type bool - ParameterId["IsPatternExclusive"] = "isPatternExclusive"; - // DPI_IsSearchable, having type bool - ParameterId["IsSearchable"] = "isSearchable"; - // DPI_IsSelectionExclusive, having type bool - ParameterId["IsSelectionExclusive"] = "isSelectionExclusive"; - // DPI_ResetNewFilter, having type bool - ParameterId["ResetNewFilter"] = "resetNewFilter"; - // DPI_UseAllWhenManualEmpty, having type bool - ParameterId["UseAllWhenManualEmpty"] = "useAllWhenManualEmpty"; - // DPI_UseAllWhenPatternEmpty, having type bool - ParameterId["UseAllWhenPatternEmpty"] = "useAllWhenPatternEmpty"; - // DPI_GroupByDrillDown, having type bool - ParameterId["GroupByDrillDown"] = "groupByDrillDown"; - // DPI_GroupByTable, having type bool - ParameterId["GroupByTable"] = "groupByTable"; - // DPI_IncludeGroups, having type bool - ParameterId["IncludeGroups"] = "includeGroups"; - // DPI_IncludePendingState, having type bool - ParameterId["IncludePendingState"] = "includePendingState"; - // DPI_IncludeFieldMenus, having type bool - ParameterId["IncludeFieldMenus"] = "includeFieldMenus"; - // DPI_IncludeFormattedValues, having type bool - ParameterId["IncludeFormattedValues"] = "includeFormattedValues"; - // DPI_IncludeColumnInstances, having type bool - ParameterId["IncludeColumnInstances"] = "includeColumnInstances"; - // DPI_IncludeAdHocCalcs, having type bool - ParameterId["IncludeAdHocCalcs"] = "includeAdhocCalcs"; - // DPI_IncludeHiddenInvalidFields, having type bool - ParameterId["IncludeHiddenInvalidFields"] = "includeHiddenInvalidFields"; - // DPI_IncludeNonExtractedColumns, having type bool - ParameterId["IncludeNonExtractedColumns"] = "includeNonExtractedColumns"; - // DPI_SetDataPreviewCustomFieldOrder, having type bool - ParameterId["SetDataPreviewCustomFieldOrder"] = "setDataPreviewCustomFieldOrder"; - // DPI_CustomSplitAllowSplitFromRight, having type bool - ParameterId["CustomSplitAllowSplitFromRight"] = "customSplitAllowSplitFromRight"; - // DPI_IsChanged, having type bool - ParameterId["IsChanged"] = "isChanged"; - // DPI_ShowFontColorPicker, having type bool - ParameterId["ShowFontColorPicker"] = "showFontColorPicker"; - // DPI_ShowFontFamilyPicker, having type bool - ParameterId["ShowFontFamilyPicker"] = "showFontFamilyPicker"; - // DPI_ShowFontSizePicker, having type bool - ParameterId["ShowFontSizePicker"] = "showFontSizePicker"; - // DPI_ShowFontStyleButtons, having type bool - ParameterId["ShowFontStyleButtons"] = "showFontStyleButtons"; - // DPI_ShowLineForAll, having type bool - ParameterId["ShowLineForAll"] = "showLineForAll"; - // DPI_ShowLineForColumn, having type bool - ParameterId["ShowLineForColumn"] = "showLineForColumn"; - // DPI_ShowLineForRow, having type bool - ParameterId["ShowLineForRow"] = "showLineForRow"; - // DPI_ShowLinePatternPicker, having type bool - ParameterId["ShowLinePatternPicker"] = "showLinePatternPicker"; - // DPI_ShowLineTransparency, having type bool - ParameterId["ShowLineTransparency"] = "showLineTransparency"; - // DPI_ShowLineWidthPicker, having type bool - ParameterId["ShowLineWidthPicker"] = "showLineWidthPicker"; - // DPI_CanBeAuto, having type bool - ParameterId["CanBeAuto"] = "canBeAuto"; - // DPI_CanBeNone, having type bool - ParameterId["CanBeNone"] = "canBeNone"; - // DPI_CanMatchMarkColor, having type bool - ParameterId["CanMatchMarkColor"] = "canMatchMarkColor"; - // DPI_HasOpacity, having type bool - ParameterId["HasOpacity"] = "hasOpacity"; - // DPI_IncludeAllHidden, having type bool - ParameterId["IncludeAllHidden"] = "includeAllHidden"; - // DPI_IncludeCurrent, having type bool - ParameterId["IncludeCurrent"] = "includeCurrent"; - // DPI_IsIncluded, having type bool - ParameterId["IsIncluded"] = "isIncluded"; - // DPI_IsRelative, having type bool - ParameterId["IsRelative"] = "isRelative"; - // DPI_IsSecondaryAllowed, having type bool - ParameterId["IsSecondaryAllowed"] = "isSecondaryAllowed"; - // DPI_NullIfIncomplete, having type bool - ParameterId["NullIfIncomplete"] = "nullIfIncomplete"; - // DPI_IsCalcAssistanceEnabled, having type bool - ParameterId["IsCalcAssistanceEnabled"] = "isCalcAssistanceEnabled"; - // DPI_UseSecondaryCalc, having type bool - ParameterId["UseSecondaryCalc"] = "useSecondaryCalc"; - // DPI_CanLoad, having type bool - ParameterId["CanLoad"] = "canLoad"; - // DPI_DescriptionOnly, having type bool - ParameterId["DescriptionOnly"] = "descriptionOnly"; - // DPI_AreAliasesSupported, having type bool - ParameterId["AreAliasesSupported"] = "areAliasesSupported"; - // DPI_AreRefColumnsSupported, having type bool - ParameterId["AreRefColumnsSupported"] = "areRefColumnsSupported"; - // DPI_IsAggregated, having type bool - ParameterId["IsAggregated"] = "isAggregated"; - // DPI_IsExportSupported, having type bool - ParameterId["IsExportSupported"] = "isExportSupported"; - // DPI_IsMeasureNames, having type bool - ParameterId["IsMeasureNames"] = "isMeasureNames"; - // DPI_IsSummarySupported, having type bool - ParameterId["IsSummarySupported"] = "isSummarySupported"; - // DPI_IsTopNSupported, having type bool - ParameterId["IsTopNSupported"] = "isTopNSupported"; - // DPI_IsUnderlyingSupported, having type bool - ParameterId["IsUnderlyingSupported"] = "isUnderlyingSupported"; - // DPI_OnlyExportSummary, having type bool - ParameterId["OnlyExportSummary"] = "onlyExportSummary"; - // DPI_ShowAllFields, having type bool - ParameterId["ShowAllFields"] = "showAllFields"; - // DPI_UseTablePtrs, having type bool - ParameterId["UseTablePtrs"] = "useTablePtrs"; - // DPI_OnlyFetchSummary, having type bool - ParameterId["OnlyFetchSummary"] = "onlyFetchSummary"; - // DPI_IsDeviceLayoutCustomized, having type bool - ParameterId["IsDeviceLayoutCustomized"] = "isDeviceLayoutCustomized"; - // DPI_IsDeviceSizeCustomized, having type bool - ParameterId["IsDeviceSizeCustomized"] = "isDeviceSizeCustomized"; - // DPI_IsDeviceSupportedByMobileApp, having type bool - ParameterId["IsDeviceSupportedByMobileApp"] = "isDeviceSupportedByMobileApp"; - // DPI_IsPortrait, having type bool - ParameterId["IsPortrait"] = "isPortrait"; - // DPI_IsPortraitByDefault, having type bool - ParameterId["IsPortraitByDefault"] = "isPortraitByDefault"; - // DPI_IsUserCustomFormat, having type bool - ParameterId["IsUserCustomFormat"] = "isUserCustomFormat"; - // DPI_ShouldDisplayRebuildExtractMessage, having type bool - ParameterId["ShouldDisplayRebuildExtractMessage"] = "shouldDisplayRebuildExtractMessage"; - // DPI_SupportsCustomStartOfWeek, having type bool - ParameterId["SupportsCustomStartOfWeek"] = "supportsCustomStartOfWeek"; - // DPI_NeedsConnectPrompt, having type bool - ParameterId["NeedsConnectPrompt"] = "needsConnectPrompt"; - // DPI_NeedsCloseDataSourceErrorPrompt, having type bool - ParameterId["NeedsCloseDataSourceErrorPrompt"] = "needsCloseDsErrorPrompt"; - // DPI_ClearCurrentSelection, having type bool - ParameterId["ClearCurrentSelection"] = "clearCurrentSelection"; - // DPI_HasContains, having type bool - ParameterId["HasContains"] = "hasContains"; - // DPI_HasEndsWith, having type bool - ParameterId["HasEndsWith"] = "hasEndsWith"; - // DPI_HasReplaceSelection, having type bool - ParameterId["HasReplaceSelection"] = "hasReplaceSelection"; - // DPI_HasStartsWith, having type bool - ParameterId["HasStartsWith"] = "hasStartsWith"; - // DPI_IsLeafSelectionOnly, having type bool - ParameterId["IsLeafSelectionOnly"] = "isLeafSelectionOnly"; - // DPI_ReplaceSelection, having type bool - ParameterId["ReplaceSelection"] = "replaceSelection"; - // DPI_IsColorPaletteCustomized, having type bool - ParameterId["IsColorPaletteCustomized"] = "isColorPaletteCustomized"; - // DPI_ReversePaletteOrder, having type bool - ParameterId["ReversePaletteOrder"] = "reversePaletteOrder"; - // DPI_TriedToConnect, having type bool - ParameterId["TriedToConnect"] = "triedToConnect"; - // DPI_ScaleMarksInAxisUnits, having type bool - ParameterId["ScaleMarksInAxisUnits"] = "scaleMarksInAxisUnits"; - // DPI_ShowMarkSizingOptions, having type bool - ParameterId["ShowMarkSizingOptions"] = "showMarkSizingOptions"; - // DPI_UseSizeFieldCaption, having type bool - ParameterId["UseSizeFieldCaption"] = "useSizeFieldCaption"; - // DPI_IsLicensedAndRegistered, having type bool - ParameterId["IsLicensedAndRegistered"] = "isLicensedAndRegistered"; - // DPI_SetNewDatasourceActive, having type bool - ParameterId["SetNewDatasourceActive"] = "setNewDatasourceActive"; - // DPI_AllowCustomLabel, having type bool - ParameterId["AllowCustomLabel"] = "allowCustomLabel"; - // DPI_IsMostRecentModeValid, having type bool - ParameterId["IsMostRecentModeValid"] = "isMostRecentModeValid"; - // DPI_MustShowLabels, having type bool - ParameterId["MustShowLabels"] = "mustShowLabels"; - // DPI_ShowRunningOrderLabels, having type bool - ParameterId["ShowRunningOrderLabels"] = "showRunningOrderLabels"; - // DPI_IsDroppedFile, having type bool - ParameterId["IsDroppedFile"] = "isDroppedFile"; - // DPI_IsInitialized, having type bool - ParameterId["IsInitialized"] = "isInitialized"; - // DPI_IncludeDashboard, having type bool - ParameterId["IncludeDashboard"] = "includeDashboard"; - // DPI_ChildrenCanResize, having type bool - ParameterId["ChildrenCanResize"] = "childrenCanResize"; - // DPI_BoolMap, having type Dictionary(of bool) - ParameterId["BoolMap"] = "boolMap"; - // DPI_CheckedMenuItems, having type bool[] - ParameterId["CheckedMenuItems"] = "checkedMenuItems"; - // DPI_IncludedSheetValues, having type bool[] - ParameterId["IncludedSheetValues"] = "includedSheetValues"; - // DPI_SortOrderVector, having type bool[] - ParameterId["SortOrderVector"] = "sortOrderVector"; - // DPI_ActionName, having type string - ParameterId["ActionName"] = "actionName"; - // DPI_ActionSourceText, having type string - ParameterId["ActionSourceText"] = "actionSourceText"; - // DPI_ActionTypeAsString, having type string - ParameterId["ActionTypeAsString"] = "actionTypeAsString"; - // DPI_ActiveTab, having type string - ParameterId["ActiveTab"] = "active_tab"; - // DPI_AddInId, having type string - ParameterId["AddInId"] = "addInId"; - // DPI_AddInstanceId, having type string - ParameterId["AddInstanceId"] = "addInInstanceId"; - // DPI_AddInName, having type string - ParameterId["AddInName"] = "addInName"; - // DPI_AddInLocale, having type string - ParameterId["AddInLocale"] = "addInLocale"; - // DPI_AddInLanguage, having type string - ParameterId["AddInLanguage"] = "addInLanguage"; - // DPI_APIVersion, having type string - ParameterId["APIVersion"] = "apiVersion"; - // DPI_Alias, having type string - ParameterId["Alias"] = "alias"; - // DPI_AnchorDate, having type string - ParameterId["AnchorDate"] = "anchorDate"; - // DPI_AnnotationRes, having type string - ParameterId["AnnotationRes"] = "annotationRes"; - // DPI_ReadId, having type string - ParameterId["ReadId"] = "readId"; - // DPI_AnnotationText, having type string - ParameterId["AnnotationText"] = "annotationText"; - // DPI_ArchiveDirectory, having type string - ParameterId["ArchiveDirectory"] = "archiveDirectory"; - // DPI_ArchiveFullPath, having type string - ParameterId["ArchiveFullPath"] = "archiveFullPath"; - // DPI_AtTheLevelInvalidFieldCaption, having type string - ParameterId["AtTheLevelInvalidFieldCaption"] = "atTheLevelInvalidFieldCaption"; - // DPI_AutoCompleteSubstring, having type string - ParameterId["AutoCompleteSubstring"] = "acSubstring"; - // DPI_AutosaveFileId, having type string - ParameterId["AutosaveFileId"] = "autosaveFileId"; - // DPI_AutosaveTimerInterval, having type string - ParameterId["AutosaveTimerInterval"] = "autosaveTimerInterval"; - // DPI_BaseColumnCaption, having type string - ParameterId["BaseColumnCaption"] = "baseColumnCaption"; - // DPI_ClearButtonText, having type string - ParameterId["ClearButtonText"] = "clearButtonText"; - // DPI_ColorPaletteId, having type string - ParameterId["ColorPaletteId"] = "colorPaletteId"; - // DPI_ColorPaletteName, having type string - ParameterId["ColorPaletteName"] = "colorPaletteName"; - // DPI_ColorSwatch, having type string - ParameterId["ColorSwatch"] = "colorSwatch"; - // DPI_CommandName, having type string - ParameterId["CommandName"] = "commandName"; - // DPI_ConfidenceLevelValue, having type string - ParameterId["ConfidenceLevelValue"] = "confidenceLevelValue"; - // DPI_CountDistinctStr, having type string - ParameterId["CountDistinctStr"] = "countDistinctStr"; - // DPI_CSSMargin, having type string - ParameterId["CSSMargin"] = "cssMargin"; - // DPI_CSSWhitespace, having type string - ParameterId["CSSWhitespace"] = "cssWhitespace"; - // DPI_DBPassword, having type string - ParameterId["DBPassword"] = "dbPassword"; - // DPI_DBUsername, having type string - ParameterId["DBUsername"] = "dbUsername"; - // DPI_DataAlertConditionText, having type string - ParameterId["DataAlertConditionText"] = "dataAlertConditionText"; - // DPI_DataAlertMeasureText, having type string - ParameterId["DataAlertMeasureText"] = "dataAlertMeasureText"; - // DPI_DataAlertSpecSerializedText, having type string - ParameterId["DataAlertSpecSerializedText"] = "dataAlertSpecSerializedText"; - // DPI_DataAlertDefaultSubject, having type string - ParameterId["DataAlertDefaultSubject"] = "dataAlertDefaultSubject"; - // DPI_DataAlertThresholdText, having type string - ParameterId["DataAlertThresholdText"] = "dataAlertThresholdText"; - // DPI_DataGridSortColumnName, having type string - ParameterId["DataGridSortColumnName"] = "datagridSortColumnName"; - // DPI_DataServerConnectionError, having type string - ParameterId["DataServerConnectionError"] = "dataServerConnectionError"; - // DPI_DatabaseFilter, having type string - ParameterId["DatabaseFilter"] = "databaseFilter"; - // DPI_DatabaseFilterPrompt, having type string - ParameterId["DatabaseFilterPrompt"] = "databaseFilterPrompt"; - // DPI_DatasourceRanking, having type string - ParameterId["DatasourceRanking"] = "datasourceRanking"; - // DPI_DatasourceUrl, having type string - ParameterId["DatasourceUrl"] = "datasourceUrl"; - // DPI_DatasourceUsername, having type string - ParameterId["DatasourceUsername"] = "datasourceUsername"; - // DPI_DateFormat, having type string - ParameterId["DateFormat"] = "dateFormat"; - // DPI_DatePart, having type string - ParameterId["DatePart"] = "datePart"; - // DPI_DatePartAbbrev, having type string - ParameterId["DatePartAbbrev"] = "datePartAbbrev"; - // DPI_DefaultHierarchyName, having type string - ParameterId["DefaultHierarchyName"] = "defaultHierarchyName"; - // DPI_Delimiter, having type string - ParameterId["Delimiter"] = "delimiter"; - // DPI_DeviceName, having type string - ParameterId["DeviceName"] = "deviceName"; - // DPI_DeviceType, having type string - ParameterId["DeviceType"] = "deviceType"; - // DPI_DisplayPath, having type string - ParameterId["DisplayPath"] = "displayPath"; - // DPI_DistributionValueString, having type string - ParameterId["DistributionValueString"] = "distributionValueString"; - // DPI_DrillPathName, having type string - ParameterId["DrillPathName"] = "drillPathName"; - // DPI_EmbeddedTitle, having type string - ParameterId["EmbeddedTitle"] = "embeddedTitle"; - // DPI_EnterValueText, having type string - ParameterId["EnterValueText"] = "enterValueText"; - // DPI_EscapeString, having type string - ParameterId["EscapeString"] = "escapeString"; - // DPI_ExtSvcConfigHost, having type string - ParameterId["ExtSvcConfigHost"] = "extSvcConfigHost"; - // DPI_ExtSvcConfigPassword, having type string - ParameterId["ExtSvcConfigPassword"] = "extSvcConfigPassword"; - // DPI_ExtSvcConfigPort, having type string - ParameterId["ExtSvcConfigPort"] = "extSvcConfigPort"; - // DPI_ExtSvcConfigConnectTimeout, having type string - ParameterId["ExtSvcConfigConnectTimeout"] = "extSvcConnectTimeout"; - // DPI_ExtSvcConfigPrevHost, having type string - ParameterId["ExtSvcConfigPrevHost"] = "extSvcConfigPrevHost"; - // DPI_ExtSvcConfigUsername, having type string - ParameterId["ExtSvcConfigUsername"] = "extSvcConfigUsername"; - // DPI_ExtractUpdateTime, having type string - ParameterId["ExtractUpdateTime"] = "extractUpdateTime"; - // DPI_FieldFolderName, having type string - ParameterId["FieldFolderName"] = "fieldFolderName"; - // DPI_FieldNameString, having type string - ParameterId["FieldNameString"] = "fieldName"; - // DPI_FilterSearchDomain, having type string - ParameterId["FilterSearchDomain"] = "filterSearchDomain"; - // DPI_FilterSpec, having type string - ParameterId["FilterSpec"] = "filterSpec"; - // DPI_FirstValue, having type string - ParameterId["FirstValue"] = "firstValue"; - // DPI_FolderName, having type string - ParameterId["FolderName"] = "folderName"; - // DPI_FontName, having type string - ParameterId["FontName"] = "fontName"; - // DPI_FormatString, having type string - ParameterId["FormatString"] = "formatString"; - // DPI_FormattedIncrementValue, having type string - ParameterId["FormattedIncrementValue"] = "formattedIncrement"; - // DPI_FormattedMaxValue, having type string - ParameterId["FormattedMaxValue"] = "formattedMax"; - // DPI_FormattedMinValue, having type string - ParameterId["FormattedMinValue"] = "formattedMin"; - // DPI_FormattedValue, having type string - ParameterId["FormattedValue"] = "formattedValue"; - // DPI_FormattedCenterValue, having type string - ParameterId["FormattedCenterValue"] = "formattedCenter"; - // DPI_FormattedEndValue, having type string - ParameterId["FormattedEndValue"] = "formattedEnd"; - // DPI_FormattedStartValue, having type string - ParameterId["FormattedStartValue"] = "formattedStart"; - // DPI_PairedFormattedValue, having type string - ParameterId["PairedFormattedValue"] = "pairedFormattedValue"; - // DPI_FrameAttributes, having type string - ParameterId["FrameAttributes"] = "frameAttr"; - // DPI_GUID, having type string - ParameterId["GUID"] = "guid"; - // DPI_GeographicSearchCandidateDisplayName, having type string - ParameterId["GeographicSearchCandidateDisplayName"] = "geographicSearchCandidateDisplayName"; - // DPI_GeographicSearchCandidateParentName, having type string - ParameterId["GeographicSearchCandidateParentName"] = "geographicSearchCandidateParentName"; - // DPI_GeographicSearchCandidateType, having type string - ParameterId["GeographicSearchCandidateType"] = "geographicSearchCandidateType"; - // DPI_GeographicSearchLocale, having type string - ParameterId["GeographicSearchLocale"] = "geographicSearchLocale"; - // DPI_GeographicSearchQueryString, having type string - ParameterId["GeographicSearchQueryString"] = "geographicSearchSearchString"; - // DPI_GeographicSearchUILocale, having type string - ParameterId["GeographicSearchUILocale"] = "geographicSearchUilocale"; - // DPI_IconRes, having type string - ParameterId["IconRes"] = "iconRes"; - // DPI_ImageHash, having type string - ParameterId["ImageHash"] = "imageHash"; - // DPI_ImageName, having type string - ParameterId["ImageName"] = "imageName"; - // DPI_ImageRes, having type string - ParameterId["ImageRes"] = "imageRes"; - // DPI_IncludesSiblingsPrompt, having type string - ParameterId["IncludesSiblingsPrompt"] = "includesSiblingsPrompt"; - // DPI_IncludesSubfoldersPrompt, having type string - ParameterId["IncludesSubfoldersPrompt"] = "includesSubfoldersPrompt"; - // DPI_IncrementalScheduleIDs, having type string - ParameterId["IncrementalScheduleIDs"] = "incrementalScheduleIds"; - // DPI_InvariantKeyword, having type string - ParameterId["InvariantKeyword"] = "invariantKeyword"; - // DPI_JoinOperator, having type string - ParameterId["JoinOperator"] = "joinOperator"; - // DPI_JoinExpression, having type string - ParameterId["JoinExpression"] = "joinExpression"; - // DPI_Label, having type string - ParameterId["Label"] = "label"; - // DPI_PairedLabel, having type string - ParameterId["PairedLabel"] = "pairedLabel"; - // DPI_LayoutID, having type string - ParameterId["LayoutID"] = "layoutId"; - // DPI_LeftJoinExpression, having type string - ParameterId["LeftJoinExpression"] = "leftJoinExpression"; - // DPI_LimitCountExpression, having type string - ParameterId["LimitCountExpression"] = "limitCountExpression"; - // DPI_LinkTarget, having type string - ParameterId["LinkTarget"] = "linkTarget"; - // DPI_Locale, having type string - ParameterId["Locale"] = "locale"; - // DPI_LocalizedKeyword, having type string - ParameterId["LocalizedKeyword"] = "localizedKeyword"; - // DPI_MapBoxGLStyleId, having type string - ParameterId["MapBoxGLStyleId"] = "mapboxGlStyleId"; - // DPI_MapBoxStyleUrl, having type string - ParameterId["MapBoxStyleUrl"] = "mapboxStyleUrl"; - // DPI_MapBoxUsername, having type string - ParameterId["MapBoxUsername"] = "mapboxUsername"; - // DPI_MapScaleReadoutString, having type string - ParameterId["MapScaleReadoutString"] = "mapScaleReadoutString"; - // DPI_MapScaleTooltipString, having type string - ParameterId["MapScaleTooltipString"] = "mapScaleTooltipString"; - // DPI_MapSourceName, having type string - ParameterId["MapSourceName"] = "mapSourceName"; - // DPI_MaxLabel, having type string - ParameterId["MaxLabel"] = "maxLabel"; - // DPI_MinLabel, having type string - ParameterId["MinLabel"] = "minLabel"; - // DPI_ModelDescriptionParagraph, having type string - ParameterId["ModelDescriptionParagraph"] = "modelDescriptionParagraph"; - // DPI_NameTemplate, having type string - ParameterId["NameTemplate"] = "nameTemplate"; - // DPI_NewDrillPath, having type string - ParameterId["NewDrillPath"] = "newDrillPath"; - // DPI_NewFieldFolderName, having type string - ParameterId["NewFieldFolderName"] = "newFieldFolderName"; - // DPI_NewTableAlias, having type string - ParameterId["NewTableAlias"] = "newTableAlias"; - // DPI_NonFormattedValue, having type string - ParameterId["NonFormattedValue"] = "unformattedValue"; - // DPI_OAuthUserName, having type string - ParameterId["OAuthUserName"] = "oauthUsername"; - // DPI_ObjectName, having type string - ParameterId["ObjectName"] = "objectName"; - // DPI_ObjectOverrideMessage, having type string - ParameterId["ObjectOverrideMessage"] = "objectOverrideMessage"; - // DPI_OldTableAlias, having type string - ParameterId["OldTableAlias"] = "oldTableAlias"; - // DPI_OperatingSystem, having type string - ParameterId["OperatingSystem"] = "operatingSystem"; - // DPI_OriginalFilePath, having type string - ParameterId["OriginalFilePath"] = "originalFilePath"; - // DPI_OriginalFileVersion, having type string - ParameterId["OriginalFileVersion"] = "originalFileVersion"; - // DPI_PaneDescriptorKey, having type string - ParameterId["PaneDescriptorKey"] = "paneDescrKey"; - // DPI_ParentName, having type string - ParameterId["ParentName"] = "parentName"; - // DPI_ParentTable, having type string - ParameterId["ParentTable"] = "parentTable"; - // DPI_PatternFilterString, having type string - ParameterId["PatternFilterString"] = "patternFilterString"; - // DPI_PendingCalcName, having type string - ParameterId["PendingCalcName"] = "pendingCalcName"; - // DPI_PercentilesString, having type string - ParameterId["PercentilesString"] = "percentilesString"; - // DPI_ProjectName, having type string - ParameterId["ProjectName"] = "projectName"; - // DPI_PropertyName, having type string - ParameterId["PropertyName"] = "propertyName"; - // DPI_QuickFilterTitleCaption, having type string - ParameterId["QuickFilterTitleCaption"] = "quickFilterTitleCaption"; - // DPI_RangeDiffStr, having type string - ParameterId["RangeDiffStr"] = "diffValue"; - // DPI_RangeMaxStr, having type string - ParameterId["RangeMaxStr"] = "maxValue"; - // DPI_RangeMinStr, having type string - ParameterId["RangeMinStr"] = "minValue"; - // DPI_RecoveredFilePath, having type string - ParameterId["RecoveredFilePath"] = "recoveredFilePath"; - // DPI_ReferenceLineSpecificationId, having type string - ParameterId["ReferenceLineSpecificationId"] = "referenceLineId"; - // DPI_ReplaceFieldPrompt, having type string - ParameterId["ReplaceFieldPrompt"] = "replaceFieldPrompt"; - // DPI_RightJoinExpression, having type string - ParameterId["RightJoinExpression"] = "rightJoinExpression"; - // DPI_RootPath, having type string - ParameterId["RootPath"] = "rootPath"; - // DPI_RuntimeFinalDatastore, having type string - ParameterId["RuntimeFinalDatastore"] = "runtimeFinalDatastore"; - // DPI_RuntimeInitialDatastore, having type string - ParameterId["RuntimeInitialDatastore"] = "runtimeInitialDatastore"; - // DPI_RuntimeVTL, having type string - ParameterId["RuntimeVTL"] = "runtimeVtl"; - // DPI_SampleDataString, having type string - ParameterId["SampleDataString"] = "sampleData"; - // DPI_ScheduleIDs, having type string - ParameterId["ScheduleIDs"] = "scheduleIds"; - // DPI_SchemaFieldIconResource, having type string - ParameterId["SchemaFieldIconResource"] = "fieldIconRes"; - // DPI_ScreenName, having type string - ParameterId["ScreenName"] = "screenName"; - // DPI_ScriptCommand, having type string - ParameterId["ScriptCommand"] = "command"; - // DPI_SecondValue, having type string - ParameterId["SecondValue"] = "secondValue"; - // DPI_SelectedValue, having type string - ParameterId["SelectedValue"] = "selectedValue"; - // DPI_ShapeName, having type string - ParameterId["ShapeName"] = "shapeName"; - // DPI_SheetId, having type string - ParameterId["SheetId"] = "sheetId"; - // DPI_ShowDataTable, having type string - ParameterId["ShowDataTable"] = "showDataTable"; - // DPI_SimpleCommand, having type string - ParameterId["SimpleCommand"] = "simpleCommand"; - // DPI_SortModeCaption, having type string - ParameterId["SortModeCaption"] = "sortModeCaption"; - // DPI_SourceName, having type string - ParameterId["SourceName"] = "sourceName"; - // DPI_SourceText, having type string - ParameterId["SourceText"] = "sourceText"; - // DPI_SpecialValueText, having type string - ParameterId["SpecialValueText"] = "specialValueText"; - // DPI_StaticImage, having type string - ParameterId["StaticImage"] = "staticImage"; - // DPI_StoryPointBase, having type string - ParameterId["StoryPointBase"] = "storyPointBase"; - // DPI_StoryPointCaption, having type string - ParameterId["StoryPointCaption"] = "storyPointCaption"; - // DPI_Storyboard, having type string - ParameterId["Storyboard"] = "storyboard"; - // DPI_StyledLabel, having type string - ParameterId["StyledLabel"] = "styledLabel"; - // DPI_SummaryCaption, having type string - ParameterId["SummaryCaption"] = "summaryCaption"; - // DPI_SummaryField, having type string - ParameterId["SummaryField"] = "summaryField"; - // DPI_TableauVersion, having type string - ParameterId["TableauVersion"] = "tableauVersion"; - // DPI_TableFilter, having type string - ParameterId["TableFilter"] = "tableFilter"; - // DPI_TableFilterPrompt, having type string - ParameterId["TableFilterPrompt"] = "tableFilterPrompt"; - // DPI_TagsLabel, having type string - ParameterId["TagsLabel"] = "tagsLabel"; - // DPI_Target, having type string - ParameterId["Target"] = "target"; - // DPI_ThumbnailGroup, having type string - ParameterId["ThumbnailGroup"] = "thumbnailGroup"; - // DPI_ThumbnailUser, having type string - ParameterId["ThumbnailUser"] = "thumbnailUser"; - // DPI_TimeFormat, having type string - ParameterId["TimeFormat"] = "timeFormat"; - // DPI_TrendLineErrorString, having type string - ParameterId["TrendLineErrorString"] = "trendLineErrorString"; - // DPI_TrendLineModelFormula, having type string - ParameterId["TrendLineModelFormula"] = "trendLineModelFormula"; - // DPI_URLString, having type string - ParameterId["URLString"] = "urlString"; - // DPI_URLTest, having type string - ParameterId["URLTest"] = "urlTest"; - // DPI_ValidationMessage, having type string - ParameterId["ValidationMessage"] = "validationMessage"; - // DPI_ValueStr, having type string - ParameterId["ValueStr"] = "valueString"; - // DPI_VerifiedNonFormattedValue, having type string - ParameterId["VerifiedNonFormattedValue"] = "verifiedUnformattedValue"; - // DPI_WorkbookFullPath, having type string - ParameterId["WorkbookFullPath"] = "workbookFullPath"; - // DPI_WindowTitle, having type string - ParameterId["WindowTitle"] = "windowTitle"; - // DPI_ZoneName, having type string - ParameterId["ZoneName"] = "zoneName"; - // DPI_ZoneParam, having type string - ParameterId["ZoneParam"] = "zoneParam"; - // DPI_DataAlertErrorText, having type string - ParameterId["DataAlertErrorText"] = "dataAlertErrorText"; - // DPI_ExtractTempDirectory, having type string - ParameterId["ExtractTempDirectory"] = "extractTempDir"; - // DPI_DSSubClass, having type string - ParameterId["DSSubClass"] = "dsSubClass"; - // DPI_DbgCommandLine, having type string - ParameterId["DbgCommandLine"] = "debugCommandLine"; - // DPI_DbgLogPath, having type string - ParameterId["DbgLogPath"] = "debugLogPath"; - // DPI_DbgOSVersion, having type string - ParameterId["DbgOSVersion"] = "debugOsVersion"; - // DPI_DbgUserName, having type string - ParameterId["DbgUserName"] = "debugUsername"; - // DPI_ErrorMsg, having type string - ParameterId["ErrorMsg"] = "errorMessage"; - // DPI_ErrorStr, having type string - ParameterId["ErrorStr"] = "errorString"; - // DPI_EventMessage, having type string - ParameterId["EventMessage"] = "eventMessage"; - // DPI_EventTimestamp, having type string - ParameterId["EventTimestamp"] = "eventTimestamp"; - // DPI_ExtractDeltaPath, having type string - ParameterId["ExtractDeltaPath"] = "extractDeltaPath"; - // DPI_ExtractPath, having type string - ParameterId["ExtractPath"] = "extractPath"; - // DPI_ExtractSuggestedPath, having type string - ParameterId["ExtractSuggestedPath"] = "suggestedExtractPath"; - // DPI_ExtractTaskSummary, having type string - ParameterId["ExtractTaskSummary"] = "extractTaskSummary"; - // DPI_FactorsString, having type string - ParameterId["FactorsString"] = "factorsStr"; - // DPI_FormattedFamilyName, having type string - ParameterId["FormattedFamilyName"] = "formattedFamilyName"; - // DPI_FunctionSignature, having type string - ParameterId["FunctionSignature"] = "funcSig"; - // DPI_FunctionTooltip, having type string - ParameterId["FunctionTooltip"] = "funcTooltip"; - // DPI_HelpContents, having type string - ParameterId["HelpContents"] = "helpContents"; - // DPI_MapAttributionText, having type string - ParameterId["MapAttributionText"] = "mapAttributionText"; - // DPI_MapAttributionTextSize, having type string - ParameterId["MapAttributionTextSize"] = "mapAttributionTextSize"; - // DPI_MapAttributionUrl, having type string - ParameterId["MapAttributionUrl"] = "mapAttributionUrl"; - // DPI_MapBoxErrorMessage, having type string - ParameterId["MapBoxErrorMessage"] = "mapboxErrorMessage"; - // DPI_MapBoxOldStyleName, having type string - ParameterId["MapBoxOldStyleName"] = "mapboxOldStyleName"; - // DPI_MapBoxSelectedStyle, having type string - ParameterId["MapBoxSelectedStyle"] = "mapboxSelectedStyle"; - // DPI_MapBoxStyleName, having type string - ParameterId["MapBoxStyleName"] = "mapboxStyleName"; - // DPI_MapLayerRequest, having type string - ParameterId["MapLayerRequest"] = "mapLayerRequest"; - // DPI_MapServerKey, having type string - ParameterId["MapServerKey"] = "mapServerKey"; - // DPI_MapTileServer, having type string - ParameterId["MapTileServer"] = "mapTileServer"; - // DPI_MapTileUrl, having type string - ParameterId["MapTileUrl"] = "mapTileUrl"; - // DPI_PercentagesString, having type string - ParameterId["PercentagesString"] = "percentagesStr"; - // DPI_PublishErrorMessage, having type string - ParameterId["PublishErrorMessage"] = "publishErrorMessage"; - // DPI_TdePath, having type string - ParameterId["TdePath"] = "tdePath"; - // DPI_UIAutomationComponentName, having type string - ParameterId["UIAutomationComponentName"] = "uiAutomationComponentName"; - // DPI_UIAutomationEndTime, having type string - ParameterId["UIAutomationEndTime"] = "uiAutomationEndTime"; - // DPI_UIAutomationName, having type string - ParameterId["UIAutomationName"] = "uiAutomationName"; - // DPI_UIAutomationStartTime, having type string - ParameterId["UIAutomationStartTime"] = "uiAutomationStartTime"; - // DPI_UIAutomationValue, having type string - ParameterId["UIAutomationValue"] = "uiAutomationValue"; - // DPI_WMSConnectionName, having type string - ParameterId["WMSConnectionName"] = "wmsConnectionName"; - // DPI_WMSOldConnectionName, having type string - ParameterId["WMSOldConnectionName"] = "wmsOldConnectionName"; - // DPI_WMSServerUrl, having type string - ParameterId["WMSServerUrl"] = "wmsServerUrl"; - // DPI_AboutBuildVersion, having type string - ParameterId["AboutBuildVersion"] = "aboutBuildVersion"; - // DPI_ActionFields, having type string - ParameterId["ActionFields"] = "actionFields"; - // DPI_AddVariableLabel, having type string - ParameterId["AddVariableLabel"] = "addVariableLabel"; - // DPI_AddVariableTooltip, having type string - ParameterId["AddVariableTooltip"] = "addVariableTooltip"; - // DPI_AllowedDataSourcesByName, having type string - ParameterId["AllowedDataSourcesByName"] = "allowedDataSourcesByName"; - // DPI_AppAboutVersion, having type string - ParameterId["AppAboutVersion"] = "appAboutVersion"; - // DPI_AppBuildBranchName, having type string - ParameterId["AppBuildBranchName"] = "appBuildBranchName"; - // DPI_AppBuildVersion, having type string - ParameterId["AppBuildVersion"] = "appBuildVersion"; - // DPI_AppExternalVersion, having type string - ParameterId["AppExternalVersion"] = "appExternalVersion"; - // DPI_AppName, having type string - ParameterId["AppName"] = "appName"; - // DPI_AppProductVersion, having type string - ParameterId["AppProductVersion"] = "appProductVersion"; - // DPI_OriginalVersion, having type string - ParameterId["OriginalVersion"] = "originalVersion"; - // DPI_AtTheLevelSpecialCaption, having type string - ParameterId["AtTheLevelSpecialCaption"] = "atTheLevelSpecialCaption"; - // DPI_AutoCompleteCalc, having type string - ParameterId["AutoCompleteCalc"] = "acCalc"; - // DPI_CallToAction, having type string - ParameterId["CallToAction"] = "callToAction"; - // DPI_CSVPath, having type string - ParameterId["CSVPath"] = "csvPath"; - // DPI_CommandNamespace, having type string - ParameterId["CommandNamespace"] = "commandNamespace"; - // DPI_Condition, having type string - ParameterId["Condition"] = "condition"; - // DPI_ConditionSummary, having type string - ParameterId["ConditionSummary"] = "conditionSummary"; - // DPI_ConfirmationMsg, having type string - ParameterId["ConfirmationMsg"] = "confirmationMsg"; - // DPI_DashboardTypeText, having type string - ParameterId["DashboardTypeText"] = "dashboardType"; - // DPI_DataserverPublicAddress, having type string - ParameterId["DataserverPublicAddress"] = "dataserverPublicAddress"; - // DPI_DatasourceFileName, having type string - ParameterId["DatasourceFileName"] = "datasourceFileName"; - // DPI_DecimalMark, having type string - ParameterId["DecimalMark"] = "decimalMark"; - // DPI_DeleteVariableTooltip, having type string - ParameterId["DeleteVariableTooltip"] = "deleteVariableTooltip"; - // DPI_DialogTitle, having type string - ParameterId["DialogTitle"] = "dialogTitle"; - // DPI_DisplayValue, having type string - ParameterId["DisplayValue"] = "displayValue"; - // DPI_TooltipValue, having type string - ParameterId["TooltipValue"] = "tooltipValue"; - // DPI_DstPath, having type string - ParameterId["DstPath"] = "dstPath"; - // DPI_EditWidgetHeader, having type string - ParameterId["EditWidgetHeader"] = "editWidgetHeader"; - // DPI_EditWidgetInstruction, having type string - ParameterId["EditWidgetInstruction"] = "editWidgetInstruction"; - // DPI_EndSelectionCaption, having type string - ParameterId["EndSelectionCaption"] = "endSelectionCaption"; - // DPI_ErrorDialogTitle, having type string - ParameterId["ErrorDialogTitle"] = "errorDialogTitle"; - // DPI_ErrorHelpLink, having type string - ParameterId["ErrorHelpLink"] = "errorHelpLink"; - // DPI_FilterSearchQuery, having type string - ParameterId["FilterSearchQuery"] = "filterSearchQuery"; - // DPI_FromLabel, having type string - ParameterId["FromLabel"] = "fromLabel"; - // DPI_FunctionHelp, having type string - ParameterId["FunctionHelp"] = "functionHelp"; - // DPI_Instructions, having type string - ParameterId["Instructions"] = "instructions"; - // DPI_LargeUnitDisplay, having type string - ParameterId["LargeUnitDisplay"] = "largeUnitDisplay"; - // DPI_Limit, having type string - ParameterId["Limit"] = "limit"; - // DPI_ListViewNameLabel, having type string - ParameterId["ListViewNameLabel"] = "listViewNameLabel"; - // DPI_ListViewValueLabel, having type string - ParameterId["ListViewValueLabel"] = "listViewValueLabel"; - // DPI_MapScaleReadoutUnit, having type string - ParameterId["MapScaleReadoutUnit"] = "mapScaleReadoutUnit"; - // DPI_MeasureDimension, having type string - ParameterId["MeasureDimension"] = "measuresDimension"; - // DPI_MimeType, having type string - ParameterId["MimeType"] = "mimeType"; - // DPI_MinimizedName, having type string - ParameterId["MinimizedName"] = "minName"; - // DPI_NotificationMsg, having type string - ParameterId["NotificationMsg"] = "notificationMsg"; - // DPI_OperationName, having type string - ParameterId["OperationName"] = "operationName"; - // DPI_PageTitle, having type string - ParameterId["PageTitle"] = "pageTitle"; - // DPI_PatternSummary, having type string - ParameterId["PatternSummary"] = "patternSummary"; - // DPI_ReferenceLineId, having type string - ParameterId["ReferenceLineId"] = "refLineId"; - // DPI_ReferenceLinePairedId, having type string - ParameterId["ReferenceLinePairedId"] = "refLinePairedId"; - // DPI_ReplaceText, having type string - ParameterId["ReplaceText"] = "replaceText"; - // DPI_RequiredVariableMessage, having type string - ParameterId["RequiredVariableMessage"] = "requiredVariableMessage"; - // DPI_RestartEverySpecialCaption, having type string - ParameterId["RestartEverySpecialCaption"] = "restartEverySpecialCaption"; - // DPI_Root, having type string - ParameterId["Root"] = "root"; - // DPI_SelectionSummary, having type string - ParameterId["SelectionSummary"] = "selectionSummary"; - // DPI_SessionAttributeKey, having type string - ParameterId["SessionAttributeKey"] = "sessionAttributeKey"; - // DPI_SessionAttributeValue, having type string - ParameterId["SessionAttributeValue"] = "sessionAttributeValue"; - // DPI_SheetAttributeKey, having type string - ParameterId["SheetAttributeKey"] = "baseSheetAttributeKey"; - // DPI_SheetAttributeValue, having type string - ParameterId["SheetAttributeValue"] = "baseSheetAttributeValue"; - // DPI_SmallUnitDisplay, having type string - ParameterId["SmallUnitDisplay"] = "smallUnitDisplay"; - // DPI_SourceCaption, having type string - ParameterId["SourceCaption"] = "sourceCaption"; - // DPI_SrcPath, having type string - ParameterId["SrcPath"] = "srcPath"; - // DPI_StartSelectionCaption, having type string - ParameterId["StartSelectionCaption"] = "startSelectionCaption"; - // DPI_Subtitle, having type string - ParameterId["Subtitle"] = "subtitle"; - // DPI_TableauServerSiteName, having type string - ParameterId["TableauServerSiteName"] = "tableauServerSiteName"; - // DPI_TargetCaption, having type string - ParameterId["TargetCaption"] = "targetCaption"; - // DPI_ThumbnailPath, having type string - ParameterId["ThumbnailPath"] = "thumbnailPath"; - // DPI_ToLabel, having type string - ParameterId["ToLabel"] = "toLabel"; - // DPI_URLAddress, having type string - ParameterId["URLAddress"] = "urlAddress"; - // DPI_ValuesTableHeader, having type string - ParameterId["ValuesTableHeader"] = "valuesTableHeader"; - // DPI_ValuesTableHeader2, having type string - ParameterId["ValuesTableHeader2"] = "valuesTableHeader2"; - // DPI_VariableDescription, having type string - ParameterId["VariableDescription"] = "variableDescription"; - // DPI_VariableDisplayName, having type string - ParameterId["VariableDisplayName"] = "variableDisplayName"; - // DPI_VariableGUID, having type string - ParameterId["VariableGUID"] = "variableGuid"; - // DPI_VerboseName, having type string - ParameterId["VerboseName"] = "verboseName"; - // DPI_ViewId, having type string - ParameterId["ViewId"] = "viewId"; - // DPI_Warning1, having type string - ParameterId["Warning1"] = "warning1"; - // DPI_Warning2, having type string - ParameterId["Warning2"] = "warning2"; - // DPI_RefreshToken, having type string - ParameterId["RefreshToken"] = "refresh_token"; - // DPI_TokenType, having type string - ParameterId["TokenType"] = "token_type"; - // DPI_XSRFToken, having type string - ParameterId["XSRFToken"] = "xsrf_token"; - // DPI_AxisSubtitle, having type string - ParameterId["AxisSubtitle"] = "axisSubtitle"; - // DPI_AxisTitle, having type string - ParameterId["AxisTitle"] = "axisTitle"; - // DPI_TickMarkOriginDataValue, having type string - ParameterId["TickMarkOriginDataValue"] = "tickMarkOriginDataValue"; - // DPI_TickMarkSpacingDataValue, having type string - ParameterId["TickMarkSpacingDataValue"] = "tickMarkSpacingDataValue"; - // DPI_ExtractActionLocalized, having type string - ParameterId["ExtractActionLocalized"] = "extractActionLocalized"; - // DPI_ExtractSource, having type string - ParameterId["ExtractSource"] = "extractSource"; - // DPI_FileContents, having type string - ParameterId["FileContents"] = "fileContents"; - // DPI_SaveImagePath, having type string - ParameterId["SaveImagePath"] = "saveImagePath"; - // DPI_WidgetUID, having type string - ParameterId["WidgetUID"] = "widgetUniqueId"; - // DPI_DatePropertiesDisplayText, having type string - ParameterId["DatePropertiesDisplayText"] = "datePropertiesDisplayText"; - // DPI_DatePropertiesHelperText, having type string - ParameterId["DatePropertiesHelperText"] = "datePropertiesHelperText"; - // DPI_EventName, having type string - ParameterId["EventName"] = "eventName"; - // DPI_ExceptionType, having type string - ParameterId["ExceptionType"] = "exceptionType"; - // DPI_SearchPlaceholder, having type string - ParameterId["SearchPlaceholder"] = "searchPlaceholder"; - // DPI_TargetVersion, having type string - ParameterId["TargetVersion"] = "targetVersion"; - // DPI_DataValueDisplayString, having type string - ParameterId["DataValueDisplayString"] = "dataValueDisplayString"; - // DPI_DomainString, having type string - ParameterId["DomainString"] = "domainString"; - // DPI_RawDataValueString, having type string - ParameterId["RawDataValueString"] = "rawDataValueString"; - // DPI_RichTextDialogTitle, having type string - ParameterId["RichTextDialogTitle"] = "richTextDialogTitle"; - // DPI_RichTextContent, having type string - ParameterId["RichTextContent"] = "richTextContent"; - // DPI_MarkSizeAsString, having type string - ParameterId["MarkSizeAsString"] = "markSizeAsString"; - // DPI_UnitsLabel, having type string - ParameterId["UnitsLabel"] = "unitsLabel"; - // DPI_EmailAddress, having type string - ParameterId["EmailAddress"] = "emailAddress"; - // DPI_FirstName, having type string - ParameterId["FirstName"] = "firstName"; - // DPI_LastName, having type string - ParameterId["LastName"] = "lastName"; - // DPI_SummaryCardAvg, having type string - ParameterId["SummaryCardAvg"] = "summaryCardAvg"; - // DPI_SummaryCardCaption, having type string - ParameterId["SummaryCardCaption"] = "summaryCardCaption"; - // DPI_SummaryCardCount, having type string - ParameterId["SummaryCardCount"] = "summaryCardCount"; - // DPI_SummaryCardKurtosis, having type string - ParameterId["SummaryCardKurtosis"] = "summaryCardKurtosis"; - // DPI_SummaryCardMax, having type string - ParameterId["SummaryCardMax"] = "summaryCardMax"; - // DPI_SummaryCardMedian, having type string - ParameterId["SummaryCardMedian"] = "summaryCardMedian"; - // DPI_SummaryCardMin, having type string - ParameterId["SummaryCardMin"] = "summaryCardMin"; - // DPI_SummaryCardQuart1, having type string - ParameterId["SummaryCardQuart1"] = "summaryCardQuart1"; - // DPI_SummaryCardQuart3, having type string - ParameterId["SummaryCardQuart3"] = "summaryCardQuart3"; - // DPI_SummaryCardSkewness, having type string - ParameterId["SummaryCardSkewness"] = "summaryCardSkewness"; - // DPI_SummaryCardStdev, having type string - ParameterId["SummaryCardStdev"] = "summaryCardStdev"; - // DPI_SummaryCardSum, having type string - ParameterId["SummaryCardSum"] = "summaryCardSum"; - // DPI_ValueClassAttr, having type string - ParameterId["ValueClassAttr"] = "valueClassAttr"; - // DPI_AuthenticationSummary, having type string - ParameterId["AuthenticationSummary"] = "authenticationSummary"; - // DPI_BtnCancelText, having type string - ParameterId["BtnCancelText"] = "btnCancelText"; - // DPI_BtnOkText, having type string - ParameterId["BtnOkText"] = "btnOkText"; - // DPI_ButtonText, having type string - ParameterId["ButtonText"] = "buttonText"; - // DPI_CalculationCaption, having type string - ParameterId["CalculationCaption"] = "calculationCaption"; - // DPI_CalculationDependencies, having type string - ParameterId["CalculationDependencies"] = "calculationDependencies"; - // DPI_CalculationFormula, having type string - ParameterId["CalculationFormula"] = "calculationFormula"; - // DPI_CheckPublishMessage, having type string - ParameterId["CheckPublishMessage"] = "checkPublishSummary"; - // DPI_ClusterModelText, having type string - ParameterId["ClusterModelText"] = "clusterModelText"; - // DPI_ClusterSummaryScaledText, having type string - ParameterId["ClusterSummaryScaledText"] = "clusterSummaryScaledText"; - // DPI_ClusterSummaryText, having type string - ParameterId["ClusterSummaryText"] = "clusterSummaryText"; - // DPI_ColumnCaption, having type string - ParameterId["ColumnCaption"] = "columnCaption"; - // DPI_DatasourceCaption, having type string - ParameterId["DatasourceCaption"] = "datasourceCaption"; - // DPI_DefaultCaption, having type string - ParameterId["DefaultCaption"] = "defaultCaption"; - // DPI_DisplayString, having type string - ParameterId["DisplayString"] = "displayText"; - // DPI_DragDescription, having type string - ParameterId["DragDescription"] = "dragDescription"; - // DPI_ExceptionMessage, having type string - ParameterId["ExceptionMessage"] = "exceptionMessage"; - // DPI_Explanation, having type string - ParameterId["Explanation"] = "explanation"; - // DPI_FieldCaption, having type string - ParameterId["FieldCaption"] = "fieldCaption"; - // DPI_FieldSummary, having type string - ParameterId["FieldSummary"] = "fieldSummary"; - // DPI_FieldSummaryLabel, having type string - ParameterId["FieldSummaryLabel"] = "fieldSummaryLabel"; - // DPI_FilterDescription, having type string - ParameterId["FilterDescription"] = "filterDescription"; - // DPI_FilterName, having type string - ParameterId["FilterName"] = "filterName"; - // DPI_ForecastDiagnoseText, having type string - ParameterId["ForecastDiagnoseText"] = "forecastDiagnoseText"; - // DPI_ForecastModelText, having type string - ParameterId["ForecastModelText"] = "forecastModelText"; - // DPI_ForecastSummaryPctText, having type string - ParameterId["ForecastSummaryPctText"] = "forecastSummaryPctText"; - // DPI_ForecastSummaryText, having type string - ParameterId["ForecastSummaryText"] = "forecastSummaryText"; - // DPI_HasActiveExtractText, having type string - ParameterId["HasActiveExtractText"] = "hasActiveExtractText"; - // DPI_HtmlColor, having type string - ParameterId["HtmlColor"] = "htmlColor"; - // DPI_IncludeLocalFilesCheckedWarning, having type string - ParameterId["IncludeLocalFilesCheckedWarning"] = "includeLocalFilesCheckedWarning"; - // DPI_IncludeLocalFilesWarning, having type string - ParameterId["IncludeLocalFilesWarning"] = "includeLocalFilesWarning"; - // DPI_InvalidFieldCaption, having type string - ParameterId["InvalidFieldCaption"] = "invalidFieldCaption"; - // DPI_LimitSummary, having type string - ParameterId["LimitSummary"] = "limitSummary"; - // DPI_LoadedExistingObjectWarning, having type string - ParameterId["LoadedExistingObjectWarning"] = "loadedExistingObjectWarning"; - // DPI_ManageDatasourcesSummary, having type string - ParameterId["ManageDatasourcesSummary"] = "manageDatasourcesSummary"; - // DPI_ModalDialog, having type string - ParameterId["ModalDialog"] = "modalDialog"; - // DPI_NewDatasourceCaption, having type string - ParameterId["NewDatasourceCaption"] = "newDatasourceCaption"; - // DPI_PermissionsButtonLabel, having type string - ParameterId["PermissionsButtonLabel"] = "permissionsButtonLabel"; - // DPI_PermissionsEditorRoleId, having type string - ParameterId["PermissionsEditorRoleId"] = "permissionsEditorRoleId"; - // DPI_PermissionsLabel, having type string - ParameterId["PermissionsLabel"] = "permissionsLabel"; - // DPI_PerspectiveCaption, having type string - ParameterId["PerspectiveCaption"] = "perspectiveCaption"; - // DPI_PublishButtonLabel, having type string - ParameterId["PublishButtonLabel"] = "publishButtonLabel"; - // DPI_PublishChoiceLabel, having type string - ParameterId["PublishChoiceLabel"] = "publishChoiceLabel"; - // DPI_PublishObjectViewsSummary, having type string - ParameterId["PublishObjectViewsSummary"] = "publishObjectViewsSummary"; - // DPI_QualifiedFieldCaption, having type string - ParameterId["QualifiedFieldCaption"] = "qualifiedFieldCaption"; - // DPI_RelationshipTooltipText, having type string - ParameterId["RelationshipTooltipText"] = "relationshipTooltipText"; - // DPI_ResetObjectAttributesWarning, having type string - ParameterId["ResetObjectAttributesWarning"] = "resetObjectAttributesWarning"; - // DPI_RowCountCaption, having type string - ParameterId["RowCountCaption"] = "rowCountCaption"; - // DPI_ServerCaption, having type string - ParameterId["ServerCaption"] = "serverCaption"; - // DPI_SizeModeName, having type string - ParameterId["SizeModeName"] = "sizeModeName"; - // DPI_SummaryText, having type string - ParameterId["SummaryText"] = "summaryText"; - // DPI_SyncClientUseExtractLabel, having type string - ParameterId["SyncClientUseExtractLabel"] = "syncClientUseExtractLabel"; - // DPI_Text, having type string - ParameterId["Text"] = "text"; - // DPI_TextDropdownControlLabel, having type string - ParameterId["TextDropdownControlLabel"] = "controlLabel"; - // DPI_ThumbnailUserName, having type string - ParameterId["ThumbnailUserName"] = "thumbnailUserName"; - // DPI_TitleString, having type string - ParameterId["TitleString"] = "titleString"; - // DPI_TooltipText, having type string - ParameterId["TooltipText"] = "tooltipText"; - // DPI_UpdatedCalcCaption, having type string - ParameterId["UpdatedCalcCaption"] = "updatedCalculationCaption"; - // DPI_UpdatedCalcFormula, having type string - ParameterId["UpdatedCalcFormula"] = "updatedCalculationFormula"; - // DPI_UserCaption, having type string - ParameterId["UserCaption"] = "userCaption"; - // DPI_WarningTooltipText, having type string - ParameterId["WarningTooltipText"] = "warningTooltipText"; - // DPI_DatasourceFile, having type string - ParameterId["DatasourceFile"] = "datasourceFile"; - // DPI_File, having type string - ParameterId["File"] = "file"; - // DPI_FileNameBase, having type string - ParameterId["FileNameBase"] = "filenameBase"; - // DPI_NewFile, having type string - ParameterId["NewFile"] = "newFile"; - // DPI_OriginalFile, having type string - ParameterId["OriginalFile"] = "originalFile"; - // DPI_OutputFile, having type string - ParameterId["OutputFile"] = "outputFile"; - // DPI_SampleFileName, having type string - ParameterId["SampleFileName"] = "sampleFilename"; - // DPI_WorkbookFile, having type string - ParameterId["WorkbookFile"] = "workbookFile"; - // DPI_ImageKey, having type string - ParameterId["ImageKey"] = "imageKey"; - // DPI_OverlayImageKey, having type string - ParameterId["OverlayImageKey"] = "overlayImageKey"; - // DPI_TempFileKey, having type string - ParameterId["TempFileKey"] = "tempfileKey"; - // DPI_CapturedSheet, having type string - ParameterId["CapturedSheet"] = "capturedSheet"; - // DPI_CurrentSheet, having type string - ParameterId["CurrentSheet"] = "currentSheet"; - // DPI_Dashboard, having type string - ParameterId["Dashboard"] = "dashboard"; - // DPI_EnsureSheet, having type string - ParameterId["EnsureSheet"] = "ensureSheetName"; - // DPI_NewSheet, having type string - ParameterId["NewSheet"] = "newSheet"; - // DPI_Sheet, having type string - ParameterId["Sheet"] = "sheet"; - // DPI_SheetName, having type string - ParameterId["SheetName"] = "sheetName"; - // DPI_SourceDashboard, having type string - ParameterId["SourceDashboard"] = "sourceDashboard"; - // DPI_SourceSheet, having type string - ParameterId["SourceSheet"] = "sourceSheet"; - // DPI_TargetSheet, having type string - ParameterId["TargetSheet"] = "targetSheet"; - // DPI_WorkbookName, having type string - ParameterId["WorkbookName"] = "workbookName"; - // DPI_Worksheet, having type string - ParameterId["Worksheet"] = "worksheet"; - // DPI_BaseViewThumbLink, having type string - ParameterId["BaseViewThumbLink"] = "baseViewThumbLink"; - // DPI_BlogLink, having type string - ParameterId["BlogLink"] = "blogLink"; - // DPI_CacheUrl, having type string - ParameterId["CacheUrl"] = "cacheUrl"; - // DPI_DownloadLink, having type string - ParameterId["DownloadLink"] = "downloadLink"; - // DPI_RepositoryUrl, having type string - ParameterId["RepositoryUrl"] = "repositoryUrl"; - // DPI_ShareLink, having type string - ParameterId["ShareLink"] = "shareLink"; - // DPI_URL, having type string - ParameterId["URL"] = "url"; - // DPI_ClusterModelHtml, having type string - ParameterId["ClusterModelHtml"] = "clusterModelHtml"; - // DPI_ClusterSummaryHtml, having type string - ParameterId["ClusterSummaryHtml"] = "clusterSummaryHtml"; - // DPI_ClusterSummaryScaledHtml, having type string - ParameterId["ClusterSummaryScaledHtml"] = "clusterSummaryScaledHtml"; - // DPI_FieldDescription, having type string - ParameterId["FieldDescription"] = "fieldDescription"; - // DPI_ForecastDiagnoseHtml, having type string - ParameterId["ForecastDiagnoseHtml"] = "forecastDiagnoseHtml"; - // DPI_ForecastModelHtml, having type string - ParameterId["ForecastModelHtml"] = "forecastModelHtml"; - // DPI_ForecastSummaryHtml, having type string - ParameterId["ForecastSummaryHtml"] = "forecastSummaryHtml"; - // DPI_ForecastSummaryPctHtml, having type string - ParameterId["ForecastSummaryPctHtml"] = "forecastSummaryPctHtml"; - // DPI_Html, having type string - ParameterId["Html"] = "html"; - // DPI_HtmlSelection, having type string - ParameterId["HtmlSelection"] = "htmlSelection"; - // DPI_HtmlTooltip, having type string - ParameterId["HtmlTooltip"] = "htmlTooltip"; - // DPI_TitleHtml, having type string - ParameterId["TitleHtml"] = "titleHtml"; - // DPI_CacheUrlInfoJson, having type string - ParameterId["CacheUrlInfoJson"] = "cacheUrlInfoJson"; - // DPI_FilterSearchJson, having type string - ParameterId["FilterSearchJson"] = "filterSearchJson"; - // DPI_FilterSearchWithIndexJson, having type string - ParameterId["FilterSearchWithIndexJson"] = "filterSearchWithIndexJson"; - // DPI_FilterShowChildrenJson, having type string - ParameterId["FilterShowChildrenJson"] = "filterShowChildrenJson"; - // DPI_FiltersJson, having type string - ParameterId["FiltersJson"] = "filtersJson"; - // DPI_FrameJson, having type string - ParameterId["FrameJson"] = "frameJson"; - // DPI_GeometryJson, having type string - ParameterId["GeometryJson"] = "geometryJson"; - // DPI_GetFilterItemsJson, having type string - ParameterId["GetFilterItemsJson"] = "getFilterItemsJson"; - // DPI_KeepOnlyResponseJson, having type string - ParameterId["KeepOnlyResponseJson"] = "keepOnlyResponseJson"; - // DPI_MenuCommandsJson, having type string - ParameterId["MenuCommandsJson"] = "menuCommandsJson"; - // DPI_ModifiedSheetsJson, having type string - ParameterId["ModifiedSheetsJson"] = "modifiedSheetsJson"; - // DPI_ParameterCtrlJson, having type string - ParameterId["ParameterCtrlJson"] = "parameterCtrlJson"; - // DPI_ViewJson, having type string - ParameterId["ViewJson"] = "viewJson"; - // DPI_CustomizedViewXML, having type string - ParameterId["CustomizedViewXML"] = "customizedViewXml"; - // DPI_DatasourceDeltaXML, having type string - ParameterId["DatasourceDeltaXML"] = "datasourceDeltaXml"; - // DPI_DatasourceXML, having type string - ParameterId["DatasourceXML"] = "datasourceXml"; - // DPI_KeychainXML, having type string - ParameterId["KeychainXML"] = "keychainXml"; - // DPI_PermissionsModelXML, having type string - ParameterId["PermissionsModelXML"] = "permissionsModelXml"; - // DPI_SharedViewsXML, having type string - ParameterId["SharedViewsXML"] = "sharedViewsXml"; - // DPI_TargetURL, having type string - ParameterId["TargetURL"] = "targetUrl"; - // DPI_Anchor, having type string - ParameterId["Anchor"] = "anchor"; - // DPI_CenterValue, having type string - ParameterId["CenterValue"] = "centerValue"; - // DPI_ComputedBinSize, having type string - ParameterId["ComputedBinSize"] = "computedBinSize"; - // DPI_ConstantValue, having type string - ParameterId["ConstantValue"] = "constantValue"; - // DPI_PairedConstantValue, having type string - ParameterId["PairedConstantValue"] = "pairedConstantValue"; - // DPI_CountDistinct, having type string - ParameterId["CountDistinct"] = "countDistinct"; - // DPI_DataMax, having type string - ParameterId["DataMax"] = "dataMax"; - // DPI_DataMin, having type string - ParameterId["DataMin"] = "dataMin"; - // DPI_EndValue, having type string - ParameterId["EndValue"] = "endValue"; - // DPI_RangeMax, having type string - ParameterId["RangeMax"] = "rangeMax"; - // DPI_RangeMin, having type string - ParameterId["RangeMin"] = "rangeMin"; - // DPI_RangeStepSize, having type string - ParameterId["RangeStepSize"] = "rangeStepSize"; - // DPI_StartValue, having type string - ParameterId["StartValue"] = "startValue"; - // DPI_TargetValue, having type string - ParameterId["TargetValue"] = "targetValue"; - // DPI_ValueInc, having type string - ParameterId["ValueInc"] = "valueInc"; - // DPI_ValueMax, having type string - ParameterId["ValueMax"] = "valueMax"; - // DPI_ValueMin, having type string - ParameterId["ValueMin"] = "valueMin"; - // DPI_QuantilesValue, having type string - ParameterId["QuantilesValue"] = "quantilesValue"; - // DPI_UserInputBinSize, having type string - ParameterId["UserInputBinSize"] = "userBinSize"; - // DPI_AddedDataSources, having type string[] - ParameterId["AddedDataSources"] = "addedDataSourceNames"; - // DPI_AddressingCaptions, having type string[] - ParameterId["AddressingCaptions"] = "addressingCaptions"; - // DPI_AggregationCaptions, having type string[] - ParameterId["AggregationCaptions"] = "aggregationCaptions"; - // DPI_AtTheLevelCaptions, having type string[] - ParameterId["AtTheLevelCaptions"] = "atTheLevelCaptions"; - // DPI_AuthenticationSettingLabels, having type string[] - ParameterId["AuthenticationSettingLabels"] = "authenticationSettingLabels"; - // DPI_AutosaveFileIdsVector, having type string[] - ParameterId["AutosaveFileIdsVector"] = "autosaveFileIdsVector"; - // DPI_ChangedTuples, having type string[] - ParameterId["ChangedTuples"] = "changedTuples"; - // DPI_CharsetsAvailable, having type string[] - ParameterId["CharsetsAvailable"] = "charsetsAvailable"; - // DPI_CharsetDisplayNames, having type string[] - ParameterId["CharsetDisplayNames"] = "charsetDisplayNames"; - // DPI_ColorFactors, having type string[] - ParameterId["ColorFactors"] = "colorFactors"; - // DPI_ColumnFullNames, having type string[] - ParameterId["ColumnFullNames"] = "columnFullNames"; - // DPI_ConnectionNames, having type string[] - ParameterId["ConnectionNames"] = "connectionNames"; - // DPI_ConnectionCaptions, having type string[] - ParameterId["ConnectionCaptions"] = "connectionCaptions"; - // DPI_ConnectionBigQueryLegacySQLCheckBox, having type string[] - ParameterId["ConnectionBigQueryLegacySQLCheckBox"] = "connectionBigqueryLegacySqlCheckbox"; - // DPI_CustomFieldOrder, having type string[] - ParameterId["CustomFieldOrder"] = "customFieldOrder"; - // DPI_DataSourceClasses, having type string[] - ParameterId["DataSourceClasses"] = "dataSourceClasses"; - // DPI_DataSourceNames, having type string[] - ParameterId["DataSourceNames"] = "dataSourceNames"; - // DPI_DataSourceNames2, having type string[] - ParameterId["DataSourceNames2"] = "dataSourceNames2"; - // DPI_DateFormats, having type string[] - ParameterId["DateFormats"] = "dateFormats"; - // DPI_DayNames, having type string[] - ParameterId["DayNames"] = "dayNames"; - // DPI_DrillPathVector, having type string[] - ParameterId["DrillPathVector"] = "drillpathVector"; - // DPI_ErrorDetails, having type string[] - ParameterId["ErrorDetails"] = "errorDetails"; - // DPI_ExceptionMessageParams, having type string[] - ParameterId["ExceptionMessageParams"] = "exceptionMessageParams"; - // DPI_ExcludedSheets, having type string[] - ParameterId["ExcludedSheets"] = "excludeSheets"; - // DPI_FieldDisplayNames, having type string[] - ParameterId["FieldDisplayNames"] = "fieldDisplayNames"; - // DPI_FieldFolderVector, having type string[] - ParameterId["FieldFolderVector"] = "fieldFolderVector"; - // DPI_FileIds, having type string[] - ParameterId["FileIds"] = "fileIds"; - // DPI_FilePaths, having type string[] - ParameterId["FilePaths"] = "filePaths"; - // DPI_FileNames, having type string[] - ParameterId["FileNames"] = "fileNames"; - // DPI_FilterAdd, having type string[] - ParameterId["FilterAdd"] = "filterAdd"; - // DPI_FilterAliases, having type string[] - ParameterId["FilterAliases"] = "filterValues"; - // DPI_FilterRemove, having type string[] - ParameterId["FilterRemove"] = "filterRemove"; - // DPI_FixedCaptions, having type string[] - ParameterId["FixedCaptions"] = "fixedCaptions"; - // DPI_FontFamilies, having type string[] - ParameterId["FontFamilies"] = "fontFamilies"; - // DPI_FormatStrings, having type string[] - ParameterId["FormatStrings"] = "formatStrings"; - // DPI_FormattedValues, having type string[] - ParameterId["FormattedValues"] = "formattedValues"; - // DPI_FoundTuples, having type string[] - ParameterId["FoundTuples"] = "foundTuples"; - // DPI_FullSchedulesLabels, having type string[] - ParameterId["FullSchedulesLabels"] = "fullSchedulesLabels"; - // DPI_ImageResourceList, having type string[] - ParameterId["ImageResourceList"] = "imageResources"; - // DPI_IncludeList, having type string[] - ParameterId["IncludeList"] = "includeList"; - // DPI_IncrSchedulesLabels, having type string[] - ParameterId["IncrSchedulesLabels"] = "incrSchedulesLabels"; - // DPI_InvalidDates, having type string[] - ParameterId["InvalidDates"] = "invalidDates"; - // DPI_InvalidValues, having type string[] - ParameterId["InvalidValues"] = "invalidValues"; - // DPI_ItemValues, having type string[] - ParameterId["ItemValues"] = "itemValues"; - // DPI_JoinEditableProps, having type string[] - ParameterId["JoinEditableProps"] = "joinEditableProps"; - // DPI_JoinFieldCaptions, having type string[] - ParameterId["JoinFieldCaptions"] = "joinFieldCaptions"; - // DPI_LocaleOptions, having type string[] - ParameterId["LocaleOptions"] = "localeOptions"; - // DPI_LocaleDisplayNames, having type string[] - ParameterId["LocaleDisplayNames"] = "localeDisplayNames"; - // DPI_MapBoxStyleMaps, having type string[] - ParameterId["MapBoxStyleMaps"] = "mapboxStyleMaps"; - // DPI_MapConnectionErrorDetails, having type string[] - ParameterId["MapConnectionErrorDetails"] = "mapConnectionErrorDetails"; - // DPI_SheetNames, having type string[] - ParameterId["SheetNames"] = "sheetNames"; - // DPI_MapSourceNames, having type string[] - ParameterId["MapSourceNames"] = "mapSourceNames"; - // DPI_MarkGeometries, having type string[] - ParameterId["MarkGeometries"] = "markGeometries"; - // DPI_MenuItems, having type string[] - ParameterId["MenuItems"] = "menuItems"; - // DPI_Modes, having type string[] - ParameterId["Modes"] = "modes"; - // DPI_MonthNames, having type string[] - ParameterId["MonthNames"] = "monthNames"; - // DPI_NumberFormats, having type string[] - ParameterId["NumberFormats"] = "numberFormats"; - // DPI_ObjectTextIDs, having type string[] - ParameterId["ObjectTextIDs"] = "objectTextIds"; - // DPI_OldExtracts, having type string[] - ParameterId["OldExtracts"] = "oldExtracts"; - // DPI_OrderingTypeCaptions, having type string[] - ParameterId["OrderingTypeCaptions"] = "orderingTypeCaptions"; - // DPI_PageNames, having type string[] - ParameterId["PageNames"] = "pageNames"; - // DPI_PaneDescriptorKeys, having type string[] - ParameterId["PaneDescriptorKeys"] = "paneDescriptorKeys"; - // DPI_ParamCaptions, having type string[] - ParameterId["ParamCaptions"] = "paramCaptions"; - // DPI_PrecannedDataValues, having type string[] - ParameterId["PrecannedDataValues"] = "precannedDataValues"; - // DPI_PublishChoiceLabels, having type string[] - ParameterId["PublishChoiceLabels"] = "publishChoiceLabels"; - // DPI_RankTypeCaptions, having type string[] - ParameterId["RankTypeCaptions"] = "rankTypeCaptions"; - // DPI_RecentTags, having type string[] - ParameterId["RecentTags"] = "recentTags"; - // DPI_RelativeCaptions, having type string[] - ParameterId["RelativeCaptions"] = "relativeCaptions"; - // DPI_RemovedDataSources, having type string[] - ParameterId["RemovedDataSources"] = "removedDataSourceNames"; - // DPI_RepresentativeTuple, having type string[] - ParameterId["RepresentativeTuple"] = "representativeTuple"; - // DPI_RestartEveryCaptions, having type string[] - ParameterId["RestartEveryCaptions"] = "restartEveryCaptions"; - // DPI_SchemaMemberGlobalNames, having type string[] - ParameterId["SchemaMemberGlobalNames"] = "schemaMemberGlobalNames"; - // DPI_SelectValuesList, having type string[] - ParameterId["SelectValuesList"] = "selectValues"; - // DPI_SelectionValueList, having type string[] - ParameterId["SelectionValueList"] = "selectionValueList"; - // DPI_SortAggCaptions, having type string[] - ParameterId["SortAggCaptions"] = "sortAggCaptions"; - // DPI_SortDirectionCaptions, having type string[] - ParameterId["SortDirectionCaptions"] = "sortDirectionCaptions"; - // DPI_SortFieldCaptions, having type string[] - ParameterId["SortFieldCaptions"] = "sortFieldCaptions"; - // DPI_SortFieldNameVector, having type string[] - ParameterId["SortFieldNameVector"] = "sortFieldnameVector"; - // DPI_SupportedJoinOperators, having type string[] - ParameterId["SupportedJoinOperators"] = "supportedJoinOperators"; - // DPI_TableCalcTypeCaptions, having type string[] - ParameterId["TableCalcTypeCaptions"] = "tableCalcTypeCaptions"; - // DPI_Tags, having type string[] - ParameterId["Tags"] = "tags"; - // DPI_TermVec, having type string[] - ParameterId["TermVec"] = "termVector"; - // DPI_UIAutomationList, having type string[] - ParameterId["UIAutomationList"] = "uiAutomationList"; - // DPI_ReferenceLineValidCustomLabelTags, having type string[] - ParameterId["ReferenceLineValidCustomLabelTags"] = "validReferenceLineCustomLabelTags"; - // DPI_LocalizedKeywords, having type string[] - ParameterId["LocalizedKeywords"] = "localizedKeywords"; - // DPI_AvailableCalendars, having type string[] - ParameterId["AvailableCalendars"] = "availableCalendars"; - // DPI_SheetsToBeDeletedOrHidden, having type string[] - ParameterId["SheetsToBeDeletedOrHidden"] = "sheetsToBeDeletedOrHidden"; - // DPI_AddSheets, having type string[] - ParameterId["AddSheets"] = "addSheets"; - // DPI_NamesOfSubsheets, having type string[] - ParameterId["NamesOfSubsheets"] = "namesOfSubsheets"; - // DPI_RemoveSheets, having type string[] - ParameterId["RemoveSheets"] = "removeSheets"; - // DPI_ScrollOffsetSheets, having type string[] - ParameterId["ScrollOffsetSheets"] = "scrollOffsetSheets"; - // DPI_Sheets, having type string[] - ParameterId["Sheets"] = "sheets"; - // DPI_SourceWorksheets, having type string[] - ParameterId["SourceWorksheets"] = "sourceWorksheets"; - // DPI_TargetExcludes, having type string[] - ParameterId["TargetExcludes"] = "targetExclude"; - // DPI_TargetWorksheets, having type string[] - ParameterId["TargetWorksheets"] = "targetWorksheets"; - // DPI_TileURLs, having type string[] - ParameterId["TileURLs"] = "tileUrls"; - // DPI_Details, having type string[] - ParameterId["Details"] = "details"; - // DPI_FieldCaptions, having type string[] - ParameterId["FieldCaptions"] = "fieldCaptions"; - // DPI_HighlightCaptions, having type string[] - ParameterId["HighlightCaptions"] = "highlightCaptions"; - // DPI_LevelCaptions, having type string[] - ParameterId["LevelCaptions"] = "levelCaptions"; - // DPI_LevelLeafValues, having type string[] - ParameterId["LevelLeafValues"] = "levelLeafValues"; - // DPI_SubstitutionVariables, having type string[] - ParameterId["SubstitutionVariables"] = "substitutionVariables"; - // DPI_SubstitutionVariableValues, having type string[] - ParameterId["SubstitutionVariableValues"] = "substitutionVariableValues"; - // DPI_HtmlTooltips, having type string[] - ParameterId["HtmlTooltips"] = "htmlTooltips"; - // DPI_InvalidFields, having type string[] - ParameterId["InvalidFields"] = "invalidFields"; - // DPI_NamesOfColumns, having type string[] - ParameterId["NamesOfColumns"] = "namesOfColumns"; - // DPI_NamesOfFields, having type string[] - ParameterId["NamesOfFields"] = "namesOfFields"; - // DPI_ReferencedDatasources, having type string[] - ParameterId["ReferencedDatasources"] = "referencedDataSourceList"; - // DPI_CSSAttrs, having type Dictionary(of string) - ParameterId["CSSAttrs"] = "cssAttrs"; - // DPI_DataSourceMap, having type Dictionary(of string) - ParameterId["DataSourceMap"] = "dataSourceMap"; - // DPI_EventParameters, having type Dictionary(of string) - ParameterId["EventParameters"] = "eventParameters"; - // DPI_ExceptionAttrs, having type Dictionary(of string) - ParameterId["ExceptionAttrs"] = "exceptionAttrs"; - // DPI_InvalidSheetMessage, having type Dictionary(of string) - ParameterId["InvalidSheetMessage"] = "invalidSheetMessages"; - // DPI_MapBoxDefaultStyle, having type Dictionary(of string) - ParameterId["MapBoxDefaultStyle"] = "mapboxDefaultStyles"; - // DPI_PaneFormattings, having type Dictionary(of string) - ParameterId["PaneFormattings"] = "paneFormattings"; - // DPI_SourceNameWithCaption, having type Dictionary(of string) - ParameterId["SourceNameWithCaption"] = "sourceNameWithCaption"; - // DPI_ConnectionColorMap, having type Dictionary(of string) - ParameterId["ConnectionColorMap"] = "connectionColorMap"; - // DPI_TargetNameWithCaption, having type Dictionary(of string) - ParameterId["TargetNameWithCaption"] = "targetNameWithCaption"; - // DPI_ViewIds, having type Dictionary(of string) - ParameterId["ViewIds"] = "viewIds"; - // DPI_AddInSettings, having type Dictionary(of string) - ParameterId["AddInSettings"] = "addInSettings"; - // DPI_DatasourceIcons, having type Dictionary(of string) - ParameterId["DatasourceIcons"] = "datasourceIcons"; - // DPI_FormattedText, having type string - ParameterId["FormattedText"] = "formattedText"; - // DPI_IconTooltip, having type string - ParameterId["IconTooltip"] = "iconTooltip"; - // DPI_Title, having type string - ParameterId["Title"] = "title"; - // DPI_Tooltip, having type string - ParameterId["Tooltip"] = "tooltip"; - // DPI_ZoneText, having type string - ParameterId["ZoneText"] = "zoneText"; - // DPI_AlignmentFlags, having type int - ParameterId["AlignmentFlags"] = "alignmentFlags"; - // DPI_AlphaLevel, having type int - ParameterId["AlphaLevel"] = "alphaLevel"; - // DPI_AnovaDF, having type int - ParameterId["AnovaDF"] = "anovaDf"; - // DPI_AtTheLevelIndex, having type int - ParameterId["AtTheLevelIndex"] = "atTheLevelIndex"; - // DPI_AutomaticDrillIdxInVector, having type int - ParameterId["AutomaticDrillIdxInVector"] = "automaticDrillIdxVector"; - // DPI_AutoSize, having type int - ParameterId["AutoSize"] = "automaticSize"; - // DPI_BaseCoord, having type int - ParameterId["BaseCoord"] = "baseCoord"; - // DPI_CalcEditorCursorPosPostDrop, having type int - ParameterId["CalcEditorCursorPosPostDrop"] = "calcEditorCursorPosPostDrop"; - // DPI_CalcEditorDropPos, having type int - ParameterId["CalcEditorDropPos"] = "calcEditorDropPos"; - // DPI_CalcEditorTextSelectionEndPos, having type int - ParameterId["CalcEditorTextSelectionEndPos"] = "calcEditorTextSelectionEndPos"; - // DPI_CalcEditorTextSelectionStartPos, having type int - ParameterId["CalcEditorTextSelectionStartPos"] = "calcEditorTextSelectionStartPos"; - // DPI_CategoricalBinId, having type int - ParameterId["CategoricalBinId"] = "categoricalBinId"; - // DPI_CategoricalFindControllerId, having type int - ParameterId["CategoricalFindControllerId"] = "categoricalFindControllerId"; - // DPI_ClauseToModifyIndex, having type int - ParameterId["ClauseToModifyIndex"] = "clauseToModifyIndex"; - // DPI_ClientRenderPixelLimit, having type int - ParameterId["ClientRenderPixelLimit"] = "clientRenderPixelLimit"; - // DPI_ColCount, having type int - ParameterId["ColCount"] = "colCount"; - // DPI_ColWidth, having type int - ParameterId["ColWidth"] = "colWidth"; - // DPI_ColumnLevels, having type int - ParameterId["ColumnLevels"] = "columnLevels"; - // DPI_ColumnNumber, having type int - ParameterId["ColumnNumber"] = "columnNumber"; - // DPI_ColumnWidth, having type int - ParameterId["ColumnWidth"] = "columnWidth"; - // DPI_ContentHeight, having type int - ParameterId["ContentHeight"] = "contentH"; - // DPI_ContentWidth, having type int - ParameterId["ContentWidth"] = "contentW"; - // DPI_ContentX, having type int - ParameterId["ContentX"] = "contentX"; - // DPI_ContentY, having type int - ParameterId["ContentY"] = "contentY"; - // DPI_CurDateAgg, having type int - ParameterId["CurDateAgg"] = "curDateAgg"; - // DPI_CurrentCustViewId, having type int - ParameterId["CurrentCustViewId"] = "currentCustomViewId"; - // DPI_CustomSplitCharacterCountSeparator, having type int - ParameterId["CustomSplitCharacterCountSeparator"] = "customSplitCharacterCountSeparator"; - // DPI_CustomSplitDesiredSplitCount, having type int - ParameterId["CustomSplitDesiredSplitCount"] = "customSplitDesiredSplitCount"; - // DPI_DashboardGridSize, having type int - ParameterId["DashboardGridSize"] = "dashboardGridSize"; - // DPI_DataIndex, having type int - ParameterId["DataIndex"] = "dataIndex"; - // DPI_DecimalPlaces, having type int - ParameterId["DecimalPlaces"] = "decimalPlaces"; - // DPI_DeltaTime, having type int - ParameterId["DeltaTime"] = "deltaTime"; - // DPI_DestPix, having type int - ParameterId["DestPix"] = "destPix"; - // DPI_DeviceIndex, having type int - ParameterId["DeviceIndex"] = "deviceIndex"; - // DPI_Duration, having type int - ParameterId["Duration"] = "duration"; - // DPI_EndPtX, having type int - ParameterId["EndPtX"] = "endX"; - // DPI_EndPtY, having type int - ParameterId["EndPtY"] = "endY"; - // DPI_ErrorLen, having type int - ParameterId["ErrorLen"] = "lengthOfCalcOfError"; - // DPI_ErrorPos, having type int - ParameterId["ErrorPos"] = "startPositionForError"; - // DPI_ExceptionErrorMessageId, having type int - ParameterId["ExceptionErrorMessageId"] = "exceptionErrorMessageId"; - // DPI_ExtentsH, having type int - ParameterId["ExtentsH"] = "extentsHeight"; - // DPI_ExtentsW, having type int - ParameterId["ExtentsW"] = "extentsWidth"; - // DPI_ExtentsX, having type int - ParameterId["ExtentsX"] = "extentsX"; - // DPI_ExtentsY, having type int - ParameterId["ExtentsY"] = "extentsY"; - // DPI_FieldIndex, having type int - ParameterId["FieldIndex"] = "fieldIndex"; - // DPI_FieldNameId, having type int - ParameterId["FieldNameId"] = "fieldNameId"; - // DPI_FirstDayOfWeek, having type int - ParameterId["FirstDayOfWeek"] = "firstDayOfWeek"; - // DPI_FirstValueIndex, having type int - ParameterId["FirstValueIndex"] = "firstValueIndex"; - // DPI_FixedSizePresetIndex, having type int - ParameterId["FixedSizePresetIndex"] = "fixedSizePresetIndex"; - // DPI_FocusItemIndex, having type int - ParameterId["FocusItemIndex"] = "focusItemIndex"; - // DPI_FontSize, having type int - ParameterId["FontSize"] = "fontSize"; - // DPI_ForecastIntRangeEnd, having type int - ParameterId["ForecastIntRangeEnd"] = "forecastIntRangeEnd"; - // DPI_ForecastIntRangeStart, having type int - ParameterId["ForecastIntRangeStart"] = "forecastIntRangeStart"; - // DPI_FunctionHelpIndex, having type int - ParameterId["FunctionHelpIndex"] = "functionHelpIndex"; - // DPI_GeographicSearchMaxResults, having type int - ParameterId["GeographicSearchMaxResults"] = "geographicSearchMaxResults"; - // DPI_Height, having type int - ParameterId["Height"] = "h"; - // DPI_HierarchyLevel, having type int - ParameterId["HierarchyLevel"] = "hierarchyLevel"; - // DPI_HierarchyLevelLoaded, having type int - ParameterId["HierarchyLevelLoaded"] = "hierarchyLevelLoaded"; - // DPI_HierarchyLevelMinimum, having type int - ParameterId["HierarchyLevelMinimum"] = "hierarchyLevelMinimum"; - // DPI_HierarchyLoadLimit, having type int - ParameterId["HierarchyLoadLimit"] = "hierarchyLoadLimit"; - // DPI_HierarchySelectControllerId, having type int - ParameterId["HierarchySelectControllerId"] = "hierarchySelectControllerId"; - // DPI_HorzTextCell, having type int - ParameterId["HorzTextCell"] = "horzTextCell"; - // DPI_ImageIndex, having type int - ParameterId["ImageIndex"] = "imageIndex"; - // DPI_ImageSizeLimit, having type int - ParameterId["ImageSizeLimit"] = "imageSizeLimit"; - // DPI_TransparentLineMarksLimit, having type int - ParameterId["TransparentLineMarksLimit"] = "transparentLineMarksLimit"; - // DPI_Indent, having type int - ParameterId["Indent"] = "indent"; - // DPI_Index, having type int - ParameterId["Index"] = "idx"; - // DPI_IndexFrom, having type int - ParameterId["IndexFrom"] = "indexFrom"; - // DPI_IndexOffset, having type int - ParameterId["IndexOffset"] = "indexOffset"; - // DPI_IndexTo, having type int - ParameterId["IndexTo"] = "indexTo"; - // DPI_InlineConnectionRenameRow, having type int - ParameterId["InlineConnectionRenameRow"] = "inlineConnectionRenameRow"; - // DPI_InsertPos, having type int - ParameterId["InsertPos"] = "insertPos"; - // DPI_IsHasDataSupported, having type int - ParameterId["IsHasDataSupported"] = "isHasDataSupported"; - // DPI_LeftMargin, having type int - ParameterId["LeftMargin"] = "leftMargin"; - // DPI_LeftRightBorderWidth, having type int - ParameterId["LeftRightBorderWidth"] = "leftRightBorderWidth"; - // DPI_LowerBound, having type int - ParameterId["LowerBound"] = "lowerBound"; - // DPI_MapRequestPixels, having type int - ParameterId["MapRequestPixels"] = "mapRequestPixels"; - // DPI_MapScaleFontSizePixels, having type int - ParameterId["MapScaleFontSizePixels"] = "mapScaleFontSizePixels"; - // DPI_MapScaleReadoutNumber, having type int - ParameterId["MapScaleReadoutNumber"] = "mapScaleReadoutNumber"; - // DPI_MapScaleWidth, having type int - ParameterId["MapScaleWidth"] = "mapScaleWidth"; - // DPI_MapTileSize, having type int - ParameterId["MapTileSize"] = "mapTileSize"; - // DPI_Margin, having type int - ParameterId["Margin"] = "margin"; - // DPI_MarginBottom, having type int - ParameterId["MarginBottom"] = "marginBottom"; - // DPI_MarginLeft, having type int - ParameterId["MarginLeft"] = "marginLeft"; - // DPI_MarginRight, having type int - ParameterId["MarginRight"] = "marginRight"; - // DPI_MarginTop, having type int - ParameterId["MarginTop"] = "marginTop"; - // DPI_MaxCell, having type int - ParameterId["MaxCell"] = "maxCell"; - // DPI_MaxItemSpan, having type int - ParameterId["MaxItemSpan"] = "maxItemSpan"; - // DPI_MaxPolynomialDegree, having type int - ParameterId["MaxPolynomialDegree"] = "maxDegree"; - // DPI_MaxPosition, having type int - ParameterId["MaxPosition"] = "maxPosition"; - // DPI_MaxSize, having type int - ParameterId["MaxSize"] = "maxSize"; - // DPI_MinCell, having type int - ParameterId["MinCell"] = "minCell"; - // DPI_MinPolynomialDegree, having type int - ParameterId["MinPolynomialDegree"] = "minDegree"; - // DPI_MinPosition, having type int - ParameterId["MinPosition"] = "minPosition"; - // DPI_MinSize, having type int - ParameterId["MinSize"] = "minSize"; - // DPI_ModelDF, having type int - ParameterId["ModelDF"] = "modelDf"; - // DPI_NewIndex, having type int - ParameterId["NewIndex"] = "newIndex"; - // DPI_NumDataSourcesUsingServer, having type int - ParameterId["NumDataSourcesUsingServer"] = "numDataSourcesUsingServer"; - // DPI_NumFilteredObs, having type int - ParameterId["NumFilteredObs"] = "filteredObservations"; - // DPI_NumModeledObs, having type int - ParameterId["NumModeledObs"] = "modeledObservations"; - // DPI_NumNotClustered, having type int - ParameterId["NumNotClustered"] = "numNotClustered"; - // DPI_NumNumericFields, having type int - ParameterId["NumNumericFields"] = "numNumericFields"; - // DPI_NumOutliers, having type int - ParameterId["NumOutliers"] = "numOutliers"; - // DPI_NumRows, having type int - ParameterId["NumRows"] = "numRows"; - // DPI_NumSelected, having type int - ParameterId["NumSelected"] = "numSelected"; - // DPI_OffsetX, having type int - ParameterId["OffsetX"] = "offsetX"; - // DPI_OffsetY, having type int - ParameterId["OffsetY"] = "offsetY"; - // DPI_Padding, having type int - ParameterId["Padding"] = "padding"; - // DPI_PaddingBottom, having type int - ParameterId["PaddingBottom"] = "paddingBottom"; - // DPI_PaddingLeft, having type int - ParameterId["PaddingLeft"] = "paddingLeft"; - // DPI_PaddingRight, having type int - ParameterId["PaddingRight"] = "paddingRight"; - // DPI_PaddingTop, having type int - ParameterId["PaddingTop"] = "paddingTop"; - // DPI_PageLoadPercentage, having type int - ParameterId["PageLoadPercentage"] = "pageLoadPercentage"; - // DPI_PaletteIndex, having type int - ParameterId["PaletteIndex"] = "paletteIndex"; - // DPI_PaneSpecificationId, having type int - ParameterId["PaneSpecificationId"] = "paneSpec"; - // DPI_ParameterCtrlIncrementsPerTick, having type int - ParameterId["ParameterCtrlIncrementsPerTick"] = "parameterControlIncrementMultiplier"; - // DPI_PolynomialDegree, having type int - ParameterId["PolynomialDegree"] = "degree"; - // DPI_Port, having type int - ParameterId["Port"] = "datasourcePort"; - // DPI_Position, having type int - ParameterId["Position"] = "position"; - // DPI_ParentProjectId, having type int - ParameterId["ParentProjectId"] = "parentProjectId"; - // DPI_PublishResultStringId, having type int - ParameterId["PublishResultStringId"] = "publishResultStringId"; - // DPI_Radius, having type int - ParameterId["Radius"] = "radius"; - // DPI_ReadoutOffset, having type int - ParameterId["ReadoutOffset"] = "readoutOffset"; - // DPI_ReferenceIndex, having type int - ParameterId["ReferenceIndex"] = "referenceIndex"; - // DPI_RegionHeight, having type int - ParameterId["RegionHeight"] = "regionHeight"; - // DPI_RegionWidth, having type int - ParameterId["RegionWidth"] = "regionWidth"; - // DPI_RemovedDatasourceCount, having type int - ParameterId["RemovedDatasourceCount"] = "removedDatasourceCount"; - // DPI_RemovedSheetCount, having type int - ParameterId["RemovedSheetCount"] = "removedSheetCount"; - // DPI_ResidualDF, having type int - ParameterId["ResidualDF"] = "residualDf"; - // DPI_ResizeColumn, having type int - ParameterId["ResizeColumn"] = "resizeColumn"; - // DPI_RestartEveryIndex, having type int - ParameterId["RestartEveryIndex"] = "restartEveryIndex"; - // DPI_RightMargin, having type int - ParameterId["RightMargin"] = "rightMargin"; - // DPI_RowCount, having type int - ParameterId["RowCount"] = "rowCount"; - // DPI_RowHeight, having type int - ParameterId["RowHeight"] = "rowHeight"; - // DPI_RowInnerLevels, having type int - ParameterId["RowInnerLevels"] = "rowInnerLevels"; - // DPI_RowLevels, having type int - ParameterId["RowLevels"] = "rowLevels"; - // DPI_RowNumber, having type int - ParameterId["RowNumber"] = "rowNumber"; - // DPI_RowWidth, having type int - ParameterId["RowWidth"] = "rowWidth"; - // DPI_SecondValueIndex, having type int - ParameterId["SecondValueIndex"] = "secondValueIndex"; - // DPI_SecondsAgo, having type int - ParameterId["SecondsAgo"] = "secondsAgo"; - // DPI_SelectionEnd, having type int - ParameterId["SelectionEnd"] = "selectionEnd"; - // DPI_SelectionStart, having type int - ParameterId["SelectionStart"] = "selectionStart"; - // DPI_ShapePaletteID, having type int - ParameterId["ShapePaletteID"] = "shapePaletteId"; - // DPI_SheetIndex, having type int - ParameterId["SheetIndex"] = "sheetIndex"; - // DPI_ShelfPositionIndex, having type int - ParameterId["ShelfPositionIndex"] = "shelfPosIndex"; - // DPI_Size, having type int - ParameterId["Size"] = "size"; - // DPI_SizeDifference, having type int - ParameterId["SizeDifference"] = "sizeDelta"; - // DPI_SnapDistance, having type int - ParameterId["SnapDistance"] = "snapDistance"; - // DPI_SnapLocation, having type int - ParameterId["SnapLocation"] = "snapLocation"; - // DPI_SolveOrder, having type int - ParameterId["SolveOrder"] = "solveOrder"; - // DPI_SpaceBetweenPoints, having type int - ParameterId["SpaceBetweenPoints"] = "spaceBetweenPoints"; - // DPI_StepSize, having type int - ParameterId["StepSize"] = "stepSize"; - // DPI_Steps, having type int - ParameterId["Steps"] = "steps"; - // DPI_StoryPointIndex, having type int - ParameterId["StoryPointIndex"] = "currentStorypointIndex"; - // DPI_StyleLen, having type int - ParameterId["StyleLen"] = "tokenLengthForStyle"; - // DPI_StylePos, having type int - ParameterId["StylePos"] = "tokenPositionForStyle"; - // DPI_SwatchAreaWidth, having type int - ParameterId["SwatchAreaWidth"] = "swatchWidth"; - // DPI_TargetBinId, having type int - ParameterId["TargetBinId"] = "targetBinId"; - // DPI_TargetPtX, having type int - ParameterId["TargetPtX"] = "targetX"; - // DPI_TargetPtY, having type int - ParameterId["TargetPtY"] = "targetY"; - // DPI_TileFactor, having type int - ParameterId["TileFactor"] = "tileFactor"; - // DPI_TitleHeight, having type int - ParameterId["TitleHeight"] = "titleHeight"; - // DPI_TitleWidth, having type int - ParameterId["TitleWidth"] = "titleWidth"; - // DPI_TopBottomBorderWidth, having type int - ParameterId["TopBottomBorderWidth"] = "topBottomBorderWidth"; - // DPI_UIAutomationLineSize, having type int - ParameterId["UIAutomationLineSize"] = "uiAutomationLineSize"; - // DPI_UIAutomationPageSize, having type int - ParameterId["UIAutomationPageSize"] = "uiAutomationPageSize"; - // DPI_UID, having type int - ParameterId["UID"] = "uid"; - // DPI_UpperBound, having type int - ParameterId["UpperBound"] = "upperBound"; - // DPI_VertTextCell, having type int - ParameterId["VertTextCell"] = "vertTextCell"; - // DPI_Width, having type int - ParameterId["Width"] = "w"; - // DPI_X, having type int - ParameterId["X"] = "x"; - // DPI_Y, having type int - ParameterId["Y"] = "y"; - // DPI_ZOrder, having type int - ParameterId["ZOrder"] = "zOrder"; - // DPI_ZoneIconIndex, having type int - ParameterId["ZoneIconIndex"] = "zoneIconIndex"; - // DPI_AliasIndices, having type int[] - ParameterId["AliasIndices"] = "aliasIndices"; - // DPI_AnovaDFVec, having type int[] - ParameterId["AnovaDFVec"] = "anovaDfVector"; - // DPI_ColumnIndices, having type int[] - ParameterId["ColumnIndices"] = "columnIndices"; - // DPI_DrillFieldIndices, having type int[] - ParameterId["DrillFieldIndices"] = "drillFieldIndices"; - // DPI_FilterMaxIndices, having type int[] - ParameterId["FilterMaxIndices"] = "filterMaxIndices"; - // DPI_FilterMinIndices, having type int[] - ParameterId["FilterMinIndices"] = "filterMinIndices"; - // DPI_FilterValuesIndices, having type int[] - ParameterId["FilterValuesIndices"] = "filterValueIndices"; - // DPI_FormatStringIndices, having type int[] - ParameterId["FormatStringIndices"] = "formatstrIndices"; - // DPI_FormattedValIndices, having type int[] - ParameterId["FormattedValIndices"] = "formatValIdxs"; - // DPI_PaletteIndices, having type int[] - ParameterId["PaletteIndices"] = "palettesIndices"; - // DPI_PaneIndices, having type int[] - ParameterId["PaneIndices"] = "paneIndices"; - // DPI_Points, having type int[] - ParameterId["Points"] = "points"; - // DPI_QuickFilterSettings, having type int[] - ParameterId["QuickFilterSettings"] = "quickFilterSettings"; - // DPI_SelectedIndices, having type int[] - ParameterId["SelectedIndices"] = "selectedIndices"; - // DPI_ShelfPositionIndices, having type int[] - ParameterId["ShelfPositionIndices"] = "shelfPosIndices"; - // DPI_TileBox, having type int[] - ParameterId["TileBox"] = "tileBox"; - // DPI_TrailOverride, having type int[] - ParameterId["TrailOverride"] = "trailOverride"; - // DPI_UIDs, having type int[] - ParameterId["UIDs"] = "uids"; - // DPI_ValueIndices, having type int[] - ParameterId["ValueIndices"] = "valueIndices"; - // DPI_XCellOffsets, having type int[] - ParameterId["XCellOffsets"] = "xCellOffsets"; - // DPI_XPixelOffsets, having type int[] - ParameterId["XPixelOffsets"] = "xPixelOffsets"; - // DPI_YCellOffsets, having type int[] - ParameterId["YCellOffsets"] = "yCellOffsets"; - // DPI_YPixelOffsets, having type int[] - ParameterId["YPixelOffsets"] = "yPixelOffsets"; - // DPI_IntMap, having type Dictionary(of int) - ParameterId["IntMap"] = "intMap"; - // DPI_SelectedAuthSettingIndices, having type Dictionary(of int) - ParameterId["SelectedAuthSettingIndices"] = "selectedAuthSettingIndices"; - // DPI_ActiveStoryPointID, having type uint - ParameterId["ActiveStoryPointID"] = "activeStoryPointId"; - // DPI_ActiveZoneID, having type uint - ParameterId["ActiveZoneID"] = "activeZoneId"; - // DPI_ActualSize, having type uint - ParameterId["ActualSize"] = "actualSize"; - // DPI_AddInDebugPort, having type uint - ParameterId["AddInDebugPort"] = "addInDebugPort"; - // DPI_AggregationIndex, having type uint - ParameterId["AggregationIndex"] = "aggregationIndex"; - // DPI_AnnotationID, having type uint - ParameterId["AnnotationID"] = "annotationId"; - // DPI_AssignedAliasCount, having type uint - ParameterId["AssignedAliasCount"] = "assignedAliasCount"; - // DPI_CapabilityId, having type uint - ParameterId["CapabilityId"] = "capabilityId"; - // DPI_CaretIndex, having type uint - ParameterId["CaretIndex"] = "caretIndex"; - // DPI_CellID, having type uint - ParameterId["CellID"] = "cellId"; - // DPI_ColumnIndex, having type uint - ParameterId["ColumnIndex"] = "columnIndex"; - // DPI_CommandID, having type uint - ParameterId["CommandID"] = "id"; - // DPI_CommandIndex, having type uint - ParameterId["CommandIndex"] = "index"; - // DPI_ControllerId, having type uint - ParameterId["ControllerId"] = "controllerId"; - // DPI_Count, having type uint - ParameterId["Count"] = "count"; - // DPI_URowCount, having type uint - ParameterId["URowCount"] = "uRowCount"; - // DPI_UColumnCount, having type uint - ParameterId["UColumnCount"] = "uColumnCount"; - // DPI_CurrentPage, having type uint - ParameterId["CurrentPage"] = "currentPage"; - // DPI_DatePeriodsCount, having type uint - ParameterId["DatePeriodsCount"] = "datePeriodsCount"; - // DPI_Decimals, having type uint - ParameterId["Decimals"] = "decimals"; - // DPI_DefaultHeight, having type uint - ParameterId["DefaultHeight"] = "defaultHeight"; - // DPI_DefaultItem, having type uint - ParameterId["DefaultItem"] = "defaultItem"; - // DPI_DefaultWidth, having type uint - ParameterId["DefaultWidth"] = "defaultWidth"; - // DPI_Depth, having type uint - ParameterId["Depth"] = "depth"; - // DPI_DetailID, having type uint - ParameterId["DetailID"] = "detailId"; - // DPI_DrillLevel, having type uint - ParameterId["DrillLevel"] = "drillLevel"; - // DPI_DuplicateIndex, having type uint - ParameterId["DuplicateIndex"] = "duplicateIndex"; - // DPI_EndIndex, having type uint - ParameterId["EndIndex"] = "endIndex"; - // DPI_FieldIconIdx, having type uint - ParameterId["FieldIconIdx"] = "fieldIconIdx"; - // DPI_FilterLevel, having type uint - ParameterId["FilterLevel"] = "filterLevel"; - // DPI_FilterTileSize, having type uint - ParameterId["FilterTileSize"] = "filterTileSize"; - // DPI_FiscalYearStart, having type uint - ParameterId["FiscalYearStart"] = "fiscalYearStart"; - // DPI_FitPagesAcross, having type uint - ParameterId["FitPagesAcross"] = "pageFitHorizontal"; - // DPI_FitPagesDown, having type uint - ParameterId["FitPagesDown"] = "pageFitVertical"; - // DPI_FixedIndex, having type uint - ParameterId["FixedIndex"] = "fixedIndex"; - // DPI_FlipboardZoneID, having type uint - ParameterId["FlipboardZoneID"] = "flipboardZoneId"; - // DPI_ForecastAutoRangeSize, having type uint - ParameterId["ForecastAutoRangeSize"] = "forecastAutoRangeSize"; - // DPI_ForecastEndOfRange, having type uint - ParameterId["ForecastEndOfRange"] = "forecastEndOfRange"; - // DPI_ForecastIgnoreLast, having type uint - ParameterId["ForecastIgnoreLast"] = "forecastIgnoreLast"; - // DPI_ForecastNextRangeSize, having type uint - ParameterId["ForecastNextRangeSize"] = "forecastNextRangeSize"; - // DPI_GroupFlags, having type uint - ParameterId["GroupFlags"] = "groupFlag"; - // DPI_HierarchyLevels, having type uint - ParameterId["HierarchyLevels"] = "hierarchyLevels"; - // DPI_HierarchyMemberId, having type uint - ParameterId["HierarchyMemberId"] = "hierarchyMemberId"; - // DPI_HitTestFlags, having type uint - ParameterId["HitTestFlags"] = "hitTestFlags"; - // DPI_ImageHeight, having type uint - ParameterId["ImageHeight"] = "imageHeight"; - // DPI_ImageWidth, having type uint - ParameterId["ImageWidth"] = "imageWidth"; - // DPI_ItemIndex, having type uint - ParameterId["ItemIndex"] = "itemIndex"; - // DPI_ItemIndex1, having type uint - ParameterId["ItemIndex1"] = "itemIndex1"; - // DPI_LineHeight, having type uint - ParameterId["LineHeight"] = "lineHeight"; - // DPI_MapIntermediateLevels, having type uint - ParameterId["MapIntermediateLevels"] = "mapIntermediateLevels"; - // DPI_MapWorldRepeats, having type uint - ParameterId["MapWorldRepeats"] = "mapWorldRepeats"; - // DPI_MaxAlpha, having type uint - ParameterId["MaxAlpha"] = "maxAlpha"; - // DPI_MaxHeight, having type uint - ParameterId["MaxHeight"] = "maxHeight"; - // DPI_MaxNumberWebListItems, having type uint - ParameterId["MaxNumberWebListItems"] = "maxNumberWebListItems"; - // DPI_MaxPrevOrNextValues, having type uint - ParameterId["MaxPrevOrNextValues"] = "maxPrevOrNextValues"; - // DPI_MaxRows, having type uint - ParameterId["MaxRows"] = "maxRows"; - // DPI_MaxTransparency, having type uint - ParameterId["MaxTransparency"] = "colorMaxTransparencyValue"; - // DPI_MaxWidth, having type uint - ParameterId["MaxWidth"] = "maxWidth"; - // DPI_MinColumns, having type uint - ParameterId["MinColumns"] = "minColumns"; - // DPI_MinHeight, having type uint - ParameterId["MinHeight"] = "minHeight"; - // DPI_MinPrevOrNextValues, having type uint - ParameterId["MinPrevOrNextValues"] = "minPrevOrNextValues"; - // DPI_MinTransparency, having type uint - ParameterId["MinTransparency"] = "colorMinTransparencyValue"; - // DPI_MinWidth, having type uint - ParameterId["MinWidth"] = "minWidth"; - // DPI_NestedCalcsIndex, having type uint - ParameterId["NestedCalcsIndex"] = "nestedCalcsIndex"; - // DPI_NextValues, having type uint - ParameterId["NextValues"] = "nextValues"; - // DPI_NodeLevel, having type uint - ParameterId["NodeLevel"] = "nodeLevel"; - // DPI_NumHighlighted, having type uint - ParameterId["NumHighlighted"] = "numHighlighted"; - // DPI_NumberOfNextValues, having type uint - ParameterId["NumberOfNextValues"] = "numberOfNextValues"; - // DPI_NumberOfPrevValues, having type uint - ParameterId["NumberOfPrevValues"] = "numberOfPrevValues"; - // DPI_ObjectID, having type uint - ParameterId["ObjectID"] = "objectId"; - // DPI_OrderingTypeIndex, having type uint - ParameterId["OrderingTypeIndex"] = "orderingTypeIndex"; - // DPI_PageCount, having type uint - ParameterId["PageCount"] = "pageCount"; - // DPI_PageFadeEnd, having type uint - ParameterId["PageFadeEnd"] = "fadeEnd"; - // DPI_PageFadeStart, having type uint - ParameterId["PageFadeStart"] = "fadeStart"; - // DPI_PageIndex, having type uint - ParameterId["PageIndex"] = "pageIndex"; - // DPI_PageNumber, having type uint - ParameterId["PageNumber"] = "pageNumber"; - // DPI_PageScalePercent, having type uint - ParameterId["PageScalePercent"] = "pageScalePercent"; - // DPI_PageTrailLength, having type uint - ParameterId["PageTrailLength"] = "historyLength"; - // DPI_PaletteFlagsVal, having type uint - ParameterId["PaletteFlagsVal"] = "paletteFlagsVal"; - // DPI_PaneIndex, having type uint - ParameterId["PaneIndex"] = "paneIndex"; - // DPI_ParamCtrlDisplayFlags, having type uint - ParameterId["ParamCtrlDisplayFlags"] = "paramDisplayFlags"; - // DPI_ParentZoneID, having type uint - ParameterId["ParentZoneID"] = "parentZoneId"; - // DPI_PercentileParam, having type uint - ParameterId["PercentileParam"] = "percentileParam"; - // DPI_PrevValues, having type uint - ParameterId["PrevValues"] = "prevValues"; - // DPI_QRGBColor, having type uint - ParameterId["QRGBColor"] = "qrgbColor"; - // DPI_RangeN, having type uint - ParameterId["RangeN"] = "rangeN"; - // DPI_RankTypeIndex, having type uint - ParameterId["RankTypeIndex"] = "rankTypeIndex"; - // DPI_RenderComplexity, having type uint - ParameterId["RenderComplexity"] = "renderComplexityLimit"; - // DPI_RowIndex, having type uint - ParameterId["RowIndex"] = "rowIndex"; - // DPI_SelectedAuthSettingIndex, having type uint - ParameterId["SelectedAuthSettingIndex"] = "selectedAuthSettingIndex"; - // DPI_SelectedFullScheduleIndex, having type uint - ParameterId["SelectedFullScheduleIndex"] = "selectedFullScheduleIndex"; - // DPI_SelectedIncrScheduleIndex, having type uint - ParameterId["SelectedIncrScheduleIndex"] = "selectedIncrScheduleIndex"; - // DPI_SelectedPublishChoiceIndex, having type uint - ParameterId["SelectedPublishChoiceIndex"] = "selectedPublishChoiceIndex"; - // DPI_SelectedMemberCount, having type uint - ParameterId["SelectedMemberCount"] = "selectedMemberCount"; - // DPI_ShapeID, having type uint - ParameterId["ShapeID"] = "shapeId"; - // DPI_SheetUseCount, having type uint - ParameterId["SheetUseCount"] = "useCount"; - // DPI_ShelfItemID, having type uint - ParameterId["ShelfItemID"] = "shelfItemId"; - // DPI_SigFigs, having type uint - ParameterId["SigFigs"] = "sigFigs"; - // DPI_SortAggIndex, having type uint - ParameterId["SortAggIndex"] = "sortAggIndvValues"; - // DPI_SortColumnIndex, having type uint - ParameterId["SortColumnIndex"] = "sortColumnIndex"; - // DPI_SortDirectionIndex, having type uint - ParameterId["SortDirectionIndex"] = "sortDirectionIndex"; - // DPI_SortFieldIndex, having type uint - ParameterId["SortFieldIndex"] = "sortFieldIndex"; - // DPI_StartIndex, having type uint - ParameterId["StartIndex"] = "startIndex"; - // DPI_StartOfWeek, having type uint - ParameterId["StartOfWeek"] = "startOfWeek"; - // DPI_StoryPointID, having type uint - ParameterId["StoryPointID"] = "storyPointId"; - // DPI_TableCalcTypeIndex, having type uint - ParameterId["TableCalcTypeIndex"] = "tableCalcTypeIndex"; - // DPI_TableCalcTypesUsed, having type uint - ParameterId["TableCalcTypesUsed"] = "tableCalcTypesUsed"; - // DPI_TemplateIndex, having type uint - ParameterId["TemplateIndex"] = "templateIndex"; - // DPI_TileCount, having type uint - ParameterId["TileCount"] = "tileCount"; - // DPI_TimeoutSeconds, having type uint - ParameterId["TimeoutSeconds"] = "timeoutSeconds"; - // DPI_TopN, having type uint - ParameterId["TopN"] = "topN"; - // DPI_TotalNumberOfItemsInSet, having type uint - ParameterId["TotalNumberOfItemsInSet"] = "totalNumberOfItemsInSet"; - // DPI_TotalMemberCount, having type uint - ParameterId["TotalMemberCount"] = "totalMemberCount"; - // DPI_Transparency, having type uint - ParameterId["Transparency"] = "colorTransparencyValue"; - // DPI_TupleID, having type uint - ParameterId["TupleID"] = "tupleId"; - // DPI_UIndex, having type uint - ParameterId["UIndex"] = "uindex"; - // DPI_UndoPosition, having type uint - ParameterId["UndoPosition"] = "undoPosition"; - // DPI_UnsignedWidth, having type uint - ParameterId["UnsignedWidth"] = "uw"; - // DPI_UnsignedWidthBottom, having type uint - ParameterId["UnsignedWidthBottom"] = "uwb"; - // DPI_UnsignedWidthLeft, having type uint - ParameterId["UnsignedWidthLeft"] = "uwl"; - // DPI_UnsignedWidthRight, having type uint - ParameterId["UnsignedWidthRight"] = "uwr"; - // DPI_UnsignedWidthTop, having type uint - ParameterId["UnsignedWidthTop"] = "uwt"; - // DPI_ValueIndex, having type uint - ParameterId["ValueIndex"] = "valueIndex"; - // DPI_ValueInt, having type uint - ParameterId["ValueInt"] = "valueInt"; - // DPI_WorldOffset, having type uint - ParameterId["WorldOffset"] = "worldOffset"; - // DPI_XDuplicateIndex, having type uint - ParameterId["XDuplicateIndex"] = "xDuplicateIndex"; - // DPI_XIndex, having type uint - ParameterId["XIndex"] = "xIndex"; - // DPI_YDuplicateIndex, having type uint - ParameterId["YDuplicateIndex"] = "yDuplicateIndex"; - // DPI_YIndex, having type uint - ParameterId["YIndex"] = "yIndex"; - // DPI_ZoneID, having type uint - ParameterId["ZoneID"] = "zoneId"; - // DPI_ZoneZOrder, having type uint - ParameterId["ZoneZOrder"] = "zoneZOrder"; - // DPI_ComponentID, having type uint - ParameterId["ComponentID"] = "componentId"; - // DPI_NonThreadPoolUseCount, having type uint - ParameterId["NonThreadPoolUseCount"] = "nonThreadPoolUseCount"; - // DPI_AddressingIndices, having type uint[] - ParameterId["AddressingIndices"] = "addressingIndices"; - // DPI_AddressingInvalidIndices, having type uint[] - ParameterId["AddressingInvalidIndices"] = "addressingInvalidIndices"; - // DPI_ChildZoneIds, having type uint[] - ParameterId["ChildZoneIds"] = "childZoneIds"; - // DPI_ColorList, having type uint[] - ParameterId["ColorList"] = "colorList"; - // DPI_DuplicateIndices, having type uint[] - ParameterId["DuplicateIndices"] = "duplicateIndices"; - // DPI_FilterAddIndices, having type uint[] - ParameterId["FilterAddIndices"] = "filterAddIndices"; - // DPI_FilterIndices, having type uint[] - ParameterId["FilterIndices"] = "filterIndices"; - // DPI_FilterLevelAdd, having type uint[] - ParameterId["FilterLevelAdd"] = "filterLevelAdd"; - // DPI_FilterLevelRemove, having type uint[] - ParameterId["FilterLevelRemove"] = "filterLevelRemove"; - // DPI_FilterLevels, having type uint[] - ParameterId["FilterLevels"] = "filterLevels"; - // DPI_FilterRemoveIndices, having type uint[] - ParameterId["FilterRemoveIndices"] = "filterRemoveIndices"; - // DPI_FixedValues, having type uint[] - ParameterId["FixedValues"] = "fixedValues"; - // DPI_HierarchyMemberIdList, having type uint[] - ParameterId["HierarchyMemberIdList"] = "hierarchyMemberIdList"; - // DPI_InvalidIndices, having type uint[] - ParameterId["InvalidIndices"] = "invalidIndices"; - // DPI_ItemIndices, having type uint[] - ParameterId["ItemIndices"] = "itemIndices"; - // DPI_LineTupleIDs, having type uint[] - ParameterId["LineTupleIDs"] = "lineTupleIds"; - // DPI_ObjectIDs, having type uint[] - ParameterId["ObjectIDs"] = "objectIds"; - // DPI_PageIndices, having type uint[] - ParameterId["PageIndices"] = "pageIndices"; - // DPI_QRGB, having type uint[] - ParameterId["QRGB"] = "qrgbList"; - // DPI_QRGBColors, having type uint[] - ParameterId["QRGBColors"] = "qrgbColors"; - // DPI_RefLineID, having type uint[] - ParameterId["RefLineID"] = "reflineId"; - // DPI_ShapeIDs, having type uint[] - ParameterId["ShapeIDs"] = "shapeIds"; - // DPI_ShelfSelection, having type uint[] - ParameterId["ShelfSelection"] = "shelfSelection"; - // DPI_StoryPointIDs, having type uint[] - ParameterId["StoryPointIDs"] = "storyPointIds"; - // DPI_TupleIDs, having type uint[] - ParameterId["TupleIDs"] = "tupleIds"; - // DPI_Widths, having type uint[] - ParameterId["Widths"] = "widths"; - // DPI_UintMap, having type Dictionary(of uint32_t) - ParameterId["UintMap"] = "uintMap"; - // DPI_Alpha, having type float - ParameterId["Alpha"] = "alpha"; - // DPI_Angle, having type float - ParameterId["Angle"] = "angle"; - // DPI_AutomaticDrillValueInVector, having type float - ParameterId["AutomaticDrillValueInVector"] = "automaticDrillValueInVector"; - // DPI_DevicePixelRatio, having type float - ParameterId["DevicePixelRatio"] = "devicePixelRatio"; - // DPI_Distance, having type float - ParameterId["Distance"] = "distance"; - // DPI_FloatX, having type float - ParameterId["FloatX"] = "floatX"; - // DPI_FloatY, having type float - ParameterId["FloatY"] = "floatY"; - // DPI_FogDesaturation, having type float - ParameterId["FogDesaturation"] = "fogDesaturation"; - // DPI_MarkScale, having type float - ParameterId["MarkScale"] = "markScale"; - // DPI_MarkSizeInPixelUnits, having type float - ParameterId["MarkSizeInPixelUnits"] = "markSizeInPixelUnits"; - // DPI_PointSize, having type float - ParameterId["PointSize"] = "pointSize"; - // DPI_StrokeWidth, having type float - ParameterId["StrokeWidth"] = "strokeWidth"; - // DPI_TextRegionOrientation, having type float - ParameterId["TextRegionOrientation"] = "orientation"; - // DPI_TransformAngle, having type float - ParameterId["TransformAngle"] = "transformAngle"; - // DPI_ZoomLevel, having type float - ParameterId["ZoomLevel"] = "zoomLevel"; - // DPI_OldZoomLevel, having type float - ParameterId["OldZoomLevel"] = "oldZoomLevel"; - // DPI_NewZoomLevel, having type float - ParameterId["NewZoomLevel"] = "newZoomLevel"; - // DPI_AspectRatio, having type float - ParameterId["AspectRatio"] = "aspectRatio"; - // DPI_BottomPrintMargin, having type float - ParameterId["BottomPrintMargin"] = "bottomPrintMargin"; - // DPI_EarthRadius, having type float - ParameterId["EarthRadius"] = "earthRadius"; - // DPI_FloatHeight, having type float - ParameterId["FloatHeight"] = "floatHeight"; - // DPI_FloatLeft, having type float - ParameterId["FloatLeft"] = "floatLeft"; - // DPI_FloatRadius, having type float - ParameterId["FloatRadius"] = "floatRadius"; - // DPI_FloatTop, having type float - ParameterId["FloatTop"] = "floatTop"; - // DPI_FloatWidth, having type float - ParameterId["FloatWidth"] = "floatWidth"; - // DPI_LeftPrintMargin, having type float - ParameterId["LeftPrintMargin"] = "leftPrintMargin"; - // DPI_MapCenterLatitude, having type float - ParameterId["MapCenterLatitude"] = "mapCenterLatitude"; - // DPI_MapCenterLongitude, having type float - ParameterId["MapCenterLongitude"] = "mapCenterLongitude"; - // DPI_MapDisplayScale, having type float - ParameterId["MapDisplayScale"] = "mapDisplayScale"; - // DPI_MapMaxStretch, having type float - ParameterId["MapMaxStretch"] = "mapMaxStretch"; - // DPI_MapMaxZoom, having type float - ParameterId["MapMaxZoom"] = "mapMaxZoom"; - // DPI_MapMinShrink, having type float - ParameterId["MapMinShrink"] = "mapMinShrink"; - // DPI_MapMinZoom, having type float - ParameterId["MapMinZoom"] = "mapMinZoom"; - // DPI_MapRequestZoom, having type float - ParameterId["MapRequestZoom"] = "mapRequestZoom"; - // DPI_MapWashout, having type float - ParameterId["MapWashout"] = "mapWashout"; - // DPI_MaxLatitude, having type float - ParameterId["MaxLatitude"] = "maxLatitude"; - // DPI_MaxLongitude, having type float - ParameterId["MaxLongitude"] = "maxLongitude"; - // DPI_MinLatitude, having type float - ParameterId["MinLatitude"] = "minLatitude"; - // DPI_MinLongitude, having type float - ParameterId["MinLongitude"] = "minLongitude"; - // DPI_RightPrintMargin, having type float - ParameterId["RightPrintMargin"] = "rightPrintMargin"; - // DPI_TopPrintMargin, having type float - ParameterId["TopPrintMargin"] = "topPrintMargin"; - // DPI_UIAutomationMaximum, having type float - ParameterId["UIAutomationMaximum"] = "uiAutomationMaximum"; - // DPI_UIAutomationMinimum, having type float - ParameterId["UIAutomationMinimum"] = "uiAutomationMinimum"; - // DPI_UIAutomationOffset, having type float - ParameterId["UIAutomationOffset"] = "uiAutomationOffset"; - // DPI_UnitDivisor, having type float - ParameterId["UnitDivisor"] = "unitDivisor"; - // DPI_UnitTransition, having type float - ParameterId["UnitTransition"] = "unitTransition"; - // DPI_AutomaticDrillIdx, having type float[] - ParameterId["AutomaticDrillIdx"] = "automaticDrillIdx"; - // DPI_DestinationBox, having type float[] - ParameterId["DestinationBox"] = "destBox"; - // DPI_LowerEnd, having type float[] - ParameterId["LowerEnd"] = "lowerEnd"; - // DPI_OppositeAxis, having type float[] - ParameterId["OppositeAxis"] = "oppositeAxis"; - // DPI_PointsF, having type float[] - ParameterId["PointsF"] = "pointsF"; - // DPI_SourceBox, having type float[] - ParameterId["SourceBox"] = "sourceBox"; - // DPI_TransformOffset, having type float[] - ParameterId["TransformOffset"] = "transformOffset"; - // DPI_TransformScale, having type float[] - ParameterId["TransformScale"] = "transformScale"; - // DPI_UpperEnd, having type float[] - ParameterId["UpperEnd"] = "upperEnd"; - // DPI_FloatMap, having type Dictionary(of float) - ParameterId["FloatMap"] = "floatMap"; - // DPI_BGSS, having type double - ParameterId["BGSS"] = "betweenGroupSumOfSquares"; - // DPI_ConfidenceLevel, having type double - ParameterId["ConfidenceLevel"] = "confidenceLevel"; - // DPI_ConfidencePercentage, having type double - ParameterId["ConfidencePercentage"] = "confidencePercentage"; - // DPI_DoubleLeft, having type double - ParameterId["DoubleLeft"] = "doubleLeft"; - // DPI_DoubleTop, having type double - ParameterId["DoubleTop"] = "doubleTop"; - // DPI_DoubleValue, having type double - ParameterId["DoubleValue"] = "doubleValue"; - // DPI_DoubleX, having type double - ParameterId["DoubleX"] = "doubleX"; - // DPI_DoubleY, having type double - ParameterId["DoubleY"] = "doubleY"; - // DPI_FStatistic, having type double - ParameterId["FStatistic"] = "fStatistic"; - // DPI_FilterRangeMax, having type double - ParameterId["FilterRangeMax"] = "filterRangeMax"; - // DPI_FilterRangeMin, having type double - ParameterId["FilterRangeMin"] = "filterRangeMin"; - // DPI_GeographicSearchCandidateScore, having type double - ParameterId["GeographicSearchCandidateScore"] = "geographicSearchCandidateScore"; - // DPI_HeightD, having type double - ParameterId["HeightD"] = "height"; - // DPI_InflectionFraction, having type double - ParameterId["InflectionFraction"] = "inflectionFraction"; - // DPI_InflectionValue, having type double - ParameterId["InflectionValue"] = "inflectionValue"; - // DPI_MSE, having type double - ParameterId["MSE"] = "meanSquaredError"; - // DPI_MSM, having type double - ParameterId["MSM"] = "meanSquaredModel"; - // DPI_MapScaleMarginOfError, having type double - ParameterId["MapScaleMarginOfError"] = "mapScaleMarginOfError"; - // DPI_MarkSize, having type double - ParameterId["MarkSize"] = "markSize"; - // DPI_MaxMarkSize, having type double - ParameterId["MaxMarkSize"] = "maxMarkSize"; - // DPI_MinMarkSize, having type double - ParameterId["MinMarkSize"] = "minMarkSize"; - // DPI_NotchPosition, having type double - ParameterId["NotchPosition"] = "notchPosition"; - // DPI_NotchValue, having type double - ParameterId["NotchValue"] = "notchValue"; - // DPI_PValue, having type double - ParameterId["PValue"] = "pValue"; - // DPI_PercentDimensions, having type double - ParameterId["PercentDimensions"] = "percentDimensions"; - // DPI_PercentGroups, having type double - ParameterId["PercentGroups"] = "percentGroups"; - // DPI_PercentMeasures, having type double - ParameterId["PercentMeasures"] = "percentMeasures"; - // DPI_RSquared, having type double - ParameterId["RSquared"] = "rSquared"; - // DPI_SSE, having type double - ParameterId["SSE"] = "sumSquaredError"; - // DPI_SSM, having type double - ParameterId["SSM"] = "sumSquaredModel"; - // DPI_StandardError, having type double - ParameterId["StandardError"] = "standardError"; - // DPI_TSS, having type double - ParameterId["TSS"] = "totalSumOfSquares"; - // DPI_WGSS, having type double - ParameterId["WGSS"] = "withinGroupSumOfSquares"; - // DPI_WidthD, having type double - ParameterId["WidthD"] = "width"; - // DPI_ZoomFactor, having type double - ParameterId["ZoomFactor"] = "zoomFactor"; - // DPI_CoefficientPValueVec, having type double[] - ParameterId["CoefficientPValueVec"] = "coefficientPValueVector"; - // DPI_CoefficientStdErrVec, having type double[] - ParameterId["CoefficientStdErrVec"] = "coefficientStdErrorVector"; - // DPI_CoefficientTValueVec, having type double[] - ParameterId["CoefficientTValueVec"] = "coefficientTValueVector"; - // DPI_CoefficientVec, having type double[] - ParameterId["CoefficientVec"] = "coefficientVector"; - // DPI_FStatisticVec, having type double[] - ParameterId["FStatisticVec"] = "trendLineFStatisticVector"; - // DPI_Factors, having type double[] - ParameterId["Factors"] = "factors"; - // DPI_MSEVec, having type double[] - ParameterId["MSEVec"] = "meanSquaredErrorVector"; - // DPI_Means, having type double[] - ParameterId["Means"] = "means"; - // DPI_PValueVec, having type double[] - ParameterId["PValueVec"] = "pValueVector"; - // DPI_Percentages, having type double[] - ParameterId["Percentages"] = "percentages"; - // DPI_Percentiles, having type double[] - ParameterId["Percentiles"] = "percentiles"; - // DPI_SSEVec, having type double[] - ParameterId["SSEVec"] = "sumSquaredErrorVector"; - // DPI_StDevs, having type double[] - ParameterId["StDevs"] = "stdev"; - // DPI_UnscaledMeans, having type double[] - ParameterId["UnscaledMeans"] = "unscaledMeans"; - // DPI_DeltaTimeMs, having type long - ParameterId["DeltaTimeMs"] = "deltaTimeMs"; - // DPI_ExtractHistoryRowCount, having type long - ParameterId["ExtractHistoryRowCount"] = "extractRowCount"; - // DPI_ExtractHistoryRowsRemoved, having type long - ParameterId["ExtractHistoryRowsRemoved"] = "extractRowsRemoved"; - // DPI_ExtractsSize, having type long - ParameterId["ExtractsSize"] = "extractsSize"; - // DPI_OldExtractSize, having type long - ParameterId["OldExtractSize"] = "oldExtractSize"; - // DPI_RowsInserted, having type long - ParameterId["RowsInserted"] = "rowsInserted"; - // DPI_SampleSize, having type long - ParameterId["SampleSize"] = "sampleSize"; - // DPI_SampleSpace, having type long - ParameterId["SampleSpace"] = "sampleSpace"; - // DPI_ThreadPoolUseCount, having type long - ParameterId["ThreadPoolUseCount"] = "threadPoolUseCount"; - // DPI_ActionId, having type string - ParameterId["ActionId"] = "actionId"; - // DPI_AxisColumn, having type string - ParameterId["AxisColumn"] = "axisColumn"; - // DPI_BaseColumnName, having type string - ParameterId["BaseColumnName"] = "baseColumnName"; - // DPI_PairedFieldName, having type string - ParameterId["PairedFieldName"] = "pairedFn"; - // DPI_FieldNameAllowEmpty, having type string - ParameterId["FieldNameAllowEmpty"] = "fieldNameAllowEmpty"; - // DPI_FieldNameDisAgg, having type string - ParameterId["FieldNameDisAgg"] = "fnDisagg"; - // DPI_FieldNameLocal, having type string - ParameterId["FieldNameLocal"] = "fieldNameLocal"; - // DPI_FieldNamePrev, having type string - ParameterId["FieldNamePrev"] = "fnPrev"; - // DPI_FieldNameSource, having type string - ParameterId["FieldNameSource"] = "fnSource"; - // DPI_FieldNameTarget, having type string - ParameterId["FieldNameTarget"] = "fnTarget"; - // DPI_FieldNameX, having type string - ParameterId["FieldNameX"] = "fnX"; - // DPI_FieldNameY, having type string - ParameterId["FieldNameY"] = "fnY"; - // DPI_FieldToSort, having type string - ParameterId["FieldToSort"] = "fieldToSort"; - // DPI_GlobalFieldName, having type string - ParameterId["GlobalFieldName"] = "globalFieldName"; - // DPI_HierarchyName, having type string - ParameterId["HierarchyName"] = "hierarchyName"; - // DPI_InvalidAggFieldName, having type string - ParameterId["InvalidAggFieldName"] = "invalidAggFieldName"; - // DPI_InvalidFieldName, having type string - ParameterId["InvalidFieldName"] = "invalidFieldName"; - // DPI_LimitParameterName, having type string - ParameterId["LimitParameterName"] = "limitParameterName"; - // DPI_LocalBaseColumnName, having type string - ParameterId["LocalBaseColumnName"] = "localBaseColumnName"; - // DPI_MeasureName, having type string - ParameterId["MeasureName"] = "measureName"; - // DPI_NestedCalcField, having type string - ParameterId["NestedCalcField"] = "nestedCalcFn"; - // DPI_ParameterName, having type string - ParameterId["ParameterName"] = "parameterName"; - // DPI_ReferenceParam, having type string - ParameterId["ReferenceParam"] = "referenceParam"; - // DPI_ReplacementFieldName, having type string - ParameterId["ReplacementFieldName"] = "replacementFieldName"; - // DPI_RHSTableAlias, having type string - ParameterId["RHSTableAlias"] = "rhsTableAlias"; - // DPI_SortMeasureName, having type string - ParameterId["SortMeasureName"] = "sortMeasureName"; - // DPI_UniqueName, having type string - ParameterId["UniqueName"] = "uniqueName"; - // DPI_ValueColumn, having type string - ParameterId["ValueColumn"] = "valueColumn"; - // DPI_PairedValueColumn, having type string - ParameterId["PairedValueColumn"] = "pairedValueColumn"; - // DPI_ActionIds, having type string[] - ParameterId["ActionIds"] = "actionIds"; - // DPI_AddressingValues, having type string[] - ParameterId["AddressingValues"] = "addressingValues"; - // DPI_AllColumns, having type string[] - ParameterId["AllColumns"] = "allColumns"; - // DPI_AtTheLevelValues, having type string[] - ParameterId["AtTheLevelValues"] = "atTheLevelValues"; - // DPI_AutomaticDrillFieldName, having type string[] - ParameterId["AutomaticDrillFieldName"] = "automaticDrillFieldName"; - // DPI_BlendingFieldCandidates, having type string[] - ParameterId["BlendingFieldCandidates"] = "blendingFieldCandidates"; - // DPI_Columns, having type string[] - ParameterId["Columns"] = "columns"; - // DPI_CurrentBlendingFields, having type string[] - ParameterId["CurrentBlendingFields"] = "currentBlendingFields"; - // DPI_DimensionsToSort, having type string[] - ParameterId["DimensionsToSort"] = "dimensionsToSort"; - // DPI_DrillFieldVector, having type string[] - ParameterId["DrillFieldVector"] = "drillFieldVector"; - // DPI_EncodingFieldVector, having type string[] - ParameterId["EncodingFieldVector"] = "encodingFieldVector"; - // DPI_FieldVector, having type string[] - ParameterId["FieldVector"] = "fieldVector"; - // DPI_FilterFields, having type string[] - ParameterId["FilterFields"] = "filterFields"; - // DPI_LODFieldVector, having type string[] - ParameterId["LODFieldVector"] = "lodFieldVector"; - // DPI_LegendColumns, having type string[] - ParameterId["LegendColumns"] = "legendColumns"; - // DPI_LegendNames, having type string[] - ParameterId["LegendNames"] = "legendNames"; - // DPI_NodeColumns, having type string[] - ParameterId["NodeColumns"] = "nodeColumns"; - // DPI_PageFields, having type string[] - ParameterId["PageFields"] = "pageFields"; - // DPI_ParamValues, having type string[] - ParameterId["ParamValues"] = "paramValues"; - // DPI_RefLineFields, having type string[] - ParameterId["RefLineFields"] = "reflineFields"; - // DPI_ReferencedColumns, having type string[] - ParameterId["ReferencedColumns"] = "referencedColumns"; - // DPI_RelatedFieldNames, having type string[] - ParameterId["RelatedFieldNames"] = "relatedFieldNames"; - // DPI_RemoveActionResults, having type string[] - ParameterId["RemoveActionResults"] = "removeActionResults"; - // DPI_ResponseVector, having type string[] - ParameterId["ResponseVector"] = "responseVector"; - // DPI_RestartEveryValues, having type string[] - ParameterId["RestartEveryValues"] = "restartEveryValues"; - // DPI_ResultFields, having type string[] - ParameterId["ResultFields"] = "resultFields"; - // DPI_SortFieldValues, having type string[] - ParameterId["SortFieldValues"] = "sortFieldValues"; - // DPI_XFields, having type string[] - ParameterId["XFields"] = "xFields"; - // DPI_YFields, having type string[] - ParameterId["YFields"] = "yFields"; - // DPI_ConnectionFullName, having type string - ParameterId["ConnectionFullName"] = "connectionFullName"; - // DPI_ConnectionFullNames, having type string[] - ParameterId["ConnectionFullNames"] = "connectionFullNames"; - // DPI_BoundDataValue, having type object - ParameterId["BoundDataValue"] = "boundDataValue"; - // DPI_DataValue, having type object - ParameterId["DataValue"] = "dataValue"; - // DPI_DataValueIncrement, having type object - ParameterId["DataValueIncrement"] = "dataValueIncrement"; - // DPI_DataValueLowerX, having type object - ParameterId["DataValueLowerX"] = "dataValueLowerX"; - // DPI_DataValueLowerY, having type object - ParameterId["DataValueLowerY"] = "dataValueLowerY"; - // DPI_DataValueUpperX, having type object - ParameterId["DataValueUpperX"] = "dataValueUpperX"; - // DPI_DataValueUpperY, having type object - ParameterId["DataValueUpperY"] = "dataValueUpperY"; - // DPI_DefaultDataValue, having type object - ParameterId["DefaultDataValue"] = "defaultDataValue"; - // DPI_MaxDataValue, having type object - ParameterId["MaxDataValue"] = "maxDataValue"; - // DPI_MinDataValue, having type object - ParameterId["MinDataValue"] = "minDataValue"; - // DPI_ValidatedDataValue, having type object - ParameterId["ValidatedDataValue"] = "validatedDataValue"; - // DPI_BinSize, having type object - ParameterId["BinSize"] = "binSize"; - // DPI_LimitCount, having type object - ParameterId["LimitCount"] = "limitCount"; - // DPI_DataValueList, having type object[] - ParameterId["DataValueList"] = "dataValueList"; - // DPI_FieldCaptionPair, having type FieldCaptionPairPresModel - ParameterId["FieldCaptionPair"] = "fieldCaptionPair"; - // DPI_FieldCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["FieldCaptionPairs"] = "fieldCaptionPairs"; - // DPI_ParameterCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["ParameterCaptionPairs"] = "parameterCaptionPairs"; - // DPI_VaryingAttributeDimensions, having type FieldCaptionPairPresModel[] - ParameterId["VaryingAttributeDimensions"] = "varyingAttributeDimensions"; - // DPI_FieldCaptionPairState, having type FieldCaptionPairStatePresModel - ParameterId["FieldCaptionPairState"] = "fieldCaptionPairState"; - // DPI_FieldCaptionPairStates, having type FieldCaptionPairStatePresModel[] - ParameterId["FieldCaptionPairStates"] = "fieldCaptionPairStates"; - // DPI_DatasourceCaptionPair, having type DatasourceCaptionPairPresModel - ParameterId["DatasourceCaptionPair"] = "datasourceCaptionPair"; - // DPI_DatasourceCaptionPairs, having type DatasourceCaptionPairPresModel[] - ParameterId["DatasourceCaptionPairs"] = "datasourceCaptionPairs"; - // DPI_SheetNameInfoPair, having type SheetNameInfoPairPresModel - ParameterId["SheetNameInfoPair"] = "sheetNameInfoPair"; - // DPI_SheetNameInfoPairs, having type SheetNameInfoPairPresModel[] - ParameterId["SheetNameInfoPairs"] = "sheetNameInfoPairs"; - // DPI_BGActiveColor, having type string - ParameterId["BGActiveColor"] = "bgActiveColor"; - // DPI_BGColor, having type string - ParameterId["BGColor"] = "bgColor"; - // DPI_BGRestColor, having type string - ParameterId["BGRestColor"] = "bgRestColor"; - // DPI_BorderColor, having type string - ParameterId["BorderColor"] = "borderColor"; - // DPI_BorderColorBottom, having type string - ParameterId["BorderColorBottom"] = "borderColorBottom"; - // DPI_BorderColorLeft, having type string - ParameterId["BorderColorLeft"] = "borderColorLeft"; - // DPI_BorderColorRight, having type string - ParameterId["BorderColorRight"] = "borderColorRight"; - // DPI_BorderColorTop, having type string - ParameterId["BorderColorTop"] = "borderColorTop"; - // DPI_Color, having type string - ParameterId["Color"] = "color"; - // DPI_Color1, having type string - ParameterId["Color1"] = "color1"; - // DPI_Color2, having type string - ParameterId["Color2"] = "color2"; - // DPI_DefaultColor, having type string - ParameterId["DefaultColor"] = "defaultColor"; - // DPI_DistanceFontColor, having type string - ParameterId["DistanceFontColor"] = "distanceFontColor"; - // DPI_FillColor, having type string - ParameterId["FillColor"] = "fillColor"; - // DPI_FogColor, having type string - ParameterId["FogColor"] = "fogColor"; - // DPI_HeaderColor, having type string - ParameterId["HeaderColor"] = "headerColor"; - // DPI_HighlightBGColor, having type string - ParameterId["HighlightBGColor"] = "highlightBgColor"; - // DPI_HighlightTextColor, having type string - ParameterId["HighlightTextColor"] = "highlightTextColor"; - // DPI_HoverColor, having type string - ParameterId["HoverColor"] = "hoverColor"; - // DPI_MapAttributionFill, having type string - ParameterId["MapAttributionFill"] = "mapAttributionFill"; - // DPI_MapAttributionTextColor, having type string - ParameterId["MapAttributionTextColor"] = "mapAttributionTextColor"; - // DPI_MapPaneBackgroundFill, having type string - ParameterId["MapPaneBackgroundFill"] = "mapPaneBackgroundFill"; - // DPI_MapScaleBorderColor, having type string - ParameterId["MapScaleBorderColor"] = "mapScaleBorderColor"; - // DPI_MapScaleColor, having type string - ParameterId["MapScaleColor"] = "mapScaleColor"; - // DPI_MapWaitTileFill, having type string - ParameterId["MapWaitTileFill"] = "mapWaitTileFill"; - // DPI_MarkColor, having type string - ParameterId["MarkColor"] = "markColor"; - // DPI_NavArrowDisabledColor, having type string - ParameterId["NavArrowDisabledColor"] = "navArrowDisabledColor"; - // DPI_NavArrowHoverColor, having type string - ParameterId["NavArrowHoverColor"] = "navArrowHoverColor"; - // DPI_NavArrowIdleColor, having type string - ParameterId["NavArrowIdleColor"] = "navArrowIdleColor"; - // DPI_NavArrowPressedColor, having type string - ParameterId["NavArrowPressedColor"] = "navArrowPressedColor"; - // DPI_PaneColor, having type string - ParameterId["PaneColor"] = "paneColor"; - // DPI_PressColor, having type string - ParameterId["PressColor"] = "pressColor"; - // DPI_ResizeBorderColor, having type string - ParameterId["ResizeBorderColor"] = "resizeBorderColor"; - // DPI_SelectBGColor, having type string - ParameterId["SelectBGColor"] = "selectBgColor"; - // DPI_SelectionTextColor, having type string - ParameterId["SelectionTextColor"] = "selectionTextColor"; - // DPI_SwatchBackgroundColor, having type string - ParameterId["SwatchBackgroundColor"] = "swatchBgColor"; - // DPI_SwatchBorderColor, having type string - ParameterId["SwatchBorderColor"] = "swatchBorderColor"; - // DPI_TabColor, having type string - ParameterId["TabColor"] = "tabColor"; - // DPI_Colors, having type string[] - ParameterId["Colors"] = "colors"; - // DPI_RampColorSamples, having type string[] - ParameterId["RampColorSamples"] = "rampColorSamples"; - // DPI_Pixmap, having type string - ParameterId["Pixmap"] = "pixmap"; - // DPI_Image, having type string - ParameterId["Image"] = "image"; - // DPI_OverlayImage, having type string - ParameterId["OverlayImage"] = "overlayImage"; - // DPI_IconImage, having type string - ParameterId["IconImage"] = "iconImage"; - // DPI_ImageList, having type string[] - ParameterId["ImageList"] = "imageList"; - // DPI_ImageMap, having type Dictionary(of string) - ParameterId["ImageMap"] = "imageMap"; - // DPI_UUID, having type object - ParameterId["UUID"] = "uuid"; - // DPI_Nanoseconds, having type object - ParameterId["Nanoseconds"] = "nanoseconds"; - // DPI_Microseconds, having type object - ParameterId["Microseconds"] = "microseconds"; - // DPI_Milliseconds, having type object - ParameterId["Milliseconds"] = "milliseconds"; - // DPI_TimeoutS, having type object - ParameterId["TimeoutS"] = "timeoutS"; - // DPI_Minutes, having type object - ParameterId["Minutes"] = "minutes"; - // DPI_Hours, having type object - ParameterId["Hours"] = "hours"; - // DPI_CardType, having type CardType - ParameterId["CardType"] = "cardType"; - // DPI_DocParameterID, having type string - ParameterId["DocParameterID"] = "type"; - // DPI_ArgumentParam, having type string - ParameterId["ArgumentParam"] = "argumentParam"; - // DPI_ArgumentParams, having type string[] - ParameterId["ArgumentParams"] = "argumentParams"; - // DPI_ActionType, having type ActionType - ParameterId["ActionType"] = "actionType"; - // DPI_AnnotateEnum, having type AnnotateEnum - ParameterId["AnnotateEnum"] = "annotateEnum"; - // DPI_JoinType, having type SQLJoinType - ParameterId["JoinType"] = "joinType"; - // DPI_SupportedJoinTypes, having type SQLJoinType[] - ParameterId["SupportedJoinTypes"] = "supportedJoinTypes"; - // DPI_Rounding, having type Rounding - ParameterId["Rounding"] = "roundingEnum"; - // DPI_BodyType, having type BodyType - ParameterId["BodyType"] = "bodyType"; - // DPI_LineEnd, having type LineEnd - ParameterId["LineEnd"] = "lineEndEnum"; - // DPI_LineEndSize, having type LineEndSize - ParameterId["LineEndSize"] = "lineEndSizeEnum"; - // DPI_BrushSpecialFields, having type BrushSpecialFields - ParameterId["BrushSpecialFields"] = "specialFields"; - // DPI_CellSizeChange, having type CellSizeChange - ParameterId["CellSizeChange"] = "cellSizeChange"; - // DPI_CellType, having type CellType - ParameterId["CellType"] = "cellType"; - // DPI_ConnectionAttemptResult, having type ConnectionAttemptResult - ParameterId["ConnectionAttemptResult"] = "connectionAttemptResult"; - // DPI_ConnectionErrorStage, having type ConnectionErrorStage - ParameterId["ConnectionErrorStage"] = "connectionErrorStage"; - // DPI_ConnectionErrorType, having type ConnectionErrorType - ParameterId["ConnectionErrorType"] = "connectionErrorType"; - // DPI_DataServerConnectionResult, having type DataServerConnectionResult - ParameterId["DataServerConnectionResult"] = "dsConnectionResult"; - // DPI_DropWhen, having type DropWhen - ParameterId["DropWhen"] = "dropWhen"; - // DPI_DropType, having type DropFieldResult - ParameterId["DropType"] = "dropType"; - // DPI_EncodingType, having type EncodingType - ParameterId["EncodingType"] = "encodingType"; - // DPI_DropdownEncodingType, having type EncodingType - ParameterId["DropdownEncodingType"] = "dropdownEncodingType"; - // DPI_EncodingTypes, having type EncodingType[] - ParameterId["EncodingTypes"] = "encodingTypes"; - // DPI_FieldOrderType, having type FieldOrderType - ParameterId["FieldOrderType"] = "fieldOrderType"; - // DPI_FilterIconType, having type FilterIconType - ParameterId["FilterIconType"] = "filterIconType"; - // DPI_FilterIconTypes, having type FilterIconType[] - ParameterId["FilterIconTypes"] = "filterIconTypes"; - // DPI_FloatingToolbarVis, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVis"] = "toolbarVisibility"; - // DPI_FolderRole, having type FolderRole - ParameterId["FolderRole"] = "folderRole"; - // DPI_LegendType, having type Enum - ParameterId["LegendType"] = "legendType"; - // DPI_ForecastModelType, having type ForecastModelType - ParameterId["ForecastModelType"] = "forecastModelType"; - // DPI_ForecastTrendType, having type ForecastComponentType - ParameterId["ForecastTrendType"] = "forecastTrendType"; - // DPI_ForecastSeasonType, having type ForecastComponentType - ParameterId["ForecastSeasonType"] = "forecastSeasonType"; - // DPI_ForecastRangeType, having type ForecastRangeType - ParameterId["ForecastRangeType"] = "forecastRangeType"; - // DPI_ForecastStatus, having type ForecastStatus - ParameterId["ForecastStatus"] = "forecastStatus"; - // DPI_SheetForecastStatus, having type ForecastStatus - ParameterId["SheetForecastStatus"] = "sheetForecastStatus"; - // DPI_PDForecastStatusList, having type ForecastStatus[] - ParameterId["PDForecastStatusList"] = "paneDescriptorForecastStatusList"; - // DPI_ForecastColumnType, having type ForecastColumnType - ParameterId["ForecastColumnType"] = "forecastColumnType"; - // DPI_DataScaling, having type DataScaling - ParameterId["DataScaling"] = "dataScaling"; - // DPI_GetFilterItemsJsonResponse, having type GetJsonResponseEnum - ParameterId["GetFilterItemsJsonResponse"] = "getFilterItemsJsonResponse"; - // DPI_FilterSearchJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchJsonResponse"] = "filterSearchJsonResponse"; - // DPI_FilterSearchWithIndexJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchWithIndexJsonResponse"] = "filterSearchWithIndexJsonResponse"; - // DPI_FilterShowChildrenJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterShowChildrenJsonResponse"] = "filterShowChildrenJsonResponse"; - // DPI_HAlignment, having type LabelHAlignment - ParameterId["HAlignment"] = "horizontalLabelAlignment"; - // DPI_JoinValidationError, having type JoinValidationError - ParameterId["JoinValidationError"] = "joinValidationError"; - // DPI_NameConflictResolution, having type NameConflictResolution - ParameterId["NameConflictResolution"] = "nameConflictResolution"; - // DPI_LabelDir, having type TextOrient - ParameterId["LabelDir"] = "labelDirection"; - // DPI_LabelAlign, having type TextAlign - ParameterId["LabelAlign"] = "labelAlignment"; - // DPI_LabelWrap, having type TextWrapMode - ParameterId["LabelWrap"] = "labelWrap"; - // DPI_WrapMode, having type TextWrapMode - ParameterId["WrapMode"] = "wrapMode"; - // DPI_MarkEnum, having type MarkEnum - ParameterId["MarkEnum"] = "markEnum"; - // DPI_PercentMode, having type PercentMode - ParameterId["PercentMode"] = "percentageMode"; - // DPI_ReferenceOptionsSet, having type ReferenceOptionsSet - ParameterId["ReferenceOptionsSet"] = "referenceOptionsSet"; - // DPI_ReferenceOptionsSets, having type ReferenceOptionsSet[] - ParameterId["ReferenceOptionsSets"] = "referenceOptionsSets"; - // DPI_RankType, having type RankType - ParameterId["RankType"] = "rankType"; - // DPI_RankTypeValues, having type RankType[] - ParameterId["RankTypeValues"] = "rankTypeValues"; - // DPI_SpecialValuesMode, having type SpecialValuesMode - ParameterId["SpecialValuesMode"] = "specialValuesMode"; - // DPI_VAlignment, having type LabelVAlignment - ParameterId["VAlignment"] = "verticalLabelAlignment"; - // DPI_ColorMode, having type ColorMode - ParameterId["ColorMode"] = "colorMode"; - // DPI_MarkLabelsMode, having type MarkLabelsMode - ParameterId["MarkLabelsMode"] = "markLabelsMode"; - // DPI_MarkLabelsScope, having type MarkLabelsScope - ParameterId["MarkLabelsScope"] = "markLabelsScope"; - // DPI_MarkLabelsVisibility, having type MarkLabelsVisibility - ParameterId["MarkLabelsVisibility"] = "markLabelsVisibility"; - // DPI_PrimitiveType, having type PrimitiveType - ParameterId["PrimitiveType"] = "primitiveType"; - // DPI_ActualPrimitiveType, having type PrimitiveType - ParameterId["ActualPrimitiveType"] = "actualPrimitiveType"; - // DPI_PrimitiveTypes, having type PrimitiveType[] - ParameterId["PrimitiveTypes"] = "primitiveTypes"; - // DPI_ShapeType, having type ShapeType - ParameterId["ShapeType"] = "shapeType"; - // DPI_SortType, having type SortType - ParameterId["SortType"] = "sortBy"; - // DPI_SortEnd, having type SortEnd - ParameterId["SortEnd"] = "sortEnd"; - // DPI_StackingMode, having type StackingMode - ParameterId["StackingMode"] = "stackingMode"; - // DPI_StyleTheme, having type StyleTheme - ParameterId["StyleTheme"] = "styleTheme"; - // DPI_TrendLineFitType, having type TrendLineFitType - ParameterId["TrendLineFitType"] = "fitType"; - // DPI_UpdateScope, having type UpdateScope - ParameterId["UpdateScope"] = "updateScope"; - // DPI_ParameterCtrlDisplayMode, having type DisplayMode - ParameterId["ParameterCtrlDisplayMode"] = "paramDisplayMode"; - // DPI_ParameterCtrlDisplayFlag, having type ParameterCtrlDisplayFlag - ParameterId["ParameterCtrlDisplayFlag"] = "paramDisplayFlag"; - // DPI_Included, having type QuantitativeIncludedValues - ParameterId["Included"] = "included"; - // DPI_CommandsType, having type CommandsType - ParameterId["CommandsType"] = "commandsType"; - // DPI_ParameterDomainType, having type DomainType - ParameterId["ParameterDomainType"] = "parameterDomainType"; - // DPI_FilterDomainType, having type DomainType - ParameterId["FilterDomainType"] = "filterDomainType"; - // DPI_FilterDomains, having type DomainType[] - ParameterId["FilterDomains"] = "filterDomains"; - // DPI_DatePeriodType, having type DatePeriodType - ParameterId["DatePeriodType"] = "datePeriodType"; - // DPI_FilterPatternType, having type PatternType - ParameterId["FilterPatternType"] = "filterPatternType"; - // DPI_FilterConditionType, having type ConditionType - ParameterId["FilterConditionType"] = "filterConditionType"; - // DPI_FiltersPresetType, having type PresetType - ParameterId["FiltersPresetType"] = "filtersPresetType"; - // DPI_FiltersRangeType, having type RangeType - ParameterId["FiltersRangeType"] = "filtersRangeType"; - // DPI_DateRangeType, having type RelativeDateRangeType - ParameterId["DateRangeType"] = "dateRangeType"; - // DPI_PageFlag, having type PageNavFlags - ParameterId["PageFlag"] = "pageFlag"; - // DPI_MarksToTrail, having type MarksToTrail - ParameterId["MarksToTrail"] = "marksToTrail"; - // DPI_TrailType, having type TrailType - ParameterId["TrailType"] = "trailType"; - // DPI_ChangePageDirection, having type ChangePageType - ParameterId["ChangePageDirection"] = "changeTo"; - // DPI_AnimationControl, having type PageAnimationControl - ParameterId["AnimationControl"] = "animationControl"; - // DPI_LinePattern, having type LinePattern - ParameterId["LinePattern"] = "linePattern"; - // DPI_LineCap, having type LineCap - ParameterId["LineCap"] = "lineCap"; - // DPI_LineJoin, having type LineJoin - ParameterId["LineJoin"] = "lineJoin"; - // DPI_LineAlignment, having type LineAlignment - ParameterId["LineAlignment"] = "lineAlignment"; - // DPI_FillMode, having type FillMode - ParameterId["FillMode"] = "fillMode"; - // DPI_CursorShape, having type CursorShape - ParameterId["CursorShape"] = "cursorShape"; - // DPI_ShowMeCommandType, having type ShowMeCommandType - ParameterId["ShowMeCommandType"] = "showMeCommandType"; - // DPI_ShelfIconType, having type ShelfIconType - ParameterId["ShelfIconType"] = "shelfIconType"; - // DPI_ShelfIconTypes, having type ShelfIconType[] - ParameterId["ShelfIconTypes"] = "shelfIconTypes"; - // DPI_ItemDrawStyle, having type ItemDrawStyle - ParameterId["ItemDrawStyle"] = "itemDrawStyle"; - // DPI_ScaleMode, having type ScaleMode - ParameterId["ScaleMode"] = "pageScaleMode"; - // DPI_PageOrientationOption, having type PageOrientation - ParameterId["PageOrientationOption"] = "pageOrientationOption"; - // DPI_PageSizeOption, having type PageSizeOption - ParameterId["PageSizeOption"] = "pageSizeOption"; - // DPI_SortRegionType, having type SortRegionType - ParameterId["SortRegionType"] = "sortRegion"; - // DPI_LegendItemLayout, having type LegendItemLayout - ParameterId["LegendItemLayout"] = "legendLayout"; - // DPI_LegendItemOrder, having type LegendItemOrder - ParameterId["LegendItemOrder"] = "legendOrder"; - // DPI_VizImageRegion, having type VizImageRegion - ParameterId["VizImageRegion"] = "r"; - // DPI_LegacyMenuName, having type LegacyMenuName - ParameterId["LegacyMenuName"] = "legacyMenuName"; - // DPI_LegacyMenuState, having type LegacyMenuState - ParameterId["LegacyMenuState"] = "legacyMenuState"; - // DPI_LegacyMenuStateList, having type LegacyMenuState[] - ParameterId["LegacyMenuStateList"] = "legacyMenuStates"; - // DPI_DimensionType, having type DimensionType - ParameterId["DimensionType"] = "dimensionType"; - // DPI_LayoutType, having type LayoutType - ParameterId["LayoutType"] = "layoutType"; - // DPI_ShelfType, having type ShelfType - ParameterId["ShelfType"] = "shelfType"; - // DPI_LastSelectionShelf, having type ShelfType - ParameterId["LastSelectionShelf"] = "lastShelf"; - // DPI_SchemaViewerDataSourceType, having type SchemaViewerDataSourceType - ParameterId["SchemaViewerDataSourceType"] = "schemaDatasourceType"; - // DPI_SchemaItemType, having type SchemaItemType - ParameterId["SchemaItemType"] = "schemaItemType"; - // DPI_HSMSelectionMode, having type SelectionMode - ParameterId["HSMSelectionMode"] = "hsmSelectionMode"; - // DPI_HSMDefaultMemberType, having type DefaultMemberType - ParameterId["HSMDefaultMemberType"] = "hsmDefaultMemberType"; - // DPI_HSMNotificationType, having type NotificationType - ParameterId["HSMNotificationType"] = "hsmNotificationType"; - // DPI_HSMSelectionRequestType, having type SelectionRequestType - ParameterId["HSMSelectionRequestType"] = "hsmSelectionRequestType"; - // DPI_HSMMemberSelectRequestType, having type MemberSelectRequestType - ParameterId["HSMMemberSelectRequestType"] = "hsmMemberSelectRequestType"; - // DPI_PivotStrategy, having type FieldPivotStrategy - ParameterId["PivotStrategy"] = "pivotStrategy"; - // DPI_AliasType, having type AliasType - ParameterId["AliasType"] = "aliasType"; - // DPI_DSODimensionSortOrder, having type DataSourceOrder - ParameterId["DSODimensionSortOrder"] = "dsoDimensionSortOrder"; - // DPI_DSOMeasureSortOrder, having type DataSourceOrder - ParameterId["DSOMeasureSortOrder"] = "dsoMeasureSortOrder"; - // DPI_DSOSortOrder, having type DataSourceOrder - ParameterId["DSOSortOrder"] = "dsoSortOrder"; - // DPI_VTAggType, having type VTAggType - ParameterId["VTAggType"] = "vtAggregation"; - // DPI_FieldTypeIconSet, having type FieldTypeIconSet - ParameterId["FieldTypeIconSet"] = "fieldIconSet"; - // DPI_VisualPart, having type VisualPart - ParameterId["VisualPart"] = "visualPart"; - // DPI_DefaultMapToolEnum, having type MapToolSelection - ParameterId["DefaultMapToolEnum"] = "defaultMapToolEnum"; - // DPI_DefaultMapUnitEnum, having type MapUnitSelectionEnum - ParameterId["DefaultMapUnitEnum"] = "defaultMapUnitEnum"; - // DPI_SceneModelDetail, having type Detail - ParameterId["SceneModelDetail"] = "sceneModelDetailEnum"; - // DPI_SceneModelHitType, having type HitType - ParameterId["SceneModelHitType"] = "sceneModelHitType"; - // DPI_HitTestStyle, having type HitTestStyle - ParameterId["HitTestStyle"] = "hitTestStyle"; - // DPI_MarkState, having type MarkState - ParameterId["MarkState"] = "markState"; - // DPI_SheetType, having type SheetType - ParameterId["SheetType"] = "sheetType"; - // DPI_DragSource, having type DragDropType - ParameterId["DragSource"] = "dragSource"; - // DPI_DropTarget, having type DragDropType - ParameterId["DropTarget"] = "dropTarget"; - // DPI_ShelfDropAction, having type ShelfDropAction - ParameterId["ShelfDropAction"] = "shelfDropAction"; - // DPI_ShelfDropContext, having type ShelfDropContext - ParameterId["ShelfDropContext"] = "shelfDropContext"; - // DPI_FilterSelectionTracking, having type SelectionTracking - ParameterId["FilterSelectionTracking"] = "filterSelectionTracking"; - // DPI_FilterUpdateType, having type FilterUpdateType - ParameterId["FilterUpdateType"] = "filterUpdateType"; - // DPI_FilterUpdateQualifierType, having type FilterUpdateQualifierType - ParameterId["FilterUpdateQualifierType"] = "filterUpdateQualifierType"; - // DPI_ParameterError, having type ParameterError - ParameterId["ParameterError"] = "parameterError"; - // DPI_SelectionType, having type SelectionType - ParameterId["SelectionType"] = "selectionType"; - // DPI_SelectionUpdateType, having type SelectionUpdateType - ParameterId["SelectionUpdateType"] = "selectionUpdateType"; - // DPI_SelectOptions, having type SelectOptions - ParameterId["SelectOptions"] = "selectOptions"; - // DPI_AxisOrientation, having type Orientation - ParameterId["AxisOrientation"] = "axisOrientation"; - // DPI_DecimalMode, having type DecimalMode - ParameterId["DecimalMode"] = "decimalMode"; - // DPI_ActivationMethod, having type ActivationMethod - ParameterId["ActivationMethod"] = "activation"; - // DPI_SourceType, having type SourceType - ParameterId["SourceType"] = "sourceType"; - // DPI_OnClear, having type OnClear - ParameterId["OnClear"] = "onClear"; - // DPI_MergeOrSplit, having type MergeOrSplit - ParameterId["MergeOrSplit"] = "mergeOrSplit"; - // DPI_FilterMode, having type FilterMode - ParameterId["FilterMode"] = "filterMode"; - // DPI_ZoneType, having type ZoneType - ParameterId["ZoneType"] = "zoneType"; - // DPI_ZoneLayoutType, having type ZoneLayoutType - ParameterId["ZoneLayoutType"] = "zoneLayoutType"; - // DPI_QuickTableCalcType, having type QuickTableCalcCommandType - ParameterId["QuickTableCalcType"] = "quickTableCalcType"; - // DPI_TableCalcCommandType, having type TableCalcCommandType - ParameterId["TableCalcCommandType"] = "tableCalcCommandType"; - // DPI_TableCalcAddressType, having type TableCalcAddressCommandType - ParameterId["TableCalcAddressType"] = "tableCalcAddressType"; - // DPI_MarkLayoutPrimitive, having type Primitive - ParameterId["MarkLayoutPrimitive"] = "markLayoutPrimitive"; - // DPI_MarkLayoutVizType, having type VizType - ParameterId["MarkLayoutVizType"] = "markLayoutVizType"; - // DPI_MarkAlignment, having type MarkAlignment - ParameterId["MarkAlignment"] = "markAlignment"; - // DPI_ModifyZoneZOrderType, having type ModifyZoneZOrderCommandType - ParameterId["ModifyZoneZOrderType"] = "modifyZoneZOrderType"; - // DPI_TextRegionHAlign, having type TextRegionHAlign - ParameterId["TextRegionHAlign"] = "halign"; - // DPI_TextRegionVAlign, having type TextRegionVAlign - ParameterId["TextRegionVAlign"] = "valign"; - // DPI_PathElement, having type PathElement - ParameterId["PathElement"] = "pathElement"; - // DPI_PathElements, having type PathElement[] - ParameterId["PathElements"] = "pathElements"; - // DPI_RenderMode, having type RenderMode - ParameterId["RenderMode"] = "renderMode"; - // DPI_FontStyle, having type TableauFontStyle - ParameterId["FontStyle"] = "fontStyle"; - // DPI_FontWeight, having type FontWeight - ParameterId["FontWeight"] = "fontWeight"; - // DPI_TextDecoration, having type TextDecoration - ParameterId["TextDecoration"] = "textDecoration"; - // DPI_BorderStyle, having type BorderStyle - ParameterId["BorderStyle"] = "borderStyle"; - // DPI_BorderStyleTop, having type BorderStyle - ParameterId["BorderStyleTop"] = "borderStyleTop"; - // DPI_BorderStyleRight, having type BorderStyle - ParameterId["BorderStyleRight"] = "borderStyleRight"; - // DPI_BorderStyleBottom, having type BorderStyle - ParameterId["BorderStyleBottom"] = "borderStyleBottom"; - // DPI_BorderStyleLeft, having type BorderStyle - ParameterId["BorderStyleLeft"] = "borderStyleLeft"; - // DPI_FloatingToolbarVisibility, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVisibility"] = "floatingToolbarVisibility"; - // DPI_GeoSearchVisibility, having type GeoSearchVisibility - ParameterId["GeoSearchVisibility"] = "geographicSearchVisibility"; - // DPI_MapScaleVisibility, having type MapScaleVisibility - ParameterId["MapScaleVisibility"] = "mapScaleVisibility"; - // DPI_VizNavigationSetting, having type VizNavigationSetting - ParameterId["VizNavigationSetting"] = "vizNavigationSetting"; - // DPI_AutoDrillVisibility, having type AutoDrillVisibility - ParameterId["AutoDrillVisibility"] = "autoDrillVisibility"; - // DPI_ClientUIMetricType, having type ClientUIMetricType - ParameterId["ClientUIMetricType"] = "clientUiMetricType"; - // DPI_SheetScrollDirection, having type SheetScrollDirection - ParameterId["SheetScrollDirection"] = "sheetScrollDirection"; - // DPI_SizeMode, having type SizeMode - ParameterId["SizeMode"] = "sizeMode"; - // DPI_PerspectiveAggregate, having type PerspectiveAggregate - ParameterId["PerspectiveAggregate"] = "perspectiveAggregation"; - // DPI_StyleAttribute, having type StyleAttribute - ParameterId["StyleAttribute"] = "styleAttribute"; - // DPI_StyleAttributes, having type StyleAttribute[] - ParameterId["StyleAttributes"] = "styleAttributes"; - // DPI_StyleElement, having type StyleElement - ParameterId["StyleElement"] = "styleElement"; - // DPI_StyleDataClass, having type StyleDataClass - ParameterId["StyleDataClass"] = "styleClass"; - // DPI_StyleFieldScope, having type StyleFieldScope - ParameterId["StyleFieldScope"] = "styleScope"; - // DPI_FormatControlType, having type FormatControlType - ParameterId["FormatControlType"] = "formatType"; - // DPI_LineInterpolationMode, having type LineInterpolationMode - ParameterId["LineInterpolationMode"] = "lineInterpolationMode"; - // DPI_LineMarkerPosition, having type LineMarkerPosition - ParameterId["LineMarkerPosition"] = "lineMarkerPosition"; - // DPI_MarkersMode, having type MarkMarkersMode - ParameterId["MarkersMode"] = "markersMode"; - // DPI_AppConfigEnum, having type AppConfigEnum - ParameterId["AppConfigEnum"] = "appConfigEnum"; - // DPI_ColorPaletteType, having type ColorPaletteType - ParameterId["ColorPaletteType"] = "colorPaletteType"; - // DPI_ExtractType, having type ExtractType - ParameterId["ExtractType"] = "extractType"; - // DPI_ActivityDisposition, having type ActivityDisposition - ParameterId["ActivityDisposition"] = "activityDisposition"; - // DPI_ActivityResult, having type ActivityResult - ParameterId["ActivityResult"] = "activityResult"; - // DPI_TooltipMode, having type TooltipMode - ParameterId["TooltipMode"] = "tooltipMode"; - // DPI_RuntimeOutput, having type RuntimeOutput - ParameterId["RuntimeOutput"] = "runtimeOutput"; - // DPI_AnalyticsObjectType, having type AnalyticsObjectType - ParameterId["AnalyticsObjectType"] = "analyticsObjectType"; - // DPI_UIAutomationStatus, having type UIAutomationCommandStatus - ParameterId["UIAutomationStatus"] = "uiAutomationStatus"; - // DPI_TableViewDataType, having type TableViewDataType - ParameterId["TableViewDataType"] = "tableViewerDataType"; - // DPI_UnitsFormat, having type UnitsFormatEnum - ParameterId["UnitsFormat"] = "unitsFormat"; - // DPI_FilterLimitType, having type LimitType - ParameterId["FilterLimitType"] = "filterLimitType"; - // DPI_DistributionSelectedType, having type DistributionType - ParameterId["DistributionSelectedType"] = "distributionSelectedType"; - // DPI_DistributionType, having type DistributionType - ParameterId["DistributionType"] = "distributionType"; - // DPI_TranslatedDistributionType, having type TranslatedDistributionTypePresModel - ParameterId["TranslatedDistributionType"] = "translatedDistributionType"; - // DPI_TranslatedDistributionTypes, having type TranslatedDistributionTypePresModel[] - ParameterId["TranslatedDistributionTypes"] = "translatedDistributionTypes"; - // DPI_RefLineFormulaGroup, having type FormulaGroup - ParameterId["RefLineFormulaGroup"] = "reflineFormulaGroup"; - // DPI_ReferenceLineScopeType, having type ScopeType - ParameterId["ReferenceLineScopeType"] = "referenceLineScopeType"; - // DPI_StDevType, having type StDevType - ParameterId["StDevType"] = "stdevType"; - // DPI_ShowBounds, having type ShowBounds - ParameterId["ShowBounds"] = "showBounds"; - // DPI_BoxplotWhiskerType, having type BoxplotWhiskerType - ParameterId["BoxplotWhiskerType"] = "boxplotWhiskerType"; - // DPI_ReferenceLineLabelType, having type LabelType - ParameterId["ReferenceLineLabelType"] = "referenceLineLabelType"; - // DPI_PairedReferenceLineLabelType, having type LabelType - ParameterId["PairedReferenceLineLabelType"] = "pairedReferenceLineLabelType"; - // DPI_ConfidenceIntervalSelectedState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalSelectedState"] = "confidenceIntervalSelectedState"; - // DPI_ConfidenceIntervalState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalState"] = "confidenceIntervalState"; - // DPI_TranslatedLabelType, having type TranslatedLabelTypePresModel - ParameterId["TranslatedLabelType"] = "translatedLabelType"; - // DPI_ReferenceLineValidLabelTypes, having type TranslatedLabelTypePresModel[] - ParameterId["ReferenceLineValidLabelTypes"] = "validReferenceLineLabelTypes"; - // DPI_ReferenceLineFormulaType, having type FormulaType - ParameterId["ReferenceLineFormulaType"] = "referenceLineFormulaType"; - // DPI_PairedReferenceLineFormulaType, having type FormulaType - ParameterId["PairedReferenceLineFormulaType"] = "pairedReferenceLineFormulaType"; - // DPI_TranslatedFormulaType, having type TranslatedFormulaTypePresModel - ParameterId["TranslatedFormulaType"] = "translatedFormulaType"; - // DPI_ReferenceLineValidFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidFormulaTypes"] = "validReferenceLineFormulaTypes"; - // DPI_ReferenceLineValidPairedFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidPairedFormulaTypes"] = "validReferenceLinePairedFormulaTypes"; - // DPI_TranslatedConfidenceIntervalState, having type TranslatedConfidenceIntervalStatePresModel - ParameterId["TranslatedConfidenceIntervalState"] = "translatedConfidenceIntervalState"; - // DPI_TranslatedConfidenceIntervalStates, having type TranslatedConfidenceIntervalStatePresModel[] - ParameterId["TranslatedConfidenceIntervalStates"] = "translatedConfidenceIntervalStates"; - // DPI_TranslatedStDevType, having type TranslatedStDevTypePresModel - ParameterId["TranslatedStDevType"] = "translatedStdevType"; - // DPI_TranslatedStDevTypes, having type TranslatedStDevTypePresModel[] - ParameterId["TranslatedStDevTypes"] = "translatedStdevTypes"; - // DPI_ReferenceLineLODCalcType, having type LODCalcType - ParameterId["ReferenceLineLODCalcType"] = "referenceLineLodCalcType"; - // DPI_ValueDomainType, having type ValueDomainType - ParameterId["ValueDomainType"] = "valueDomainType"; - // DPI_ValueDomainTypes, having type ValueDomainType[] - ParameterId["ValueDomainTypes"] = "valueDomainTypes"; - // DPI_OperationType, having type OperationType - ParameterId["OperationType"] = "operationType"; - // DPI_OperationTypes, having type OperationType[] - ParameterId["OperationTypes"] = "operationTypes"; - // DPI_ConnectionTypeCategory, having type ConnectionTypeCategory - ParameterId["ConnectionTypeCategory"] = "connectionTypeCategory"; - // DPI_ConnectionTypeGroup, having type ConnectionTypeGroup - ParameterId["ConnectionTypeGroup"] = "connectionTypeGroup"; - // DPI_CommandRedirectType, having type CommandRedirectType - ParameterId["CommandRedirectType"] = "commandRedirectType"; - // DPI_CustomSplitMode, having type SplitMode - ParameterId["CustomSplitMode"] = "customSplitMode"; - // DPI_CustomSplitSeparatorType, having type SeparatorType - ParameterId["CustomSplitSeparatorType"] = "customSplitSeparatorType"; - // DPI_LevelSelectionState, having type LevelSelectionState - ParameterId["LevelSelectionState"] = "levelSelectionState"; - // DPI_LevelSelectionStates, having type LevelSelectionState[] - ParameterId["LevelSelectionStates"] = "levelSelectionStates"; - // DPI_SourceDestIcon, having type SourceDestIcon - ParameterId["SourceDestIcon"] = "sourceDestIcon"; - // DPI_LegendLayout, having type LegendLayout - ParameterId["LegendLayout"] = "pageLegendLayout"; - // DPI_ImagesEditResultCode, having type ImagesEditResultCode - ParameterId["ImagesEditResultCode"] = "imagesEditResultCode"; - // DPI_CalculationContext, having type CalculationContext - ParameterId["CalculationContext"] = "calculationContext"; - // DPI_WorkgroupPublishErrorType, having type WorkgroupPublishErrorType - ParameterId["WorkgroupPublishErrorType"] = "workgroupPublishErrorType"; - // DPI_IsParameter, having type TriBool - ParameterId["IsParameter"] = "isParameter"; - // DPI_AddressingState, having type WidgetState - ParameterId["AddressingState"] = "addressingState"; - // DPI_AllPagesState, having type WidgetState - ParameterId["AllPagesState"] = "allPagesState"; - // DPI_AtTheLevelState, having type WidgetState - ParameterId["AtTheLevelState"] = "atTheLevelState"; - // DPI_ComputeCompoundedRateState, having type WidgetState - ParameterId["ComputeCompoundedRateState"] = "computeCompoundedRateState"; - // DPI_CustomNullIfIncompleteState, having type WidgetState - ParameterId["CustomNullIfIncompleteState"] = "customNullIfIncompleteState"; - // DPI_NestedCalcsState, having type WidgetState - ParameterId["NestedCalcsState"] = "nestedCalcsState"; - // DPI_RankTypeState, having type WidgetState - ParameterId["RankTypeState"] = "rankTypeState"; - // DPI_ReferenceOptionsState, having type WidgetState - ParameterId["ReferenceOptionsState"] = "referenceOptionsState"; - // DPI_RestartEveryState, having type WidgetState - ParameterId["RestartEveryState"] = "restartEveryState"; - // DPI_SortAggState, having type WidgetState - ParameterId["SortAggState"] = "sortAggState"; - // DPI_SortState, having type WidgetState - ParameterId["SortState"] = "sortState"; - // DPI_TableCalcTypeState, having type WidgetState - ParameterId["TableCalcTypeState"] = "tableCalcTypeState"; - // DPI_TableCalcAssistanceWidgetState, having type WidgetState - ParameterId["TableCalcAssistanceWidgetState"] = "tableCalcAssistanceWidgetState"; - // DPI_CalcNestingLevel, having type CalcNestingLevel - ParameterId["CalcNestingLevel"] = "calcNestingLevel"; - // DPI_DataProviderType, having type DataProviderType - ParameterId["DataProviderType"] = "dataProviderType"; - // DPI_HeuristicCommandReinterpretation, having type HeuristicCommandReinterpretation - ParameterId["HeuristicCommandReinterpretation"] = "heuristicCommandReinterpretation"; - // DPI_ExtractRefreshStatus, having type ExtractRefreshStatus - ParameterId["ExtractRefreshStatus"] = "extractRefreshStatus"; - // DPI_RichTextEditorWidgetKey, having type RichTextEditorWidgetKey - ParameterId["RichTextEditorWidgetKey"] = "richTextEditorWidgetKey"; - // DPI_RichTextWidgetKeys, having type RichTextEditorWidgetKey[] - ParameterId["RichTextWidgetKeys"] = "richTextWidgetKeys"; - // DPI_TypeOfFormatItem, having type TypeOfFormatItem - ParameterId["TypeOfFormatItem"] = "typeOfFormatItem"; - // DPI_TypeOfFormatContainer, having type TypeOfFormatContainer - ParameterId["TypeOfFormatContainer"] = "typeOfFormatContainer"; - // DPI_TypeOfFormatControl, having type TypeOfFormatControl - ParameterId["TypeOfFormatControl"] = "typeOfFormatControl"; - // DPI_FormatWidgetKey, having type FormatWidgetKey - ParameterId["FormatWidgetKey"] = "formatWidgetKey"; - // DPI_ColorSwatchType, having type ColorSwatchType - ParameterId["ColorSwatchType"] = "formatColorSwatchType"; - // DPI_PickerType, having type PickerType - ParameterId["PickerType"] = "pickerType"; - // DPI_ExtractHistoryRefreshType, having type RefreshType - ParameterId["ExtractHistoryRefreshType"] = "extractHistoryRefreshTypeEnum"; - // DPI_AxisFoldState, having type AxisFoldState - ParameterId["AxisFoldState"] = "axisFoldState"; - // DPI_TickMarkSpacingUnits, having type TickSpacingUnits - ParameterId["TickMarkSpacingUnits"] = "tickSpacingUnits"; - // DPI_TickMarkState, having type TickMarkState - ParameterId["TickMarkState"] = "tickMarkState"; - // DPI_AxisRangeType, having type AxisRangeType - ParameterId["AxisRangeType"] = "axisRangeType"; - // DPI_ScaleType, having type ScaleType - ParameterId["ScaleType"] = "scaleType"; - // DPI_DashboardDeviceLayout, having type DashboardDeviceLayout - ParameterId["DashboardDeviceLayout"] = "dashboardDeviceLayout"; - // DPI_ActivateDeviceLayout, having type DashboardDeviceLayout - ParameterId["ActivateDeviceLayout"] = "activateDeviceLayout"; - // DPI_DashboardDeviceLayouts, having type DashboardDeviceLayout[] - ParameterId["DashboardDeviceLayouts"] = "dashboardDeviceLayouts"; - // DPI_DeviceSource, having type DeviceSource - ParameterId["DeviceSource"] = "deviceSource"; - // DPI_DashboardSizingDimension, having type DashboardSizingDimension - ParameterId["DashboardSizingDimension"] = "dashboardSizingDimension"; - // DPI_DashboardSizingMode, having type DashboardSizingMode - ParameterId["DashboardSizingMode"] = "dashboardSizingMode"; - // DPI_FlipboardNavType, having type FlipboardNavType - ParameterId["FlipboardNavType"] = "flipboardNavType"; - // DPI_FieldPickerDialogUseCase, having type FieldPickerDialogUseCase - ParameterId["FieldPickerDialogUseCase"] = "fieldPickerDialogUseCase"; - // DPI_StartOfWeekEnum, having type SOWValue - ParameterId["StartOfWeekEnum"] = "startOfWeekEnum"; - // DPI_StartOfFiscalYear, having type FYSValues - ParameterId["StartOfFiscalYear"] = "startOfFiscalYear"; - // DPI_TotalsInclusionValue, having type TotalsInclusion - ParameterId["TotalsInclusionValue"] = "totalsInclusionValue"; - // DPI_FormatCode, having type FormatCode - ParameterId["FormatCode"] = "formatCode"; - // DPI_FindType, having type FindType - ParameterId["FindType"] = "findType"; - // DPI_PerspectiveType, having type PerspectiveType - ParameterId["PerspectiveType"] = "perspectiveType"; - // DPI_GeometryType, having type GeometryType - ParameterId["GeometryType"] = "geometryType"; - // DPI_PaneLabelComposition, having type PaneLabelComposition - ParameterId["PaneLabelComposition"] = "paneLabelComposition"; - // DPI_WarningType, having type WarningType - ParameterId["WarningType"] = "warningType"; - // DPI_UIMode, having type WorkbookUIMode - ParameterId["UIMode"] = "uiMode"; - // DPI_MenuItemId, having type TopLevelMenuItem - ParameterId["MenuItemId"] = "menuItemId"; - // DPI_CommandReturn, having type object - ParameterId["CommandReturn"] = "commandReturn"; - // DPI_LegacyPresModel, having type object - ParameterId["LegacyPresModel"] = "legacyPresModel"; - // DPI_PresentationModel, having type object - ParameterId["PresentationModel"] = "presModelHolder"; - // DPI_Event, having type object - ParameterId["Event"] = "eventContainer"; - // DPI_LineStyle, having type Array - ParameterId["LineStyle"] = "lineStyle"; - // DPI_StrokeStyle, having type Array - ParameterId["StrokeStyle"] = "strokeStyle"; - // DPI_Schema, having type Array - ParameterId["Schema"] = "schema"; - // DPI_StartTuple, having type Array - ParameterId["StartTuple"] = "startTuple"; - // DPI_EndTuple, having type Array - ParameterId["EndTuple"] = "endTuple"; - // DPI_Tuple, having type Array - ParameterId["Tuple"] = "tuple"; - // DPI_Tuples, having type Array[] - ParameterId["Tuples"] = "tuples"; - // DPI_CustomDomainTuples, having type Array[] - ParameterId["CustomDomainTuples"] = "customDomainTuples"; - // DPI_UpdatedTuples, having type Array[] - ParameterId["UpdatedTuples"] = "updatedTuples"; - // DPI_Table, having type Array - ParameterId["Table"] = "table"; - // DPI_AliasedValue, having type Array - ParameterId["AliasedValue"] = "valueAlias"; - // DPI_FirstAliasedValue, having type Array - ParameterId["FirstAliasedValue"] = "firstAlisedValue"; - // DPI_MaximumRange, having type Array - ParameterId["MaximumRange"] = "maximumRangeValue"; - // DPI_MinimumRange, having type Array - ParameterId["MinimumRange"] = "minimumRangeValue"; - // DPI_SecondAliasedValue, having type Array - ParameterId["SecondAliasedValue"] = "secondAlisedValue"; - // DPI_AliasedSelectionList, having type Array[] - ParameterId["AliasedSelectionList"] = "aliasedSelectionList"; - // DPI_AliasedValues, having type Array[] - ParameterId["AliasedValues"] = "valuesAliases"; - // DPI_VerboseAliasedRangeMax, having type Array - ParameterId["VerboseAliasedRangeMax"] = "verboseAliasedRangeMax"; - // DPI_VerboseAliasedValue, having type Array - ParameterId["VerboseAliasedValue"] = "verboseAliasedValue"; - // DPI_MultiBucket, having type MultiBucket - ParameterId["MultiBucket"] = "xValues"; - // DPI_PageName, having type PageName - ParameterId["PageName"] = "pageName"; - // DPI_Selector, having type object - ParameterId["Selector"] = "selector"; - // DPI_PaneId, having type object - ParameterId["PaneId"] = "paneId"; - // DPI_PaneIds, having type PaneId[] - ParameterId["PaneIds"] = "paneIds"; - // DPI_ImageRegionInfo, having type object - ParameterId["ImageRegionInfo"] = "vizRegionRect"; - // DPI_ImageRegionInfoList, having type object[] - ParameterId["ImageRegionInfoList"] = "vizRegionRectList"; - // DPI_VisualID, having type VisualID - ParameterId["VisualID"] = "visualId"; - // DPI_VisualIDPM, having type VisualIDPresModel - ParameterId["VisualIDPM"] = "visualIdPresModel"; - // DPI_InvalidSheets, having type VisualIDPresModel[] - ParameterId["InvalidSheets"] = "invalidSheets"; - // DPI_VisualIDPMs, having type VisualIDPresModel[] - ParameterId["VisualIDPMs"] = "visualIds"; - // DPI_SheetPathPM, having type SheetPathPresModel - ParameterId["SheetPathPM"] = "sheetPath"; - // DPI_CapturedSheetPM, having type SheetPathPresModel - ParameterId["CapturedSheetPM"] = "capturedSheetPm"; - // DPI_CurrentSheetPM, having type SheetPathPresModel - ParameterId["CurrentSheetPM"] = "currentSheetPm"; - // DPI_DashboardPM, having type SheetPathPresModel - ParameterId["DashboardPM"] = "dashboardPm"; - // DPI_NewSheetPM, having type SheetPathPresModel - ParameterId["NewSheetPM"] = "newSheetPm"; - // DPI_SheetNamePM, having type SheetPathPresModel - ParameterId["SheetNamePM"] = "sheetNamePm"; - // DPI_SheetPM, having type SheetPathPresModel - ParameterId["SheetPM"] = "sheetPm"; - // DPI_SourceDashboardPM, having type SheetPathPresModel - ParameterId["SourceDashboardPM"] = "sourceDashboardPm"; - // DPI_SourceSheetPM, having type SheetPathPresModel - ParameterId["SourceSheetPM"] = "sourceSheetPm"; - // DPI_TargetSheetPM, having type SheetPathPresModel - ParameterId["TargetSheetPM"] = "targetSheetPm"; - // DPI_WorksheetPM, having type SheetPathPresModel - ParameterId["WorksheetPM"] = "worksheetPm"; - // DPI_ModifiedSheets, having type SheetPathPresModel[] - ParameterId["ModifiedSheets"] = "modifiedSheets"; - // DPI_DataColumn, having type DataColumnPresModel - ParameterId["DataColumn"] = "dataColumn"; - // DPI_DataColumns, having type DataColumnPresModel[] - ParameterId["DataColumns"] = "dataColumns"; - // DPI_Addresses, having type DataColumnPresModel[] - ParameterId["Addresses"] = "addresses"; - // DPI_EncodingColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["EncodingColumns"] = "encodingColumns"; - // DPI_TextRunColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextRunColumns"] = "textRunColumns"; - // DPI_TextStyleColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextStyleColumns"] = "textStyleColumns"; - // DPI_NamedDataColumn, having type NamedDataColumnPresModel - ParameterId["NamedDataColumn"] = "namedDataColumn"; - // DPI_NamedDataColumns, having type NamedDataColumnPresModel[] - ParameterId["NamedDataColumns"] = "namedDataColumns"; - // DPI_DataTable, having type DataTablePresModel - ParameterId["DataTable"] = "dataTable"; - // DPI_ActionSpecification, having type None - ParameterId["ActionSpecification"] = "actionSpec"; - // DPI_Column, having type Column - ParameterId["Column"] = "columnContext"; - // DPI_SetFunction, having type SetFunction - ParameterId["SetFunction"] = "setFunction"; - // DPI_SetFunctions, having type SetFunctions - ParameterId["SetFunctions"] = "setFunctions"; - // DPI_VisualProfileShowMe, having type VisualProfileShowMe - ParameterId["VisualProfileShowMe"] = "vpsm"; - // DPI_DataSourcePtr, having type DataSource - ParameterId["DataSourcePtr"] = "datasourcePtr"; - // DPI_WorkgroupConnection, having type WorkgroupConnection - ParameterId["WorkgroupConnection"] = "workgroupConnection"; - // DPI_Authenticator, having type AuthenticatorRawPtr - ParameterId["Authenticator"] = "authenticator"; - // DPI_UpgradeAttr, having type UpgradeAttr - ParameterId["UpgradeAttr"] = "upgradeAttr"; - // DPI_ExtractAttr, having type ExtractAttr - ParameterId["ExtractAttr"] = "extractAttr"; - // DPI_RefreshAttr, having type RefreshAttr - ParameterId["RefreshAttr"] = "refreshAttr"; - // DPI_ContextSpecification, having type ContextSpecification - ParameterId["ContextSpecification"] = "contextSpecification"; - // DPI_SchemaViewerSelector, having type SchemaViewerSelectorPtr - ParameterId["SchemaViewerSelector"] = "schemaViewerSelector"; - // DPI_Buckets, having type Buckets - ParameterId["Buckets"] = "buckets"; - // DPI_LegendItems, having type MultiBuckets - ParameterId["LegendItems"] = "legendItems"; - // DPI_LegendItem, having type MultiBucket - ParameterId["LegendItem"] = "legendItem"; - // DPI_SourceItem, having type MultiBucket - ParameterId["SourceItem"] = "sourceItem"; - // DPI_DestItem, having type MultiBucket - ParameterId["DestItem"] = "destItem"; - // DPI_IQuickSortState, having type IQuickSortState - ParameterId["IQuickSortState"] = "quickSortState"; - // DPI_AppBuildDate, having type DateTime - ParameterId["AppBuildDate"] = "appBuildDate"; - // DPI_ForecastDateRangeEnd, having type DateTime - ParameterId["ForecastDateRangeEnd"] = "forecastDateRangeEnd"; - // DPI_ForecastDateRangeStart, having type DateTime - ParameterId["ForecastDateRangeStart"] = "forecastDateRangeStart"; - // DPI_LastModified, having type DateTime - ParameterId["LastModified"] = "lastModified"; - // DPI_SearchDomainPtr, having type MultiDomain - ParameterId["SearchDomainPtr"] = "searchDomainPtr"; - // DPI_ResultsDomainPtr, having type MultiDomain - ParameterId["ResultsDomainPtr"] = "resultsDomainPtr"; - // DPI_Actions, having type object - ParameterId["Actions"] = "actions"; - // DPI_SRCommands, having type object - ParameterId["SRCommands"] = "selectionRelaxationCommands"; - // DPI_Commands, having type object - ParameterId["Commands"] = "commands"; - // DPI_DataTypeCommands, having type object - ParameterId["DataTypeCommands"] = "datatypeCommands"; - // DPI_MultiSelectCommands, having type object - ParameterId["MultiSelectCommands"] = "multiselectCommands"; - // DPI_NonVizCommands, having type object - ParameterId["NonVizCommands"] = "nonVizCommands"; - // DPI_QuickFilterCommands, having type object - ParameterId["QuickFilterCommands"] = "quickFilterCommands"; - // DPI_ShowMeCommands, having type object - ParameterId["ShowMeCommands"] = "showMeCommands"; - // DPI_SortIndicatorMenu, having type object - ParameterId["SortIndicatorMenu"] = "sortIndicatorMenu"; - // DPI_StandardCommands, having type object - ParameterId["StandardCommands"] = "standardCommands"; - // DPI_VizCommands, having type object - ParameterId["VizCommands"] = "vizCommands"; - // DPI_ZoneChromeCommands, having type object - ParameterId["ZoneChromeCommands"] = "zoneChromeCommands"; - // DPI_CommandItem, having type CommandsItem - ParameterId["CommandItem"] = "commandItem"; - // DPI_CommandItems, having type CommandsItem[] - ParameterId["CommandItems"] = "commandItems"; - // DPI_Command, having type SimpleCommandsPresModel - ParameterId["Command"] = "simpleCommandModel"; - // DPI_AddCommand, having type SimpleCommandsPresModel - ParameterId["AddCommand"] = "addSimpleCommandModel"; - // DPI_RemoveCommand, having type SimpleCommandsPresModel - ParameterId["RemoveCommand"] = "removeSimpleCommandModel"; - // DPI_AcceptCommand, having type SimpleCommandsPresModel - ParameterId["AcceptCommand"] = "acceptSimpleCommandModel"; - // DPI_DeclineCommand, having type SimpleCommandsPresModel - ParameterId["DeclineCommand"] = "declineSimpleCommandModel"; - // DPI_DropCommand, having type SimpleCommandsPresModel - ParameterId["DropCommand"] = "dropCommandModel"; - // DPI_EditCaptionCommand, having type SimpleCommandsPresModel - ParameterId["EditCaptionCommand"] = "editCaptionCommandModel"; - // DPI_FontCommand, having type SimpleCommandsPresModel - ParameterId["FontCommand"] = "fontCommandModel"; - // DPI_LineStyleCommand, having type SimpleCommandsPresModel - ParameterId["LineStyleCommand"] = "lineStyleCommandModel"; - // DPI_FormatCommand, having type SimpleCommandsPresModel - ParameterId["FormatCommand"] = "formatCommandModel"; - // DPI_DestructorCommand, having type SimpleCommandsPresModel - ParameterId["DestructorCommand"] = "destructorCommand"; - // DPI_ClearFormatCommand, having type SimpleCommandsPresModel - ParameterId["ClearFormatCommand"] = "clearFormatCommandModel"; - // DPI_RichTextCommand, having type SimpleCommandsPresModel - ParameterId["RichTextCommand"] = "richTextCommandModel"; - // DPI_SortIndicatorCommand, having type SimpleCommandsPresModel - ParameterId["SortIndicatorCommand"] = "sortIndicatorCommand"; - // DPI_ResizeRowCommand, having type SimpleCommandsPresModel - ParameterId["ResizeRowCommand"] = "resizeRowCommandModel"; - // DPI_ResizeColCommand, having type SimpleCommandsPresModel - ParameterId["ResizeColCommand"] = "resizeColCommandModel"; - // DPI_CommandList, having type SimpleCommandsPresModel[] - ParameterId["CommandList"] = "commandList"; - // DPI_ParameterCtrl, having type ParameterCtrlPresModel - ParameterId["ParameterCtrl"] = "parameterControl"; - // DPI_ParameterCtrls, having type ParameterCtrlPresModel[] - ParameterId["ParameterCtrls"] = "parameterControls"; - // DPI_PageModel, having type PagePresModel - ParameterId["PageModel"] = "pageModel"; - // DPI_PageTrailOptions, having type PageTrailOptionsPresModel - ParameterId["PageTrailOptions"] = "pageTrailOptions"; - // DPI_Field, having type FieldPresModel - ParameterId["Field"] = "field"; - // DPI_FieldList, having type FieldPresModel[] - ParameterId["FieldList"] = "fieldList"; - // DPI_FieldColumn, having type FieldColumnPresModel - ParameterId["FieldColumn"] = "column"; - // DPI_FieldColumnList, having type FieldColumnPresModel[] - ParameterId["FieldColumnList"] = "columnList"; - // DPI_Parameter, having type ParameterPresModel - ParameterId["Parameter"] = "parameter"; - // DPI_Dimension, having type DimensionPresModel - ParameterId["Dimension"] = "dimension"; - // DPI_AttributeDimensionList, having type DimensionPresModel[] - ParameterId["AttributeDimensionList"] = "attributeDimensionList"; - // DPI_RelationalTable, having type RelationalTablePresModel - ParameterId["RelationalTable"] = "relationalTable"; - // DPI_DrillPath, having type DrillPathPresModel - ParameterId["DrillPath"] = "drillPath"; - // DPI_FieldFolder, having type FieldFolderPresModel - ParameterId["FieldFolder"] = "fieldFolder"; - // DPI_Group, having type GroupPresModel - ParameterId["Group"] = "group"; - // DPI_Hierarchy, having type HierarchyPresModel - ParameterId["Hierarchy"] = "hierarchy"; - // DPI_HierarchyList, having type HierarchyPresModel[] - ParameterId["HierarchyList"] = "hierarchyList"; - // DPI_HierarchyMemberSelectedState, having type HierarchySelect_MemberSelectedStatePresModel - ParameterId["HierarchyMemberSelectedState"] = "hierarchyMemberSelectedState"; - // DPI_HierarchySelectionChanges, having type HierarchySelect_MemberSelectedStatePresModel[] - ParameterId["HierarchySelectionChanges"] = "hierarchySelectionChanges"; - // DPI_DisplayFolder, having type DisplayFolderPresModel - ParameterId["DisplayFolder"] = "displayFolder"; - // DPI_DisplayFolderList, having type DisplayFolderPresModel[] - ParameterId["DisplayFolderList"] = "displayFolderList"; - // DPI_DataSourceLayout, having type DataSourceLayoutPresModel - ParameterId["DataSourceLayout"] = "dataSourceLayout"; - // DPI_DataSource, having type DataSourcePresModel - ParameterId["DataSource"] = "dataSource"; - // DPI_DataSources, having type Dictionary(of DataSourcePresModel) - ParameterId["DataSources"] = "dataSources"; - // DPI_DataSchema, having type DataSchemaPresModel - ParameterId["DataSchema"] = "dataSchema"; - // DPI_SheetListItem, having type SheetListItemPresModel - ParameterId["SheetListItem"] = "sheetListItem"; - // DPI_SheetListItems, having type SheetListItemPresModel[] - ParameterId["SheetListItems"] = "sheetListItems"; - // DPI_SheetList, having type SheetListPresModel - ParameterId["SheetList"] = "sheetList"; - // DPI_SizeModeOption, having type SizeModeOptionPresModel - ParameterId["SizeModeOption"] = "sizeModeOption"; - // DPI_SizeModeOptions, having type SizeModeOptionPresModel[] - ParameterId["SizeModeOptions"] = "sizeModeOptions"; - // DPI_DashboardSizeControl, having type DashboardSizeControlPresModel - ParameterId["DashboardSizeControl"] = "dashboardSizeControl"; - // DPI_DeviceLayoutInfoItem, having type DeviceLayoutInfoItemPresModel - ParameterId["DeviceLayoutInfoItem"] = "deviceLayoutInfoItem"; - // DPI_DeviceLayoutInfoItems, having type DeviceLayoutInfoItemPresModel[] - ParameterId["DeviceLayoutInfoItems"] = "deviceLayoutInfoItems"; - // DPI_DeviceLayoutInfoList, having type DeviceLayoutInfoListPresModel - ParameterId["DeviceLayoutInfoList"] = "deviceLayoutInfoList"; - // DPI_SpecializedDeviceLayoutItem, having type SpecializedDeviceLayoutItemPresModel - ParameterId["SpecializedDeviceLayoutItem"] = "specializedDeviceLayoutItem"; - // DPI_SpecializedDeviceLayoutItems, having type SpecializedDeviceLayoutItemPresModel[] - ParameterId["SpecializedDeviceLayoutItems"] = "specializedDeviceLayoutItems"; - // DPI_SpecializedDeviceLayoutList, having type SpecializedDeviceLayoutListPresModel - ParameterId["SpecializedDeviceLayoutList"] = "specializedDeviceLayoutList"; - // DPI_SizeItem, having type SizeItemPresModel - ParameterId["SizeItem"] = "sizeItem"; - // DPI_SizeItems, having type SizeItemPresModel[] - ParameterId["SizeItems"] = "sizeItems"; - // DPI_DeviceSizesList, having type SizeItemListPresModel - ParameterId["DeviceSizesList"] = "deviceSizesList"; - // DPI_PresetSizesList, having type SizeItemListPresModel - ParameterId["PresetSizesList"] = "presetSizesList"; - // DPI_SizeItemList, having type SizeItemListPresModel - ParameterId["SizeItemList"] = "sizeItemList"; - // DPI_SubstitutionKeyword, having type SubstitutionKeywordPresModel - ParameterId["SubstitutionKeyword"] = "substitutionKeyword"; - // DPI_SubstitutionKeywords, having type SubstitutionKeywordPresModel[] - ParameterId["SubstitutionKeywords"] = "substitutionKeywords"; - // DPI_SubstitutionKeywordSubList, having type SubstitutionKeywordSubListPresModel - ParameterId["SubstitutionKeywordSubList"] = "substitutionKeywordsSublist"; - // DPI_SubstitutionKeywordSubLists, having type SubstitutionKeywordSubListPresModel[] - ParameterId["SubstitutionKeywordSubLists"] = "substitutionKeywordSublists"; - // DPI_SubstitutionKeywordList, having type SubstitutionKeywordListPresModel - ParameterId["SubstitutionKeywordList"] = "substitutionKeywordsList"; - // DPI_DeviceZoneListItem, having type DeviceZoneListItemPresModel - ParameterId["DeviceZoneListItem"] = "deviceZoneListItem"; - // DPI_DeviceZoneListItems, having type DeviceZoneListItemPresModel[] - ParameterId["DeviceZoneListItems"] = "deviceZoneListItems"; - // DPI_DeviceZoneList, having type DeviceZoneListPresModel - ParameterId["DeviceZoneList"] = "deviceZoneList"; - // DPI_DashboardZoneHierarchy, having type DashboardZoneHierarchyPresModel - ParameterId["DashboardZoneHierarchy"] = "dashboardZoneHierarchy"; - // DPI_DeviceZoneVisibilityListItem, having type DeviceZoneVisibilityListItemPresModel - ParameterId["DeviceZoneVisibilityListItem"] = "deviceZoneVisibilityListItem"; - // DPI_DeviceZoneVisibilityListItems, having type DeviceZoneVisibilityListItemPresModel[] - ParameterId["DeviceZoneVisibilityListItems"] = "deviceZoneVisibilityListItems"; - // DPI_DeviceZoneVisibilityList, having type DeviceZoneVisibilityListPresModel - ParameterId["DeviceZoneVisibilityList"] = "deviceZoneVisibilityList"; - // DPI_WorksheetDataSchema, having type WorksheetDataSchemaPresModel - ParameterId["WorksheetDataSchema"] = "worksheetDataSchema"; - // DPI_WorksheetDataSchemaMap, having type Dictionary(of WorksheetDataSchemaPresModel) - ParameterId["WorksheetDataSchemaMap"] = "worksheetDataSchemaMap"; - // DPI_Shelf, having type ShelfPresModel - ParameterId["Shelf"] = "shelf"; - // DPI_ShelfDetail, having type ShelfPresModel - ParameterId["ShelfDetail"] = "shelfDetail"; - // DPI_ShelfList, having type ShelfPresModel[] - ParameterId["ShelfList"] = "shelfList"; - // DPI_ShelfItem, having type ShelfItemPresModel - ParameterId["ShelfItem"] = "shelfItem"; - // DPI_ShelfItems, having type ShelfItemPresModel[] - ParameterId["ShelfItems"] = "shelfItems"; - // DPI_Shelves, having type ShelvesPresModel - ParameterId["Shelves"] = "shelves"; - // DPI_FieldEncoding, having type FieldEncodingPresModel - ParameterId["FieldEncoding"] = "fieldEncoding"; - // DPI_FieldEncodings, having type FieldEncodingPresModel[] - ParameterId["FieldEncodings"] = "fieldEncodings"; - // DPI_UberTip, having type UberTipPresModel - ParameterId["UberTip"] = "uberTip"; - // DPI_AnalyticsObjectDragInfo, having type AnalyticsObjectDragInfoPresModel - ParameterId["AnalyticsObjectDragInfo"] = "analyticsObjectDragInfo"; - // DPI_TrendLine, having type TrendLinePresModel - ParameterId["TrendLine"] = "trendLine"; - // DPI_TrendLineDialog, having type TrendLineDialogPresModel - ParameterId["TrendLineDialog"] = "trendLineDialog"; - // DPI_TrendLineDescribePresModel, having type TrendLineDescribePresModel - ParameterId["TrendLineDescribePresModel"] = "trendLineDescribePresModel"; - // DPI_TrendLineAOVModelPresModel, having type TrendLineAOVModelPresModel - ParameterId["TrendLineAOVModelPresModel"] = "trendLineAovModelPresModel"; - // DPI_TrendLineAOVModelsPresModel, having type TrendLineAOVModelPresModel[] - ParameterId["TrendLineAOVModelsPresModel"] = "trendModelDescriptionVector"; - // DPI_TrendLineLineCoefficientPresModel, having type TrendLineLineCoefficientPresModel - ParameterId["TrendLineLineCoefficientPresModel"] = "trendLineLineCoefficient"; - // DPI_TrendLineLineCoefficientsPresModel, having type TrendLineLineCoefficientPresModel[] - ParameterId["TrendLineLineCoefficientsPresModel"] = "trendLineLineCoefficientsPresModel"; - // DPI_TrendLineLinesPresModel, having type TrendLineLinesPresModel - ParameterId["TrendLineLinesPresModel"] = "trendLineLinesPresModel"; - // DPI_TrendLineAOVPresModel, having type TrendLineAOVPresModel - ParameterId["TrendLineAOVPresModel"] = "trendLineAnovaPresModel"; - // DPI_ReferenceLine, having type ReferenceLinePresModel - ParameterId["ReferenceLine"] = "referenceLine"; - // DPI_ReferenceLines, having type ReferenceLinePresModel[] - ParameterId["ReferenceLines"] = "referenceLines"; - // DPI_PercentileEditDataValue, having type EditDataValuePresModel - ParameterId["PercentileEditDataValue"] = "percentileEditDataValue"; - // DPI_LimitEditDataValue, having type EditDataValuePresModel - ParameterId["LimitEditDataValue"] = "limitEditDataValue"; - // DPI_ConfidenceLevelCombo, having type EditValueWidgetPresModel - ParameterId["ConfidenceLevelCombo"] = "confidenceLevelCombo"; - // DPI_DistributionQuantilesCombo, having type EditValueWidgetPresModel - ParameterId["DistributionQuantilesCombo"] = "distributionQuantilesLevelCombo"; - // DPI_PercentilesCombo, having type EditValueWidgetPresModel - ParameterId["PercentilesCombo"] = "distributionPercentilesLevelCombo"; - // DPI_NumericBinSizeCombo, having type EditValueWidgetPresModel - ParameterId["NumericBinSizeCombo"] = "numericBinSizeCombo"; - // DPI_FieldPickerField, having type FieldPickerFieldPresModel - ParameterId["FieldPickerField"] = "fieldPickerField"; - // DPI_FieldPickerFields, having type FieldPickerFieldPresModel[] - ParameterId["FieldPickerFields"] = "fieldPickerFields"; - // DPI_FieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["FieldPickerCombo"] = "fieldPickerCombo"; - // DPI_PairedFieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["PairedFieldPickerCombo"] = "pairedFieldPickerCombo"; - // DPI_ReferenceLineEditorPresModel, having type ReferenceLineEditorPresModel - ParameterId["ReferenceLineEditorPresModel"] = "referenceLineEditor"; - // DPI_CloseDataSourceErrorDialogPresModel, having type CloseDataSourceErrorDialogPresModel - ParameterId["CloseDataSourceErrorDialogPresModel"] = "closeDsErrorDialog"; - // DPI_EditReferenceLine, having type EditReferenceLinePresModel - ParameterId["EditReferenceLine"] = "editReferenceLine"; - // DPI_EditReferenceBand, having type EditReferenceBandPresModel - ParameterId["EditReferenceBand"] = "editReferenceBand"; - // DPI_EditDistribution, having type EditDistributionPresModel - ParameterId["EditDistribution"] = "editDistribution"; - // DPI_DistributionPercentages, having type DistributionPercentagesPresModel - ParameterId["DistributionPercentages"] = "distributionPercentages"; - // DPI_DistributionPercentiles, having type DistributionPercentilesPresModel - ParameterId["DistributionPercentiles"] = "distributionPercentiles"; - // DPI_DistributionQuantiles, having type DistributionQuantilesPresModel - ParameterId["DistributionQuantiles"] = "distributionQuantiles"; - // DPI_DistributionStandardDeviation, having type DistributionStandardDeviationPresModel - ParameterId["DistributionStandardDeviation"] = "distributionStddev"; - // DPI_SortIndicators, having type SortIndicatorsPresModel - ParameterId["SortIndicators"] = "sortIndicators"; - // DPI_SortIndicatorRegion, having type SortIndicatorRegionPresModel - ParameterId["SortIndicatorRegion"] = "sortIndicatorRegion"; - // DPI_SortIndicatorRegions, having type SortIndicatorRegionPresModel[] - ParameterId["SortIndicatorRegions"] = "sortIndicatorRegions"; - // DPI_SortIndicatorItem, having type SortIndicatorItemPresModel - ParameterId["SortIndicatorItem"] = "sortIndicatorItem"; - // DPI_SortIndicatorItems, having type SortIndicatorItemPresModel[] - ParameterId["SortIndicatorItems"] = "sortIndicatorItems"; - // DPI_BuilderConfig, having type BuilderConfigPresModel - ParameterId["BuilderConfig"] = "builderConfig"; - // DPI_SheetLayoutInfo, having type SheetLayoutInfoPresModel - ParameterId["SheetLayoutInfo"] = "sheetLayoutInfo"; - // DPI_AreaRect, having type RectanglePresModel - ParameterId["AreaRect"] = "areaRect"; - // DPI_Border, having type RectanglePresModel - ParameterId["Border"] = "borderRect"; - // DPI_BoundsRect, having type RectanglePresModel - ParameterId["BoundsRect"] = "boundsRect"; - // DPI_ButtonRect, having type RectanglePresModel - ParameterId["ButtonRect"] = "buttonRect"; - // DPI_DragRect, having type RectanglePresModel - ParameterId["DragRect"] = "dragRect"; - // DPI_FocusRect, having type RectanglePresModel - ParameterId["FocusRect"] = "focusRect"; - // DPI_ImageTileRect, having type RectanglePresModel - ParameterId["ImageTileRect"] = "tileRect"; - // DPI_ItemRect, having type RectanglePresModel - ParameterId["ItemRect"] = "itemRect"; - // DPI_LabelRect, having type RectanglePresModel - ParameterId["LabelRect"] = "labelRect"; - // DPI_MarkRect, having type RectanglePresModel - ParameterId["MarkRect"] = "markRect"; - // DPI_MarkTooltipRect, having type RectanglePresModel - ParameterId["MarkTooltipRect"] = "markTooltipRect"; - // DPI_OutRegionRect, having type RectanglePresModel - ParameterId["OutRegionRect"] = "outRegionRect"; - // DPI_PaneRect, having type RectanglePresModel - ParameterId["PaneRect"] = "paneRect"; - // DPI_PixelExtents, having type RectanglePresModel - ParameterId["PixelExtents"] = "pixelExtents"; - // DPI_RectMaxLabel, having type RectanglePresModel - ParameterId["RectMaxLabel"] = "rectMaxLabel"; - // DPI_RectMinLabel, having type RectanglePresModel - ParameterId["RectMinLabel"] = "rectMinLabel"; - // DPI_RectRamp, having type RectanglePresModel - ParameterId["RectRamp"] = "rectRamp"; - // DPI_RectTitle, having type RectanglePresModel - ParameterId["RectTitle"] = "rectTitle"; - // DPI_RegionRect, having type RectanglePresModel - ParameterId["RegionRect"] = "regionRect"; - // DPI_SelectionRect, having type RectanglePresModel - ParameterId["SelectionRect"] = "selectionRect"; - // DPI_UnusedRect, having type RectanglePresModel - ParameterId["UnusedRect"] = "unusedRect"; - // DPI_ZoneEdgeRect, having type RectanglePresModel - ParameterId["ZoneEdgeRect"] = "zoneEdge"; - // DPI_ZoneEdgeRectPix, having type RectanglePresModel - ParameterId["ZoneEdgeRectPix"] = "zoneEdgePix"; - // DPI_ZoneEdgeRectPp, having type RectanglePresModel - ParameterId["ZoneEdgeRectPp"] = "zoneEdgePp"; - // DPI_UIAutomationLinkRect, having type RectanglePresModel - ParameterId["UIAutomationLinkRect"] = "linkRect"; - // DPI_Borders, having type RectanglePresModel[] - ParameterId["Borders"] = "borderRects"; - // DPI_UIAutomationLinkRects, having type RectanglePresModel[] - ParameterId["UIAutomationLinkRects"] = "linkRects"; - // DPI_DomainExtents, having type DoubleRectanglePresModel - ParameterId["DomainExtents"] = "domainExtents"; - // DPI_MapDomainExtents, having type DoubleRectanglePresModel - ParameterId["MapDomainExtents"] = "mapDomainExtents"; - // DPI_MapLatLongRect, having type MapRectPresModel - ParameterId["MapLatLongRect"] = "mapLatLongRect"; - // DPI_Center, having type PointPresModel - ParameterId["Center"] = "center"; - // DPI_CenterMarkLineBegin, having type PointPresModel - ParameterId["CenterMarkLineBegin"] = "centerMarkLineBegin"; - // DPI_CenterMarkLineEnd, having type PointPresModel - ParameterId["CenterMarkLineEnd"] = "centerMarkLineEnd"; - // DPI_DropLocation, having type PointPresModel - ParameterId["DropLocation"] = "dropLocation"; - // DPI_EndPt, having type PointPresModel - ParameterId["EndPt"] = "endPoint"; - // DPI_GrabLocation, having type PointPresModel - ParameterId["GrabLocation"] = "grabLocation"; - // DPI_GridOrigin, having type PointPresModel - ParameterId["GridOrigin"] = "gridOrigin"; - // DPI_LassoSelectionPoint, having type PointPresModel - ParameterId["LassoSelectionPoint"] = "lassoSelectionPoint"; - // DPI_MenuLocation, having type PointPresModel - ParameterId["MenuLocation"] = "menuLocation"; - // DPI_MoveOffset, having type PointPresModel - ParameterId["MoveOffset"] = "moveOffset"; - // DPI_OverlayAnchor, having type PointPresModel - ParameterId["OverlayAnchor"] = "overlayAnchor"; - // DPI_PanAmount, having type PointPresModel - ParameterId["PanAmount"] = "panAmount"; - // DPI_PanLocation, having type PointPresModel - ParameterId["PanLocation"] = "panLocation"; - // DPI_PaneResolverLocation, having type PointPresModel - ParameterId["PaneResolverLocation"] = "paneResolverLocation"; - // DPI_PixelExtentsOffset, having type PointPresModel - ParameterId["PixelExtentsOffset"] = "extentsOffset"; - // DPI_Point1, having type PointPresModel - ParameterId["Point1"] = "pt1"; - // DPI_Point2, having type PointPresModel - ParameterId["Point2"] = "pt2"; - // DPI_Point3, having type PointPresModel - ParameterId["Point3"] = "pt3"; - // DPI_RegionPoint, having type PointPresModel - ParameterId["RegionPoint"] = "regionPoint"; - // DPI_ScrollOffset, having type PointPresModel - ParameterId["ScrollOffset"] = "scrollOffset"; - // DPI_SelectAtPoint, having type PointPresModel - ParameterId["SelectAtPoint"] = "selectAtPoint"; - // DPI_SelectOffset, having type PointPresModel - ParameterId["SelectOffset"] = "selectOffset"; - // DPI_TargetPt, having type PointPresModel - ParameterId["TargetPt"] = "targetPoint"; - // DPI_TextOrigin, having type PointPresModel - ParameterId["TextOrigin"] = "textOrigin"; - // DPI_TooltipAnchorPoint, having type PointPresModel - ParameterId["TooltipAnchorPoint"] = "tooltipAnchorPoint"; - // DPI_TooltipOffset, having type PointPresModel - ParameterId["TooltipOffset"] = "tooltipOffset"; - // DPI_VizLocation, having type PointPresModel - ParameterId["VizLocation"] = "vizLocation"; - // DPI_ZoomAnchorPoint, having type PointPresModel - ParameterId["ZoomAnchorPoint"] = "zoomAnchorPoint"; - // DPI_OverlayAnchors, having type PointPresModel[] - ParameterId["OverlayAnchors"] = "overlayAnchors"; - // DPI_LassoSelection, having type PointPresModel[] - ParameterId["LassoSelection"] = "lassoSelection"; - // DPI_ScrollOffsetPoints, having type PointPresModel[] - ParameterId["ScrollOffsetPoints"] = "scrollOffsetPoints"; - // DPI_RadialSelection, having type CirclePresModel - ParameterId["RadialSelection"] = "radialSelection"; - // DPI_DomainOrigin, having type FloatPointPresModel - ParameterId["DomainOrigin"] = "domainOrigin"; - // DPI_FloatCenter, having type FloatPointPresModel - ParameterId["FloatCenter"] = "floatCenter"; - // DPI_FloatPoint, having type FloatPointPresModel - ParameterId["FloatPoint"] = "floatPoint"; - // DPI_ClientAvailableSpace, having type SizePresModel - ParameterId["ClientAvailableSpace"] = "clientAvailableSpace"; - // DPI_DashboardPortSize, having type SizePresModel - ParameterId["DashboardPortSize"] = "dashboardPort"; - // DPI_LegendSize, having type SizePresModel - ParameterId["LegendSize"] = "legendSize"; - // DPI_StoryPortSize, having type SizePresModel - ParameterId["StoryPortSize"] = "storyPort"; - // DPI_SwatchAreaSize, having type SizePresModel - ParameterId["SwatchAreaSize"] = "areaSize"; - // DPI_SwatchImageSize, having type SizePresModel - ParameterId["SwatchImageSize"] = "imageSize"; - // DPI_ViewportSize, having type SizePresModel - ParameterId["ViewportSize"] = "viewportSize"; - // DPI_WorksheetPortSize, having type SizePresModel - ParameterId["WorksheetPortSize"] = "worksheetPort"; - // DPI_ResizeEntity, having type ResizeEntityPresModel - ParameterId["ResizeEntity"] = "resizeEntity"; - // DPI_RowResizers, having type ResizeEntityPresModel[] - ParameterId["RowResizers"] = "rowResizers"; - // DPI_ColResizers, having type ResizeEntityPresModel[] - ParameterId["ColResizers"] = "colResizers"; - // DPI_ResizeInfoPresModel, having type ResizeInfoPresModel - ParameterId["ResizeInfoPresModel"] = "resizeInfo"; - // DPI_ServerSheet, having type ServerSheetPresModel - ParameterId["ServerSheet"] = "serverSheet"; - // DPI_ServerSheets, having type ServerSheetPresModel[] - ParameterId["ServerSheets"] = "serverSheets"; - // DPI_SheetInfo, having type SheetInfoPresModel - ParameterId["SheetInfo"] = "sheetInfo"; - // DPI_SheetsInfo, having type SheetInfoPresModel[] - ParameterId["SheetsInfo"] = "sheetsInfo"; - // DPI_ServerWorkbook, having type ServerWorkbookPresModel - ParameterId["ServerWorkbook"] = "serverWorkbook"; - // DPI_PDFExportOptionsPresModel, having type PDFExportOptionsPresModel - ParameterId["PDFExportOptionsPresModel"] = "pdfExport"; - // DPI_ExportFileResultPresModel, having type ExportFileResultPresModel - ParameterId["ExportFileResultPresModel"] = "pdfResult"; - // DPI_PDFSheet, having type PDFSheetPresModel - ParameterId["PDFSheet"] = "pdfSheet"; - // DPI_SheetOptions, having type PDFSheetPresModel[] - ParameterId["SheetOptions"] = "sheetOptions"; - // DPI_ExportLayoutOptions, having type ExportLayoutOptionsPresModel - ParameterId["ExportLayoutOptions"] = "exportLayoutOptions"; - // DPI_DataAlertConditionOperationType, having type DataAlertConditionOperationType - ParameterId["DataAlertConditionOperationType"] = "dataAlertConditionOp"; - // DPI_DataAlertDialogPresModel, having type DataAlertDialogPresModel - ParameterId["DataAlertDialogPresModel"] = "dataAlertDialogPresModel"; - // DPI_DataAlertMeasure, having type DataAlertMeasurePresModel - ParameterId["DataAlertMeasure"] = "dataAlertMeasure"; - // DPI_DataAlertMeasures, having type DataAlertMeasurePresModel[] - ParameterId["DataAlertMeasures"] = "dataAlertMeasures"; - // DPI_DataAlertConstantCondition, having type DataAlertConstantConditionPresModel - ParameterId["DataAlertConstantCondition"] = "dataAlertConstantCondition"; - // DPI_DataAlertDialogMode, having type DataAlertDialogMode - ParameterId["DataAlertDialogMode"] = "dataAlertDialogMode"; - // DPI_LightweightMapOptions, having type LightweightMapOptionsPresModel - ParameterId["LightweightMapOptions"] = "lightweightMapOptions"; - // DPI_DataHighlighter, having type DataHighlighterPresModel - ParameterId["DataHighlighter"] = "dataHighlighter"; - // DPI_DataHighlighterItemSet, having type DataHighlighterItemSetPresModel - ParameterId["DataHighlighterItemSet"] = "dataHighlighterItemSet"; - // DPI_DataHighlighterItem, having type DataHighlighterItemPresModel - ParameterId["DataHighlighterItem"] = "dataHighlighterItem"; - // DPI_DataHighlighterItems, having type DataHighlighterItemPresModel[] - ParameterId["DataHighlighterItems"] = "dataHighlighterItems"; - // DPI_CategoricalLegendLayout, having type CategoricalLegendLayoutPresModel - ParameterId["CategoricalLegendLayout"] = "catLegendLayout"; - // DPI_CategoricalLegend, having type CategoricalLegendPresModel - ParameterId["CategoricalLegend"] = "categoricalLegend"; - // DPI_CategoricalLegends, having type CategoricalLegendPresModel[] - ParameterId["CategoricalLegends"] = "categoricalLegends"; - // DPI_CategoricalColorLegend, having type CategoricalColorLegendPresModel - ParameterId["CategoricalColorLegend"] = "colorLegend"; - // DPI_ColorLegendItem, having type CategoricalColorLegendItemPresModel - ParameterId["ColorLegendItem"] = "colorLegendItem"; - // DPI_ColorLegendItems, having type CategoricalColorLegendItemPresModel[] - ParameterId["ColorLegendItems"] = "colorLegendItems"; - // DPI_CategoricalShapeLegend, having type CategoricalShapeLegendPresModel - ParameterId["CategoricalShapeLegend"] = "categoricalShapeLegend"; - // DPI_ShapeLegendItem, having type CategoricalShapeLegendItemPresModel - ParameterId["ShapeLegendItem"] = "shapeLegendItem"; - // DPI_ShapeLegendItems, having type CategoricalShapeLegendItemPresModel[] - ParameterId["ShapeLegendItems"] = "shapeLegendItems"; - // DPI_CategoricalHighlightLegend, having type CategoricalHighlightLegendPresModel - ParameterId["CategoricalHighlightLegend"] = "categoricalHighlightLegend"; - // DPI_HighlightLegendItem, having type CategoricalLegendItemPresModel - ParameterId["HighlightLegendItem"] = "highlightLegendItem"; - // DPI_HighlightLegendItems, having type CategoricalLegendItemPresModel[] - ParameterId["HighlightLegendItems"] = "highlightLegendItems"; - // DPI_CategoricalSizeLegend, having type CategoricalSizeLegendPresModel - ParameterId["CategoricalSizeLegend"] = "categoricalSizeLegend"; - // DPI_SizeLegendItem, having type CategoricalSizeLegendItemPresModel - ParameterId["SizeLegendItem"] = "sizeLegendItem"; - // DPI_SizeLegendItems, having type CategoricalSizeLegendItemPresModel[] - ParameterId["SizeLegendItems"] = "sizeLegendItems"; - // DPI_CategoricalMapLegend, having type CategoricalMapLegendPresModel - ParameterId["CategoricalMapLegend"] = "categoricalMapLegend"; - // DPI_QuantitativeColorLegend, having type QuantitativeColorLegendPresModel - ParameterId["QuantitativeColorLegend"] = "quantitativeColorLegend"; - // DPI_QuantitativeColorLegends, having type QuantitativeColorLegendPresModel[] - ParameterId["QuantitativeColorLegends"] = "quantitativeColorLegends"; - // DPI_QuantitativeLegendLayout, having type QuantitativeLegendLayoutPresModel - ParameterId["QuantitativeLegendLayout"] = "quantitativeLegendLayout"; - // DPI_ServerRenderedLegend, having type ServerRenderedLegendPresModel - ParameterId["ServerRenderedLegend"] = "serverRenderedLegend"; - // DPI_CategoricalFilter, having type CategoricalFilterPresModel - ParameterId["CategoricalFilter"] = "categoricalFilter"; - // DPI_CategoricalFilterRelational, having type CategoricalFilterRelationalPresModel - ParameterId["CategoricalFilterRelational"] = "categoricalFilterRelational"; - // DPI_CategoricalFilterMemberDomainPage, having type CategoricalFilterMemberDomainPagePresModel - ParameterId["CategoricalFilterMemberDomainPage"] = "categoricalFilterMemberDomainPage"; - // DPI_CategoricalFilterCacheInfo, having type CategoricalFilterCacheInfoPresModel - ParameterId["CategoricalFilterCacheInfo"] = "categoricalFilterCacheInfo"; - // DPI_CategoricalFilterPatternDisplay, having type CategoricalFilterPatternDisplayPresModel - ParameterId["CategoricalFilterPatternDisplay"] = "categoricalFilterPatternDisplay"; - // DPI_CategoricalFilterPatternUpdate, having type CategoricalFilterPatternUpdatePresModel - ParameterId["CategoricalFilterPatternUpdate"] = "categoricalFilterPatternUpdate"; - // DPI_CategoricalFilterConditionDisplay, having type CategoricalFilterConditionDisplayPresModel - ParameterId["CategoricalFilterConditionDisplay"] = "categoricalFilterConditionDisplay"; - // DPI_CategoricalFilterConditionUpdate, having type CategoricalFilterConditionUpdatePresModel - ParameterId["CategoricalFilterConditionUpdate"] = "categoricalFilterConditionUpdate"; - // DPI_CategoricalFilterLimitDisplay, having type CategoricalFilterLimitDisplayPresModel - ParameterId["CategoricalFilterLimitDisplay"] = "categoricalFilterLimitDisplay"; - // DPI_CategoricalFilterLimitUpdate, having type CategoricalFilterLimitUpdatePresModel - ParameterId["CategoricalFilterLimitUpdate"] = "categoricalFilterLimitUpdate"; - // DPI_CategoricalFilterNew, having type CategoricalFilter_NewPresModel - ParameterId["CategoricalFilterNew"] = "categoricalFilterNew"; - // DPI_CategoricalFilterHierarchy, having type CategoricalFilterHierarchyPresModel - ParameterId["CategoricalFilterHierarchy"] = "categoricalFilterHirerarchy"; - // DPI_CategoricalFilterUpdate, having type CategoricalFilterUpdatePresModel - ParameterId["CategoricalFilterUpdate"] = "categoricalFilterUpdate"; - // DPI_CategoricalFilterRelationalState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalState"] = "categoricalRelationalState"; - // DPI_CategoricalFilterRelationalUpdatedState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalUpdatedState"] = "categoricalRelationalUpdatedState"; - // DPI_CategoricalFilterRelationalDomainInfo, having type CategoricalFilterRelationalDomainInfoPresModel - ParameterId["CategoricalFilterRelationalDomainInfo"] = "categoricalFilterRelationalDomainInfo"; - // DPI_CategoricalFilterRelationalDisplay, having type CategoricalFilterRelationalDisplayPresModel - ParameterId["CategoricalFilterRelationalDisplay"] = "categoricalFilterRelationalDisplay"; - // DPI_ExpressionToken, having type ExpressionTokenPresModel - ParameterId["ExpressionToken"] = "expressionToken"; - // DPI_ExpressionTokens, having type ExpressionTokenPresModel[] - ParameterId["ExpressionTokens"] = "expressionTokens"; - // DPI_FormulaValidation, having type FormulaValidationPresModel - ParameterId["FormulaValidation"] = "formulaValidation"; - // DPI_ValidationResults, having type ValidationResultsPresModel - ParameterId["ValidationResults"] = "validationResults"; - // DPI_DomainMember, having type DomainMemberPresModel - ParameterId["DomainMember"] = "domainMember"; - // DPI_DomainMembers, having type DomainMemberPresModel[] - ParameterId["DomainMembers"] = "domainMembers"; - // DPI_QuickFilterDisplay, having type QuickFilterDisplayPresModel - ParameterId["QuickFilterDisplay"] = "quickFilterDisplay"; - // DPI_QuickFilter, having type QuickFilterPresModel - ParameterId["QuickFilter"] = "quickFilter"; - // DPI_QuantitativeQuickFilter, having type QuantitativeQuickFilterPresModel - ParameterId["QuantitativeQuickFilter"] = "quantitativeQuickFilter"; - // DPI_RelativeDateQuickFilter, having type RelativeDateQuickFilterPresModel - ParameterId["RelativeDateQuickFilter"] = "relativeDateQuickFilter"; - // DPI_CategoricalQuickFilter, having type CategoricalQuickFilterPresModel - ParameterId["CategoricalQuickFilter"] = "categoricalQuickFilter"; - // DPI_HierarchicalQuickFilter, having type HierarchicalQuickFilterPresModel - ParameterId["HierarchicalQuickFilter"] = "hierarchicalQuickFilter"; - // DPI_DomainTable, having type DomainTablePresModel - ParameterId["DomainTable"] = "domainTable"; - // DPI_DomainTables, having type DomainTablePresModel[] - ParameterId["DomainTables"] = "domainTables"; - // DPI_DomainTuples, having type Tuples - ParameterId["DomainTuples"] = "domainTuples"; - // DPI_SearchTuples, having type Tuples - ParameterId["SearchTuples"] = "searchTuples"; - // DPI_SelectedTuples, having type TupleHash - ParameterId["SelectedTuples"] = "selectedTuples"; - // DPI_PendingTuples, having type TupleHash - ParameterId["PendingTuples"] = "pendingTuples"; - // DPI_Domain, having type MultiDomain - ParameterId["Domain"] = "domain"; - // DPI_DateOption, having type DateBinDialogOptionPresModel - ParameterId["DateOption"] = "dateOption"; - // DPI_DateOptions, having type DateBinDialogOptionPresModel[] - ParameterId["DateOptions"] = "dateOptions"; - // DPI_FilterRangeAdd, having type FilterRangePresModel - ParameterId["FilterRangeAdd"] = "filterRangeAdd"; - // DPI_FilterRangeRemove, having type FilterRangePresModel - ParameterId["FilterRangeRemove"] = "filterRangeRemove"; - // DPI_FilterOptions, having type FilterOptionsPresModel - ParameterId["FilterOptions"] = "filterOptions"; - // DPI_Layer, having type LayerPresModel - ParameterId["Layer"] = "layer"; - // DPI_Layers, having type LayerPresModel[] - ParameterId["Layers"] = "layers"; - // DPI_MarksCardPresModel, having type MarksCardPresModel - ParameterId["MarksCardPresModel"] = "marksCardPresModel"; - // DPI_UIItem, having type UIItemPresModel - ParameterId["UIItem"] = "uiItem"; - // DPI_EncodingUIItem, having type EncodingUIItemPresModel - ParameterId["EncodingUIItem"] = "encodingUiItem"; - // DPI_EncodingUIItems, having type EncodingUIItemPresModel[] - ParameterId["EncodingUIItems"] = "encodingUiItems"; - // DPI_PrimTypeUIItem, having type PrimitiveTypeUIItemPresModel - ParameterId["PrimTypeUIItem"] = "primitiveTypeUiItem"; - // DPI_PrimTypeUIItems, having type PrimitiveTypeUIItemPresModel[] - ParameterId["PrimTypeUIItems"] = "primitiveTypeUiItems"; - // DPI_PrimitiveTypeUIItemOptions, having type PrimitiveTypeUIItemOptionsPresModel - ParameterId["PrimitiveTypeUIItemOptions"] = "primitiveTypeUiItemOptions"; - // DPI_LineUIItemOptions, having type LineUIItemOptionsPresModel - ParameterId["LineUIItemOptions"] = "lineUiItemOptions"; - // DPI_LineInterpolationModeUIItem, having type LineInterpolationModeUIItemPresModel - ParameterId["LineInterpolationModeUIItem"] = "lineInterpolationModeUiItem"; - // DPI_LineInterpolationModeUIItemSet, having type LineInterpolationModeUIItemPresModel[] - ParameterId["LineInterpolationModeUIItemSet"] = "lineInterpolationModeUiItemSet"; - // DPI_LineMarkerPositionUIItem, having type LineMarkerPositionUIItemPresModel - ParameterId["LineMarkerPositionUIItem"] = "lineMarkerPositionUiItem"; - // DPI_LineMarkerPositionUIItemSet, having type LineMarkerPositionUIItemPresModel[] - ParameterId["LineMarkerPositionUIItemSet"] = "lineMarkerPositionUiItemSet"; - // DPI_MarksCardDropdownItem, having type MarksCardDropdownItemPresModel - ParameterId["MarksCardDropdownItem"] = "marksCardDropdownItem"; - // DPI_TooltipDropdownItem, having type TooltipDropdownItemPresModel - ParameterId["TooltipDropdownItem"] = "tooltipDropdownItem"; - // DPI_TextDropdownItem, having type TextDropdownItemPresModel - ParameterId["TextDropdownItem"] = "textDropdownItem"; - // DPI_ColorDropdownItem, having type ColorDropdownItemPresModel - ParameterId["ColorDropdownItem"] = "colorDropdownItem"; - // DPI_SizeSliderPresModel, having type SizeSliderPresModel - ParameterId["SizeSliderPresModel"] = "sizeSliderPresModel"; - // DPI_InflectionPoint, having type InflectionPointPresModel - ParameterId["InflectionPoint"] = "inflectionPoint"; - // DPI_InflectionPoints, having type InflectionPointPresModel[] - ParameterId["InflectionPoints"] = "inflectionPoints"; - // DPI_Notch, having type NotchPresModel - ParameterId["Notch"] = "notch"; - // DPI_Notches, having type NotchPresModel[] - ParameterId["Notches"] = "notches"; - // DPI_MarkSizeOptionsPresModel, having type MarkSizeOptionsPresModel - ParameterId["MarkSizeOptionsPresModel"] = "markSizeOptionsPresModel"; - // DPI_ModifyMarksInSet, having type AddOrRemoveMarks - ParameterId["ModifyMarksInSet"] = "addOrRemoveMarks"; - // DPI_MarkLabelsSpecification, having type MarkLabelsSpecificationPresModel - ParameterId["MarkLabelsSpecification"] = "markLabelsSpecification"; - // DPI_ColorPalette, having type ColorPalettePresModel - ParameterId["ColorPalette"] = "colorPalette"; - // DPI_SelectedColorPalette, having type ColorPalettePresModel - ParameterId["SelectedColorPalette"] = "selectedColorPalette"; - // DPI_ColorPalettes, having type ColorPalettePresModel[] - ParameterId["ColorPalettes"] = "colorPalettes"; - // DPI_ColorPaletteGroup, having type ColorPaletteGroupPresModel - ParameterId["ColorPaletteGroup"] = "colorPaletteGroup"; - // DPI_CatColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["CatColorPaletteGroups"] = "catColorPaletteGroups"; - // DPI_QColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["QColorPaletteGroups"] = "qColorPaletteGroups"; - // DPI_ColorPaletteCollection, having type ColorPaletteCollectionPresModel - ParameterId["ColorPaletteCollection"] = "colorPaletteCollection"; - // DPI_QuantitativeColor, having type QuantitativeColorPresModel - ParameterId["QuantitativeColor"] = "quantitativeColor"; - // DPI_CategoricalColor, having type CategoricalColorPresModel - ParameterId["CategoricalColor"] = "categoricalColor"; - // DPI_ItemColorPair, having type ItemColorPairPresModel - ParameterId["ItemColorPair"] = "itemColorPair"; - // DPI_ItemColorPairs, having type ItemColorPairPresModel[] - ParameterId["ItemColorPairs"] = "itemColorPairs"; - // DPI_VQLCommandResponse, having type VQLCommandResponsePresModel - ParameterId["VQLCommandResponse"] = "vqlCmdResponse"; - // DPI_LayoutStatus, having type LayoutStatusPresModel - ParameterId["LayoutStatus"] = "layoutStatus"; - // DPI_VizState, having type VizStatePresModel - ParameterId["VizState"] = "vizState"; - // DPI_VizStateList, having type VizStatePresModel[] - ParameterId["VizStateList"] = "vizStateList"; - // DPI_CommandResult, having type CommandResultPresModel - ParameterId["CommandResult"] = "cmdResult"; - // DPI_CommandResultList, having type CommandResultPresModel[] - ParameterId["CommandResultList"] = "cmdResultList"; - // DPI_URLAction, having type URLActionPresModel - ParameterId["URLAction"] = "urlAction"; - // DPI_URLActionList, having type URLActionPresModel[] - ParameterId["URLActionList"] = "urlActionList"; - // DPI_LegacyMenu, having type LegacyMenuPresModel - ParameterId["LegacyMenu"] = "legacyMenu"; - // DPI_LegacyMenus, having type LegacyMenuPresModel[] - ParameterId["LegacyMenus"] = "legacyMenus"; - // DPI_ConnectionAttemptInfo, having type ConnectionAttemptInfoPresModel - ParameterId["ConnectionAttemptInfo"] = "connectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfo, having type DataSourceConnectionAttemptInfoPresModel - ParameterId["DataSourceConnectionAttemptInfo"] = "dataSourceConnectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfos, having type DataSourceConnectionAttemptInfoPresModel[] - ParameterId["DataSourceConnectionAttemptInfos"] = "dataSourceConnectionAttemptInfos"; - // DPI_CommandValidationPresModel, having type CommandValidationPresModel - ParameterId["CommandValidationPresModel"] = "commandValidationPresModel"; - // DPI_WarningMessage, having type WarningMessagePresModel - ParameterId["WarningMessage"] = "warningMessagePresModel"; - // DPI_ApplicationPresModel, having type ApplicationPresModel - ParameterId["ApplicationPresModel"] = "applicationPresModel"; - // DPI_ToolbarPresModel, having type ToolbarPresModel - ParameterId["ToolbarPresModel"] = "toolbarPresModel"; - // DPI_WorkbookPresModel, having type WorkbookPresModel - ParameterId["WorkbookPresModel"] = "workbookPresModel"; - // DPI_ServerFonts, having type ServerFontsPresModel - ParameterId["ServerFonts"] = "serverFonts"; - // DPI_PublishDataSourceMetadataPresModel, having type PublishDataSourceMetadataPresModel - ParameterId["PublishDataSourceMetadataPresModel"] = "publishDataSourceMetadataPresModel"; - // DPI_DashboardPresModel, having type DashboardPresModel - ParameterId["DashboardPresModel"] = "dashboardPresModel"; - // DPI_DashboardSizePresModel, having type DashboardSizePresModel - ParameterId["DashboardSizePresModel"] = "dashboardSizePresModel"; - // DPI_DashboardSizeWithValidationPresModel, having type DashboardSizeWithValidationPresModel - ParameterId["DashboardSizeWithValidationPresModel"] = "dashboardSizeWithValidationPresModel"; - // DPI_DashboardInfoPresModel, having type DashboardInfoPresModel - ParameterId["DashboardInfoPresModel"] = "dashboardInfoPresModel"; - // DPI_VisualPresModel, having type VisualPresModel - ParameterId["VisualPresModel"] = "visual"; - // DPI_VisualPresModels, having type VisualPresModel[] - ParameterId["VisualPresModels"] = "visuals"; - // DPI_DropLinesPresModel, having type DropLinesPresModel - ParameterId["DropLinesPresModel"] = "dropLinesPresModel"; - // DPI_DropFieldPresModel, having type DropFieldPresModel - ParameterId["DropFieldPresModel"] = "dropFieldPresModel"; - // DPI_DropFieldResultPresModel, having type DropFieldResultPresModel - ParameterId["DropFieldResultPresModel"] = "dropFieldResultPresModel"; - // DPI_CurrentAxisRange, having type DataValueRangePresModel - ParameterId["CurrentAxisRange"] = "currentAxisRange"; - // DPI_CurrentAxisRangeNoTime, having type DataValueRangePresModel - ParameterId["CurrentAxisRangeNoTime"] = "currentAxisRangeNoTime"; - // DPI_DefaultAxisRange, having type DataValueRangePresModel - ParameterId["DefaultAxisRange"] = "defaultAxisRange"; - // DPI_NewAxisRange, having type DataValueRangePresModel - ParameterId["NewAxisRange"] = "newAxisRange"; - // DPI_AxisOptions, having type AxisOptionsPresModel - ParameterId["AxisOptions"] = "axis"; - // DPI_AxisMajorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMajorTicks"] = "axisMajorTicks"; - // DPI_AxisMinorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMinorTicks"] = "axisMinorTicks"; - // DPI_EditAxisDialog, having type EditAxisDialogPresModel - ParameterId["EditAxisDialog"] = "editAxisDialog"; - // DPI_MarkLabels, having type ScenePresModel - ParameterId["MarkLabels"] = "markLabels"; - // DPI_Scene, having type ScenePresModel - ParameterId["Scene"] = "scene"; - // DPI_MapServer, having type MapServerPresModel - ParameterId["MapServer"] = "mapServer"; - // DPI_VisualList, having type VisualListPresModel - ParameterId["VisualList"] = "visualList"; - // DPI_DrawFirst, having type VisualListPresModel[] - ParameterId["DrawFirst"] = "drawFirst"; - // DPI_DrawLast, having type VisualListPresModel[] - ParameterId["DrawLast"] = "drawLast"; - // DPI_DrawPane, having type VisualListPresModel[] - ParameterId["DrawPane"] = "drawPane"; - // DPI_UserPaneInfo, having type UserPaneInfoPresModel - ParameterId["UserPaneInfo"] = "userPaneInfo"; - // DPI_AnalyticsPane, having type AnalyticsPanePresModel - ParameterId["AnalyticsPane"] = "analyticsPane"; - // DPI_AnalyticsObjectItem, having type AnalyticsObjectItemPresModel - ParameterId["AnalyticsObjectItem"] = "analyticsObjectItem"; - // DPI_AnalyticsObjectItems, having type AnalyticsObjectItemPresModel[] - ParameterId["AnalyticsObjectItems"] = "analyticsObjectItems"; - // DPI_AnalyticsObjectGroup, having type AnalyticsObjectGroupPresModel - ParameterId["AnalyticsObjectGroup"] = "analyticsObjectGroup"; - // DPI_AnalyticsObjectGroups, having type AnalyticsObjectGroupPresModel[] - ParameterId["AnalyticsObjectGroups"] = "analyticsObjectGroups"; - // DPI_DropZoneItem, having type DropZoneItemPresModel - ParameterId["DropZoneItem"] = "dropZoneItem"; - // DPI_DropZoneItems, having type DropZoneItemPresModel[] - ParameterId["DropZoneItems"] = "dropZoneItems"; - // DPI_DropTargetInfo, having type DropTargetInfoPresModel - ParameterId["DropTargetInfo"] = "dropTargetInfo"; - // DPI_Pane, having type PanePresModel - ParameterId["Pane"] = "pane"; - // DPI_Panes, having type PanePresModel[] - ParameterId["Panes"] = "panes"; - // DPI_RadialSelectionDistanceInfo, having type RadialSelectionDistanceInfoPresModel - ParameterId["RadialSelectionDistanceInfo"] = "radialSelectionDistanceInfo"; - // DPI_MapScaleInfo, having type MapScaleInfoPresModel - ParameterId["MapScaleInfo"] = "mapScaleInfo"; - // DPI_RenderNode, having type RenderNodePresModel - ParameterId["RenderNode"] = "renderNode"; - // DPI_RenderNodes, having type RenderNodePresModel[] - ParameterId["RenderNodes"] = "renderNodes"; - // DPI_PredictionBand, having type PredictionBandPresModel - ParameterId["PredictionBand"] = "predictionBand"; - // DPI_PredictionWhisker, having type PredictionWhiskerPresModel - ParameterId["PredictionWhisker"] = "predictionWhisker"; - // DPI_DrawGroup, having type DrawPointsPresModel - ParameterId["DrawGroup"] = "drawGroup"; - // DPI_ClipReset, having type DrawItemPresModel - ParameterId["ClipReset"] = "clipReset"; - // DPI_DrawItem, having type DrawItemPresModel - ParameterId["DrawItem"] = "drawItem"; - // DPI_TransformPop, having type DrawItemPresModel - ParameterId["TransformPop"] = "transformPop"; - // DPI_TransformPush, having type DrawItemPresModel - ParameterId["TransformPush"] = "transformPush"; - // DPI_DrawItems, having type DrawItemPresModel[] - ParameterId["DrawItems"] = "drawItems"; - // DPI_ClipRect, having type DrawPointsPresModel - ParameterId["ClipRect"] = "clipRect"; - // DPI_DrawEllipse, having type DrawPointsPresModel - ParameterId["DrawEllipse"] = "drawEllipse"; - // DPI_DrawFillEllipse, having type DrawPointsPresModel - ParameterId["DrawFillEllipse"] = "drawFillEllipse"; - // DPI_DrawFillPolygon, having type DrawPointsPresModel - ParameterId["DrawFillPolygon"] = "drawFillPolygon"; - // DPI_DrawFillRect, having type DrawPointsPresModel - ParameterId["DrawFillRect"] = "drawFillRect"; - // DPI_DrawPolygon, having type DrawPointsPresModel - ParameterId["DrawPolygon"] = "drawPolygon"; - // DPI_DrawPolyline, having type DrawPointsPresModel - ParameterId["DrawPolyline"] = "drawPolyline"; - // DPI_DrawRect, having type DrawPointsPresModel - ParameterId["DrawRect"] = "drawRect"; - // DPI_DrawFillPath, having type DrawPathPresModel - ParameterId["DrawFillPath"] = "drawFillPath"; - // DPI_DrawPath, having type DrawPathPresModel - ParameterId["DrawPath"] = "drawPath"; - // DPI_DrawText, having type DrawTextPresModel - ParameterId["DrawText"] = "drawText"; - // DPI_DrawImage, having type DrawImagePresModel - ParameterId["DrawImage"] = "drawImage"; - // DPI_ImageTileInfo, having type ImageTileInfoPresModel - ParameterId["ImageTileInfo"] = "tileInfo"; - // DPI_ImageTileInfos, having type ImageTileInfoPresModel[] - ParameterId["ImageTileInfos"] = "tileInfos"; - // DPI_DrawImageTiles, having type DrawImageTilesPresModel - ParameterId["DrawImageTiles"] = "drawImageTiles"; - // DPI_DrawPen, having type DrawPenPresModel - ParameterId["DrawPen"] = "drawPen"; - // DPI_DrawSolidBrush, having type DrawSolidBrushPresModel - ParameterId["DrawSolidBrush"] = "drawSolidBrush"; - // DPI_DrawTextProperties, having type DrawTextPropertiesPresModel - ParameterId["DrawTextProperties"] = "drawTextProps"; - // DPI_DrawGradientBrush, having type DrawGradientBrushPresModel - ParameterId["DrawGradientBrush"] = "drawGradientBrush"; - // DPI_DrawTransform, having type DrawTransformPresModel - ParameterId["DrawTransform"] = "transform"; - // DPI_DrawAntialias, having type DrawAntialiasPresModel - ParameterId["DrawAntialias"] = "drawAntialias"; - // DPI_ImageDictionary, having type ImageDictionaryPresModel - ParameterId["ImageDictionary"] = "imageDictionary"; - // DPI_ColorDictionary, having type ColorDictionaryPresModel - ParameterId["ColorDictionary"] = "colorDictionary"; - // DPI_MarkShape, having type MarkShapePresModel - ParameterId["MarkShape"] = "markShape"; - // DPI_MarkShapeList, having type MarkShapePresModel[] - ParameterId["MarkShapeList"] = "markShapeList"; - // DPI_PaneDescriptor, having type PaneDescriptorPresModel - ParameterId["PaneDescriptor"] = "paneDescriptor"; - // DPI_PDMarks, having type PDMarksPresModel - ParameterId["PDMarks"] = "pdMarks"; - // DPI_PDMarksMap, having type Dictionary(of PDMarksPresModel) - ParameterId["PDMarksMap"] = "pdMarksMap"; - // DPI_LabelTextTable, having type LabelTextTable - ParameterId["LabelTextTable"] = "labelTextTable"; - // DPI_TextTableHelper, having type TextTableHelper - ParameterId["TextTableHelper"] = "textTableHelper"; - // DPI_GeometryTable, having type GeometryTable - ParameterId["GeometryTable"] = "geometryTable"; - // DPI_PaneMarks, having type PaneMarksPresModel - ParameterId["PaneMarks"] = "paneMarks"; - // DPI_PaneMarksList, having type PaneMarksPresModel[] - ParameterId["PaneMarksList"] = "paneMarksList"; - // DPI_BrushingSelection, having type SelectionPresModel - ParameterId["BrushingSelection"] = "brushing"; - // DPI_Selection, having type SelectionPresModel - ParameterId["Selection"] = "selection"; - // DPI_BrushingSelectionList, having type SelectionPresModel[] - ParameterId["BrushingSelectionList"] = "brushingSelectionList"; - // DPI_SelectionList, having type SelectionPresModel[] - ParameterId["SelectionList"] = "selectionList"; - // DPI_ShelfSelectionModel, having type ShelfSelectionPresModel - ParameterId["ShelfSelectionModel"] = "shelfSelectionModel"; - // DPI_ShelfSelectionModels, having type ShelfSelectionPresModel[] - ParameterId["ShelfSelectionModels"] = "shelfSelectionModels"; - // DPI_ShelfSelectionsModel, having type ShelfSelectionsPresModel - ParameterId["ShelfSelectionsModel"] = "shelfSelectionsModel"; - // DPI_DimValSelectionModel, having type DimensionValueSelectionPresModel - ParameterId["DimValSelectionModel"] = "dimensionValueSelectionModel"; - // DPI_DimValSelectionModels, having type DimensionValueSelectionPresModel[] - ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; - // DPI_HierValSelectionModel, having type HierarchicalValueSelectionPresModel - ParameterId["HierValSelectionModel"] = "hierarchicalValueSelectionModel"; - // DPI_HierValSelectionModels, having type HierarchicalValueSelectionPresModel[] - ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; - // DPI_QuantRangeSelectionModel, having type QuantativeRangeSelectionPresModel - ParameterId["QuantRangeSelectionModel"] = "quantativeRangeSelectionModel"; - // DPI_QuantRangeSelectionModels, having type QuantativeRangeSelectionPresModel[] - ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; - // DPI_QuantValueSelectionModel, having type QuantativeValueSelectionPresModel - ParameterId["QuantValueSelectionModel"] = "quantativeValueSelectionModel"; - // DPI_QuantValueSelectionModels, having type QuantativeValueSelectionPresModel[] - ParameterId["QuantValueSelectionModels"] = "quantativeValueSelectionModels"; - // DPI_LegendSelectionInfo, having type LegendSelectionInfoPresModel - ParameterId["LegendSelectionInfo"] = "legendSelectionInfo"; - // DPI_NodeReference, having type NodeReferencePresModel - ParameterId["NodeReference"] = "nodeReference"; - // DPI_PageReference, having type PageReferencePresModel - ParameterId["PageReference"] = "pageReference"; - // DPI_OrientedNodeReference, having type OrientedNodeReferencePresModel - ParameterId["OrientedNodeReference"] = "orientedNodeReference"; - // DPI_OrientedNodeReferences, having type OrientedNodeReferencePresModel[] - ParameterId["OrientedNodeReferences"] = "orientedNodeReferences"; - // DPI_SelectionData, having type SelectionDataPresModel - ParameterId["SelectionData"] = "selectionData"; - // DPI_HighlightedData, having type HighlightedDataPresModel - ParameterId["HighlightedData"] = "highlightedData"; - // DPI_Node, having type NodePresModel - ParameterId["Node"] = "node"; - // DPI_Nodes, having type NodePresModel[] - ParameterId["Nodes"] = "nodes"; - // DPI_SelectedNodes, having type NodePresModel[] - ParameterId["SelectedNodes"] = "selectedNodes"; - // DPI_UserAction, having type ActionPresModel - ParameterId["UserAction"] = "userAction"; - // DPI_UserActions, having type ActionPresModel[] - ParameterId["UserActions"] = "userActions"; - // DPI_LinkSpec, having type LinkSpecPresModel - ParameterId["LinkSpec"] = "linkSpec"; - // DPI_ActionSpecificationModel, having type ActionSpecificationPresModel - ParameterId["ActionSpecificationModel"] = "actionSpecification"; - // DPI_LinkSpecification, having type LinkSpecificationPresModel - ParameterId["LinkSpecification"] = "linkSpecification"; - // DPI_ScriptDescription, having type ScriptDescriptionPresModel - ParameterId["ScriptDescription"] = "scriptDescription"; - // DPI_ActionSource, having type ActionSourcePresModel - ParameterId["ActionSource"] = "actionSource"; - // DPI_FieldExprItem, having type FieldExprItemPresModel - ParameterId["FieldExprItem"] = "fieldExpressionItem"; - // DPI_FieldExprVector, having type FieldExprItemPresModel[] - ParameterId["FieldExprVector"] = "fieldExpressionVector"; - // DPI_ActionComboItem, having type ActionComboItemPresModel - ParameterId["ActionComboItem"] = "actionComboItem"; - // DPI_ActionComboVector, having type ActionComboItemPresModel[] - ParameterId["ActionComboVector"] = "actionComboVector"; - // DPI_ActionSourceCombo, having type ActionSourceComboPresModel - ParameterId["ActionSourceCombo"] = "actionSourceCombo"; - // DPI_ActionDestCombo, having type ActionComboPresModel - ParameterId["ActionDestCombo"] = "actionDestCombo"; - // DPI_ActionFieldList, having type ActionFieldListPresModel - ParameterId["ActionFieldList"] = "actionFieldList"; - // DPI_EditBrushAction, having type EditBrushActionPresModel - ParameterId["EditBrushAction"] = "editBrushAction"; - // DPI_UpdateActionSource, having type UpdateActionSourcePresModel - ParameterId["UpdateActionSource"] = "updateActionSource"; - // DPI_UpdateBrushAction, having type UpdateBrushActionPresModel - ParameterId["UpdateBrushAction"] = "updateBrushAction"; - // DPI_ActionWarnings, having type ActionWarningsPresModel - ParameterId["ActionWarnings"] = "actionWarnings"; - // DPI_EditHyperlinkAction, having type EditHyperlinkActionPresModel - ParameterId["EditHyperlinkAction"] = "editHyperlinkAction"; - // DPI_UpdateHyperlinkAction, having type UpdateHyperlinkActionPresModel - ParameterId["UpdateHyperlinkAction"] = "updateHyperlinkAction"; - // DPI_EditSheetLinkAction, having type EditSheetLinkActionPresModel - ParameterId["EditSheetLinkAction"] = "editSheetlinkAction"; - // DPI_UpdateSheetLinkAction, having type UpdateSheetLinkActionPresModel - ParameterId["UpdateSheetLinkAction"] = "updateSheetlinkAction"; - // DPI_ActionItem, having type ActionItemPresModel - ParameterId["ActionItem"] = "actionItem"; - // DPI_ActionItemList, having type ActionItemPresModel[] - ParameterId["ActionItemList"] = "actionItemList"; - // DPI_DataSegment, having type DataSegmentPresModel - ParameterId["DataSegment"] = "dataSegment"; - // DPI_DataSegments, having type Dictionary(of DataSegmentPresModel) - ParameterId["DataSegments"] = "dataSegments"; - // DPI_DataDictionary, having type DataDictionaryPresModel - ParameterId["DataDictionary"] = "dataDictionary"; - // DPI_VizData, having type VizDataPresModel - ParameterId["VizData"] = "vizData"; - // DPI_VizColumn, having type VizColumnPresModel - ParameterId["VizColumn"] = "vizColumn"; - // DPI_VizColumns, having type VizColumnPresModel[] - ParameterId["VizColumns"] = "vizColumns"; - // DPI_VizDataColumn, having type VizDataColumnPresModel - ParameterId["VizDataColumn"] = "vizDataColumn"; - // DPI_VizDataColumns, having type VizDataColumnPresModel[] - ParameterId["VizDataColumns"] = "vizDataColumns"; - // DPI_VizPaneColumn, having type VizPaneColumnPresModel - ParameterId["VizPaneColumn"] = "vizPaneColumn"; - // DPI_VizPaneColumns, having type VizPaneColumnPresModel[] - ParameterId["VizPaneColumns"] = "vizPaneColumns"; - // DPI_PaneColumns, having type PaneColumnsPresModel - ParameterId["PaneColumns"] = "paneColumns"; - // DPI_PaneColumnsList, having type PaneColumnsPresModel[] - ParameterId["PaneColumnsList"] = "paneColumnsList"; - // DPI_PaneColumnsData, having type PaneColumnsDataPresModel - ParameterId["PaneColumnsData"] = "paneColumnsData"; - // DPI_FilterContext, having type FilterContextPresModel - ParameterId["FilterContext"] = "filterContext"; - // DPI_UberTipPaneData, having type UberTipPaneDataPresModel - ParameterId["UberTipPaneData"] = "ubertipPaneData"; - // DPI_UberTipPaneDatas, having type UberTipPaneDataPresModel[] - ParameterId["UberTipPaneDatas"] = "ubertipPaneDatas"; - // DPI_UberTipData, having type UberTipDataPresModel - ParameterId["UberTipData"] = "ubertipData"; - // DPI_RefLineTip, having type RefLineTipPresModel - ParameterId["RefLineTip"] = "refLineTip"; - // DPI_RefLineTips, having type RefLineTipPresModel[] - ParameterId["RefLineTips"] = "refLineTips"; - // DPI_NumericBin, having type NumericBinPresModel - ParameterId["NumericBin"] = "numericBin"; - // DPI_NumericBinDialog, having type NumericBinDialogPresModel - ParameterId["NumericBinDialog"] = "numericBinDialog"; - // DPI_DomainRange, having type DomainRangePresModel - ParameterId["DomainRange"] = "domainRange"; - // DPI_BinSizeInfo, having type BinSizeInfoPresModel - ParameterId["BinSizeInfo"] = "binSizeInfo"; - // DPI_DetailedErrorDialog, having type DetailedErrorPresModel - ParameterId["DetailedErrorDialog"] = "detailedErrorDialog"; - // DPI_DragSourcePosition, having type ShelfDropPositionPresModel - ParameterId["DragSourcePosition"] = "shelfDragSourcePosition"; - // DPI_DropTargetPosition, having type ShelfDropPositionPresModel - ParameterId["DropTargetPosition"] = "shelfDropTargetPosition"; - // DPI_ShelfDropPosition, having type ShelfDropPositionPresModel - ParameterId["ShelfDropPosition"] = "shelfDropPosition"; - // DPI_ShelfDropPositions, having type ShelfDropPositionPresModel[] - ParameterId["ShelfDropPositions"] = "shelfDropPositions"; - // DPI_ShelfDropModel, having type ShelfDropPresModel - ParameterId["ShelfDropModel"] = "shelfDropModel"; - // DPI_ShelfDropModels, having type ShelfDropPresModel[] - ParameterId["ShelfDropModels"] = "shelfDropModels"; - // DPI_Drag, having type DragPresModel - ParameterId["Drag"] = "drag"; - // DPI_SceneElement, having type SceneElementPresModel - ParameterId["SceneElement"] = "sceneElement"; - // DPI_SceneElements, having type SceneElementPresModel[] - ParameterId["SceneElements"] = "sceneElements"; - // DPI_QuickFilterType, having type QuickFilterType - ParameterId["QuickFilterType"] = "quickFilterType"; - // DPI_CatMode, having type QuickFilterCategoricalMode - ParameterId["CatMode"] = "categoricalMode"; - // DPI_CatCtrl, having type QuickFilterCategoricalCtrl - ParameterId["CatCtrl"] = "categoricalControl"; - // DPI_QuantMode, having type QuickFilterQuantitativeMode - ParameterId["QuantMode"] = "quantitativeMode"; - // DPI_QuantCtrl, having type QuickFilterQuantitativeCtrl - ParameterId["QuantCtrl"] = "quantitativeControl"; - // DPI_ZoneCommon, having type ZoneCommonPresModel - ParameterId["ZoneCommon"] = "zoneCommon"; - // DPI_ZoneCommonListItems, having type ZoneCommonPresModel[] - ParameterId["ZoneCommonListItems"] = "zoneCommonListItems"; - // DPI_Zone, having type ZonePresModel - ParameterId["Zone"] = "zone"; - // DPI_Zones, having type Dictionary(of ZonePresModel) - ParameterId["Zones"] = "zones"; - // DPI_ImageZone, having type ImageZonePresModel - ParameterId["ImageZone"] = "imageZone"; - // DPI_WebZone, having type WebZonePresModel - ParameterId["WebZone"] = "webZone"; - // DPI_ZoneEdgeMoveType, having type ZoneEdgeMove - ParameterId["ZoneEdgeMoveType"] = "zoneEdgeMoveType"; - // DPI_ZoneSide, having type SideType - ParameterId["ZoneSide"] = "zoneSide"; - // DPI_SnapPoint, having type SnapPointPresModel - ParameterId["SnapPoint"] = "snapPoint"; - // DPI_SnapPoints, having type SnapPointPresModel[] - ParameterId["SnapPoints"] = "snapPoints"; - // DPI_TargetPreviewPair, having type DragDropTargetPreviewPairPresModel - ParameterId["TargetPreviewPair"] = "targetPreviewPair"; - // DPI_TargetPreviewPairs, having type DragDropTargetPreviewPairPresModel[] - ParameterId["TargetPreviewPairs"] = "targetPreviewPairs"; - // DPI_ContainerGuide, having type DragDropContainerGuidePresModel - ParameterId["ContainerGuide"] = "containerGuide"; - // DPI_ContainerGuides, having type DragDropContainerGuidePresModel[] - ParameterId["ContainerGuides"] = "containerGuides"; - // DPI_ZoneBorder, having type DragDropZoneBorderPresModel - ParameterId["ZoneBorder"] = "zoneBorder"; - // DPI_ZoneBorders, having type DragDropZoneBorderPresModel[] - ParameterId["ZoneBorders"] = "zoneBorders"; - // DPI_DashboardDragDrop, having type DashboardDragDropPresModel - ParameterId["DashboardDragDrop"] = "zoneDragDrop"; - // DPI_DragZoneResize, having type DragZoneResizePresModel - ParameterId["DragZoneResize"] = "zoneResize"; - // DPI_DashboardText, having type TextRegionPresModel - ParameterId["DashboardText"] = "dashboardText"; - // DPI_DashboardTitle, having type TextRegionPresModel - ParameterId["DashboardTitle"] = "dashboardTitle"; - // DPI_QuickFilterTitle, having type TextRegionPresModel - ParameterId["QuickFilterTitle"] = "quickFilterTitle"; - // DPI_VisualCaption, having type TextRegionPresModel - ParameterId["VisualCaption"] = "visualCaption"; - // DPI_VisualTitle, having type TextRegionPresModel - ParameterId["VisualTitle"] = "visualTitle"; - // DPI_ZoneTitleRegion, having type TextRegionPresModel - ParameterId["ZoneTitleRegion"] = "zoneTitle"; - // DPI_ForecastOptions, having type ForecastPresModel - ParameterId["ForecastOptions"] = "forecastOptions"; - // DPI_ForecastDescription, having type ForecastDescribePresModel - ParameterId["ForecastDescription"] = "forecastDescription"; - // DPI_ForecastDiagnose, having type ForecastDiagnosePresModel - ParameterId["ForecastDiagnose"] = "forecastDiagnose"; - // DPI_WorkgroupPublishObject, having type WorkgroupPublishObjectPresModel - ParameterId["WorkgroupPublishObject"] = "publishDataSource"; - // DPI_PublishPermissionsSummary, having type PublishPermissionsSummaryPresModel - ParameterId["PublishPermissionsSummary"] = "publishPermissionsSummary"; - // DPI_CheckNameResults, having type CheckNameResultsPresModel - ParameterId["CheckNameResults"] = "checkNameResults"; - // DPI_ValidatePublishViewsResult, having type ValidatePublishViewsResultPresModel - ParameterId["ValidatePublishViewsResult"] = "validatePublishViewsResult"; - // DPI_PublishAuthenticationSettings, having type PublishAuthenticationSettingsPresModel - ParameterId["PublishAuthenticationSettings"] = "publishAuthenticationSettings"; - // DPI_ManageDatasources, having type ManageDatasourcesPresModel - ParameterId["ManageDatasources"] = "manageDatasources"; - // DPI_CredentialsAuthSettings, having type CredentialsAuthSettingsPresModel - ParameterId["CredentialsAuthSettings"] = "credentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettings, having type ConnectionCredentialsAuthSettingsPresModel - ParameterId["ConnectionCredentialsAuthSettings"] = "connectionCredentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettingsList, having type ConnectionCredentialsAuthSettingsPresModel[] - ParameterId["ConnectionCredentialsAuthSettingsList"] = "connectionCredentialsAuthSettingsList"; - // DPI_PublishDatasourceFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel - ParameterId["PublishDatasourceFromWorkbookInfo"] = "publishDatasourceFromWorkbookInfo"; - // DPI_PublishDatasourcesFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel[] - ParameterId["PublishDatasourcesFromWorkbookInfo"] = "publishDatasourcesFromWorkbookInfo"; - // DPI_PublishSheet, having type PublishSheetPresModel - ParameterId["PublishSheet"] = "publishSheet"; - // DPI_PublishSheets, having type PublishSheetPresModel[] - ParameterId["PublishSheets"] = "publishSheets"; - // DPI_PublishObjectViews, having type PublishObjectViewsPresModel - ParameterId["PublishObjectViews"] = "publishObjectViews"; - // DPI_PublishObjectPublishSheetResults, having type PublishObjectPublishSheetResultsPresModel - ParameterId["PublishObjectPublishSheetResults"] = "publishObjectPublishSheetResults"; - // DPI_RefreshExtractSchedulingSettings, having type RefreshExtractSchedulingSettingsPresModel - ParameterId["RefreshExtractSchedulingSettings"] = "refreshExtractSchedulingSettings"; - // DPI_SetRefreshExtractScheduleResult, having type SetRefreshExtractScheduleResultPresModel - ParameterId["SetRefreshExtractScheduleResult"] = "setRefreshExtractScheduleResult"; - // DPI_CheckPublishObjectNameWarningsResults, having type CheckPublishObjectNameWarningsResultsPresModel - ParameterId["CheckPublishObjectNameWarningsResults"] = "checkPublishObjectNameWarningsResults"; - // DPI_PublishDatasourceOnWorkbookPublishResults, having type PublishDatasourceOnWorkbookPublishResultsPresModel - ParameterId["PublishDatasourceOnWorkbookPublishResults"] = "publishDatasourceOnWorkbookPublishResult"; - // DPI_PublishDataSourceResult, having type PublishDataSourceResultPresModel - ParameterId["PublishDataSourceResult"] = "publishDataSourceResult"; - // DPI_PublishWarningMessage, having type PublishWarningMessagePresModel - ParameterId["PublishWarningMessage"] = "publishWarningMessage"; - // DPI_MustDowngradeToPublishWarningMessagePresModel, having type PublishWarningMessagePresModel - ParameterId["MustDowngradeToPublishWarningMessagePresModel"] = "mustDowngradeToPublishWarningMessagePresModel"; - // DPI_PublishSelectedAttributes, having type PublishSelectedAttributesPresModel - ParameterId["PublishSelectedAttributes"] = "publishSelectedAttributes"; - // DPI_AutosaveFile, having type AutosaveFilePresModel - ParameterId["AutosaveFile"] = "autosaveFile"; - // DPI_AutosaveFiles, having type AutosaveFilePresModel[] - ParameterId["AutosaveFiles"] = "autosaveFiles"; - // DPI_FunctionGroup, having type FunctionGroup - ParameterId["FunctionGroup"] = "funcGrp"; - // DPI_FunctionGroups, having type FunctionGroup[] - ParameterId["FunctionGroups"] = "funcGrps"; - // DPI_FunctionArgType, having type FunctionArgType - ParameterId["FunctionArgType"] = "funcArgType"; - // DPI_FunctionArgTypes, having type FunctionArgType[] - ParameterId["FunctionArgTypes"] = "funcArgTypes"; - // DPI_CalculationStyle, having type CalcStyle - ParameterId["CalculationStyle"] = "calculationStyle"; - // DPI_Calculation, having type CalculationPresModel - ParameterId["Calculation"] = "calculation"; - // DPI_TypeInPill, having type CalculationPresModel - ParameterId["TypeInPill"] = "typeInPill"; - // DPI_CalcErrorInfo, having type CalcErrorInfoPresModel - ParameterId["CalcErrorInfo"] = "errorInfo"; - // DPI_CalcErrorInfos, having type CalcErrorInfoPresModel[] - ParameterId["CalcErrorInfos"] = "errorInfoList"; - // DPI_CalcualtionValidation, having type CalculationValidationPresModel - ParameterId["CalcualtionValidation"] = "calculationValidation"; - // DPI_ExpressionFunction, having type ExpressionFunctionPresModel - ParameterId["ExpressionFunction"] = "expressionFunc"; - // DPI_ExpressionFunctions, having type ExpressionFunctionPresModel[] - ParameterId["ExpressionFunctions"] = "expressionFuncList"; - // DPI_ExpressionFunctionsPM, having type ExpressionFunctionsPresModel - ParameterId["ExpressionFunctionsPM"] = "expressionFuncPm"; - // DPI_StyleToken, having type StyleTokenPresModel - ParameterId["StyleToken"] = "styleToken"; - // DPI_StyleTokens, having type StyleTokenPresModel[] - ParameterId["StyleTokens"] = "styleTokenList"; - // DPI_CalcEditorTextSelection, having type CalcEditorTextSelectionPresModel - ParameterId["CalcEditorTextSelection"] = "calcEditorTextSelection"; - // DPI_AutoCompleteItemType, having type AutoCompleteItemType - ParameterId["AutoCompleteItemType"] = "autocompleteType"; - // DPI_AutoCompleteItem, having type AutoCompleteItemPresModel - ParameterId["AutoCompleteItem"] = "autocompleteItem"; - // DPI_AutoCompleteItems, having type AutoCompleteItemPresModel[] - ParameterId["AutoCompleteItems"] = "autocompleteItemList"; - // DPI_CalculationAutoCompleteContextMenu, having type CalculationAutoCompleteContextMenuPresModel - ParameterId["CalculationAutoCompleteContextMenu"] = "calculationAutocompleteContextMenu"; - // DPI_CalcApplyResult, having type CalcApplyResult - ParameterId["CalcApplyResult"] = "calculationApplyResult"; - // DPI_RampBorderStyledBox, having type StyledBoxPresModel - ParameterId["RampBorderStyledBox"] = "rampBorderStyledBox"; - // DPI_StyledBox, having type StyledBoxPresModel - ParameterId["StyledBox"] = "styledBox"; - // DPI_GlobalStyledBox, having type StyledBoxPresModel - ParameterId["GlobalStyledBox"] = "globalStyledBox"; - // DPI_StyleContext, having type StyleContextPresModel - ParameterId["StyleContext"] = "styleContext"; - // DPI_CurrentTextStyle, having type TextStylePresModel - ParameterId["CurrentTextStyle"] = "currentTextStyle"; - // DPI_LabelTextStyle, having type TextStylePresModel - ParameterId["LabelTextStyle"] = "labelTextStyle"; - // DPI_OriginalTextStyle, having type TextStylePresModel - ParameterId["OriginalTextStyle"] = "originalTextStyle"; - // DPI_SelectedTextStyleModel, having type TextStylePresModel - ParameterId["SelectedTextStyleModel"] = "selectedTextStyleModel"; - // DPI_SwatchTextStyleModel, having type TextStylePresModel - ParameterId["SwatchTextStyleModel"] = "swatchTextStyle"; - // DPI_TextStyleModel, having type TextStylePresModel - ParameterId["TextStyleModel"] = "textStyle"; - // DPI_TitleStyleModel, having type TextStylePresModel - ParameterId["TitleStyleModel"] = "titleStyleModel"; - // DPI_PropertyBag, having type PropertyBagPresModel - ParameterId["PropertyBag"] = "propBagWrapper"; - // DPI_PresModelMap, having type Dictionary(of PropertyBagPresModel) - ParameterId["PresModelMap"] = "presModelMap"; - // DPI_PresentationLayerNotifications, having type PresModelMapPresModel - ParameterId["PresentationLayerNotifications"] = "presentationLayerNotifications"; - // DPI_SecondaryInfo, having type PresModelMapPresModel - ParameterId["SecondaryInfo"] = "secondaryInfo"; - // DPI_ClientDashboardUIMetric, having type ClientDashboardUIMetricPresModel - ParameterId["ClientDashboardUIMetric"] = "clientDashboardUiMetric"; - // DPI_ClientDashboardUIMetrics, having type ClientDashboardUIMetricPresModel[] - ParameterId["ClientDashboardUIMetrics"] = "clientDashboardUiMetrics"; - // DPI_ClientDashboardUIMetricContainer, having type ClientDashboardUIMetricContainerPresModel - ParameterId["ClientDashboardUIMetricContainer"] = "clientDashboardUiMetricContainer"; - // DPI_ExtSvcConfig, having type ExtSvcConfigPresModel - ParameterId["ExtSvcConfig"] = "extSvcConfig"; - // DPI_StoryboardSheetItem, having type StoryboardSheetItemPresModel - ParameterId["StoryboardSheetItem"] = "storyboardSheetItem"; - // DPI_StoryboardSheetItems, having type StoryboardSheetItemPresModel[] - ParameterId["StoryboardSheetItems"] = "storyboardSheetItems"; - // DPI_StoryboardSheetList, having type StoryboardSheetListPresModel - ParameterId["StoryboardSheetList"] = "storyboardSheetList"; - // DPI_FitToStoryBoardOptionItem, having type FitToStoryBoardOptionItemPresModel - ParameterId["FitToStoryBoardOptionItem"] = "fitToStoryboardOptionItem"; - // DPI_FitToStoryBoardOptionItems, having type FitToStoryBoardOptionItemPresModel[] - ParameterId["FitToStoryBoardOptionItems"] = "fitToStoryboardOptionItems"; - // DPI_FitToStoryBoardOptionList, having type FitToStoryBoardOptionListPresModel - ParameterId["FitToStoryBoardOptionList"] = "fitToStoryboardOptionList"; - // DPI_StoryPointNavItem, having type StoryPointNavItemPresModel - ParameterId["StoryPointNavItem"] = "storypointNavItem"; - // DPI_StoryPointNavItems, having type StoryPointNavItemPresModel[] - ParameterId["StoryPointNavItems"] = "storypointNavItems"; - // DPI_FlipboardNav, having type FlipboardNavPresModel - ParameterId["FlipboardNav"] = "flipboardNav"; - // DPI_ScrollBarStyle, having type ScrollBarStylePresModel - ParameterId["ScrollBarStyle"] = "scrollBarStyle"; - // DPI_DashboardZoneLayoutPane, having type DashboardZoneLayoutPanePresModel - ParameterId["DashboardZoneLayoutPane"] = "dashboardZoneLayoutPane"; - // DPI_SelectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["SelectedStoryPointStyle"] = "selectedStoryPointStyle"; - // DPI_UnselectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["UnselectedStoryPointStyle"] = "unselectedStoryPointStyle"; - // DPI_FlipboardNavStyle, having type FlipboardNavStylePresModel - ParameterId["FlipboardNavStyle"] = "flipboardNavStyle"; - // DPI_StoryPoint, having type StoryPointPresModel - ParameterId["StoryPoint"] = "storyPoint"; - // DPI_StoryPoints, having type Dictionary(of StoryPointPresModel) - ParameterId["StoryPoints"] = "storyPoints"; - // DPI_Flipboard, having type FlipboardPresModel - ParameterId["Flipboard"] = "flipboard"; - // DPI_StoryPair, having type StoryPairPresModel - ParameterId["StoryPair"] = "storyPair"; - // DPI_StoryPairs, having type StoryPairPresModel[] - ParameterId["StoryPairs"] = "storyPairs"; - // DPI_StoryboardPM, having type StoryboardPresModel - ParameterId["StoryboardPM"] = "storyboardPm"; - // DPI_HiDpiIconDictionary, having type ImageCollectionPresModel - ParameterId["HiDpiIconDictionary"] = "hiDpiIconDictionary"; - // DPI_IconDictionary, having type ImageCollectionPresModel - ParameterId["IconDictionary"] = "iconDictionary"; - // DPI_IconResourceDictionary, having type ImageResourceCollectionPresModel - ParameterId["IconResourceDictionary"] = "iconResDictionary"; - // DPI_DataPreviewWindowMessage, having type DataPreviewWindowMessagePresModel - ParameterId["DataPreviewWindowMessage"] = "dataPreviewWindowMessage"; - // DPI_DataSourceData, having type DataSourceDataPresModel - ParameterId["DataSourceData"] = "dataSrcData"; - // DPI_DataSourceSort, having type DataSourceSortPresModel - ParameterId["DataSourceSort"] = "dataSrcSort"; - // DPI_ColumnInfo, having type DSColumnInfoPresModel - ParameterId["ColumnInfo"] = "columnInfo"; - // DPI_ColumnInfos, having type DSColumnInfoPresModel[] - ParameterId["ColumnInfos"] = "columnInfos"; - // DPI_DataFormatter, having type DVFormatter - ParameterId["DataFormatter"] = "dataFormatter"; - // DPI_JoinDescription, having type JoinDescriptionPresModel - ParameterId["JoinDescription"] = "joinDescription"; - // DPI_JoinDescriptions, having type Dictionary(of JoinDescriptionPresModel) - ParameterId["JoinDescriptions"] = "joinDescriptions"; - // DPI_FileTableInfo, having type FileTableInfoPresModel - ParameterId["FileTableInfo"] = "fileTableInfo"; - // DPI_FieldMapping, having type FieldMappingPresModel - ParameterId["FieldMapping"] = "fieldMapping"; - // DPI_FieldMappingData, having type FieldMappingDataPresModel - ParameterId["FieldMappingData"] = "fieldMappingData"; - // DPI_FieldMappingDataVector, having type FieldMappingDataPresModel[] - ParameterId["FieldMappingDataVector"] = "fieldMappingDataVector"; - // DPI_FrameFinder, having type FrameFinderPresModel - ParameterId["FrameFinder"] = "frameFinder"; - // DPI_SheetLinkFieldMapping, having type SheetLinkFieldMappingPresModel - ParameterId["SheetLinkFieldMapping"] = "sheetLinkFieldMapping"; - // DPI_UnionInfo, having type UnionInfoPresModel - ParameterId["UnionInfo"] = "unionInfo"; - // DPI_UnionTableInfo, having type UnionTableInfoPresMode - ParameterId["UnionTableInfo"] = "unionTableInfo"; - // DPI_UnionTableInfos, having type UnionTableInfoPresModel[] - ParameterId["UnionTableInfos"] = "unionTableInfos"; - // DPI_ConnectionPBUnionInfo, having type PBUnionInfoPresModel - ParameterId["ConnectionPBUnionInfo"] = "connectionPbunionInfo"; - // DPI_ConnectionPBUnionInfos, having type PBUnionInfoPresModel[] - ParameterId["ConnectionPBUnionInfos"] = "connectionPbunionInfos"; - // DPI_JoinClause, having type JoinClausePresModel - ParameterId["JoinClause"] = "joinClause"; - // DPI_JoinClauses, having type JoinClausePresModel[] - ParameterId["JoinClauses"] = "joinClauses"; - // DPI_JoinValidationResult, having type JoinValidationResultPresModel - ParameterId["JoinValidationResult"] = "joinValidationResult"; - // DPI_JoinTableInfo, having type JoinTableInfoPresModel - ParameterId["JoinTableInfo"] = "joinTableInfo"; - // DPI_ParameterInfo, having type JoinTableInfoPresModel - ParameterId["ParameterInfo"] = "parameterInfo"; - // DPI_JoinTableInfos, having type JoinTableInfoPresModel[] - ParameterId["JoinTableInfos"] = "joinTableInfos"; - // DPI_JoinOnCalcInfo, having type JoinOnCalcInfoPresModel - ParameterId["JoinOnCalcInfo"] = "joinOnCalcInfo"; - // DPI_ConnectionSummary, having type ConnectionSummaryPresModel - ParameterId["ConnectionSummary"] = "connectionSummary"; - // DPI_ConnectionSummaries, having type ConnectionSummaryPresModel[] - ParameterId["ConnectionSummaries"] = "connectionSummaries"; - // DPI_TopLevelConnectionDescription, having type TopLevelConnectionDescriptionPresModel - ParameterId["TopLevelConnectionDescription"] = "topLevelConnectionDescription"; - // DPI_DataConnectionTableViewMessages, having type DataConnectionTableViewMessagesPresModel - ParameterId["DataConnectionTableViewMessages"] = "dataConnectionTableViewMessages"; - // DPI_TextTransformScript, having type TextTransformScriptPresModel - ParameterId["TextTransformScript"] = "textTransformScript"; - // DPI_CalendarDateOptions, having type CalendarDateOptionsPresModel - ParameterId["CalendarDateOptions"] = "calendarDateOptions"; - // DPI_GoToWorksheetTooltipPresModel, having type GoToWorksheetTooltipPresModel - ParameterId["GoToWorksheetTooltipPresModel"] = "goToWorksheetTooltipPresModel"; - // DPI_TableCleaningPresModel, having type TableCleaningPresModel - ParameterId["TableCleaningPresModel"] = "tableCleaningPresModel"; - // DPI_PivotPresModel, having type PivotPresModel - ParameterId["PivotPresModel"] = "pivotPresModel"; - // DPI_PivotTreeItemPresModel, having type PivotTreeItemPresModel - ParameterId["PivotTreeItemPresModel"] = "pivotTreeItemPresModel"; - // DPI_PivotTreeItems, having type PivotTreeItemPresModel[] - ParameterId["PivotTreeItems"] = "pivotTreeItemsPresModel"; - // DPI_PivotDisplay, having type PivotDisplayPresModel - ParameterId["PivotDisplay"] = "pivotDisplay"; - // DPI_PivotTag, having type NameColumnsPairPresModel - ParameterId["PivotTag"] = "pivotTag"; - // DPI_PivotGroups, having type NameColumnsPairPresModel[] - ParameterId["PivotGroups"] = "pivotGroups"; - // DPI_DataSourceDropdown, having type DataSourceDropdownPresModel - ParameterId["DataSourceDropdown"] = "dataSourceDropdown"; - // DPI_ConnectionDropdown, having type ConnectionDropdownPresModel - ParameterId["ConnectionDropdown"] = "connectionDropdown"; - // DPI_ActivityEvent, having type ActivityEventPresModel - ParameterId["ActivityEvent"] = "activityEvent"; - // DPI_UIAutomation, having type UIAutomationPresModel - ParameterId["UIAutomation"] = "uiAutomation"; - // DPI_UIAutomationIndex, having type UIAutomationIndexPresModel - ParameterId["UIAutomationIndex"] = "uiAutomationIndex"; - // DPI_UIAutomationIndexList, having type UIAutomationIndexPresModel[] - ParameterId["UIAutomationIndexList"] = "uiAutomationIndexList"; - // DPI_UIAutomationComponentInfo, having type UIAutomationComponentInfoPresModel - ParameterId["UIAutomationComponentInfo"] = "uiAutomationComponentInfo"; - // DPI_UIAutomationComponentInfoList, having type UIAutomationComponentInfoPresModel[] - ParameterId["UIAutomationComponentInfoList"] = "uiAutomationComponentInfoList"; - // DPI_Geometry, having type GeometryPresModel - ParameterId["Geometry"] = "geometry"; - // DPI_MultiPoint, having type MultiPointPresModel - ParameterId["MultiPoint"] = "multiPoint"; - // DPI_MultiLine, having type MultiLinePresModel - ParameterId["MultiLine"] = "multiLine"; - // DPI_MultiPolygon, having type MultiPolygonPresModel - ParameterId["MultiPolygon"] = "multiPolygon"; - // DPI_Polygon, having type PolygonPresModel - ParameterId["Polygon"] = "polygon"; - // DPI_PolygonList, having type PolygonPresModel[] - ParameterId["PolygonList"] = "polygonList"; - // DPI_Line, having type LinePresModel - ParameterId["Line"] = "line"; - // DPI_LineList, having type LinePresModel[] - ParameterId["LineList"] = "lineList"; - // DPI_TabbedAuthentication, having type TabbedAuthenticationPresModel - ParameterId["TabbedAuthentication"] = "tabbedAuthentication"; - // DPI_TabbedAuthenticationTabInfo, having type TabbedAuthenticationTabInfoPresModel - ParameterId["TabbedAuthenticationTabInfo"] = "tabbedAuthenticationTabInfo"; - // DPI_TabbedAuthenticationTabInfos, having type TabbedAuthenticationTabInfoPresModel[] - ParameterId["TabbedAuthenticationTabInfos"] = "tabbedAuthenticationTabInfos"; - // DPI_GeographicSearchCandidate, having type GeographicSearchCandidatePresModel - ParameterId["GeographicSearchCandidate"] = "geographicSearchCandidate"; - // DPI_GeographicSearchCandidateList, having type GeographicSearchCandidatePresModel[] - ParameterId["GeographicSearchCandidateList"] = "geographicSearchCandidateList"; - // DPI_GeographicSearchResults, having type GeographicSearchPresModel - ParameterId["GeographicSearchResults"] = "geographicSearchResults"; - // DPI_ParamInfo, having type ParameterInfoPresModel - ParameterId["ParamInfo"] = "paramInfo"; - // DPI_ParamInfos, having type ParameterInfoPresModel[] - ParameterId["ParamInfos"] = "paramInfos"; - // DPI_ParamNamespaceInfo, having type ParameterNamespaceInfoInfoPresModel - ParameterId["ParamNamespaceInfo"] = "paramNamespaceInfo"; - // DPI_ParamNamespaceInfos, having type ParameterNamespaceInfoPresModel[] - ParameterId["ParamNamespaceInfos"] = "paramNamespaceInfos"; - // DPI_ParamRegistryInfo, having type ParameterRegistryInfoPresModel - ParameterId["ParamRegistryInfo"] = "paramRegistryInfo"; - // DPI_DataSourceProperties, having type DataSourcePropertiesPresModel - ParameterId["DataSourceProperties"] = "connectionProperties"; - // DPI_ConnectionTypePresModel, having type ConnectionTypePresModel - ParameterId["ConnectionTypePresModel"] = "connectionTypePresModel"; - // DPI_ConnectionTypes, having type ConnectionTypePresModel[] - ParameterId["ConnectionTypes"] = "connectionTypes"; - // DPI_ConnectionTypeGroupPresModel, having type ConnectionTypeGroupPresModel - ParameterId["ConnectionTypeGroupPresModel"] = "connectionTypeGroupPresModel"; - // DPI_SavedDataSourcePresModel, having type SavedDataSourcePresModel - ParameterId["SavedDataSourcePresModel"] = "savedDatasourcePresModel"; - // DPI_SavedDataSources, having type SavedDataSourcePresModel[] - ParameterId["SavedDataSources"] = "savedDatasources"; - // DPI_SavedDataSourcesPresModel, having type SavedDataSourcesPresModel - ParameterId["SavedDataSourcesPresModel"] = "savedDatasourcesPresModel"; - // DPI_OpenPaneItemPresModel, having type OpenPaneItemPresModel - ParameterId["OpenPaneItemPresModel"] = "openPaneItemPresModel"; - // DPI_OpenPaneItems, having type OpenPaneItemPresModel[] - ParameterId["OpenPaneItems"] = "openPaneItems"; - // DPI_OpenPaneItemsPresModel, having type OpenPaneItemsPresModel - ParameterId["OpenPaneItemsPresModel"] = "openPaneItemsPresModel"; - // DPI_VariableValue, having type VariableValuePresModel - ParameterId["VariableValue"] = "variableValue"; - // DPI_VariableValues, having type VariableValuePresModel[] - ParameterId["VariableValues"] = "variableValues"; - // DPI_ServerVariableValue, having type ServerVariableValuePresModel - ParameterId["ServerVariableValue"] = "serverVariableValue"; - // DPI_EditableVariableValue, having type EditableVariableValuePresModel - ParameterId["EditableVariableValue"] = "editableVariableValue"; - // DPI_ServerVariableMetadata, having type ServerVariableMetadataPresModel - ParameterId["ServerVariableMetadata"] = "serverVariableMetadata"; - // DPI_PromptVariable, having type PromptVariablePresModel - ParameterId["PromptVariable"] = "promptVariable"; - // DPI_PromptVariables, having type PromptVariablePresModel[] - ParameterId["PromptVariables"] = "promptVariables"; - // DPI_VariablePromptDialog, having type VariablePromptDialogPresModel - ParameterId["VariablePromptDialog"] = "variablePromptDialog"; - // DPI_VariableValueOperation, having type VariableValueOperationPresModel - ParameterId["VariableValueOperation"] = "variableValueOperation"; - // DPI_VariableValueOperations, having type VariableValueOperationPresModel[] - ParameterId["VariableValueOperations"] = "variableValueOperations"; - // DPI_TableOptionsPresModel, having type TableOptionsPresModel - ParameterId["TableOptionsPresModel"] = "tableOptionsPresModel"; - // DPI_ClientInfoPresModel, having type ClientInfoPresModel - ParameterId["ClientInfoPresModel"] = "clientInfoPresModel"; - // DPI_TableauFileInfoPresModel, having type TableauFileInfoPresModel - ParameterId["TableauFileInfoPresModel"] = "tableauFileInfoPresModel"; - // DPI_DebuggingInfoPresModel, having type DebuggingInfoPresModel - ParameterId["DebuggingInfoPresModel"] = "debuggingInfoPresModel"; - // DPI_RunningThreadInfoPresModel, having type RunningThreadInfoPresModel - ParameterId["RunningThreadInfoPresModel"] = "runningThreadInfoPresModel"; - // DPI_AboutDialogInfoPresModel, having type AboutDialogInfoPresModel - ParameterId["AboutDialogInfoPresModel"] = "aboutDialogInfoPresModel"; - // DPI_HybridUIShowcasePresModel, having type HybridUIShowcasePresModel - ParameterId["HybridUIShowcasePresModel"] = "hybridUiShowcasePresModel"; - // DPI_DefaultTextFormat, having type DefaultTextFormatPresModel - ParameterId["DefaultTextFormat"] = "defaultTextFormat"; - // DPI_MapBoxServerInfoPresModel, having type MapBoxServerInfoPresModel - ParameterId["MapBoxServerInfoPresModel"] = "mapboxServerInfoPresModel"; - // DPI_WMSServerInfoPresModel, having type WMSServerInfoPresModel - ParameterId["WMSServerInfoPresModel"] = "wmsServerInfoPresModel"; - // DPI_MapSourceConflictPresModel, having type MapSourceConflictPresModel - ParameterId["MapSourceConflictPresModel"] = "mapSourceConflictPresModel"; - // DPI_EnumeratedSetDialogPresModel, having type EnumeratedSetDialogPresModel - ParameterId["EnumeratedSetDialogPresModel"] = "enumeratedSetDialogPresModel"; - // DPI_EditAliasesDialog, having type EditAliasesDialogPresModel - ParameterId["EditAliasesDialog"] = "editAliasesDialogPresModel"; - // DPI_AliasesPresModel, having type AliasesPresModel - ParameterId["AliasesPresModel"] = "aliasesPresModel"; - // DPI_ClearAliasesPresModel, having type AliasesPresModel - ParameterId["ClearAliasesPresModel"] = "clearAliasesPresModel"; - // DPI_NewAliasesPresModel, having type NewAliasesPresModel - ParameterId["NewAliasesPresModel"] = "newAliasesPresModel"; - // DPI_AliasPresModel, having type AliasPresModel - ParameterId["AliasPresModel"] = "aliasPresModel"; - // DPI_AliasItem, having type AliasItemPresModel - ParameterId["AliasItem"] = "aliasItem"; - // DPI_DuplicateAliasItem, having type AliasItemPresModel - ParameterId["DuplicateAliasItem"] = "duplicateAliasItem"; - // DPI_AliasList, having type AliasItemPresModel[] - ParameterId["AliasList"] = "aliasList"; - // DPI_AliasResultItem, having type AliasResultItemPresModel - ParameterId["AliasResultItem"] = "aliasResultItem"; - // DPI_AliasResultList, having type AliasResultItemPresModel[] - ParameterId["AliasResultList"] = "aliasResultList"; - // DPI_AliasResults, having type AliasResultsPresModel - ParameterId["AliasResults"] = "aliasResults"; - // DPI_EditSetDialogPresModel, having type EditSetDialogPresModel - ParameterId["EditSetDialogPresModel"] = "editSetDialogPresModel"; - // DPI_ConfirmationPresModel, having type ConfirmationPresModel - ParameterId["ConfirmationPresModel"] = "confirmationPresModel"; - // DPI_NotificationPresModel, having type NotificationPresModel - ParameterId["NotificationPresModel"] = "notificationPresModel"; - // DPI_RetargetDataSourceDialogPresModel, having type RetargetDataSourceDialogPresModel - ParameterId["RetargetDataSourceDialogPresModel"] = "retargetDatasourceDialogPresModel"; - // DPI_SharedFilterPresModel, having type SharedFilterPresModel - ParameterId["SharedFilterPresModel"] = "sharedFilterPresModel"; - // DPI_SharedFilterWorksheetInfo, having type SharedFilterWorksheetInfoPresModel - ParameterId["SharedFilterWorksheetInfo"] = "sharedFilterWorksheetInfo"; - // DPI_SharedFilterWorksheetInfoList, having type SharedFilterWorksheetInfoPresModel[] - ParameterId["SharedFilterWorksheetInfoList"] = "sharedFilterWorksheetInfoList"; - // DPI_FieldPickerTreePresModel, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModel"] = "fieldPickerTreePresModel"; - // DPI_FieldPickerTreePresModelSource, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelSource"] = "fieldPickerTreePresModelSource"; - // DPI_FieldPickerTreePresModelTarget, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelTarget"] = "fieldPickerTreePresModelTarget"; - // DPI_ErrorInfo, having type ErrorInfoPresModel - ParameterId["ErrorInfo"] = "errorInfoPresModel"; - // DPI_CustomSplitPresModel, having type CustomSplitPresModel - ParameterId["CustomSplitPresModel"] = "customSplitPresModel"; - // DPI_PageSetup, having type PageSetupPresModel - ParameterId["PageSetup"] = "pageSetup"; - // DPI_ServerConnectStatus, having type ServerConnectionStatus - ParameterId["ServerConnectStatus"] = "serverConnectionStatus"; - // DPI_GetFilterItemsResponse, having type GetFilterItemsResponsePresModel - ParameterId["GetFilterItemsResponse"] = "getFilterItemsResponse"; - // DPI_FilterSearchResponse, having type FilterSearchResponsePresModel - ParameterId["FilterSearchResponse"] = "filterSearchResponse"; - // DPI_FilterSearchWithIndexResponse, having type FilterSearchWithIndexResponsePresModel - ParameterId["FilterSearchWithIndexResponse"] = "filterSearchWithIndexResponse"; - // DPI_FilterShowChildrenResponse, having type FilterShowChildrenResponsePresModel - ParameterId["FilterShowChildrenResponse"] = "filterShowChildrenResponse"; - // DPI_EditDataServerConnection, having type EditDataServerConnectionPresModel - ParameterId["EditDataServerConnection"] = "editDataServerConnection"; - // DPI_ImagesEdit, having type ImagesEditPresModel - ParameterId["ImagesEdit"] = "imagesEdit"; - // DPI_BackgroundImage, having type BackgroundImagePresModel - ParameterId["BackgroundImage"] = "backgroundImage"; - // DPI_BackgroundImages, having type BackgroundImagePresModel[] - ParameterId["BackgroundImages"] = "backgroundImages"; - // DPI_Predicate, having type PredicatePresModel - ParameterId["Predicate"] = "predicate"; - // DPI_Predicates, having type PredicatePresModel[] - ParameterId["Predicates"] = "predicates"; - // DPI_ImagesEditResult, having type ImagesEditResultPresModel - ParameterId["ImagesEditResult"] = "imagesEditResult"; - // DPI_SortDialogPresModel, having type SortDialogPresModel - ParameterId["SortDialogPresModel"] = "sortDialogPresModel"; - // DPI_CompoundTableCalc, having type CompoundTableCalculationPresModel - ParameterId["CompoundTableCalc"] = "compoundTableCalculationPresModel"; - // DPI_TableCalc, having type TableCalculationPresModel - ParameterId["TableCalc"] = "tableCalculationPresModel"; - // DPI_TableCalcs, having type TableCalculationPresModel[] - ParameterId["TableCalcs"] = "tableCalculationPresModels"; - // DPI_TableCalcIdentifier, having type TableCalcIdentifierPresModel - ParameterId["TableCalcIdentifier"] = "tableCalcIdentifier"; - // DPI_NestedTableCalcInfo, having type NestedTableCalcInfoPresModel - ParameterId["NestedTableCalcInfo"] = "nestedTableCalcInfo"; - // DPI_NestedTableCalcInfos, having type NestedTableCalcInfoPresModel[] - ParameterId["NestedTableCalcInfos"] = "nestedTableCalcInfos"; - // DPI_Ordering, having type TableCalcOrderingPresModel - ParameterId["Ordering"] = "tableCalcOrderingPresModel"; - // DPI_Cumulative, having type CumulativeTableCalcPresModel - ParameterId["Cumulative"] = "cumulativeTableCalcPresModel"; - // DPI_ReferenceOptions, having type TableCalcReferenceOptionsPresModel - ParameterId["ReferenceOptions"] = "tableCalcReferenceOptionsPresModel"; - // DPI_Difference, having type DifferenceTableCalcPresModel - ParameterId["Difference"] = "differenceTableCalcPresModel"; - // DPI_Window, having type WindowTableCalcPresModel - ParameterId["Window"] = "windowTableCalcPresModel"; - // DPI_PercentTotal, having type PercentTotalTableCalcPresModel - ParameterId["PercentTotal"] = "percentTotalTableCalcPresModel"; - // DPI_Rank, having type RankTableCalcPresModel - ParameterId["Rank"] = "rankTableCalcPresModel"; - // DPI_Custom, having type CustomTableCalcPresModel - ParameterId["Custom"] = "customTableCalcPresModel"; - // DPI_WebDataUrl, having type WebDataUrlPresModel - ParameterId["WebDataUrl"] = "webDataUrl"; - // DPI_VisitedWebDataConnectors, having type WebDataUrlPresModel[] - ParameterId["VisitedWebDataConnectors"] = "visitedWebDataConnectors"; - // DPI_WebDataSessionUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataSessionUrls"] = "webDataSessionUrls"; - // DPI_WebDataUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataUrls"] = "webDataUrls"; - // DPI_FieldPicker, having type FieldPickerPresModel - ParameterId["FieldPicker"] = "fieldPicker"; - // DPI_DescribeField, having type DescribeFieldPresModel - ParameterId["DescribeField"] = "describeField"; - // DPI_ShowDataPresModel, having type ShowDataPresModel - ParameterId["ShowDataPresModel"] = "showDataPresModel"; - // DPI_DataTablePresModel, having type ShowDataTablePresModel - ParameterId["DataTablePresModel"] = "dataTablePresModel"; - // DPI_DataTablePresModels, having type ShowDataTablePresModel[] - ParameterId["DataTablePresModels"] = "dataTablePresModels"; - // DPI_SummaryTablePresModels, having type ShowDataTablePresModel[] - ParameterId["SummaryTablePresModels"] = "summaryTablePresModels"; - // DPI_RefreshAllExtractsPresModel, having type RefreshAllExtractsPresModel - ParameterId["RefreshAllExtractsPresModel"] = "refeshAllExtractsPresModel"; - // DPI_RefreshExtractDataSourcePresModel, having type RefreshExtractDataSourcePresModel - ParameterId["RefreshExtractDataSourcePresModel"] = "refreshExtractDatasourcePresModel"; - // DPI_RefreshExtractDataSourceList, having type RefreshExtractDataSourcePresModel[] - ParameterId["RefreshExtractDataSourceList"] = "refreshExtractDatasourceList"; - // DPI_ExtractHistoryPresModel, having type ExtractHistoryPresModel - ParameterId["ExtractHistoryPresModel"] = "extractHistoryPresModel"; - // DPI_ExtractHistoryItemPresModel, having type ExtractHistoryItemPresModel - ParameterId["ExtractHistoryItemPresModel"] = "extractHistoryItem"; - // DPI_ExtractHistoryList, having type ExtractHistoryItemPresModel[] - ParameterId["ExtractHistoryList"] = "extractHistoryList"; - // DPI_DataProviderPresModel, having type DataProviderPresModel - ParameterId["DataProviderPresModel"] = "dataProviderPresModel"; - // DPI_FormatItem, having type FormatItemPresModel - ParameterId["FormatItem"] = "formatItem"; - // DPI_FormatItemList, having type FormatItemPresModel[] - ParameterId["FormatItemList"] = "formatItemList"; - // DPI_FormatContainer, having type FormatContainerPresModel - ParameterId["FormatContainer"] = "formatContainer"; - // DPI_FormatPane, having type FormatPanePresModel - ParameterId["FormatPane"] = "formatPane"; - // DPI_FormatSection, having type FormatSectionPresModel - ParameterId["FormatSection"] = "formatSection"; - // DPI_CollapsibleSection, having type CollapsibleSectionPresModel - ParameterId["CollapsibleSection"] = "collapsibleSection"; - // DPI_CompositeContainer, having type CompositeContainerPresModel - ParameterId["CompositeContainer"] = "compositeContainer"; - // DPI_UnitContainer, having type UnitContainerPresModel - ParameterId["UnitContainer"] = "unitContainer"; - // DPI_TabGroup, having type TabGroupPresModel - ParameterId["TabGroup"] = "tabGroup"; - // DPI_Tab, having type TabPresModel - ParameterId["Tab"] = "tab"; - // DPI_FormatControl, having type FormatControlPresModel - ParameterId["FormatControl"] = "formatControl"; - // DPI_TextControl, having type TextControlPresModel - ParameterId["TextControl"] = "textControl"; - // DPI_NumericControl, having type NumericControlPresModel - ParameterId["NumericControl"] = "numericControl"; - // DPI_ColorControl, having type ColorControlPresModel - ParameterId["ColorControl"] = "colorControl"; - // DPI_ToggleControl, having type ToggleControlPresModel - ParameterId["ToggleControl"] = "toggleControl"; - // DPI_SelectorControl, having type SelectorControlPresModel - ParameterId["SelectorControl"] = "enumStringStyle"; - // DPI_StatsAnalyticSpec, having type StatsAnalyticSpecPresModel - ParameterId["StatsAnalyticSpec"] = "statsAnalyticSpec"; - // DPI_ClusterSpec, having type ClusterSpecPresModel - ParameterId["ClusterSpec"] = "clusteringSpec"; - // DPI_ClusterResults, having type ClusterResultsPresModel - ParameterId["ClusterResults"] = "clusterResults"; - // DPI_ClusterUnit, having type ClusterUnitPresModel - ParameterId["ClusterUnit"] = "cluster"; - // DPI_ClusterUnits, having type ClusterUnitPresModel[] - ParameterId["ClusterUnits"] = "clusterUnitPresModels"; - // DPI_ClusterFieldANOVA, having type ClusterFieldANOVAPresModel - ParameterId["ClusterFieldANOVA"] = "clusterFieldAnova"; - // DPI_ClusterFieldANOVATable, having type ClusterFieldANOVAPresModel[] - ParameterId["ClusterFieldANOVATable"] = "clusterFieldAnovaTablePresModel"; - // DPI_ClusterEdit, having type ClusterEditPresModel - ParameterId["ClusterEdit"] = "clusterEditPresModel"; - // DPI_ClusterDescription, having type ClusterDescribePresModel - ParameterId["ClusterDescription"] = "clusterDescription"; - // DPI_OutlierResults, having type OutlierResultsPresModel - ParameterId["OutlierResults"] = "outlierResults"; - // DPI_ConnectToDataServerSourceResult, having type ConnectToDataServerSourceResultPresModel - ParameterId["ConnectToDataServerSourceResult"] = "connectToDataServerSourceResult"; - // DPI_DataServerConnectionReturnStatus, having type ConnectToDataServerSourceResultPresModel - ParameterId["DataServerConnectionReturnStatus"] = "dataServerConnectionReturnStatus"; - // DPI_WebQuantitativeColorDialog, having type WebQuantitativeColorDialogPresModel - ParameterId["WebQuantitativeColorDialog"] = "quantitativeColorDialog"; - // DPI_WebCategoricalColorDialog, having type WebCategoricalColorDialogPresModel - ParameterId["WebCategoricalColorDialog"] = "categoricalColorDialog"; - // DPI_WebSaveDatasourceDialog, having type WebSaveDatasourceDialogPresModel - ParameterId["WebSaveDatasourceDialog"] = "saveDatasourceDialog"; - // DPI_BorderStyleSpec, having type StyleSpecPresModel - ParameterId["BorderStyleSpec"] = "borderStyleSpec"; - // DPI_HaloStyleSpec, having type StyleSpecPresModel - ParameterId["HaloStyleSpec"] = "haloStyleSpec"; - // DPI_MarksColorUberEffects, having type MarksColorUberEffectsPresModel - ParameterId["MarksColorUberEffects"] = "marksColorUberEffects"; - // DPI_CategoricalColorEncoding, having type CategoricalColorEncodingPresModel - ParameterId["CategoricalColorEncoding"] = "categoricalColorEncoding"; - // DPI_CategoricalShapeEncoding, having type CategoricalShapeEncodingPresModel - ParameterId["CategoricalShapeEncoding"] = "categoricalShapeEncoding"; - // DPI_ShapePalettePresModel, having type ShapePalettePresModel - ParameterId["ShapePalettePresModel"] = "shapePalettePresModel"; - // DPI_ShapePalettePresModels, having type ShapePalettePresModel[] - ParameterId["ShapePalettePresModels"] = "shapePalettePresModels"; - // DPI_DataSourceDateProperties, having type DataSourceDatePropertiesPresModel - ParameterId["DataSourceDateProperties"] = "datasourceDateProperties"; - // DPI_DatePropertiesDateFormat, having type DatePropertiesDateFormatPresModel - ParameterId["DatePropertiesDateFormat"] = "datePropertiesDateFormat"; - // DPI_DatePropertiesDateFormats, having type DatePropertiesDateFormatPresModel[] - ParameterId["DatePropertiesDateFormats"] = "datePropertiesDateFormats"; - // DPI_HierarchySelect, having type HierarchySelectModel - ParameterId["HierarchySelect"] = "hierarchySelect"; - // DPI_HierarchySelectMember, having type HierarchySelectMemberPresModel - ParameterId["HierarchySelectMember"] = "hierarchySelectMember"; - // DPI_HierarchySelectMemberList, having type HierarchySelectMemberPresModel[] - ParameterId["HierarchySelectMemberList"] = "hierarchySelectMemberList"; - // DPI_HierarchySetDefaultMember, having type HierarchySetDefaultMemberPresModel - ParameterId["HierarchySetDefaultMember"] = "hierarchySetDefaultMember"; - // DPI_SemiStructSchema, having type SemiStructSchemaPresModel - ParameterId["SemiStructSchema"] = "semiStructSchema"; - // DPI_SemiStructSchemaMember, having type SemiStructSchemaMemberPresModel - ParameterId["SemiStructSchemaMember"] = "semiStructSchemaMember"; - // DPI_SemiStructSchemaMemberList, having type SemiStructSchemaMemberPresModel[] - ParameterId["SemiStructSchemaMemberList"] = "semiStructSchemaMemberList"; - // DPI_ParameterEditInfo, having type ParameterEditInfoPresModel - ParameterId["ParameterEditInfo"] = "parameterEditInfo"; - // DPI_ProductParameterInfo, having type ProductParameterInfoPresModel - ParameterId["ProductParameterInfo"] = "productParameterInfo"; - // DPI_CaptionedDatasourceField, having type CaptionedDatasourceInfoPresModel - ParameterId["CaptionedDatasourceField"] = "captionedDatasourceField"; - // DPI_CaptionedDatasourceFields, having type CaptionedDatasourceInfoPresModel[] - ParameterId["CaptionedDatasourceFields"] = "captionedDatasourceFields"; - // DPI_EditedParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["EditedParameterRangeDomain"] = "editedParameterRangeDomain"; - // DPI_ParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["ParameterRangeDomain"] = "parameterRangeDomain"; - // DPI_ParameterListDomain, having type ParameterListDomainPresModel - ParameterId["ParameterListDomain"] = "parameterListDomain"; - // DPI_ParameterListDomainMember, having type ParameterListDomainMemberPresModel - ParameterId["ParameterListDomainMember"] = "parameterListDomainMember"; - // DPI_ParameterListDomainMembers, having type ParameterListDomainMemberPresModel[] - ParameterId["ParameterListDomainMembers"] = "parameterListDomainMembers"; - // DPI_IndexedDomainMember, having type IndexedDomainMemberPresModel - ParameterId["IndexedDomainMember"] = "indexedDomainMember"; - // DPI_IndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["IndexedDomainMembers"] = "indexedDomainMembers"; - // DPI_NewIndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["NewIndexedDomainMembers"] = "newIndexedDomainMembers"; - // DPI_ParameterListDomainDiff, having type parameter-list-domain-diff - ParameterId["ParameterListDomainDiff"] = "parameterListDomainDiff"; - // DPI_IndexRange, having type IndexRangePresModel - ParameterId["IndexRange"] = "indexRange"; - // DPI_IndexRanges, having type IndexRangePresModel[] - ParameterId["IndexRanges"] = "indexRanges"; - // DPI_CategoricalFind, having type CategoricalFindPresModel - ParameterId["CategoricalFind"] = "categoricalFind"; - // DPI_CaptionedDataValue, having type CaptionedDataValuePresModel - ParameterId["CaptionedDataValue"] = "captionedDataValue"; - // DPI_SelectedValueCaption, having type CaptionedDataValuePresModel - ParameterId["SelectedValueCaption"] = "selectedValueCaption"; - // DPI_DataValueCaptionList, having type CaptionedDataValuePresModel[] - ParameterId["DataValueCaptionList"] = "dataValueCatpionList"; - // DPI_RangeDataValue, having type RangeDataValuePresModel - ParameterId["RangeDataValue"] = "rangeDataValue"; - // DPI_ParameterRangeDataValue, having type RangeDataValuePresModel - ParameterId["ParameterRangeDataValue"] = "parameterRangeDataValue"; - // DPI_DataValueRangeCaptions, having type DataValueRangeCaptionsPresModel - ParameterId["DataValueRangeCaptions"] = "dataValueRangeCaptions"; - // DPI_IndependentDimension, having type IndependentDimensionPresModel - ParameterId["IndependentDimension"] = "independentDimension"; - // DPI_IndependentDimensions, having type IndependentDimensionPresModel[] - ParameterId["IndependentDimensions"] = "independentDimensions"; - // DPI_AttributePerspective, having type PerspectivePresModel - ParameterId["AttributePerspective"] = "attributePerspective"; - // DPI_CubePerspective, having type PerspectivePresModel - ParameterId["CubePerspective"] = "cubePerspective"; - // DPI_AttributePerspectives, having type PerspectivePresModel[] - ParameterId["AttributePerspectives"] = "attributePerspectives"; - // DPI_CalculatedMembersForEditingPresModel, having type EditCalculatedMembersPresModel - ParameterId["CalculatedMembersForEditingPresModel"] = "calculatedMembersForEditingPresmodel"; - // DPI_CalculatedMember, having type CalculatedMemberPresModel - ParameterId["CalculatedMember"] = "calculatedMember"; - // DPI_NewCalculatedMember, having type CalculatedMemberPresModel - ParameterId["NewCalculatedMember"] = "newCalculatedMember"; - // DPI_UpdatedCalculatedMember, having type CalculatedMemberPresModel - ParameterId["UpdatedCalculatedMember"] = "updatedCalculatedMember"; - // DPI_CalculatedMembersList, having type CalculatedMemberPresModel[] - ParameterId["CalculatedMembersList"] = "calculatedMembersList"; - // DPI_CalculatedMemberHierarchyItem, having type CalculatedMemberHierarchyItemPresModel - ParameterId["CalculatedMemberHierarchyItem"] = "calculatedMemberHierarchyItem"; - // DPI_CalculatedMemberHierarchyList, having type CalculatedMemberHierarchyItemPresModel[] - ParameterId["CalculatedMemberHierarchyList"] = "calculatedMemberHierarchyList"; - // DPI_SummaryCardPresModel, having type SummaryCardPresModel - ParameterId["SummaryCardPresModel"] = "summaryCard"; - // DPI_MeasureSummary, having type MeasureSummaryPresModel - ParameterId["MeasureSummary"] = "measureSummary"; - // DPI_MeasureSummaryList, having type MeasureSummaryPresModel[] - ParameterId["MeasureSummaryList"] = "measureSummaryList"; - // DPI_AnnotationPresModel, having type AnnotationPresModel - ParameterId["AnnotationPresModel"] = "annotation"; - // DPI_AnnotationList, having type AnnotationPresModel[] - ParameterId["AnnotationList"] = "annotationList"; - // DPI_AnnotationShapeStyle, having type AnnotationShapeStylePresModel - ParameterId["AnnotationShapeStyle"] = "annotationShapeStyle"; - // DPI_Telemetry, having type TelemetryPresModel - ParameterId["Telemetry"] = "telemetry"; - // DPI_DataSourceTelemetry, having type DataSourceTelemetryPresModel - ParameterId["DataSourceTelemetry"] = "dataSourceTelemetry"; - // DPI_DataSourceTelemetryList, having type DataSourceTelemetryPresModel[] - ParameterId["DataSourceTelemetryList"] = "dataSourceTelemetryList"; - // DPI_VisualSpecificationTelemetry, having type VisualSpecificationTelemetryPresModel - ParameterId["VisualSpecificationTelemetry"] = "visualSpecificationTelemetry"; - // DPI_VisualSpecificationTelemetryList, having type VisualSpecificationTelemetryPresModel[] - ParameterId["VisualSpecificationTelemetryList"] = "visualSpecificationTelemetryList"; - // DPI_UnderlyingDataTable, having type UnderlyingDataTablePresModel - ParameterId["UnderlyingDataTable"] = "underlyingDataTable"; - // DPI_UnderlyingDataTables, having type UnderlyingDataTablePresModel[] - ParameterId["UnderlyingDataTables"] = "underlyingDataTables"; - // DPI_UnderlyingDataTableColumn, having type UnderlyingDataTableColumnPresModel - ParameterId["UnderlyingDataTableColumn"] = "underlyingDataTableColumn"; - // DPI_UnderlyingDataTableColumns, having type UnderlyingDataTableColumnPresModel[] - ParameterId["UnderlyingDataTableColumns"] = "underlyingDataTableColumns"; - // DPI_PageCacheID, having type PageCacheIDPresModel - ParameterId["PageCacheID"] = "pageCacheId"; - // DPI_RelationalPageCacheID, having type PageCacheIDPresModel - ParameterId["RelationalPageCacheID"] = "relationalPageCacheId"; - // DPI_SearchResultsCacheID, having type PageCacheIDPresModel - ParameterId["SearchResultsCacheID"] = "searchResultsCacheId"; - // DPI_PageInfo, having type PageInfoPresModel - ParameterId["PageInfo"] = "pageInfo"; - // DPI_RowColPair, having type RowColPairPresModel - ParameterId["RowColPair"] = "rowColPair"; - // DPI_TopLeftRowCol, having type RowColPairPresModel - ParameterId["TopLeftRowCol"] = "topLeftRowCol"; - // DPI_BotRightRowCol, having type RowColPairPresModel - ParameterId["BotRightRowCol"] = "botRightRowCol"; - // DPI_RowColPairs, having type RowColPairPresModel[] - ParameterId["RowColPairs"] = "rowColPairs"; - // DPI_TableViewCacheInfo, having type TableViewCachePresModel - ParameterId["TableViewCacheInfo"] = "tableViewCacheInfo"; - // DPI_TableViewInfo, having type tableViewInfoPresModel - ParameterId["TableViewInfo"] = "tableViewInfo"; - // DPI_TableViewColumnInfo, having type TableViewColumnInfoPresModel - ParameterId["TableViewColumnInfo"] = "tableViewColumnInfo"; - // DPI_TableViewColumns, having type TableViewColumnInfoPresModel[] - ParameterId["TableViewColumns"] = "tableViewColumns"; - // DPI_TableViewPageItem, having type TableViewPageItemPresModel - ParameterId["TableViewPageItem"] = "tableViewPageItem"; - // DPI_TableViewPageColumns, having type TableViewPageItemPresModel[] - ParameterId["TableViewPageColumns"] = "tableViewPageColumns"; - // DPI_TableViewPageRow, having type TableViewPageRowPresModel - ParameterId["TableViewPageRow"] = "tableViewPageRow"; - // DPI_TableViewPageRows, having type TableViewPageRowPresModel[] - ParameterId["TableViewPageRows"] = "tableViewPageRows"; - // DPI_TableViewPage, having type TableViewPagePresModel - ParameterId["TableViewPage"] = "tableViewPage"; - // DPI_CategoricalValuePicker, having type CategoricalValuePickerPresModel - ParameterId["CategoricalValuePicker"] = "categoricalValuePicker"; - // DPI_AnnotationShapeBorderStyle, having type LineStylePresModel - ParameterId["AnnotationShapeBorderStyle"] = "annotationShapeBorderStyle"; - // DPI_AnotationShapeStrokeStyle, having type LineStylePresModel - ParameterId["AnotationShapeStrokeStyle"] = "annotationShapeStrokeStyle"; - // DPI_CategoricalBinEditorPresModel, having type CategoricalBinEditorPresModel - ParameterId["CategoricalBinEditorPresModel"] = "categoricalBinEditor"; - // DPI_CategoricalBinItem, having type CategoricalBinItemPresModel - ParameterId["CategoricalBinItem"] = "categoricalBinItemPresModel"; - // DPI_CategoricalBinItems, having type CategoricalBinItemPresModel[] - ParameterId["CategoricalBinItems"] = "categoricalBinItemPresModels"; - // DPI_MeasurePickerFieldInfo, having type MeasurePickerFieldInfoPresModel - ParameterId["MeasurePickerFieldInfo"] = "measurePickerFieldInfo"; - // DPI_MeasurePickerFields, having type MeasurePickerFieldInfoPresModel[] - ParameterId["MeasurePickerFields"] = "measurePickerFields"; - // DPI_MeasureAggregationInfo, having type MeasureAggregationInfoPresModel - ParameterId["MeasureAggregationInfo"] = "measureAggregationInfo"; - // DPI_MeasureAggregations, having type MeasureAggregationInfoPresModel[] - ParameterId["MeasureAggregations"] = "measureAggregations"; - // DPI_TuplePair, having type TuplePairPresModel - ParameterId["TuplePair"] = "tuplePair"; - // DPI_DimensionBound, having type DimensionBoundPresModel - ParameterId["DimensionBound"] = "dimensionBound"; - // DPI_PerspectiveBounds, having type DimensionBoundPresModel[] - ParameterId["PerspectiveBounds"] = "perspectiveBounds"; - // DPI_FilterPerspectiveInfoPresModel, having type FilterPerspectiveInfoPresModel - ParameterId["FilterPerspectiveInfoPresModel"] = "filterPerspectiveInfo"; - // DPI_TableRelevance, having type TableRelevancePresModel - ParameterId["TableRelevance"] = "tableRelevance"; - // DPI_AddInRegistrationPresModel, having type AddInRegistrationPresModel - ParameterId["AddInRegistrationPresModel"] = "addInRegistrationPresModel"; - // DPI_AddInRegistrationPresModelList, having type AddInRegistrationPresModel[] - ParameterId["AddInRegistrationPresModelList"] = "addInRegistrationPresModelList"; - // DPI_AddInDashboardAuthoringWidget, having type AddInDashboardWidgetPresModel - ParameterId["AddInDashboardAuthoringWidget"] = "addInDashboardAuthoringWidgetPresModel"; - // DPI_AddInInstance, having type AddInInstancePresModel - ParameterId["AddInInstance"] = "addInInstancePresModel"; - // DPI_AddInLocator, having type AddInLocatorPresModel - ParameterId["AddInLocator"] = "addInLocatorPresModel"; - // DPI_AddInContext, having type AddInContext - ParameterId["AddInContext"] = "addInContext"; - // DPI_AddInMode, having type AddInMode - ParameterId["AddInMode"] = "addInMode"; - // DPI_SetAxisRangeStartResult, having type SetAxisRangeResult - ParameterId["SetAxisRangeStartResult"] = "setAxisRangeStartResult"; - // DPI_SetAxisRangeEndResult, having type SetAxisRangeResult - ParameterId["SetAxisRangeEndResult"] = "setAxisRangeEndResult"; - // DPI_AddInEnvironment, having type AddInEnvironmentPresModel - ParameterId["AddInEnvironment"] = "addInEnvironmentPresModel"; - // DPI_AddInDashboardInfo, having type AddInDashboardInfoPresModel - ParameterId["AddInDashboardInfo"] = "addInDashboardInfoPresModel"; - // DPI_AddInSettingsInfo, having type AddInSettingsInfoPresModel - ParameterId["AddInSettingsInfo"] = "addInSettingsInfo"; - // DPI_AddInBootstrapInfo, having type AddInBootstrapInfoPresModel - ParameterId["AddInBootstrapInfo"] = "addInBootstrapInfo"; - // DPI_AddInDebugSettings, having type AddInDebugSettingsPresModel - ParameterId["AddInDebugSettings"] = "addInDebugSettings"; - // DPI_RichText, having type RichTextPresModel - ParameterId["RichText"] = "richText"; - // DPI_RichTextKeywordSubList, having type RichTextKeywordSubListPresModel - ParameterId["RichTextKeywordSubList"] = "richTextKeywordsSublist"; - // DPI_RichTextKeywordSubLists, having type RichTextKeywordSubListPresModel[] - ParameterId["RichTextKeywordSubLists"] = "richTextKeywordSublists"; - // DPI_RichTextKeywordList, having type RichTextKeywordListPresModel - ParameterId["RichTextKeywordList"] = "richTextKeywordsList"; - // DPI_RichTextBlockStyle, having type RichTextBlockStylePresModel - ParameterId["RichTextBlockStyle"] = "richTextBlockStyle"; - // DPI_RichTextContentStyle, having type RichTextContentStylePresModel - ParameterId["RichTextContentStyle"] = "richTextContentStyle"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var CommandIds_1 = __webpack_require__(12); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistry_1 = __webpack_require__(13); - var CommandRegistration_1 = __webpack_require__(14); - var CommandMappingRegistryFactory = (function () { - function CommandMappingRegistryFactory() { - } - /** - * Creates and populates a new CommandMappingRegistry for the specific version number requested - * - * @static - * @param {VersionNumber} versionNumber - * @returns {CommandMappingRegistry} - * @memberof CommandMappingRegistryFactory - */ - CommandMappingRegistryFactory.createCommandMappingRegistry = function (versionNumber) { - var result = new CommandMappingRegistry_1.CommandMappingRegistry(); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.InitializeAddIn, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInBootstrapInfo, Params_1.ParameterId.AddInBootstrapInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetUnderlyingData, CommandIds_1.DocCommands.GetUnderlyingData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IncludeAllColumns, Params_1.ParameterId.IncludeAllColumns), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSummaryData, CommandIds_1.DocCommands.GetSummaryData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingSummaryDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyCategoricalFilter, CommandIds_1.DocCommands.CategoricalFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterValues, Params_1.ParameterId.FilterAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterUpdateType, Params_1.ParameterId.FilterUpdateType), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IsExcludeMode, Params_1.ParameterId.Exclude, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyRangeFilter, CommandIds_1.DocCommands.RangeFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMin, Params_1.ParameterId.RangeMin, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMax, Params_1.ParameterId.RangeMax, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeNullOption, Params_1.ParameterId.Included, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearFilter, CommandIds_1.DocCommands.ClearExistingFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetSelectedMarks, CommandIds_1.DocCommands.GetSelectionData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectedData, Params_1.ParameterId.SelectionData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetHighlightedMarks, CommandIds_1.DocCommands.GetHighlightedData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HighlightedData, Params_1.ParameterId.HighlightedData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SaveAddInSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SettingsValues, Params_1.ParameterId.AddInSettings)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInSettingsInfo, Params_1.ParameterId.AddInSettingsInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetParametersForSheet, CommandIds_1.DocCommands.GetParameterModels, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfos, Params_1.ParameterId.ParameterCtrls))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.FindParameter, CommandIds_1.DocCommands.FindParameterModel, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterCaption, Params_1.ParameterId.FieldCaption, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.FieldNameString, true)], - // We might not get a response if the parameter isn't found - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl, true))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ChangeParameterValue, CommandIds_1.DocCommands.SetParameterValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.GlobalFieldName), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterValue, Params_1.ParameterId.ValueStr)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearSelectedMarks, CommandIds_1.DocCommands.ClearSelectedMarks, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)])); - return result; - }; - return CommandMappingRegistryFactory; - }()); - exports.CommandMappingRegistryFactory = CommandMappingRegistryFactory; - - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\typescript\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\commands-enum-ts.template', u'..\\typescript\\js-api\\api-core\\temp-pres-layer\\all-cmd-wrappers.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var DocCommands; - (function (DocCommands) { - // Saves the settings for the specified add-in id - DocCommands["SaveAddInSettings"] = "save-add-in-settings"; - // Gets the pres model for an add-in instance. - DocCommands["GetAddInInstancePresModel"] = "get-add-in-instance-pres-model"; - // Gets the pres model for the dashboard authoring widget for add-ins. - DocCommands["GetAddInDashboardAuthoringWidgetPresModel"] = "get-add-in-dashboard-authoring-widget-pres-model"; - // Gets the necessary information for an add-in to initialize itself. - DocCommands["InitializeAddInInstance"] = "initialize-add-in-instance"; - // Enables or disable javascript debugging of an add-in. - DocCommands["SetAddInJsDebuggingEnabled"] = "set-add-in-js-debugging-enabled"; - // Whether or not we should pause before loading. If missing, toggle the value - DocCommands["SetPauseBeforeLoadingAddIn"] = "set-pause-before-loading-add-in"; - // Reloads the Add-In widget and web page. - DocCommands["ReloadAddIn"] = "reload-add-in"; - // Retrieves the context menu for a dashboard add-in. - DocCommands["GetAddInZoneContextMenu"] = "get-add-in-zone-context-menu"; - // Gets the pres model which indicates what the debug settings for add-ins is. - DocCommands["GetAddInDebugSettingsPresModel"] = "get-add-in-debug-settings-pres-model"; - // Primary use is for building context menus - DocCommands["IsSelectionAnEditableParameter"] = "is-selection-an-editable-parameter"; - // Check if selection can be used as base for creating a new parameter. Primary use is for building context menus - DocCommands["GetCreateParameterState"] = "get-create-parameter-state"; - // Uses EditParameter to get and return info about the presmodel without maintaining the controller - DocCommands["GetParameterEditInfo"] = "get-parameter-edit-info"; - // Initialize the controller and its stored parameter then return a populated presmodel - DocCommands["CreateParameter"] = "create-parameter"; - // Same underlying logic as CreateParameter but edits rather than creating a new parameter - DocCommands["EditParameter_New"] = "edit-parameter-new"; - // Add a member of a parameter domain. Changes are applied to intermediate state and saved on commit - DocCommands["AddParameterMember"] = "add-parameter-member"; - // Edit a member of a parameter domain. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterMember"] = "edit-parameter-member"; - // Delete a series of ranges of members from the parameter list. - DocCommands["DeleteParameterMembers"] = "delete-parameter-members"; - // Copy a series of ranges of members of a parameter list - DocCommands["CopyParameterMembers"] = "copy-parameter-members"; - // Move a series of ranges of members of a parameter list - DocCommands["MoveParameterMembers"] = "move-parameter-members"; - // Change domain of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterDomainType"] = "edit-parameter-domain-type"; - // Change datatype of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterDataType"] = "edit-parameter-data-type"; - // Change display format of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterFormat"] = "edit-parameter-format"; - // Validate changes to a parameter's range domain and apply to intermediate state. Changes are saved on commit - DocCommands["EditParameterRange"] = "edit-parameter-range"; - // Edit the value of a non-list domain parameter - DocCommands["EditParameterValue"] = "edit-parameter-value"; - // Edit the value of a list domain parameter - DocCommands["EditParameterValueIndex"] = "edit-parameter-value-index"; - // Update the parameter caption and description - used to keep backend in sync. No verification/return is requried. - DocCommands["EditParameterDisplayInfo"] = "edit-parameter-display-info"; - // Update the domain of the parameter using a field (column or parameter) as a base - DocCommands["UpdateParameterFromField"] = "update-parameter-from-field"; - // Update the list domain of a parameter from a plain text representation of values - DocCommands["ParseParameterListDomain"] = "parse-parameter-list-domain"; - // Clears the parameter's domain of all members - DocCommands["ClearParameterListDomain"] = "clear-parameter-list-domain"; - // Creates or edits parameter from intermediate state. Takes a few properties that are cached in dialog and applies them pre-commit. - DocCommands["CommitParameterEdits"] = "commit-parameter-edits"; - // Gets the model for a particular parameter or returns an empty response if one is not found. - DocCommands["FindParameterModel"] = "find-parameter-model"; - // Gets the summary data for a worksheet - DocCommands["GetSummaryData"] = "get-summary-data"; - // Gets the underlying data for a worksheet - DocCommands["GetUnderlyingData"] = "get-underlying-data"; - // Select all marks that have the tuple's value for the given field . - DocCommands["SelectByTupleValue"] = "select-by-tuple-value"; - // Clear all the selected marks for the given worksheet - DocCommands["ClearSelectedMarks"] = "clear-selected-marks"; - // Creates or updates and existing filter based on the provided updates. - DocCommands["ApplyCategoricalFilterUpdates"] = "apply-categorical-filter-updates"; - // Search filter domain for text and return any matching tuples. - DocCommands["CategoricalFilterSearch"] = "categorical-filter-search"; - // Clear all members from the table of the identified cache. - DocCommands["CategoricalFilterClearRelationalCache"] = "categorical-filter-clear-relational-cache"; - // Create tuples for an existing filter from supplied text. - DocCommands["GetCategoricalFilterTuplesFromText"] = "get-categorical-filter-tuples-from-text"; - // Returns a presmodel backing a categorical filter, initializing a data cache for fast lookup of the filter's member domain. - DocCommands["GetCategoricalFilter"] = "get-categorical-filter"; - // Retrieves a page of data to display in the filter's list domain - DocCommands["GetCategoricalFilterDomainPage"] = "get-categorical-filter-domain-page"; - // Reset filter to committed state - DocCommands["ResetCategoricalFilterDeferred"] = "reset-categorical-filter-deferred"; - // Use uncommitted state to reset the filter's controller - DocCommands["RecreateCategoricalFilterController"] = "recreate-categorical-filter-controller"; - // Validates a Categroical Filter name. - DocCommands["ValidateCategoricalFilterName"] = "validate-categorical-filter-name"; - // Gets a summary of the filter pattern. - DocCommands["GetCategoricalFilterPatternSummary"] = "get-categorical-filter-pattern-summary"; - // Gets a summery of the filter condition. - DocCommands["GetCategoricalFilterConditionSummary"] = "get-categorical-filter-condition-summary"; - // Load the current minimum and maximum data value range for the condition field. - DocCommands["LoadCategoricalFilterConditionFieldValueRange"] = "load-categorical-filter-condition-field-value-range"; - // Validates a Categorical Filter's condition formula and re-writes it. - DocCommands["ValidateCategoricalFilterConditionFormula"] = "validate-categorical-filter-condition-formula"; - // Gets a summery of the filter limit. - DocCommands["GetCategoricalFilterLimitSummary"] = "get-categorical-filter-limit-summary"; - // Validates a Categorical Filter's limit count. - DocCommands["ValidateCategoricalFilterLimitCount"] = "validate-categorical-filter-limit-count"; - // Validates a Categorical Filter's limit formula, and re-writes the formula. - DocCommands["ValidateCategoricalFilterLimitFormula"] = "validate-categorical-filter-limit-formula"; - // Validates a Categorical Filter's limit. - DocCommands["ValidateCategoricalFilterLimit"] = "validate-categorical-filter-limit"; - // Inform cache when a user changes the range - DocCommands["CategoricalFilterSetRangeTypeDeferred"] = "categorical-filter-set-range-type-deferred"; - // Inform cache when a user changes whether the selection is exclusive - DocCommands["CategoricalFilterSetSelectionExclusiveDeferred"] = "categorical-filter-set-selection-exclusive-deferred"; - // Inform cache when a user changes whether an empty selection should be considered a selection of 'All' in a Manual selection mode - DocCommands["CategoricalFilterSetUseAllWhenManualIsEmptyDeferred"] = "categorical-filter-set-use-all-when-manual-is-empty-deferred"; - // Inform cache when a user alters the preset type - DocCommands["CategoricalFilterSetPresetTypeDeferred"] = "categorical-filter-set-preset-type-deferred"; - // Inform cache the user has selected one or more members - DocCommands["CategoricalFilterSelectRelationalMembersDeferred"] = "categorical-filter-select-relational-members-deferred"; - // Inform cache the user has deselected one or more members - DocCommands["CategoricalFilterDeselectRelationalMembersDeferred"] = "categorical-filter-deselect-relational-members-deferred"; - // Inform cache when a user selects everything in the domain - DocCommands["CategoricalFilterSelectAllRelationalMembersDeferred"] = "categorical-filter-select-all-relational-members-deferred"; - // Inform cache when a user deselects everything in the domain - DocCommands["CategoricalFilterDeselectAllRelationalMembersDeferred"] = "categorical-filter-deselect-all-relational-members-deferred"; - // Inform cache the user wants to see a different domain (e.g. relevant values only) - DocCommands["CategoricalFilterSetDomainTypeDeferred"] = "categorical-filter-set-domain-type-deferred"; - // Set whether filters apply to totals as well as non-totals table calcs - DocCommands["FilterApplyToTotalTableCalcs"] = "filter-apply-to-total-table-calcs"; - // Gets the axis options . - DocCommands["GetAxisOptions"] = "get-axis-options"; - // Reset the axis options . - DocCommands["ResetAxisOptions"] = "reset-axis-options"; - // Show axis edit dialog - DocCommands["ShowEditAxisDialog"] = "show-edit-axis-dialog"; - // Sets the axis direction - DocCommands["SetAxisReversed"] = "set-axis-reversed"; - // Sets the axis scale type - DocCommands["SetAxisScaleType"] = "set-axis-scale-type"; - // Sets the main title of a quantitative axis - DocCommands["SetAxisTitle"] = "set-axis-title"; - // Sets the subtitle of a quantitative axis - DocCommands["SetAxisSubtitle"] = "set-axis-subtitle"; - // Sets whether we should use the automatic subtitle for a quantitative axis - DocCommands["SetAxisUseAutomaticSubtitle"] = "set-axis-use-automatic-subtitle"; - // Sets the axis range type of a quantitative axis - DocCommands["SetAxisRangeType"] = "set-axis-range-type"; - // Sets whether or not to force-include zero on a quantitative axis - DocCommands["SetAxisIncludeZero"] = "set-axis-include-zero"; - // Sets new min/max range endings for axis - DocCommands["SetAxisRange"] = "set-axis-range"; - // Synchronize dual axes on a folded quantitative axis - DocCommands["SetAxisFoldState"] = "set-axis-fold-state"; - // - DocCommands["GetHighlightedData"] = "get-highlighted-data"; - // - DocCommands["GetSelectionData"] = "get-selection"; - // - DocCommands["Select"] = "select"; - // - DocCommands["SelectAll"] = "select-all"; - // - DocCommands["SelectByValue"] = "select-by-value"; - // - DocCommands["SelectNoneIncludingMaster"] = "select-none-including-master"; - // - DocCommands["AddManualItemsToFilter"] = "add-manual-items-to-filter"; - // - DocCommands["CategoricalFilter"] = "categorical-filter"; - // - DocCommands["CategoricalFilterByIndex"] = "categorical-filter-by-index"; - // - DocCommands["ChangeSharedFilter"] = "change-shared-filter"; - // - DocCommands["ClearContextFilters"] = "clear-context-filters"; - // - DocCommands["ClearExistingFilter"] = "clear-existing-filter"; - // - DocCommands["DefaultFilter"] = "default-filter"; - // - DocCommands["FilterGeo"] = "filter-geo"; - // - DocCommands["FilterNeg"] = "filter-neg"; - // - DocCommands["FilterNulls"] = "filter-nulls"; - // - DocCommands["FilterTargets"] = "filter-targets"; - // - DocCommands["GetSharedFilterPresModel"] = "get-shared-filter-pres-model"; - // - DocCommands["HierarchicalFilter"] = "hierarchical-filter"; - // - DocCommands["KeepOnlyOrExclude"] = "keep-only-or-exclude"; - // - DocCommands["RangeFilter"] = "range-filter"; - // - DocCommands["RelDateFilter"] = "relative-date-filter"; - // - DocCommands["ResetFilter"] = "reset-filter"; - // - DocCommands["ShowGeoAtDefault"] = "show-geo-at-default"; - // - DocCommands["ShowSVAtDefault"] = "show-sv-at-default"; - // - DocCommands["ToggleLockQuickFilters"] = "toggle-lock-quick-filters"; - // - DocCommands["AddDataConnection"] = "add-data-connection"; - // - DocCommands["AddDrillPath"] = "add-drill-path"; - // - DocCommands["AddCredentialsFromKeychain"] = "add-credentials-from-keychain"; - // - DocCommands["AddCredentialsFromKeychainFile"] = "add-credentials-from-keychain-file"; - // - DocCommands["AddFieldFolder"] = "add-field-folder"; - // - DocCommands["AddSubtotals"] = "add-subtotals"; - // - DocCommands["AddToDrillPath"] = "add-to-drill-path"; - // - DocCommands["AddToFieldFolder"] = "add-to-field-folder"; - // - DocCommands["AggregateMeasuresFlag"] = "aggregate-measures"; - // - DocCommands["ApplyCalculation"] = "apply-calculation"; - // - DocCommands["ApplyPageSetupOptions"] = "apply-page-setup-options"; - // - DocCommands["ApplyTableOptions"] = "apply-table-options"; - // - DocCommands["ApplyTypeInPill"] = "apply-type-in-pill"; - // - DocCommands["Assert"] = "assert"; - // - DocCommands["AttemptConnectDataSourcesOnSheet"] = "attempt-connect-datasources-on-sheet"; - // - DocCommands["AttemptConnectWorkbook"] = "attempt-connect-workbook"; - // - DocCommands["AttemptDataSourcesConnection"] = "attempt-datasources-connection"; - // - DocCommands["AutoUpdates"] = "auto-update"; - // - DocCommands["BoundingBoxPan"] = "bounding-box-pan"; - // - DocCommands["Brush"] = "highlight"; - // - DocCommands["BrushSpecial"] = "highlight-special"; - // - DocCommands["BuildDataSchemaDataSourceContextMenu"] = "build-data-schema-data-source-context-menu"; - // - DocCommands["BuildDataSchemaContextMenu"] = "build-data-schema-context-menu"; - // - DocCommands["BuildDataSchemaFieldContextMenu"] = "build-data-schema-field-context-menu"; - // - DocCommands["BuildDataSchemaDrillPathContextMenu"] = "build-data-schema-drill-path-context-menu"; - // - DocCommands["BuildFileTableInfoPresModel"] = "build-file-table-info-pres-model"; - // - DocCommands["BuildSheetTabContextMenu"] = "build-sheet-tab-context-menu"; - // - DocCommands["CancelDataSourcePresModel"] = "cancel-datasource-pres-model"; - // - DocCommands["CatBinMergeSplitLabel"] = "categorical-bin-merge-split"; - // - DocCommands["CategoricalQuickFilterEdit"] = "categorical-quick-filter-edit"; - // - DocCommands["CategoricalQuickFilterExcludeValues"] = "categorical-quick-filter-exclude-values"; - // - DocCommands["CategoricalQuickFilterIncludeAllWhenEmpty"] = "categorical-quick-filter-include-all-when-empty"; - // - DocCommands["CategoricalQuickFilterMode"] = "categorical-quick-filter-mode"; - // - DocCommands["CategoricalQuickFilterPattern"] = "categorical-quick-filter-pattern"; - // - DocCommands["CellSize"] = "cell-size"; - // - DocCommands["CellType"] = "cell-type"; - // - DocCommands["ChangeAggregation"] = "change-aggregation"; - // - DocCommands["ChangeAlphaLevel"] = "change-alpha-level"; - // - DocCommands["ChangeBorder"] = "change-border"; - // - DocCommands["ChangeFieldType"] = "change-field-type"; - // - DocCommands["ChangeForecastColumnType"] = "change-forecast-column-type"; - // - DocCommands["ChangeHalo"] = "change-halo"; - // - DocCommands["ChangeMarkers"] = "change-markers"; - // - DocCommands["ChangeSize"] = "change-size"; - // - DocCommands["ChangeSheetTabColor"] = "change-sheet-tab-color"; - // - DocCommands["ClearAllAxisRanges"] = "clear-axis-ranges"; - // - DocCommands["ClearCalcModel"] = "clear-calculation-model"; - // - DocCommands["ClearFilters"] = "clear-filters"; - // - DocCommands["ClearFormatting"] = "clear-formatting"; - // - DocCommands["ClearFuture"] = "clear-future"; - // - DocCommands["ClearLayout"] = "clear-layout"; - // - DocCommands["ClearQuickFilter"] = "clear-quick-filter"; - // - DocCommands["ClearSorts"] = "clear-sorts"; - // - DocCommands["CloseConnection"] = "close-connection"; - // - DocCommands["CloseDataSource"] = "close-data-source"; - // - DocCommands["ConnectionAddGoogleAnalyticsDimension"] = "connection-add-google-analytics-dimension"; - // - DocCommands["ConnectionAddGoogleAnalyticsMeasure"] = "connection-add-google-analytics-measure"; - // - DocCommands["ConnectionAddNewTable"] = "connection-add-new-table"; - // - DocCommands["ConnectionAddCoalesce"] = "connection-add-coalesce"; - // - DocCommands["ConnectionAddPivot"] = "connection-add-pivot"; - // - DocCommands["ConnectionConvertToUnionAndEdit"] = "connection-convert-to-union-and-edit"; - // - DocCommands["ConnectionConvertToUnion"] = "connection-convert-to-union"; - // - DocCommands["ConnectionEditUnion"] = "connection-edit-union"; - // - DocCommands["ConnectionAddOrEditBatchUnion"] = "connection-add-or-edit-batch-union"; - // - DocCommands["ConnectionChangeTableProperty"] = "connection-change-table-property"; - // - DocCommands["ConnectionCountEntity"] = "connection-count-entity"; - // - DocCommands["ConnectionDataServerFetchMoreDatasources"] = "connection-dataserver-fetch-more-datasources"; - // - DocCommands["ConnectionDataServerProjectSelect"] = "connection-dataserver-change-selected-project"; - // - DocCommands["ConnectionDataServerUpdateFetchParameters"] = "connection-dataserver-update-fetch-parameters"; - // - DocCommands["ConnectionDataServerFlushCache"] = "connection-dataserver-flush-cache"; - // - DocCommands["ConnectionDeleteAllTables"] = "connection-delete-all-tables"; - // - DocCommands["ConnectionDeleteTable"] = "connection-delete-table"; - // - DocCommands["ConnectionEditCaption"] = "connection-edit-caption"; - // - DocCommands["ConnectionEditGoogleAnalyticsAccount"] = "connection-edit-google-analytics-account"; - // - DocCommands["ConnectionEditGoogleAnalyticsDateRange"] = "connection-edit-google-analytics-date-range"; - // - DocCommands["ConnectionEditGoogleAnalyticsMeasureGroup"] = "connection-edit-google-analytics-measure-group"; - // - DocCommands["ConnectionToggleGAQueryPartitioning"] = "connection-toggle-ga-query-partitioning"; - // - DocCommands["ConnectionEditGoogleAnalyticsProperty"] = "connection-edit-google-analytics-property"; - // - DocCommands["ConnectionEditGoogleAnalyticsView"] = "connection-edit-google-analytics-view"; - // - DocCommands["ConnectionEditGoogleAnalyticsSegment"] = "connection-edit-google-analytics-segment"; - // - DocCommands["ConnectionEditJoinClauses"] = "connection-edit-join-clauses"; - // - DocCommands["ConnectionEditJoinType"] = "connection-edit-join-type"; - // - DocCommands["ConnectionEditSQLText"] = "connection-edit-sql-text"; - // - DocCommands["ConnectionFetchEntity"] = "connection-fetch-entity"; - // - DocCommands["ConnectionSetForceExtractRefresh"] = "connection-set-force-extract-refresh"; - // - DocCommands["ConnectionPrepareDataSourceForEdit"] = "connection-prepare-datasource-for-edit"; - // - DocCommands["ConnectionClearRefreshAttributes"] = "connection-clear-refresh-attributes"; - // - DocCommands["ConnectionRemoveGoogleAnalyticsDimension"] = "connection-remove-google-analytics-dimension"; - // - DocCommands["ConnectionRemoveGoogleAnalyticsMeasure"] = "connection-remove-google-analytics-measure"; - // - DocCommands["ConnectionRemoveCoalesce"] = "connection-remove-coalesce"; - // - DocCommands["ConnectionRemovePivot"] = "connection-remove-pivot"; - // - DocCommands["ConnectionAddDateParseFormats"] = "connection-add-date-parse-formats"; - // - DocCommands["ConnectionRenameTable"] = "connection-rename-table"; - // - DocCommands["ConnectionReplaceRelationWithSQLText"] = "connection-replace-relation-with-sql-text"; - // - DocCommands["ConnectionReplaceTable"] = "connection-replace-table"; - // - DocCommands["ConnectionResetTableAlias"] = "connection-reset-table-alias"; - // - DocCommands["ConnectionSelectCatalog"] = "connection-select-catalog"; - // - DocCommands["ConnectionSelectCube"] = "connection-select-cube"; - // - DocCommands["ConnectionSelectDatabase"] = "connection-select-database"; - // - DocCommands["ConnectionSelectSchema"] = "connection-select-schema"; - // - DocCommands["ConnectionSelectStoredProcedure"] = "connection-select-stored-procedure"; - // - DocCommands["ConnectionSelectWarehouse"] = "connection-select-warehouse"; - // - DocCommands["ConnectionSelectBigQueryLegacySQLCheckBox"] = "connection-select-bigquery-legacy-check"; - // - DocCommands["ConnectionToggleHasHeaderRow"] = "connection-toggle-has-header-row"; - // - DocCommands["ConnectionToggleTableCleaning"] = "connection-toggle-table-cleaning"; - // - DocCommands["ConnectionToggleUseExtract"] = "connection-toggle-use-extract"; - // - DocCommands["ConnectionViewTableCleaningResults"] = "connection-view-table-cleaning-results"; - // - DocCommands["ConnectToDataServerSource"] = "connect-data-server-datasource"; - // - DocCommands["ConsiderZerosEmptyFlag"] = "consider-zeros-empty"; - // - DocCommands["ConvertUnnamedFields"] = "convert-unnamed-fields"; - // - DocCommands["Crash"] = "crash"; - // - DocCommands["CreateAggregateRole"] = "create-aggregate-role"; - // - DocCommands["CreateConnection"] = "create-connection"; - // - DocCommands["CreateDefaultQuickFilter"] = "create-default-quick-filter"; - // - DocCommands["CreateTypeInPill"] = "create-type-in-pill"; - // - DocCommands["CustomDataGridFieldOrder"] = "custom-datagrid-field-order"; - // - DocCommands["CustomDateAggregation"] = "custom-date-aggregation"; - // - DocCommands["CustomSplitField"] = "custom-split-field"; - // - DocCommands["DebugAssertion"] = "debug-assertion"; - // - DocCommands["DecrementParameterValue"] = "decr-parameter-value"; - // - DocCommands["DeleteFields"] = "delete-calculation-fields-command"; - // - DocCommands["DeleteSheet"] = "delete-sheet"; - // - DocCommands["DescribeDrillPath"] = "describe-drill-path"; - // - DocCommands["DescribeSortFilter"] = "describe-sort-filter"; - // - DocCommands["DismissNullWart"] = "dismiss-null-wart"; - // - DocCommands["DomainQuickFilter"] = "domain-quick-filter"; - // - DocCommands["DoubleFreeCrash"] = "double-free"; - // - DocCommands["DropNowhere"] = "drop-nowhere"; - // - DocCommands["DropOnSchemaViewer"] = "drop-on-schema-viewer"; - // - DocCommands["DropOnShelf"] = "drop-on-shelf"; - // - DocCommands["DropOnCalcEditor"] = "drop-on-calc-editor"; - // - DocCommands["DropOnShowMe"] = "drop-on-showme"; - // - DocCommands["DropPrepare"] = "drop-prepare"; - // - DocCommands["DualAxis"] = "dual-axis"; - // - DocCommands["DuplicateSheet"] = "duplicate-sheet"; - // - DocCommands["EditCopyCalc"] = "edit-copy-calc"; - // - DocCommands["EditDropLines"] = "edit-drop-lines"; - // - DocCommands["EditEnumeratedGroup"] = "edit-enumerated-group"; - // - DocCommands["EditNestedGroup"] = "edit-nested-group"; - // - DocCommands["EditPill"] = "edit-pill"; - // - DocCommands["EditPrimitiveType"] = "edit-primitive-type"; - // - DocCommands["EnableAllBrushing"] = "enable-all-highlights"; - // - DocCommands["EnableQuickFilter"] = "enable-quick-filter"; - // - DocCommands["EnableSheetBrushing"] = "enable-sheet-highlights"; - // - DocCommands["EnableThemedBrushing"] = "enable-themed-highlights"; - // - DocCommands["EnumerateVariables"] = "enumerate-variables"; - // - DocCommands["EnumerateVariableSelectionValues"] = "enumerate-variable-selection-values"; - // - DocCommands["EstablishConnection"] = "establish-connection"; - // - DocCommands["EstablishMatchingConnections"] = "establish-matching-connections"; - // - DocCommands["ExportDataToText"] = "export-data-to-text"; - // - DocCommands["ExtSvcConfig"] = "ext-svc-config"; - // - DocCommands["ExtSvcConfigConnect"] = "ext-svc-config-connect"; - // - DocCommands["Extract"] = "extract"; - // - DocCommands["SetDataGridCurrentTable"] = "set-data-grid-current-table"; - // - DocCommands["FetchTableRelevance"] = "fetch-table-relevance"; - // - DocCommands["FetchCachedTableRelevance"] = "fetch-cached-table-relevance"; - // - DocCommands["FlipLabels"] = "flip-labels"; - // - DocCommands["FloatingToolbar"] = "zoom-controls"; - // - DocCommands["FloatingToolbarToggle"] = "zoom-controls-toggle"; - // - DocCommands["ForecastConfig"] = "forecast-config"; - // - DocCommands["ForecastToggle"] = "forecast-toggle"; - // - DocCommands["FormatWorkbook"] = "format-workbook"; - // - DocCommands["GeographicSearchQuery"] = "geographic-search-query"; - // - DocCommands["GeographicSearchLoadData"] = "geographic-search-load-data"; - // - DocCommands["GeographicSearchIsDataDoneLoading"] = "geographic-search-data-done-loading"; - // - DocCommands["GeographicSearchToggleVisibility"] = "geographic-search-toggle-visibility"; - // - DocCommands["GetEditConnectionPresModel"] = "get-edit-connection-pres-model"; - // - DocCommands["GetEditEnumeratedGroupPresModel"] = "get-edit-enumerated-group-pres-model"; - // - DocCommands["GetEditNestedGroupPresModel"] = "get-edit-nested-group-pres-model"; - // - DocCommands["GetFrameFinderPresModel"] = "get-frame-finder-pres-model"; - // - DocCommands["GetGoogleSheetsListPresModel"] = "get-google-sheets-list-pres-model"; - // - DocCommands["GetGoogleSheetPanePresModel"] = "get-google-sheet-pane-pres-model"; - // - DocCommands["GetInitialSQLPresModel"] = "get-initial-sql-pres-model"; - // - DocCommands["GetQueryBandingPresModel"] = "get-query-banding-pres-model"; - // - DocCommands["GetTabbedAuthenticationPresModel"] = "get-tabbed-authentication-pres-model"; - // - DocCommands["GetActiveSheet"] = "get-active-sheet"; - // - DocCommands["GetAlphaLevel"] = "get-alpha-level"; - // - DocCommands["GetAppConfig"] = "get-app-config"; - // - DocCommands["GetDisabledSecondaryDSFields"] = "get-disabled-secondaryds-fields"; - // - DocCommands["GetBlendingFields"] = "get-blending-fields"; - // - DocCommands["GetCalculationPresModel"] = "get-calculation-pres-model"; - // - DocCommands["GetCategoricalColor"] = "get-categorical-color"; - // - DocCommands["GetClientInfo"] = "get-client-info"; - // - DocCommands["GetCommands"] = "get-commands"; - // - DocCommands["GetConnectionDescriptionPresModel"] = "get-connection-description-pres-model"; - // - DocCommands["GetDSDropdownPresModel"] = "get-ds-dropdown-pres-model"; - // - DocCommands["GetDataPreviewWindowMessagePresModel"] = "get-data-preview-window-pres-model"; - // - DocCommands["GetDataSourcePresModel"] = "get-datasource-pres-model"; - // - DocCommands["GetDataSourceSortPresModel"] = "get-datasource-sort-pres-model"; - // - DocCommands["GetDataSourcePropertiesPresModel"] = "get-datasource-properties-pres-model"; - // - DocCommands["GetConnectionSettingsPresModel"] = "get-connection-settings-pres-model"; - // - DocCommands["GetDashboard"] = "get-dashboard"; - // - DocCommands["GetDataPreview"] = "get-data-preview"; - // - DocCommands["GetDatabaseEnumerationPresModel"] = "get-database-enumeration-pres-model"; - // - DocCommands["GetDefaultColor"] = "get-default-color"; - // - DocCommands["GetDefaultShape"] = "get-default-shape"; - // - DocCommands["GetDragPresModelForText"] = "get-drag-pres-model-for-text"; - // - DocCommands["GetDropTargetPresModel"] = "get-drop-target-pres-model"; - // - DocCommands["GetEditDataServerConnectionPresModel"] = "get-edit-data-server-connection-pres-model"; - // - DocCommands["GetEditDropLinesModel"] = "get-edit-drop-lines-model"; - // - DocCommands["GetEncodingState"] = "get-encoding-state"; - // - DocCommands["GetEncodingTypeMenuModel"] = "get-encoding-type-menu"; - // - DocCommands["GetExtSvcConfig"] = "get-ext-svc-config"; - // - DocCommands["GetForecastPresModel"] = "get-forecast-pres-model"; - // - DocCommands["GetJoinDescriptionPresModel"] = "get-join-description-pres-model"; - // - DocCommands["GetQuickFilter"] = "get-quick-filter"; - // - DocCommands["GetQuickFilters"] = "get-quick-filters"; - // - DocCommands["GetReferenceLinePresModel"] = "get-reference-line-pres-model"; - // - DocCommands["GetParameters"] = "get-parameters"; - // - DocCommands["GetParameterModels"] = "get-parameter-models"; - // - DocCommands["GetParametersRegistryInfo"] = "get-params-registry-info"; - // - DocCommands["GetPivotPresModel"] = "get-pivot-pres-model"; - // - DocCommands["GetScene"] = "get-scene"; - // - DocCommands["GetSchemaEnumerationPresModel"] = "get-schema-enumeration-pres-model"; - // - DocCommands["GetSheetsInfo"] = "get-sheets-info"; - // - DocCommands["GetShowMe"] = "get-show-me"; - // - DocCommands["GetStandardConnectionEnumerationPresModel"] = "get-standard-connection-enumeration-pres-model"; - // - DocCommands["GetStoredProcedureEnumerationPresModel"] = "get-stored-procedure-enumeration-pres-model"; - // - DocCommands["GetStoredProcedureParametersPresModel"] = "get-stored-procedure-parameters-pres-model"; - // - DocCommands["GetTableEnumerationPresModel"] = "get-table-enumeration-pres-model"; - // - DocCommands["GetTableCleaningPresModel"] = "get-table-cleaning-pres-model"; - // - DocCommands["GetTargetFieldList"] = "get-target-field-list"; - // - DocCommands["GetTopLevelConnectionDescriptionPresModel"] = "get-top-level-connection-description-pres-model"; - // - DocCommands["GetTypeInPillPresModel"] = "get-type-in-pill-pres-model"; - // - DocCommands["GetUberTipPresModel"] = "get-ubertip-pres-model"; - // - DocCommands["GetUnionInfoPresModel"] = "get-union-info-pres-model"; - // - DocCommands["GetVisual"] = "get-visual"; - // - DocCommands["GetVizData"] = "get-viz-data"; - // - DocCommands["GetWarehouseEnumerationPresModel"] = "get-warehouse-enumeration-pres-model"; - // - DocCommands["GetWorkbook"] = "get-workbook"; - // - DocCommands["GetWorldUpdate"] = "get-world-update"; - // - DocCommands["GoToSheet"] = "goto-sheet"; - // - DocCommands["HeapCorruptionCrash"] = "corrupt-heap"; - // - DocCommands["HideColumnFieldLabel"] = "hide-column-field-label"; - // - DocCommands["HideEmptyColsFlag"] = "hide-empty-cols"; - // - DocCommands["HideEmptyRowsFlag"] = "hide-empty-rows"; - // - DocCommands["HideLabel"] = "hide-label"; - // - DocCommands["HideRowFieldLabel"] = "hide-row-field-label"; - // - DocCommands["HierarchicalQuickFilterUpdateSetFunction"] = "hierarchical-quick-filter-update-set-function"; - // - DocCommands["IncludeInTooltip"] = "include-in-tooltip"; - // - DocCommands["IncludeOtherCategoricalBin"] = "include-other-cat-bin"; - // - DocCommands["IncrementExtract"] = "increment-extract"; - // - DocCommands["IncrementParameterValue"] = "incr-parameter-value"; - // - DocCommands["CreateCalc"] = "create-calc"; - // - DocCommands["EditCalc"] = "edit-calc"; - // - DocCommands["InvokeHyperlink"] = "invoke-hyperlink"; - // - DocCommands["KeepOnlyOrExcludeSelection"] = "keep-only-or-exclude-selection"; - // - DocCommands["LabelDrill"] = "label-drill"; - // - DocCommands["LabelDrillCtx"] = "label-drill-ctx"; - // - DocCommands["LevelDrill"] = "level-drill"; - // - DocCommands["LoadUrl"] = "load-url"; - // - DocCommands["ListPublishedDataSources"] = "list-published-datasources"; - // - DocCommands["MarkLabel"] = "mark-label"; - // - DocCommands["MarkTrail"] = "mark-trail"; - // - DocCommands["MemoryDumpObjectCounts"] = "memory-dump-object-counts"; - // - DocCommands["MemoryLeak"] = "memory-leak"; - // - DocCommands["Merge"] = "merge-or-split"; - // - DocCommands["MigrateDataSource"] = "migrate-data-source"; - // - DocCommands["ModifyMarksInSet"] = "add-or-remove-marks"; - // - DocCommands["MoveAreaAnnotationText"] = "move-area-annotation-text"; - // - DocCommands["MoveColumnTotals"] = "move-column-totals"; - // - DocCommands["MoveMark"] = "move-mark"; - // - DocCommands["MovePointAnnotation"] = "move-point-annotation"; - // - DocCommands["MovePointAnnotationTarget"] = "move-point-annotation-target"; - // - DocCommands["MoveReferenceLine"] = "move-reference-line"; - // - DocCommands["MoveRowTotals"] = "move-row-totals"; - // - DocCommands["NavigateToSheet"] = "navigate-to-sheet"; - // - DocCommands["PostCalcJoinClauseResult"] = "post-calc-join-clause-result"; - // - DocCommands["NewDocDashboard"] = "new-dashboard"; - // - DocCommands["NewDocStoryboard"] = "new-storyboard"; - // - DocCommands["NewDocWorksheet"] = "new-worksheet"; - // - DocCommands["NonRangedRemoveReferenceLine"] = "non-ranged-remove-reference-line"; - // - DocCommands["OptimizeExtract"] = "optimize-extract"; - // - DocCommands["OptOutActions"] = "opt-out-actions"; - // - DocCommands["PageHistorySettings"] = "page-history-settings"; - // - DocCommands["PageToggleTrails"] = "page-toggle-trails"; - // - DocCommands["PanePan"] = "pane-pan"; - // - DocCommands["PaneZoom"] = "pane-zoom"; - // - DocCommands["PaneZoomFactor"] = "pane-zoom-factor"; - // - DocCommands["PaneZoomPan"] = "pane-zoom-pan"; - // - DocCommands["ParseUIName"] = "parse-ui-name"; - // - DocCommands["Percentages"] = "percentages"; - // - DocCommands["Perspectives"] = "perspectives"; - // - DocCommands["PositionPointAnnotation"] = "position-point-annotation"; - // - DocCommands["ProtocolPoolLog"] = "protocol-pool-log"; - // - DocCommands["PublishToWorkgroup"] = "publish-to-workgroup"; - // - DocCommands["PublishDataSource"] = "publish-datasource"; - // - DocCommands["PublishDataSourceFromData"] = "publish-data-source-from-data"; - // - DocCommands["PublishDataSourceFromWorkbookData"] = "publish-data-source-from-workbook-data"; - // - DocCommands["QuantitativeQuickFilterEdit"] = "quantitative-quick-filter-edit"; - // - DocCommands["QuantitativeModeQuickFilter"] = "quantitative-mode-quick-filter"; - // - DocCommands["QueryMigrateDataSources"] = "query-migrate-data-sources"; - // - DocCommands["QuickSort"] = "quick-sort"; - // - DocCommands["RangedByIndexMerge"] = "ranged-by-index-merge"; - // - DocCommands["RangedByValueMerge"] = "ranged-by-value-merge"; - // - DocCommands["Record"] = "record"; - // - DocCommands["Redo"] = "redo"; - // - DocCommands["RefreshExtract"] = "refresh-extract"; - // - DocCommands["RefreshFromSource"] = "refresh-from-source"; - // - DocCommands["RelativeDateQuickFilterEdit"] = "relative-date-quick-filter-edit"; - // - DocCommands["RemoveAllReferenceLines"] = "remove-all-reference-lines"; - // - DocCommands["RemoveDrillPath"] = "remove-drill-path"; - // - DocCommands["RemoveExtract"] = "remove-extract"; - // - DocCommands["RemoveFieldFolder"] = "remove-field-folder"; - // - DocCommands["RemoveFieldLabel"] = "remove-field-label"; - // - DocCommands["RemoveFields"] = "remove-fields"; - // - DocCommands["RemoveFieldsFromShelf"] = "remove-fields-from-shelf"; - // - DocCommands["RemoveFromDrillPath"] = "remove-from-drill-path"; - // - DocCommands["RemoveFromFieldFolder"] = "remove-from-field-folder"; - // - DocCommands["RemoveReferenceLine"] = "remove-reference-line"; - // - DocCommands["RemoveSubtotals"] = "remove-subtotals"; - // - DocCommands["RenameDataSource"] = "rename-data-source"; - // - DocCommands["RenameDrillPath"] = "rename-drill-path"; - // - DocCommands["RenameFieldFolder"] = "rename-field-folder"; - // - DocCommands["RenameSheet"] = "rename-sheet"; - // - DocCommands["ReorderLabels"] = "reorder-labels"; - // - DocCommands["ReportBug"] = "report-bug"; - // - DocCommands["RequestDataSourcePresModel"] = "request-datasource-pres-model"; - // - DocCommands["ResetParameterCtrlTitle"] = "reset-parameter-ctrl-title"; - // - DocCommands["ResetTooltip"] = "reset-tooltip"; - // - DocCommands["ResizeAreaAnnotationText"] = "resize-area-annotation-text"; - // - DocCommands["ResizeAxis"] = "resize-axis"; - // - DocCommands["ResizeCell"] = "resize-cell"; - // - DocCommands["ResizeHeader"] = "resize-header"; - // - DocCommands["ResizePointAnnotation"] = "resize-point-annotation"; - // - DocCommands["Revert"] = "revert"; - // - DocCommands["RotateFieldLabel"] = "rotate-field-label"; - // - DocCommands["RotateLabel"] = "rotate-label"; - // - DocCommands["SplitFieldLabel"] = "split-field-label"; - // - DocCommands["RunAction"] = "run-action"; - // - DocCommands["RunScript"] = "run-script"; - // - DocCommands["RunUpdates"] = "run-update"; - // - DocCommands["SaveModel"] = "save-model"; - // - DocCommands["SavePublishedDStoFile"] = "save-published-ds-to-file"; - // - DocCommands["SelectDataSource"] = "select-data-source"; - // - DocCommands["SelectFieldsInShelf"] = "select-fields-in-shelf"; - // - DocCommands["SendDataConnectionTableViewMessage"] = "send-data-connection-tableview-message"; - // - DocCommands["SetActiveDataSourceName"] = "set-active-data-source-name"; - // - DocCommands["SetActiveConnectionName"] = "set-active-connection-name"; - // - DocCommands["SetActiveDataSource"] = "set-active-datasource"; - // - DocCommands["SetBasePalette"] = "set-base-palette"; - // - DocCommands["SetCategoricalColor"] = "set-categorical-color"; - // - DocCommands["SetDataCacheDelta"] = "set-data-cache-delta"; - // - DocCommands["SetDataPreviewAutoUpdate"] = "set-data-preview-auto-update"; - // - DocCommands["SetDataPreviewCustomFieldOrder"] = "set-data-preview-custom-field-order"; - // - DocCommands["SetDefaultColor"] = "set-default-color"; - // - DocCommands["SetDefaultShape"] = "set-default-shape"; - // - DocCommands["SetFilterContext"] = "set-filter-context"; - // - DocCommands["SetFilterShared"] = "set-filter-shared"; - // - DocCommands["SetInitialSQL"] = "set-initial-sql"; - // - DocCommands["SetItemColor"] = "set-item-color"; - // - DocCommands["SetItemColorResetCustomization"] = "set-item-color-reset-customization"; - // - DocCommands["SetItemEncodingType"] = "set-item-encoding-type"; - // - DocCommands["SetMarkSize"] = "set-mark-size"; - // - DocCommands["SetPageNavFlag"] = "set-page-flag"; - // - DocCommands["SetParameterCtrlDisplayFlags"] = "set-parameter-ctrl-display-flags"; - // - DocCommands["SetParameterCtrlDisplayMode"] = "set-parameter-ctrl-display-mode"; - // - DocCommands["SetParameterCtrlTitle"] = "set-parameter-ctrl-title"; - // - DocCommands["SetParameterValue"] = "set-parameter-value"; - // - DocCommands["SetPrimitive"] = "set-primitive"; - // - DocCommands["SetQueryBanding"] = "set-query-banding"; - // - DocCommands["SetQuickFilterIncludedValues"] = "set-quick-filter-included"; - // - DocCommands["SetReferenceLineFormula"] = "set-reference-line-formula"; - // - DocCommands["SetReferenceLineConstantValue"] = "set-reference-line-constant-value"; - // - DocCommands["SetSheetFormatting"] = "set-sheet-formatting"; - // - DocCommands["SetSheetSize"] = "set-sheet-size"; - // - DocCommands["SetTotalsType"] = "set-totals-type"; - // - DocCommands["SetWorkbookLocale"] = "set-workbook-locale"; - // - DocCommands["ShowCatCtrlQuickFilter"] = "show-cat-ctrl-quick-filter"; - // - DocCommands["ShowColFieldNamesFlag"] = "show-col-field-names"; - // - DocCommands["ShowColTotalsFlag"] = "show-col-totals"; - // - DocCommands["ShowColumnFieldLabel"] = "show-column-field-label"; - // - DocCommands["ShowEmptyColsFlag"] = "show-empty-cols"; - // - DocCommands["ShowEmptyRowsFlag"] = "show-empty-rows"; - // - DocCommands["ShowForecastEditor"] = "show-forecast-editor"; - // - DocCommands["ShowFullRange"] = "show-full-range"; - // - DocCommands["ShowHeader"] = "show-header"; - // - DocCommands["ShowHiddenData"] = "show-hidden-data"; - // - DocCommands["ShowMe"] = "show-me"; - // - DocCommands["ShowQuantCtrlQuickFilter"] = "show-quant-ctrl-quick-filter"; - // - DocCommands["ShowQuickFilterDoc"] = "show-quickfilter-doc"; - // - DocCommands["ShowReferenceLineEditor"] = "show-reference-line-editor"; - // - DocCommands["ShowReferenceLineConstantValueEditor"] = "show-reference-line-constant-value-editor"; - // - DocCommands["ShowReferenceLineFormatter"] = "show-reference-line-formatter"; - // - DocCommands["ShowRowFieldLabel"] = "show-row-field-label"; - // - DocCommands["ShowRowFieldNamesFlag"] = "show-row-field-names"; - // - DocCommands["ShowRowTotalsFlag"] = "show-row-totals"; - // - DocCommands["SimpleCommandList"] = "simple-command-list"; - // - DocCommands["Sleep"] = "sleep"; - // - DocCommands["SleepBackgroundThread"] = "sleep-background-thread"; - // - DocCommands["SortDataGridByColumn"] = "sort-datagrid-by-column"; - // - DocCommands["SortDataGridFields"] = "sort-datagrid-fields"; - // - DocCommands["SpecialValues"] = "special-values"; - // - DocCommands["SplitField"] = "split-field"; - // - DocCommands["StackMarks"] = "stack-marks"; - // - DocCommands["StackOverflowCrash"] = "stack-overflow"; - // - DocCommands["SubtotalAggregation"] = "subtotal-aggregation"; - // - DocCommands["Subtotals"] = "subtotals"; - // - DocCommands["SwapFields"] = "swap-fields"; - // - DocCommands["SwapRowsAndColumns"] = "swap-rows-and-columns"; - // - DocCommands["TableauException"] = "tableau-exception"; - // - DocCommands["Theme"] = "theme"; - // - DocCommands["ToggleDropLines"] = "toggle-drop-lines"; - // - DocCommands["ToggleFieldBlending"] = "toggle-field-blending"; - // - DocCommands["ToggleMarkLabels"] = "toggle-mark-labels"; - // - DocCommands["TogglePageTitle"] = "toggle-page-title"; - // - DocCommands["ToggleParameterCtrlDisplayFlag"] = "toggle-parameter-ctrl-display-flag"; - // - DocCommands["ToggleParameterCtrlTitle"] = "toggle-parameter-ctrl-title"; - // - DocCommands["ToggleQuickFilterTitle"] = "toggle-quick-filter-title"; - // - DocCommands["ToggleVizNavigationSetting"] = "toggle-viz-navigation-setting"; - // - DocCommands["Undo"] = "undo"; - // - DocCommands["UnhideData"] = "unhide-data"; - // - DocCommands["UnhideLabel"] = "unhide-label"; - // - DocCommands["UpdateAreaAnnotation"] = "update-area-annotation"; - // - DocCommands["UpdateCalcScopeIsolation"] = "update-scope-isolation-for-calculation"; - // - DocCommands["UpdateDataServerConnectionInfo"] = "update-data-server-connection-info"; - // - DocCommands["UpdatePointAnnotationPullback"] = "update-point-annotation-pullback"; - // - DocCommands["UpdateTableCalcInfo"] = "update-table-calc-infomation"; - // - DocCommands["UpgradeExtract"] = "upgrade-extract"; - // - DocCommands["UseExtract"] = "use-extract"; - // - DocCommands["ValidateDrillPathName"] = "validate-drill-path-name"; - // - DocCommands["ValidateFormula"] = "validate-formula"; - // - DocCommands["ValidateInitialSQL"] = "validate-initial-sql"; - // - DocCommands["ValidateQueryBanding"] = "validate-query-banding"; - // - DocCommands["ValidateTypeInPill"] = "validate-type-in-pill"; - // - DocCommands["ViewParameterCtrls"] = "view-param-ctrls"; - // - DocCommands["ViewQuickFilters"] = "view-quick-filters"; - // - DocCommands["ZoomLevel"] = "zoom-level"; - // - DocCommands["OnToggleAxisRanges"] = "on-toggle-axis-ranges"; - // - DocCommands["ReorderFoldedAxes"] = "reorder-folded-axes"; - // - DocCommands["ResetAxisRange"] = "reset-axis-range"; - // - DocCommands["SelectAxisTuples"] = "select-axis-tuples"; - // - DocCommands["SwapReferenceLineFields"] = "swap-reference-line-fields"; - // - DocCommands["SynchronizeAxis"] = "synchronize-axis"; - // - DocCommands["ToggleDualAxis"] = "toggle-dual-axis"; - })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); - - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Registry which contains mappings from an Api VerbId to a pres-layer command. - * This includes the parameters and return values of the command as well - * - * @export - * @class CommandMappingRegistry - */ - var CommandMappingRegistry = (function () { - /** - * Creates an instance of CommandMappingRegistry. - * @memberof CommandMappingRegistry - */ - function CommandMappingRegistry() { - this._commands = {}; - } - /** - * Adds a new command to the registry - * - * @param {CommandRegistration} command - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.addCommand = function (command) { - this._commands[command.apiVerbId] = command; - }; - /** - * Whether or not this registry contains a definition for this ApiVerbId - * - * @param {ApiVerbId} apiVerbId - * @returns {boolean} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.hasCommand = function (apiVerbId) { - if (!this._commands.hasOwnProperty(apiVerbId)) { - return false; - } - if (!this._commands[apiVerbId]) { - return false; - } - return true; - }; - /** - * Gets the command registration for this command id or throws if it doesn't exist - * - * @param {ApiVerbId} apiVerbId - * @returns {CommandRegistration} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.getCommand = function (apiVerbId) { - if (!this.hasCommand(apiVerbId)) { - throw new Error('Unknown ApiVerb: ' + apiVerbId); - } - return this._commands[apiVerbId]; - }; - return CommandMappingRegistry; - }()); - exports.CommandMappingRegistry = CommandMappingRegistry; - - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - /** - * Represents an input or output paramter for a command. - * - * @export - * @class CommandParameter - */ - var CommandParameter = (function () { - /** - * Creates an instance of CommandParameter. - * @param {ApiParameterId} apiId - * @param {PresLayerParameterId} presLayerId - * @param {boolean} [isOptional] - * @memberof CommandParameter - */ - function CommandParameter(_apiId, _presLayerId, _isOptional) { - this._apiId = _apiId; - this._presLayerId = _presLayerId; - this._isOptional = _isOptional; - } - Object.defineProperty(CommandParameter.prototype, "apiId", { - /** - * The Id of the Api Parameter - * - * @readonly - * @type {ApiParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "presLayerId", { - /** - * The Id of the Pres Layer Parameter - * - * @readonly - * @type {PresLayerParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "isOptional", { - /** - * Whether or not this is an optional parameter - * - * @readonly - * @type {boolean} - * @memberof CommandParameter - */ - get: function () { - return !!this._isOptional; - }, - enumerable: true, - configurable: true - }); - return CommandParameter; - }()); - exports.CommandParameter = CommandParameter; - /** - * Represents a the complete mapping of an ApiCommand to its corresponding pres-layer command - * and the conversion of the output value as well - * - * @export - * @class CommandRegistration - */ - var CommandRegistration = (function () { - function CommandRegistration(_apiVerbId, _commandId, _inputParameters, _outputParameter) { - this._apiVerbId = _apiVerbId; - this._commandId = _commandId; - this._inputParameters = _inputParameters; - this._outputParameter = _outputParameter; - } - Object.defineProperty(CommandRegistration.prototype, "apiVerbId", { - get: function () { - return this._apiVerbId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "commandId", { - get: function () { - return this._commandId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "inputs", { - get: function () { - return this._inputParameters || new Array(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "output", { - get: function () { - return this._outputParameter; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "needsAddInLocator", { - /** - * Whether or not this command requires an add-in locator to be injected into it - * - * @readonly - * @type {boolean} - * @memberof CommandRegistration - */ - get: function () { - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var input = _a[_i]; - if (input.apiId === api_internal_contract_1.ParameterId.AddInLocator) { - return true; - } - } - return false; - }, - enumerable: true, - configurable: true - }); - /** - * Creates a dictionary of pres-layer parameters from the input dictionary - * of api parameters. - * - * @param {ExecuteParameters} parameters - The parameters to convert - * @param {ApiToPresLayerMappingRegistry} apiToPresLayer - mapping to determine the conversion - * @returns {{ [paramId: string]: object; }} - parameters to send to the pres-layer - * @memberof CommandRegistration - */ - CommandRegistration.prototype.createParams = function (parameters, apiToPresLayer) { - var result = {}; - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var inputParam = _a[_i]; - // First make sure the parameter is there or that it's optional - if (!parameters.hasOwnProperty(inputParam.apiId)) { - if (inputParam.isOptional) { - continue; - } - else { - throw new Error('Missing parameter for command: ' + inputParam.apiId); - } - } - // Find the conversion function for this parameter - var conversionFn = apiToPresLayer.get(inputParam.apiId, inputParam.presLayerId); - // Convert the pres model and insert it into our results object - result[inputParam.presLayerId] = conversionFn(parameters[inputParam.apiId]); - } - return result; - }; - /** - * Processes the result received back after executing a pres-layer command - * - * @param {{ [docParamId: string]: object; }} resultParameters - * @param {PresLayerToApiMappingRegistry} presLayerToApi - * @returns {Model} - * @memberof CommandRegistration - */ - CommandRegistration.prototype.ProcessResult = function (resultParameters, presLayerToApi) { - // TODO: Add error handling - if (this.output === undefined) { - var noOutputModel = {}; - return noOutputModel; - } - if (!resultParameters || !resultParameters.hasOwnProperty(this.output.presLayerId)) { - // if the output result is marked as optional, we don't consider this an error situation and just return an empty model - if (this.output.isOptional) { - return {}; - } - throw new Error('Missing expected result parameter: ' + this.output.presLayerId); - } - var conversionFn = presLayerToApi.get(this.output.presLayerId, this.output.apiId); - return conversionFn(resultParameters[this.output.presLayerId]); - }; - return CommandRegistration; - }()); - exports.CommandRegistration = CommandRegistration; - - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Events_1 = __webpack_require__(16); - var PresLayerToApiConverter_1 = __webpack_require__(17); - /** - * Simple wrapper which holds a mapping to go from a pres-layer event to an API event - */ - var EventMappingRegistration = (function () { - function EventMappingRegistration(_presLayerId, _apiId, _converter) { - this._presLayerId = _presLayerId; - this._apiId = _apiId; - this._converter = _converter; - } - Object.defineProperty(EventMappingRegistration.prototype, "presLayerId", { - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "apiId", { - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "converter", { - get: function () { - return this._converter; - }, - enumerable: true, - configurable: true - }); - return EventMappingRegistration; - }()); - exports.EventMappingRegistration = EventMappingRegistration; - var EventMappingRegistryFactory = (function () { - function EventMappingRegistryFactory() { - } - /** - * Creates and populates a new EventMappingRegistry for the specific version number requested - * - * @param {VersionNumber} versionNumber - * @returns {EventMappingRegistry} - */ - EventMappingRegistryFactory.createEventMappingRegistry = function (versionNumber) { - var registry = {}; - registry[Events_1.NotificationId.SelectionChanged] = new EventMappingRegistration(Events_1.NotificationId.SelectionChanged, api_internal_contract_1.NotificationId.SelectedMarksChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId); - registry[Events_1.NotificationId.ParameterChanged] = new EventMappingRegistration(Events_1.NotificationId.ParameterChanged, api_internal_contract_1.NotificationId.ParameterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFieldCaptionPair); - registry[Events_1.NotificationId.FilterChanged] = new EventMappingRegistration(Events_1.NotificationId.FilterChanged, api_internal_contract_1.NotificationId.FilterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFilterEvent); - return registry; - }; - return EventMappingRegistryFactory; - }()); - exports.EventMappingRegistryFactory = EventMappingRegistryFactory; - - -/***/ }, -/* 16 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\typescript\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\events-ts.template', u'..\\typescript\\js-api\\api-core\\temp-pres-layer\\all-events.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // Events you can register to receive presentation models - var NotificationId; - (function (NotificationId) { - // Triggered when aliases are to be edited. Used to launch a dialog. - NotificationId["EditAliasesDialogNotification"] = "edit-aliases-dialog-notification-event"; - // for the calculation dialog - NotificationId["CalculationDialog"] = "calculation-dialog-event"; - // update for an adhoc calc in a type in pill - NotificationId["TypeInPill"] = "type-in-pill-event"; - // results of a validation command - NotificationId["CommandValidation"] = "command-validation-event"; - // event for the groups dialog - NotificationId["UpdateCategoricalBinEditDialog"] = "update-categorical-bin-edit-dialog-event"; - // for the categorical color dialog - NotificationId["CategoricalColor"] = "categorical-color-event"; - // update the web categorical color dialog - NotificationId["WebCategoricalColorDialog"] = "web-categorical-color-dialog-event"; - // user invoked action which requires a Data Alert Dialog - NotificationId["DataAlertDialog"] = "data-alert-dialog-event"; - // event for when the data source being edited is updated - NotificationId["UpdateDataPreparation"] = "update-data-preparation-event"; - // event for when the data source data is updated - NotificationId["UpdateDataSourceData"] = "update-data-source-data-event"; - // event for when a client should request new data source or data source data pres models - NotificationId["DataSourceUpdateNeeded"] = "data-source-update-needed-event"; - // event for getting the pres model to update file join table properties - NotificationId["TextFileProperties"] = "text-file-properties-event"; - // event for the detailed error dialog - NotificationId["UpdateDetailedErrorDialog"] = "update-detailed-error-dialog-event"; - // notify changes to the state of a filter's relational model - NotificationId["FilterRelationalStateChanged"] = "filter-relational-state-changed-event"; - // notify changes to the size/selection count of a relational domain - NotificationId["FilterRelationalDomainChanged"] = "filter-relational-domain-changed-event"; - // notify when filter cache was requested but not found - NotificationId["FilterCacheNotFound"] = "filter-cache-not-found-event"; - // Hierarchy Select model observable notification. - NotificationId["HierarchyNotification"] = "hierarchy-notification-event"; - // Hierarchy selection change notifications. - NotificationId["HierarchySelection"] = "hierarchy-selection-event"; - // event for the bin dialog - NotificationId["UpdateNumericBinEditDialog"] = "update-numeric-bin-edit-dialog-event"; - // event for the map options dialog - NotificationId["MapOptionsDialog"] = "map-options-dialog-event"; - // notify the Page UI(hide/show states, layout) needs to be updated - NotificationId["UpdatePageUINotification"] = "update-page-uinotification-event"; - // notify to the SceneView has been drawn. - NotificationId["SceneViewDrawnNotification"] = "scene-view-drawn-notification-event"; - // The AnimationControlChange event fires when the user clicks an animation playback button: forward, stop, slow, fast, etc. - NotificationId["AnimationControlChange"] = "animation-control-change-event"; - // notify the sheet has been renamed - NotificationId["RenameSheetNotification"] = "rename-sheet-notification-event"; - // update the web quantitative color dialog - NotificationId["WebQuantitativeColorDialog"] = "web-quantitative-color-dialog-event"; - // update the axis edit dialog - NotificationId["UpdateEditAxisDialog"] = "update-edit-axis-dialog-event"; - // event for the reference line dialog, which is only valid during web authoring - NotificationId["UpdateRefLineDialog"] = "update-ref-line-dialog-event"; - // event to trigger other reference line dialogs to close - NotificationId["RefLineDialogOpening"] = "ref-line-dialog-opening-event"; - // event for the close data source error dialog, which is only valid during web authoring - NotificationId["CloseDataSourceErrorDialog"] = "close-data-source-error-dialog-event"; - // update the web Save Datasource dialog - NotificationId["WebSaveDatasourceDialog"] = "web-save-datasource-dialog-event"; - // warning resulting from WarningMsg - NotificationId["WarningMessage"] = "warning-message-event"; - // event for the table calc dialog, on web, this is only valid during web authoring - NotificationId["TableCalcDialog"] = "table-calc-dialog-event"; - // user invoked action which requires Table Calc Dialog - NotificationId["TableCalcActivateDialog"] = "table-calc-activate-dialog-event"; - // event for the trend line dialog - NotificationId["UpdateTrendLineEditDialog"] = "update-trend-line-edit-dialog-event"; - // The table page cache has been refreshed; pages must be reloaded from the cache. - NotificationId["PageCacheRefresh"] = "page-cache-refresh-event"; - // The table page cache has expired and all resources have been released. - NotificationId["PageCacheExpired"] = "page-cache-expired-event"; - // All pages, identified by row/col, in the provided list have expired and should be reloaded. - NotificationId["PageCachePagesExpired"] = "page-cache-pages-expired-event"; - // All pages betweem the range (inclusive) in the provided list have expired and should be reloaded. - NotificationId["PageCachePageRangeExpired"] = "page-cache-page-range-expired-event"; - // Update for the rich text editor dialog - NotificationId["RichTextEditorDialog"] = "rich-text-editor-dialog-event"; - // notification to launch the hybrid UI showcase - NotificationId["LaunchHybridUIShowcase"] = "launch-hybrid-uishowcase-event"; - // notification of new echoed text for HybridUI showcase demo - NotificationId["HybridUIShowcaseEcho"] = "hybrid-uishowcase-echo-event"; - // Triggered when the user wants to reload an add-in instance. - NotificationId["ReloadAddIn"] = "reload-add-in-event"; - // Triggered when the selected marks have changed. - NotificationId["SelectionChanged"] = "selection-changed-event"; - // Triggered when the value of a parameter has changed. Emits the name and caption of the parameter - NotificationId["ParameterChanged"] = "parameter-changed-event"; - // Triggered when the filters have changed. - NotificationId["FilterChanged"] = "filter-changed-event"; - // a test event with a pres model - NotificationId["TestEventWithModel"] = "test-event-with-model-event"; - // a test event without a pres model - NotificationId["TestEventWithoutModel"] = "test-event-without-model-event"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumMappings_1 = __webpack_require__(18); - /** - * Class containing helper methods for converting from PresLayerPresModels to their ApiPresModels equivalents - * - * @export - * @class PresLayerToApiConverter - */ - var PresLayerToApiConverter = (function () { - function PresLayerToApiConverter() { - } - PresLayerToApiConverter.convertSheetPath = function (plSheetPath) { - var result = { - sheetName: plSheetPath.sheetName, - isDashboard: plSheetPath.isDashboard, - storyboard: plSheetPath.storyboard, - flipboardZoneID: plSheetPath.flipboardZoneId, - storyPointID: plSheetPath.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertVisualId = function (plVisualId) { - var result = { - worksheet: plVisualId.worksheet, - dashboard: plVisualId.dashboard, - storyboard: plVisualId.storyboard, - flipboardZoneID: plVisualId.flipboardZoneId, - storyPointID: plVisualId.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertAddInLocator = function (plAddInLocator) { - var dashboardPath = undefined; - if (plAddInLocator.sheetPath) { - dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath); - } - var result = { - instanceId: plAddInLocator.addInInstanceId, - dashboardPath: dashboardPath - }; - return result; - }; - PresLayerToApiConverter.convertDashboardInZones = function (plDashboard) { - var result = new Array(); - for (var _i = 0, _a = Object.keys(plDashboard.zones); _i < _a.length; _i++) { - var zoneKey = _a[_i]; - var zone = plDashboard.zones[zoneKey]; - var apiZone = { - name: zone.zoneCommon.name, - zoneId: zone.zoneId, - zoneType: EnumMappings_1.PresLayerToApiEnumMappings.zoneType.convert(zone.zoneCommon.zoneType), - height: zone.zoneCommon.h, - width: zone.zoneCommon.w, - x: zone.zoneCommon.x, - y: zone.zoneCommon.y - }; - result.push(apiZone); - } - return result; - }; - PresLayerToApiConverter.convertDashboardInfo = function (plDashboardInfo) { - var result = { - zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel), - name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName, - addInZoneId: plDashboardInfo.zoneId - }; - return result; - }; - PresLayerToApiConverter.convertAddInInstance = function (plAddInInstance) { - var result = { - url: plAddInInstance.addInRegistrationPresModel.url, - locator: PresLayerToApiConverter.convertAddInLocator(plAddInInstance.addInLocatorPresModel) - }; - return result; - }; - PresLayerToApiConverter.convertAddInEnivrionment = function (plAddInEnvironment) { - var result = { - addInContext: EnumMappings_1.PresLayerToApiEnumMappings.addInContext.convert(plAddInEnvironment.addInContext), - addInMode: EnumMappings_1.PresLayerToApiEnumMappings.addInMode.convert(plAddInEnvironment.addInMode), - addInLocale: plAddInEnvironment.addInLocale, - addInLanguage: plAddInEnvironment.addInLanguage, - tableauVersion: plAddInEnvironment.tableauVersion, - operatingSystem: plAddInEnvironment.operatingSystem, - apiVersion: plAddInEnvironment.apiVersion - }; - return result; - }; - PresLayerToApiConverter.convertAddInSettingsInfo = function (plAddInSettings) { - var result = { - // addInSettings is undefined during bootstrap initialization - settingsValues: plAddInSettings.addInSettings || {} - }; - return result; - }; - PresLayerToApiConverter.convertAddInBootstrapInfo = function (plBootstrapInfo) { - var result = { - addinDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel), - addInEnvironment: PresLayerToApiConverter.convertAddInEnivrionment(plBootstrapInfo.addInEnvironmentPresModel), - addInInstance: PresLayerToApiConverter.convertAddInInstance(plBootstrapInfo.addInInstancePresModel), - addInSettingsInfo: PresLayerToApiConverter.convertAddInSettingsInfo(plBootstrapInfo.addInSettingsInfo) - }; - return result; - }; - PresLayerToApiConverter.convertFieldCaptionPair = function (plFieldCaptionPair) { - return plFieldCaptionPair.fn; - }; - PresLayerToApiConverter.convertFilterEvent = function (plFilterEvent) { - var result = { - visualId: PresLayerToApiConverter.convertVisualId(plFilterEvent.visualIdPresModel), - fieldName: plFilterEvent.fieldCaption - }; - return result; - }; - return PresLayerToApiConverter; - }()); - exports.PresLayerToApiConverter = PresLayerToApiConverter; - - -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var api_utils_1 = __webpack_require__(19); - var Enums = __webpack_require__(22); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - var PresLayerToApiEnumMappings = (function () { - function PresLayerToApiEnumMappings() { - } - PresLayerToApiEnumMappings.zoneType = new api_utils_1.EnumConverter((_a = {}, - _a[Enums.ZoneType.ZT_Invalid] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Viz] = api_internal_contract_1.DashboardObjectType.Worksheet, - _a[Enums.ZoneType.ZT_ColorLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_ShapeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_SizeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_MapLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_QuickFilter] = api_internal_contract_1.DashboardObjectType.QuickFilter, - _a[Enums.ZoneType.ZT_Highlighter] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_CurrPage] = api_internal_contract_1.DashboardObjectType.PageFilter, - _a[Enums.ZoneType.ZT_Empty] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Title] = api_internal_contract_1.DashboardObjectType.Title, - _a[Enums.ZoneType.ZT_Text] = api_internal_contract_1.DashboardObjectType.Text, - _a[Enums.ZoneType.ZT_Bitmap] = api_internal_contract_1.DashboardObjectType.Image, - _a[Enums.ZoneType.ZT_Web] = api_internal_contract_1.DashboardObjectType.WebPage, - _a[Enums.ZoneType.ZT_AddIn] = api_internal_contract_1.DashboardObjectType.AddIn, - _a[Enums.ZoneType.ZT_ParamCtrl] = api_internal_contract_1.DashboardObjectType.ParameterControl, - _a[Enums.ZoneType.ZT_FlipboardNav] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Flipboard] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutBasic] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFlow] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFreeForm] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_End] = api_internal_contract_1.DashboardObjectType.Blank, - _a), api_internal_contract_1.DashboardObjectType.Blank); - PresLayerToApiEnumMappings.addInContext = new api_utils_1.EnumConverter((_b = {}, - _b[Enums.AddInContext.Unknown] = api_internal_contract_1.AddInContext.Unknown, - _b[Enums.AddInContext.Desktop] = api_internal_contract_1.AddInContext.Desktop, - _b[Enums.AddInContext.Server] = api_internal_contract_1.AddInContext.Server, - _b)); - PresLayerToApiEnumMappings.addInMode = new api_utils_1.EnumConverter((_c = {}, - _c[Enums.AddInMode.Unknown] = api_internal_contract_1.AddInMode.Unknown, - _c[Enums.AddInMode.Authoring] = api_internal_contract_1.AddInMode.Authoring, - _c[Enums.AddInMode.Viewing] = api_internal_contract_1.AddInMode.Viewing, - _c)); - PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {}, - _d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool, - _d[Enums.DataType.DT_DATE] = api_internal_contract_1.DataType.Date, - _d[Enums.DataType.DT_DATETIME] = api_internal_contract_1.DataType.DateTime, - _d[Enums.DataType.DT_INTEGER] = api_internal_contract_1.DataType.Int, - _d[Enums.DataType.DT_REAL] = api_internal_contract_1.DataType.Float, - _d[Enums.DataType.DT_STRING] = api_internal_contract_1.DataType.String, - _d[Enums.DataType.DT_SPATIAL] = api_internal_contract_1.DataType.Spatial, - _d)); - PresLayerToApiEnumMappings.parameterTypesDomainType = new api_utils_1.EnumConverter((_e = {}, - _e[Enums.ParameterTypesDomainType.Domain_Any] = api_internal_contract_1.DomainRestrictionType.All, - _e[Enums.ParameterTypesDomainType.Domain_List] = api_internal_contract_1.DomainRestrictionType.List, - _e[Enums.ParameterTypesDomainType.Domain_Range] = api_internal_contract_1.DomainRestrictionType.Range, - _e)); - PresLayerToApiEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_f = {}, - _f[Enums.DatePeriodType.PeriodYear] = api_internal_contract_1.DateStepPeriod.Years, - _f[Enums.DatePeriodType.PeriodQuarter] = api_internal_contract_1.DateStepPeriod.Quarters, - _f[Enums.DatePeriodType.PeriodMonth] = api_internal_contract_1.DateStepPeriod.Months, - _f[Enums.DatePeriodType.PeriodWeek] = api_internal_contract_1.DateStepPeriod.Weeks, - _f[Enums.DatePeriodType.PeriodDay] = api_internal_contract_1.DateStepPeriod.Days, - _f[Enums.DatePeriodType.PeriodHour] = api_internal_contract_1.DateStepPeriod.Hours, - _f[Enums.DatePeriodType.PeriodMinute] = api_internal_contract_1.DateStepPeriod.Minutes, - _f[Enums.DatePeriodType.PeriodSecond] = api_internal_contract_1.DateStepPeriod.Seconds, - _f)); - return PresLayerToApiEnumMappings; - }()); - exports.PresLayerToApiEnumMappings = PresLayerToApiEnumMappings; - var ApiToPresLayerEnumMappings = (function () { - function ApiToPresLayerEnumMappings() { - } - ApiToPresLayerEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.FilterUpdateType.Add] = Enums.FilterUpdateType.ADD, - _a[api_internal_contract_1.FilterUpdateType.All] = Enums.FilterUpdateType.ALL, - _a[api_internal_contract_1.FilterUpdateType.Replace] = Enums.FilterUpdateType.REPLACE, - _a[api_internal_contract_1.FilterUpdateType.Remove] = Enums.FilterUpdateType.REMOVE, - _a)); - ApiToPresLayerEnumMappings.nullOption = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.NullOption.AllValues] = Enums.FiltersQuantitativeIncludedValues.All, - _b[api_internal_contract_1.NullOption.NonNullValues] = Enums.FiltersQuantitativeIncludedValues.NonNull, - _b[api_internal_contract_1.NullOption.NullValues] = Enums.FiltersQuantitativeIncludedValues.Null, - _b)); - return ApiToPresLayerEnumMappings; - }()); - exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings; - var _a, _b, _c, _d, _e, _f, _a, _b; - /* tslint:enable:typedef */ - - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(20); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(21); - exports.Param = Param_1.Param; - - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(_mappings, _defaultVal) { - this._mappings = _mappings; - this._defaultVal = _defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this._mappings.hasOwnProperty(enumVal)) { - return this._mappings[enumVal]; - } - if (this._defaultVal !== undefined && !throwIfMissing) { - return this._defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - - -/***/ }, -/* 21 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies the value is part of the Enum - * - * String enums are {string : string} dictionaries which are not reverse mappable - * This is an ugly workaround - * @param value value to verify - * @param enumType enum to verify against - */ - /* tslint:disable:no-any */ - Param.isValidEnumValue = function (value, enumType) { - var isValid = false; - Object.keys(enumType).forEach(function (enumKey) { - if (enumType[enumKey] === value.toString()) { - isValid = true; - } - }); - return isValid; - }; - /* tslint:enable:no-any */ - /** - * serializes the date into the format that the server expects. - * @param date the date to serialize - */ - Param.serializeDateForPlatform = function (date) { - var year = date.getUTCFullYear(); - var month = date.getUTCMonth() + 1; - var day = date.getUTCDate(); - var hh = date.getUTCHours(); - var mm = date.getUTCMinutes(); - var sec = date.getUTCSeconds(); - return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; - }; - Param.serializeBooleanForPlatform = function (bool) { - return bool ? 'true' : 'false'; - }; - Param.serializeNumberForPlatform = function (num) { - return num.toString(10); - }; - /** - * Verifies the params min and max for applying range filter - * @param min range min - * @param max range max - */ - /* tslint:disable:no-any */ - Param.verifyRangeParamType = function (min, max) { - /* tslint:enable:no-any */ - if (!min && !max) { - throw new Error('Missing Parameter: At least one of min or max is required'); - } - if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); - } - if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); - } - if (typeof (min) !== typeof (max)) { - throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); - } - }; - /** - * Verifies the input is a number - */ - /* tslint:disable:no-any */ - Param.isTypeNumber = function (input) { - return typeof (input) === 'number' || input instanceof Number; - }; - /* tslint:enable:no-any */ - /** - * Verifies the input is a Date - */ - /* tslint:disable:no-any */ - Param.isTypeDate = function (input) { - return input instanceof Date; - }; - /* tslint:enable:no-any */ - /* tslint:disable-next-line:no-any */ - Param.isTypeString = function (input) { - return typeof (input) === 'string' || input instanceof String; - }; - /* tslint:disable-next-line:no-any */ - Param.isTypeBool = function (input) { - return typeof (input) === 'boolean' || input instanceof Boolean; - }; - /* tslint:disable-next-line:no-any */ - Param.serializeParamterValue = function (value) { - if (Param.isTypeNumber(value)) { - return Param.serializeNumberForPlatform(value); - } - else if (Param.isTypeDate(value)) { - return Param.serializeDateForPlatform(value); - } - else if (Param.isTypeBool(value)) { - return Param.serializeBooleanForPlatform(value); - } - else if (Param.isTypeString(value)) { - return value; - } - else { - throw new Error('Value is invalid for argument: value'); - } - }; - return Param; - }()); - exports.Param = Param; - - -/***/ }, -/* 22 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['..\\typescript\\js-api\\api-core\\node_modules\\@tableau\\preslayer-codegen-typescript\\templates\\enum-ts.template', u'..\\typescript\\js-api\\api-core\\temp-pres-layer\\all-enums.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // - var DataScaling; - (function (DataScaling) { - // - DataScaling["SCALING_NONE"] = "none"; - // - DataScaling["SCALING_STANDARDIZED"] = "standardized"; - // - DataScaling["SCALING_NORMALIZED"] = "normalized"; - })(DataScaling = exports.DataScaling || (exports.DataScaling = {})); - // - var ForecastModelType; - (function (ForecastModelType) { - // - ForecastModelType["ForecastModelTypeAutoSeason"] = "auto-season"; - // - ForecastModelType["ForecastModelTypeAuto"] = "auto"; - // - ForecastModelType["ForecastModelTypeCustom"] = "custom"; - })(ForecastModelType = exports.ForecastModelType || (exports.ForecastModelType = {})); - // - var ForecastRangeType; - (function (ForecastRangeType) { - // - ForecastRangeType["ForecastRangeTypeAuto"] = "auto"; - // - ForecastRangeType["ForecastRangeTypeNext"] = "next"; - // - ForecastRangeType["ForecastRangeTypeEndOf"] = "end-of"; - })(ForecastRangeType = exports.ForecastRangeType || (exports.ForecastRangeType = {})); - // - var ForecastStatus; - (function (ForecastStatus) { - // - ForecastStatus["FS_VALID"] = "fs-valid"; - // - ForecastStatus["FS_INVALID_DATETIME"] = "fs-invalid-datetime"; - // - ForecastStatus["FS_INVALID_RESPONSE"] = "fs-invalid-response"; - // - ForecastStatus["FS_NEED_MORE_DATA"] = "fs-need-more-data"; - // - ForecastStatus["FS_TIME_SERIES_TOO_SHORT"] = "fs-time-series-too-short"; - // - ForecastStatus["FS_TIME_SERIES_IRREGULAR"] = "fs-time-series-irregular"; - // - ForecastStatus["FS_NULL_DATETIME"] = "fs-null-datetime"; - // - ForecastStatus["FS_NULL_RESPONSE"] = "fs-null-response"; - // - ForecastStatus["FS_METADATA_INVALID"] = "fs-metadata-invalid"; - // - ForecastStatus["FS_NO_RESPONSE"] = "fs-no-response"; - // - ForecastStatus["FS_EXCESS_DATA"] = "fs-excess-data"; - // - ForecastStatus["FS_EXCESS_PARTITIONS"] = "fs-excess-partitions"; - // - ForecastStatus["FS_DIMENSION_INVALID"] = "fs-dimension-invalid"; - // - ForecastStatus["FS_TABLECALC_INVALID"] = "fs-tablecalc-invalid"; - // - ForecastStatus["FS_TIME_SERIES_TOO_IRREGULAR"] = "fs-time-series-too-irregular"; - // - ForecastStatus["FS_AGGREGATE_FILTER"] = "fs-aggregate-filter"; - // - ForecastStatus["FS_DISAGGREGATE_RESPONSE"] = "fs-disaggregate-response"; - // - ForecastStatus["FS_PERCENTAGE_INVALID"] = "fs-percentage-invalid"; - // - ForecastStatus["FS_TOTAL_INVALID"] = "fs-total-invalid"; - // - ForecastStatus["FS_EXCESS_DATETIME"] = "fs-excess-datetime"; - // - ForecastStatus["FS_DATE_AGG_INCOMPATIBLE"] = "fs-date-agg-incompatible"; - // - ForecastStatus["FS_TIME_SERIES_NOT_POSITIVE"] = "fs-time-series-not-positive"; - // - ForecastStatus["FS_REQUESTED_MODEL_INVALID"] = "fs-requested-model-invalid"; - // - ForecastStatus["FS_TOO_SHORT_FOR_SEASON"] = "fs-too-short-for-season"; - // - ForecastStatus["FS_REQUESTED_MODEL_UNSTABLE"] = "fs-requested-model-unstable"; - // - ForecastStatus["FS_UNDEFINED"] = "fs-undefined"; - })(ForecastStatus = exports.ForecastStatus || (exports.ForecastStatus = {})); - // - var StyleAttribute; - (function (StyleAttribute) { - // - StyleAttribute["saAlternateText"] = "saAlternateText"; - // - StyleAttribute["saAltMarkColor"] = "saAltMarkColor"; - // - StyleAttribute["saAspect"] = "saAspect"; - // - StyleAttribute["saAutoSubtitle"] = "saAutoSubtitle"; - // - StyleAttribute["saBackgroundColor"] = "saBackgroundColor"; - // - StyleAttribute["saBackgroundTransparency"] = "saBackgroundTransparency"; - // - StyleAttribute["saBandSize"] = "saBandSize"; - // - StyleAttribute["saBandColor"] = "saBandColor"; - // - StyleAttribute["saBandLevel"] = "saBandLevel"; - // - StyleAttribute["saBodyType"] = "saBodyType"; - // - StyleAttribute["saBorderColor"] = "saBorderColor"; - // - StyleAttribute["saBorderColorTop"] = "saBorderColorTop"; - // - StyleAttribute["saBorderColorRight"] = "saBorderColorRight"; - // - StyleAttribute["saBorderColorBottom"] = "saBorderColorBottom"; - // - StyleAttribute["saBorderColorLeft"] = "saBorderColorLeft"; - // - StyleAttribute["saBorderStyle"] = "saBorderStyle"; - // - StyleAttribute["saBorderStyleTop"] = "saBorderStyleTop"; - // - StyleAttribute["saBorderStyleRight"] = "saBorderStyleRight"; - // - StyleAttribute["saBorderStyleBottom"] = "saBorderStyleBottom"; - // - StyleAttribute["saBorderStyleLeft"] = "saBorderStyleLeft"; - // - StyleAttribute["saBorderWidth"] = "saBorderWidth"; - // - StyleAttribute["saBorderWidthTop"] = "saBorderWidthTop"; - // - StyleAttribute["saBorderWidthRight"] = "saBorderWidthRight"; - // - StyleAttribute["saBorderWidthBottom"] = "saBorderWidthBottom"; - // - StyleAttribute["saBorderWidthLeft"] = "saBorderWidthLeft"; - // - StyleAttribute["saBoxplotStyle"] = "saBoxplotStyle"; - // - StyleAttribute["saBreakOnSpecial"] = "saBreakOnSpecial"; - // - StyleAttribute["saCell"] = "saCell"; - // - StyleAttribute["saCellW"] = "saCellW"; - // - StyleAttribute["saCellH"] = "saCellH"; - // - StyleAttribute["saCellQ"] = "saCellQ"; - // - StyleAttribute["saCellQMark"] = "saCellQMark"; - // - StyleAttribute["saColor"] = "saColor"; - // - StyleAttribute["saColorMode"] = "saColorMode"; - // - StyleAttribute["saColLevels"] = "saColLevels"; - // - StyleAttribute["saColVertLevels"] = "saColVertLevels"; - // - StyleAttribute["saColHorizHeight"] = "saColHorizHeight"; - // - StyleAttribute["saColVertHeight"] = "saColVertHeight"; - // Deprecated - StyleAttribute["saColHeight"] = "saColHeight"; - // - StyleAttribute["saColWidth"] = "saColWidth"; - // - StyleAttribute["saContent"] = "saContent"; - // - StyleAttribute["saDisplayFieldLabels"] = "saDisplayFieldLabels"; - // - StyleAttribute["saDisplayHeader"] = "saDisplayHeader"; - // - StyleAttribute["saDisplayAlternateText"] = "saDisplayAlternateText"; - // - StyleAttribute["saDivLevel"] = "saDivLevel"; - // - StyleAttribute["saEnabled"] = "saEnabled"; - // - StyleAttribute["saFillAboveColor"] = "saFillAboveColor"; - // - StyleAttribute["saFillBelowColor"] = "saFillBelowColor"; - // - StyleAttribute["saFillColor"] = "saFillColor"; - // - StyleAttribute["saFogBGColor"] = "saFogBGColor"; - // - StyleAttribute["saFogDesaturationWithoutSelection"] = "saFogDesaturationWithoutSelection"; - // - StyleAttribute["saFogDesaturationWithSelection"] = "saFogDesaturationWithSelection"; - // - StyleAttribute["saFont"] = "saFont"; - // - StyleAttribute["saFontFamily"] = "saFontFamily"; - // - StyleAttribute["saFontSize"] = "saFontSize"; - // - StyleAttribute["saFontStyle"] = "saFontStyle"; - // - StyleAttribute["saFontWeight"] = "saFontWeight"; - // - StyleAttribute["saGeographicAreaType"] = "saGeographicAreaType"; - // - StyleAttribute["saHAlign"] = "saHAlign"; - // - StyleAttribute["saHaloColor"] = "saHaloColor"; - // - StyleAttribute["saHaloColorSelected"] = "saHaloColorSelected"; - // - StyleAttribute["saHasFill"] = "saHasFill"; - // - StyleAttribute["saHasHalo"] = "saHasHalo"; - // Deprecated - StyleAttribute["saHasLabel"] = "saHasLabel"; - // - StyleAttribute["saHasStroke"] = "saHasStroke"; - // - StyleAttribute["saHeight"] = "saHeight"; - // - StyleAttribute["saHeightHeader"] = "saHeightHeader"; - // - StyleAttribute["saHighlightLegend"] = "saHighlightLegend"; - // - StyleAttribute["saHnaxis"] = "saHnaxis"; - // - StyleAttribute["saHnlabel"] = "saHnlabel"; - // - StyleAttribute["saInTooltip"] = "saInTooltip"; - // - StyleAttribute["saLineEnd"] = "saLineEnd"; - // - StyleAttribute["saLineEndSize"] = "saLineEndSize"; - // - StyleAttribute["saLineInterpolation"] = "saLineInterpolation"; - // - StyleAttribute["saLineMarkerPosition"] = "saLineMarkerPosition"; - // - StyleAttribute["saLinePattern"] = "saLinePattern"; - // - StyleAttribute["saLinePatternOnly"] = "saLinePatternOnly"; - // - StyleAttribute["saLineVisibility"] = "saLineVisibility"; - // - StyleAttribute["saMap"] = "saMap"; - // - StyleAttribute["saMapStyle"] = "saMapStyle"; - // - StyleAttribute["saMargin"] = "saMargin"; - // - StyleAttribute["saMarginTop"] = "saMarginTop"; - // - StyleAttribute["saMarginRight"] = "saMarginRight"; - // - StyleAttribute["saMarginBottom"] = "saMarginBottom"; - // - StyleAttribute["saMarginLeft"] = "saMarginLeft"; - // - StyleAttribute["saMarkColor"] = "saMarkColor"; - // - StyleAttribute["saMarkTransparency"] = "saMarkTransparency"; - // - StyleAttribute["saMarkLabelsShow"] = "saMarkLabelsShow"; - // - StyleAttribute["saRunningOrderLabelsShow"] = "saRunningOrderLabelsShow"; - // - StyleAttribute["saMarkLabelsMode"] = "saMarkLabelsMode"; - // - StyleAttribute["saMarkLabelsCull"] = "saMarkLabelsCull"; - // - StyleAttribute["saMarkLabelsLineEndFirst"] = "saMarkLabelsLineEndFirst"; - // - StyleAttribute["saMarkLabelsLineEndLast"] = "saMarkLabelsLineEndLast"; - // - StyleAttribute["saMarkLabelsRangeMin"] = "saMarkLabelsRangeMin"; - // - StyleAttribute["saMarkLabelsRangeMax"] = "saMarkLabelsRangeMax"; - // - StyleAttribute["saMarkLabelsRangeScope"] = "saMarkLabelsRangeScope"; - // - StyleAttribute["saMarkLabelsRangeField"] = "saMarkLabelsRangeField"; - // - StyleAttribute["saMarkMarkersMode"] = "saMarkMarkersMode"; - // - StyleAttribute["saMaxHeight"] = "saMaxHeight"; - // - StyleAttribute["saMaxFontSize"] = "saMaxFontSize"; - // - StyleAttribute["saMaxStrokeWidth"] = "saMaxStrokeWidth"; - // - StyleAttribute["saMaxWidth"] = "saMaxWidth"; - // - StyleAttribute["saMidStrokeWidth"] = "saMidStrokeWidth"; - // - StyleAttribute["saMinHeight"] = "saMinHeight"; - // - StyleAttribute["saMinFontSize"] = "saMinFontSize"; - // - StyleAttribute["saMinLength"] = "saMinLength"; - // - StyleAttribute["saMinMapSize"] = "saMinMapSize"; - // - StyleAttribute["saMinSize"] = "saMinSize"; - // - StyleAttribute["saMinStrokeWidth"] = "saMinStrokeWidth"; - // - StyleAttribute["saMinWidth"] = "saMinWidth"; - // - StyleAttribute["saNonhighlightColor"] = "saNonhighlightColor"; - // - StyleAttribute["saOmitOnSpecial"] = "saOmitOnSpecial"; - // - StyleAttribute["saOpacity"] = "saOpacity"; - // - StyleAttribute["saOrientation"] = "saOrientation"; - // - StyleAttribute["saPadding"] = "saPadding"; - // - StyleAttribute["saPaddingTop"] = "saPaddingTop"; - // - StyleAttribute["saPaddingRight"] = "saPaddingRight"; - // - StyleAttribute["saPaddingBottom"] = "saPaddingBottom"; - // - StyleAttribute["saPaddingLeft"] = "saPaddingLeft"; - // - StyleAttribute["saPalette"] = "saPalette"; - // - StyleAttribute["saRenderFoldReversed"] = "saRenderFoldReversed"; - // - StyleAttribute["saReversePalette"] = "saReversePalette"; - // - StyleAttribute["saRounding"] = "saRounding"; - // - StyleAttribute["saRowHorizLevels"] = "saRowHorizLevels"; - // - StyleAttribute["saRowHorizWidth"] = "saRowHorizWidth"; - // - StyleAttribute["saRowLevels"] = "saRowLevels"; - // - StyleAttribute["saRowVertWidth"] = "saRowVertWidth"; - // - StyleAttribute["saSeparator"] = "saSeparator"; - // - StyleAttribute["saShape"] = "saShape"; - // Deprecated - StyleAttribute["saShowLabels"] = "saShowLabels"; - // - StyleAttribute["saSize"] = "saSize"; - // - StyleAttribute["saSizeBar"] = "saSizeBar"; - // - StyleAttribute["saSmartAutoAlignment"] = "saSmartAutoAlignment"; - // - StyleAttribute["saSpace"] = "saSpace"; - // - StyleAttribute["saStrokeColor"] = "saStrokeColor"; - // - StyleAttribute["saStrokeSize"] = "saStrokeSize"; - // - StyleAttribute["saSubtitle"] = "saSubtitle"; - // - StyleAttribute["saTextAlign"] = "saTextAlign"; - // - StyleAttribute["saTextAlignDefault"] = "saTextAlignDefault"; - // - StyleAttribute["saTextDecoration"] = "saTextDecoration"; - // - StyleAttribute["saTextIndent"] = "saTextIndent"; - // - StyleAttribute["saTextOrientation"] = "saTextOrientation"; - // - StyleAttribute["saTextFormat"] = "saTextFormat"; - // - StyleAttribute["saTickColor"] = "saTickColor"; - // - StyleAttribute["saTickLength"] = "saTickLength"; - // Deprecated - StyleAttribute["saTickSpacing"] = "saTickSpacing"; - // - StyleAttribute["saTitle"] = "saTitle"; - // - StyleAttribute["saTotalLabel"] = "saTotalLabel"; - // - StyleAttribute["saVAlign"] = "saVAlign"; - // - StyleAttribute["saVerticalAlign"] = "saVerticalAlign"; - // - StyleAttribute["saVerticalAlignDefault"] = "saVerticalAlignDefault"; - // - StyleAttribute["saVnaxis"] = "saVnaxis"; - // - StyleAttribute["saVnlabel"] = "saVnlabel"; - // - StyleAttribute["saWarnOnSpecial"] = "saWarnOnSpecial"; - // - StyleAttribute["saWashout"] = "saWashout"; - // - StyleAttribute["saWhiskerEnd"] = "saWhiskerEnd"; - // - StyleAttribute["saWhiskerStrokeColor"] = "saWhiskerStrokeColor"; - // - StyleAttribute["saWhiskerStrokeSize"] = "saWhiskerStrokeSize"; - // - StyleAttribute["saWidth"] = "saWidth"; - // - StyleAttribute["saWidthHeader"] = "saWidthHeader"; - // - StyleAttribute["saWrap"] = "saWrap"; - // - StyleAttribute["saZoom"] = "saZoom"; - // Special attributes used for matching - StyleAttribute["saNone"] = "saNone"; - // Special attributes used for matching - StyleAttribute["saAny"] = "saAny"; - })(StyleAttribute = exports.StyleAttribute || (exports.StyleAttribute = {})); - // lowest bit of enum value denotes two-tone styles; newly added styles should follow this pattern. - var BoxplotStyle; - (function (BoxplotStyle) { - // mask for checking if a style is two-tone - BoxplotStyle["BoxplotStyleTwoTone"] = "two-tone"; - // - BoxplotStyle["BoxplotStyleModern"] = "modern"; - // - BoxplotStyle["BoxplotStyleGlass"] = "glass"; - // - BoxplotStyle["BoxplotStyleClassic"] = "classic"; - // - BoxplotStyle["BoxplotStyleClassicTwoTone"] = "classic-two-tone"; - })(BoxplotStyle = exports.BoxplotStyle || (exports.BoxplotStyle = {})); - // used for boxplots and prediction band whiskers - var WhiskerEnd; - (function (WhiskerEnd) { - // - WhiskerEnd["WhiskerEndNone"] = "none"; - // - WhiskerEnd["WhiskerEndSmall"] = "small"; - // - WhiskerEnd["WhiskerEndLarge"] = "large"; - })(WhiskerEnd = exports.WhiskerEnd || (exports.WhiskerEnd = {})); - // - var StyleElement; - (function (StyleElement) { - // - StyleElement["elementAxis"] = "elementAxis"; - // - StyleElement["elementCell"] = "elementCell"; - // - StyleElement["elementDatalabel"] = "elementDatalabel"; - // - StyleElement["elementDropspot"] = "elementDropspot"; - // - StyleElement["elementHeader"] = "elementHeader"; - // - StyleElement["elementFieldLabel"] = "elementFieldLabel"; - // - StyleElement["elementFieldLabelDecoration"] = "elementFieldLabelDecoration"; - // - StyleElement["elementFieldLabelSpanner"] = "elementFieldLabelSpanner"; - // - StyleElement["elementLabel"] = "elementLabel"; - // - StyleElement["elementMark"] = "elementMark"; - // - StyleElement["elementPane"] = "elementPane"; - // - StyleElement["elementTable"] = "elementTable"; - // - StyleElement["elementWorksheet"] = "elementWorksheet"; - // - StyleElement["elementBasesheet"] = "elementBasesheet"; - // - StyleElement["elementDashboard"] = "elementDashboard"; - // - StyleElement["elementStoryboard"] = "elementStoryboard"; - // - StyleElement["elementCaption"] = "elementCaption"; - // - StyleElement["elementDropline"] = "elementDropline"; - // - StyleElement["elementRefline"] = "elementRefline"; - // - StyleElement["elementRefBand"] = "elementRefBand"; - // - StyleElement["elementRefBoxplot"] = "elementRefBoxplot"; - // - StyleElement["elementGridline"] = "elementGridline"; - // - StyleElement["elementZeroline"] = "elementZeroline"; - // - StyleElement["elementTrendline"] = "elementTrendline"; - // - StyleElement["elementTableDiv"] = "elementTableDiv"; - // - StyleElement["elementHeaderDiv"] = "elementHeaderDiv"; - // - StyleElement["elementMappedImage"] = "elementMappedImage"; - // - StyleElement["elementAction"] = "elementAction"; - // - StyleElement["elementTitle"] = "elementTitle"; - // - StyleElement["elementLegend"] = "elementLegend"; - // - StyleElement["elementLegendTitle"] = "elementLegendTitle"; - // - StyleElement["elementLegendTitleText"] = "elementLegendTitleText"; - // - StyleElement["elementAxisTitle"] = "elementAxisTitle"; - // - StyleElement["elementAnnotation"] = "elementAnnotation"; - // - StyleElement["elementDashTitle"] = "elementDashTitle"; - // - StyleElement["elementDashSubtitle"] = "elementDashSubtitle"; - // - StyleElement["elementDashText"] = "elementDashText"; - // - StyleElement["elementDashZone"] = "elementDashZone"; - // - StyleElement["elementDashContainer"] = "elementDashContainer"; - // - StyleElement["elementScrollbar"] = "elementScrollbar"; - // Static on/off map layers - StyleElement["elementMapLayer"] = "elementMapLayer"; - // Contains washout - StyleElement["elementMap"] = "elementMap"; - // Initially for UrbanMapping/Claritas data - StyleElement["elementMapDataLayer"] = "elementMapDataLayer"; - // - StyleElement["elementQuickFilter"] = "elementQuickFilter"; - // - StyleElement["elementQuickFilterTitle"] = "elementQuickFilterTitle"; - // - StyleElement["elementParameterCtrl"] = "elementParameterCtrl"; - // - StyleElement["elementParameterCtrlTitle"] = "elementParameterCtrlTitle"; - // - StyleElement["elementPageCardTitle"] = "elementPageCardTitle"; - // - StyleElement["elementStoryDescription"] = "elementStoryDescription"; - // - StyleElement["elementStoryPointCaption"] = "elementStoryPointCaption"; - // - StyleElement["elementStoryTitle"] = "elementStoryTitle"; - // - StyleElement["elementTooltip"] = "elementTooltip"; - // - StyleElement["elementAll"] = "elementAll"; - // - StyleElement["elementPageCardBody"] = "elementPageCardBody"; - // - StyleElement["elementDataHighlighter"] = "elementDataHighlighter"; - // - StyleElement["elementDataHighlighterTitle"] = "elementDataHighlighterTitle"; - // Special elements used for matching and organization - StyleElement["elementNone"] = "elementNone"; - // Special elements used for matching and organization - StyleElement["elementAny"] = "elementAny"; - // Special elements used for matching and organization - StyleElement["elementRoot"] = "elementRoot"; - })(StyleElement = exports.StyleElement || (exports.StyleElement = {})); - // Do not mess with these values. They are sometimes used as array indexes/bounds - var StyleDataClass; - (function (StyleDataClass) { - // - StyleDataClass["dcNormal"] = "dcNormal"; - // - StyleDataClass["dcTotal"] = "dcTotal"; - // - StyleDataClass["dcSubtotal"] = "dcSubtotal"; - // - StyleDataClass["dcCOUNT"] = "dcCOUNT"; - })(StyleDataClass = exports.StyleDataClass || (exports.StyleDataClass = {})); - // - var StyleFieldScope; - (function (StyleFieldScope) { - // - StyleFieldScope["fsNone"] = "fsNone"; - // - StyleFieldScope["fsRows"] = "fsRows"; - // - StyleFieldScope["fsCols"] = "fsCols"; - })(StyleFieldScope = exports.StyleFieldScope || (exports.StyleFieldScope = {})); - // - var StyleSwatch; - (function (StyleSwatch) { - // - StyleSwatch["ssUnspecified"] = "ssUnspecified"; - // - StyleSwatch["ssLight"] = "ssLight"; - // - StyleSwatch["ssDark"] = "ssDark"; - })(StyleSwatch = exports.StyleSwatch || (exports.StyleSwatch = {})); - // - var TableauFontStyle; - (function (TableauFontStyle) { - // - TableauFontStyle["NormalStyle"] = "font-style-normal"; - // - TableauFontStyle["Italic"] = "font-style-italic"; - })(TableauFontStyle = exports.TableauFontStyle || (exports.TableauFontStyle = {})); - // Unsupported for Betsy - var TextDecoration; - (function (TextDecoration) { - // - TextDecoration["NoDecoration"] = "text-decoration-none"; - // - TextDecoration["Underline"] = "text-decoration-underline"; - // not yet supported - TextDecoration["Overline"] = "text-decoration-overline"; - // - TextDecoration["Strikethrough"] = "text-decoration-strikethrough"; - })(TextDecoration = exports.TextDecoration || (exports.TextDecoration = {})); - // - var FontWeight; - (function (FontWeight) { - // - FontWeight["NormalWeight"] = "font-weight-normal"; - // - FontWeight["Bold"] = "font-weight-bold"; - })(FontWeight = exports.FontWeight || (exports.FontWeight = {})); - // - var TextOrient; - (function (TextOrient) { - // - TextOrient["TO_Auto"] = "text-orient-auto"; - // - TextOrient["TO_Horz"] = "text-orient-horizontal"; - // - TextOrient["TO_VertUp"] = "text-orient-vertical-up"; - // - TextOrient["TO_VertDown"] = "text-orient-vertical-down"; - })(TextOrient = exports.TextOrient || (exports.TextOrient = {})); - // - var TextAlign; - (function (TextAlign) { - // - TextAlign["TA_Start"] = "text-align-start"; - // - TextAlign["TA_Center"] = "text-align-center"; - // - TextAlign["TA_End"] = "text-align-end"; - })(TextAlign = exports.TextAlign || (exports.TextAlign = {})); - // - var TextWrapMode; - (function (TextWrapMode) { - // - TextWrapMode["TextWrapOff"] = "text-wrap-off"; - // - TextWrapMode["TextWrapTruncate"] = "text-wrap-truncate"; - // - TextWrapMode["TextWrapOn"] = "text-wrap-on"; - // - TextWrapMode["TextWrapAuto"] = "text-wrap-auto"; - })(TextWrapMode = exports.TextWrapMode || (exports.TextWrapMode = {})); - // - var TextWholeLineMode; - (function (TextWholeLineMode) { - // - TextWholeLineMode["TextWholeLineOff"] = "text-whole-line-off"; - // - TextWholeLineMode["TextWholeLineOn"] = "text-whole-line-on"; - // - TextWholeLineMode["TextWholeLineAuto"] = "text-whole-line-auto"; - })(TextWholeLineMode = exports.TextWholeLineMode || (exports.TextWholeLineMode = {})); - // - var TextBreakMode; - (function (TextBreakMode) { - // - TextBreakMode["TextBreakWhitespaceOnly"] = "text-break-ws-only"; - // - TextBreakMode["TextBreakAuto"] = "text-break-auto"; - })(TextBreakMode = exports.TextBreakMode || (exports.TextBreakMode = {})); - // type of aggregation - var AggType; - (function (AggType) { - // - AggType["AGG_SUM"] = "sum"; - // - AggType["AGG_AVG"] = "average"; - // - AggType["AGG_MIN"] = "min"; - // - AggType["AGG_MAX"] = "max"; - // - AggType["AGG_STDEV"] = "std-dev"; - // - AggType["AGG_STDEVP"] = "std-dev-p"; - // - AggType["AGG_VAR"] = "var"; - // - AggType["AGG_VARP"] = "var-p"; - // - AggType["AGG_COUNT"] = "count"; - // - AggType["AGG_COUNTD"] = "count-d"; - // - AggType["AGG_MEDIAN"] = "median"; - // - AggType["AGG_ATTR"] = "attr"; - // - AggType["AGG_NONE"] = "none"; - // - AggType["AGG_PERCENTILE"] = "percentile"; - // - AggType["AGG_YEAR"] = "year"; - // - AggType["AGG_QTR"] = "qtr"; - // - AggType["AGG_MONTH"] = "month"; - // - AggType["AGG_DAY"] = "day"; - // - AggType["AGG_HOUR"] = "hour"; - // - AggType["AGG_MINUTE"] = "minute"; - // - AggType["AGG_SECOND"] = "second"; - // - AggType["AGG_WEEK"] = "week"; - // - AggType["AGG_WEEKDAY"] = "weekday"; - // - AggType["AGG_MONTHYEAR"] = "month-year"; - // - AggType["AGG_MDY"] = "mdy"; - // - AggType["AGG_END"] = "end"; - // - AggType["TRUNC_YEAR"] = "trunc-year"; - // - AggType["TRUNC_QTR"] = "trunc-qtr"; - // - AggType["TRUNC_MONTH"] = "trunc-month"; - // - AggType["TRUNC_WEEK"] = "trunc-week"; - // - AggType["TRUNC_DAY"] = "trunc-day"; - // - AggType["TRUNC_HOUR"] = "trunc-hour"; - // - AggType["TRUNC_MINUTE"] = "trunc-minute"; - // - AggType["TRUNC_SECOND"] = "trunc-second"; - // - AggType["AGG_QUART1"] = "quart1"; - // - AggType["AGG_QUART3"] = "quart3"; - // - AggType["AGG_SKEWNESS"] = "skewness"; - // - AggType["AGG_KURTOSIS"] = "kurtosis"; - // - AggType["AGG_INOUT"] = "in-out"; - // - AggType["AGG_SUM_XSQR"] = "sum-xsqr"; - // - AggType["AGG_USER"] = "user"; - // - AggType["AGG_COLLECT"] = "collect"; - // - AggType["AGG_COVAR"] = "covar"; - // - AggType["AGG_COVARP"] = "covarp"; - // - AggType["AGG_CORR"] = "corr"; - })(AggType = exports.AggType || (exports.AggType = {})); - // DataValueFormatter::DataTypeEncodings has hardcoded values corresponding to following enum members - var DataType; - (function (DataType) { - // - DataType["DT_INTEGER"] = "integer"; - // - DataType["DT_REAL"] = "real"; - // - DataType["DT_STRING"] = "cstring"; - // - DataType["DT_DATETIME"] = "datetime"; - // - DataType["DT_BOOLEAN"] = "boolean"; - // - DataType["DT_DATE"] = "date"; - // - DataType["DT_TUPLE"] = "tuple"; - // - DataType["DT_SPATIAL"] = "spatial"; - // - DataType["DT_UNKNOWN"] = "unknown"; - // - DataType["DT_BINARY"] = "binary"; - })(DataType = exports.DataType || (exports.DataType = {})); - // - var SortDirection; - (function (SortDirection) { - // ascending - SortDirection["ST_ASC"] = "asc"; - // descending - SortDirection["ST_DESC"] = "desc"; - })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); - // - var SortType; - (function (SortType) { - // Use the defined ordering - SortType["ST_NATURAL"] = "data-source-order"; - // Alphabetic/numeric ordering of data - SortType["ST_ALPHABETIC"] = "alpha"; - // Specify a secondary field - SortType["ST_COMPUTED"] = "field"; - // Manually defined ordering - SortType["ST_MANUAL"] = "manual"; - })(SortType = exports.SortType || (exports.SortType = {})); - // - var SortEnd; - (function (SortEnd) { - // - SortEnd["ST_TOP"] = "top"; - // - SortEnd["ST_BOTTOM"] = "bottom"; - })(SortEnd = exports.SortEnd || (exports.SortEnd = {})); - // - var ForecastColumnType; - (function (ForecastColumnType) { - // - ForecastColumnType["FORECAST_NONE"] = "none"; - // - ForecastColumnType["FORECAST_VALUE"] = "value"; - // - ForecastColumnType["FORECAST_INDICATOR"] = "indicator"; - // - ForecastColumnType["FORECAST_PRECISION"] = "precision"; - // - ForecastColumnType["FORECAST_QUALITY"] = "quality"; - // - ForecastColumnType["FORECAST_FIT_TREND"] = "fit_trend"; - // - ForecastColumnType["FORECAST_PRECISION_PERCENT"] = "precision_percent"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_UPPER"] = "prediction_upper"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_LOWER"] = "prediction_lower"; - })(ForecastColumnType = exports.ForecastColumnType || (exports.ForecastColumnType = {})); - // - var MarkMarkersMode; - (function (MarkMarkersMode) { - // - MarkMarkersMode["MMM_Auto"] = "mmm-auto"; - // - MarkMarkersMode["MMM_All"] = "mmm_all"; - // - MarkMarkersMode["MMM_None"] = "mmm_none"; - // - MarkMarkersMode["MMM_Default"] = "mmm_default"; - })(MarkMarkersMode = exports.MarkMarkersMode || (exports.MarkMarkersMode = {})); - // - var PercentMode; - (function (PercentMode) { - // - PercentMode["PERCENT_CELL_IN_PANE"] = "cell-in-pane"; - // - PercentMode["PERCENT_ROW_IN_PANE"] = "row-in-pane"; - // - PercentMode["PERCENT_COLUMN_IN_PANE"] = "column-in-pane"; - // - PercentMode["PERCENT_PANE"] = "pane"; - // - PercentMode["PERCENT_ROW"] = "row"; - // - PercentMode["PERCENT_COLUMN"] = "column"; - // - PercentMode["PERCENT_TABLE"] = "table"; - })(PercentMode = exports.PercentMode || (exports.PercentMode = {})); - // - var SpecialValuesMode; - (function (SpecialValuesMode) { - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_AND_WARN"] = "hide-and-warn"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE"] = "hide"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_BREAK_LINES"] = "hide-break-lines"; - // - SpecialValuesMode["SPECIAL_VALUES_SHOW"] = "show"; - })(SpecialValuesMode = exports.SpecialValuesMode || (exports.SpecialValuesMode = {})); - // - var LayoutType; - (function (LayoutType) { - // - LayoutType["LAYOUT_CARTESIAN"] = "cartesian"; - // - LayoutType["LAYOUT_DEFAULT"] = "default"; - })(LayoutType = exports.LayoutType || (exports.LayoutType = {})); - // - var ShelfType; - (function (ShelfType) { - // - ShelfType["ST_NONE"] = "none-shelf"; - // - ShelfType["ST_COLUMNS_SHELF"] = "columns-shelf"; - // - ShelfType["ST_ROWS_SHELF"] = "rows-shelf"; - // - ShelfType["ST_PAGES_SHELF"] = "pages-shelf"; - // - ShelfType["ST_FILTER_SHELF"] = "filter-shelf"; - // - ShelfType["ST_IMAGE_SHELF"] = "image-shelf"; - // - ShelfType["ST_MEASURES_SHELF"] = "measures-shelf"; - // - ShelfType["ST_SHOWME_SHELF"] = "show-me-shelf"; - // - ShelfType["ST_ENCODING_SHELF"] = "encoding-shelf"; - // - ShelfType["ST_CLUSTER_SHELF"] = "cluster-shelf"; - // - ShelfType["ST_GEOMETRY_SHELF"] = "geometry-shelf"; - // - ShelfType["ST_END"] = "end-shelf"; - // - ShelfType["ST_FINAL"] = "final-shelf"; - })(ShelfType = exports.ShelfType || (exports.ShelfType = {})); - // - var RestrictType; - (function (RestrictType) { - // - RestrictType["RT_INTERSECT"] = "rt-intersection"; - // - RestrictType["RT_UNION"] = "rt-union"; - })(RestrictType = exports.RestrictType || (exports.RestrictType = {})); - // - var TooltipMode; - (function (TooltipMode) { - // - TooltipMode["TM_NONE"] = "none"; - // - TooltipMode["TM_STICKY"] = "sticky"; - // - TooltipMode["TM_SMOOTH"] = "smooth"; - })(TooltipMode = exports.TooltipMode || (exports.TooltipMode = {})); - // - var ColumnGroups; - (function (ColumnGroups) { - // 0x01 - ColumnGroups["COLS_IN_OUTPUT"] = "cols-in-output"; - // 0x02 - ColumnGroups["COLS_IN_FILTER_SHELF"] = "cols-in-filter-shelf"; - // 0x04 - ColumnGroups["COLS_REF_BY_FILTERS"] = "cols-ref-by-filters"; - // 0x08 - ColumnGroups["COLS_REF_BY_OMEASURES"] = "cols-ref-by-omeasures"; - // 0x10 - ColumnGroups["COLS_REF_BY_JOIN_LOD"] = "cols-ref-by-join-lod"; - // 0x20 - ColumnGroups["COLS_HIDDEN"] = "cols-hidden"; - // 0x40 - ColumnGroups["COLS_REF_BY_SORTS"] = "cols-ref-by-sorts"; - // - ColumnGroups["COLS_REF_BY_FILTERS_OR_SORTS"] = "cols-ref-by-filters-or-sorts"; - // - ColumnGroups["COLS_ON_SHELVES"] = "cols-on-shelves"; - // - ColumnGroups["COLS_ALL"] = "cols-all"; - })(ColumnGroups = exports.ColumnGroups || (exports.ColumnGroups = {})); - // - var ButtonsOption; - (function (ButtonsOption) { - // - ButtonsOption["BO_HIDE"] = "buttons-hide"; - })(ButtonsOption = exports.ButtonsOption || (exports.ButtonsOption = {})); - // - var SelectionRelaxationOption; - (function (SelectionRelaxationOption) { - // - SelectionRelaxationOption["SRO_ALLOW"] = "selection-relaxation-allow"; - // - SelectionRelaxationOption["SRO_DISALLOW"] = "selection-relaxation-disallow"; - })(SelectionRelaxationOption = exports.SelectionRelaxationOption || (exports.SelectionRelaxationOption = {})); - // - var EncodingType; - (function (EncodingType) { - // a text encoding - EncodingType["ET_TEXT"] = "text-encoding"; - // a color encoding - EncodingType["ET_COLOR"] = "color-encoding"; - // a size encoding - EncodingType["ET_SIZE"] = "size-encoding"; - // a shape encoding - EncodingType["ET_SHAPE"] = "shape-encoding"; - // an image encoding - EncodingType["ET_IMAGE"] = "image-encoding"; - // a sort (path) encoding (currently only for line or polygon charts) - EncodingType["ET_SORT"] = "sort-encoding"; - // a wedge size (angle) encoding (currently only for pie charts) - EncodingType["ET_WEDGESIZE"] = "wedge-size-encoding"; - // a geometry encoding - EncodingType["ET_GEOMETRY"] = "geometry-encoding"; - // a level of detail encoding - EncodingType["ET_LOD"] = "level-of-detail-encoding"; - // encoding used for the data highlighter/legend mechanism - EncodingType["ET_HIGHLIGHT"] = "highlight-encoding"; - // a tooltip encoding - EncodingType["ET_TOOLTIP"] = "tooltip-encoding"; - // a temporary label placed above marks for the table calc dialog - EncodingType["ET_RUNNINGORDER"] = "runningorder-encoding"; - // the number of encodings, this is invalid input for an encoding presentation model - EncodingType["NUM_ENCODINGS"] = "num-encodings"; - // an invalid encoding - EncodingType["ET_INVALID"] = "invalid-encoding"; - })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); - // Enumeration of valid horizontal alignments. - var LabelHAlignment; - (function (LabelHAlignment) { - // - LabelHAlignment["LHA_Left"] = "h-align-left"; - // - LabelHAlignment["LHA_Center"] = "h-align-center"; - // - LabelHAlignment["LHA_Right"] = "h-align-right"; - // - LabelHAlignment["LHA_Automatic"] = "h-align-auto"; - })(LabelHAlignment = exports.LabelHAlignment || (exports.LabelHAlignment = {})); - // Enumeration of valid vertical alignments. - var LabelVAlignment; - (function (LabelVAlignment) { - // - LabelVAlignment["LVA_Bottom"] = "v-align-bottom"; - // - LabelVAlignment["LVA_Center"] = "v-align-center"; - // - LabelVAlignment["LVA_Top"] = "v-align-top"; - // - LabelVAlignment["LVA_Automatic"] = "v-align-auto"; - })(LabelVAlignment = exports.LabelVAlignment || (exports.LabelVAlignment = {})); - // Enumeration of valid label positions. - var LabelPosition; - (function (LabelPosition) { - // Position each text run relative to the center of the original bbox. Use the original bbox as the height and width of the text mark. Used for non-stacked OO text marks. - LabelPosition["CenterInOriginalBbox"] = "label-position-center-in-original-box"; - // Position each text run relative to the bottom left corner of the measured bbox. Use the measured bbox as the width and height of the label. Used for labels - LabelPosition["OriginAtLowerLeft"] = "label-position-origin-at-lower-left"; - // Position each text run relative to the center of the measured bbox. Use the measured bbox as the width and height of the text mark. Used for most text marks. - LabelPosition["OriginAtCenter"] = "label-position-origin-at-center"; - })(LabelPosition = exports.LabelPosition || (exports.LabelPosition = {})); - // Enumeration of ways to use color. Values can be or'ed together to make a mask for allowed options - var ColorMode; - (function (ColorMode) { - // Color user specified - ColorMode["CLRM_User"] = "clrm-user"; - // Color selected automatically - ColorMode["CLRM_Auto"] = "clrm-auto"; - // Color matches mark color - ColorMode["CLRM_Match"] = "clrm-match"; - // No color (transparent or not drawn) - ColorMode["CLRM_None"] = "clrm-none"; - })(ColorMode = exports.ColorMode || (exports.ColorMode = {})); - // - var MarkLabelsMode; - (function (MarkLabelsMode) { - // - MarkLabelsMode["MLM_All"] = "mlm-all"; - // - MarkLabelsMode["MLM_Selection"] = "mlm-selection"; - // - MarkLabelsMode["MLM_Highlight"] = "mlm-highlight"; - // - MarkLabelsMode["MLM_LineEnds"] = "mlm-line-ends"; - // min/max setting - MarkLabelsMode["MLM_Range"] = "mlm-range"; - // most recent (only relevant when date field is in play) - MarkLabelsMode["MLM_MostRecent"] = "mlm-most-recent"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting - MarkLabelsMode["MLM_MultipleValues"] = "mlm-multiple-values"; - // - MarkLabelsMode["MLM_Default"] = "mlm-default"; - })(MarkLabelsMode = exports.MarkLabelsMode || (exports.MarkLabelsMode = {})); - // - var MarkLabelsScope; - (function (MarkLabelsScope) { - // - MarkLabelsScope["MLS_Table"] = "mls-table"; - // - MarkLabelsScope["MLS_Pane"] = "mls-pane"; - // - MarkLabelsScope["MLS_Cell"] = "mls-cell"; - // - MarkLabelsScope["MLS_MultiMark"] = "mls-multimark"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting) - MarkLabelsScope["MLS_MultipleValues"] = "mls-multiple-values"; - // - MarkLabelsScope["MLS_Default"] = "mls-default"; - })(MarkLabelsScope = exports.MarkLabelsScope || (exports.MarkLabelsScope = {})); - // - var MarkLabelsVisibility; - (function (MarkLabelsVisibility) { - // - MarkLabelsVisibility["MLV_Hidden"] = "mlv-hidden"; - // - MarkLabelsVisibility["MLV_Visible"] = "mlv-visible"; - // - MarkLabelsVisibility["MLV_UseCurrent"] = "mlv-use-current"; - })(MarkLabelsVisibility = exports.MarkLabelsVisibility || (exports.MarkLabelsVisibility = {})); - // - var StackingMode; - (function (StackingMode) { - // - StackingMode["StackingOff"] = "off"; - // - StackingMode["StackingOn"] = "on"; - // - StackingMode["StackingAuto"] = "auto"; - })(StackingMode = exports.StackingMode || (exports.StackingMode = {})); - // - var MarkAlignment; - (function (MarkAlignment) { - // - MarkAlignment["MarkAlignmentLeft"] = "mark-alignment-left"; - // - MarkAlignment["MarkAlignmentRight"] = "mark-alignment-right"; - // - MarkAlignment["MarkAlignmentCenter"] = "mark-alignment-center"; - })(MarkAlignment = exports.MarkAlignment || (exports.MarkAlignment = {})); - // - var PaneLabelComposition; - (function (PaneLabelComposition) { - // - PaneLabelComposition["PLC_None"] = "pane-label-composition-none"; - // - PaneLabelComposition["PLC_Mixed"] = "pane-label-composition-mixed"; - // - PaneLabelComposition["PLC_All"] = "pane-label-composition-all"; - })(PaneLabelComposition = exports.PaneLabelComposition || (exports.PaneLabelComposition = {})); - // The user-specified mark type on the Marks Card - var PrimitiveType; - (function (PrimitiveType) { - // - PrimitiveType["PT_AUTOMATIC"] = "automatic"; - // - PrimitiveType["PT_TEXT"] = "text"; - // - PrimitiveType["PT_IMAGE"] = "image"; - // - PrimitiveType["PT_SHAPE"] = "shape"; - // - PrimitiveType["PT_RECTANGLE"] = "rectangle"; - // - PrimitiveType["PT_BAR"] = "bar"; - // - PrimitiveType["PT_GANTT"] = "gantt"; - // - PrimitiveType["PT_SQUARE"] = "square"; - // - PrimitiveType["PT_CIRCLE"] = "circle"; - // - PrimitiveType["PT_POLYLINE"] = "polyline"; - // line chart - PrimitiveType["PT_LINE"] = "line"; - // - PrimitiveType["PT_POLYGON"] = "polygon"; - // area chart - PrimitiveType["PT_AREA"] = "area"; - // - PrimitiveType["PT_PIE"] = "pie"; - // - PrimitiveType["PT_MULTIPOLYGON"] = "multipolygon"; - // Not an actual primitive type. This is just used to flag the UI that multiple types are in play. - PrimitiveType["PT_MULTIPLE"] = "multiple"; - // used for looping over all values - PrimitiveType["NUM_PRIMITIVES"] = "count"; - // used to flag an unset or invalid state - PrimitiveType["PT_INVALID"] = "invalid"; - })(PrimitiveType = exports.PrimitiveType || (exports.PrimitiveType = {})); - // Defines the way a given primitive behaves on a viz - for instance, a PT_CIRCLE is treated as a point, while a PT_POLYGON would be treated as an area. - var MarkType; - (function (MarkType) { - // - MarkType["MT_POINT"] = "point"; - // - MarkType["MT_LINE"] = "line"; - // - MarkType["MT_AREA"] = "area"; - // - MarkType["MT_INVALID"] = "invalid"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - // PaneAxis is used to describe which axis of a pane is the independent axis. - var PaneAxis; - (function (PaneAxis) { - // The independent axis is inferred from other properties of the pane. - PaneAxis["AXIS_AUTO"] = "auto"; - // - PaneAxis["AXIS_X"] = "x"; - // - PaneAxis["AXIS_Y"] = "y"; - })(PaneAxis = exports.PaneAxis || (exports.PaneAxis = {})); - // - var Rounding; - (function (Rounding) { - // - Rounding["Rounding_None"] = "none"; - // - Rounding["Rounding_Small"] = "small"; - // - Rounding["Rounding_Medium"] = "medium"; - // - Rounding["Rounding_Large"] = "large"; - })(Rounding = exports.Rounding || (exports.Rounding = {})); - // - var LineEnd; - (function (LineEnd) { - // - LineEnd["LineEnd_None"] = "none"; - // - LineEnd["LineEnd_Arrow"] = "arrow"; - // - LineEnd["LineEnd_OpenArrow"] = "open-arrow"; - // - LineEnd["LineEnd_Dot"] = "dot"; - })(LineEnd = exports.LineEnd || (exports.LineEnd = {})); - // - var LineEndSize; - (function (LineEndSize) { - // - LineEndSize["LineEndSize_Smallest"] = "smallest"; - // - LineEndSize["LineEndSize_Smaller"] = "smaller"; - // - LineEndSize["LineEndSize_Small"] = "small"; - // - LineEndSize["LineEndSize_Medium"] = "medium"; - // - LineEndSize["LineEndSize_Large"] = "large"; - // - LineEndSize["LineEndSize_Larger"] = "larger"; - // - LineEndSize["LineEndSize_Largest"] = "largest"; - })(LineEndSize = exports.LineEndSize || (exports.LineEndSize = {})); - // - var BodyType; - (function (BodyType) { - // - BodyType["BodyType_None"] = "none"; - // - BodyType["BodyType_Box"] = "box"; - // - BodyType["BodyType_Edge"] = "edge"; - })(BodyType = exports.BodyType || (exports.BodyType = {})); - // - var StyleTheme; - (function (StyleTheme) { - // - StyleTheme["themeClassic"] = "classic"; - // - StyleTheme["themeModern"] = "modern"; - // - StyleTheme["themeClean"] = "clean"; - // - StyleTheme["themeSmooth"] = "smooth"; - // - StyleTheme["themeCustom"] = "custom"; - })(StyleTheme = exports.StyleTheme || (exports.StyleTheme = {})); - // - var AxisFoldState; - (function (AxisFoldState) { - // - AxisFoldState["afNone"] = "none"; - // - AxisFoldState["afFolded"] = "folded"; - // - AxisFoldState["afSynchronized"] = "synchronized"; - })(AxisFoldState = exports.AxisFoldState || (exports.AxisFoldState = {})); - // - var LinePattern; - (function (LinePattern) { - // - LinePattern["LinePatternNone"] = "none"; - // - LinePattern["LinePatternSolid"] = "solid"; - // - LinePattern["LinePatternDashed"] = "dashed"; - // - LinePattern["LinePatternDotted"] = "dotted"; - })(LinePattern = exports.LinePattern || (exports.LinePattern = {})); - // - var LineVisibility; - (function (LineVisibility) { - // - LineVisibility["LineVisibilityAuto"] = "automatic"; - // - LineVisibility["LineVisibilityOn"] = "on"; - // - LineVisibility["LineVisibilityOff"] = "off"; - })(LineVisibility = exports.LineVisibility || (exports.LineVisibility = {})); - // - var StylesLinePattern; - (function (StylesLinePattern) { - // - StylesLinePattern["StylesLinePatternSolid"] = "solid"; - // - StylesLinePattern["StylesLinePatternDashed"] = "dashed"; - // - StylesLinePattern["StylesLinePatternDotted"] = "dotted"; - })(StylesLinePattern = exports.StylesLinePattern || (exports.StylesLinePattern = {})); - // - var LineCap; - (function (LineCap) { - // - LineCap["LineCapFlat"] = "flat"; - // - LineCap["LineCapSquare"] = "square"; - // - LineCap["LineCapRound"] = "round"; - // - LineCap["LineCapTriangle"] = "triangle"; - })(LineCap = exports.LineCap || (exports.LineCap = {})); - // - var LineJoin; - (function (LineJoin) { - // - LineJoin["BevelJoin"] = "bevel"; - // - LineJoin["MiterJoin"] = "miter"; - // - LineJoin["RoundJoin"] = "round"; - })(LineJoin = exports.LineJoin || (exports.LineJoin = {})); - // - var LineAlignment; - (function (LineAlignment) { - // - LineAlignment["AlignmentCenter"] = "center"; - // - LineAlignment["AlignmentInset"] = "inset"; - })(LineAlignment = exports.LineAlignment || (exports.LineAlignment = {})); - // - var FillMode; - (function (FillMode) { - // - FillMode["FillEvenOdd"] = "even-odd"; - // - FillMode["FillWinding"] = "winding"; - })(FillMode = exports.FillMode || (exports.FillMode = {})); - // - var BorderStyle; - (function (BorderStyle) { - // none - BorderStyle["BorderStyleNone"] = "bs-none"; - // hidden - BorderStyle["BorderStyleHidden"] = "bs-hidden"; - // dotted - BorderStyle["BorderStyleDotted"] = "bs-dotted"; - // dashed - BorderStyle["BorderStyleDashed"] = "bs-dashed"; - // solid - BorderStyle["BorderStyleSolid"] = "bs-solid"; - // double - BorderStyle["BorderStyleDouble"] = "bs-double"; - // groove - BorderStyle["BorderStyleGroove"] = "bs-groove"; - // ridge - BorderStyle["BorderStyleRidge"] = "bs-ridge"; - // inset - BorderStyle["BorderStyleInset"] = "bs-inset"; - // outset - BorderStyle["BorderStyleOutset"] = "bs-outset"; - // invalid - BorderStyle["BorderStyleInvalid"] = "bs-invalid"; - })(BorderStyle = exports.BorderStyle || (exports.BorderStyle = {})); - // - var ColorPaletteType; - (function (ColorPaletteType) { - // - ColorPaletteType["ColorPaletteRegular"] = "color-palette-regular"; - // - ColorPaletteType["ColorPaletteOrderedDiverging"] = "palette-ordered-diverging"; - // - ColorPaletteType["ColorPaletteOrderedLinear"] = "palette-ordered-linear"; - })(ColorPaletteType = exports.ColorPaletteType || (exports.ColorPaletteType = {})); - // - var PaletteFlags; - (function (PaletteFlags) { - // - PaletteFlags["PaletteFlagNone"] = "palette-flag-none"; - // - PaletteFlags["PaletteFlagCustom"] = "palette-flag-custom"; - // - PaletteFlags["PaletteFlagNotQuantitative"] = "palette-flag-not-quantitative"; - // - PaletteFlags["PaletteFlagNotCategorical"] = "palette-flag-not-categorical"; - // - PaletteFlags["PaletteFlagNotReferenceBand"] = "palette-flag-not-reference-band"; - // - PaletteFlags["PaletteFlagNotBoxplot"] = "palette-flag-not-boxplot"; - // - PaletteFlags["PaletteFlagNotFilledMapLight"] = "palette-flag-not-filled-map-light"; - // - PaletteFlags["PaletteFlagNotFilledMapDark"] = "palette-flag-not-filled-map-dark"; - // - PaletteFlags["PaletteFlagLegacy"] = "palette-flag-legacy"; - })(PaletteFlags = exports.PaletteFlags || (exports.PaletteFlags = {})); - // - var DefaultPaletteType; - (function (DefaultPaletteType) { - // - DefaultPaletteType["SmallNominal"] = "palette-default-small-nominal"; - // - DefaultPaletteType["LargeNominal"] = "palette-default-large-nominal"; - // - DefaultPaletteType["Ordinal"] = "palette-default-ordinal"; - // - DefaultPaletteType["QuantitativePositive"] = "palette-default-quant-pos"; - // - DefaultPaletteType["QuantitativeNegative"] = "palette-default-quant-neg"; - // - DefaultPaletteType["QuantitativeDiverging"] = "palette-default-quant-div"; - // - DefaultPaletteType["QuantitativePositiveLight"] = "palette-default-quant-pos-light"; - // - DefaultPaletteType["QuantitativeNegativeLight"] = "palette-default-quant-neg-light"; - // - DefaultPaletteType["QuantitativeDivergingLight"] = "palette-default-quant-div-light"; - // - DefaultPaletteType["QuantitativePositiveArea"] = "palette-default-quant-pos-area"; - // - DefaultPaletteType["QuantitativeNegativeArea"] = "palette-default-quant-neg-area"; - // - DefaultPaletteType["QuantitativeDivergingArea"] = "palette-default-quant-div-area"; - })(DefaultPaletteType = exports.DefaultPaletteType || (exports.DefaultPaletteType = {})); - // - var ShowBounds; - (function (ShowBounds) { - // - ShowBounds["Both"] = "show-both"; - // - ShowBounds["Upper"] = "show-upper"; - // - ShowBounds["Lower"] = "show-lower"; - })(ShowBounds = exports.ShowBounds || (exports.ShowBounds = {})); - // Sample vs. population standard deviation - var StDevType; - (function (StDevType) { - // - StDevType["Sample"] = "stdev-sample"; - // - StDevType["Population"] = "stdev-population"; - })(StDevType = exports.StDevType || (exports.StDevType = {})); - // - var ReferenceLineFormulaGroup; - (function (ReferenceLineFormulaGroup) { - // - ReferenceLineFormulaGroup["None"] = "none"; - // - ReferenceLineFormulaGroup["Line"] = "line"; - // - ReferenceLineFormulaGroup["Band"] = "band"; - // - ReferenceLineFormulaGroup["Distribution"] = "distribution"; - // - ReferenceLineFormulaGroup["Boxplot"] = "boxplot"; - })(ReferenceLineFormulaGroup = exports.ReferenceLineFormulaGroup || (exports.ReferenceLineFormulaGroup = {})); - // - var ReferenceLineScopeType; - (function (ReferenceLineScopeType) { - // - ReferenceLineScopeType["PerCell"] = "per-cell"; - // - ReferenceLineScopeType["PerPane"] = "per-pane"; - // - ReferenceLineScopeType["PerTable"] = "per-table"; - })(ReferenceLineScopeType = exports.ReferenceLineScopeType || (exports.ReferenceLineScopeType = {})); - // how should the line be labeled - var ReferenceLineLabelType; - (function (ReferenceLineLabelType) { - // no label - ReferenceLineLabelType["None"] = "none"; - // an automatically generated label - ReferenceLineLabelType["Automatic"] = "automatic"; - // - ReferenceLineLabelType["Value"] = "value"; - // - ReferenceLineLabelType["Computation"] = "computation"; - // a user defined label - ReferenceLineLabelType["Custom"] = "custom"; - })(ReferenceLineLabelType = exports.ReferenceLineLabelType || (exports.ReferenceLineLabelType = {})); - // how should the line be computed - var ReferenceLineFormulaType; - (function (ReferenceLineFormulaType) { - // a user specified constant value - ReferenceLineFormulaType["Constant"] = "constant"; - // - ReferenceLineFormulaType["Total"] = "total"; - // total of all values at the given scope <- is this correct? looks like comment from FormulaTotal - ReferenceLineFormulaType["Sum"] = "sum"; - // minimum value in the scope - ReferenceLineFormulaType["Min"] = "min"; - // maximum value in the scope - ReferenceLineFormulaType["Max"] = "max"; - // average value in the scope - ReferenceLineFormulaType["Average"] = "average"; - // median value in the scope - ReferenceLineFormulaType["Median"] = "median"; - // the n quantiles values in the scope - ReferenceLineFormulaType["Quantiles"] = "quantiles"; - // a given percentile in the scope - ReferenceLineFormulaType["Percentile"] = "percentile"; - // mean +- standard deviation - ReferenceLineFormulaType["StandardDeviation"] = "standard-deviation"; - // a given confidence interval around the mean - ReferenceLineFormulaType["ConfidenceInterval"] = "confidence-interval"; - // - ReferenceLineFormulaType["MedianConfidenceInterval"] = "median-confidence-interval"; - })(ReferenceLineFormulaType = exports.ReferenceLineFormulaType || (exports.ReferenceLineFormulaType = {})); - // Line or confidence interval or both - var ReferenceLineConfidenceIntervalState; - (function (ReferenceLineConfidenceIntervalState) { - // display line only - ReferenceLineConfidenceIntervalState["LineOnly"] = "line-only"; - // display the line and a confidence interval - ReferenceLineConfidenceIntervalState["LineAndConfidenceInterval"] = "line-and-interval"; - // display confidence interval only - ReferenceLineConfidenceIntervalState["ConfidenceIntervalOnly"] = "interval-only"; - })(ReferenceLineConfidenceIntervalState = exports.ReferenceLineConfidenceIntervalState || (exports.ReferenceLineConfidenceIntervalState = {})); - // type of distribution. i.e. Percentage, Percentile, Quantile, and Standard Deviation - var ReferenceLineDistributionType; - (function (ReferenceLineDistributionType) { - // distribution type percentage - ReferenceLineDistributionType["Percentages"] = "percentages"; - // distribution type percentile - ReferenceLineDistributionType["Percentiles"] = "percentiles"; - // distribution type quantile - ReferenceLineDistributionType["Quantiles"] = "quantiles"; - // distribution type standard deviation - ReferenceLineDistributionType["StandardDeviation"] = "standard-deviation"; - })(ReferenceLineDistributionType = exports.ReferenceLineDistributionType || (exports.ReferenceLineDistributionType = {})); - // the kind of LOD calc to use for a given reference line - var ReferenceLineLODCalcType; - (function (ReferenceLineLODCalcType) { - // Create a formula using a FIXED-like level-of-detail calculation, to which sheet filters apply, that will go onto a specific sheet - ReferenceLineLODCalcType["MeasureFormula"] = "measure-formula"; - // Create a boolean formula that can be used as a filter - ReferenceLineLODCalcType["BooleanFilter"] = "boolean-filter"; - })(ReferenceLineLODCalcType = exports.ReferenceLineLODCalcType || (exports.ReferenceLineLODCalcType = {})); - // - var BoxplotWhiskerType; - (function (BoxplotWhiskerType) { - // - BoxplotWhiskerType["Standard"] = "standard"; - // - BoxplotWhiskerType["Minmax"] = "minmax"; - })(BoxplotWhiskerType = exports.BoxplotWhiskerType || (exports.BoxplotWhiskerType = {})); - // categories of connection types displayed by the connection UI - var ConnectionTypeCategory; - (function (ConnectionTypeCategory) { - // standard database - ConnectionTypeCategory["CTC_Database"] = "database"; - // 'More Items ...' meta item - ConnectionTypeCategory["CTC_More"] = "more"; - // Other file types - ConnectionTypeCategory["CTC_Other"] = "other"; - // invalid connection category - ConnectionTypeCategory["CTC_Invalid"] = "invalid"; - })(ConnectionTypeCategory = exports.ConnectionTypeCategory || (exports.ConnectionTypeCategory = {})); - // a logical grouping of connection types displayed by the connection UI - var ConnectionTypeGroup; - (function (ConnectionTypeGroup) { - // in a file - ConnectionTypeGroup["CTG_File"] = "file"; - // on a server - ConnectionTypeGroup["CTG_Server"] = "server"; - // on a recent server - ConnectionTypeGroup["CTG_MruServer"] = "mru-server"; - // invalid group - ConnectionTypeGroup["CTG_Invalid"] = "invalid"; - })(ConnectionTypeGroup = exports.ConnectionTypeGroup || (exports.ConnectionTypeGroup = {})); - // The type of metadata a column contains - var CubeMetadataCategory; - (function (CubeMetadataCategory) { - // cube's name - CubeMetadataCategory["CMC_Name"] = "name"; - // cube's description - CubeMetadataCategory["CMC_Description"] = "description"; - // cube's last updated timestamp - CubeMetadataCategory["CMC_LastUpdated"] = "last-updated"; - // invalid - CubeMetadataCategory["CMC_Invalid"] = "invalid"; - })(CubeMetadataCategory = exports.CubeMetadataCategory || (exports.CubeMetadataCategory = {})); - // The type of widget to display to the user when they are specifying connection info - var ConnectionWidgetType; - (function (ConnectionWidgetType) { - // show the join area - ConnectionWidgetType["CWT_JoinArea"] = "join-area"; - // show the cube selection ui - ConnectionWidgetType["CWT_CubeSelection"] = "cube-selection"; - // show the google analytics ui - ConnectionWidgetType["CWT_GoogleAnalytics"] = "google-analytics"; - // show the tableau server ui - ConnectionWidgetType["CWT_TableauServer"] = "tableau-server"; - // do not show any connection widget - ConnectionWidgetType["CWT_NoWidget"] = "no-widget"; - // invalid - ConnectionWidgetType["CWT_Invalid"] = "invalid"; - })(ConnectionWidgetType = exports.ConnectionWidgetType || (exports.ConnectionWidgetType = {})); - // The type of google analytics basic info - var GoogleBasicInfoType; - (function (GoogleBasicInfoType) { - // google analytics account - GoogleBasicInfoType["GA_Account"] = "ga-account"; - // google analytics property - GoogleBasicInfoType["GA_Property"] = "ga-property"; - // google analytics view - GoogleBasicInfoType["GA_View"] = "ga-view"; - // invalid - GoogleBasicInfoType["GA_Invalid"] = "invalid"; - })(GoogleBasicInfoType = exports.GoogleBasicInfoType || (exports.GoogleBasicInfoType = {})); - // The way in which a piece of connection information is specified - var ConnectionSpecificationType; - (function (ConnectionSpecificationType) { - // Uses a combo box - ConnectionSpecificationType["CST_ComboBox"] = "combo-box"; - // Uses a line edit - ConnectionSpecificationType["CST_LineEdit"] = "line-edit"; - // Uses a line edit with a browse button next to it - ConnectionSpecificationType["CST_LineEditBrowse"] = "line-edit-browse"; - // invalid - ConnectionSpecificationType["CST_Invalid"] = "invalid"; - })(ConnectionSpecificationType = exports.ConnectionSpecificationType || (exports.ConnectionSpecificationType = {})); - // GA Date Range - var DateRange; - (function (DateRange) { - // - DateRange["DateRangeFirst"] = "date-range-first"; - // - DateRange["DateRangeLast30Days"] = "date-range-last30"; - // - DateRange["DateRangeToday"] = "date-range-today"; - // - DateRange["DateRangeYesterday"] = "date-range-yesterday"; - // - DateRange["DateRangeLastWeek"] = "date-range-last-week"; - // - DateRange["DateRangeLastMonth"] = "date-range-last-month"; - // - DateRange["DateRangeLastYear"] = "date-range-last-year"; - // - DateRange["DateRangeThisWeekToYesterday"] = "date-range-this-week-to-yesterday"; - // - DateRange["DateRangeThisMonthToYesterday"] = "date-range-this-month-to-yesterday"; - // - DateRange["DateRangeThisYearToYesterday"] = "date-range-this-year-to-yesterday"; - // - DateRange["DateRangeLastWeekToYesterday"] = "date-range-last-week-to-yesterday"; - // - DateRange["DateRangeLastMonthToYesterday"] = "date-range-last-month-to-yesterday"; - // - DateRange["DateRangeLastYearToYesterday"] = "date-range-last-year-to-yesterday"; - // - DateRange["DateRangeFixedRange"] = "date-range-fixed-range"; - // - DateRange["DateRangeFixedStart"] = "date-range-fixed-start"; - // - DateRange["DateRangeCount"] = "date-range-count"; - })(DateRange = exports.DateRange || (exports.DateRange = {})); - // Specifies the type of widget to show in ConnectServerWidget - var ConnectServerWidgetType; - (function (ConnectServerWidgetType) { - // invalid - ConnectServerWidgetType["CSWT_Invalid"] = "invalid"; - // microsoft access - ConnectServerWidgetType["CSWT_Access"] = "access"; - // generic odbc - ConnectServerWidgetType["CSWT_ODBC"] = "odbc"; - // cubes - ConnectServerWidgetType["CSWT_Cube"] = "cube"; - // relational data sources - ConnectServerWidgetType["CSWT_Relational"] = "relational"; - })(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {})); - // - var AuthenticationEnumsMode; - (function (AuthenticationEnumsMode) { - // no authentication widget - AuthenticationEnumsMode["AuthModeNone"] = "auth-mode-none"; - // username and password - AuthenticationEnumsMode["AuthModeBasic"] = "auth-mode-basic"; - // username and password can be blank - AuthenticationEnumsMode["AuthModeBasicNoValidateFields"] = "auth-mode-basic-no-validate-fields"; - // only username - AuthenticationEnumsMode["AuthModeBasicUserNameOnly"] = "auth-mode-basic-username-only"; - // aws access key and secret ID - AuthenticationEnumsMode["AuthModeBasicAWS"] = "auth-mode-basic-aws"; - // username, password, and a list of AuthOptions with radio buttons - AuthenticationEnumsMode["AuthModeRadio"] = "auth-mode-radio"; - // Like AuthModeRadio, but enable username/password even for integrated auth - AuthenticationEnumsMode["AuthModeRadioUnindented"] = "auth-mode-radio-unindented"; - // username, password, and a list of AuthOptions with a combobox - AuthenticationEnumsMode["AuthModeComboBox"] = "auth-mode-combobox"; - // Like AuthModeCombobox, but with option not requiring username/password - AuthenticationEnumsMode["AuthModeComboBoxIntegrated"] = "auth-mode-combobox-integrated"; - // driver, authentication, username, realm, etc - AuthenticationEnumsMode["AuthModeHive"] = "auth-mode-hive"; - // none, azure marketplace account, explicit - AuthenticationEnumsMode["AuthModeOData"] = "auth-mode-odata"; - // edition, authentication, sso domain, etc - AuthenticationEnumsMode["AuthModeSharePoint"] = "auth-mode-sharepoint"; - // username, password, client, & language - AuthenticationEnumsMode["AuthModeSAPBW"] = "auth-mode-sapbw"; - // Ability to switch between two different auth modes each in their own modal dialogs (basic and oauth) - AuthenticationEnumsMode["AuthModeSwitchModal"] = "auth-mode-switch-modal"; - })(AuthenticationEnumsMode = exports.AuthenticationEnumsMode || (exports.AuthenticationEnumsMode = {})); - // - var AuthenticationEnumsReconnectMode; - (function (AuthenticationEnumsReconnectMode) { - // Auth not needed for reconnect - AuthenticationEnumsReconnectMode["ReconnectModeNone"] = "reconnect-mode-none"; - // Username and password - AuthenticationEnumsReconnectMode["ReconnectModeBasic"] = "reconnect-mode-basic"; - // Access file - AuthenticationEnumsReconnectMode["ReconnectModeAccess"] = "reconnect-mode-access"; - // Microsoft Azure Data Market (OData) - AuthenticationEnumsReconnectMode["ReconnectModeDataMarket"] = "reconnect-mode-data-market"; - // Google OAuth - AuthenticationEnumsReconnectMode["ReconnectModeGoogleOAuth"] = "reconnect-mode-google-oauth"; - // SalesforceOAuth, with the option of username/password auth - AuthenticationEnumsReconnectMode["ReconnectModeSalesforceOAuth"] = "reconnect-mode-salesforce-oauth"; - // Web data connector - AuthenticationEnumsReconnectMode["ReconnectModeWebData"] = "reconnect-mode-web-data"; - })(AuthenticationEnumsReconnectMode = exports.AuthenticationEnumsReconnectMode || (exports.AuthenticationEnumsReconnectMode = {})); - // - var AuthenticationEnumsAuthOption; - (function (AuthenticationEnumsAuthOption) { - // FIRST - AuthenticationEnumsAuthOption["AuthExplicit"] = "auth-option-explicit"; - // - AuthenticationEnumsAuthOption["AuthExplicitUnindented"] = "auth-option-explicit-unindented"; - // - AuthenticationEnumsAuthOption["AuthUseWindows"] = "auth-option-use-windows"; - // - AuthenticationEnumsAuthOption["AuthUseWindowsPreferred"] = "auth-option-windows-preferred"; - // - AuthenticationEnumsAuthOption["AuthTeradata"] = "auth-option-teradata"; - // - AuthenticationEnumsAuthOption["AuthLDAP"] = "auth-option-ldap"; - // - AuthenticationEnumsAuthOption["AuthVirtualNode"] = "auth-option-virtual-node"; - // - AuthenticationEnumsAuthOption["AuthODataAccount"] = "auth-option-odata"; - // - AuthenticationEnumsAuthOption["AuthNone"] = "auth-option-none"; - // - AuthenticationEnumsAuthOption["AuthKerberos"] = "auth-option-kerberos"; - // Introduced for Kerberos with fallback, recognizing that the db may or may not be on Windows - AuthenticationEnumsAuthOption["AuthIntegrated"] = "auth-option-integrated"; - // - AuthenticationEnumsAuthOption["AuthUsername"] = "auth-option-username"; - // - AuthenticationEnumsAuthOption["AuthUsernameAndPassword"] = "auth-option-username-and-password"; - // - AuthenticationEnumsAuthOption["AuthSSL"] = "auth-option-ssl"; - // - AuthenticationEnumsAuthOption["AuthHDIEmulator"] = "auth-hdi-emulator"; - // - AuthenticationEnumsAuthOption["AuthHDIService"] = "auth-hdi-service"; - // - AuthenticationEnumsAuthOption["AuthHTTP"] = "auth-http"; - // - AuthenticationEnumsAuthOption["AuthHTTPS"] = "auth-https"; - // - AuthenticationEnumsAuthOption["AuthAccessNoSecurity"] = "auth-option-access-no"; - // - AuthenticationEnumsAuthOption["AuthAccessYesSecurity"] = "auth-option-access-yes"; - // - AuthenticationEnumsAuthOption["AuthOAuth"] = "auth-oauth"; - // - AuthenticationEnumsAuthOption["AuthForms"] = "auth-forms"; - // - AuthenticationEnumsAuthOption["AuthThirdPartySSO"] = "auth-third-party-SSO"; - // LAST - AuthenticationEnumsAuthOption["AuthInvalid"] = "auth-option-invalid"; - })(AuthenticationEnumsAuthOption = exports.AuthenticationEnumsAuthOption || (exports.AuthenticationEnumsAuthOption = {})); - // data source validation modes - var DataSourceParserValidationMode; - (function (DataSourceParserValidationMode) { - // - DataSourceParserValidationMode["WorkbookLoadValidation"] = "workbook-load-validation"; - // - DataSourceParserValidationMode["AutoValidation"] = "auto-validation"; - // - DataSourceParserValidationMode["ForceValidation"] = "force-validation"; - // - DataSourceParserValidationMode["PreventValidation"] = "prevent-validation"; - // - DataSourceParserValidationMode["PreventValidationAndThrow"] = "prevent-validation-and-throw"; - })(DataSourceParserValidationMode = exports.DataSourceParserValidationMode || (exports.DataSourceParserValidationMode = {})); - // Enum for DataGrid/MetadataGrid fields reordering - var FieldOrderType; - (function (FieldOrderType) { - // - FieldOrderType["DATASOURCE_ORDER"] = "datasource-order"; - // - FieldOrderType["ALPHA_PER_TABLE"] = "alpha-per-table"; - // - FieldOrderType["ALPHABETICAL_ORDER"] = "alphabetical-order"; - // - FieldOrderType["CUSTOM_ORDER"] = "custom-order"; - })(FieldOrderType = exports.FieldOrderType || (exports.FieldOrderType = {})); - // - var LineInterpolationMode; - (function (LineInterpolationMode) { - // - LineInterpolationMode["LIM_Linear"] = "lim-linear"; - // - LineInterpolationMode["LIM_Step"] = "lim-step"; - // - LineInterpolationMode["LIM_Jump"] = "lim-jump"; - })(LineInterpolationMode = exports.LineInterpolationMode || (exports.LineInterpolationMode = {})); - // - var LineMarkerPosition; - (function (LineMarkerPosition) { - // - LineMarkerPosition["LMP_Left"] = "lmp-left"; - // - LineMarkerPosition["LMP_Center"] = "lmp-center"; - // - LineMarkerPosition["LMP_Right"] = "lmp-right"; - })(LineMarkerPosition = exports.LineMarkerPosition || (exports.LineMarkerPosition = {})); - // Enumeration for the type of join connecting two tables - var SQLJoinType; - (function (SQLJoinType) { - // - SQLJoinType["SQL_InnerJoin"] = "sql-inner-join"; - // - SQLJoinType["SQL_LeftJoin"] = "sql-left-join"; - // - SQLJoinType["SQL_RightJoin"] = "sql-right-join"; - // - SQLJoinType["SQL_FullJoin"] = "sql-full-join"; - // - SQLJoinType["SQL_CrossJoin"] = "sql-cross-join"; - })(SQLJoinType = exports.SQLJoinType || (exports.SQLJoinType = {})); - // - var FolderRole; - (function (FolderRole) { - // - FolderRole["FOLDER_DIMENSIONS"] = "dimensions"; - // - FolderRole["FOLDER_MEASURES"] = "measure"; - // - FolderRole["FOLDER_GROUPS"] = "groups"; - // - FolderRole["FOLDER_PARAMETERS"] = "parameters"; - })(FolderRole = exports.FolderRole || (exports.FolderRole = {})); - // - var FieldTypeIconSet; - (function (FieldTypeIconSet) { - // - FieldTypeIconSet["FT_SET_ALL"] = "all"; - // - FieldTypeIconSet["FT_SET_CUBE_MEASURES"] = "cube-measures"; - // - FieldTypeIconSet["FT_SET_CUBE_DIMENSIONS"] = "cube-dimensions"; - })(FieldTypeIconSet = exports.FieldTypeIconSet || (exports.FieldTypeIconSet = {})); - // - var FieldPivotStrategy; - (function (FieldPivotStrategy) { - // - FieldPivotStrategy["PIVOT_ON_KEY"] = "pivot-on-key"; - // - FieldPivotStrategy["PIVOT_ON_ALIAS"] = "pivot-on-alias"; - })(FieldPivotStrategy = exports.FieldPivotStrategy || (exports.FieldPivotStrategy = {})); - // - var AliasType; - (function (AliasType) { - // - AliasType["ALIAS_NOTSET"] = "alias-not-set"; - // - AliasType["ALIAS_BEGIN"] = "alias-begin"; - // - AliasType["ALIAS_KEY"] = "alias-key"; - // - AliasType["ALIAS_KEY_NAME"] = "alias-key-name"; - // - AliasType["ALIAS_KEY_MEDNAME"] = "alias-key-medname"; - // - AliasType["ALIAS_KEY_LONGNAME"] = "alias-key-longname"; - // - AliasType["ALIAS_NAME"] = "alias-name"; - // - AliasType["ALIAS_NAME_KEY"] = "alias-name-key"; - // - AliasType["ALIAS_MEDNAME"] = "alias-medname"; - // - AliasType["ALIAS_MEDNAME_KEY"] = "alias-medname-key"; - // - AliasType["ALIAS_LONGNAME"] = "alias-longname"; - // - AliasType["ALIAS_LONGNAME_KEY"] = "alias-longname-key"; - // - AliasType["ALIAS_END"] = "alias-end"; - })(AliasType = exports.AliasType || (exports.AliasType = {})); - // - var AliasTypes; - (function (AliasTypes) { - // - AliasTypes["MASK_ALIAS_KEY"] = "mask-alias-key"; - // - AliasTypes["MASK_ALIAS_NAME"] = "mask-alias-name"; - // - AliasTypes["MASK_ALIAS_MEDNAME"] = "mask-alias-medname"; - // - AliasTypes["MASK_ALIAS_LONGNAME"] = "mask-alias-longname"; - })(AliasTypes = exports.AliasTypes || (exports.AliasTypes = {})); - // - var FieldRole; - (function (FieldRole) { - // - FieldRole["ROLE_DIMENSION"] = "dimension"; - // - FieldRole["ROLE_MEASURE"] = "measure"; - // - FieldRole["ROLE_UNKNOWN"] = "unknown"; - })(FieldRole = exports.FieldRole || (exports.FieldRole = {})); - // - var FieldType; - (function (FieldType) { - // - FieldType["TYPE_QUANTITATIVE"] = "quantitative"; - // - FieldType["TYPE_ORDINAL"] = "ordinal"; - // - FieldType["TYPE_NOMINAL"] = "nominal"; - // - FieldType["TYPE_UNKNOWN"] = "unknown"; - })(FieldType = exports.FieldType || (exports.FieldType = {})); - // - var DataSourceOrder; - (function (DataSourceOrder) { - // - DataSourceOrder["DSO_ALPHABETIC"] = "dso-alphabetic"; - // - DataSourceOrder["DSO_ORDINAL"] = "dso-ordinal"; - })(DataSourceOrder = exports.DataSourceOrder || (exports.DataSourceOrder = {})); - // Where the column comes from - var ColumnClass; - (function (ColumnClass) { - // A metadata column (O or Q Measures) - ColumnClass["COL_METADATA"] = "col-metadata"; - // A physical column on the database - ColumnClass["COL_DATABASE"] = "col-database"; - // A numberic bin (a special kind of calculated column) - ColumnClass["COL_NUMERICBIN"] = "col-numericbin"; - // A Categorical bin (group) - ColumnClass["COL_CATEGORICALBIN"] = "col-categoricalbin"; - // A column instance - ColumnClass["COL_INSTANCE"] = "col-instance"; - // A (raw) mdx calculated column - ColumnClass["COL_MDXCALC"] = "col-mdxcalc"; - // A user-defined calculated column, Tableau expression syntax - ColumnClass["COL_USERCALC"] = "col-usercalc"; - // A column that would have been COL_DATABASE, but the underlying database column does not exist - ColumnClass["COL_DANGLING"] = "col-dangling"; - // A column that contains local supplied data (e.g. Latitude) - ColumnClass["COL_LOCALDATA"] = "col-localdata"; - // A column that contains a visual model attribute (e.g. PaneIndex, Color, ...) - ColumnClass["COL_VISUALDATA"] = "col-visualdata"; - // A column that's a Group (a " Set " in UI terminology) - ColumnClass["COL_GROUP"] = "col-group"; - })(ColumnClass = exports.ColumnClass || (exports.ColumnClass = {})); - // - var VTAggType; - (function (VTAggType) { - // - VTAggType["VTAGG_SUM"] = "sum"; - // - VTAggType["VTAGG_AVG"] = "avg"; - // - VTAggType["VTAGG_MIN"] = "min"; - // - VTAggType["VTAGG_MAX"] = "max"; - // - VTAggType["VTAGG_SERVER"] = "server"; - // - VTAggType["VTAGG_NONE"] = "none"; - // - VTAggType["VTAGG_DEFAULT"] = "default"; - })(VTAggType = exports.VTAggType || (exports.VTAggType = {})); - // - var EntityType; - (function (EntityType) { - // - EntityType["NoEnumerationEntity"] = "no-enumeration-entity"; - // - EntityType["DatabaseEntity"] = "database-entity"; - // - EntityType["SchemaEntity"] = "schema-entity"; - // - EntityType["TableEntity"] = "table-entity"; - })(EntityType = exports.EntityType || (exports.EntityType = {})); - // - var PickEntitySearchType; - (function (PickEntitySearchType) { - // - PickEntitySearchType["PickEntitySearchType_StartsWith"] = "starts-with"; - // - PickEntitySearchType["PickEntitySearchType_Contains"] = "contains"; - // - PickEntitySearchType["PickEntitySearchType_ExactMatch"] = "exact-match"; - // - PickEntitySearchType["PickEntitySearchType_DEFAULT"] = "default"; - })(PickEntitySearchType = exports.PickEntitySearchType || (exports.PickEntitySearchType = {})); - // Parsing methods and structures. - var ExpressionOp; - (function (ExpressionOp) { - // - ExpressionOp["LogicalOr"] = "op-logical-or"; - // - ExpressionOp["LogicalAnd"] = "op-logical-and"; - // - ExpressionOp["LogicalNot"] = "op-logical-not"; - // - ExpressionOp["BitwiseXOr"] = "op-bitwise-xor"; - // - ExpressionOp["BitwiseOr"] = "op-bitwise-or"; - // - ExpressionOp["Equals"] = "op-equals"; - // - ExpressionOp["Greater"] = "op-greater"; - // - ExpressionOp["Less"] = "op-less"; - // - ExpressionOp["GEqual"] = "op-gequal"; - // - ExpressionOp["LEqual"] = "op-lequal"; - // - ExpressionOp["NEqual"] = "op-nequal"; - // - ExpressionOp["Plus"] = "op-plus"; - // - ExpressionOp["Minus"] = "op-minus"; - // - ExpressionOp["BitwiseAnd"] = "op-bitwise-and"; - // - ExpressionOp["Multiply"] = "op-multiply"; - // - ExpressionOp["Divide"] = "op-divide"; - // - ExpressionOp["Modulo"] = "op-modulo"; - // - ExpressionOp["Power"] = "op-power"; - // - ExpressionOp["Positive"] = "op-positive"; - // - ExpressionOp["Negative"] = "op-negative"; - // - ExpressionOp["BitwiseNot"] = "op-bitwise-not"; - // - ExpressionOp["Column"] = "op-column"; - // - ExpressionOp["String"] = "op-string"; - // - ExpressionOp["Number"] = "op-number"; - // - ExpressionOp["Date"] = "op-date"; - // - ExpressionOp["Boolean"] = "op-boolean"; - // - ExpressionOp["Funcall"] = "op-funcall"; - // - ExpressionOp["LParen"] = "op-lparen"; - // - ExpressionOp["RParen"] = "op-rparen"; - // - ExpressionOp["Comma"] = "op-comma"; - // - ExpressionOp["Ident"] = "op-ident"; - // - ExpressionOp["Null"] = "op-null"; - // - ExpressionOp["If"] = "op-if"; - // - ExpressionOp["Elseif"] = "op-elseif"; - // - ExpressionOp["Case"] = "op-case"; - // - ExpressionOp["When"] = "op-when"; - // - ExpressionOp["Then"] = "op-then"; - // - ExpressionOp["Else"] = "op-else"; - // - ExpressionOp["EndExpr"] = "op-endexpr"; - // - ExpressionOp["Whitespace"] = "op-whitespace"; - // - ExpressionOp["Comment"] = "op-comment"; - // - ExpressionOp["LBrace"] = "op-lbrace"; - // - ExpressionOp["RBrace"] = "op-rbrace"; - // - ExpressionOp["Colon"] = "op-colon"; - // - ExpressionOp["Bar"] = "op-bar"; - // - ExpressionOp["Txtype"] = "op-txtype"; - // - ExpressionOp["End"] = "op-end"; - // - ExpressionOp["RBrackets"] = "op-rbrackets"; - // used to represent invalid tokens - ExpressionOp["Invalid"] = "op-invalid"; - })(ExpressionOp = exports.ExpressionOp || (exports.ExpressionOp = {})); - // tri-state bool - var TriBool; - (function (TriBool) { - // - TriBool["TB_Invalid"] = "tribool-invalid"; - // - TriBool["TB_False"] = "tribool-false"; - // - TriBool["TB_True"] = "tribool-true"; - })(TriBool = exports.TriBool || (exports.TriBool = {})); - // table calc reference options set - var ReferenceOptionsSet; - (function (ReferenceOptionsSet) { - // - ReferenceOptionsSet["ROS_Relative"] = "reference-options-set-relative"; - // - ReferenceOptionsSet["ROS_Fixed"] = "reference-options-set-fixed"; - // - ReferenceOptionsSet["ROS_Parameter"] = "reference-options-set-parameter"; - // - ReferenceOptionsSet["ROS_None"] = "reference-options-set-none"; - })(ReferenceOptionsSet = exports.ReferenceOptionsSet || (exports.ReferenceOptionsSet = {})); - // widget state - var WidgetState; - (function (WidgetState) { - // - WidgetState["Hidden"] = "widget-state-hidden"; - // - WidgetState["Disabled"] = "widget-state-disabled"; - // - WidgetState["Enabled"] = "widget-state-enabled"; - })(WidgetState = exports.WidgetState || (exports.WidgetState = {})); - // rank type - var RankType; - (function (RankType) { - // - RankType["Competition"] = "rank-type-competition"; - // - RankType["ModifiedCompetition"] = "rank-type-modified-competition"; - // - RankType["Dense"] = "rank-type-dense"; - // - RankType["Unique"] = "rank-type-unique"; - })(RankType = exports.RankType || (exports.RankType = {})); - // - var TableCalcCommandType; - (function (TableCalcCommandType) { - // - TableCalcCommandType["TableCalcCommandClear"] = "clear"; - })(TableCalcCommandType = exports.TableCalcCommandType || (exports.TableCalcCommandType = {})); - // - var CalcNestingLevel; - (function (CalcNestingLevel) { - // - CalcNestingLevel["Primary"] = "primary"; - // used only for type != TC_CUSTOM - CalcNestingLevel["Secondary"] = "secondary"; - // used only for type == TC_CUSTOM - CalcNestingLevel["Nested"] = "nested"; - })(CalcNestingLevel = exports.CalcNestingLevel || (exports.CalcNestingLevel = {})); - // - var DecimalMode; - (function (DecimalMode) { - // - DecimalMode["DecimalModeAutomatic"] = "automatic"; - // - DecimalMode["DecimalModeManual"] = "manual"; - })(DecimalMode = exports.DecimalMode || (exports.DecimalMode = {})); - // - var TableCalcOrderingType; - (function (TableCalcOrderingType) { - // Advanced... - TableCalcOrderingType["OTField"] = "field"; - // Table (Across) - TableCalcOrderingType["OTRows"] = "rows"; - // Table (Down) - TableCalcOrderingType["OTColumns"] = "columns"; - // Table (Across then Down) - TableCalcOrderingType["OTTable"] = "table"; - // Table (Down then Across) - TableCalcOrderingType["OTTableColumnPrecedence"] = "table-column-precedence"; - // Pane Across - TableCalcOrderingType["OTRowInPane"] = "row-in-pane"; - // Pane (Down) - TableCalcOrderingType["OTColumnInPane"] = "column-in-pane"; - // Pane (Across then Down) - TableCalcOrderingType["OTPane"] = "pane"; - // Pane (Down then Across) - TableCalcOrderingType["OTPaneColumnPrecedence"] = "pane-column-precedence"; - // Cell - TableCalcOrderingType["OTCellInPane"] = "cell-in-pane"; - })(TableCalcOrderingType = exports.TableCalcOrderingType || (exports.TableCalcOrderingType = {})); - // - var TableCalcSortMode; - (function (TableCalcSortMode) { - // - TableCalcSortMode["SM_Automatic"] = "sort-mode-automatic"; - // - TableCalcSortMode["SM_Custom"] = "sort-mode-custom"; - })(TableCalcSortMode = exports.TableCalcSortMode || (exports.TableCalcSortMode = {})); - // - var TableCalcTableCalcType; - (function (TableCalcTableCalcType) { - // none (used to initialize variables) - TableCalcTableCalcType["TC_NONE"] = "none"; - // Running Total - TableCalcTableCalcType["TC_CUMULATIVE"] = "cumulative"; - // Moving Calculation - TableCalcTableCalcType["TC_WINDOW"] = "window"; - // Difference From - TableCalcTableCalcType["TC_DIFF"] = "diff"; - // Percent Difference From - TableCalcTableCalcType["TC_PCTDIFF"] = "pct-diff"; - // Percent From - TableCalcTableCalcType["TC_PCTVALUE"] = "pct-value"; - // Percent Of Total - TableCalcTableCalcType["TC_PCTTOTAL"] = "pct-total"; - // Rank - TableCalcTableCalcType["TC_RANK"] = "rank"; - // Percentile - TableCalcTableCalcType["TC_PCTRANK"] = "pct-rank"; - // Custom - TableCalcTableCalcType["TC_CUSTOM"] = "custom"; - })(TableCalcTableCalcType = exports.TableCalcTableCalcType || (exports.TableCalcTableCalcType = {})); - // - var QuickTableCalcCommandType; - (function (QuickTableCalcCommandType) { - // - QuickTableCalcCommandType["QuickTableCalcCommandRunTotal"] = "run-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandDifference"] = "difference"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctDiff"] = "pct-diff"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctTotal"] = "pct-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandRank"] = "rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctRank"] = "pct-rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandMovingAvg"] = "moving-avg"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtd"] = "ytd"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCgr"] = "cgr"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYOverY"] = "y-over-y"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtdGrowth"] = "ytd-growth"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCustom"] = "custom"; - })(QuickTableCalcCommandType = exports.QuickTableCalcCommandType || (exports.QuickTableCalcCommandType = {})); - // - var TableCalcAddressCommandType; - (function (TableCalcAddressCommandType) { - // - TableCalcAddressCommandType["TableCalcAddressCommandRel"] = "rel"; - // - TableCalcAddressCommandType["TableCalcAddressCommandAbs"] = "abs"; - // - TableCalcAddressCommandType["TableCalcAddressCommandParam"] = "param"; - // - TableCalcAddressCommandType["TableCalcAddressCommandMore"] = "more"; - })(TableCalcAddressCommandType = exports.TableCalcAddressCommandType || (exports.TableCalcAddressCommandType = {})); - // relative addressing - var TableCalcRelativeAddress; - (function (TableCalcRelativeAddress) { - // - TableCalcRelativeAddress["RelAddrFirst"] = "relative-address-first"; - // - TableCalcRelativeAddress["RelAddrPrevious"] = "relative-address-previous"; - // - TableCalcRelativeAddress["RelAddrNext"] = "relative-address-next"; - // - TableCalcRelativeAddress["RelAddrLast"] = "relative-address-last"; - })(TableCalcRelativeAddress = exports.TableCalcRelativeAddress || (exports.TableCalcRelativeAddress = {})); - // - var CategoricalBinItemType; - (function (CategoricalBinItemType) { - // - CategoricalBinItemType["Unbinned"] = "unbinned"; - // - CategoricalBinItemType["BinMember"] = "categorical-bin-member"; - // - CategoricalBinItemType["Bin"] = "categorical-bin"; - })(CategoricalBinItemType = exports.CategoricalBinItemType || (exports.CategoricalBinItemType = {})); - // The class properties - var CredentialTypePropertiesFlag; - (function (CredentialTypePropertiesFlag) { - // - CredentialTypePropertiesFlag["None"] = "none"; - // - CredentialTypePropertiesFlag["GenericAuthClass"] = "generic-auth-class"; - // - CredentialTypePropertiesFlag["ProviderClass"] = "provider-class"; - // - CredentialTypePropertiesFlag["DataConnectionClass"] = "data-connection-class"; - })(CredentialTypePropertiesFlag = exports.CredentialTypePropertiesFlag || (exports.CredentialTypePropertiesFlag = {})); - // The connector type - var ConnectorType; - (function (ConnectorType) { - // - ConnectorType["Invalid"] = "invalid"; - // - ConnectorType["WebDataConnector"] = "web-data-connector"; - // - ConnectorType["CloudFileConnector"] = "cloud-file-connector"; - // - ConnectorType["LegacyConnector"] = "legacy-connector"; - })(ConnectorType = exports.ConnectorType || (exports.ConnectorType = {})); - // - var TablePillIcon; - (function (TablePillIcon) { - // - TablePillIcon["ListItem"] = "list-item"; - // - TablePillIcon["Sheet"] = "sheet"; - // - TablePillIcon["FoundTable"] = "found-table"; - // - TablePillIcon["NamedRange"] = "named-range"; - // - TablePillIcon["StoredProcedure"] = "stored-procedure"; - })(TablePillIcon = exports.TablePillIcon || (exports.TablePillIcon = {})); - // - var JoinValidationError; - (function (JoinValidationError) { - // - JoinValidationError["JVE_NoError"] = "no-error"; - // - JoinValidationError["JVE_EmptyClause"] = "empty-clause"; - // - JoinValidationError["JVE_TypeMismatch"] = "type-mismatch"; - // - JoinValidationError["JVE_InvalidField"] = "invalid-field"; - // - JoinValidationError["JVE_BadClause"] = "bad-clause"; - // - JoinValidationError["JVE_BadInputRelation"] = "bad-input-relation"; - // - JoinValidationError["JVE_RepeatedFieldReferences"] = "repeated-field-references"; - // - JoinValidationError["JVE_UnsupportedJoinType"] = "unsupported-join-type"; - // - JoinValidationError["JVE_InvalidCalculation"] = "invalid-calculation"; - // - JoinValidationError["JVE_Unknown"] = "unknown"; - })(JoinValidationError = exports.JoinValidationError || (exports.JoinValidationError = {})); - // - var ConnectionTypeEnum; - (function (ConnectionTypeEnum) { - // -d-s is used to force the enum generator to generate DS with capital letters in .cs just like the .cpp - ConnectionTypeEnum["InvalidDS"] = "invalid-d-s"; - // - ConnectionTypeEnum["FileDS"] = "file-d-s"; - // - ConnectionTypeEnum["ServerDS"] = "server-d-s"; - // - ConnectionTypeEnum["InternetDS"] = "internet-d-s"; - // - ConnectionTypeEnum["TableauServerDS"] = "tableau-server-d-s"; - })(ConnectionTypeEnum = exports.ConnectionTypeEnum || (exports.ConnectionTypeEnum = {})); - // - var ConnectionErrorStage; - (function (ConnectionErrorStage) { - // - ConnectionErrorStage["Unknown"] = "unknown"; - // - ConnectionErrorStage["CreateProtocolFailed"] = "create-protocol-failed"; - // - ConnectionErrorStage["LoadMetadataFailed"] = "load-metadata-failed"; - })(ConnectionErrorStage = exports.ConnectionErrorStage || (exports.ConnectionErrorStage = {})); - // The result of setting one end of an axis range - var SetAxisRangeResult; - (function (SetAxisRangeResult) { - // - SetAxisRangeResult["Success"] = "set-axis-range-success-result"; - // - SetAxisRangeResult["Failure"] = "set-axis-range-failure-result"; - })(SetAxisRangeResult = exports.SetAxisRangeResult || (exports.SetAxisRangeResult = {})); - // Enumeration of units tick spacing can take - var TickSpacingUnits; - (function (TickSpacingUnits) { - // - TickSpacingUnits["TickSpacingUnits__NoUnits"] = "no-units"; - // - TickSpacingUnits["TickSpacingUnits__Years"] = "years"; - // - TickSpacingUnits["TickSpacingUnits__Quarters"] = "quarters"; - // - TickSpacingUnits["TickSpacingUnits__Months"] = "months"; - // - TickSpacingUnits["TickSpacingUnits__Weeks"] = "weeks"; - // - TickSpacingUnits["TickSpacingUnits__Days"] = "days"; - // - TickSpacingUnits["TickSpacingUnits__Hours"] = "hours"; - // - TickSpacingUnits["TickSpacingUnits__Minutes"] = "minutes"; - // - TickSpacingUnits["TickSpacingUnits__Seconds"] = "seconds"; - })(TickSpacingUnits = exports.TickSpacingUnits || (exports.TickSpacingUnits = {})); - // Enumeration of whether totals are included in or excluded from the color encoding - var TotalsInclusion; - (function (TotalsInclusion) { - // Totals included in color encoding - TotalsInclusion["IncludeTotals"] = "include-totals"; - // Totals excluded from color encoding - TotalsInclusion["ExcludeTotals"] = "exclude-totals"; - })(TotalsInclusion = exports.TotalsInclusion || (exports.TotalsInclusion = {})); - // How tick marks are being calculated - var AxisOptionsTickMarkState; - (function (AxisOptionsTickMarkState) { - // - AxisOptionsTickMarkState["TicksNone"] = "ticks-None"; - // - AxisOptionsTickMarkState["TicksAutomatic"] = "ticks-automatic"; - // - AxisOptionsTickMarkState["TicksManual"] = "ticks-manual"; - })(AxisOptionsTickMarkState = exports.AxisOptionsTickMarkState || (exports.AxisOptionsTickMarkState = {})); - // Setting for type of axis range - var AxisRangeType; - (function (AxisRangeType) { - // - AxisRangeType["AxisRangeType__AutomaticRange"] = "automatic-range"; - // - AxisRangeType["AxisRangeType__UniformRange"] = "uniform-range"; - // - AxisRangeType["AxisRangeType__IndependentRange"] = "independent-range"; - // - AxisRangeType["AxisRangeType__FixedRange"] = "fixed-range"; - // - AxisRangeType["AxisRangeType__FixedMin"] = "fixed-min"; - // - AxisRangeType["AxisRangeType__FixedMax"] = "fixed-max"; - // - AxisRangeType["AxisRangeType__FixedMinIndependentMax"] = "fixed-min-independent-max"; - // - AxisRangeType["AxisRangeType__FixedMaxIndependentMin"] = "fixed-max-independent-min"; - // - AxisRangeType["AxisRangeType__FixedMinUniformMax"] = "fixed-min-uniform-max"; - // - AxisRangeType["AxisRangeType__FixedMaxUniformMin"] = "fixed-max-uniform-min"; - })(AxisRangeType = exports.AxisRangeType || (exports.AxisRangeType = {})); - // represents type of widget on the toolbar of rich text editor - var RichTextEditorWidgetKey; - (function (RichTextEditorWidgetKey) { - // - RichTextEditorWidgetKey["None"] = "none"; - // - RichTextEditorWidgetKey["FontSize"] = "fontsize"; - // - RichTextEditorWidgetKey["FontName"] = "fontname"; - // - RichTextEditorWidgetKey["FontColor"] = "color"; - // - RichTextEditorWidgetKey["Bold"] = "bold"; - // - RichTextEditorWidgetKey["Italic"] = "italic"; - // - RichTextEditorWidgetKey["Underline"] = "underline"; - // - RichTextEditorWidgetKey["AlignLeft"] = "justifyleft"; - // - RichTextEditorWidgetKey["AlignCenter"] = "justifycenter"; - // - RichTextEditorWidgetKey["AlignRight"] = "justifyright"; - // - RichTextEditorWidgetKey["ClearFormatting"] = "clearformatting"; - // - RichTextEditorWidgetKey["TableauKeywords"] = "tableaukeywords"; - })(RichTextEditorWidgetKey = exports.RichTextEditorWidgetKey || (exports.RichTextEditorWidgetKey = {})); - // - var CellSizeChange; - (function (CellSizeChange) { - // - CellSizeChange["CSC_Taller"] = "taller"; - // - CellSizeChange["CSC_Shorter"] = "shorter"; - // - CellSizeChange["CSC_Wider"] = "wider"; - // - CellSizeChange["CSC_Narrower"] = "narrower"; - // - CellSizeChange["CSC_Bigger"] = "bigger"; - // - CellSizeChange["CSC_Smaller"] = "smaller"; - })(CellSizeChange = exports.CellSizeChange || (exports.CellSizeChange = {})); - // - var CellTypeEnum; - (function (CellTypeEnum) { - // - CellTypeEnum["CLT_Square"] = "square"; - // - CellTypeEnum["CLT_Text"] = "text"; - })(CellTypeEnum = exports.CellTypeEnum || (exports.CellTypeEnum = {})); - // represents type of formatting pres model - var TypeOfFormatItem; - (function (TypeOfFormatItem) { - // - TypeOfFormatItem["FT_FormatItem"] = "formatItem"; - // - TypeOfFormatItem["FT_FormatContainer"] = "formatContainer"; - // - TypeOfFormatItem["FT_FormatControl"] = "formatControl"; - })(TypeOfFormatItem = exports.TypeOfFormatItem || (exports.TypeOfFormatItem = {})); - // represents type of formatting container - var TypeOfFormatContainer; - (function (TypeOfFormatContainer) { - // - TypeOfFormatContainer["FT_FormatPane"] = "formatPane"; - // - TypeOfFormatContainer["FT_FormatSection"] = "formatSection"; - // - TypeOfFormatContainer["FT_CollapsibleSection"] = "collapsibleSection"; - // - TypeOfFormatContainer["FT_CompositeContainer"] = "compositeContainer"; - // - TypeOfFormatContainer["FT_UnitContainer"] = "unitContainer"; - // - TypeOfFormatContainer["FT_Tab"] = "tab"; - // - TypeOfFormatContainer["FT_TabGroup"] = "tabGroup"; - })(TypeOfFormatContainer = exports.TypeOfFormatContainer || (exports.TypeOfFormatContainer = {})); - // represents type of formatting control - var TypeOfFormatControl; - (function (TypeOfFormatControl) { - // - TypeOfFormatControl["FT_None"] = "none"; - // - TypeOfFormatControl["FT_NumericControl"] = "numeric-control"; - // - TypeOfFormatControl["FT_TextControl"] = "text-control"; - // - TypeOfFormatControl["FT_ColorControl"] = "color-control"; - // - TypeOfFormatControl["FT_SelectorControl"] = "selector-control"; - // - TypeOfFormatControl["FT_ToggleControl"] = "toggle-control"; - })(TypeOfFormatControl = exports.TypeOfFormatControl || (exports.TypeOfFormatControl = {})); - // represents type of formatting widget - var FormatWidgetKey; - (function (FormatWidgetKey) { - // - FormatWidgetKey["FWK_None"] = "none"; - // - FormatWidgetKey["FWK_FontFamily"] = "fontFamily"; - // - FormatWidgetKey["FWK_FontSize"] = "fontSize"; - // - FormatWidgetKey["FWK_ColorSwatch"] = "colorSwatch"; - // - FormatWidgetKey["FWK_Bold"] = "bold"; - // - FormatWidgetKey["FWK_Italics"] = "italics"; - // - FormatWidgetKey["FWK_Underline"] = "underline"; - // - FormatWidgetKey["FWK_LineVisibility"] = "lineVisibility"; - // - FormatWidgetKey["FWK_LinePattern"] = "linePattern"; - // - FormatWidgetKey["FWK_LineSize"] = "lineSize"; - // - FormatWidgetKey["FWK_NumberType"] = "numericType"; - // - FormatWidgetKey["FWK_DecimalPlaces"] = "decimalPlaces"; - // - FormatWidgetKey["FWK_ThousandsSeparator"] = "thousandsSeparator"; - // - FormatWidgetKey["FWK_NumericUnits"] = "numericUnits"; - })(FormatWidgetKey = exports.FormatWidgetKey || (exports.FormatWidgetKey = {})); - // represents identifier for each node in format pane - var FormatNodeIdentifier; - (function (FormatNodeIdentifier) { - // - FormatNodeIdentifier["Format_None_Key"] = "none"; - // - FormatNodeIdentifier["Format_Workbook_Key"] = "workbook"; - // - FormatNodeIdentifier["Format_Font_Key"] = "font"; - // - FormatNodeIdentifier["Format_Color_Key"] = "color"; - // - FormatNodeIdentifier["Format_Lines_Key"] = "lines"; - // - FormatNodeIdentifier["Format_FontAll_Key"] = "font-all"; - // - FormatNodeIdentifier["Format_FontAllControls_Key"] = "font-all-controls"; - // - FormatNodeIdentifier["Format_FontMore_Key"] = "font-more"; - // - FormatNodeIdentifier["Format_FontWorksheetTitles_Key"] = "worksheet-titles"; - // - FormatNodeIdentifier["Format_FontToolTip_Key"] = "font-tooltip"; - // - FormatNodeIdentifier["Format_FontWorksheet_Key"] = "font-worksheet"; - // - FormatNodeIdentifier["Format_FontDashTitles_Key"] = "dash-titles"; - // - FormatNodeIdentifier["Format_FontStoryTitles_Key"] = "story-titles"; - // - FormatNodeIdentifier["Format_FontTitlesControls_Key"] = "titles-controls"; - // - FormatNodeIdentifier["Format_FontTooltipControls_Key"] = "tooltip-controls"; - // - FormatNodeIdentifier["Format_FontWorksheetControls_Key"] = "worksheet-controls"; - // - FormatNodeIdentifier["Format_LineMore_Key"] = "line-more"; - // - FormatNodeIdentifier["Format_LineGrid_Key"] = "line-grid"; - // - FormatNodeIdentifier["Format_LineGridTabs_Key"] = "line-grid-tabs"; - // - FormatNodeIdentifier["Format_LineZero_Key"] = "line-zero"; - // - FormatNodeIdentifier["Format_LineZeroTabs_Key"] = "line-zero-tabs"; - // - FormatNodeIdentifier["Format_LineAxisTick_Key"] = "line-axis-tick"; - // - FormatNodeIdentifier["Format_LineAxisTickTabs_Key"] = "line-axis-tick-tabs"; - // - FormatNodeIdentifier["Format_LineAxisRuler_Key"] = "line-axis-ruler"; - // - FormatNodeIdentifier["Format_LineAxisRulerTabs_Key"] = "line-axis-ruler-tabs"; - // - FormatNodeIdentifier["Format_LineHeaderDivider_Key"] = "line-header-divider"; - // - FormatNodeIdentifier["Format_LineHeaderDividerTabs_Key"] = "line-header-divider-tabs"; - // - FormatNodeIdentifier["Format_LinePaneDivider_Key"] = "line-paneDivider"; - // - FormatNodeIdentifier["Format_LinePaneDividerTabs_Key"] = "line-paneDivider-tabs"; - // - FormatNodeIdentifier["Format_LineGridAll_Key"] = "line-grid-all"; - // - FormatNodeIdentifier["Format_LineGridRow_Key"] = "line-grid-row"; - // - FormatNodeIdentifier["Format_LineGridColumn_Key"] = "line-grid-column"; - // - FormatNodeIdentifier["Format_LineZeroAll_Key"] = "line-zero-all"; - // - FormatNodeIdentifier["Format_LineZeroRow_Key"] = "line-zero-row"; - // - FormatNodeIdentifier["Format_LineZeroColumn_Key"] = "line-zero-column"; - // - FormatNodeIdentifier["Format_LineAxisTickAll_Key"] = "line-axis-tick-all"; - // - FormatNodeIdentifier["Format_LineAxisTickRow_Key"] = "line-axis-tick-row"; - // - FormatNodeIdentifier["Format_LineAxisTickColumn_Key"] = "line-axis-tick-column"; - // - FormatNodeIdentifier["Format_LineAxisRulerAll_Key"] = "line-axis-ruler-all"; - // - FormatNodeIdentifier["Format_LineAxisRulerRow_Key"] = "line-axis-ruler-row"; - // - FormatNodeIdentifier["Format_LineAxisRulerColumn_Key"] = "line-axis-ruler-column"; - // - FormatNodeIdentifier["Format_LineReference_Key"] = "line-reference"; - // - FormatNodeIdentifier["Format_LineDrop_Key"] = "line-drop"; - // - FormatNodeIdentifier["Format_LineTrend_Key"] = "line-trend"; - // - FormatNodeIdentifier["Format_LineVisibility_Key"] = "line-visibility"; - // - FormatNodeIdentifier["Format_LinePattern_Key"] = "line-pattern"; - // - FormatNodeIdentifier["Format_LineWidth_Key"] = "line-width"; - // - FormatNodeIdentifier["Format_LineColor_Key"] = "line-color"; - // - FormatNodeIdentifier["Format_TickColor_Key"] = "tick-color"; - // - FormatNodeIdentifier["Format_BorderPattern_Key"] = "border-pattern"; - // - FormatNodeIdentifier["Format_BorderColor_Key"] = "border-color"; - // - FormatNodeIdentifier["Format_DividerColor_Key"] = "divider-color"; - // - FormatNodeIdentifier["Format_FontFamily_Key"] = "font-family-key"; - // - FormatNodeIdentifier["Format_FontSize_Key"] = "font-size-key"; - // - FormatNodeIdentifier["Format_Bold_Key"] = "bold-key"; - // - FormatNodeIdentifier["Format_Italics_Key"] = "italics-key"; - // - FormatNodeIdentifier["Format_Underline_Key"] = "underline-key"; - // - FormatNodeIdentifier["Format_FontColor_Key"] = "font-color-key"; - // - FormatNodeIdentifier["Format_Number_Container_Key"] = "number-container"; - // - FormatNodeIdentifier["Format_Number_Type_Key"] = "number-container-type"; - // - FormatNodeIdentifier["Format_Number_Units_Key"] = "number-container-units"; - // - FormatNodeIdentifier["Format_Number_Decimal_Key"] = "number-container-decimal"; - // - FormatNodeIdentifier["Format_Number_Thousands_Separator_Key"] = "number-container-thousands-separator"; - // - FormatNodeIdentifier["Format_FontPickerMinimal_Key"] = "font-picker-minimal"; - // - FormatNodeIdentifier["Format_FontPickerDefault_Key"] = "font-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerDefault_Key"] = "line-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerNoVis_Key"] = "line-picker-no-visibility"; - // - FormatNodeIdentifier["Format_LineAxisTickPicker_Key"] = "line-axis-tick-picker"; - })(FormatNodeIdentifier = exports.FormatNodeIdentifier || (exports.FormatNodeIdentifier = {})); - // Format prepended to format strings to specify type - var FormatCode; - (function (FormatCode) { - // - FormatCode["AutoFormat"] = "auto-format"; - // - FormatCode["SystemLongDate"] = "system-long-date"; - // - FormatCode["SystemShortDate"] = "system-short-date"; - // - FormatCode["SystemNumber"] = "system-number"; - // - FormatCode["SystemCurrency"] = "system-currency"; - // - FormatCode["SystemTime"] = "system-time"; - // - FormatCode["Custom"] = "custom"; - // - FormatCode["CustomICU"] = "custom-icu"; - // - FormatCode["CustomNumber"] = "custom-number"; - // - FormatCode["CustomCurrency"] = "custom-currency"; - // - FormatCode["CustomScientific"] = "custom-scientific"; - // - FormatCode["CustomPercentage"] = "custom-percentage"; - })(FormatCode = exports.FormatCode || (exports.FormatCode = {})); - // Units specified in a format string - var UnitsFormatEnum; - (function (UnitsFormatEnum) { - // - UnitsFormatEnum["UnitsFmtNone"] = "units-none"; - // - UnitsFormatEnum["UnitsFmtThousands"] = "units-thousands"; - // - UnitsFormatEnum["UnitsFmtMillions"] = "units-millions"; - // - UnitsFormatEnum["UnitsFmtBillionsEnglish"] = "units-billions-english"; - // - UnitsFormatEnum["UnitsFmtBillionsStandard"] = "units-billions-standard"; - })(UnitsFormatEnum = exports.UnitsFormatEnum || (exports.UnitsFormatEnum = {})); - // represents the color swatch that will be used in the ColorControlPresModel - var ColorSwatchType; - (function (ColorSwatchType) { - // - ColorSwatchType["CST_Dark"] = "dark-swatch"; - // - ColorSwatchType["CST_Light"] = "light-swatch"; - })(ColorSwatchType = exports.ColorSwatchType || (exports.ColorSwatchType = {})); - // represents the type of a style picker, affecting the preview rendering and, possibly, the layout - var PickerType; - (function (PickerType) { - // - PickerType["PT_None"] = "none"; - // - PickerType["PT_Font"] = "font"; - // - PickerType["PT_Line"] = "line"; - // - PickerType["PT_Number"] = "number"; - })(PickerType = exports.PickerType || (exports.PickerType = {})); - // - var UpdateScope; - (function (UpdateScope) { - // - UpdateScope["US_Worksheet"] = "worksheet"; - // - UpdateScope["US_Dashboard"] = "dashboard"; - // - UpdateScope["US_QuickFilters"] = "quick-filters"; - // - UpdateScope["US_Story"] = "story"; - })(UpdateScope = exports.UpdateScope || (exports.UpdateScope = {})); - // - var ParameterCtrlTypesDisplayMode; - (function (ParameterCtrlTypesDisplayMode) { - // - ParameterCtrlTypesDisplayMode["MODE_TYPE_IN"] = "type_in"; - // - ParameterCtrlTypesDisplayMode["MODE_COMPACT_LIST"] = "compact"; - // - ParameterCtrlTypesDisplayMode["MODE_LIST"] = "list"; - // - ParameterCtrlTypesDisplayMode["MODE_SLIDER"] = "slider"; - // - ParameterCtrlTypesDisplayMode["MODE_DATETIME"] = "datetime"; - })(ParameterCtrlTypesDisplayMode = exports.ParameterCtrlTypesDisplayMode || (exports.ParameterCtrlTypesDisplayMode = {})); - // flags for display options - var ParameterCtrlTypesDisplayFlag; - (function (ParameterCtrlTypesDisplayFlag) { - // - ParameterCtrlTypesDisplayFlag["DISPLAY_CUSTOM_TITLE"] = "custom_title"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_SLIDER"] = "hide_slider_slider"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_READOUT"] = "hide_slider_readout"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_BUTTONS"] = "hide_slider_buttons"; - })(ParameterCtrlTypesDisplayFlag = exports.ParameterCtrlTypesDisplayFlag || (exports.ParameterCtrlTypesDisplayFlag = {})); - // The follow supports 1024 custom palettes, each with 4m shapes. Encoding is palette << PaletteShift | shape. - var ShapeEncodeConstants; - (function (ShapeEncodeConstants) { - // Shift value for palette - ShapeEncodeConstants["EncodePaletteShift"] = "paletteShift"; - // Mask for getting palette from encoded value. (Then shift down) - ShapeEncodeConstants["EncodePaletteMask"] = "paletteMask"; - // Mask for getting shape from encoded value - ShapeEncodeConstants["EncodeShapeMask"] = "shapeMask"; - })(ShapeEncodeConstants = exports.ShapeEncodeConstants || (exports.ShapeEncodeConstants = {})); - // - var ShapeType; - (function (ShapeType) { - // - ShapeType["ShapeCircle"] = "circle"; - // - ShapeType["ShapeSquare"] = "square"; - // - ShapeType["ShapePlus"] = "plus"; - // - ShapeType["ShapeTimes"] = "times"; - // - ShapeType["ShapeAsterisk"] = "asterisk"; - // - ShapeType["ShapeDiamond"] = "diamond"; - // - ShapeType["ShapeTriangle"] = "triangle"; - // - ShapeType["ShapeDownTriangle"] = "down-triangle"; - // - ShapeType["ShapeLeftTriangle"] = "left-triangle"; - // - ShapeType["ShapeRightTriangle"] = "right-triangle"; - // - ShapeType["MaxAllShapes"] = "invalid"; - })(ShapeType = exports.ShapeType || (exports.ShapeType = {})); - // - var ShapePalette; - (function (ShapePalette) { - // built-in palette - ShapePalette["ShapePaletteFilled"] = "filled"; - // custom palettes - ShapePalette["ShapePaletteCustom1"] = "custom1"; - // - ShapePalette["ShapePaletteCustom2"] = "custom2"; - // - ShapePalette["ShapePaletteCustom3"] = "custom3"; - // - ShapePalette["ShapePaletteCustom4"] = "custom4"; - // - ShapePalette["ShapePaletteCustom5"] = "custom5"; - // - ShapePalette["ShapePaletteCustom6"] = "custom6"; - // - ShapePalette["ShapePaletteCustom7"] = "custom7"; - // - ShapePalette["ShapePaletteCustom8"] = "custom8"; - // - ShapePalette["ShapePaletteCustom9"] = "custom9"; - // - ShapePalette["ShapePaletteCustom10"] = "custom10"; - // - ShapePalette["ShapePaletteCustom11"] = "custom11"; - // and so on... - ShapePalette["ShapePaletteCustom12"] = "custom12"; - // - ShapePalette["ShapePaletteHidden"] = "hidden"; - })(ShapePalette = exports.ShapePalette || (exports.ShapePalette = {})); - // ShapeType and palette mapped into a single value. This enum depends on ShapeType and the implementation of ShapeManager::IntEncode. - var ShapeID; - (function (ShapeID) { - // - ShapeID["ShapeIDCircle"] = "shapeIDCircle"; - // - ShapeID["ShapeIDSquare"] = "shapeIDSquare"; - // - ShapeID["ShapeIDPlus"] = "shapeIDPlus"; - // - ShapeID["ShapeIDTimes"] = "shapeIDTimes"; - // - ShapeID["ShapeIDAsterisk"] = "shapeIDAsterisk"; - // - ShapeID["ShapeIDDiamond"] = "shapeIDDiamond"; - // - ShapeID["ShapeIDTriangle"] = "shapeIDTriangle"; - // - ShapeID["ShapeIDDownTriangle"] = "shapeIDDownTriangle"; - // - ShapeID["ShapeIDLeftTriangle"] = "shapeIDLeftTriangle"; - // - ShapeID["ShapeIDRightTriangle"] = "shapeIDRightTriangle"; - // - ShapeID["ShapeIDFilledCircle"] = "shapeIDFilledCircle"; - // - ShapeID["ShapeIDFilledSquare"] = "shapeIDFilledSquare"; - // - ShapeID["ShapeIDFilledPlus"] = "shapeIDFilledPlus"; - // - ShapeID["ShapeIDFilledTimes"] = "shapeIDFilledTimes"; - // - ShapeID["ShapeIDFilledStar"] = "shapeIDFilledStar"; - // - ShapeID["ShapeIDFilledDiamond"] = "shapeIDFilledDiamond"; - // - ShapeID["ShapeIDFilledTriangle"] = "shapeIDFilledTriangle"; - // - ShapeID["ShapeIDFilledDownTriangle"] = "shapeIDFilledDownTriangle"; - // - ShapeID["ShapeIDFilledLeftTriangle"] = "shapeIDFilledLeftTriangle"; - // - ShapeID["ShapeIDFilledRightTriangle"] = "shapeIDFilledRightTriangle"; - // 0+(ShapePaletteHidden< -1; - }); - // Create a mapping of which index in the data dictionary our columns are in - var columnIndices = columns.map(function (vizDataColumn) { - // The columnIndex is in the same position as the paneIndex - var paneIndex = vizDataColumn.paneIndices.indexOf(i); - var columnIndex = vizDataColumn.columnIndices[paneIndex]; - return columnIndex; - }); - // Get the data for the pane we are processing - var vizPane = vizData.paneColumnsData.paneColumnsList[i]; - if (vizPane.vizPaneColumns.length !== columns.length) { - throw new Error('Malformed data table'); - } - var headers = new Array(); - var rows = new Array(); - // Column 0 will be the tuple id column. We can use this as a counter for how many rows we have - var tupleIds = vizPane.vizPaneColumns[0].tupleIds; - for (var tupleIndex = 0; tupleIndex < tupleIds.length; tupleIndex++) { - // We will have 1 less value in this row since there's the tupleId column - var cells = new Array(vizPane.vizPaneColumns.length - 1); - for (var j = 1 /* skip the first which is tuple ids */; j < vizPane.vizPaneColumns.length; j++) { - // Next, we need to figure out which column we are reading data for - var column = columns[columnIndices[j]]; - var vizPaneColumnData = vizPane.vizPaneColumns[j]; - // Define the header when we are processing the first row - if (tupleIndex === 0) { - var header = { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - isReferenced: true, - index: j - 1, - fieldCaption: column.fieldCaption - }; - headers.push(header); - } - var value = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.valueIndices[tupleIndex]); - var aliasValue = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.aliasIndices[tupleIndex]) || ''; - var formattedValue = aliasValue; // TODO - Figure out how to use the formatStrings - var dataCell = { - value: value, - formattedValue: formattedValue, - aliasedValue: aliasValue - }; - // Add our cell to this row - cells[j - 1] = dataCell; - } - rows.push(cells); - } - var dataTable = { - dataTable: rows, - headers: headers - }; - result.push(dataTable); - }; - // The data model for the VizDataPresModel is a little strange, so this parsing takes some time to figure out. - // There can be multiple panes of data, so we must go through them one at a time to create data tables - for (var i = 0; i < vizData.paneColumnsData.paneColumnsList.length; i++) { - _loop_1(i); - } - return result; - }; - return ActiveMarksDataConverter; - }()); - exports.ActiveMarksDataConverter = ActiveMarksDataConverter; - - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Enums = __webpack_require__(22); - var EnumMappings_1 = __webpack_require__(18); - /** - * Contains static helper methods for converting from an underlying data pres model into the api representation. - * Most of the code is a direct port from ApiUnderlyingDataHandler.cs - * https://opengrok/source/xref/teams_near/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiUnderlyingDataHandler.cs - */ - var UnderlyingDataConverter = (function () { - function UnderlyingDataConverter() { - } - UnderlyingDataConverter.lookupValueFromDictionary = function (dataDictionary, dt, index) { - if (index < 0) { - // per cl 280396 / bugzid 81197 negative data value index means that it is special - dt = Enums.DataType.DT_STRING; - index = -index - 1; - } - var result = null; - var rawValue = UnderlyingDataConverter.getRawValue(dataDictionary, dt, index); - if (rawValue !== null) { - result = rawValue.toString(); - } - return result; - }; - /* tslint:disable-next-line:no-any */ - UnderlyingDataConverter.getRawValue = function (dataDictionary, dt, index) { - if (!dataDictionary.dataSegments) { - return null; - } - for (var _i = 0, _a = Object.keys(dataDictionary.dataSegments); _i < _a.length; _i++) { - var key = _a[_i]; - var dataSegment = dataDictionary.dataSegments[key]; - for (var _b = 0, _c = dataSegment.dataColumns; _b < _c.length; _b++) { - var dataColumn = _c[_b]; - if (!dataColumn || dataColumn.dataType !== dt) { - continue; - } - if (index < dataColumn.dataValues.length) { - return dataColumn.dataValues[index]; - } - index -= dataColumn.dataValues.length; - break; - } - } - return null; - }; - UnderlyingDataConverter.buildDataTable = function (dataDictionary, columns) { - var result = { - dataTable: UnderlyingDataConverter.buildTable(dataDictionary, columns), - headers: columns.map(function (c, i) { return UnderlyingDataConverter.buildColumnModel(c, i); }) - }; - return result; - }; - UnderlyingDataConverter.buildUnderlyingDataTable = function (isSummary, underlyingDataTable) { - var result = { - data: UnderlyingDataConverter.buildDataTable(underlyingDataTable.dataDictionary, underlyingDataTable.underlyingDataTableColumns), - isSummary: isSummary - }; - return result; - }; - UnderlyingDataConverter.buildActiveMarksTable = function (dataDictionary, vizData) { - throw new Error(); - }; - UnderlyingDataConverter.buildColumnModel = function (column, index) { - return { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - fieldCaption: column.fieldCaption, - isReferenced: !!column.isReferenced, - index: index - }; - }; - UnderlyingDataConverter.buildTable = function (dataDictionary, columns) { - if (columns.length === 0) { - return new Array(); - } - var rowCount = columns[0].formatValIdxs.length; - var columnCount = columns.length; - var result = new Array(rowCount); - // Initialize all of our rows - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - result[rowIndex] = new Array(columnCount); - } - // Go through column-by-column and convert the values - for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { - var column = columns[columnIndex]; - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - var formattedValue = UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, Enums.DataType.DT_STRING, column.formatValIdxs[rowIndex]); - if (formattedValue === null) { - throw new Error('formattedValue was null'); - } - var value = { - value: UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, column.valueIndices[rowIndex]), - formattedValue: formattedValue, - aliasedValue: formattedValue - }; - result[rowIndex][columnIndex] = value; - } - } - return result; - }; - return UnderlyingDataConverter; - }()); - exports.UnderlyingDataConverter = UnderlyingDataConverter; - - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumMappings_1 = __webpack_require__(18); - /** - * Class containing helper methods for converting from ApiPresModels to their PresLayer equivalents - * - * @export - * @class ApiToPresLayerConverter - */ - var ApiToPresLayerConverter = (function () { - function ApiToPresLayerConverter() { - } - ApiToPresLayerConverter.convertSheetPath = function (apiSheetPath) { - if (!apiSheetPath) { - throw new Error('sheetPath not defined'); - } - var result = { - sheetName: apiSheetPath.sheetName, - isDashboard: apiSheetPath.isDashboard, - storyboard: apiSheetPath.storyboard || '', - flipboardZoneId: apiSheetPath.flipboardZoneID || 0, - storyPointId: apiSheetPath.storyPointID || 0, - }; - return result; - }; - ApiToPresLayerConverter.convertAddInLocator = function (apiAddInLocator) { - var result = { - addInInstanceId: apiAddInLocator.instanceId, - sheetPath: ApiToPresLayerConverter.convertSheetPath(apiAddInLocator.dashboardPath) - }; - return result; - }; - ApiToPresLayerConverter.convertVisualId = function (apiVisualid) { - var result = { - worksheet: apiVisualid.worksheet, - dashboard: apiVisualid.dashboard, - storyboard: apiVisualid.storyboard, - storyPointId: apiVisualid.storyPointID, - flipboardZoneId: apiVisualid.flipboardZoneID - }; - return result; - }; - ApiToPresLayerConverter.convertVisualIdToWorksheet = function (apiVisualId) { - return apiVisualId.worksheet; - }; - ApiToPresLayerConverter.convertVisualIdToDashboard = function (apiVisualId) { - return apiVisualId.dashboard || ''; - }; - ApiToPresLayerConverter.convertFilterValues = function (filterValues) { - if (filterValues.length === 0) { - // platform code expects an empty string for clearing filter values - return ['']; - } - return filterValues; - }; - ApiToPresLayerConverter.convertFilterType = function (filterUpdateType) { - return EnumMappings_1.ApiToPresLayerEnumMappings.filterUpdateType.convert(filterUpdateType); - }; - ApiToPresLayerConverter.ConvertNullOption = function (nullOption) { - return EnumMappings_1.ApiToPresLayerEnumMappings.nullOption.convert(nullOption); - }; - return ApiToPresLayerConverter; - }()); - exports.ApiToPresLayerConverter = ApiToPresLayerConverter; - - -/***/ }, -/* 27 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Simple registry class which creates a mapping based on two keys. - * - * @export - * @class MappingRegistry - * @template TInputEnumType - * @template TOutputEnumType - * @template TMappingStorageType - */ - var MappingRegistry = (function () { - function MappingRegistry() { - this._registry = {}; - } - MappingRegistry.prototype.has = function (inputType, outputType) { - var key = this.makeKey(inputType, outputType); - if (!this._registry.hasOwnProperty(key)) { - return false; - } - if (!this._registry[key]) { - return false; - } - return true; - }; - MappingRegistry.prototype.get = function (inputType, outputType) { - if (!this.has(inputType, outputType)) { - throw new Error('Missing requested mapping: ' + inputType + ' to ' + outputType); - } - var key = this.makeKey(inputType, outputType); - return this._registry[key]; - }; - MappingRegistry.prototype.addRegistration = function (inputType, outputType, storageItem) { - var key = this.makeKey(inputType, outputType); - // Add this item - this._registry[key] = storageItem; - }; - /** - * Combines the two keys into a unique string - * - * @private - * @param {TInputEnumType} inputType - * @param {TOutputEnumType} outputType - * @returns {string} - * @memberof MappingRegistry - */ - MappingRegistry.prototype.makeKey = function (inputType, outputType) { - var keyObj = { input: inputType, output: outputType }; - return JSON.stringify(keyObj); - }; - return MappingRegistry; - }()); - exports.MappingRegistry = MappingRegistry; - - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var EnumMappings_1 = __webpack_require__(18); - /** - * Contains logic for converting Parameter models into their equivalent Api versions - */ - var ParametersDataConverter = (function () { - function ParametersDataConverter() { - } - ParametersDataConverter.convertParameterList = function (parameters) { - return parameters.map(ParametersDataConverter.convertParameter); - }; - // Converts a single parameter. - // Rough port of https://opengrok/source/xref/dev_nessie/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiParameterHandler.cs#95 - ParametersDataConverter.convertParameter = function (param) { - var currentValue = ParametersDataConverter.convertAliasedDataValue(param.valueAlias, param.formattedValue); - var allowableValuesType = EnumMappings_1.PresLayerToApiEnumMappings.parameterTypesDomainType.convert(param.parameterDomainType); - var result = { - name: param.fieldCaption, - fieldName: param.parameterName, - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(param.dataType), - currentValue: currentValue, - allowableValuesType: allowableValuesType - }; - if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.List) { - var allowableValues = new Array(); - for (var i = 0; i < param.valuesAliases.length; i++) { - var adv = param.valuesAliases[i]; - var formattedValue = param.formattedValues[i]; - allowableValues.push(ParametersDataConverter.convertAliasedDataValue(adv, formattedValue)); - } - result.allowableValues = allowableValues; - } - else if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.Range) { - result.minValue = ParametersDataConverter.makeDataValue(param.valueMin, param.formattedMin); - result.maxValue = ParametersDataConverter.makeDataValue(param.valueMax, param.formattedMax); - result.stepSize = ParametersDataConverter.convertNumber(result.dataType, param.valueInc); - result.dateStepPeriod = EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(param.datePeriodType, false); - } - else { - // Nothing to do in the case that all values are allowed - } - return result; - }; - ParametersDataConverter.convertNumber = function (dataType, value) { - if (value) { - if (dataType === api_internal_contract_1.DataType.Int || dataType === api_internal_contract_1.DataType.Date || dataType === api_internal_contract_1.DataType.DateTime) { - return parseInt(value, 10); - } - else if (dataType === api_internal_contract_1.DataType.Float) { - return parseFloat(value); - } - } - return undefined; - }; - /*tslint:disable-next-line:no-any */ - ParametersDataConverter.makeDataValue = function (value, formattedValue, alias) { - var result = { - value: value, - formattedValue: formattedValue, - aliasedValue: alias || formattedValue - }; - return result; - }; - /*tslint:disable-next-line:no-any */ - ParametersDataConverter.convertAliasedDataValue = function (adv, formattedValue) { - // AliasedDataValues are serialized in kind of a strange way from the platform code. They are output - // as an array of 2 values. The first is the actual value, the second is the alias. See AliasedDataValueSerializer::ToSerializer - if (!adv || !(adv instanceof Array)) { - throw new Error('Invalid aliased data value'); - } - var value = adv[0]; - var alias = adv.length < 2 ? undefined : adv[1]; - return ParametersDataConverter.makeDataValue(value, formattedValue, alias); - }; - return ParametersDataConverter; - }()); - exports.ParametersDataConverter = ParametersDataConverter; - - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - __export(__webpack_require__(9)); - - -/***/ }, -/* 30 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implemenation of the PresentationLayer contract with a bit of extra information - * added to work with add-ins. Most work is delegated down to the interopObject which - * communicates directly with the c++ layer via QWebChannel - * - * @class AddInApiPresLayerImpl - * @implements {contract.PresentationLayer} - */ - var AddInApiPresLayerImpl = (function () { - function AddInApiPresLayerImpl(_interopObject) { - var _this = this; - this._interopObject = _interopObject; - this._notificationHandlers = {}; - if (_interopObject && _interopObject.OnNotification) { - _interopObject.OnNotification.connect(function (notification) { - _this.dispatchNotification(notification); - }); - } - } - Object.defineProperty(AddInApiPresLayerImpl.prototype, "AddInInstanceInfo", { - /** - * Gets the instance info for this particular add-in from the c++ code - * - * @readonly - * @type {AddInInstancePresModel} - * @memberof AddInApiPresLayerImpl - */ - get: function () { - return this._interopObject.addInInstanceInfo; - }, - enumerable: true, - configurable: true - }); - /** - * Invokes a command using the pres-layer interop - * - * @template T - The expected return type - * @param {string} commandNamespace - * @param {string} commandName - * @param {object} params - * @returns {Promise} - * @memberof AddInApiPresLayerImpl - */ - AddInApiPresLayerImpl.prototype.invokeCommand = function (commandNamespace, commandName, params) { - var _this = this; - return new Promise(function (resolve, reject) { - try { - commandNamespace = commandNamespace || 'tabdoc'; - _this._interopObject.ExecuteCommand(commandNamespace, commandName, params, function (response) { - if (!response.Success) { - var msg = 'ExecuteCommand failed, with result:' + JSON.stringify(response.Result); - reject(new Error(msg)); - } - else { - resolve(response.Result); - } - }); - } - catch (err) { - reject(err); - } - }); - }; - // This implementation will registration a single instance of a notification handler with the Native C++ object, - // and implement multi-dispatch to the web objects from h.ere - AddInApiPresLayerImpl.prototype.registerNotificationHandler = function (eventId, handler) { - var _this = this; - if (eventId in this._notificationHandlers) { - this._notificationHandlers[eventId].push(handler); - } - else { - this._notificationHandlers[eventId] = [handler]; - try { - this._interopObject.RegisterNotificationHandler(eventId); - } - catch (err) { - // console.log('RegisterNotificationHandler failed: ' + err); - } - } - return function () { return _this.removeNotificationHandler(eventId, handler); }; - }; - AddInApiPresLayerImpl.prototype.removeNotificationHandler = function (eventId, handler) { - var handlerList = this._notificationHandlers[eventId]; - if (!handlerList) { - return; - } - var foundIndex = handlerList.indexOf(handler); - if (foundIndex >= 0) { - handlerList.splice(foundIndex, 1); - } - if (handlerList.length === 0) { - delete this._notificationHandlers[eventId]; - } - }; - AddInApiPresLayerImpl.prototype.dispatchNotification = function (notification) { - // console.log('received notification: ' + JSON.stringify(notification)); - var eventId = notification.eventId; - var presModel = notification.presModel; - if (eventId in this._notificationHandlers) { - var handlers = this._notificationHandlers[eventId]; - for (var i = handlers.length - 1; i >= 0; i--) { - handlers[i](presModel); - } - } - }; - return AddInApiPresLayerImpl; - }()); - exports.AddInApiPresLayerImpl = AddInApiPresLayerImpl; - - -/***/ }, -/* 31 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the InternalApiDispatcher for desktop. Since this will run in the same - * frame as the ApiEventHandler, this class mostly just marshalls down to that implementation - * - * @export - * @class DesktopApiDispatcher - * @implements {InternalApiDispatcher} - */ - var DesktopApiDispatcher = (function () { - function DesktopApiDispatcher(_apiEventHandler) { - var _this = this; - this._apiEventHandler = _apiEventHandler; - this._notificationHandlers = []; - this._apiEventHandler.setEventHandler(function (notificationId, model) { - _this._notificationHandlers.forEach(function (handler) { return handler({ - notificationId: notificationId, - data: model - }); }); - }); - } - DesktopApiDispatcher.prototype.setVersionNumber = function (versionNumber) { - this._apiEventHandler.setVersionNumber(versionNumber); - }; - DesktopApiDispatcher.prototype.execute = function (verb, parameters) { - // Just pass this right through to the ApiEventHandler - return this._apiEventHandler.execute(verb, parameters); - }; - DesktopApiDispatcher.prototype.registerNotificationHandler = function (handler) { - this._notificationHandlers.push(handler); - }; - DesktopApiDispatcher.prototype.unregisterNotificationHandler = function (handler) { - this._notificationHandlers = this._notificationHandlers.filter(function (h) { return h !== handler; }); - }; - return DesktopApiDispatcher; - }()); - exports.DesktopApiDispatcher = DesktopApiDispatcher; - - -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - __webpack_require__(33); - var qwebchannel_1 = __webpack_require__(34); - /** - * Initializes the QWebChannel contract and returns the pres layer interop object - * - * @returns {Promise} - */ - function initializeWebChannelPresLayer() { - return new Promise(function (resolve, reject) { - try { - // tslint:disable-next-line - new qwebchannel_1.QWebChannel(qt.webChannelTransport, function (channel) { - // tslint:disable-next-line - var addInPresLayer = channel.objects['addInPresLayer']; - resolve(addInPresLayer); - }); - } - catch (e) { - reject(e); - } - }); - } - exports.initializeWebChannelPresLayer = initializeWebChannelPresLayer; - - -/***/ }, -/* 33 */ -/***/ function(module, exports) { - - - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - /**************************************************************************** - ** - ** Copyright (C) 2015 The Qt Company Ltd. - ** Copyright (C) 2014 KlarÀlvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff - ** Contact: http://www.qt.io/licensing/ - ** - ** This file is part of the QtWebChannel module of the Qt Toolkit. - ** - ** $QT_BEGIN_LICENSE:LGPL21$ - ** Commercial License Usage - ** Licensees holding valid commercial Qt licenses may use this file in - ** accordance with the commercial license agreement provided with the - ** Software or, alternatively, in accordance with the terms contained in - ** a written agreement between you and The Qt Company. For licensing terms - ** and conditions see http://www.qt.io/terms-conditions. For further - ** information use the contact form at http://www.qt.io/contact-us. - ** - ** GNU Lesser General Public License Usage - ** Alternatively, this file may be used under the terms of the GNU Lesser - ** General Public License version 2.1 or version 3 as published by the Free - ** Software Foundation and appearing in the file LICENSE.LGPLv21 and - ** LICENSE.LGPLv3 included in the packaging of this file. Please review the - ** following information to ensure the GNU Lesser General Public License - ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and - ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. - ** - ** As a special exception, The Qt Company gives you certain additional - ** rights. These rights are described in The Qt Company LGPL Exception - ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. - ** - ** $QT_END_LICENSE$ - ** - ****************************************************************************/ - - "use strict"; - - var QWebChannelMessageTypes = { - signal: 1, - propertyUpdate: 2, - init: 3, - idle: 4, - debug: 5, - invokeMethod: 6, - connectToSignal: 7, - disconnectFromSignal: 8, - setProperty: 9, - response: 10, - }; - - var QWebChannel = function(transport, initCallback) - { - if (typeof transport !== "object" || typeof transport.send !== "function") { - console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." + - " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send)); - return; - } - - var channel = this; - this.transport = transport; - - this.send = function(data) - { - if (typeof(data) !== "string") { - data = JSON.stringify(data); - } - channel.transport.send(data); - } - - this.transport.onmessage = function(message) - { - var data = message.data; - if (typeof data === "string") { - data = JSON.parse(data); - } - switch (data.type) { - case QWebChannelMessageTypes.signal: - channel.handleSignal(data); - break; - case QWebChannelMessageTypes.response: - channel.handleResponse(data); - break; - case QWebChannelMessageTypes.propertyUpdate: - channel.handlePropertyUpdate(data); - break; - default: - console.error("invalid message received:", message.data); - break; - } - } - - this.execCallbacks = {}; - this.execId = 0; - this.exec = function(data, callback) - { - if (!callback) { - // if no callback is given, send directly - channel.send(data); - return; - } - if (channel.execId === Number.MAX_VALUE) { - // wrap - channel.execId = Number.MIN_VALUE; - } - if (data.hasOwnProperty("id")) { - console.error("Cannot exec message with property id: " + JSON.stringify(data)); - return; - } - data.id = channel.execId++; - channel.execCallbacks[data.id] = callback; - channel.send(data); - }; - - this.objects = {}; - - this.handleSignal = function(message) - { - var object = channel.objects[message.object]; - if (object) { - object.signalEmitted(message.signal, message.args); - } else { - console.warn("Unhandled signal: " + message.object + "::" + message.signal); - } - } - - this.handleResponse = function(message) - { - if (!message.hasOwnProperty("id")) { - console.error("Invalid response message received: ", JSON.stringify(message)); - return; - } - channel.execCallbacks[message.id](message.data); - delete channel.execCallbacks[message.id]; - } - - this.handlePropertyUpdate = function(message) - { - for (var i in message.data) { - var data = message.data[i]; - var object = channel.objects[data.object]; - if (object) { - object.propertyUpdate(data.signals, data.properties); - } else { - console.warn("Unhandled property update: " + data.object + "::" + data.signal); - } - } - channel.exec({type: QWebChannelMessageTypes.idle}); - } - - this.debug = function(message) - { - channel.send({type: QWebChannelMessageTypes.debug, data: message}); - }; - - channel.exec({type: QWebChannelMessageTypes.init}, function(data) { - for (var objectName in data) { - var object = new QObject(objectName, data[objectName], channel); - } - // now unwrap properties, which might reference other registered objects - for (var objectName in channel.objects) { - channel.objects[objectName].unwrapProperties(); - } - if (initCallback) { - initCallback(channel); - } - channel.exec({type: QWebChannelMessageTypes.idle}); - }); - }; - - function QObject(name, data, webChannel) - { - this.__id__ = name; - webChannel.objects[name] = this; - - // List of callbacks that get invoked upon signal emission - this.__objectSignals__ = {}; - - // Cache of all properties, updated when a notify signal is emitted - this.__propertyCache__ = {}; - - var object = this; - - // ---------------------------------------------------------------------- - - this.unwrapQObject = function(response) - { - if (response instanceof Array) { - // support list of objects - var ret = new Array(response.length); - for (var i = 0; i < response.length; ++i) { - ret[i] = object.unwrapQObject(response[i]); - } - return ret; - } - if (!response - || !response["__QObject*__"] - || response["id"] === undefined) { - return response; - } - - var objectId = response.id; - if (webChannel.objects[objectId]) - return webChannel.objects[objectId]; - - if (!response.data) { - console.error("Cannot unwrap unknown QObject " + objectId + " without data."); - return; - } - - var qObject = new QObject( objectId, response.data, webChannel ); - qObject.destroyed.connect(function() { - if (webChannel.objects[objectId] === qObject) { - delete webChannel.objects[objectId]; - // reset the now deleted QObject to an empty {} object - // just assigning {} though would not have the desired effect, but the - // below also ensures all external references will see the empty map - // NOTE: this detour is necessary to workaround QTBUG-40021 - var propertyNames = []; - for (var propertyName in qObject) { - propertyNames.push(propertyName); - } - for (var idx in propertyNames) { - delete qObject[propertyNames[idx]]; - } - } - }); - // here we are already initialized, and thus must directly unwrap the properties - qObject.unwrapProperties(); - return qObject; - } - - this.unwrapProperties = function() - { - for (var propertyIdx in object.__propertyCache__) { - object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]); - } - } - - function addSignal(signalData, isPropertyNotifySignal) - { - var signalName = signalData[0]; - var signalIndex = signalData[1]; - object[signalName] = { - connect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to connect to signal " + signalName); - return; - } - - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - object.__objectSignals__[signalIndex].push(callback); - - if (!isPropertyNotifySignal && signalName !== "destroyed") { - // only required for "pure" signals, handled separately for properties in propertyUpdate - // also note that we always get notified about the destroyed signal - webChannel.exec({ - type: QWebChannelMessageTypes.connectToSignal, - object: object.__id__, - signal: signalIndex - }); - } - }, - disconnect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to disconnect from signal " + signalName); - return; - } - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - var idx = object.__objectSignals__[signalIndex].indexOf(callback); - if (idx === -1) { - console.error("Cannot find connection of signal " + signalName + " to " + callback.name); - return; - } - object.__objectSignals__[signalIndex].splice(idx, 1); - if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) { - // only required for "pure" signals, handled separately for properties in propertyUpdate - webChannel.exec({ - type: QWebChannelMessageTypes.disconnectFromSignal, - object: object.__id__, - signal: signalIndex - }); - } - } - }; - } - - /** - * Invokes all callbacks for the given signalname. Also works for property notify callbacks. - */ - function invokeSignalCallbacks(signalName, signalArgs) - { - var connections = object.__objectSignals__[signalName]; - if (connections) { - connections.forEach(function(callback) { - callback.apply(callback, signalArgs); - }); - } - } - - this.propertyUpdate = function(signals, propertyMap) - { - // update property cache - for (var propertyIndex in propertyMap) { - var propertyValue = propertyMap[propertyIndex]; - object.__propertyCache__[propertyIndex] = propertyValue; - } - - for (var signalName in signals) { - // Invoke all callbacks, as signalEmitted() does not. This ensures the - // property cache is updated before the callbacks are invoked. - invokeSignalCallbacks(signalName, signals[signalName]); - } - } - - this.signalEmitted = function(signalName, signalArgs) - { - invokeSignalCallbacks(signalName, signalArgs); - } - - function addMethod(methodData) - { - var methodName = methodData[0]; - var methodIdx = methodData[1]; - object[methodName] = function() { - var args = []; - var callback; - for (var i = 0; i < arguments.length; ++i) { - if (typeof arguments[i] === "function") - callback = arguments[i]; - else - args.push(arguments[i]); - } - - webChannel.exec({ - "type": QWebChannelMessageTypes.invokeMethod, - "object": object.__id__, - "method": methodIdx, - "args": args - }, function(response) { - if (response !== undefined) { - var result = object.unwrapQObject(response); - if (callback) { - (callback)(result); - } - } - }); - }; - } - - function bindGetterSetter(propertyInfo) - { - var propertyIndex = propertyInfo[0]; - var propertyName = propertyInfo[1]; - var notifySignalData = propertyInfo[2]; - // initialize property cache with current value - // NOTE: if this is an object, it is not directly unwrapped as it might - // reference other QObject that we do not know yet - object.__propertyCache__[propertyIndex] = propertyInfo[3]; - - if (notifySignalData) { - if (notifySignalData[0] === 1) { - // signal name is optimized away, reconstruct the actual name - notifySignalData[0] = propertyName + "Changed"; - } - addSignal(notifySignalData, true); - } - - Object.defineProperty(object, propertyName, { - get: function () { - var propertyValue = object.__propertyCache__[propertyIndex]; - if (propertyValue === undefined) { - // This shouldn't happen - console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__); - } - - return propertyValue; - }, - set: function(value) { - if (value === undefined) { - console.warn("Property setter for " + propertyName + " called with undefined value!"); - return; - } - object.__propertyCache__[propertyIndex] = value; - webChannel.exec({ - "type": QWebChannelMessageTypes.setProperty, - "object": object.__id__, - "property": propertyIndex, - "value": value - }); - } - }); - - } - - // ---------------------------------------------------------------------- - - data.methods.forEach(addMethod); - - data.properties.forEach(bindGetterSetter); - - data.signals.forEach(function(signal) { addSignal(signal, false); }); - - for (var name in data.enums) { - object[name] = data.enums[name]; - } - } - - //required for use with nodejs - if (true) { - module.exports = { - QWebChannel: QWebChannel - }; - } - - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=frelard-desktop-bootstrap.js.map -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["tableau"] = factory(); - else - root["tableau"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; -/******/ -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - // Due to the way we configured webpack, we should be exporting things which will be under - // a global variable called "tableau". Export everything we want to be visible under tableau - // from this file. - var AddIn_1 = __webpack_require__(1); - var AddInImpl_1 = __webpack_require__(2); - var addInImpl = new AddInImpl_1.AddInImpl(); - exports.addIn = new AddIn_1.AddIn(addInImpl); - // Export Enums - var api_external_contract_1 = __webpack_require__(50); - exports.FilterUpdateType = api_external_contract_1.FilterUpdateType; - exports.NullOption = api_external_contract_1.NullOption; - exports.TableauEventType = api_external_contract_1.TableauEventType; - - -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external AddIn namespace. - */ - var AddIn = (function () { - function AddIn(addInImpl) { - this.addInImpl = addInImpl; - this.addInImpl = addInImpl; - } - Object.defineProperty(AddIn.prototype, "dashboardContent", { - get: function () { - return this.addInImpl.dashboardContent; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "environment", { - get: function () { - return this.addInImpl.environment; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "settings", { - get: function () { - return this.addInImpl.settings; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "ui", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - AddIn.prototype.initializeAsync = function () { - return this.addInImpl.initializeAsync(); - }; - return AddIn; - }()); - exports.AddIn = AddIn; - - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var api_shared_1 = __webpack_require__(9); - var Dashboard_1 = __webpack_require__(40); - var DashboardContent_1 = __webpack_require__(42); - var Environment_1 = __webpack_require__(43); - var Settings_1 = __webpack_require__(44); - var RegisterAllAddInServices_1 = __webpack_require__(45); - var VersionNumber_1 = __webpack_require__(48); - var DashboardImpl_1 = __webpack_require__(49); - var SettingsImpl_1 = __webpack_require__(56); - var AddInImpl = (function () { - function AddInImpl() { - } - AddInImpl.prototype.initializeAsync = function () { - var _this = this; - if (!this._initializationPromise) { - this._initializationPromise = new Promise(function (resolve, reject) { - // First thing we want to do is check to see if there is a desktop dispatcher already registered for us - if (api_internal_contract_1.InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise()) { - // Running in desktop, use this promise - var desktopDispatcherPromise = api_internal_contract_1.InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - desktopDispatcherPromise.then(_this.onDispatcherReceived.bind(_this)).then(function () { resolve(); }); - } - else { - reject('Not running in desktop. Server support coming soon!'); - } - }); - } - return this._initializationPromise; - }; - AddInImpl.prototype.onDispatcherReceived = function (dispatcher) { - var _this = this; - dispatcher.setVersionNumber(VersionNumber_1.VersionNumber.Instance); - // Call to register all the services which will use the newly initialized dispatcher - api_shared_1.registerAllSharedServices(dispatcher); - RegisterAllAddInServices_1.registerAllAddInServices(dispatcher); - // Get the initialization service and initialize this add-in - var initializationService = api_shared_1.ApiServiceRegistry.instance.getService("InitializationService" /* InitializationService */); - return initializationService.initializeDashboardAddInAsync().then(function (result) { - if (!result.addInInstance.locator.dashboardPath) { - throw new Error('DashboardPath is undefined'); - } - _this.dashboardContent = _this.initializeDashboardContent(result.addinDashboardInfo, result.addInInstance.locator.dashboardPath); - _this.environment = new Environment_1.Environment(result.addInEnvironment); - _this.settings = _this.initializeSettings(result.addInSettingsInfo); - }); - }; - AddInImpl.prototype.initializeDashboardContent = function (info, sheetPath) { - var dashboardImpl = new DashboardImpl_1.DashboardImpl(info, sheetPath); - var dashboard = new Dashboard_1.Dashboard(dashboardImpl); - return new DashboardContent_1.DashboardContent(dashboard); - }; - AddInImpl.prototype.initializeSettings = function (settingsInfo) { - var settingsImpl = new SettingsImpl_1.SettingsImpl(settingsInfo); - return new Settings_1.Settings(settingsImpl); - }; - return AddInImpl; - }()); - exports.AddInImpl = AddInImpl; - - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(4)); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - - -/***/ }, -/* 4 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - var DomainRestrictionType; - (function (DomainRestrictionType) { - DomainRestrictionType["All"] = "all"; - DomainRestrictionType["List"] = "list"; - DomainRestrictionType["Range"] = "range"; - })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {})); - var DateStepPeriod; - (function (DateStepPeriod) { - DateStepPeriod["Years"] = "years"; - DateStepPeriod["Quarters"] = "quarters"; - DateStepPeriod["Months"] = "months"; - DateStepPeriod["Weeks"] = "weeks"; - DateStepPeriod["Days"] = "days"; - DateStepPeriod["Hours"] = "hours"; - DateStepPeriod["Minutes"] = "minutes"; - DateStepPeriod["Seconds"] = "seconds"; - })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {})); - /** - * The option for specifying which values to include for filtering. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "nullvalues"; - NullOption["NonNullValues"] = "nonnullvalues"; - NullOption["AllValues"] = "allvalues"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - NotificationId["ParameterChanged"] = "parameter-changed"; - NotificationId["FilterChanged"] = "filter-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetName"] = "worksheet-name"; - ParameterId["DashboardName"] = "dashboard"; - ParameterId["ParameterInfo"] = "parameter-info"; - ParameterId["ParameterInfos"] = "parameter-infos"; - ParameterId["ParameterCaption"] = "paremeter-caption"; - ParameterId["ParameterFieldName"] = "parameter-field-name"; - ParameterId["ParameterValue"] = "parameter-value"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - - -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - VerbId["GetParametersForSheet"] = "get-parameters-for-sheet"; - VerbId["FindParameter"] = "find-parameter"; - VerbId["ChangeParameterValue"] = "change-parameter-value"; - VerbId["ClearSelectedMarks"] = "clear-selected-marks"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(10)); - __export(__webpack_require__(11)); - var Point_1 = __webpack_require__(12); - exports.Point = Point_1.Point; - var Size_1 = __webpack_require__(13); - exports.Size = Size_1.Size; - __export(__webpack_require__(14)); - __export(__webpack_require__(15)); - __export(__webpack_require__(16)); - __export(__webpack_require__(22)); - __export(__webpack_require__(21)); - __export(__webpack_require__(20)); - __export(__webpack_require__(19)); - __export(__webpack_require__(23)); - __export(__webpack_require__(24)); - __export(__webpack_require__(25)); - __export(__webpack_require__(38)); - __export(__webpack_require__(36)); - - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Class designed to register and unregister handlers from a user. Only those events - * which are added via AddNewEventType will be supported by this instance - */ - var EventListenerManager = (function () { - function EventListenerManager() { - this._eventListenerManagers = {}; - } - EventListenerManager.prototype.addEventListener = function (eventType, handler) { - if (!this._eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this._eventListenerManagers[eventType].addEventListener(handler); - }; - EventListenerManager.prototype.removeEventListener = function (eventType, handler) { - if (!this._eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this._eventListenerManagers[eventType].removeEventListener(handler); - }; - EventListenerManager.prototype.addNewEventType = function (eventManager) { - this._eventListenerManagers[eventManager.eventType] = eventManager; - }; - return EventListenerManager; - }()); - exports.EventListenerManager = EventListenerManager; - - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var EventListenerManager_1 = __webpack_require__(10); - /** - * Implementation of the Parameter contract. Calls down to the impl - * class for almost all of the work it does. - */ - var Parameter = (function (_super) { - __extends(Parameter, _super); - function Parameter(parameterImpl, sheet) { - var _this = _super.call(this) || this; - _this.parameterImpl = parameterImpl; - // Initialize our event handling for this class - _this.parameterImpl.initializeEvents(sheet).forEach(function (e) { return _this.addNewEventType(e); }); - return _this; - } - Object.defineProperty(Parameter.prototype, "name", { - get: function () { - return this.parameterImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "currentValue", { - get: function () { - return this.parameterImpl.currentValue; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "dataType", { - get: function () { - return this.parameterImpl.dataType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "allowableValues", { - get: function () { - return this.parameterImpl.allowableValues; - }, - enumerable: true, - configurable: true - }); - Parameter.prototype.changeValueAsync = function (newValue) { - return this.parameterImpl.changeValueAsync(newValue); - }; - return Parameter; - }(EventListenerManager_1.EventListenerManager)); - exports.Parameter = Parameter; - - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Point = (function () { - function Point(_x, _y) { - this._x = _x; - this._y = _y; - } - Object.defineProperty(Point.prototype, "x", { - get: function () { - return this._x; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Point.prototype, "y", { - get: function () { - return this._y; - }, - enumerable: true, - configurable: true - }); - return Point; - }()); - exports.Point = Point; - - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Size = (function () { - function Size(_height, _width) { - this._height = _height; - this._width = _width; - } - Object.defineProperty(Size.prototype, "height", { - get: function () { - return this._height; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Size.prototype, "width", { - get: function () { - return this._width; - }, - enumerable: true, - configurable: true - }); - return Size; - }()); - exports.Size = Size; - - -/***/ }, -/* 14 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var DataTable = (function () { - function DataTable(_data, _columns, _totalRowCount, _isSummaryData) { - this._data = _data; - this._columns = _columns; - this._totalRowCount = _totalRowCount; - this._isSummaryData = _isSummaryData; - // TODO: get rid of this in redesign. - this._name = _isSummaryData ? 'Summary Data Table' : 'Underlying Data Table'; - } - Object.defineProperty(DataTable.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "data", { - get: function () { - return this._data; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "columns", { - get: function () { - return this._columns; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "totalRowCount", { - get: function () { - return this._totalRowCount; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "isSummaryData", { - get: function () { - return this._isSummaryData; - }, - enumerable: true, - configurable: true - }); - return DataTable; - }()); - exports.DataTable = DataTable; - var Column = (function () { - function Column(_fieldName, _dataType, // TODO: this shoudl be an enum type - _isReferenced, _index) { - this._fieldName = _fieldName; - this._dataType = _dataType; - this._isReferenced = _isReferenced; - this._index = _index; - } - Object.defineProperty(Column.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "dataType", { - get: function () { - return this._dataType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "isReferenced", { - get: function () { - return this._isReferenced; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "index", { - get: function () { - return this._index; - }, - enumerable: true, - configurable: true - }); - return Column; - }()); - exports.Column = Column; - var DataValue = (function () { - /* tslint:disable:no-any */ - function DataValue(_value, _formattedValue) { - this._value = _value; - this._formattedValue = _formattedValue; - } - Object.defineProperty(DataValue.prototype, "value", { - get: function () { - return this._value; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataValue.prototype, "formattedValue", { - get: function () { - return this._formattedValue; - }, - enumerable: true, - configurable: true - }); - return DataValue; - }()); - exports.DataValue = DataValue; - - -/***/ }, -/* 15 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauExceptions = (function () { - function TableauExceptions() { - } - return TableauExceptions; - }()); - exports.TableauExceptions = TableauExceptions; - - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var TableauWorksheetEvent_1 = __webpack_require__(19); - var FilterChangedEvent = (function (_super) { - __extends(FilterChangedEvent, _super); - function FilterChangedEvent(worksheet, _fieldName) { - var _this = _super.call(this, api_external_contract_1.TableauEventType.FilterChanged, worksheet) || this; - _this._fieldName = _fieldName; - return _this; - } - Object.defineProperty(FilterChangedEvent.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - FilterChangedEvent.prototype.getFilterAsync = function () { - throw new Error('API call not yet implmemented'); - }; - return FilterChangedEvent; - }(TableauWorksheetEvent_1.TableauWorksheetEvent)); - exports.FilterChangedEvent = FilterChangedEvent; - - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(18)); - - -/***/ }, -/* 18 */ -/***/ function(module, exports) { - - "use strict"; - // All enum values made available to AddIn developers. - // Enums should be kept in alphabetical order. - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * The context in which the AddIn is currently running. - */ - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - /** - * The mode in which the AddIn is currently running. - */ - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - /** - * What the object represents in a dashboard. - */ - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - /** - * The different types of data a value can have - */ - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - /** - * Valid date ranges for a relative date filter. - */ - var DateRangeType; - (function (DateRangeType) { - DateRangeType["Last"] = "last"; - DateRangeType["LastN"] = "last-n"; - DateRangeType["Next"] = "next"; - DateRangeType["NextN"] = "next-n"; - DateRangeType["Current"] = "current"; - DateRangeType["ToDate"] = "to-date"; - })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); - /** - * Types of dialog event for event listening between a parent AddIn and a popup dialog. - */ - var DialogEventType; - (function (DialogEventType) { - DialogEventType["DialogMessage"] = "dialog-message"; - DialogEventType["DialogEvent"] = "dialog-event"; - })(DialogEventType = exports.DialogEventType || (exports.DialogEventType = {})); - /** - * All error codes used by the AddIn API. - */ - var ErrorCodes; - (function (ErrorCodes) { - /** - * Only one dialog can be opened at time with the UI namespace functionality. - */ - ErrorCodes["DialogAlreadyOpen"] = "dialog-already-open"; - /** - * The open dialog was closed by the user. - */ - ErrorCodes["DialogClosedByUser"] = "dialog-closed-by-user"; - /** - * An error occurred while attempting to perform a filter operation. - */ - ErrorCodes["FilterCannotBePerformed"] = "filter-cannot-be-performed"; - /** - * An error occurred within the Tableau AddIn API. Contact Tableau Support. - */ - ErrorCodes["InternalError"] = "internal-error"; - /** - * An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales". - */ - ErrorCodes["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - /** - * A dialog must first launch to, and send messages from, the same domain as the parent AddIn. - */ - ErrorCodes["InvalidDomainDialog"] = "invalid-dialog-domain"; - /** - * An invalid date was specified in a method that required a date parameter. - */ - ErrorCodes["InvalidDateParameter"] = "invalid-date-parameter"; - /** - * A filter operation was attempted on a field that does not exist in the data source. - */ - ErrorCodes["InvalidFilterFieldName"] = "invalid-filter-field-name"; - /** - * A filter operation was attempted using a value that is the wrong data type or format. - */ - ErrorCodes["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - /** - * A parameter is not the correct data type or format. The name of the parameter is specified in the Error.message field. - */ - ErrorCodes["InvalidParameter"] = "invalid-parameter"; - /** - * An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field. - */ - ErrorCodes["InvalidSelectionDate"] = "invalid-selection-date"; - /** - * A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source. - */ - ErrorCodes["InvalidSelectionFieldName"] = "invalid-selection-field-name"; - /** - * An invalid value was specified in a Sheet.selectMarksAsync() call. - */ - ErrorCodes["InvalidSelectionValue"] = "invalid-selection-value"; - /** - * A required parameter was not specified, null, or an empty string/array. - */ - ErrorCodes["NullOrEmptyParameter"] = "null-or-empty-parameter"; - /** - * An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener. - */ - ErrorCodes["UnsupportedEventName"] = "unsupported-event-name"; - })(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); - /** - * Type of aggregation on a field. - */ - var FieldAggreationType; - (function (FieldAggreationType) { - FieldAggreationType["Sum"] = "sum"; - FieldAggreationType["Avg"] = "avg"; - FieldAggreationType["Min"] = "min"; - FieldAggreationType["Max"] = "max"; - FieldAggreationType["Stdev"] = "stdev"; - FieldAggreationType["Stdevp"] = "stdevp"; - FieldAggreationType["Var"] = "var"; - FieldAggreationType["Varp"] = "varp"; - FieldAggreationType["Count"] = "count"; - FieldAggreationType["Countd"] = "countd"; - FieldAggreationType["Median"] = "median"; - FieldAggreationType["Attr"] = "attr"; - FieldAggreationType["None"] = "none"; - FieldAggreationType["Year"] = "year"; - FieldAggreationType["Qtr"] = "qtr"; - FieldAggreationType["Month"] = "month"; - FieldAggreationType["Day"] = "day"; - FieldAggreationType["Hour"] = "hour"; - FieldAggreationType["Minute"] = "minute"; - FieldAggreationType["Second"] = "second"; - FieldAggreationType["Week"] = "week"; - FieldAggreationType["Weekday"] = "weekday"; - FieldAggreationType["MomthYear"] = "month-year"; - FieldAggreationType["Mdy"] = "mdy"; - FieldAggreationType["End"] = "end"; - FieldAggreationType["TruncYear"] = "trunc-year"; - FieldAggreationType["TruncQtr"] = "trunc-qtr"; - FieldAggreationType["TruncMonth"] = "trunc-month"; - FieldAggreationType["TruncWeek"] = "trunc-week"; - FieldAggreationType["TruncDay"] = "trunc-day"; - FieldAggreationType["TruncHour"] = "trunc-hour"; - FieldAggreationType["TruncMinute"] = "trunc-minute"; - FieldAggreationType["TruncSecond"] = "trunc-second"; - FieldAggreationType["Quart1"] = "quart1"; - FieldAggreationType["Quart3"] = "quart3"; - FieldAggreationType["Skewness"] = "skewness"; - FieldAggreationType["Kurtosis"] = "kurtosis"; - FieldAggreationType["InOut"] = "in-out"; - FieldAggreationType["User"] = "user"; - })(FieldAggreationType = exports.FieldAggreationType || (exports.FieldAggreationType = {})); - /** - * Role of a field. - */ - var FieldRoleType; - (function (FieldRoleType) { - FieldRoleType["Dimension"] = "dimension"; - FieldRoleType["Measure"] = "measure"; - FieldRoleType["Unknown"] = "unknown"; - })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); - /** - * An enumeration of the valid types of filters that can be applied. - */ - var FilterType; - (function (FilterType) { - FilterType["Categorical"] = "categorical"; - FilterType["Quantitative"] = "quantitative"; - FilterType["Hierarchical"] = "hierarchical"; - FilterType["RelativeDate"] = "relative-data"; - })(FilterType = exports.FilterType || (exports.FilterType = {})); - /** - * The different update types for applying filter - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - /** - * An enumeration describing the different types of allowable values. - * This is used for restricting the domain of a parameter - */ - var AllowableValuesType; - (function (AllowableValuesType) { - AllowableValuesType["All"] = "all"; - AllowableValuesType["List"] = "list"; - AllowableValuesType["Range"] = "range"; - })(AllowableValuesType = exports.AllowableValuesType || (exports.AllowableValuesType = {})); - /** - * The option for specifying which values to include for filtering - * Indicates what to do with null values for a given filter or mark selection call. - */ - var NullOption; - (function (NullOption) { - NullOption["NullValues"] = "null-values"; - NullOption["NonNullValues"] = "non-null-values"; - NullOption["AllValues"] = "all-values"; - })(NullOption = exports.NullOption || (exports.NullOption = {})); - /** - * Date period used in filters and in parameters. - */ - var PeriodType; - (function (PeriodType) { - PeriodType["Years"] = "years"; - PeriodType["Quarters"] = "quarters"; - PeriodType["Months"] = "months"; - PeriodType["Weeks"] = "weeks"; - PeriodType["Days"] = "days"; - PeriodType["Hours"] = "hours"; - PeriodType["Minutes"] = "minutes"; - PeriodType["Seconds"] = "seconds"; - })(PeriodType = exports.PeriodType || (exports.PeriodType = {})); - /** - * The type of sheet a Sheet object represents - */ - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["AddIn"] = "add-in"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - /** - * Represents a certain type of event which can be listened for - */ - var TableauEventType; - (function (TableauEventType) { - /** The selected marks on a visualization has changed */ - TableauEventType["MarkSelectionChanged"] = "mark-selection-changed"; - /** A parameter has had its value modified */ - TableauEventType["ParameterChanged"] = "parameter-changed"; - /** A filter has changed */ - TableauEventType["FilterChanged"] = "filter-changed"; - })(TableauEventType = exports.TableauEventType || (exports.TableauEventType = {})); - - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauSheetEvent_1 = __webpack_require__(20); - var TableauWorksheetEvent = (function (_super) { - __extends(TableauWorksheetEvent, _super); - function TableauWorksheetEvent(type, worksheet) { - var _this = _super.call(this, type, worksheet) || this; - _this._worksheet = worksheet; - return _this; - } - Object.defineProperty(TableauWorksheetEvent.prototype, "worksheet", { - get: function () { - return this._worksheet; - }, - enumerable: true, - configurable: true - }); - return TableauWorksheetEvent; - }(TableauSheetEvent_1.TableauSheetEvent)); - exports.TableauWorksheetEvent = TableauWorksheetEvent; - - -/***/ }, -/* 20 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent_1 = __webpack_require__(21); - var TableauSheetEvent = (function (_super) { - __extends(TableauSheetEvent, _super); - function TableauSheetEvent(type, sheet) { - var _this = _super.call(this, type) || this; - _this._sheet = sheet; - return _this; - } - Object.defineProperty(TableauSheetEvent.prototype, "sheet", { - get: function () { - return this._sheet; - }, - enumerable: true, - configurable: true - }); - return TableauSheetEvent; - }(TableauEvent_1.TableauEvent)); - exports.TableauSheetEvent = TableauSheetEvent; - - -/***/ }, -/* 21 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent = (function () { - function TableauEvent(type) { - this._type = type; - } - Object.defineProperty(TableauEvent.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - return TableauEvent; - }()); - exports.TableauEvent = TableauEvent; - - -/***/ }, -/* 22 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var TableauWorksheetEvent_1 = __webpack_require__(19); - var MarksSelectedEvent = (function (_super) { - __extends(MarksSelectedEvent, _super); - function MarksSelectedEvent(worksheet) { - return _super.call(this, api_external_contract_1.TableauEventType.MarkSelectionChanged, worksheet) || this; - } - MarksSelectedEvent.prototype.getMarksAsync = function () { - return this.worksheet.getSelectedMarksAsync(); - }; - return MarksSelectedEvent; - }(TableauWorksheetEvent_1.TableauWorksheetEvent)); - exports.MarksSelectedEvent = MarksSelectedEvent; - - -/***/ }, -/* 23 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class implements the SingleEventManager interface for a single type of Tableau event - * - * @template TEventType The Tableau event type this class specializes - */ - var SingleEventManagerImpl = (function () { - function SingleEventManagerImpl(eventType) { - this._eventType = eventType; - this._handlers = []; - } - Object.defineProperty(SingleEventManagerImpl.prototype, "eventType", { - get: function () { - return this._eventType; - }, - enumerable: true, - configurable: true - }); - SingleEventManagerImpl.prototype.addEventListener = function (handler) { - var _this = this; - this._handlers.push(handler); - return function () { return _this.removeEventListener(handler); }; - }; - SingleEventManagerImpl.prototype.removeEventListener = function (handler) { - var beforeCount = this._handlers.length; - this._handlers = this._handlers.filter(function (h) { return h !== handler; }); - return beforeCount > this._handlers.length; - }; - SingleEventManagerImpl.prototype.triggerEvent = function (eventGenerator) { - for (var _i = 0, _a = this._handlers; _i < _a.length; _i++) { - var handler = _a[_i]; - try { - var eventModel = eventGenerator(); - handler(eventModel); - } - catch (e) { - // Since this handler could be outside our control, just catch anything it throws and continue on - continue; - } - } - }; - return SingleEventManagerImpl; - }()); - exports.SingleEventManagerImpl = SingleEventManagerImpl; - - -/***/ }, -/* 24 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Defines which type of getData call to make. - */ - var GetDataType; - (function (GetDataType) { - GetDataType["Summary"] = "summary"; - GetDataType["Underlying"] = "underlying"; - })(GetDataType = exports.GetDataType || (exports.GetDataType = {})); - - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var FilterServiceImpl_1 = __webpack_require__(26); - var GetDataServiceImpl_1 = __webpack_require__(32); - var NotificationServiceImpl_1 = __webpack_require__(33); - var ParametersServiceImpl_1 = __webpack_require__(34); - var SelectionServiceImpl_1 = __webpack_require__(39); - var ServiceRegistry_1 = __webpack_require__(38); - function registerAllSharedServices(dispatcher) { - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new GetDataServiceImpl_1.GetDataServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new FilterServiceImpl_1.FilterServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new NotificationServiceImpl_1.NotificationServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new ParametersServiceImpl_1.ParametersServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new SelectionServiceImpl_1.SelectionServiceImpl(dispatcher)); - // TODO - more shared services - } - exports.registerAllSharedServices = registerAllSharedServices; - - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var api_internal_contract_1 = __webpack_require__(27); - var api_utils_1 = __webpack_require__(28); - var ExternalToInternalEnumMappings_1 = __webpack_require__(31); - var FilterServiceImpl = (function () { - function FilterServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(FilterServiceImpl.prototype, "serviceName", { - get: function () { - return "filter-service" /* Filter */; - }, - enumerable: true, - configurable: true - }); - FilterServiceImpl.prototype.applyFilterAsync = function (visualId, fieldName, values, updateType, filterOptions) { - if (!api_utils_1.Param.isValidEnumValue(updateType, api_external_contract_1.FilterUpdateType)) { - throw new Error('Invalid value for parameter FilterUpdateType'); - } - var verb = api_internal_contract_1.VerbId.ApplyCategoricalFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.FilterValues] = values; - parameters[api_internal_contract_1.ParameterId.FilterUpdateType] = updateType; - parameters[api_internal_contract_1.ParameterId.IsExcludeMode] = - (filterOptions === undefined || filterOptions.isExcludeMode === undefined) ? false : filterOptions.isExcludeMode; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var error = response.result; - if (!(error.errorCode === null || error.errorCode === undefined)) { - // TODO: come back and implement error handling logic - throw new Error('Error Applying Filter: ' + error.errorCode); - } - return fieldName; - }); - }; - FilterServiceImpl.prototype.applyRangeFilterAsync = function (visualId, fieldName, filterOptions) { - if (!filterOptions) { - throw new Error('Missing Parameter: RangeFilterOptions'); - } - api_utils_1.Param.verifyRangeParamType(filterOptions.min, filterOptions.max); - var verb = api_internal_contract_1.VerbId.ApplyRangeFilter; - var parameters = {}; - if (filterOptions.min) { - var min = void 0; - if (filterOptions.min instanceof Date) { - min = api_utils_1.Param.serializeDateForPlatform(filterOptions.min); - } - else { - min = filterOptions.min; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMin] = min; - } - if (filterOptions.max) { - var max = void 0; - if (filterOptions.max instanceof Date) { - max = api_utils_1.Param.serializeDateForPlatform(filterOptions.max); - } - else { - max = filterOptions.max; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMax] = max; - } - if (filterOptions.nullOption) { - if (!api_utils_1.Param.isValidEnumValue(filterOptions.nullOption, api_external_contract_1.NullOption)) { - throw new Error('Invalid value for parameter NullOption'); - } - parameters[api_internal_contract_1.ParameterId.FilterRangeNullOption] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.nullOptions.convert(filterOptions.nullOption); - } - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - return this._dispatcher.execute(verb, parameters).then(function (response) { - return fieldName; - }); - }; - FilterServiceImpl.prototype.clearFilterAsync = function (visualId, fieldName) { - var verb = api_internal_contract_1.VerbId.ClearFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - return this._dispatcher.execute(verb, parameters).then(function (resposne) { - return fieldName; - }); - }; - return FilterServiceImpl; - }()); - exports.FilterServiceImpl = FilterServiceImpl; - - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(4)); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - - -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(29); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(30); - exports.Param = Param_1.Param; - - -/***/ }, -/* 29 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(_mappings, _defaultVal) { - this._mappings = _mappings; - this._defaultVal = _defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this._mappings.hasOwnProperty(enumVal)) { - return this._mappings[enumVal]; - } - if (this._defaultVal !== undefined && !throwIfMissing) { - return this._defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - - -/***/ }, -/* 30 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies the value is part of the Enum - * - * String enums are {string : string} dictionaries which are not reverse mappable - * This is an ugly workaround - * @param value value to verify - * @param enumType enum to verify against - */ - /* tslint:disable:no-any */ - Param.isValidEnumValue = function (value, enumType) { - var isValid = false; - Object.keys(enumType).forEach(function (enumKey) { - if (enumType[enumKey] === value.toString()) { - isValid = true; - } - }); - return isValid; - }; - /* tslint:enable:no-any */ - /** - * serializes the date into the format that the server expects. - * @param date the date to serialize - */ - Param.serializeDateForPlatform = function (date) { - var year = date.getUTCFullYear(); - var month = date.getUTCMonth() + 1; - var day = date.getUTCDate(); - var hh = date.getUTCHours(); - var mm = date.getUTCMinutes(); - var sec = date.getUTCSeconds(); - return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; - }; - Param.serializeBooleanForPlatform = function (bool) { - return bool ? 'true' : 'false'; - }; - Param.serializeNumberForPlatform = function (num) { - return num.toString(10); - }; - /** - * Verifies the params min and max for applying range filter - * @param min range min - * @param max range max - */ - /* tslint:disable:no-any */ - Param.verifyRangeParamType = function (min, max) { - /* tslint:enable:no-any */ - if (!min && !max) { - throw new Error('Missing Parameter: At least one of min or max is required'); - } - if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); - } - if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); - } - if (typeof (min) !== typeof (max)) { - throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); - } - }; - /** - * Verifies the input is a number - */ - /* tslint:disable:no-any */ - Param.isTypeNumber = function (input) { - return typeof (input) === 'number' || input instanceof Number; - }; - /* tslint:enable:no-any */ - /** - * Verifies the input is a Date - */ - /* tslint:disable:no-any */ - Param.isTypeDate = function (input) { - return input instanceof Date; - }; - /* tslint:enable:no-any */ - /* tslint:disable-next-line:no-any */ - Param.isTypeString = function (input) { - return typeof (input) === 'string' || input instanceof String; - }; - /* tslint:disable-next-line:no-any */ - Param.isTypeBool = function (input) { - return typeof (input) === 'boolean' || input instanceof Boolean; - }; - /* tslint:disable-next-line:no-any */ - Param.serializeParamterValue = function (value) { - if (Param.isTypeNumber(value)) { - return Param.serializeNumberForPlatform(value); - } - else if (Param.isTypeDate(value)) { - return Param.serializeDateForPlatform(value); - } - else if (Param.isTypeBool(value)) { - return Param.serializeBooleanForPlatform(value); - } - else if (Param.isTypeString(value)) { - return value; - } - else { - throw new Error('Value is invalid for argument: value'); - } - }; - return Param; - }()); - exports.Param = Param; - - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var api_internal_contract_1 = __webpack_require__(27); - var api_utils_1 = __webpack_require__(28); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the external-api-contract to the enums used - * in the internal-api-contract, which developers code against. - */ - var ExternalToInternalEnumMappings = (function () { - function ExternalToInternalEnumMappings() { - } - ExternalToInternalEnumMappings.nullOptions = new api_utils_1.EnumConverter((_a = {}, - _a[api_external_contract_1.NullOption.AllValues] = api_internal_contract_1.NullOption.AllValues, - _a[api_external_contract_1.NullOption.NonNullValues] = api_internal_contract_1.NullOption.NonNullValues, - _a[api_external_contract_1.NullOption.NonNullValues] = api_internal_contract_1.NullOption.NullValues, - _a)); - return ExternalToInternalEnumMappings; - }()); - exports.ExternalToInternalEnumMappings = ExternalToInternalEnumMappings; - var _a; - /* tslint:enable:typedef */ - - -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var api_internal_contract_1 = __webpack_require__(27); - var GetDataModels_1 = __webpack_require__(14); - var GetDataService_1 = __webpack_require__(24); - var GetDataServiceImpl = (function () { - function GetDataServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(GetDataServiceImpl.prototype, "serviceName", { - get: function () { - return "get-data-service" /* GetData */; - }, - enumerable: true, - configurable: true - }); - GetDataServiceImpl.prototype.getUnderlyingDataAsync = function (visualId, getType, ignoreAliases, ignoreSelection, includeAllColumns, maxRows) { - var _this = this; - // Create all of our parameters - var verb = getType === GetDataService_1.GetDataType.Summary ? api_internal_contract_1.VerbId.GetDataSummaryData : api_internal_contract_1.VerbId.GetUnderlyingData; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases; - parameters[api_internal_contract_1.ParameterId.IgnoreSelection] = ignoreSelection; - parameters[api_internal_contract_1.ParameterId.IncludeAllColumns] = includeAllColumns; - parameters[api_internal_contract_1.ParameterId.MaxRows] = maxRows; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var responseData = response.result; - return _this.processResultsTable(responseData.data, responseData.isSummary); - }); - }; - GetDataServiceImpl.prototype.getSelectedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetSelectedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.getHighlightedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetHighlightedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.processResultsTable = function (responseData, isSummary) { - var headers = responseData.headers.map(function (h) { return new GetDataModels_1.Column(h.fieldCaption, api_external_contract_1.DataType.String /*h.DataType*/, h.isReferenced, h.index); }); - var table = responseData.dataTable.map(function (row) { - return row.map(function (cell) { - return new GetDataModels_1.DataValue(cell.value, cell.formattedValue); - }); - }); - return new GetDataModels_1.DataTable(table, headers, table.length, isSummary); - }; - return GetDataServiceImpl; - }()); - exports.GetDataServiceImpl = GetDataServiceImpl; - - -/***/ }, -/* 33 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Registration = (function () { - function Registration(_filterFn, _callbackFn) { - this._filterFn = _filterFn; - this._callbackFn = _callbackFn; - // Nothing Here - } - Registration.prototype.onNotification = function (notificationModel) { - if (this._filterFn(notificationModel)) { - this._callbackFn(notificationModel); - } - }; - return Registration; - }()); - var NotificationServiceImpl = (function () { - function NotificationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - this._handlers = {}; - this.dispatcher.registerNotificationHandler(this.onNotification.bind(this)); - } - Object.defineProperty(NotificationServiceImpl.prototype, "serviceName", { - get: function () { - return "notification-service" /* Notification */; - }, - enumerable: true, - configurable: true - }); - NotificationServiceImpl.prototype.registerHandler = function (id, filterFn, handler) { - var _this = this; - var handlers = this._handlers[id] || new Array(); - var registration = new Registration(filterFn, handler); - handlers.push(registration); - this._handlers[id] = handlers; - return function () { return _this.removeRegistration(id, registration); }; - }; - NotificationServiceImpl.prototype.hasHandlersForNotificationType = function (id) { - return this._handlers.hasOwnProperty(id); - }; - NotificationServiceImpl.prototype.onNotification = function (notification) { - if (!this.hasHandlersForNotificationType(notification.notificationId)) { - return; - } - // Go through and check for all the handlers of this particular notification - this._handlers[notification.notificationId].forEach(function (h) { return h.onNotification(notification.data); }); - }; - NotificationServiceImpl.prototype.removeRegistration = function (id, registration) { - if (!this.hasHandlersForNotificationType(id)) { - return; - } - this._handlers[id] = this._handlers[id].filter(function (reg) { return reg !== registration; }); - }; - return NotificationServiceImpl; - }()); - exports.NotificationServiceImpl = NotificationServiceImpl; - - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(27); - var ParameterImpl_1 = __webpack_require__(35); - var Parameter_1 = __webpack_require__(11); - var ParametersServiceImpl = (function () { - function ParametersServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(ParametersServiceImpl.prototype, "serviceName", { - get: function () { - return "parameters-service" /* Parameters */; - }, - enumerable: true, - configurable: true - }); - ParametersServiceImpl.prototype.getParametersForSheetAsync = function (sheetPath, sheet) { - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.SheetPath] = sheetPath, - _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.GetParametersForSheet, parameters).then(function (response) { - // TODO - Check for error - var result = response.result; - return result.map(function (parameterInfo) { - var impl = new ParameterImpl_1.ParameterImpl(parameterInfo); - return new Parameter_1.Parameter(impl, sheet); - }); - }); - var _a; - }; - ParametersServiceImpl.prototype.changeParameterValueAsync = function (fieldName, newValue) { - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName, - _a[api_internal_contract_1.ParameterId.ParameterValue] = newValue, - _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.ChangeParameterValue, parameters).then(function (response) { - var result = response.result; - return result; - }); - var _a; - }; - ParametersServiceImpl.prototype.findParameterByNameAsync = function (name, sheet) { - return this.findParameterAsync(sheet, name, undefined); - }; - ParametersServiceImpl.prototype.findParameterByGlobalFieldNameAsync = function (fieldName, sheet) { - return this.findParameterAsync(sheet, undefined, fieldName); - }; - ParametersServiceImpl.prototype.findParameterAsync = function (sheet, name, fieldName) { - var parameters = {}; - if (name !== undefined) { - parameters[api_internal_contract_1.ParameterId.ParameterCaption] = name; - } - else if (fieldName !== undefined) { - parameters[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName; - } - else { - throw new Error('Missing require field name or caption'); - } - return this.dispatcher.execute(api_internal_contract_1.VerbId.FindParameter, parameters).then(function (response) { - var instanceOfParameterInfo = function (object) { - return 'fieldName' in object; - }; - // We need to check to see if we got a valid response back again - if (instanceOfParameterInfo(response.result)) { - var result = response.result; - var impl = new ParameterImpl_1.ParameterImpl(result); - return new Parameter_1.Parameter(impl, sheet); - } - else { - return undefined; - } - }); - }; - return ParametersServiceImpl; - }()); - exports.ParametersServiceImpl = ParametersServiceImpl; - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var api_internal_contract_1 = __webpack_require__(27); - var api_utils_1 = __webpack_require__(28); - var InternalToExternalEnumMappings_1 = __webpack_require__(36); - var ParameterChangedEvent_1 = __webpack_require__(37); - var GetDataModels_1 = __webpack_require__(14); - var ServiceRegistry_1 = __webpack_require__(38); - var SingleEventManagerImpl_1 = __webpack_require__(23); - var ParameterImpl = (function () { - function ParameterImpl(parameterInfo) { - this.setParameterInfo(parameterInfo); - } - Object.defineProperty(ParameterImpl.prototype, "name", { - get: function () { - return this._parameterInfo.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "currentValue", { - get: function () { - return new GetDataModels_1.DataValue(this._parameterInfo.currentValue.value, this._parameterInfo.currentValue.formattedValue); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "dataType", { - get: function () { - return InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dataType.convert(this._parameterInfo.dataType); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "allowableValues", { - get: function () { - return this._allowableValues; - }, - enumerable: true, - configurable: true - }); - ParameterImpl.prototype.changeValueAsync = function (newValue) { - var _this = this; - var coercedValue = api_utils_1.Param.serializeParamterValue(newValue); - var parametersService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return parametersService.changeParameterValueAsync(this._globalFieldName, coercedValue).then(function (parameterInfo) { - _this.setParameterInfo(parameterInfo); - return _this.currentValue; - }); - }; - /** - * Helper method which goes through and registers each event type this impl knows about - * with the NotificationService. It returns an array of SingleEventManager objects which - * can then be passed to an EventListenerManager to handle user registration / unregistration. - * - * @param sheet The sheet object which will be included with the event notifications - * @returns {Array} Collection of event managers to pass to an EventListenerManager - */ - ParameterImpl.prototype.initializeEvents = function (sheet) { - var _this = this; - var results = new Array(); - var notificationService; - try { - notificationService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); - } - catch (e) { - // If we don't have this service registered, just return - return results; - } - // Initialize all of the event managers we'll need (one for each event type) - var parameterEvent = new SingleEventManagerImpl_1.SingleEventManagerImpl(api_external_contract_1.TableauEventType.ParameterChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.ParameterChanged, function (model) { - var fieldName = model; - return fieldName === _this._globalFieldName; - }, function (fieldName) { - parameterEvent.triggerEvent(function () { return new ParameterChangedEvent_1.ParameterChangedEvent(fieldName, sheet); }); - }); - results.push(parameterEvent); - return results; - }; - ParameterImpl.prototype.setParameterInfo = function (parameterInfo) { - this._parameterInfo = parameterInfo; - this._globalFieldName = parameterInfo.fieldName; - var type = InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.allowableValues.convert(parameterInfo.allowableValuesType); - var listValues; - var minValue; - var maxValue; - var stepSize; - var dateStepPeriod; - if (type === api_external_contract_1.AllowableValuesType.List) { - var values = parameterInfo.allowableValues || []; - listValues = values.map(function (val) { return new GetDataModels_1.DataValue(val.value, val.formattedValue); }); - } - else if (type === api_external_contract_1.AllowableValuesType.Range) { - minValue = parameterInfo.minValue && new GetDataModels_1.DataValue(parameterInfo.minValue.value, parameterInfo.minValue.formattedValue); - maxValue = parameterInfo.maxValue && new GetDataModels_1.DataValue(parameterInfo.maxValue.value, parameterInfo.maxValue.formattedValue); - stepSize = parameterInfo.stepSize; - dateStepPeriod = parameterInfo.dateStepPeriod && - InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(parameterInfo.dateStepPeriod); - } - this._allowableValues = { - type: type, - allowableValues: listValues, - minValue: minValue, - maxValue: maxValue, - stepSize: stepSize, - dateStepPeriod: dateStepPeriod - }; - }; - return ParameterImpl; - }()); - exports.ParameterImpl = ParameterImpl; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var api_internal_contract_1 = __webpack_require__(27); - var api_utils_1 = __webpack_require__(28); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the internal-api-contract to the enums used - * in the external-api-contract, which developers code against. - */ - var InternalToExternalEnumMappings = (function () { - function InternalToExternalEnumMappings() { - } - InternalToExternalEnumMappings.addInContext = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.AddInContext.Desktop] = api_external_contract_1.AddInContext.Desktop, - _a[api_internal_contract_1.AddInContext.Server] = api_external_contract_1.AddInContext.Server, - _a[api_internal_contract_1.AddInContext.Unknown] = api_external_contract_1.AddInContext.Unknown, - _a)); - InternalToExternalEnumMappings.addInMode = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.AddInMode.Authoring] = api_external_contract_1.AddInMode.Authoring, - _b[api_internal_contract_1.AddInMode.Viewing] = api_external_contract_1.AddInMode.Viewing, - _b[api_internal_contract_1.AddInMode.Unknown] = api_external_contract_1.AddInMode.Unknown, - _b)); - InternalToExternalEnumMappings.sheetType = new api_utils_1.EnumConverter((_c = {}, - _c[api_internal_contract_1.SheetType.Dashboard] = api_external_contract_1.SheetType.Dashboard, - _c[api_internal_contract_1.SheetType.Story] = api_external_contract_1.SheetType.Story, - _c[api_internal_contract_1.SheetType.Worksheet] = api_external_contract_1.SheetType.Worksheet, - _c)); - InternalToExternalEnumMappings.dashboardObjectType = new api_utils_1.EnumConverter((_d = {}, - _d[api_internal_contract_1.DashboardObjectType.Blank] = api_external_contract_1.DashboardObjectType.Blank, - _d[api_internal_contract_1.DashboardObjectType.Image] = api_external_contract_1.DashboardObjectType.Image, - _d[api_internal_contract_1.DashboardObjectType.Legend] = api_external_contract_1.DashboardObjectType.Legend, - _d[api_internal_contract_1.DashboardObjectType.PageFilter] = api_external_contract_1.DashboardObjectType.PageFilter, - _d[api_internal_contract_1.DashboardObjectType.ParameterControl] = api_external_contract_1.DashboardObjectType.ParameterControl, - _d[api_internal_contract_1.DashboardObjectType.QuickFilter] = api_external_contract_1.DashboardObjectType.QuickFilter, - _d[api_internal_contract_1.DashboardObjectType.Text] = api_external_contract_1.DashboardObjectType.Text, - _d[api_internal_contract_1.DashboardObjectType.Title] = api_external_contract_1.DashboardObjectType.Title, - _d[api_internal_contract_1.DashboardObjectType.WebPage] = api_external_contract_1.DashboardObjectType.WebPage, - _d[api_internal_contract_1.DashboardObjectType.Worksheet] = api_external_contract_1.DashboardObjectType.Worksheet, - _d)); - InternalToExternalEnumMappings.dataType = new api_utils_1.EnumConverter((_e = {}, - _e[api_internal_contract_1.DataType.Bool] = api_external_contract_1.DataType.Bool, - _e[api_internal_contract_1.DataType.Date] = api_external_contract_1.DataType.Date, - _e[api_internal_contract_1.DataType.DateTime] = api_external_contract_1.DataType.DateTime, - _e[api_internal_contract_1.DataType.Float] = api_external_contract_1.DataType.Float, - _e[api_internal_contract_1.DataType.Int] = api_external_contract_1.DataType.Int, - _e[api_internal_contract_1.DataType.String] = api_external_contract_1.DataType.String, - _e)); - InternalToExternalEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_f = {}, - _f[api_internal_contract_1.FilterUpdateType.Add] = api_external_contract_1.FilterUpdateType.Add, - _f[api_internal_contract_1.FilterUpdateType.All] = api_external_contract_1.FilterUpdateType.All, - _f[api_internal_contract_1.FilterUpdateType.Remove] = api_external_contract_1.FilterUpdateType.Remove, - _f[api_internal_contract_1.FilterUpdateType.Replace] = api_external_contract_1.FilterUpdateType.Replace, - _f)); - InternalToExternalEnumMappings.allowableValues = new api_utils_1.EnumConverter((_g = {}, - _g[api_internal_contract_1.DomainRestrictionType.All] = api_external_contract_1.AllowableValuesType.All, - _g[api_internal_contract_1.DomainRestrictionType.List] = api_external_contract_1.AllowableValuesType.List, - _g[api_internal_contract_1.DomainRestrictionType.Range] = api_external_contract_1.AllowableValuesType.Range, - _g)); - InternalToExternalEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_h = {}, - _h[api_internal_contract_1.DateStepPeriod.Years] = api_external_contract_1.PeriodType.Years, - _h[api_internal_contract_1.DateStepPeriod.Quarters] = api_external_contract_1.PeriodType.Quarters, - _h[api_internal_contract_1.DateStepPeriod.Months] = api_external_contract_1.PeriodType.Months, - _h[api_internal_contract_1.DateStepPeriod.Weeks] = api_external_contract_1.PeriodType.Weeks, - _h[api_internal_contract_1.DateStepPeriod.Days] = api_external_contract_1.PeriodType.Days, - _h[api_internal_contract_1.DateStepPeriod.Hours] = api_external_contract_1.PeriodType.Hours, - _h[api_internal_contract_1.DateStepPeriod.Minutes] = api_external_contract_1.PeriodType.Minutes, - _h[api_internal_contract_1.DateStepPeriod.Seconds] = api_external_contract_1.PeriodType.Seconds, - _h)); - return InternalToExternalEnumMappings; - }()); - exports.InternalToExternalEnumMappings = InternalToExternalEnumMappings; - var _a, _b, _c, _d, _e, _f, _g, _h; - /* tslint:enable:typedef */ - - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(17); - var ServiceRegistry_1 = __webpack_require__(38); - var TableauSheetEvent_1 = __webpack_require__(20); - var ParameterChangedEvent = (function (_super) { - __extends(ParameterChangedEvent, _super); - function ParameterChangedEvent(_globalFieldName, sheet) { - var _this = _super.call(this, api_external_contract_1.TableauEventType.ParameterChanged, sheet) || this; - _this._globalFieldName = _globalFieldName; - return _this; - } - ParameterChangedEvent.prototype.getParameterAsync = function () { - // Call down to our service to get the parameter back via its field name - var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.findParameterByGlobalFieldNameAsync(this._globalFieldName, this.sheet).then(function (parameter) { - if (parameter === undefined) { - throw new Error('Unable to find parameter'); - } - return parameter; - }); - }; - return ParameterChangedEvent; - }(TableauSheetEvent_1.TableauSheetEvent)); - exports.ParameterChangedEvent = ParameterChangedEvent; - - -/***/ }, -/* 38 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ServiceRegistryImpl = (function () { - function ServiceRegistryImpl() { - this._services = {}; - } - ServiceRegistryImpl.prototype.registerService = function (service) { - this._services[service.serviceName] = service; - }; - ServiceRegistryImpl.prototype.getService = function (serviceName) { - if (!this._services.hasOwnProperty(serviceName)) { - throw new Error("No Service " + serviceName + " is registered"); - } - return this._services[serviceName]; - }; - return ServiceRegistryImpl; - }()); - /** - * static class used for getting access to the single instance - * of the ApiServiceRegistry - */ - var ApiServiceRegistry = (function () { - // Private to avoid anyone constructing this - function ApiServiceRegistry() { - } - Object.defineProperty(ApiServiceRegistry, "instance", { - /** - * Gets the singleton instance of the ServiceRegistry - */ - get: function () { - if (!window.__tableauApiServiceRegistry) { - ApiServiceRegistry.setInstance(new ServiceRegistryImpl()); - } - if (!window.__tableauApiServiceRegistry) { - throw new Error('Assigning service registry failed'); - } - return window.__tableauApiServiceRegistry; - }, - enumerable: true, - configurable: true - }); - /** - * Helper method to override the registry instance. Can be used by unit tests - * - * @param {ServiceRegistry} serviceRegistry The new registry - */ - ApiServiceRegistry.setInstance = function (serviceRegistry) { - window.__tableauApiServiceRegistry = serviceRegistry; - }; - return ApiServiceRegistry; - }()); - exports.ApiServiceRegistry = ApiServiceRegistry; - - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(27); - var SelectionServiceImpl = (function () { - function SelectionServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(SelectionServiceImpl.prototype, "serviceName", { - get: function () { - return "selection-service" /* Selection */; - }, - enumerable: true, - configurable: true - }); - /** - * Method to clear all the selected marks for the given worksheet - * @param visualId - */ - SelectionServiceImpl.prototype.clearSelectedMarksAsync = function (visualId) { - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.ClearSelectedMarks, parameters).then(function (response) { - return; // Expecting an empty model and hence the void response. - }); - var _a; - }; - return SelectionServiceImpl; - }()); - exports.SelectionServiceImpl = SelectionServiceImpl; - - -/***/ }, -/* 40 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(41); - var Dashboard = (function (_super) { - __extends(Dashboard, _super); - function Dashboard(dashboardImpl) { - var _this = _super.call(this, dashboardImpl) || this; - _this.dashboardImpl = dashboardImpl; - dashboardImpl.initializeWithPublicInterfaces(_this); - return _this; - } - Object.defineProperty(Dashboard.prototype, "worksheets", { - get: function () { - return this.dashboardImpl.worksheets; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Dashboard.prototype, "objects", { - get: function () { - return this.dashboardImpl.objects; - }, - enumerable: true, - configurable: true - }); - return Dashboard; - }(Sheet_1.Sheet)); - exports.Dashboard = Dashboard; - - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var Sheet = (function (_super) { - __extends(Sheet, _super); - function Sheet(sheetImpl) { - var _this = _super.call(this) || this; - _this.sheetImpl = sheetImpl; - return _this; - } - Object.defineProperty(Sheet.prototype, "name", { - get: function () { - return this.sheetImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "sheetType", { - get: function () { - return this.sheetImpl.sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "size", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - Sheet.prototype.findParameterAsync = function (parameterName) { - return this.sheetImpl.findParameterAsync(parameterName, this); - }; - Sheet.prototype.getParametersAsync = function () { - return this.sheetImpl.getParametersAsync(this); - }; - return Sheet; - }(api_shared_1.EventListenerManager)); - exports.Sheet = Sheet; - - -/***/ }, -/* 42 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external DashboardContent namespace. - * This does not follow the Impl pattern as DashboardContent is - * currently just a (single) property bag. - */ - var DashboardContent = (function () { - function DashboardContent(_dashboard) { - this._dashboard = _dashboard; - } - Object.defineProperty(DashboardContent.prototype, "dashboard", { - get: function () { - return this._dashboard; - }, - enumerable: true, - configurable: true - }); - return DashboardContent; - }()); - exports.DashboardContent = DashboardContent; - - -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - /** - * Implementation of the external environment namespace. - * Environment does not follow the Impl pattern as it is - * just a property bag. - */ - var Environment = (function () { - function Environment(addInEnvironment) { - this._apiVersion = addInEnvironment.apiVersion; - this._context = api_shared_1.InternalToExternalEnumMappings.addInContext.convert(addInEnvironment.addInContext); - this._language = addInEnvironment.addInLanguage; - this._locale = addInEnvironment.addInLocale; - this._mode = api_shared_1.InternalToExternalEnumMappings.addInMode.convert(addInEnvironment.addInMode); - this._operatingSystem = addInEnvironment.operatingSystem; - this._tableauVersion = addInEnvironment.tableauVersion; - } - Object.defineProperty(Environment.prototype, "apiVersion", { - get: function () { - return this._apiVersion; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "context", { - get: function () { - return this._context; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "language", { - get: function () { - return this._language; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "locale", { - get: function () { - return this._locale; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "mode", { - get: function () { - return this._mode; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "operatingSystem", { - get: function () { - return this._operatingSystem; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "tableauVersion", { - get: function () { - return this._tableauVersion; - }, - enumerable: true, - configurable: true - }); - return Environment; - }()); - exports.Environment = Environment; - - -/***/ }, -/* 44 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external settings namespace. - */ - var Settings = (function () { - function Settings(settingsImpl) { - this.settingsImpl = settingsImpl; - } - Settings.prototype.erase = function (key) { - this.settingsImpl.erase(key); - }; - Settings.prototype.get = function (key) { - return this.settingsImpl.get(key); - }; - Settings.prototype.getAll = function () { - return this.settingsImpl.getAll(); - }; - Object.defineProperty(Settings.prototype, "isModified", { - get: function () { - return this.settingsImpl.isModified; - }, - enumerable: true, - configurable: true - }); - Settings.prototype.saveAsync = function () { - return this.settingsImpl.saveAsync(); - }; - Settings.prototype.set = function (key, value) { - this.settingsImpl.set(key, value); - }; - return Settings; - }()); - exports.Settings = Settings; - - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var InitializationServiceImpl_1 = __webpack_require__(46); - var SettingsServiceImpl_1 = __webpack_require__(47); - function registerAllAddInServices(dispatcher) { - api_shared_1.ApiServiceRegistry.instance.registerService(new InitializationServiceImpl_1.InitializationServiceImpl(dispatcher)); - api_shared_1.ApiServiceRegistry.instance.registerService(new SettingsServiceImpl_1.SettingsServiceImpl(dispatcher)); - } - exports.registerAllAddInServices = registerAllAddInServices; - - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var InitializationServiceImpl = (function () { - function InitializationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(InitializationServiceImpl.prototype, "serviceName", { - get: function () { - return "InitializationService" /* InitializationService */; - }, - enumerable: true, - configurable: true - }); - InitializationServiceImpl.prototype.initializeDashboardAddInAsync = function () { - // We don't need any parameters for this call because they are added in for us by the dispatcher - return this.dispatcher.execute(api_internal_contract_1.VerbId.InitializeAddIn, {}).then(function (response) { - // TODO - Validate return value - var result = response.result; - return result; - }); - }; - return InitializationServiceImpl; - }()); - exports.InitializationServiceImpl = InitializationServiceImpl; - - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(3); - var SettingsServiceImpl = (function () { - function SettingsServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(SettingsServiceImpl.prototype, "serviceName", { - get: function () { - return "SettingsService" /* SettingsService */; - }, - enumerable: true, - configurable: true - }); - SettingsServiceImpl.prototype.saveSettingsAsync = function (settings) { - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.SettingsValues] = settings; - return this.dispatcher.execute(api_internal_contract_1.VerbId.SaveAddInSettings, parameters).then(function (value) { - var result = value.result; - if (!result || !result.settingsValues) { - throw new Error('Internal error saving settings.'); - } - return (result.settingsValues); - }); - }; - return SettingsServiceImpl; - }()); - exports.SettingsServiceImpl = SettingsServiceImpl; - - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Represents the current version of the addin library - */ - var VersionNumber = (function () { - // private constructor so everyone uses the singleton instance - function VersionNumber(versionString) { - var parts = versionString.split('.').map(function (p) { return parseInt(p, 10); }); - if (parts.length !== 3) { - throw new Error('Invalid version number: ' + versionString); - } - this._major = parts[0]; - this._minor = parts[1]; - this._fix = parts[2]; - } - Object.defineProperty(VersionNumber, "Instance", { - /** - * Gets the singleton instance of the version number. - */ - get: function () { - return VersionNumber._instance; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "major", { - get: function () { - return this._major; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "minor", { - get: function () { - return this._minor; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "fix", { - get: function () { - return this._fix; - }, - enumerable: true, - configurable: true - }); - // Using some webpack tricks, we can inject this version into our code (kinda like c++ preprocessor stuff) - VersionNumber._instance = new VersionNumber(("0.2.0")); - return VersionNumber; - }()); - exports.VersionNumber = VersionNumber; - - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(50); - var api_internal_contract_1 = __webpack_require__(3); - var api_shared_1 = __webpack_require__(9); - var DashboardObject_1 = __webpack_require__(51); - var Worksheet_1 = __webpack_require__(52); - var SheetImpl_1 = __webpack_require__(53); - var SheetInfoImpl_1 = __webpack_require__(54); - var WorksheetImpl_1 = __webpack_require__(55); - var DashboardImpl = (function (_super) { - __extends(DashboardImpl, _super); - function DashboardImpl(_info, _sheetPath) { - var _this = _super.call(this, new SheetInfoImpl_1.SheetInfoImpl(_info.name, Contract.SheetType.Dashboard)) || this; - _this._info = _info; - _this._sheetPath = _sheetPath; - return _this; - } - Object.defineProperty(DashboardImpl.prototype, "worksheets", { - get: function () { - return this._worksheets; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardImpl.prototype, "objects", { - get: function () { - return this._objects; - }, - enumerable: true, - configurable: true - }); - DashboardImpl.prototype.initializeWithPublicInterfaces = function (dashboard) { - this._worksheets = new Array(); - this._objects = new Array(); - // Process all the zones which are contained in this dashboard - for (var _i = 0, _a = this._info.zones; _i < _a.length; _i++) { - var zone = _a[_i]; - var worksheet = undefined; - if (zone.zoneType === api_internal_contract_1.DashboardObjectType.Worksheet) { - var sheetInfo = new SheetInfoImpl_1.SheetInfoImpl(zone.name, Contract.SheetType.Worksheet); - var vizId = { - worksheet: zone.name, - dashboard: this._info.name, - storyboard: this._sheetPath.storyboard, - flipboardZoneID: this._sheetPath.flipboardZoneID, - storyPointID: this._sheetPath.storyPointID - }; - var worksheetImpl = new WorksheetImpl_1.WorksheetImpl(sheetInfo, vizId); - worksheet = new Worksheet_1.Worksheet(worksheetImpl); - this._worksheets.push(worksheet); - } - var zonePoint = new api_shared_1.Point(zone.x, zone.y); - var zoneSize = new api_shared_1.Size(zone.height, zone.width); - var dashboardObject = new DashboardObject_1.DashboardObject(dashboard, zone.zoneType, zonePoint, zoneSize, worksheet); - this._objects.push(dashboardObject); - } - }; - return DashboardImpl; - }(SheetImpl_1.SheetImpl)); - exports.DashboardImpl = DashboardImpl; - - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(18)); - - -/***/ }, -/* 51 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the dashboard objects - the zones in a dashboard. - * This does not follow the Impl pattern as it is just a property bag. - */ - var DashboardObject = (function () { - function DashboardObject(_dashboard, _type, _position, _size, _worksheet) { - this._dashboard = _dashboard; - this._type = _type; - this._position = _position; - this._size = _size; - this._worksheet = _worksheet; - } - Object.defineProperty(DashboardObject.prototype, "dashboard", { - get: function () { - return this._dashboard; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "position", { - get: function () { - return this._position; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "size", { - get: function () { - return this._size; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "worksheet", { - get: function () { - return this._worksheet; - }, - enumerable: true, - configurable: true - }); - return DashboardObject; - }()); - exports.DashboardObject = DashboardObject; - - -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(41); - var Worksheet = (function (_super) { - __extends(Worksheet, _super); - function Worksheet(worksheetImpl) { - var _this = _super.call(this, worksheetImpl) || this; - _this._worksheetImpl = worksheetImpl; - // Call to initialize events and then call down to the event listener manager to handle things - _this._worksheetImpl.initializeEvents(_this).forEach(function (e) { return _this.addNewEventType(e); }); - return _this; - } - Object.defineProperty(Worksheet.prototype, "parentDashboard", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - Worksheet.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - return this._worksheetImpl.applyFilterAsync(fieldName, values, updateType, options); - }; - Worksheet.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - return this._worksheetImpl.applyRangeFilterAsync(fieldName, filterOptions); - }; - Worksheet.prototype.clearFilterAsync = function (fieldName) { - return this._worksheetImpl.clearFilterAsync(fieldName); - }; - Worksheet.prototype.getFiltersAsync = function () { - throw new Error('API call not yet implemented'); - }; - Worksheet.prototype.getSelectedMarksAsync = function () { - return this._worksheetImpl.getSelectedMarksAsync(); - }; - Worksheet.prototype.getHighlightedMarksAsync = function () { - return this._worksheetImpl.getHighlightedMarksAsync(); - }; - Worksheet.prototype.getSummaryDataAsync = function (options) { - return this._worksheetImpl.getSummaryDataAsync(options); - }; - Worksheet.prototype.getUnderlyingDataAsync = function (options) { - return this._worksheetImpl.getUnderlyingDataAsync(options); - }; - Worksheet.prototype.clearSelectedMarksAsync = function () { - return this._worksheetImpl.clearSelectedMarksAsync(); - }; - return Worksheet; - }(Sheet_1.Sheet)); - exports.Worksheet = Worksheet; - - -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var SheetImpl = (function () { - function SheetImpl(sheetInfoImpl) { - this.sheetInfoImpl = sheetInfoImpl; - } - Object.defineProperty(SheetImpl.prototype, "name", { - get: function () { - return this.sheetInfoImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "sheetType", { - get: function () { - return this.sheetInfoImpl.sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "sheetPath", { - get: function () { - return this.sheetInfoImpl.sheetPath; - }, - enumerable: true, - configurable: true - }); - SheetImpl.prototype.findParameterAsync = function (parameterName, sheet) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.findParameterByNameAsync(parameterName, sheet); - }; - SheetImpl.prototype.getParametersAsync = function (sheet) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.getParametersForSheetAsync(this.sheetPath, sheet); - }; - return SheetImpl; - }()); - exports.SheetImpl = SheetImpl; - - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(50); - var SheetInfoImpl = (function () { - function SheetInfoImpl(_name, _sheetType - // TODO: ZoneId - // TODO: SheetSize - ) { - this._name = _name; - this._sheetType = _sheetType; - } - Object.defineProperty(SheetInfoImpl.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetInfoImpl.prototype, "sheetType", { - get: function () { - return this._sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetInfoImpl.prototype, "sheetPath", { - get: function () { - return { - sheetName: this.name, - isDashboard: this.sheetType === api_external_contract_1.SheetType.Dashboard - // TODO - Stories - }; - }, - enumerable: true, - configurable: true - }); - return SheetInfoImpl; - }()); - exports.SheetInfoImpl = SheetInfoImpl; - - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(50); - var api_internal_contract_1 = __webpack_require__(3); - var api_shared_1 = __webpack_require__(9); - var SheetImpl_1 = __webpack_require__(53); - var visualIdsAreEqual = function (a, b) { - return a && b && - a.worksheet === b.worksheet && - a.dashboard === b.dashboard && - a.storyboard === b.storyboard && - a.storyPointID === b.storyPointID && - a.flipboardZoneID === b.flipboardZoneID; - }; - var WorksheetImpl = (function (_super) { - __extends(WorksheetImpl, _super); - function WorksheetImpl(sheetInfoImpl, _visualId) { - var _this = _super.call(this, sheetInfoImpl) || this; - _this._visualId = _visualId; - return _this; - } - /** - * Helper method which goes through and registers each event type this impl knows about - * with the NotificationService. It returns an array of SingleEventManager objects which - * can then be passed to an EventListenerManager to handle user registration / unregistration. - * - * @param {Worksheet} worksheet The worksheet object which will be included with the event notifications - * @returns {Array} Collection of event managers to pass to an EventListenerManager - */ - WorksheetImpl.prototype.initializeEvents = function (worksheet) { - var _this = this; - var results = new Array(); - var notificationService; - try { - notificationService = api_shared_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); - } - catch (e) { - // If we don't have this service registered, just return - return results; - } - // Initialize all of the event managers we'll need (one for each event type) - var marksEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.MarkSelectionChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.SelectedMarksChanged, function (model) { - var visualId = model; - return visualIdsAreEqual(visualId, _this.visualId); - }, function (viz) { - marksEvent.triggerEvent(function () { return new api_shared_1.MarksSelectedEvent(worksheet); }); - }); - var filterEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.FilterChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.FilterChanged, function (model) { - var filterEventResponse = model; - return _this.visualId.worksheet === filterEventResponse.visualId.worksheet; - }, function (event) { - filterEvent.triggerEvent(function () { return new api_shared_1.FilterChangedEvent(worksheet, event.fieldName); }); - }); - results.push(marksEvent); - results.push(filterEvent); - // TODO - other event types - return results; - }; - Object.defineProperty(WorksheetImpl.prototype, "visualId", { - get: function () { - return this._visualId; - }, - enumerable: true, - configurable: true - }); - WorksheetImpl.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyFilterAsync(this.visualId, fieldName, values, updateType, options); - }; - WorksheetImpl.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyRangeFilterAsync(this.visualId, fieldName, filterOptions); - }; - WorksheetImpl.prototype.clearFilterAsync = function (fieldName) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.clearFilterAsync(this.visualId, fieldName); - }; - WorksheetImpl.prototype.getSelectedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getSelectedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getHighlightedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getHighlightedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getSummaryDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Summary, !!options.ignoreAliases, !!options.ignoreSelection, true, 0); - }; - WorksheetImpl.prototype.getUnderlyingDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Underlying, !!options.ignoreAliases, !!options.ignoreSelection, !!options.includeAllColumns, options.maxRows || 0); - }; - WorksheetImpl.prototype.clearSelectedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); - return service.clearSelectedMarksAsync(this.visualId); - }; - return WorksheetImpl; - }(SheetImpl_1.SheetImpl)); - exports.WorksheetImpl = WorksheetImpl; - - -/***/ }, -/* 56 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(9); - var api_utils_1 = __webpack_require__(57); - var SettingsImpl = (function () { - function SettingsImpl(settingsInfo) { - // Since promises can't be introspected for state, keep a variable that - // indicates a save is in progress, so that set/erase can't be called during a save. - this._saveInProgress = false; - this.initializeSettings(settingsInfo); - } - SettingsImpl.prototype.erase = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - // Only make a modification if we have the key already - if (this._currentSettings[key]) { - this.verifySettingsAreUnlocked(); - delete this._currentSettings[key]; - this._isModified = true; - } - }; - SettingsImpl.prototype.get = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - return this._currentSettings[key]; - }; - SettingsImpl.prototype.getAll = function () { - // Returns a mutable copy of the settings - return Object.assign({}, this._currentSettings); - }; - Object.defineProperty(SettingsImpl.prototype, "isModified", { - get: function () { - return this._isModified; - }, - enumerable: true, - configurable: true - }); - SettingsImpl.prototype.saveAsync = function () { - var _this = this; - this.verifySettingsAreUnlocked(); - // Just resolve immediately if settings are unchanged - if (!this._isModified) { - return Promise.resolve(this._currentSettings); - } - this._saveInProgress = true; - // Use the settings service to save settings to twb - var settingsService = api_shared_1.ApiServiceRegistry.instance.getService("SettingsService" /* SettingsService */); - return settingsService.saveSettingsAsync(this._currentSettings).then(function (newSettings) { - _this._saveInProgress = false; - _this._isModified = false; - Object.assign(_this._currentSettings, newSettings); - return newSettings; - }); - }; - SettingsImpl.prototype.set = function (key, value) { - api_utils_1.Param.verifyValue(key, 'key'); // Key shouldn't be an empty string. - api_utils_1.Param.verifyString(value, 'value'); // Empty string value is allowed. - this.verifySettingsAreUnlocked(); - this._currentSettings[key] = value; - this._isModified = true; - }; - SettingsImpl.prototype.initializeSettings = function (settingsInfo) { - api_utils_1.Param.verifyValue(settingsInfo, 'settingsInfo'); - api_utils_1.Param.verifyValue(settingsInfo.settingsValues, 'settingsInfo.SettingsValues'); - this._currentSettings = settingsInfo.settingsValues; - // Reset the isModified flag - this._isModified = false; - }; - /** - * This helper should be called before any local update to this.currentSettings. - * Checks if a current save call is still in progress and throws an error if so. - */ - SettingsImpl.prototype.verifySettingsAreUnlocked = function () { - if (this._saveInProgress) { - throw new Error('Async Save is in progress, updating settings is not allowed.'); - } - }; - return SettingsImpl; - }()); - exports.SettingsImpl = SettingsImpl; - - -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(29); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(30); - exports.Param = Param_1.Param; - - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA4NzkwYzFmYTZjNTg2YjA5NDIyZSIsIndlYnBhY2s6Ly8vLi4vc3JjL0FkZEluQXBpLnRzIiwid2VicGFjazovLy8uLi9zcmMvRXh0ZXJuYWxOYW1lc3BhY2VzL0FkZEluLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvQWRkSW5JbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvQXBpSW50ZXJuYWxDb250cmFjdC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9FbnVtcy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvTm90aWZpY2F0aW9ucy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9QYXJhbWV0ZXJzLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL1ZlcmJzLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0FwaVNoYXJlZC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudExpc3RlbmVyTWFuYWdlci50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9QYXJhbWV0ZXIudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvUG9pbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2l6ZS50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Nb2RlbHMvR2V0RGF0YU1vZGVscy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9GaWx0ZXJDaGFuZ2VkRXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L3NyYy9BcGlFeHRlcm5hbENvbnRyYWN0LnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvVGFibGVhdVNoZWV0RXZlbnQudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVFdmVudC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvTWFya3NTZWxlY3RlZEV2ZW50LnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvR2V0RGF0YVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0ZpbHRlclNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvQXBpVXRpbHMudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL3NyYy9FbnVtQ29udmVydGVyLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvUGFyYW0udHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRW51bU1hcHBpbmdzL0V4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1BhcmFtZXRlckltcGwudHMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FdmVudHMvUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LnRzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeS50cyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvRGFzaGJvYXJkLnRzIiwid2VicGFjazovLy8uLi9zcmMvU2hlZXQudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9FeHRlcm5hbE5hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9TZXR0aW5ncy50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcy50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1NlcnZpY2VzL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1NlcnZpY2VzL0ltcGwvU2V0dGluZ3NTZXJ2aWNlSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL1ZlcnNpb25OdW1iZXIudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9JbnRlcm5hbC9EYXNoYm9hcmRJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvRGFzaGJvYXJkT2JqZWN0LnRzIiwid2VicGFjazovLy8uLi9zcmMvV29ya3NoZWV0LnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvU2hlZXRJbXBsLnRzIiwid2VicGFjazovLy8uLi9zcmMvSW50ZXJuYWwvU2hlZXRJbmZvSW1wbC50cyIsIndlYnBhY2s6Ly8vLi4vc3JjL0ludGVybmFsL1dvcmtzaGVldEltcGwudHMiLCJ3ZWJwYWNrOi8vLy4uL3NyYy9JbnRlcm5hbC9TZXR0aW5nc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQ3RDQTs7OztJQUlHOztBQUVILDJGQUEwRjtBQUMxRiw2RkFBNEY7QUFDNUYsbUJBQWtCO0FBRWxCLHNDQUFtRDtBQUNuRCwwQ0FBaUQ7QUFFakQsS0FBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUM7QUFDckIsY0FBSyxHQUFHLElBQUksYUFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTFDLGdCQUFlO0FBQ2YsdURBSXdDO0FBSHRDLG9FQUFnQjtBQUNoQix3REFBVTtBQUNWLG9FQUFnQjs7Ozs7Ozs7O0FDaEJsQjs7SUFFRztBQUNIO0tBQ0UsZUFBMkIsU0FBb0I7U0FBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztTQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztLQUM3QixDQUFDO0tBRUQsc0JBQVcsbUNBQWdCO2NBQTNCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7U0FDekMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBVztjQUF0QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztTQUNwQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDJCQUFRO2NBQW5CO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQ2pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcscUJBQUU7Y0FBYjthQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNsRCxDQUFDOzs7UUFBQTtLQUVNLCtCQUFlLEdBQXRCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDMUMsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDO0FBeEJZLHVCQUFLOzs7Ozs7Ozs7QUNQbEIsc0RBTXdDO0FBQ3hDLDJDQUFvRjtBQUVwRiwyQ0FBeUM7QUFDekMsa0RBQTBFO0FBQzFFLDZDQUFnRTtBQUNoRSwwQ0FBMEQ7QUFHMUQsMERBQWdGO0FBQ2hGLCtDQUFpRDtBQUNqRCwrQ0FBZ0Q7QUFDaEQsOENBQThDO0FBRTlDO0tBQUE7S0F3REEsQ0FBQztLQWpEUSxtQ0FBZSxHQUF0QjtTQUFBLGlCQWVDO1NBZEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO2FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLE9BQU8sQ0FBTyxVQUFDLE9BQU8sRUFBRSxNQUFNO2lCQUM5RCx1R0FBdUc7aUJBQ3ZHLEVBQUUsQ0FBQyxDQUFDLG1EQUEyQixDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNqRSx1Q0FBdUM7cUJBQ3ZDLElBQU0sd0JBQXdCLEdBQUcsbURBQTJCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztxQkFDM0Ysd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBUSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRyxDQUFDO2lCQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNOLE1BQU0sQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO2lCQUNoRSxDQUFDO2FBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDTCxDQUFDO1NBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztLQUNyQyxDQUFDO0tBRU8sd0NBQW9CLEdBQTVCLFVBQTZCLFVBQWlDO1NBQTlELGlCQW9CQztTQW5CQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsNkJBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUVwRCxvRkFBb0Y7U0FDcEYsc0NBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEMsbURBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FFckMsNERBQTREO1NBQzVELElBQU0scUJBQXFCLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUscURBQzFCLENBQUM7U0FFM0MsTUFBTSxDQUFDLHFCQUFxQixDQUFDLDZCQUE2QixFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFNO2FBQ3RFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztpQkFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2FBQ2hELENBQUM7YUFFRCxLQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMvSCxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUM1RCxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FFTyw4Q0FBMEIsR0FBbEMsVUFBbUMsSUFBd0IsRUFBRSxTQUFvQjtTQUMvRSxJQUFNLGFBQWEsR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ3pELElBQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvQyxNQUFNLENBQUMsSUFBSSxtQ0FBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN6QyxDQUFDO0tBRU8sc0NBQWtCLEdBQTFCLFVBQTJCLFlBQStCO1NBQ3hELElBQU0sWUFBWSxHQUFHLElBQUksMkJBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwRCxNQUFNLENBQUMsSUFBSSxtQkFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQ3BDLENBQUM7S0FDSCxnQkFBQztBQUFELEVBQUM7QUF4RFksK0JBQVM7Ozs7Ozs7O0FDcEJ0Qjs7OztJQUlHOzs7OztBQUVILGtDQUFrQztBQUNsQyxrQ0FBa0Q7QUFFbEQsa0NBQTBDO0FBQzFDLGtDQUF1QztBQUN2QyxrQ0FBa0M7Ozs7Ozs7OztBQ1hsQyxLQUFZLFlBSVg7QUFKRCxZQUFZLFlBQVk7S0FDdEIsbUNBQW1CO0tBQ25CLGlDQUFpQjtLQUNqQixtQ0FBbUI7QUFDckIsRUFBQyxFQUpXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBSXZCO0FBRUQsS0FBWSxTQUlYO0FBSkQsWUFBWSxTQUFTO0tBQ25CLG9DQUF1QjtLQUN2QixnQ0FBbUI7S0FDbkIsZ0NBQW1CO0FBQ3JCLEVBQUMsRUFKVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUlwQjtBQUVELEtBQVksbUJBWVg7QUFaRCxZQUFZLG1CQUFtQjtLQUM3QixzQ0FBZTtLQUNmLDhDQUF1QjtLQUN2QixtREFBNEI7S0FDNUIsNkRBQXNDO0tBQ3RDLGlEQUEwQjtLQUMxQix3Q0FBaUI7S0FDakIsc0NBQWU7S0FDZixvQ0FBYTtLQUNiLHNDQUFlO0tBQ2YsMkNBQW9CO0tBQ3BCLHNDQUFlO0FBQ2pCLEVBQUMsRUFaVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQVk5QjtBQUVELEtBQVksUUFRWDtBQVJELFlBQVksUUFBUTtLQUNsQiw2QkFBaUI7S0FDakIsdUJBQVc7S0FDWCwyQkFBZTtLQUNmLHlCQUFhO0tBQ2IseUJBQWE7S0FDYixrQ0FBc0I7S0FDdEIsK0JBQW1CO0FBQ3JCLEVBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQUVELEtBQVksZUFLWDtBQUxELFlBQVksZUFBZTtLQUN6QixvQ0FBaUI7S0FDakIsb0NBQWlCO0tBQ2pCLGdDQUFhO0tBQ2Isc0NBQW1CO0FBQ3JCLEVBQUMsRUFMVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQUsxQjtBQUVELEtBQVksU0FLWDtBQUxELFlBQVksU0FBUztLQUNuQix5Q0FBNEI7S0FDNUIsMkVBQThEO0tBQzlELGdFQUFtRDtLQUNuRCxtRUFBc0Q7QUFDeEQsRUFBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGdCQUtYO0FBTEQsWUFBWSxnQkFBZ0I7S0FDMUIsK0JBQVc7S0FDWCwrQkFBVztLQUNYLHVDQUFtQjtLQUNuQixxQ0FBaUI7QUFDbkIsRUFBQyxFQUxXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBSzNCO0FBRUQsS0FBWSxTQUtYO0FBTEQsWUFBWSxTQUFTO0tBQ25CLG9DQUF1QjtLQUN2Qiw0QkFBZTtLQUNmLG9DQUF1QjtLQUN2Qiw0QkFBZTtBQUNqQixFQUFDLEVBTFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFLcEI7QUFFRCxLQUFZLHFCQUlYO0FBSkQsWUFBWSxxQkFBcUI7S0FDL0Isb0NBQVc7S0FDWCxzQ0FBYTtLQUNiLHdDQUFlO0FBQ2pCLEVBQUMsRUFKVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUloQztBQUVELEtBQVksY0FTWDtBQVRELFlBQVksY0FBYztLQUN4QixpQ0FBZTtLQUNmLHVDQUFxQjtLQUNyQixtQ0FBaUI7S0FDakIsaUNBQWU7S0FDZiwrQkFBYTtLQUNiLGlDQUFlO0tBQ2YscUNBQW1CO0tBQ25CLHFDQUFtQjtBQUNyQixFQUFDLEVBVFcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFTekI7QUFFRDs7SUFFRztBQUNILEtBQVksVUFJWDtBQUpELFlBQVksVUFBVTtLQUNwQix1Q0FBeUI7S0FDekIsNkNBQStCO0tBQy9CLHFDQUF1QjtBQUN6QixFQUFDLEVBSlcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFJckI7Ozs7Ozs7OztBQzVERCxLQUFpQiwyQkFBMkIsQ0FZM0M7QUFaRCxZQUFpQiwyQkFBMkI7S0FDMUM7U0FDRSxNQUFNLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDO0tBQzNDLENBQUM7S0FGZSx1REFBMkIsOEJBRTFDO0tBRUQ7U0FDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLDJCQUEyQixFQUFFLENBQUM7S0FDckUsQ0FBQztLQUZlLDBEQUE4QixpQ0FFN0M7S0FFRCxxQ0FBNEMsVUFBMEM7U0FDcEYsTUFBTSxDQUFDLDBCQUEwQixHQUFHLFVBQVUsQ0FBQztLQUNqRCxDQUFDO0tBRmUsdURBQTJCLDhCQUUxQztBQUNILEVBQUMsRUFaZ0IsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFZM0M7Ozs7Ozs7OztBQzNDRCxLQUFZLGNBSVg7QUFKRCxZQUFZLGNBQWM7S0FDeEIsaUVBQStDO0tBQy9DLHdEQUFzQztLQUN0QyxrREFBZ0M7QUFDbEMsRUFBQyxFQUpXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBSXpCOzs7Ozs7Ozs7QUNKRCxLQUFZLFdBaUNYO0FBakNELFlBQVksV0FBVztLQUNyQiw4Q0FBK0I7S0FDL0IsMkRBQTRDO0tBQzVDLHlEQUEwQztLQUMxQyxxQ0FBc0I7S0FDdEIsdUNBQXdCO0tBQ3hCLCtDQUFnQztLQUNoQyxtREFBb0M7S0FDcEMsd0RBQXlDO0tBQ3pDLG1DQUFvQjtLQUNwQiw0REFBNkM7S0FDN0MsMkVBQTREO0tBQzVELGlEQUFrQztLQUNsQyw2Q0FBOEI7S0FDOUIsbURBQW9DO0tBRW5DLGdCQUFnQjtLQUNqQix1Q0FBd0I7S0FDeEIsNkNBQThCO0tBQzlCLHNEQUF1QztLQUN2QywyQ0FBNEI7S0FDNUIsa0RBQW1DO0tBQ25DLGtEQUFtQztLQUNuQyxpRUFBa0Q7S0FFbEQsK0NBQWdDO0tBQ2hDLDBDQUEyQjtLQUUzQiwrQ0FBZ0M7S0FDaEMsaURBQWtDO0tBQ2xDLHFEQUFzQztLQUN0QywwREFBMkM7S0FDM0MsaURBQWtDO0FBQ3BDLEVBQUMsRUFqQ1csV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFpQ3RCOzs7Ozs7Ozs7QUNqQ0QsOEZBQTZGO0FBQzdGLEtBQVksTUFjWDtBQWRELFlBQVksTUFBTTtLQUNoQix1REFBNkM7S0FDN0MsMkNBQWlDO0tBQ2pDLHNDQUE0QjtLQUM1QiwrQ0FBcUM7S0FDckMsaURBQXVDO0tBQ3ZDLG1EQUF5QztLQUN6QyxvREFBMEM7S0FDMUMsaURBQXVDO0tBQ3ZDLHVEQUE2QztLQUM3Qyw0REFBa0Q7S0FDbEQsMENBQWdDO0tBQ2hDLHlEQUErQztLQUMvQyxxREFBMkM7QUFDN0MsRUFBQyxFQWRXLE1BQU0sR0FBTixjQUFNLEtBQU4sY0FBTSxRQWNqQjs7Ozs7Ozs7QUNmRDs7OztJQUlHOzs7OztBQUVILG1DQUF1QztBQUN2QyxtQ0FBNEI7QUFDNUIsdUNBQWdDO0FBQXZCLDhCQUFLO0FBRWQsc0NBQThCO0FBQXJCLDJCQUFJO0FBQ2IsbUNBQXVDO0FBQ3ZDLG1DQUErQztBQUMvQyxtQ0FBNEM7QUFDNUMsbUNBQTRDO0FBQzVDLG1DQUFzQztBQUN0QyxtQ0FBMkM7QUFDM0MsbUNBQStDO0FBQy9DLG1DQUFrRDtBQUNsRCxtQ0FBMEM7QUFJMUMsbUNBQXFEO0FBRXJELG1DQUEyQztBQUMzQyxtQ0FBOEQ7Ozs7Ozs7OztBQ2pCOUQ7OztJQUdHO0FBQ0g7S0FHRTtTQUNFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7S0FDbkMsQ0FBQztLQUVNLCtDQUFnQixHQUF2QixVQUF3QixTQUEyQixFQUFFLE9BQThCO1NBQ2pGLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBNEIsU0FBVyxDQUFDLENBQUM7U0FDM0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUUsQ0FBQztLQUVNLGtEQUFtQixHQUExQixVQUEyQixTQUEyQixFQUFFLE9BQThCO1NBQ3BGLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBNEIsU0FBVyxDQUFDLENBQUM7U0FDM0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDN0UsQ0FBQztLQUVTLDhDQUFlLEdBQXpCLFVBQTBCLFlBQWdDO1NBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsWUFBWSxDQUFDO0tBQ3JFLENBQUM7S0FDSCwyQkFBQztBQUFELEVBQUM7QUExQlkscURBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTGpDLHNEQUE4RDtBQUc5RDs7O0lBR0c7QUFDSDtLQUErQiw2QkFBb0I7S0FDakQsbUJBQTJCLGFBQTRCLEVBQUUsS0FBb0I7U0FBN0UsWUFDRSxpQkFBTyxTQUlSO1NBTDBCLG1CQUFhLEdBQWIsYUFBYSxDQUFlO1NBR3JELCtDQUErQztTQUMvQyxLQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFDLElBQUksWUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDOztLQUNuRixDQUFDO0tBRUQsc0JBQVcsMkJBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG1DQUFZO2NBQXZCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1NBQ3pDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7U0FDckMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxzQ0FBZTtjQUExQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztTQUM1QyxDQUFDOzs7UUFBQTtLQUVNLG9DQUFnQixHQUF2QixVQUF3QixRQUEwQztTQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN2RCxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDLENBM0I4QiwyQ0FBb0IsR0EyQmxEO0FBM0JZLCtCQUFTOzs7Ozs7Ozs7QUNidEI7S0FDRSxlQUEyQixFQUFVLEVBQVUsRUFBVTtTQUE5QixPQUFFLEdBQUYsRUFBRSxDQUFRO1NBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBUTtLQUFJLENBQUM7S0FFOUQsc0JBQVcsb0JBQUM7Y0FBWjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0JBQUM7Y0FBWjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2pCLENBQUM7OztRQUFBO0tBQ0gsWUFBQztBQUFELEVBQUM7QUFWWSx1QkFBSzs7Ozs7Ozs7O0FDQWxCO0tBQ0UsY0FBMkIsT0FBZSxFQUFVLE1BQWM7U0FBdkMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtTQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7S0FBSSxDQUFDO0tBRXZFLHNCQUFXLHdCQUFNO2NBQWpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1QkFBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBQ0gsV0FBQztBQUFELEVBQUM7QUFWWSxxQkFBSTs7Ozs7Ozs7O0FDS2pCO0tBR0UsbUJBQ1UsS0FBc0MsRUFDdEMsUUFBK0IsRUFDL0IsY0FBc0IsRUFDdEIsY0FBdUI7U0FIdkIsVUFBSyxHQUFMLEtBQUssQ0FBaUM7U0FDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBdUI7U0FDL0IsbUJBQWMsR0FBZCxjQUFjLENBQVE7U0FDdEIsbUJBQWMsR0FBZCxjQUFjLENBQVM7U0FDM0IscUNBQXFDO1NBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxHQUFHLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0tBQ2pGLENBQUM7S0FFSCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVywyQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyw4QkFBTztjQUFsQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0NBQWE7Y0FBeEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM3QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLG9DQUFhO2NBQXhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDN0IsQ0FBQzs7O1FBQUE7S0FDSCxnQkFBQztBQUFELEVBQUM7QUEvQlksK0JBQVM7QUFpQ3RCO0tBQ0UsZ0JBQ1UsVUFBa0IsRUFDbEIsU0FBbUIsRUFBRSxvQ0FBb0M7U0FDekQsYUFBc0IsRUFDdEIsTUFBYztTQUhkLGVBQVUsR0FBVixVQUFVLENBQVE7U0FDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtTQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBUztTQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQUcsQ0FBQztLQUU1QixzQkFBVyw2QkFBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNEJBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFZO2NBQXZCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDNUIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx5QkFBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBQ0gsYUFBQztBQUFELEVBQUM7QUF0QlkseUJBQU07QUF3Qm5CO0tBQ0UsMkJBQTJCO0tBQzNCLG1CQUNVLE1BQVcsRUFDWCxlQUF1QjtTQUR2QixXQUFNLEdBQU4sTUFBTSxDQUFLO1NBQ1gsb0JBQWUsR0FBZixlQUFlLENBQVE7S0FBRyxDQUFDO0tBRXJDLHNCQUFXLDRCQUFLO2NBQWhCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxxQ0FBYztjQUF6QjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQzlCLENBQUM7OztRQUFBO0tBRUgsZ0JBQUM7QUFBRCxFQUFDO0FBZFksK0JBQVM7Ozs7Ozs7OztBQ2hFdEI7S0FBQTtLQUVBLENBQUM7S0FBRCx3QkFBQztBQUFELEVBQUM7QUFGWSwrQ0FBaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBOUIsdURBS3dDO0FBRXhDLHVEQUFnRTtBQUVoRTtLQUF3QyxzQ0FBcUI7S0FDM0QsNEJBQW1CLFNBQTRCLEVBQVUsVUFBa0I7U0FBM0UsWUFDRSxrQkFBTSx3Q0FBZ0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFNBQ2pEO1NBRndELGdCQUFVLEdBQVYsVUFBVSxDQUFROztLQUUzRSxDQUFDO0tBRUQsc0JBQVcseUNBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN6QixDQUFDOzs7UUFBQTtLQUVNLDJDQUFjLEdBQXJCO1NBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0tBQ25ELENBQUM7S0FDSCx5QkFBQztBQUFELEVBQUMsQ0FadUMsNkNBQXFCLEdBWTVEO0FBWlksaURBQWtCOzs7Ozs7OztBQ1QvQjs7OztJQUlHOzs7OztBQUdILG1DQUF3Qjs7Ozs7Ozs7QUNQeEIsdURBQXNEO0FBQ3RELCtDQUE4Qzs7QUFFOUM7O0lBRUc7QUFDSCxLQUFZLFlBSVg7QUFKRCxZQUFZLFlBQVk7S0FDdEIsbUNBQW1CO0tBQ25CLGlDQUFpQjtLQUNqQixtQ0FBbUI7QUFDckIsRUFBQyxFQUpXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBSXZCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFNBSVg7QUFKRCxZQUFZLFNBQVM7S0FDbkIsb0NBQXVCO0tBQ3ZCLGdDQUFtQjtLQUNuQixnQ0FBbUI7QUFDckIsRUFBQyxFQUpXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBSXBCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLG1CQVlYO0FBWkQsWUFBWSxtQkFBbUI7S0FDN0Isc0NBQWU7S0FDZiw4Q0FBdUI7S0FDdkIsbURBQTRCO0tBQzVCLDZEQUFzQztLQUN0QyxpREFBMEI7S0FDMUIsd0NBQWlCO0tBQ2pCLHNDQUFlO0tBQ2Ysb0NBQWE7S0FDYixzQ0FBZTtLQUNmLDJDQUFvQjtLQUNwQixzQ0FBZTtBQUNqQixFQUFDLEVBWlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFZOUI7QUFFRDs7SUFFRztBQUNILEtBQVksUUFRWDtBQVJELFlBQVksUUFBUTtLQUNsQiw2QkFBaUI7S0FDakIsdUJBQVc7S0FDWCwyQkFBZTtLQUNmLHlCQUFhO0tBQ2IseUJBQWE7S0FDYixrQ0FBc0I7S0FDdEIsK0JBQW1CO0FBQ3JCLEVBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQUVEOztJQUVHO0FBQ0gsS0FBWSxhQU9YO0FBUEQsWUFBWSxhQUFhO0tBQ3ZCLDhCQUFhO0tBQ2IsaUNBQWdCO0tBQ2hCLDhCQUFhO0tBQ2IsaUNBQWdCO0tBQ2hCLG9DQUFtQjtLQUNuQixtQ0FBa0I7QUFDcEIsRUFBQyxFQVBXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBT3hCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGVBR1g7QUFIRCxZQUFZLGVBQWU7S0FDekIsbURBQWdDO0tBQ2hDLCtDQUE0QjtBQUM5QixFQUFDLEVBSFcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFHMUI7QUFFRDs7SUFFRztBQUNILEtBQVksVUE2RFg7QUE3REQsWUFBWSxVQUFVO0tBQ3BCOztRQUVHO0tBQ0gsdURBQXlDO0tBQ3pDOztRQUVHO0tBQ0gsMERBQTRDO0tBQzVDOztRQUVHO0tBQ0gsb0VBQXNEO0tBQ3REOztRQUVHO0tBQ0gsOENBQWdDO0tBQ2hDOztRQUVHO0tBQ0gsNEVBQThEO0tBQzlEOztRQUVHO0tBQ0gsMkRBQTZDO0tBQzdDOztRQUVHO0tBQ0gsNkRBQStDO0tBQy9DOztRQUVHO0tBQ0gsa0VBQW9EO0tBQ3BEOztRQUVHO0tBQ0gsb0VBQXNEO0tBQ3REOztRQUVHO0tBQ0gsb0RBQXNDO0tBQ3RDOztRQUVHO0tBQ0gsNkRBQStDO0tBQy9DOztRQUVHO0tBQ0gsd0VBQTBEO0tBQzFEOztRQUVHO0tBQ0gsK0RBQWlEO0tBQ2pEOztRQUVHO0tBQ0gsOERBQWdEO0tBQ2hEOztRQUVHO0tBQ0gsNkRBQStDO0FBQ2pELEVBQUMsRUE3RFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUE2RHJCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLG1CQXdDWDtBQXhDRCxZQUFZLG1CQUFtQjtLQUM3QixrQ0FBVztLQUNYLGtDQUFXO0tBQ1gsa0NBQVc7S0FDWCxrQ0FBVztLQUNYLHNDQUFlO0tBQ2Ysd0NBQWlCO0tBQ2pCLGtDQUFXO0tBQ1gsb0NBQWE7S0FDYixzQ0FBZTtLQUNmLHdDQUFpQjtLQUNqQix3Q0FBaUI7S0FDakIsb0NBQWE7S0FDYixvQ0FBYTtLQUNiLG9DQUFhO0tBQ2Isa0NBQVc7S0FDWCxzQ0FBZTtLQUNmLGtDQUFXO0tBQ1gsb0NBQWE7S0FDYix3Q0FBaUI7S0FDakIsd0NBQWlCO0tBQ2pCLG9DQUFhO0tBQ2IsMENBQW1CO0tBQ25CLCtDQUF3QjtLQUN4QixrQ0FBVztLQUNYLGtDQUFXO0tBQ1gsK0NBQXdCO0tBQ3hCLDZDQUFzQjtLQUN0QixpREFBMEI7S0FDMUIsK0NBQXdCO0tBQ3hCLDZDQUFzQjtLQUN0QiwrQ0FBd0I7S0FDeEIsbURBQTRCO0tBQzVCLG1EQUE0QjtLQUM1Qix3Q0FBaUI7S0FDakIsd0NBQWlCO0tBQ2pCLDRDQUFxQjtLQUNyQiw0Q0FBcUI7S0FDckIsdUNBQWdCO0tBQ2hCLG9DQUFhO0FBQ2YsRUFBQyxFQXhDVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQXdDOUI7QUFFRDs7SUFFRztBQUNILEtBQVksYUFJWDtBQUpELFlBQVksYUFBYTtLQUN2Qix3Q0FBdUI7S0FDdkIsb0NBQW1CO0tBQ25CLG9DQUFtQjtBQUNyQixFQUFDLEVBSlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFJeEI7QUFFRDs7SUFFRztBQUNILEtBQVksVUFLWDtBQUxELFlBQVksVUFBVTtLQUNwQix5Q0FBMkI7S0FDM0IsMkNBQTZCO0tBQzdCLDJDQUE2QjtLQUM3Qiw0Q0FBOEI7QUFDaEMsRUFBQyxFQUxXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBS3JCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLGdCQUtYO0FBTEQsWUFBWSxnQkFBZ0I7S0FDMUIsK0JBQVc7S0FDWCwrQkFBVztLQUNYLHVDQUFtQjtLQUNuQixxQ0FBaUI7QUFDbkIsRUFBQyxFQUxXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBSzNCO0FBRUQ7OztJQUdHO0FBQ0gsS0FBWSxtQkFJWDtBQUpELFlBQVksbUJBQW1CO0tBQzdCLGtDQUFXO0tBQ1gsb0NBQWE7S0FDYixzQ0FBZTtBQUNqQixFQUFDLEVBSlcsbUJBQW1CLEdBQW5CLDJCQUFtQixLQUFuQiwyQkFBbUIsUUFJOUI7QUFFRDs7O0lBR0c7QUFDSCxLQUFZLFVBSVg7QUFKRCxZQUFZLFVBQVU7S0FDcEIsd0NBQTBCO0tBQzFCLCtDQUFpQztLQUNqQyxzQ0FBd0I7QUFDMUIsRUFBQyxFQUpXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBSXJCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFVBU1g7QUFURCxZQUFZLFVBQVU7S0FDcEIsNkJBQWU7S0FDZixtQ0FBcUI7S0FDckIsK0JBQWlCO0tBQ2pCLDZCQUFlO0tBQ2YsMkJBQWE7S0FDYiw2QkFBZTtLQUNmLGlDQUFtQjtLQUNuQixpQ0FBbUI7QUFDckIsRUFBQyxFQVRXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBU3JCO0FBRUQ7O0lBRUc7QUFDSCxLQUFZLFNBS1g7QUFMRCxZQUFZLFNBQVM7S0FDbkIsb0NBQXVCO0tBQ3ZCLDRCQUFlO0tBQ2Ysb0NBQXVCO0tBQ3ZCLDZCQUFnQjtBQUNsQixFQUFDLEVBTFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFLcEI7QUFDRDs7SUFFRztBQUNILEtBQVksZ0JBU1g7QUFURCxZQUFZLGdCQUFnQjtLQUMxQix3REFBd0Q7S0FDeEQsbUVBQStDO0tBRS9DLDZDQUE2QztLQUM3QywwREFBc0M7S0FFdEMsMkJBQTJCO0tBQzNCLG9EQUFnQztBQUNsQyxFQUFDLEVBVFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFTM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwUUQsbURBQXdEO0FBRXhEO0tBQTJDLHlDQUFpQjtLQU8xRCwrQkFBbUIsSUFBc0IsRUFBRSxTQUE0QjtTQUF2RSxZQUNFLGtCQUFNLElBQUksRUFBRSxTQUFTLENBQUMsU0FHdkI7U0FEQyxLQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzs7S0FDOUIsQ0FBQztLQVJELHNCQUFXLDRDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FPSCw0QkFBQztBQUFELEVBQUMsQ0FaMEMscUNBQWlCLEdBWTNEO0FBWlksdURBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRmxDLDhDQUE4QztBQUU5QztLQUF1QyxxQ0FBWTtLQU9qRCwyQkFBbUIsSUFBc0IsRUFBRSxLQUFvQjtTQUEvRCxZQUNFLGtCQUFNLElBQUksQ0FBQyxTQUdaO1NBREMsS0FBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7O0tBQ3RCLENBQUM7S0FSRCxzQkFBVyxvQ0FBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBT0gsd0JBQUM7QUFBRCxFQUFDLENBWnNDLDJCQUFZLEdBWWxEO0FBWlksK0NBQWlCOzs7Ozs7Ozs7QUNOOUI7S0FHRSxzQkFBbUIsSUFBc0I7U0FDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7S0FDcEIsQ0FBQztLQUVELHNCQUFXLDhCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUNILG1CQUFDO0FBQUQsRUFBQztBQVZZLHFDQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRnpCLHVEQUt3QztBQUV4Qyx1REFBZ0U7QUFFaEU7S0FBd0Msc0NBQXFCO0tBQzNELDRCQUFtQixTQUE0QjtnQkFDN0Msa0JBQU0sd0NBQWdCLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDO0tBQ3pELENBQUM7S0FFTSwwQ0FBYSxHQUFwQjtTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7S0FDaEQsQ0FBQztLQUNILHlCQUFDO0FBQUQsRUFBQyxDQVJ1Qyw2Q0FBcUIsR0FRNUQ7QUFSWSxpREFBa0I7Ozs7Ozs7OztBQ0wvQjs7OztJQUlHO0FBQ0g7S0FJRSxnQ0FBbUIsU0FBMkI7U0FDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7S0FDdEIsQ0FBQztLQUVELHNCQUFXLDZDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FFTSxpREFBZ0IsR0FBdkIsVUFBd0IsT0FBdUM7U0FBL0QsaUJBR0M7U0FGQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QixNQUFNLENBQUMsY0FBTSxZQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQWpDLENBQWlDLENBQUM7S0FDakQsQ0FBQztLQUVNLG9EQUFtQixHQUExQixVQUEyQixPQUF1QztTQUNoRSxJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQUMsSUFBSSxRQUFDLEtBQUssT0FBTyxFQUFiLENBQWEsQ0FBQyxDQUFDO1NBQzNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDN0MsQ0FBQztLQUVNLDZDQUFZLEdBQW5CLFVBQW9CLGNBQWdDO1NBQ2xELEdBQUcsQ0FBQyxDQUFrQixVQUFjLEVBQWQsU0FBSSxDQUFDLFNBQVMsRUFBZCxjQUFjLEVBQWQsSUFBYzthQUEvQixJQUFNLE9BQU87YUFDaEIsSUFBSSxDQUFDO2lCQUNILElBQU0sVUFBVSxHQUFHLGNBQWMsRUFBRSxDQUFDO2lCQUNwQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdEIsQ0FBQzthQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ1gsaUdBQWlHO2lCQUNqRyxRQUFRLENBQUM7YUFDWCxDQUFDO1VBQ0Y7S0FDSCxDQUFDO0tBQ0gsNkJBQUM7QUFBRCxFQUFDO0FBbkNZLHlEQUFzQjs7Ozs7Ozs7O0FDSG5DOztJQUVHO0FBQ0gsS0FBWSxXQUdYO0FBSEQsWUFBWSxXQUFXO0tBQ3JCLGtDQUFtQjtLQUNuQix3Q0FBeUI7QUFDM0IsRUFBQyxFQUhXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBR3RCOzs7Ozs7Ozs7QUNWRCxtREFBNkQ7QUFDN0Qsb0RBQStEO0FBQy9ELHlEQUF5RTtBQUN6RSx1REFBcUU7QUFDckUsc0RBQW1FO0FBQ25FLGlEQUF1RDtBQUV2RCxvQ0FBMEMsVUFBaUM7S0FDekUsb0NBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHVDQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDaEYsb0NBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHFDQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDL0Usb0NBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLGlEQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDckYsb0NBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLDZDQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDbkYsb0NBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLDJDQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDbEYsOEJBQThCO0FBQ2hDLEVBQUM7QUFQRCwrREFPQzs7Ozs7Ozs7O0FDaEJELHVEQUt3QztBQUN4Qyx1REFPd0M7QUFDeEMsMkNBQTJDO0FBRTNDLGdFQUFvSDtBQUtwSDtLQUdFLDJCQUFtQixVQUFpQztTQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztLQUNoQyxDQUFDO0tBRUQsc0JBQVcsMENBQVc7Y0FBdEI7YUFDRSxNQUFNLCtCQUFxQjtTQUM3QixDQUFDOzs7UUFBQTtLQUVNLDRDQUFnQixHQUF2QixVQUNFLFFBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLE1BQXFCLEVBQ3JCLFVBQTRCLEVBQzVCLGFBQTRCO1NBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQUssQ0FBQyxnQkFBZ0IsQ0FBbUIsVUFBVSxFQUFFLHdDQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztTQUNsRSxDQUFDO1NBQ0QsSUFBTSxJQUFJLEdBQUcsOEJBQU0sQ0FBQyxzQkFBc0IsQ0FBQztTQUMzQyxJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUM1QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDOUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1NBQzlDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQ3RELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGFBQWEsQ0FBQzthQUNuQyxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksYUFBYSxDQUFDLGFBQWEsS0FBSyxTQUFTLENBQUMsR0FBRyxLQUFLLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztTQUVuSCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBUyxrQkFBUTthQUNyRSxJQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBc0IsQ0FBQzthQUM5QyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pFLHFEQUFxRDtpQkFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0QsQ0FBQzthQUNELE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRUksaURBQXFCLEdBQTVCLFVBQTZCLFFBQWtCLEVBQUUsU0FBaUIsRUFBRSxhQUFpQztTQUNuRyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FDRCxpQkFBSyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRWpFLElBQU0sSUFBSSxHQUFHLDhCQUFNLENBQUMsZ0JBQWdCLENBQUM7U0FDckMsSUFBTSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUV6QyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN0QixJQUFJLEdBQUcsU0FBaUIsQ0FBQzthQUN6QixFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3RDLEdBQUcsR0FBRyxpQkFBSyxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxRCxDQUFDO2FBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ04sR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7YUFDMUIsQ0FBQzthQUNELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUMvQyxDQUFDO1NBRUQsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdEIsSUFBSSxHQUFHLFNBQWlCLENBQUM7YUFDekIsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxHQUFHLEdBQUcsaUJBQUssQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUQsQ0FBQzthQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNOLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2FBQzFCLENBQUM7YUFDRCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDL0MsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQzdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQUssQ0FBQyxnQkFBZ0IsQ0FBYSxhQUFhLENBQUMsVUFBVSxFQUFFLGtDQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQzthQUM1RCxDQUFDO2FBQ0QsVUFBVSxDQUFDLG1DQUFXLENBQUMscUJBQXFCLENBQUMsR0FBRywrREFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlHLENBQUM7U0FDRCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDOUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBRTVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFTLGtCQUFRO2FBQ3JFLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBRU0sNENBQWdCLEdBQXZCLFVBQXdCLFFBQWtCLEVBQUUsU0FBaUI7U0FDM0QsSUFBTSxJQUFJLEdBQUcsOEJBQU0sQ0FBQyxXQUFXLENBQUM7U0FDaEMsSUFBSSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUN2QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDNUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFTLGtCQUFRO2FBQ3JFLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsd0JBQUM7QUFBRCxFQUFDO0FBM0ZZLCtDQUFpQjs7Ozs7Ozs7QXZCckI5Qjs7OztJQUlHOzs7OztBQUVILGtDQUFrQztBQUNsQyxrQ0FBa0Q7QUFFbEQsa0NBQTBDO0FBQzFDLGtDQUF1QztBQUN2QyxrQ0FBa0M7Ozs7Ozs7O0F3QlhsQzs7OztJQUlHOztBQUVILCtDQUFnRDtBQUF2QyxzREFBYTtBQUN0Qix1Q0FBZ0M7QUFBdkIsOEJBQUs7Ozs7Ozs7OztBQ1BkOzs7SUFHRztBQUNIO0tBQ0UsdUJBQ1UsU0FBbUQsRUFDbkQsV0FBOEI7U0FEOUIsY0FBUyxHQUFULFNBQVMsQ0FBMEM7U0FDbkQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO0tBQUksQ0FBQztLQUV0QywrQkFBTyxHQUFkLFVBQWUsT0FBb0IsRUFBRSxjQUF3QjtTQUMzRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1NBQzNDLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDMUIsQ0FBQztTQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLENBQUM7S0FDdEQsQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQztBQWhCWSx1Q0FBYTs7Ozs7Ozs7O0FDSjFCO0tBQUE7S0EwSUEsQ0FBQztLQXpJQzs7Ozs7OztRQU9HO0tBQ0gsNkJBQTZCO0tBQ2YsaUJBQVcsR0FBekIsVUFBMEIsYUFBa0IsRUFBRSxZQUFvQjtTQUNoRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxZQUFZLENBQUMsQ0FBQztTQUNwRSxDQUFDO0tBQ0gsQ0FBQztLQUVEOzs7Ozs7UUFNRztLQUNXLGtCQUFZLEdBQTFCLFVBQTJCLGFBQXFCLEVBQUUsWUFBb0I7U0FDcEUsRUFBRSxDQUFDLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQzthQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQzNFLENBQUM7S0FDSCxDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNILDJCQUEyQjtLQUNiLHNCQUFnQixHQUE5QixVQUF5QyxLQUFlLEVBQUUsUUFBYTtTQUNyRSxJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUM7U0FDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPO2FBQ3BDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMzQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2pCLENBQUM7U0FDSCxDQUFDLENBQUMsQ0FBQztTQUNILE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDakIsQ0FBQztLQUNELDBCQUEwQjtLQUUxQjs7O1FBR0c7S0FDVyw4QkFBd0IsR0FBdEMsVUFBdUMsSUFBVTtTQUMvQyxJQUFNLElBQUksR0FBVyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDM0MsSUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM3QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdEMsSUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDLElBQU0sRUFBRSxHQUFXLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QyxJQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7S0FDMUUsQ0FBQztLQUVhLGlDQUEyQixHQUF6QyxVQUEwQyxJQUFhO1NBQ3JELE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztLQUNqQyxDQUFDO0tBRWEsZ0NBQTBCLEdBQXhDLFVBQXlDLEdBQVc7U0FDbEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDMUIsQ0FBQztLQUVEOzs7O1FBSUc7S0FDSCwyQkFBMkI7S0FDYiwwQkFBb0IsR0FBbEMsVUFBbUMsR0FBUSxFQUFFLEdBQVE7U0FDckQsMEJBQTBCO1NBQ3hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDL0UsQ0FBQztTQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztTQUNoRyxDQUFDO1NBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1NBQ2hHLENBQUM7U0FFRCxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLDJFQUEyRSxDQUFDLENBQUM7U0FDL0YsQ0FBQztLQUNILENBQUM7S0FFRDs7UUFFRztLQUNILDJCQUEyQjtLQUNiLGtCQUFZLEdBQTFCLFVBQTJCLEtBQVU7U0FDbkMsTUFBTSxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztLQUMvRCxDQUFDO0tBQ0QsMEJBQTBCO0tBRTFCOztRQUVHO0tBQ0gsMkJBQTJCO0tBQ2IsZ0JBQVUsR0FBeEIsVUFBeUIsS0FBVTtTQUNqQyxNQUFNLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQztLQUMvQixDQUFDO0tBQ0QsMEJBQTBCO0tBRTFCLHFDQUFxQztLQUN2QixrQkFBWSxHQUExQixVQUEyQixLQUFVO1NBQ25DLE1BQU0sQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLENBQUM7S0FDL0QsQ0FBQztLQUVELHFDQUFxQztLQUN2QixnQkFBVSxHQUF4QixVQUF5QixLQUFVO1NBQ2pDLE1BQU0sQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxJQUFJLEtBQUssWUFBWSxPQUFPLENBQUM7S0FDakUsQ0FBQztLQUVELHFDQUFxQztLQUN2Qiw0QkFBc0IsR0FBcEMsVUFBcUMsS0FBVTtTQUM3QyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEtBQWUsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxLQUFhLENBQUMsQ0FBQztTQUN2RCxDQUFDO1NBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO1NBQzdELENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNmLENBQUM7U0FBQyxJQUFJLENBQUMsQ0FBQzthQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMxRCxDQUFDO0tBQ0gsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDO0FBMUlZLHVCQUFLOzs7Ozs7Ozs7QUNBbEIsdURBQWtGO0FBQ2xGLHVEQUFrRjtBQUVsRiwyQ0FBbUQ7QUFFbkQseUZBQXdGO0FBQ3hGOzs7SUFHRztBQUNIO0tBQUE7S0FNQSxDQUFDO0tBTGUsMENBQVcsR0FBRyxJQUFJLHlCQUFhO1NBQzNDLEdBQUMsa0NBQWtCLENBQUMsU0FBUyxJQUFHLGtDQUFrQixDQUFDLFNBQVM7U0FDNUQsR0FBQyxrQ0FBa0IsQ0FBQyxhQUFhLElBQUcsa0NBQWtCLENBQUMsYUFBYTtTQUNwRSxHQUFDLGtDQUFrQixDQUFDLGFBQWEsSUFBRyxrQ0FBa0IsQ0FBQyxVQUFVO2FBQ2pFLENBQUM7S0FDTCxxQ0FBQztFQUFBO0FBTlkseUVBQThCOztBQU8zQyw0QkFBMkI7Ozs7Ozs7OztBQ2pCM0IsdURBQXVFO0FBQ3ZFLHVEQVV3QztBQUV4QywrQ0FBMEU7QUFDMUUsZ0RBQWdFO0FBR2hFO0tBR0UsNEJBQW1CLFVBQWlDO1NBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0tBQ2hDLENBQUM7S0FFRCxzQkFBVywyQ0FBVztjQUF0QjthQUNFLE1BQU0sa0NBQXNCO1NBQzlCLENBQUM7OztRQUFBO0tBRU0sbURBQXNCLEdBQTdCLFVBQ0UsUUFBa0IsRUFDbEIsT0FBb0IsRUFDcEIsYUFBc0IsRUFDdEIsZUFBd0IsRUFDeEIsaUJBQTBCLEVBQzFCLE9BQWU7U0FOakIsaUJBb0JHO1NBYkMsK0JBQStCO1NBQy9CLElBQU0sSUFBSSxHQUFHLE9BQU8sS0FBSyw0QkFBVyxDQUFDLE9BQU8sR0FBRyw4QkFBTSxDQUFDLGtCQUFrQixHQUFHLDhCQUFNLENBQUMsaUJBQWlCLENBQUM7U0FDcEcsSUFBTSxVQUFVLEdBQXNCLEVBQUUsQ0FBQztTQUN6QyxVQUFVLENBQUMsbUNBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDNUMsVUFBVSxDQUFDLG1DQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsYUFBYSxDQUFDO1NBQ3RELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztTQUMxRCxVQUFVLENBQUMsbUNBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1NBQzlELFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUUxQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBWSxrQkFBUTthQUN4RSxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBNkIsQ0FBQzthQUM1RCxNQUFNLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdFLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVJLGtEQUFxQixHQUE1QixVQUE2QixRQUFrQjtTQUEvQyxpQkFRQztTQVBDLElBQU0sVUFBVSxhQUF3QixHQUFDLG1DQUFXLENBQUMsUUFBUSxJQUFHLFFBQVEsS0FBRSxDQUFDO1NBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyw4QkFBTSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBYyxrQkFBUTthQUM3RixJQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBNEIsQ0FBQzthQUMzRCxNQUFNLENBQUM7aUJBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQUssSUFBSSxZQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFyQyxDQUFxQyxDQUFDO2NBQzVFLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBRU0scURBQXdCLEdBQS9CLFVBQWdDLFFBQWtCO1NBQWxELGlCQVFDO1NBUEMsSUFBTSxVQUFVLGFBQXdCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFFLENBQUM7U0FDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFjLGtCQUFRO2FBQ2hHLElBQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUErQixDQUFDO2FBQzlELE1BQU0sQ0FBQztpQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBSyxJQUFJLFlBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQXJDLENBQXFDLENBQUM7Y0FDNUUsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFUyxnREFBbUIsR0FBN0IsVUFBOEIsWUFBdUMsRUFBRSxTQUFrQjtTQUN2RixJQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFDLElBQUksV0FBSSxzQkFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsZ0NBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFuRixDQUFtRixDQUFDLENBQUM7U0FDbkksSUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBRzthQUMxQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFJO2lCQUNqQixNQUFNLENBQUMsSUFBSSx5QkFBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3hELENBQUMsQ0FBQyxDQUFDO1NBQ0wsQ0FBQyxDQUFDLENBQUM7U0FFSCxNQUFNLENBQUMsSUFBSSx5QkFBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztLQUNoRSxDQUFDO0tBQ0gseUJBQUM7QUFBRCxFQUFDO0FBL0RZLGlEQUFrQjs7Ozs7Ozs7O0FDWi9CO0tBQ0Usc0JBQ1UsU0FBZ0QsRUFDaEQsV0FBK0M7U0FEL0MsY0FBUyxHQUFULFNBQVMsQ0FBdUM7U0FDaEQsZ0JBQVcsR0FBWCxXQUFXLENBQW9DO1NBQ3JELGVBQWU7S0FDbkIsQ0FBQztLQUVNLHFDQUFjLEdBQXJCLFVBQXNCLGlCQUF3QjtTQUM1QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN0QyxDQUFDO0tBQ0gsQ0FBQztLQUNILG1CQUFDO0FBQUQsRUFBQztBQUVEO0tBR0UsaUNBQTJCLFVBQWlDO1NBQWpDLGVBQVUsR0FBVixVQUFVLENBQXVCO1NBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUM5RSxDQUFDO0tBRUQsc0JBQVcsZ0RBQVc7Y0FBdEI7YUFDRSxNQUFNLDJDQUEyQjtTQUNuQyxDQUFDOzs7UUFBQTtLQUVNLGlEQUFlLEdBQXRCLFVBQXVCLEVBQWtCLEVBQUUsUUFBbUMsRUFBRSxPQUErQjtTQUEvRyxpQkFNQztTQUxDLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQWdCLENBQUM7U0FDakUsSUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDOUIsTUFBTSxDQUFDLGNBQU0sWUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBekMsQ0FBeUMsQ0FBQztLQUN6RCxDQUFDO0tBRU8sZ0VBQThCLEdBQXRDLFVBQXVDLEVBQWtCO1NBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUMzQyxDQUFDO0tBRU8sZ0RBQWMsR0FBdEIsVUFBdUIsWUFBMEI7U0FDL0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0RSxNQUFNLENBQUM7U0FDVCxDQUFDO1NBRUQsNEVBQTRFO1NBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFDLElBQUksUUFBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQW5DLENBQW1DLENBQUMsQ0FBQztLQUNoRyxDQUFDO0tBRU8sb0RBQWtCLEdBQTFCLFVBQTJCLEVBQWtCLEVBQUUsWUFBMEI7U0FDdkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdDLE1BQU0sQ0FBQztTQUNULENBQUM7U0FFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQUcsSUFBSSxVQUFHLEtBQUssWUFBWSxFQUFwQixDQUFvQixDQUFDLENBQUM7S0FDOUUsQ0FBQztLQUNILDhCQUFDO0FBQUQsRUFBQztBQXhDWSwyREFBdUI7Ozs7Ozs7OztBQ2xCcEMsdURBUXdDO0FBRXhDLCtDQUE2RDtBQUM3RCwyQ0FBNEM7QUFJNUM7S0FDRSwrQkFBMkIsVUFBaUM7U0FBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7S0FDNUQsQ0FBQztLQUVELHNCQUFXLDhDQUFXO2NBQXRCO2FBQ0UsTUFBTSx1Q0FBeUI7U0FDakMsQ0FBQzs7O1FBQUE7S0FFTSwwREFBMEIsR0FBakMsVUFBa0MsU0FBb0IsRUFBRSxLQUFvQjtTQUMxRSxJQUFNLFVBQVU7YUFDZCxHQUFDLG1DQUFXLENBQUMsU0FBUyxJQUFHLFNBQVM7Z0JBQ25DLENBQUM7U0FFRixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQVE7YUFDcEYseUJBQXlCO2FBRXpCLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUE4QixDQUFDO2FBQ3ZELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHVCQUFhO2lCQUM3QixJQUFNLElBQUksR0FBRyxJQUFJLDZCQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQzlDLE1BQU0sQ0FBQyxJQUFJLHFCQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BDLENBQUMsQ0FBQyxDQUFDO1NBQ0wsQ0FBQyxDQUFDLENBQUM7O0tBQ0wsQ0FBQztLQUVNLHlEQUF5QixHQUFoQyxVQUFpQyxTQUFpQixFQUFFLFFBQWdCO1NBQ2xFLElBQU0sVUFBVTthQUNkLEdBQUMsbUNBQVcsQ0FBQyxrQkFBa0IsSUFBRyxTQUFTO2FBQzNDLEdBQUMsbUNBQVcsQ0FBQyxjQUFjLElBQUcsUUFBUTtnQkFDdkMsQ0FBQztTQUVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyw4QkFBTSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBUTthQUNuRixJQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBdUIsQ0FBQzthQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2hCLENBQUMsQ0FBQyxDQUFDOztLQUNMLENBQUM7S0FFTSx3REFBd0IsR0FBL0IsVUFBZ0MsSUFBWSxFQUFFLEtBQW9CO1NBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUN6RCxDQUFDO0tBRU0sbUVBQW1DLEdBQTFDLFVBQTJDLFNBQWlCLEVBQUUsS0FBb0I7U0FDaEYsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQzlELENBQUM7S0FFTyxrREFBa0IsR0FBMUIsVUFDRSxLQUFvQixFQUNwQixJQUF3QixFQUN4QixTQUE2QjtTQUM3QixJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ2xELENBQUM7U0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDbkMsVUFBVSxDQUFDLG1DQUFXLENBQUMsa0JBQWtCLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDekQsQ0FBQztTQUFDLElBQUksQ0FBQyxDQUFDO2FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzNELENBQUM7U0FFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFRO2FBQzVFLElBQU0sdUJBQXVCLEdBQUcsVUFBQyxNQUFhO2lCQUM1QyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQzthQUMvQixDQUFDLENBQUM7YUFFRixnRUFBZ0U7YUFDaEUsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDN0MsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQXVCLENBQUM7aUJBQ2hELElBQU0sSUFBSSxHQUFHLElBQUksNkJBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDdkMsTUFBTSxDQUFDLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDcEMsQ0FBQzthQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNOLE1BQU0sQ0FBQyxTQUFTLENBQUM7YUFDbkIsQ0FBQztTQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUNILDRCQUFDO0FBQUQsRUFBQztBQXhFWSx1REFBcUI7Ozs7Ozs7OztBQ2hCbEMsdURBT3dDO0FBQ3hDLHVEQUErRTtBQUMvRSwyQ0FBMkM7QUFFM0MsZ0VBQWdHO0FBQ2hHLHVEQUF3RTtBQUN4RSwrQ0FBb0Q7QUFHcEQsaURBQStFO0FBRS9FLHdEQUFrRTtBQUVsRTtLQUtFLHVCQUFtQixhQUE0QjtTQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDdkMsQ0FBQztLQUVELHNCQUFXLCtCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1Q0FBWTtjQUF2QjthQUNFLE1BQU0sQ0FBQyxJQUFJLHlCQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hILENBQUM7OztRQUFBO0tBRUQsc0JBQVcsbUNBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsK0RBQThCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZGLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsMENBQWU7Y0FBMUI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQy9CLENBQUM7OztRQUFBO0tBRU0sd0NBQWdCLEdBQXZCLFVBQXdCLFFBQTBDO1NBQWxFLGlCQU9DO1NBTkMsSUFBSSxZQUFZLEdBQUcsaUJBQUssQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMxRCxJQUFNLGlCQUFpQixHQUFHLG9DQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHVDQUE0QyxDQUFDO1NBQzdHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUFhO2FBQ3hHLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNyQyxNQUFNLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQztTQUMzQixDQUFDLENBQUMsQ0FBQztLQUNMLENBQUM7S0FFRDs7Ozs7OztRQU9HO0tBQ0ksd0NBQWdCLEdBQXZCLFVBQXdCLEtBQVk7U0FBcEMsaUJBdUJDO1NBdEJDLElBQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFzQixDQUFDO1NBQ2hELElBQUksbUJBQXdDLENBQUM7U0FFN0MsSUFBSSxDQUFDO2FBQ0gsbUJBQW1CLEdBQUcsb0NBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsMkNBQWdELENBQUM7U0FDL0csQ0FBQztTQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDWCx3REFBd0Q7YUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNqQixDQUFDO1NBRUQsNEVBQTRFO1NBQzVFLElBQU0sY0FBYyxHQUFHLElBQUksK0NBQXNCLENBQXdCLHdDQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDNUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLHNDQUFjLENBQUMsZ0JBQWdCLEVBQUUsVUFBQyxLQUFLO2FBQ3pFLElBQU0sU0FBUyxHQUFHLEtBQWUsQ0FBQzthQUNsQyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUM3QyxDQUFDLEVBQUUsVUFBQyxTQUFpQjthQUNuQixjQUFjLENBQUMsWUFBWSxDQUFDLGNBQU0sV0FBSSw2Q0FBcUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQTNDLENBQTJDLENBQUMsQ0FBQztTQUNqRixDQUFDLENBQUMsQ0FBQztTQUVILE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FFN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQztLQUNqQixDQUFDO0tBRU8sd0NBQWdCLEdBQXhCLFVBQXlCLGFBQTRCO1NBQ25ELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1NBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBRWhELElBQU0sSUFBSSxHQUFHLCtEQUE4QixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDdkcsSUFBSSxVQUF3QyxDQUFDO1NBQzdDLElBQUksUUFBK0IsQ0FBQztTQUNwQyxJQUFJLFFBQStCLENBQUM7U0FDcEMsSUFBSSxRQUE0QixDQUFDO1NBQ2pDLElBQUksY0FBc0MsQ0FBQztTQUUzQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssMkNBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN0QyxJQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQzthQUNuRCxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFHLElBQUksV0FBSSx5QkFBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUE1QyxDQUE0QyxDQUFDLENBQUM7U0FDL0UsQ0FBQztTQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssMkNBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM5QyxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLHlCQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUN4SCxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLHlCQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUN4SCxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQzthQUNsQyxjQUFjLEdBQUcsYUFBYSxDQUFDLGNBQWM7aUJBQzVCLCtEQUE4QixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZHLENBQUM7U0FFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7YUFDdEIsSUFBSSxFQUFFLElBQUk7YUFDVixlQUFlLEVBQUUsVUFBVTthQUMzQixRQUFRLEVBQUUsUUFBUTthQUNsQixRQUFRLEVBQUUsUUFBUTthQUNsQixRQUFRLEVBQUUsUUFBUTthQUNsQixjQUFjLEVBQUUsY0FBYztVQUMvQixDQUFDO0tBQ0osQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQztBQWxHWSx1Q0FBYTs7Ozs7Ozs7O0FDcEIxQix1REFTd0M7QUFDeEMsdURBU3dDO0FBQ3hDLDJDQUFtRDtBQUVuRCx5RkFBd0Y7QUFDeEY7OztJQUdHO0FBQ0g7S0FBQTtLQWdFQSxDQUFDO0tBL0RlLDJDQUFZLEdBQUcsSUFBSSx5QkFBYTtTQUM1QyxHQUFDLG9DQUFvQixDQUFDLE9BQU8sSUFBRyxvQ0FBb0IsQ0FBQyxPQUFPO1NBQzVELEdBQUMsb0NBQW9CLENBQUMsTUFBTSxJQUFHLG9DQUFvQixDQUFDLE1BQU07U0FDMUQsR0FBQyxvQ0FBb0IsQ0FBQyxPQUFPLElBQUcsb0NBQW9CLENBQUMsT0FBTzthQUM1RCxDQUFDO0tBRVcsd0NBQVMsR0FBRyxJQUFJLHlCQUFhO1NBQ3pDLEdBQUMsaUNBQWlCLENBQUMsU0FBUyxJQUFHLGlDQUFpQixDQUFDLFNBQVM7U0FDMUQsR0FBQyxpQ0FBaUIsQ0FBQyxPQUFPLElBQUcsaUNBQWlCLENBQUMsT0FBTztTQUN0RCxHQUFDLGlDQUFpQixDQUFDLE9BQU8sSUFBRyxpQ0FBaUIsQ0FBQyxPQUFPO2FBQ3RELENBQUM7S0FFVyx3Q0FBUyxHQUFHLElBQUkseUJBQWE7U0FDekMsR0FBQyxpQ0FBaUIsQ0FBQyxTQUFTLElBQUcsaUNBQWlCLENBQUMsU0FBUztTQUMxRCxHQUFDLGlDQUFpQixDQUFDLEtBQUssSUFBRyxpQ0FBaUIsQ0FBQyxLQUFLO1NBQ2xELEdBQUMsaUNBQWlCLENBQUMsU0FBUyxJQUFHLGlDQUFpQixDQUFDLFNBQVM7YUFDMUQsQ0FBQztLQUVXLGtEQUFtQixHQUFHLElBQUkseUJBQWE7U0FDbkQsR0FBQywyQ0FBMkIsQ0FBQyxLQUFLLElBQUcsMkNBQTJCLENBQUMsS0FBSztTQUN0RSxHQUFDLDJDQUEyQixDQUFDLEtBQUssSUFBRywyQ0FBMkIsQ0FBQyxLQUFLO1NBQ3RFLEdBQUMsMkNBQTJCLENBQUMsTUFBTSxJQUFHLDJDQUEyQixDQUFDLE1BQU07U0FDeEUsR0FBQywyQ0FBMkIsQ0FBQyxVQUFVLElBQUcsMkNBQTJCLENBQUMsVUFBVTtTQUNoRixHQUFDLDJDQUEyQixDQUFDLGdCQUFnQixJQUFHLDJDQUEyQixDQUFDLGdCQUFnQjtTQUM1RixHQUFDLDJDQUEyQixDQUFDLFdBQVcsSUFBRywyQ0FBMkIsQ0FBQyxXQUFXO1NBQ2xGLEdBQUMsMkNBQTJCLENBQUMsSUFBSSxJQUFHLDJDQUEyQixDQUFDLElBQUk7U0FDcEUsR0FBQywyQ0FBMkIsQ0FBQyxLQUFLLElBQUcsMkNBQTJCLENBQUMsS0FBSztTQUN0RSxHQUFDLDJDQUEyQixDQUFDLE9BQU8sSUFBRywyQ0FBMkIsQ0FBQyxPQUFPO1NBQzFFLEdBQUMsMkNBQTJCLENBQUMsU0FBUyxJQUFHLDJDQUEyQixDQUFDLFNBQVM7YUFDOUUsQ0FBQztLQUVXLHVDQUFRLEdBQUcsSUFBSSx5QkFBYTtTQUN4QyxHQUFDLGdDQUFnQixDQUFDLElBQUksSUFBRyxnQ0FBZ0IsQ0FBQyxJQUFJO1NBQzlDLEdBQUMsZ0NBQWdCLENBQUMsSUFBSSxJQUFHLGdDQUFnQixDQUFDLElBQUk7U0FDOUMsR0FBQyxnQ0FBZ0IsQ0FBQyxRQUFRLElBQUcsZ0NBQWdCLENBQUMsUUFBUTtTQUN0RCxHQUFDLGdDQUFnQixDQUFDLEtBQUssSUFBRyxnQ0FBZ0IsQ0FBQyxLQUFLO1NBQ2hELEdBQUMsZ0NBQWdCLENBQUMsR0FBRyxJQUFHLGdDQUFnQixDQUFDLEdBQUc7U0FDNUMsR0FBQyxnQ0FBZ0IsQ0FBQyxNQUFNLElBQUcsZ0NBQWdCLENBQUMsTUFBTTthQUNsRCxDQUFDO0tBRVcsK0NBQWdCLEdBQUcsSUFBSSx5QkFBYTtTQUNoRCxHQUFDLHdDQUF3QixDQUFDLEdBQUcsSUFBRyx3Q0FBd0IsQ0FBQyxHQUFHO1NBQzVELEdBQUMsd0NBQXdCLENBQUMsR0FBRyxJQUFHLHdDQUF3QixDQUFDLEdBQUc7U0FDNUQsR0FBQyx3Q0FBd0IsQ0FBQyxNQUFNLElBQUcsd0NBQXdCLENBQUMsTUFBTTtTQUNsRSxHQUFDLHdDQUF3QixDQUFDLE9BQU8sSUFBRyx3Q0FBd0IsQ0FBQyxPQUFPO2FBQ3BFLENBQUM7S0FFVyw4Q0FBZSxHQUFHLElBQUkseUJBQWE7U0FDL0MsR0FBQyw2Q0FBNkIsQ0FBQyxHQUFHLElBQUcsMkNBQTJCLENBQUMsR0FBRztTQUNwRSxHQUFDLDZDQUE2QixDQUFDLElBQUksSUFBRywyQ0FBMkIsQ0FBQyxJQUFJO1NBQ3RFLEdBQUMsNkNBQTZCLENBQUMsS0FBSyxJQUFHLDJDQUEyQixDQUFDLEtBQUs7YUFDeEUsQ0FBQztLQUVXLDZDQUFjLEdBQUcsSUFBSSx5QkFBYTtTQUM5QyxHQUFDLHNDQUFzQixDQUFDLEtBQUssSUFBRyxrQ0FBa0IsQ0FBQyxLQUFLO1NBQ3hELEdBQUMsc0NBQXNCLENBQUMsUUFBUSxJQUFHLGtDQUFrQixDQUFDLFFBQVE7U0FDOUQsR0FBQyxzQ0FBc0IsQ0FBQyxNQUFNLElBQUcsa0NBQWtCLENBQUMsTUFBTTtTQUMxRCxHQUFDLHNDQUFzQixDQUFDLEtBQUssSUFBRyxrQ0FBa0IsQ0FBQyxLQUFLO1NBQ3hELEdBQUMsc0NBQXNCLENBQUMsSUFBSSxJQUFHLGtDQUFrQixDQUFDLElBQUk7U0FDdEQsR0FBQyxzQ0FBc0IsQ0FBQyxLQUFLLElBQUcsa0NBQWtCLENBQUMsS0FBSztTQUN4RCxHQUFDLHNDQUFzQixDQUFDLE9BQU8sSUFBRyxrQ0FBa0IsQ0FBQyxPQUFPO1NBQzVELEdBQUMsc0NBQXNCLENBQUMsT0FBTyxJQUFHLGtDQUFrQixDQUFDLE9BQU87YUFDNUQsQ0FBQztLQUNMLHFDQUFDO0VBQUE7QUFoRVkseUVBQThCOztBQWlFM0MsNEJBQTJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUYzQix1REFLd0M7QUFHeEMsaURBQStFO0FBQy9FLG1EQUF3RDtBQUV4RDtLQUEyQyx5Q0FBaUI7S0FDMUQsK0JBQTJCLGdCQUF3QixFQUFFLEtBQW9CO1NBQXpFLFlBQ0Usa0JBQU0sd0NBQWdCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFNBQ2hEO1NBRjBCLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTs7S0FFbkQsQ0FBQztLQUVNLGlEQUFpQixHQUF4QjtTQUNFLHdFQUF3RTtTQUN4RSxJQUFNLE9BQU8sR0FBRyxvQ0FBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSx1Q0FBNEMsQ0FBQztTQUNuRyxNQUFNLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFTO2FBQ2xHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDOUMsQ0FBQzthQUVELE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDbkIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsNEJBQUM7QUFBRCxFQUFDLENBaEIwQyxxQ0FBaUIsR0FnQjNEO0FBaEJZLHVEQUFxQjs7Ozs7Ozs7O0FDcUNsQztLQUdFO1NBQ0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7S0FDdEIsQ0FBQztLQUVNLDZDQUFlLEdBQXRCLFVBQXVCLE9BQW1CO1NBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUNoRCxDQUFDO0tBRU0sd0NBQVUsR0FBakIsVUFBd0MsV0FBbUI7U0FDekQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBYyxXQUFXLG1CQUFnQixDQUFDLENBQUM7U0FDN0QsQ0FBQztTQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBTSxDQUFDO0tBQzFDLENBQUM7S0FDSCwwQkFBQztBQUFELEVBQUM7QUFFRDs7O0lBR0c7QUFDSDtLQXlCRSw0Q0FBNEM7S0FDNUM7S0FBdUIsQ0FBQztLQXRCeEIsc0JBQWtCLDhCQUFRO1NBSDFCOztZQUVHO2NBQ0g7YUFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7aUJBQ3hDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQzthQUM1RCxDQUFDO2FBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO2lCQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7YUFDdkQsQ0FBQzthQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUM7U0FDNUMsQ0FBQzs7O1FBQUE7S0FFRDs7OztRQUlHO0tBQ1csOEJBQVcsR0FBekIsVUFBMEIsZUFBaUM7U0FDekQsTUFBTSxDQUFDLDJCQUEyQixHQUFHLGVBQWUsQ0FBQztLQUN2RCxDQUFDO0tBSUgseUJBQUM7QUFBRCxFQUFDO0FBM0JZLGlEQUFrQjs7Ozs7Ozs7O0FDeEUvQix1REFNd0M7QUFLeEM7S0FHRSw4QkFBbUIsVUFBaUM7U0FDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7S0FDaEMsQ0FBQztLQUVELHNCQUFXLDZDQUFXO2NBQXRCO2FBQ0UsTUFBTSxxQ0FBd0I7U0FDaEMsQ0FBQzs7O1FBQUE7S0FFRDs7O1FBR0c7S0FDSSxzREFBdUIsR0FBOUIsVUFBK0IsUUFBa0I7U0FDL0MsSUFBTSxVQUFVLGFBQXVCLEdBQUMsbUNBQVcsQ0FBQyxRQUFRLElBQUcsUUFBUSxLQUFDLENBQUM7U0FDekUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFPLGtCQUFRO2FBQ3hGLE1BQU0sQ0FBRSxDQUFDLHdEQUF3RDtTQUNuRSxDQUFDLENBQUMsQ0FBQzs7S0FDTCxDQUFDO0tBQ0gsMkJBQUM7QUFBRCxFQUFDO0FBckJZLHFEQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqQyx1Q0FBZ0M7QUFFaEM7S0FBK0IsNkJBQUs7S0FDbEMsbUJBQTJCLGFBQTRCO1NBQXZELFlBQ0Usa0JBQU0sYUFBYSxDQUFDLFNBRXJCO1NBSDBCLG1CQUFhLEdBQWIsYUFBYSxDQUFlO1NBRXJELGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFJLENBQUMsQ0FBQzs7S0FDckQsQ0FBQztLQUVELHNCQUFXLGlDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsOEJBQU87Y0FBbEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7U0FDcEMsQ0FBQzs7O1FBQUE7S0FDSCxnQkFBQztBQUFELEVBQUMsQ0FiOEIsYUFBSyxHQWFuQztBQWJZLCtCQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHRCLDJDQUEyRDtBQUkzRDtLQUEyQix5QkFBb0I7S0FDN0MsZUFBMkIsU0FBb0I7U0FBL0MsWUFDRSxpQkFBTyxTQUNSO1NBRjBCLGVBQVMsR0FBVCxTQUFTLENBQVc7O0tBRS9DLENBQUM7S0FFRCxzQkFBVyx1QkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzdCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsNEJBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDbEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyx1QkFBSTtjQUFmO2FBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2xELENBQUM7OztRQUFBO0tBRU0sa0NBQWtCLEdBQXpCLFVBQTBCLGFBQXFCO1NBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoRSxDQUFDO0tBRU0sa0NBQWtCLEdBQXpCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakQsQ0FBQztLQUNILFlBQUM7QUFBRCxFQUFDLENBeEIwQixpQ0FBb0IsR0F3QjlDO0FBeEJZLHVCQUFLOzs7Ozs7Ozs7QUNKbEI7Ozs7SUFJRztBQUNIO0tBQ0UsMEJBQTJCLFVBQThCO1NBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO0tBQUksQ0FBQztLQUU5RCxzQkFBVyx1Q0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBQ0gsdUJBQUM7QUFBRCxFQUFDO0FBTlksNkNBQWdCOzs7Ozs7Ozs7QUNKN0IsMkNBQXFGO0FBRXJGOzs7O0lBSUc7QUFDSDtLQVNFLHFCQUFtQixnQkFBa0M7U0FDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7U0FDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7U0FDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7U0FDNUMsSUFBSSxDQUFDLEtBQUssR0FBRywyQ0FBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztLQUN6RCxDQUFDO0tBRUQsc0JBQVcsbUNBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGdDQUFPO2NBQWxCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxpQ0FBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsK0JBQU07Y0FBakI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUN0QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDZCQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHdDQUFlO2NBQTFCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUMvQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHVDQUFjO2NBQXpCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDOUIsQ0FBQzs7O1FBQUE7S0FDSCxrQkFBQztBQUFELEVBQUM7QUE5Q1ksbUNBQVc7Ozs7Ozs7OztBQ0x4Qjs7SUFFRztBQUNIO0tBQ0Usa0JBQTJCLFlBQTBCO1NBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0tBQUksQ0FBQztLQUVuRCx3QkFBSyxHQUFaLFVBQWEsR0FBVztTQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvQixDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVc7U0FDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDLENBQUM7S0FFTSx5QkFBTSxHQUFiO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7S0FDcEMsQ0FBQztLQUVELHNCQUFXLGdDQUFVO2NBQXJCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQ3RDLENBQUM7OztRQUFBO0tBRU0sNEJBQVMsR0FBaEI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUN2QyxDQUFDO0tBRU0sc0JBQUcsR0FBVixVQUFXLEdBQVcsRUFBRSxLQUFhO1NBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUNwQyxDQUFDO0tBQ0gsZUFBQztBQUFELEVBQUM7QUExQlksNkJBQVE7Ozs7Ozs7OztBQ1ByQiwyQ0FBeUQ7QUFFekQsMkRBQTZFO0FBQzdFLHFEQUFrRTtBQUVsRSxtQ0FBeUMsVUFBaUM7S0FDeEUsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHFEQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDdkYsK0JBQWtCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHlDQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBQztBQUhELDZEQUdDOzs7Ozs7Ozs7QUNURCxzREFBbUc7QUFLbkc7S0FDRSxtQ0FBMkIsVUFBaUM7U0FBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7S0FBSSxDQUFDO0tBRWpFLHNCQUFXLGtEQUFXO2NBQXRCO2FBQ0UsTUFBTSxxREFBeUM7U0FDakQsQ0FBQzs7O1FBQUE7S0FFTSxpRUFBNkIsR0FBcEM7U0FDRSxnR0FBZ0c7U0FDaEcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBcUIsa0JBQVE7YUFDMUYsK0JBQStCO2FBRS9CLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUE0QixDQUFDO2FBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTCxDQUFDO0tBQ0gsZ0NBQUM7QUFBRCxFQUFDO0FBaEJZLCtEQUF5Qjs7Ozs7Ozs7O0FDTHRDLHNEQU13QztBQUt4QztLQUNFLDZCQUEyQixVQUFpQztTQUFqQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtLQUFJLENBQUM7S0FFakUsc0JBQVcsNENBQVc7Y0FBdEI7YUFDRSxNQUFNLHlDQUFtQztTQUMzQyxDQUFDOzs7UUFBQTtLQUVNLCtDQUFpQixHQUF4QixVQUF5QixRQUE0QjtTQUNuRCxJQUFNLFVBQVUsR0FBc0IsRUFBRSxDQUFDO1NBQ3pDLFVBQVUsQ0FBQyxtQ0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztTQUVsRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsOEJBQU0sQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQXFCLGVBQUs7YUFDakcsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTJCLENBQUM7YUFFakQsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO2FBQ3JELENBQUM7YUFFRCxNQUFNLEVBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUNILDBCQUFDO0FBQUQsRUFBQztBQXJCWSxtREFBbUI7Ozs7Ozs7OztBQ1BoQzs7SUFFRztBQUNIO0tBZ0JFLDhEQUE4RDtLQUM5RCx1QkFBb0IsYUFBcUI7U0FDdkMsSUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBQyxJQUFJLGVBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQWYsQ0FBZSxDQUFDLENBQUM7U0FDakUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsYUFBYSxDQUFDLENBQUM7U0FDOUQsQ0FBQztTQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7S0FsQkQsc0JBQWtCLHlCQUFRO1NBSDFCOztZQUVHO2NBQ0g7YUFDRSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQWtCRCxzQkFBVyxnQ0FBSztjQUFoQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3JCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsZ0NBQUs7Y0FBaEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNyQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLDhCQUFHO2NBQWQ7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNuQixDQUFDOzs7UUFBQTtLQXBDRCwwR0FBMEc7S0FDM0YsdUJBQVMsR0FBa0IsSUFBSSxhQUFhLENBQUMsU0FBd0IsQ0FBQyxDQUFDO0tBb0N4RixvQkFBQztFQUFBO0FBdkNZLHVDQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUDFCLHdDQUEyRDtBQUMzRCxzREFBOEc7QUFDOUcsMkNBQWtEO0FBRWxELGlEQUFxRDtBQUNyRCwyQ0FBeUM7QUFDekMsMkNBQXdDO0FBQ3hDLCtDQUFnRDtBQUNoRCwrQ0FBZ0Q7QUFFaEQ7S0FBbUMsaUNBQVM7S0FJMUMsdUJBQTJCLEtBQXlCLEVBQVUsVUFBcUI7U0FBbkYsWUFDRSxrQkFBTSxJQUFJLDZCQUFhLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQ25FO1NBRjBCLFdBQUssR0FBTCxLQUFLLENBQW9CO1NBQVUsZ0JBQVUsR0FBVixVQUFVLENBQVc7O0tBRW5GLENBQUM7S0FFRCxzQkFBVyxxQ0FBVTtjQUFyQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsa0NBQU87Y0FBbEI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN2QixDQUFDOzs7UUFBQTtLQUVNLHNEQUE4QixHQUFyQyxVQUFzQyxTQUE2QjtTQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxFQUFhLENBQUM7U0FDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBNEIsQ0FBQztTQUV0RCw4REFBOEQ7U0FDOUQsR0FBRyxDQUFDLENBQWUsVUFBZ0IsRUFBaEIsU0FBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQWhCLGNBQWdCLEVBQWhCLElBQWdCO2FBQTlCLElBQU0sSUFBSTthQUNiLElBQUksU0FBUyxHQUEwQixTQUFTLENBQUM7YUFFakQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSywyQ0FBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUNwRCxJQUFNLFNBQVMsR0FBRyxJQUFJLDZCQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUM3RSxJQUFNLEtBQUssR0FBYTtxQkFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO3FCQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO3FCQUMxQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO3FCQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlO3FCQUNoRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2tCQUMzQyxDQUFDO2lCQUVGLElBQU0sYUFBYSxHQUFHLElBQUksNkJBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQzFELFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ25DLENBQUM7YUFFRCxJQUFNLFNBQVMsR0FBRyxJQUFJLGtCQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUMsSUFBTSxRQUFRLEdBQUcsSUFBSSxpQkFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBRW5ELElBQU0sZUFBZSxHQUFHLElBQUksaUNBQWUsQ0FDekMsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLENBQ1YsQ0FBQzthQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1VBQ3JDO0tBQ0gsQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQyxDQXJEa0MscUJBQVMsR0FxRDNDO0FBckRZLHVDQUFhOzs7Ozs7OztBL0JWMUI7Ozs7SUFJRzs7Ozs7QUFHSCxtQ0FBd0I7Ozs7Ozs7OztBZ0NMeEI7OztJQUdHO0FBQ0g7S0FDRSx5QkFDVSxVQUE4QixFQUM5QixLQUFtQyxFQUNuQyxTQUF5QixFQUN6QixLQUFvQixFQUNwQixVQUEwQztTQUoxQyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtTQUM5QixVQUFLLEdBQUwsS0FBSyxDQUE4QjtTQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFnQjtTQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFlO1NBQ3BCLGVBQVUsR0FBVixVQUFVLENBQWdDO0tBQ2hELENBQUM7S0FFTCxzQkFBVyxzQ0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsaUNBQUk7Y0FBZjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3BCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcscUNBQVE7Y0FBbkI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUN4QixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLGlDQUFJO2NBQWY7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNwQixDQUFDOzs7UUFBQTtLQUVELHNCQUFXLHNDQUFTO2NBQXBCO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDekIsQ0FBQzs7O1FBQUE7S0FDSCxzQkFBQztBQUFELEVBQUM7QUE1QlksMkNBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKNUIsdUNBQWdDO0FBSWhDO0tBQStCLDZCQUFLO0tBR2xDLG1CQUFtQixhQUE0QjtTQUEvQyxZQUNFLGtCQUFNLGFBQWEsQ0FBQyxTQUtyQjtTQUpDLEtBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1NBRXBDLDhGQUE4RjtTQUM5RixLQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFDLElBQUksWUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBdkIsQ0FBdUIsQ0FBQyxDQUFDOztLQUNuRixDQUFDO0tBRUQsc0JBQVcsc0NBQWU7Y0FBMUI7YUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbEQsQ0FBQzs7O1FBQUE7S0FFTSxvQ0FBZ0IsR0FBdkIsVUFDRSxTQUFpQixFQUFFLE1BQXFCLEVBQUUsVUFBcUMsRUFBRSxPQUErQjtTQUM5RyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUN4RixDQUFDO0tBRU0seUNBQXFCLEdBQTVCLFVBQTZCLFNBQWlCLEVBQUUsYUFBMEM7U0FDeEYsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQzdFLENBQUM7S0FFTSxvQ0FBZ0IsR0FBdkIsVUFBd0IsU0FBaUI7U0FDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDekQsQ0FBQztLQUVNLG1DQUFlLEdBQXRCO1NBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0tBQ2xELENBQUM7S0FFTSx5Q0FBcUIsR0FBNUI7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0tBQ3JELENBQUM7S0FFTSw0Q0FBd0IsR0FBL0I7U0FDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0tBQ3hELENBQUM7S0FFTSx1Q0FBbUIsR0FBMUIsVUFBMkIsT0FBdUM7U0FDaEUsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDMUQsQ0FBQztLQUVNLDBDQUFzQixHQUE3QixVQUE4QixPQUEwQztTQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUM3RCxDQUFDO0tBRU0sMkNBQXVCLEdBQTlCO1NBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztLQUN2RCxDQUFDO0tBQ0gsZ0JBQUM7QUFBRCxFQUFDLENBbkQ4QixhQUFLLEdBbURuQztBQW5EWSwrQkFBUzs7Ozs7Ozs7O0FDSHRCLDJDQUEwRjtBQUkxRjtLQUNFLG1CQUEyQixhQUE0QjtTQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtLQUN2RCxDQUFDO0tBRUQsc0JBQUksMkJBQUk7Y0FBUjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDOzs7UUFBQTtLQUVELHNCQUFJLGdDQUFTO2NBQWI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7U0FDdEMsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBSSxnQ0FBUztjQUFiO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO1NBQ3RDLENBQUM7OztRQUFBO0tBRU0sc0NBQWtCLEdBQXpCLFVBQTBCLGFBQXFCLEVBQUUsS0FBcUI7U0FDcEUsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsdUNBQTRDLENBQUM7U0FDbkcsTUFBTSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEUsQ0FBQztLQUVNLHNDQUFrQixHQUF6QixVQUEwQixLQUFxQjtTQUM3QyxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSx1Q0FBNEMsQ0FBQztTQUNuRyxNQUFNLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDbkUsQ0FBQztLQUNILGdCQUFDO0FBQUQsRUFBQztBQXpCWSwrQkFBUzs7Ozs7Ozs7O0FDUHRCLHVEQUEyRDtBQUczRDtLQUNFLHVCQUNVLEtBQWEsRUFDYixVQUFxQjtTQUM3QixlQUFlO1NBQ2Ysa0JBQWtCOztTQUhWLFVBQUssR0FBTCxLQUFLLENBQVE7U0FDYixlQUFVLEdBQVYsVUFBVSxDQUFXO0tBRzNCLENBQUM7S0FFTCxzQkFBVywrQkFBSTtjQUFmO2FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDcEIsQ0FBQzs7O1FBQUE7S0FFRCxzQkFBVyxvQ0FBUztjQUFwQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQ3pCLENBQUM7OztRQUFBO0tBRUQsc0JBQVcsb0NBQVM7Y0FBcEI7YUFDRSxNQUFNLENBQUM7aUJBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJO2lCQUNwQixXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsS0FBSyxpQ0FBUyxDQUFDLFNBQVM7aUJBQ25ELGlCQUFpQjtjQUNsQixDQUFDO1NBQ0osQ0FBQzs7O1FBQUE7S0FDSCxvQkFBQztBQUFELEVBQUM7QUF2QlksdUNBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIMUIsd0NBQTJEO0FBQzNELHNEQUF1RjtBQUN2RiwyQ0FZNkI7QUFHN0IsMkNBQXdDO0FBR3hDLEtBQU0saUJBQWlCLEdBQUcsVUFBUyxDQUFXLEVBQUUsQ0FBVztLQUN6RCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDWCxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVM7U0FDM0IsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxZQUFZO1NBQ2pDLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQztBQUM1QyxFQUFDLENBQUM7QUFFRjtLQUFtQyxpQ0FBUztLQUMxQyx1QkFBbUIsYUFBNEIsRUFBVSxTQUFtQjtTQUE1RSxZQUNFLGtCQUFNLGFBQWEsQ0FBQyxTQUNyQjtTQUZ3RCxlQUFTLEdBQVQsU0FBUyxDQUFVOztLQUU1RSxDQUFDO0tBRUQ7Ozs7Ozs7UUFPRztLQUNJLHdDQUFnQixHQUF2QixVQUF3QixTQUFvQjtTQUE1QyxpQkFrQ0M7U0FqQ0MsSUFBTSxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7U0FDaEQsSUFBSSxtQkFBd0MsQ0FBQztTQUU3QyxJQUFJLENBQUM7YUFDSCxtQkFBbUIsR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwyQ0FBZ0QsQ0FBQztTQUMvRyxDQUFDO1NBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYLHdEQUF3RDthQUN4RCxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2pCLENBQUM7U0FFRCw0RUFBNEU7U0FDNUUsSUFBTSxVQUFVLEdBQUcsSUFBSSxtQ0FBc0IsQ0FBcUIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDbEgsbUJBQW1CLENBQUMsZUFBZSxDQUFDLHNDQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBQyxLQUFLO2FBQzdFLElBQU0sUUFBUSxHQUFHLEtBQWlCLENBQUM7YUFDbkMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDcEQsQ0FBQyxFQUFFLFVBQUMsR0FBYTthQUNmLFVBQVUsQ0FBQyxZQUFZLENBQUMsY0FBTSxXQUFJLCtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFqQyxDQUFpQyxDQUFDLENBQUM7U0FDbkUsQ0FBQyxDQUFDLENBQUM7U0FFSCxJQUFNLFdBQVcsR0FBRyxJQUFJLG1DQUFzQixDQUFxQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDNUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLHNDQUFjLENBQUMsYUFBYSxFQUFFLFVBQUMsS0FBSzthQUN0RSxJQUFNLG1CQUFtQixHQUFHLEtBQW9CLENBQUM7YUFDakQsTUFBTSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7U0FDNUUsQ0FBQyxFQUFFLFVBQUMsS0FBa0I7YUFDcEIsV0FBVyxDQUFDLFlBQVksQ0FBQyxjQUFNLFdBQUksK0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBbEQsQ0FBa0QsQ0FBQyxDQUFDO1NBQ3JGLENBQUMsQ0FBQyxDQUFDO1NBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBRTFCLDJCQUEyQjtTQUUzQixNQUFNLENBQUMsT0FBTyxDQUFDO0tBQ2pCLENBQUM7S0FFRCxzQkFBVyxtQ0FBUTtjQUFuQjthQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUM7OztRQUFBO0tBRU0sd0NBQWdCLEdBQXZCLFVBQ0UsU0FBaUIsRUFBRSxNQUFxQixFQUFFLFVBQXFDLEVBQUUsT0FBK0I7U0FDOUcsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsK0JBQW9DLENBQUM7U0FDM0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3pGLENBQUM7S0FFSSw2Q0FBcUIsR0FBNUIsVUFBNkIsU0FBaUIsRUFBRSxhQUEwQztTQUN4RixJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSwrQkFBb0MsQ0FBQztTQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0tBQ2hGLENBQUM7S0FFTSx3Q0FBZ0IsR0FBdkIsVUFBd0IsU0FBaUI7U0FDdkMsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsK0JBQW9DLENBQUM7U0FDM0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQzVELENBQUM7S0FFTSw2Q0FBcUIsR0FBNUI7U0FDRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxrQ0FBc0MsQ0FBQztTQUM3RixNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN0RCxDQUFDO0tBRU0sZ0RBQXdCLEdBQS9CO1NBQ0UsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsa0NBQXNDLENBQUM7U0FDN0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDekQsQ0FBQztLQUVNLDJDQUFtQixHQUExQixVQUEyQixPQUF1QztTQUNoRSxJQUFNLE9BQU8sR0FBRywrQkFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxrQ0FBc0MsQ0FBQztTQUM3RixPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUV4QixNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLHdCQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNuRyxDQUFDO0tBRUksOENBQXNCLEdBQTdCLFVBQThCLE9BQTBDO1NBQ3RFLElBQU0sT0FBTyxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLGtDQUFzQyxDQUFDO1NBQzdGLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQ25DLElBQUksQ0FBQyxRQUFRLEVBQ2Isd0JBQVcsQ0FBQyxVQUFVLEVBQ3RCLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFDekIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFDM0IsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztLQUMxQixDQUFDO0tBRU0sK0NBQXVCLEdBQTlCO1NBQ0UsSUFBTSxPQUFPLEdBQUcsK0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUscUNBQTBDLENBQUM7U0FDakcsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDeEQsQ0FBQztLQUNILG9CQUFDO0FBQUQsRUFBQyxDQXZHa0MscUJBQVMsR0F1RzNDO0FBdkdZLHVDQUFhOzs7Ozs7Ozs7QUM1QjFCLDJDQUF5RDtBQUN6RCwyQ0FBMkM7QUFLM0M7S0FRRSxzQkFBbUIsWUFBK0I7U0FKbEQsdUVBQXVFO1NBQ3ZFLG9GQUFvRjtTQUM1RSxvQkFBZSxHQUFZLEtBQUssQ0FBQztTQUd2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDeEMsQ0FBQztLQUVNLDRCQUFLLEdBQVosVUFBYSxHQUFXO1NBQ3RCLGlCQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUU5QixzREFBc0Q7U0FDdEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQzthQUVqQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQixDQUFDO0tBQ0gsQ0FBQztLQUVNLDBCQUFHLEdBQVYsVUFBVyxHQUFXO1NBQ3BCLGlCQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3BDLENBQUM7S0FFTSw2QkFBTSxHQUFiO1NBQ0UseUNBQXlDO1NBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUNsRCxDQUFDO0tBRUQsc0JBQVcsb0NBQVU7Y0FBckI7YUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUMxQixDQUFDOzs7UUFBQTtLQUVNLGdDQUFTLEdBQWhCO1NBQUEsaUJBb0JDO1NBbkJDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBRWpDLHFEQUFxRDtTQUNyRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRSxDQUFDO1NBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FFNUIsbURBQW1EO1NBQ25ELElBQU0sZUFBZSxHQUFHLCtCQUFrQixDQUFDLFFBQVEsQ0FBQyxVQUFVLHlDQUMxQixDQUFDO1NBRXJDLE1BQU0sQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFxQixxQkFBVzthQUNsRyxLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQzthQUM3QixLQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQ3JCLENBQUMsQ0FBQyxDQUFDO0tBQ0wsQ0FBQztLQUVNLDBCQUFHLEdBQVYsVUFBVyxHQUFXLEVBQUUsS0FBYTtTQUNuQyxpQkFBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7U0FDbkUsaUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsaUNBQWlDO1NBQ3JFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1NBRWpDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7S0FDMUIsQ0FBQztLQUVPLHlDQUFrQixHQUExQixVQUEyQixZQUErQjtTQUN4RCxpQkFBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDaEQsaUJBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1NBRTlFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsY0FBYyxDQUFDO1NBRXBELDRCQUE0QjtTQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztLQUMzQixDQUFDO0tBRUQ7OztRQUdHO0tBQ0ssZ0RBQXlCLEdBQWpDO1NBQ0UsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7YUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1NBQ2xGLENBQUM7S0FDSCxDQUFDO0tBQ0gsbUJBQUM7QUFBRCxFQUFDO0FBeEZZLHFDQUFZOzs7Ozs7OztBM0JQekI7Ozs7SUFJRzs7QUFFSCwrQ0FBZ0Q7QUFBdkMsc0RBQWE7QUFDdEIsdUNBQWdDO0FBQXZCLDhCQUFLIiwiZmlsZSI6IkB0YWJsZWF1L2FkZGluLWFwaS4wLjIuMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRhYmxlYXVcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1widGFibGVhdVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvblxuICoqLyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9kaXN0L1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9ib290c3RyYXAgODc5MGMxZmE2YzU4NmIwOTQyMmVcbiAqKi8iLCIvKipcclxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cclxuICpcclxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxyXG4gKi9cclxuXHJcbi8vIER1ZSB0byB0aGUgd2F5IHdlIGNvbmZpZ3VyZWQgd2VicGFjaywgd2Ugc2hvdWxkIGJlIGV4cG9ydGluZyB0aGluZ3Mgd2hpY2ggd2lsbCBiZSB1bmRlclxyXG4vLyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgXCJ0YWJsZWF1XCIuIEV4cG9ydCBldmVyeXRoaW5nIHdlIHdhbnQgdG8gYmUgdmlzaWJsZSB1bmRlciB0YWJsZWF1XHJcbi8vIGZyb20gdGhpcyBmaWxlLlxyXG5cclxuaW1wb3J0IHsgQWRkSW4gfSBmcm9tICcuL0V4dGVybmFsTmFtZXNwYWNlcy9BZGRJbic7XHJcbmltcG9ydCB7IEFkZEluSW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvQWRkSW5JbXBsJztcclxuXHJcbmNvbnN0IGFkZEluSW1wbCA9IG5ldyBBZGRJbkltcGwoKTtcclxuZXhwb3J0IGNvbnN0IGFkZEluID0gbmV3IEFkZEluKGFkZEluSW1wbCk7XHJcblxyXG4vLyBFeHBvcnQgRW51bXNcclxuZXhwb3J0IHtcclxuICBGaWx0ZXJVcGRhdGVUeXBlLFxyXG4gIE51bGxPcHRpb24sXHJcbiAgVGFibGVhdUV2ZW50VHlwZVxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9BZGRJbkFwaS50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJbkltcGwgfSBmcm9tICcuLi9JbnRlcm5hbC9BZGRJbkltcGwnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBBZGRJbiBuYW1lc3BhY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWRkSW4gaW1wbGVtZW50cyBDb250cmFjdC5BZGRJbiB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgYWRkSW5JbXBsOiBBZGRJbkltcGwpIHtcclxuICAgIHRoaXMuYWRkSW5JbXBsID0gYWRkSW5JbXBsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkYXNoYm9hcmRDb250ZW50KCk6IENvbnRyYWN0LkRhc2hib2FyZENvbnRlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLmRhc2hib2FyZENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGVudmlyb25tZW50KCk6IENvbnRyYWN0LkVudmlyb25tZW50IHtcclxuICAgIHJldHVybiB0aGlzLmFkZEluSW1wbC5lbnZpcm9ubWVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2V0dGluZ3MoKTogQ29udHJhY3QuU2V0dGluZ3Mge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLnNldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB1aSgpOiBDb250cmFjdC5VSSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRJbkltcGwuaW5pdGlhbGl6ZUFzeW5jKCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9FeHRlcm5hbE5hbWVzcGFjZXMvQWRkSW4udHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEFkZEluRGFzaGJvYXJkSW5mbyxcclxuICBBZGRJblNldHRpbmdzSW5mbyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLFxyXG4gIFNoZWV0UGF0aCxcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIHJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IERhc2hib2FyZCB9IGZyb20gJy4uL0Rhc2hib2FyZCc7XHJcbmltcG9ydCB7IERhc2hib2FyZENvbnRlbnQgfSBmcm9tICcuLi9FeHRlcm5hbE5hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudCc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuLi9FeHRlcm5hbE5hbWVzcGFjZXMvU2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBBZGRJblNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VzL0FkZEluU2VydmljZU5hbWVzJztcclxuaW1wb3J0IHsgSW5pdGlhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvSW5pdGlhbGl6YXRpb25TZXJ2aWNlJztcclxuaW1wb3J0IHsgcmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzIH0gZnJvbSAnLi4vU2VydmljZXMvUmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzJztcclxuaW1wb3J0IHsgVmVyc2lvbk51bWJlciB9IGZyb20gJy4uL1ZlcnNpb25OdW1iZXInO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRJbXBsIH0gZnJvbSAnLi9EYXNoYm9hcmRJbXBsJztcclxuaW1wb3J0IHsgU2V0dGluZ3NJbXBsIH0gZnJvbSAnLi9TZXR0aW5nc0ltcGwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkZEluSW1wbCB7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6YXRpb25Qcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICBwdWJsaWMgZGFzaGJvYXJkQ29udGVudDogRGFzaGJvYXJkQ29udGVudDtcclxuICBwdWJsaWMgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xyXG4gIHB1YmxpYyBzZXR0aW5nczogU2V0dGluZ3M7XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZSkge1xyXG4gICAgICB0aGlzLl9pbml0aWFsaXphdGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgLy8gRmlyc3QgdGhpbmcgd2Ugd2FudCB0byBkbyBpcyBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBkZXNrdG9wIGRpc3BhdGNoZXIgYWxyZWFkeSByZWdpc3RlcmVkIGZvciB1c1xyXG4gICAgICAgIGlmIChJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuaGFzRGVza3RvcEFwaURpc3BhdGNoZXJQcm9taXNlKCkpIHtcclxuICAgICAgICAgIC8vIFJ1bm5pbmcgaW4gZGVza3RvcCwgdXNlIHRoaXMgcHJvbWlzZVxyXG4gICAgICAgICAgY29uc3QgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlID0gSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLmdldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSgpO1xyXG4gICAgICAgICAgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlLnRoZW4odGhpcy5vbkRpc3BhdGNoZXJSZWNlaXZlZC5iaW5kKHRoaXMpKS50aGVuKCgpID0+IHsgcmVzb2x2ZSgpOyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVqZWN0KCdOb3QgcnVubmluZyBpbiBkZXNrdG9wLiBTZXJ2ZXIgc3VwcG9ydCBjb21pbmcgc29vbiEnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXphdGlvblByb21pc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRGlzcGF0Y2hlclJlY2VpdmVkKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgZGlzcGF0Y2hlci5zZXRWZXJzaW9uTnVtYmVyKFZlcnNpb25OdW1iZXIuSW5zdGFuY2UpO1xyXG5cclxuICAgIC8vIENhbGwgdG8gcmVnaXN0ZXIgYWxsIHRoZSBzZXJ2aWNlcyB3aGljaCB3aWxsIHVzZSB0aGUgbmV3bHkgaW5pdGlhbGl6ZWQgZGlzcGF0Y2hlclxyXG4gICAgcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcclxuICAgIHJlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcyhkaXNwYXRjaGVyKTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcnZpY2UgYW5kIGluaXRpYWxpemUgdGhpcyBhZGQtaW5cclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEluaXRpYWxpemF0aW9uU2VydmljZT4oXHJcbiAgICAgIEFkZEluU2VydmljZU5hbWVzLkluaXRpYWxpemF0aW9uU2VydmljZSk7XHJcblxyXG4gICAgcmV0dXJuIGluaXRpYWxpemF0aW9uU2VydmljZS5pbml0aWFsaXplRGFzaGJvYXJkQWRkSW5Bc3luYygpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQuYWRkSW5JbnN0YW5jZS5sb2NhdG9yLmRhc2hib2FyZFBhdGgpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rhc2hib2FyZFBhdGggaXMgdW5kZWZpbmVkJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkQ29udGVudCA9IHRoaXMuaW5pdGlhbGl6ZURhc2hib2FyZENvbnRlbnQocmVzdWx0LmFkZGluRGFzaGJvYXJkSW5mbywgcmVzdWx0LmFkZEluSW5zdGFuY2UubG9jYXRvci5kYXNoYm9hcmRQYXRoKTtcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IG5ldyBFbnZpcm9ubWVudChyZXN1bHQuYWRkSW5FbnZpcm9ubWVudCk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhyZXN1bHQuYWRkSW5TZXR0aW5nc0luZm8pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVEYXNoYm9hcmRDb250ZW50KGluZm86IEFkZEluRGFzaGJvYXJkSW5mbywgc2hlZXRQYXRoOiBTaGVldFBhdGgpOiBEYXNoYm9hcmRDb250ZW50IHtcclxuICAgIGNvbnN0IGRhc2hib2FyZEltcGwgPSBuZXcgRGFzaGJvYXJkSW1wbChpbmZvLCBzaGVldFBhdGgpO1xyXG4gICAgY29uc3QgZGFzaGJvYXJkID0gbmV3IERhc2hib2FyZChkYXNoYm9hcmRJbXBsKTtcclxuICAgIHJldHVybiBuZXcgRGFzaGJvYXJkQ29udGVudChkYXNoYm9hcmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplU2V0dGluZ3Moc2V0dGluZ3NJbmZvOiBBZGRJblNldHRpbmdzSW5mbyk6IFNldHRpbmdzIHtcclxuICAgIGNvbnN0IHNldHRpbmdzSW1wbCA9IG5ldyBTZXR0aW5nc0ltcGwoc2V0dGluZ3NJbmZvKTtcclxuICAgIHJldHVybiBuZXcgU2V0dGluZ3Moc2V0dGluZ3NJbXBsKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ludGVybmFsL0FkZEluSW1wbC50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvRW51bXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9Nb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZS9Ob3RpZmljYXRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvUGFyYW1ldGVycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlL1ZlcmJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UvVmVyc2lvbk51bWJlcic7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9BcGlJbnRlcm5hbENvbnRyYWN0LnRzXG4gKiovIiwiZXhwb3J0IGVudW0gQWRkSW5Db250ZXh0IHtcclxuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxyXG4gIFNlcnZlciA9ICdzZXJ2ZXInLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQWRkSW5Nb2RlIHtcclxuICBBdXRob3JpbmcgPSAnYXV0aG9yaW5nJyxcclxuICBWaWV3aW5nID0gJ3ZpZXdpbmcnLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRGFzaGJvYXJkT2JqZWN0VHlwZSB7XHJcbiAgQmxhbmsgPSAnYmxhbmsnLFxyXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxyXG4gIFF1aWNrRmlsdGVyID0gJ3F1aWNrLWZpbHRlcicsXHJcbiAgUGFyYW1ldGVyQ29udHJvbCA9ICdwYXJhbWV0ZXItY29udHJvbCcsXHJcbiAgUGFnZUZpbHRlciA9ICdwYWdlLWZpbHRlcicsXHJcbiAgTGVnZW5kID0gJ2xlZ2VuZCcsXHJcbiAgVGl0bGUgPSAndGl0bGUnLFxyXG4gIFRleHQgPSAndGV4dCcsXHJcbiAgSW1hZ2UgPSAnaW1hZ2UnLFxyXG4gIFdlYlBhZ2UgPSAnd2ViLXBhZ2UnLFxyXG4gIEFkZEluID0gJ2FkZGluJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgU3RyaW5nID0gJ3N0cmluZycsXHJcbiAgSW50ID0gJ2ludCcsXHJcbiAgRmxvYXQgPSAnZmxvYXQnLFxyXG4gIEJvb2wgPSAnYm9vbCcsXHJcbiAgRGF0ZSA9ICdkYXRlJyxcclxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxyXG4gIFNwYXRpYWwgPSAnc3BhdGlhbCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRW5jb2RlZERhdGFUeXBlIHtcclxuICBOdW1iZXIgPSAnbnVtYmVyJyxcclxuICBTdHJpbmcgPSAnc3RyaW5nJyxcclxuICBEYXRlID0gJ2RhdGUnLFxyXG4gIEJvb2xlYW4gPSAnYm9vbGVhbidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXJyb3JDb2RlIHtcclxuICBTZXJ2ZXJFcnJvciA9ICdzZXJ2ZXItZXJyb3InLFxyXG4gIEludmFsaWRBZ2dyZWdhdGlvbkZpZWxkTmFtZSA9ICdpbnZhbGlkLWFnZ3JlZ2F0aW9uLWZpZWxkLW5hbWUnLFxyXG4gIEludmFsaWRGaWx0ZXJGaWVsZE5hbWUgPSAnaW52YWxpZC1maWx0ZXItZmllbGRuYW1lJyxcclxuICBJbnZhbGlkRmlsdGVyRmllbGRWYWx1ZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZSdcclxufVxyXG5cclxuLyoqXHJcbiAqICBUaGUgZGlmZmVyZW50IHVwZGF0ZSB0eXBlcyBmb3IgYXBwbHlpbmcgZmlsdGVyLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmlsdGVyVXBkYXRlVHlwZSB7XHJcbiAgQWRkID0gJ2FkZCcsXHJcbiAgQWxsID0gJ2FsbCcsXHJcbiAgUmVwbGFjZSA9ICdyZXBsYWNlJyxcclxuICBSZW1vdmUgPSAncmVtb3ZlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTaGVldFR5cGUge1xyXG4gIERhc2hib2FyZCA9ICdkYXNoYm9hcmQnLFxyXG4gIFN0b3J5ID0gJ3N0b3J5JyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcclxuICBBZGRpbiA9ICdhZGRpbidcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRG9tYWluUmVzdHJpY3Rpb25UeXBlIHtcclxuICBBbGwgPSAnYWxsJyxcclxuICBMaXN0ID0gJ2xpc3QnLFxyXG4gIFJhbmdlID0gJ3JhbmdlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRlU3RlcFBlcmlvZCB7XHJcbiAgWWVhcnMgPSAneWVhcnMnLFxyXG4gIFF1YXJ0ZXJzID0gJ3F1YXJ0ZXJzJyxcclxuICBNb250aHMgPSAnbW9udGhzJyxcclxuICBXZWVrcyA9ICd3ZWVrcycsXHJcbiAgRGF5cyA9ICdkYXlzJyxcclxuICBIb3VycyA9ICdob3VycycsXHJcbiAgTWludXRlcyA9ICdtaW51dGVzJyxcclxuICBTZWNvbmRzID0gJ3NlY29uZHMnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgb3B0aW9uIGZvciBzcGVjaWZ5aW5nIHdoaWNoIHZhbHVlcyB0byBpbmNsdWRlIGZvciBmaWx0ZXJpbmcuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBOdWxsT3B0aW9uIHtcclxuICBOdWxsVmFsdWVzID0gJ251bGx2YWx1ZXMnLFxyXG4gIE5vbk51bGxWYWx1ZXMgPSAnbm9ubnVsbHZhbHVlcycsXHJcbiAgQWxsVmFsdWVzID0gJ2FsbHZhbHVlcydcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL0VudW1zLnRzXG4gKiovIiwiaW1wb3J0IHsgTW9kZWwgfSBmcm9tICcuL01vZGVscyc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbklkIH0gZnJvbSAnLi9Ob3RpZmljYXRpb25zJztcclxuaW1wb3J0IHsgVmVyYklkIH0gZnJvbSAnLi9WZXJicyc7XHJcbmltcG9ydCB7IFZlcnNpb25OdW1iZXIgfSBmcm9tICcuL1ZlcnNpb25OdW1iZXInO1xyXG5cclxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uSGFuZGxlciA9IChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4gdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVBhcmFtZXRlcnMge1xyXG4gIFtrZXk6IHN0cmluZ106IE1vZGVsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVSZXNwb25zZSB7XHJcbiAgcmVzdWx0OiBNb2RlbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb24ge1xyXG4gIG5vdGlmaWNhdGlvbklkOiBOb3RpZmljYXRpb25JZDtcclxuICBkYXRhOiBNb2RlbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEFwaURpc3BhdGNoZXIge1xyXG4gIHNldFZlcnNpb25OdW1iZXIodmVyc2lvbk51bWJlcjogVmVyc2lvbk51bWJlcik6IHZvaWQ7XHJcbiAgZXhlY3V0ZSh2ZXJiOiBWZXJiSWQsIHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzKTogUHJvbWlzZTxFeGVjdXRlUmVzcG9uc2U+O1xyXG4gIHJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihoYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZDtcclxuICB1bnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlcihoYW5kbGVyOiBOb3RpZmljYXRpb25IYW5kbGVyKTogdm9pZDtcclxufVxyXG5cclxuZGVjbGFyZSBnbG9iYWwge1xyXG4gIGludGVyZmFjZSBXaW5kb3cgeyBfX3RhYmxlYXVEZXNrdG9wRGlzcGF0Y2hlcjogUHJvbWlzZTxJbnRlcm5hbEFwaURpc3BhdGNoZXI+OyB9XHJcbn1cclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyIHtcclxuICBleHBvcnQgZnVuY3Rpb24gZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk6IFByb21pc2U8SW50ZXJuYWxBcGlEaXNwYXRjaGVyPiB7XHJcbiAgICByZXR1cm4gd2luZG93Ll9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGZ1bmN0aW9uIGhhc0Rlc2t0b3BBcGlEaXNwYXRjaGVyUHJvbWlzZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIUludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5nZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCBmdW5jdGlvbiBzZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoZGlzcGF0Y2hlcjogUHJvbWlzZTxJbnRlcm5hbEFwaURpc3BhdGNoZXI+KTogdm9pZCB7XHJcbiAgICB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9zcmMvaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlci50c1xuICoqLyIsImV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvbklkIHtcclxuICBTZWxlY3RlZE1hcmtzQ2hhbmdlZCA9ICdzZWxlY3RlZC1tYXJrcy1jaGFuZ2VkJyxcclxuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJyxcclxuICBGaWx0ZXJDaGFuZ2VkID0gJ2ZpbHRlci1jaGFuZ2VkJ1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvTm90aWZpY2F0aW9ucy50c1xuICoqLyIsImV4cG9ydCBlbnVtIFBhcmFtZXRlcklkIHtcclxuICBBZGRJbkxvY2F0b3IgPSAnYWRkLWluLWxvY2F0b3InLFxyXG4gIEFkZEluQm9vdHN0cmFwSW5mbyA9ICdhZGQtaW4tYm9vdHN0cmFwLWluZm8nLFxyXG4gIEFkZEluU2V0dGluZ3NJbmZvID0gJ2FkZC1pbi1zZXR0aW5ncy1pbmZvJyxcclxuICBWaXN1YWxJZCA9ICd2aXN1YWwtaWQnLFxyXG4gIFNoZWV0UGF0aCA9ICdzaGVldC1wYXRoJyxcclxuICBJZ25vcmVBbGlhc2VzID0gJ2lnbm9yZS1hbGlhc2VzJyxcclxuICBJZ25vcmVTZWxlY3Rpb24gPSAnaWdub3JlLXNlbGVjdGlvbicsXHJcbiAgSW5jbHVkZUFsbENvbHVtbnMgPSAnaW5jbHVkZS1hbGwtY29sdW1ucycsXHJcbiAgTWF4Um93cyA9ICdtYXgtcm93cycsXHJcbiAgVW5kZXJseWluZ0RhdGFUYWJsZSA9ICd1bmRlcmx5aW5nLWRhdGEtdGFibGUnLFxyXG4gIFVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlID0gJ3VuZGVybHlpbmctc3VtbWFyeS1kYXRhLXRhYmxlJyxcclxuICBTZXR0aW5nc1ZhbHVlcyA9ICdzZXR0aW5ncy12YWx1ZXMnLFxyXG4gIFNlbGVjdGVkRGF0YSA9ICdzZWxlY3RlZC1kYXRhJyxcclxuICBIaWdobGlnaHRlZERhdGEgPSAnaGlnaGxpZ2h0ZWQtZGF0YScsXHJcblxyXG4gICAvLyBGaWx0ZXIgUGFyYW1zXHJcbiAgRmllbGROYW1lID0gJ2ZpZWxkLW5hbWUnLFxyXG4gIEZpbHRlclZhbHVlcyA9ICdmaWx0ZXItdmFsdWVzJyxcclxuICBGaWx0ZXJVcGRhdGVUeXBlID0gJ2ZpbHRlci11cGRhdGUtdHlwZScsXHJcbiAgSXNFeGNsdWRlTW9kZSA9ICdpcy1leGNsdWRlJyxcclxuICBGaWx0ZXJSYW5nZU1pbiA9ICdmaWx0ZXItcmFuZ2UtbWluJyxcclxuICBGaWx0ZXJSYW5nZU1heCA9ICdmaWx0ZXItcmFuZ2UtbWF4JyxcclxuICBGaWx0ZXJSYW5nZU51bGxPcHRpb24gPSAnZmlsdGVyLXJhbmdlLW51bGwtb3B0aW9uJyxcclxuXHJcbiAgV29ya3NoZWV0TmFtZSA9ICd3b3Jrc2hlZXQtbmFtZScsXHJcbiAgRGFzaGJvYXJkTmFtZSA9ICdkYXNoYm9hcmQnLFxyXG5cclxuICBQYXJhbWV0ZXJJbmZvID0gJ3BhcmFtZXRlci1pbmZvJyxcclxuICBQYXJhbWV0ZXJJbmZvcyA9ICdwYXJhbWV0ZXItaW5mb3MnLFxyXG4gIFBhcmFtZXRlckNhcHRpb24gPSAncGFyZW1ldGVyLWNhcHRpb24nLFxyXG4gIFBhcmFtZXRlckZpZWxkTmFtZSA9ICdwYXJhbWV0ZXItZmllbGQtbmFtZScsXHJcbiAgUGFyYW1ldGVyVmFsdWUgPSAncGFyYW1ldGVyLXZhbHVlJ1xyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L3NyYy9pbnRlcmZhY2UvUGFyYW1ldGVycy50c1xuICoqLyIsIi8vIERlY2xhcmUgdGhpcyBrZXkgdHlwZSBhbmQgZXhwb3J0IHRoZSBOb3RpZmljYXRpb25JZCB0byBtYWtlIHRoaXMgYmVoYXZlIGxpa2UgYSBzdHJpbmcgZW51bVxyXG5leHBvcnQgZW51bSBWZXJiSWQge1xyXG4gIEFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXIgPSAnY2F0ZWdvcmljYWwtZmlsdGVyJyxcclxuICBBcHBseVJhbmdlRmlsdGVyID0gJ3JhbmdlLWZpbHRlcicsXHJcbiAgQ2xlYXJGaWx0ZXIgPSAnY2xlYXItZmlsdGVyJyxcclxuICBJbml0aWFsaXplQWRkSW4gPSAnaW5pdGlhbGl6ZS1hZGQtaW4nLFxyXG4gIEdldERhdGFTdW1tYXJ5RGF0YSA9ICdnZXQtc3VtbWFyeS1kYXRhJyxcclxuICBHZXRVbmRlcmx5aW5nRGF0YSA9ICdnZXQtdW5kZXJseWluZy1kYXRhJyxcclxuICBTYXZlQWRkSW5TZXR0aW5ncyA9ICdzYXZlLWFkZC1pbi1zZXR0aW5ncycsXHJcbiAgR2V0U2VsZWN0ZWRNYXJrcyA9ICdnZXQtc2VsZWN0ZWQtbWFya3MnLFxyXG4gIEdldEhpZ2hsaWdodGVkTWFya3MgPSAnZ2V0LWhpZ2hsaWdodGVkLW1hcmtzJyxcclxuICBHZXRQYXJhbWV0ZXJzRm9yU2hlZXQgPSAnZ2V0LXBhcmFtZXRlcnMtZm9yLXNoZWV0JyxcclxuICBGaW5kUGFyYW1ldGVyID0gJ2ZpbmQtcGFyYW1ldGVyJyxcclxuICBDaGFuZ2VQYXJhbWV0ZXJWYWx1ZSA9ICdjaGFuZ2UtcGFyYW1ldGVyLXZhbHVlJyxcclxuICBDbGVhclNlbGVjdGVkTWFya3MgPSAnY2xlYXItc2VsZWN0ZWQtbWFya3MnXHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3Qvc3JjL2ludGVyZmFjZS9WZXJicy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudExpc3RlbmVyTWFuYWdlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vUGFyYW1ldGVyJztcclxuZXhwb3J0IHsgUG9pbnQgfSBmcm9tICcuL1BvaW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXInO1xyXG5leHBvcnQgeyBTaXplIH0gZnJvbSAnLi9TaXplJztcclxuZXhwb3J0ICogZnJvbSAnLi9Nb2RlbHMvR2V0RGF0YU1vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL0ZpbHRlckNoYW5nZWRFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVFdmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcclxuZXhwb3J0ICogZnJvbSAnLi9TZXJ2aWNlcy9HZXREYXRhU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvRmlsdGVyU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvTm90aWZpY2F0aW9uU2VydmljZSc7XHJcbmV4cG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi9TZXJ2aWNlcy9QYXJhbWV0ZXJzU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvU2VsZWN0aW9uU2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5JztcclxuZXhwb3J0ICogZnJvbSAnLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzJztcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9BcGlTaGFyZWQudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGFzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyQ29udHJhY3QsXHJcbiAgVGFibGVhdUV2ZW50SGFuZGxlckZuLFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgVGFibGVhdUV2ZW50VW5yZWdpc3RlckZuXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFNpbmdsZUV2ZW50TWFuYWdlciB9IGZyb20gJy4vU2luZ2xlRXZlbnRNYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyBkZXNpZ25lZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBoYW5kbGVycyBmcm9tIGEgdXNlci4gT25seSB0aG9zZSBldmVudHNcclxuICogd2hpY2ggYXJlIGFkZGVkIHZpYSBBZGROZXdFdmVudFR5cGUgd2lsbCBiZSBzdXBwb3J0ZWQgYnkgdGhpcyBpbnN0YW5jZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdGVuZXJNYW5hZ2VyIGltcGxlbWVudHMgRXZlbnRMaXN0ZW5lck1hbmFnZXJDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBfZXZlbnRMaXN0ZW5lck1hbmFnZXJzOiB7IFt0YWJsZWF1RXZlbnRUeXBlOiBzdHJpbmddOiBTaW5nbGVFdmVudE1hbmFnZXI7IH07XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2VycyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlOiBUYWJsZWF1RXZlbnRUeXBlLCBoYW5kbGVyOiBUYWJsZWF1RXZlbnRIYW5kbGVyRm4pOiBUYWJsZWF1RXZlbnRVbnJlZ2lzdGVyRm4ge1xyXG4gICAgaWYgKCF0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnMuaGFzT3duUHJvcGVydHkoZXZlbnRUeXBlKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiAke2V2ZW50VHlwZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50VHlwZV0uYWRkRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogVGFibGVhdUV2ZW50VHlwZSwgaGFuZGxlcjogVGFibGVhdUV2ZW50SGFuZGxlckZuKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vycy5oYXNPd25Qcm9wZXJ0eShldmVudFR5cGUpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZXZlbnQgdHlwZSA6ICR7ZXZlbnRUeXBlfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5yZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZE5ld0V2ZW50VHlwZShldmVudE1hbmFnZXI6IFNpbmdsZUV2ZW50TWFuYWdlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzW2V2ZW50TWFuYWdlci5ldmVudFR5cGVdID0gZXZlbnRNYW5hZ2VyO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50TGlzdGVuZXJNYW5hZ2VyLnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBEYXRhVHlwZSxcclxuICBEYXRhVmFsdWUsXHJcbiAgUGFyYW1ldGVyIGFzIFBhcmFtZXRlckNvbnRyYWN0LFxyXG4gIFBhcmFtZXRlckRvbWFpblJlc3RyaWN0aW9uIGFzIFBhcmFtZXRlckRvbWFpblJlc3RyaWN0aW9uQ29udHJhY3QsXHJcbiAgU2hlZXQgYXMgU2hlZXRDb250cmFjdFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBFdmVudExpc3RlbmVyTWFuYWdlciB9IGZyb20gJy4vRXZlbnRMaXN0ZW5lck1hbmFnZXInO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJJbXBsIH0gZnJvbSAnLi9JbnRlcm5hbC9QYXJhbWV0ZXJJbXBsJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUGFyYW1ldGVyIGNvbnRyYWN0LiBDYWxscyBkb3duIHRvIHRoZSBpbXBsXHJcbiAqIGNsYXNzIGZvciBhbG1vc3QgYWxsIG9mIHRoZSB3b3JrIGl0IGRvZXMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyIGV4dGVuZHMgRXZlbnRMaXN0ZW5lck1hbmFnZXIgaW1wbGVtZW50cyBQYXJhbWV0ZXJDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyYW1ldGVySW1wbDogUGFyYW1ldGVySW1wbCwgc2hlZXQ6IFNoZWV0Q29udHJhY3QpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBvdXIgZXZlbnQgaGFuZGxpbmcgZm9yIHRoaXMgY2xhc3NcclxuICAgIHRoaXMucGFyYW1ldGVySW1wbC5pbml0aWFsaXplRXZlbnRzKHNoZWV0KS5mb3JFYWNoKGUgPT4gdGhpcy5hZGROZXdFdmVudFR5cGUoZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBEYXRhVmFsdWUge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5jdXJyZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IERhdGFUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuZGF0YVR5cGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFsbG93YWJsZVZhbHVlcygpOiBQYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbkNvbnRyYWN0IHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuYWxsb3dhYmxlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVZhbHVlQXN5bmMobmV3VmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlKTogUHJvbWlzZTxEYXRhVmFsdWU+IHtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvUGFyYW1ldGVyLnRzXG4gKiovIiwiaW1wb3J0IHsgUG9pbnQgYXMgUG9pbnRDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5leHBvcnQgY2xhc3MgUG9pbnQgaW1wbGVtZW50cyBQb2ludENvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfeDogbnVtYmVyLCBwcml2YXRlIF95OiBudW1iZXIpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl94O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5feTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9Qb2ludC50c1xuICoqLyIsImltcG9ydCB7IFNpemUgYXMgU2l6ZUNvbnRyYWN0IH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTaXplIGltcGxlbWVudHMgU2l6ZUNvbnRyYWN0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXIsIHByaXZhdGUgX3dpZHRoOiBudW1iZXIpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgd2lkdGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl93aWR0aDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TaXplLnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBDb2x1bW4gYXMgQ29sdW1uQ29udHJhY3QsXHJcbiAgRGF0YVRhYmxlIGFzIERhdGFUYWJsZUNvbnRyYWN0LFxyXG4gIERhdGFUeXBlLFxyXG4gIERhdGFWYWx1ZSBhcyBEYXRhVmFsdWVDb250cmFjdFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlIGltcGxlbWVudHMgRGF0YVRhYmxlQ29udHJhY3Qge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGF0YTogQXJyYXk8QXJyYXk8RGF0YVZhbHVlQ29udHJhY3Q+PixcclxuICAgIHByaXZhdGUgX2NvbHVtbnM6IEFycmF5PENvbHVtbkNvbnRyYWN0PixcclxuICAgIHByaXZhdGUgX3RvdGFsUm93Q291bnQ6IG51bWJlcixcclxuICAgIHByaXZhdGUgX2lzU3VtbWFyeURhdGE6IGJvb2xlYW4pIHtcclxuICAgICAgICAvLyBUT0RPOiBnZXQgcmlkIG9mIHRoaXMgaW4gcmVkZXNpZ24uXHJcbiAgICAgICAgdGhpcy5fbmFtZSA9IF9pc1N1bW1hcnlEYXRhID8gJ1N1bW1hcnkgRGF0YSBUYWJsZScgOiAnVW5kZXJseWluZyBEYXRhIFRhYmxlJztcclxuICAgIH1cclxuXHJcbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBBcnJheTxBcnJheTxEYXRhVmFsdWVDb250cmFjdD4+IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IEFycmF5PENvbHVtbkNvbnRyYWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdG90YWxSb3dDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUm93Q291bnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzU3VtbWFyeURhdGEoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTdW1tYXJ5RGF0YTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW4gaW1wbGVtZW50cyBDb2x1bW5Db250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBwcml2YXRlIF9kYXRhVHlwZTogRGF0YVR5cGUsIC8vIFRPRE86IHRoaXMgc2hvdWRsIGJlIGFuIGVudW0gdHlwZVxyXG4gICAgcHJpdmF0ZSBfaXNSZWZlcmVuY2VkOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBfaW5kZXg6IG51bWJlcikge31cclxuXHJcbiAgcHVibGljIGdldCBmaWVsZE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IERhdGFUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhVHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNSZWZlcmVuY2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVmZXJlbmNlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9pbmRleDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhVmFsdWUgaW1wbGVtZW50cyBEYXRhVmFsdWVDb250cmFjdCB7XHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueSxcclxuICAgIHByaXZhdGUgX2Zvcm1hdHRlZFZhbHVlOiBzdHJpbmcpIHt9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybWF0dGVkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZTtcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL01vZGVscy9HZXREYXRhTW9kZWxzLnRzXG4gKiovIiwiZXhwb3J0IGNsYXNzIFRhYmxlYXVFeGNlcHRpb25zIHtcclxuICAvLyBUT0RPLCBBcGlFcnJvckNvZGVzIG5lZWQgdG8gYmUgYWRkZWQgdG8gZXh0ZXJuYWwgaW50ZXJmYWNlcy5cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V4Y2VwdGlvbnMvVGFibGVhdUV4Y2VwdGlvbnMudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEZpbHRlcixcclxuICBGaWx0ZXJDaGFuZ2VkRXZlbnQgYXMgRmlsdGVyQ2hhbmdlZEV2ZW50Q29udHJhY3QsXHJcbiAgVGFibGVhdUV2ZW50VHlwZSxcclxuICBXb3Jrc2hlZXQgYXMgV29ya3NoZWV0Q29udHJhY3QsXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFRhYmxlYXVXb3Jrc2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVdvcmtzaGVldEV2ZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBUYWJsZWF1V29ya3NoZWV0RXZlbnQgaW1wbGVtZW50cyBGaWx0ZXJDaGFuZ2VkRXZlbnRDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHdvcmtzaGVldDogV29ya3NoZWV0Q29udHJhY3QsIHByaXZhdGUgX2ZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihUYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQsIHdvcmtzaGVldCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpZWxkTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWx0ZXJBc3luYygpOiBQcm9taXNlPEZpbHRlcj4ge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxtZW1lbnRlZCcpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9GaWx0ZXJDaGFuZ2VkRXZlbnQudHNcbiAqKi8iLCIvKipcclxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cclxuICpcclxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vRGF0YVNvdXJjZUludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0VudW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9FdmVudEludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0ZpbHRlckludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL0dldERhdGFJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9QYXJhbWV0ZXJJbnRlcmZhY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9TaGVldEludGVyZmFjZXMnO1xyXG5leHBvcnQgeyBBZGRJbiB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0FkZEluJztcclxuZXhwb3J0IHsgRGFzaGJvYXJkQ29udGVudCB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Rhc2hib2FyZENvbnRlbnQnO1xyXG5leHBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4vRXh0ZXJuYWxOYW1lc3BhY2VzL0Vudmlyb25tZW50JztcclxuZXhwb3J0IHsgU2V0dGluZ3MgfSBmcm9tICcuL0V4dGVybmFsTmFtZXNwYWNlcy9TZXR0aW5ncyc7XHJcbmV4cG9ydCB7IFVJIH0gZnJvbSAnLi9FeHRlcm5hbE5hbWVzcGFjZXMvVUknO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvQXBpRXh0ZXJuYWxDb250cmFjdC50c1xuICoqLyIsIi8vIEFsbCBlbnVtIHZhbHVlcyBtYWRlIGF2YWlsYWJsZSB0byBBZGRJbiBkZXZlbG9wZXJzLlxyXG4vLyBFbnVtcyBzaG91bGQgYmUga2VwdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuXHJcblxyXG4vKipcclxuICogVGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIEFkZEluIGlzIGN1cnJlbnRseSBydW5uaW5nLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gQWRkSW5Db250ZXh0IHtcclxuICBEZXNrdG9wID0gJ2Rlc2t0b3AnLFxyXG4gIFNlcnZlciA9ICdzZXJ2ZXInLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBtb2RlIGluIHdoaWNoIHRoZSBBZGRJbiBpcyBjdXJyZW50bHkgcnVubmluZy5cclxuICovXHJcbmV4cG9ydCBlbnVtIEFkZEluTW9kZSB7XHJcbiAgQXV0aG9yaW5nID0gJ2F1dGhvcmluZycsXHJcbiAgVmlld2luZyA9ICd2aWV3aW5nJyxcclxuICBVbmtub3duID0gJ3Vua25vd24nXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXaGF0IHRoZSBvYmplY3QgcmVwcmVzZW50cyBpbiBhIGRhc2hib2FyZC5cclxuICovXHJcbmV4cG9ydCBlbnVtIERhc2hib2FyZE9iamVjdFR5cGUge1xyXG4gIEJsYW5rID0gJ2JsYW5rJyxcclxuICBXb3Jrc2hlZXQgPSAnd29ya3NoZWV0JyxcclxuICBRdWlja0ZpbHRlciA9ICdxdWljay1maWx0ZXInLFxyXG4gIFBhcmFtZXRlckNvbnRyb2wgPSAncGFyYW1ldGVyLWNvbnRyb2wnLFxyXG4gIFBhZ2VGaWx0ZXIgPSAncGFnZS1maWx0ZXInLFxyXG4gIExlZ2VuZCA9ICdsZWdlbmQnLFxyXG4gIFRpdGxlID0gJ3RpdGxlJyxcclxuICBUZXh0ID0gJ3RleHQnLFxyXG4gIEltYWdlID0gJ2ltYWdlJyxcclxuICBXZWJQYWdlID0gJ3dlYi1wYWdlJyxcclxuICBBZGRJbiA9ICdhZGRpbidcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSBhIHZhbHVlIGNhbiBoYXZlXHJcbiAqL1xyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgU3RyaW5nID0gJ3N0cmluZycsXHJcbiAgSW50ID0gJ2ludCcsXHJcbiAgRmxvYXQgPSAnZmxvYXQnLFxyXG4gIEJvb2wgPSAnYm9vbCcsXHJcbiAgRGF0ZSA9ICdkYXRlJyxcclxuICBEYXRlVGltZSA9ICdkYXRlLXRpbWUnLFxyXG4gIFNwYXRpYWwgPSAnc3BhdGlhbCdcclxufVxyXG5cclxuLyoqXHJcbiAqIFZhbGlkIGRhdGUgcmFuZ2VzIGZvciBhIHJlbGF0aXZlIGRhdGUgZmlsdGVyLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRGF0ZVJhbmdlVHlwZSB7XHJcbiAgTGFzdCA9ICdsYXN0JyxcclxuICBMYXN0TiA9ICdsYXN0LW4nLFxyXG4gIE5leHQgPSAnbmV4dCcsXHJcbiAgTmV4dE4gPSAnbmV4dC1uJyxcclxuICBDdXJyZW50ID0gJ2N1cnJlbnQnLFxyXG4gIFRvRGF0ZSA9ICd0by1kYXRlJ1xyXG59XHJcblxyXG4vKipcclxuICogVHlwZXMgb2YgZGlhbG9nIGV2ZW50IGZvciBldmVudCBsaXN0ZW5pbmcgYmV0d2VlbiBhIHBhcmVudCBBZGRJbiBhbmQgYSBwb3B1cCBkaWFsb2cuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBEaWFsb2dFdmVudFR5cGUge1xyXG4gIERpYWxvZ01lc3NhZ2UgPSAnZGlhbG9nLW1lc3NhZ2UnLFxyXG4gIERpYWxvZ0V2ZW50ID0gJ2RpYWxvZy1ldmVudCdcclxufVxyXG5cclxuLyoqXHJcbiAqIEFsbCBlcnJvciBjb2RlcyB1c2VkIGJ5IHRoZSBBZGRJbiBBUEkuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBFcnJvckNvZGVzIHtcclxuICAvKipcclxuICAgKiBPbmx5IG9uZSBkaWFsb2cgY2FuIGJlIG9wZW5lZCBhdCB0aW1lIHdpdGggdGhlIFVJIG5hbWVzcGFjZSBmdW5jdGlvbmFsaXR5LlxyXG4gICAqL1xyXG4gIERpYWxvZ0FscmVhZHlPcGVuID0gJ2RpYWxvZy1hbHJlYWR5LW9wZW4nLFxyXG4gIC8qKlxyXG4gICAqIFRoZSBvcGVuIGRpYWxvZyB3YXMgY2xvc2VkIGJ5IHRoZSB1c2VyLlxyXG4gICAqL1xyXG4gIERpYWxvZ0Nsb3NlZEJ5VXNlciA9ICdkaWFsb2ctY2xvc2VkLWJ5LXVzZXInLFxyXG4gIC8qKlxyXG4gICAqIEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhIGZpbHRlciBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgRmlsdGVyQ2Fubm90QmVQZXJmb3JtZWQgPSAnZmlsdGVyLWNhbm5vdC1iZS1wZXJmb3JtZWQnLFxyXG4gIC8qKlxyXG4gICAqIEFuIGVycm9yIG9jY3VycmVkIHdpdGhpbiB0aGUgVGFibGVhdSBBZGRJbiBBUEkuIENvbnRhY3QgVGFibGVhdSBTdXBwb3J0LlxyXG4gICAqL1xyXG4gIEludGVybmFsRXJyb3IgPSAnaW50ZXJuYWwtZXJyb3InLFxyXG4gIC8qKlxyXG4gICAqIEFuIGludmFsaWQgYWdncmVnYXRpb24gd2FzIHNwZWNpZmllZCBmb3IgdGhlIGZpbHRlciwgc3VjaCBhcyBzZXR0aW5nIGEgcmFuZ2UgZmlsdGVyIHRvIFwiU1VNKFNhbGVzKVwiIGluc3RlYWQgb2YgXCJTYWxlc1wiLlxyXG4gICAqL1xyXG4gIEludmFsaWRBZ2dyZWdhdGlvbkZpZWxkTmFtZSA9ICdpbnZhbGlkLWFnZ3JlZ2F0aW9uLWZpZWxkLW5hbWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgZGlhbG9nIG11c3QgZmlyc3QgbGF1bmNoIHRvLCBhbmQgc2VuZCBtZXNzYWdlcyBmcm9tLCB0aGUgc2FtZSBkb21haW4gYXMgdGhlIHBhcmVudCBBZGRJbi5cclxuICAgKi9cclxuICBJbnZhbGlkRG9tYWluRGlhbG9nID0gJ2ludmFsaWQtZGlhbG9nLWRvbWFpbicsXHJcbiAgLyoqXHJcbiAgICogQW4gaW52YWxpZCBkYXRlIHdhcyBzcGVjaWZpZWQgaW4gYSBtZXRob2QgdGhhdCByZXF1aXJlZCBhIGRhdGUgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIEludmFsaWREYXRlUGFyYW1ldGVyID0gJ2ludmFsaWQtZGF0ZS1wYXJhbWV0ZXInLFxyXG4gIC8qKlxyXG4gICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIG9uIGEgZmllbGQgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBzb3VyY2UuXHJcbiAgICovXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkTmFtZSA9ICdpbnZhbGlkLWZpbHRlci1maWVsZC1uYW1lJyxcclxuICAvKipcclxuICAgKiBBIGZpbHRlciBvcGVyYXRpb24gd2FzIGF0dGVtcHRlZCB1c2luZyBhIHZhbHVlIHRoYXQgaXMgdGhlIHdyb25nIGRhdGEgdHlwZSBvciBmb3JtYXQuXHJcbiAgICovXHJcbiAgSW52YWxpZEZpbHRlckZpZWxkVmFsdWUgPSAnaW52YWxpZC1maWx0ZXItZmllbGQtdmFsdWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgcGFyYW1ldGVyIGlzIG5vdCB0aGUgY29ycmVjdCBkYXRhIHR5cGUgb3IgZm9ybWF0LiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgRXJyb3IubWVzc2FnZSBmaWVsZC5cclxuICAgKi9cclxuICBJbnZhbGlkUGFyYW1ldGVyID0gJ2ludmFsaWQtcGFyYW1ldGVyJyxcclxuICAvKipcclxuICAgKiBBbiBpbnZhbGlkIGRhdGUgdmFsdWUgd2FzIHNwZWNpZmllZCBpbiBhIFNoZWV0LnNlbGVjdE1hcmtzQXN5bmMoKSBjYWxsIGZvciBhIGRhdGUgZmllbGQuXHJcbiAgICovXHJcbiAgSW52YWxpZFNlbGVjdGlvbkRhdGUgPSAnaW52YWxpZC1zZWxlY3Rpb24tZGF0ZScsXHJcbiAgLyoqXHJcbiAgICogQSBmaWVsZCB3YXMgc3BlY2lmaWVkIGluIGEgU2hlZXQuc2VsZWN0TWFya3NBc3luYygpIGNhbGwgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgZGF0YSBzb3VyY2UuXHJcbiAgICovXHJcbiAgSW52YWxpZFNlbGVjdGlvbkZpZWxkTmFtZSA9ICdpbnZhbGlkLXNlbGVjdGlvbi1maWVsZC1uYW1lJyxcclxuICAvKipcclxuICAgKiBBbiBpbnZhbGlkIHZhbHVlIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbC5cclxuICAgKi9cclxuICBJbnZhbGlkU2VsZWN0aW9uVmFsdWUgPSAnaW52YWxpZC1zZWxlY3Rpb24tdmFsdWUnLFxyXG4gIC8qKlxyXG4gICAqIEEgcmVxdWlyZWQgcGFyYW1ldGVyIHdhcyBub3Qgc3BlY2lmaWVkLCBudWxsLCBvciBhbiBlbXB0eSBzdHJpbmcvYXJyYXkuXHJcbiAgICovXHJcbiAgTnVsbE9yRW1wdHlQYXJhbWV0ZXIgPSAnbnVsbC1vci1lbXB0eS1wYXJhbWV0ZXInLFxyXG4gIC8qKlxyXG4gICAqIEFuIHVua25vd24gZXZlbnQgbmFtZSB3YXMgc3BlY2lmaWVkIGluIHRoZSBjYWxsIHRvIFZpei5hZGRFdmVudExpc3RlbmVyb3IgVml6LnJlbW92ZUV2ZW50TGlzdGVuZXIuXHJcbiAgICovXHJcbiAgVW5zdXBwb3J0ZWRFdmVudE5hbWUgPSAndW5zdXBwb3J0ZWQtZXZlbnQtbmFtZSdcclxufVxyXG5cclxuLyoqXHJcbiAqICBUeXBlIG9mIGFnZ3JlZ2F0aW9uIG9uIGEgZmllbGQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWVsZEFnZ3JlYXRpb25UeXBlIHtcclxuICBTdW0gPSAnc3VtJyxcclxuICBBdmcgPSAnYXZnJyxcclxuICBNaW4gPSAnbWluJyxcclxuICBNYXggPSAnbWF4JyxcclxuICBTdGRldiA9ICdzdGRldicsXHJcbiAgU3RkZXZwID0gJ3N0ZGV2cCcsXHJcbiAgVmFyID0gJ3ZhcicsXHJcbiAgVmFycCA9ICd2YXJwJyxcclxuICBDb3VudCA9ICdjb3VudCcsXHJcbiAgQ291bnRkID0gJ2NvdW50ZCcsXHJcbiAgTWVkaWFuID0gJ21lZGlhbicsXHJcbiAgQXR0ciA9ICdhdHRyJyxcclxuICBOb25lID0gJ25vbmUnLFxyXG4gIFllYXIgPSAneWVhcicsXHJcbiAgUXRyID0gJ3F0cicsXHJcbiAgTW9udGggPSAnbW9udGgnLFxyXG4gIERheSA9ICdkYXknLFxyXG4gIEhvdXIgPSAnaG91cicsXHJcbiAgTWludXRlID0gJ21pbnV0ZScsXHJcbiAgU2Vjb25kID0gJ3NlY29uZCcsXHJcbiAgV2VlayA9ICd3ZWVrJyxcclxuICBXZWVrZGF5ID0gJ3dlZWtkYXknLFxyXG4gIE1vbXRoWWVhciA9ICdtb250aC15ZWFyJyxcclxuICBNZHkgPSAnbWR5JyxcclxuICBFbmQgPSAnZW5kJyxcclxuICBUcnVuY1llYXIgPSAndHJ1bmMteWVhcicsXHJcbiAgVHJ1bmNRdHIgPSAndHJ1bmMtcXRyJyxcclxuICBUcnVuY01vbnRoID0gJ3RydW5jLW1vbnRoJyxcclxuICBUcnVuY1dlZWsgPSAndHJ1bmMtd2VlaycsXHJcbiAgVHJ1bmNEYXkgPSAndHJ1bmMtZGF5JyxcclxuICBUcnVuY0hvdXIgPSAndHJ1bmMtaG91cicsXHJcbiAgVHJ1bmNNaW51dGUgPSAndHJ1bmMtbWludXRlJyxcclxuICBUcnVuY1NlY29uZCA9ICd0cnVuYy1zZWNvbmQnLFxyXG4gIFF1YXJ0MSA9ICdxdWFydDEnLFxyXG4gIFF1YXJ0MyA9ICdxdWFydDMnLFxyXG4gIFNrZXduZXNzID0gJ3NrZXduZXNzJyxcclxuICBLdXJ0b3NpcyA9ICdrdXJ0b3NpcycsXHJcbiAgSW5PdXQgPSAnaW4tb3V0JyxcclxuICBVc2VyID0gJ3VzZXInXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSb2xlIG9mIGEgZmllbGQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWVsZFJvbGVUeXBlIHtcclxuICBEaW1lbnNpb24gPSAnZGltZW5zaW9uJyxcclxuICBNZWFzdXJlID0gJ21lYXN1cmUnLFxyXG4gIFVua25vd24gPSAndW5rbm93bidcclxufVxyXG5cclxuLyoqXHJcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJUeXBlIHtcclxuICBDYXRlZ29yaWNhbCA9ICdjYXRlZ29yaWNhbCcsXHJcbiAgUXVhbnRpdGF0aXZlID0gJ3F1YW50aXRhdGl2ZScsXHJcbiAgSGllcmFyY2hpY2FsID0gJ2hpZXJhcmNoaWNhbCcsXHJcbiAgUmVsYXRpdmVEYXRlID0gJ3JlbGF0aXZlLWRhdGEnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgZGlmZmVyZW50IHVwZGF0ZSB0eXBlcyBmb3IgYXBwbHlpbmcgZmlsdGVyXHJcbiAqL1xyXG5leHBvcnQgZW51bSBGaWx0ZXJVcGRhdGVUeXBlIHtcclxuICBBZGQgPSAnYWRkJyxcclxuICBBbGwgPSAnYWxsJyxcclxuICBSZXBsYWNlID0gJ3JlcGxhY2UnLFxyXG4gIFJlbW92ZSA9ICdyZW1vdmUnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWxsb3dhYmxlIHZhbHVlcy5cclxuICogVGhpcyBpcyB1c2VkIGZvciByZXN0cmljdGluZyB0aGUgZG9tYWluIG9mIGEgcGFyYW1ldGVyXHJcbiAqL1xyXG5leHBvcnQgZW51bSBBbGxvd2FibGVWYWx1ZXNUeXBlIHtcclxuICBBbGwgPSAnYWxsJyxcclxuICBMaXN0ID0gJ2xpc3QnLFxyXG4gIFJhbmdlID0gJ3JhbmdlJ1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nXHJcbiAqIEluZGljYXRlcyB3aGF0IHRvIGRvIHdpdGggbnVsbCB2YWx1ZXMgZm9yIGEgZ2l2ZW4gZmlsdGVyIG9yIG1hcmsgc2VsZWN0aW9uIGNhbGwuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBOdWxsT3B0aW9uIHtcclxuICBOdWxsVmFsdWVzID0gJ251bGwtdmFsdWVzJyxcclxuICBOb25OdWxsVmFsdWVzID0gJ25vbi1udWxsLXZhbHVlcycsXHJcbiAgQWxsVmFsdWVzID0gJ2FsbC12YWx1ZXMnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEYXRlIHBlcmlvZCB1c2VkIGluIGZpbHRlcnMgYW5kIGluIHBhcmFtZXRlcnMuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBQZXJpb2RUeXBlIHtcclxuICBZZWFycyA9ICd5ZWFycycsXHJcbiAgUXVhcnRlcnMgPSAncXVhcnRlcnMnLFxyXG4gIE1vbnRocyA9ICdtb250aHMnLFxyXG4gIFdlZWtzID0gJ3dlZWtzJyxcclxuICBEYXlzID0gJ2RheXMnLFxyXG4gIEhvdXJzID0gJ2hvdXJzJyxcclxuICBNaW51dGVzID0gJ21pbnV0ZXMnLFxyXG4gIFNlY29uZHMgPSAnc2Vjb25kcydcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSB0eXBlIG9mIHNoZWV0IGEgU2hlZXQgb2JqZWN0IHJlcHJlc2VudHNcclxuICovXHJcbmV4cG9ydCBlbnVtIFNoZWV0VHlwZSB7XHJcbiAgRGFzaGJvYXJkID0gJ2Rhc2hib2FyZCcsXHJcbiAgU3RvcnkgPSAnc3RvcnknLFxyXG4gIFdvcmtzaGVldCA9ICd3b3Jrc2hlZXQnLFxyXG4gIEFkZEluID0gJ2FkZC1pbidcclxufVxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGNlcnRhaW4gdHlwZSBvZiBldmVudCB3aGljaCBjYW4gYmUgbGlzdGVuZWQgZm9yXHJcbiAqL1xyXG5leHBvcnQgZW51bSBUYWJsZWF1RXZlbnRUeXBlIHtcclxuICAvKiogVGhlIHNlbGVjdGVkIG1hcmtzIG9uIGEgdmlzdWFsaXphdGlvbiBoYXMgY2hhbmdlZCAqL1xyXG4gIE1hcmtTZWxlY3Rpb25DaGFuZ2VkID0gJ21hcmstc2VsZWN0aW9uLWNoYW5nZWQnLFxyXG5cclxuICAvKiogQSBwYXJhbWV0ZXIgaGFzIGhhZCBpdHMgdmFsdWUgbW9kaWZpZWQgKi9cclxuICBQYXJhbWV0ZXJDaGFuZ2VkID0gJ3BhcmFtZXRlci1jaGFuZ2VkJyxcclxuXHJcbiAgLyoqIEEgZmlsdGVyIGhhcyBjaGFuZ2VkICovXHJcbiAgRmlsdGVyQ2hhbmdlZCA9ICdmaWx0ZXItY2hhbmdlZCdcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9zcmMvRW51bXMudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgVGFibGVhdVdvcmtzaGVldEV2ZW50IGFzIFRhYmxlYXVXb3JrU2hlZXRFdmVudENvbnRyYWN0LFxyXG4gIFdvcmtzaGVldCBhcyBXb3Jrc2hlZXRDb250cmFjdFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1U2hlZXRFdmVudCB9IGZyb20gJy4vVGFibGVhdVNoZWV0RXZlbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlYXVXb3Jrc2hlZXRFdmVudCBleHRlbmRzIFRhYmxlYXVTaGVldEV2ZW50IGltcGxlbWVudHMgVGFibGVhdVdvcmtTaGVldEV2ZW50Q29udHJhY3Qge1xyXG4gIHByaXZhdGUgX3dvcmtzaGVldDogV29ya3NoZWV0Q29udHJhY3Q7XHJcblxyXG4gIHB1YmxpYyBnZXQgd29ya3NoZWV0KCk6IFdvcmtzaGVldENvbnRyYWN0IHtcclxuICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogVGFibGVhdUV2ZW50VHlwZSwgd29ya3NoZWV0OiBXb3Jrc2hlZXRDb250cmFjdCkge1xyXG4gICAgc3VwZXIodHlwZSwgd29ya3NoZWV0KTtcclxuXHJcbiAgICB0aGlzLl93b3Jrc2hlZXQgPSB3b3Jrc2hlZXQ7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgU2hlZXQgYXMgU2hlZXRDb250cmFjdCxcclxuICBUYWJsZWF1RXZlbnRUeXBlLFxyXG4gIFRhYmxlYXVTaGVldEV2ZW50IGFzIFRhYmxlYXVTaGVldEV2ZW50Q29udHJhY3RcclxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgVGFibGVhdUV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1RXZlbnQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlYXVTaGVldEV2ZW50IGV4dGVuZHMgVGFibGVhdUV2ZW50IGltcGxlbWVudHMgVGFibGVhdVNoZWV0RXZlbnRDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBfc2hlZXQ6IFNoZWV0Q29udHJhY3Q7XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXQoKTogU2hlZXRDb250cmFjdCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hlZXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogVGFibGVhdUV2ZW50VHlwZSwgc2hlZXQ6IFNoZWV0Q29udHJhY3QpIHtcclxuICAgIHN1cGVyKHR5cGUpO1xyXG5cclxuICAgIHRoaXMuX3NoZWV0ID0gc2hlZXQ7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50LnRzXG4gKiovIiwiaW1wb3J0IHsgVGFibGVhdUV2ZW50IGFzIFRhYmxlYXVFdmVudENvbnRyYWN0LCBUYWJsZWF1RXZlbnRUeXBlIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZWF1RXZlbnQgaW1wbGVtZW50cyBUYWJsZWF1RXZlbnRDb250cmFjdCB7XHJcbiAgcHJpdmF0ZSBfdHlwZTogVGFibGVhdUV2ZW50VHlwZTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IFRhYmxlYXVFdmVudFR5cGUpIHtcclxuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB0eXBlKCk6IFRhYmxlYXVFdmVudFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1RhYmxlYXVFdmVudC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWN0aXZlTWFya3MsXHJcbiAgTWFya3NTZWxlY3RlZEV2ZW50IGFzIE1hcmtzU2VsZWN0ZWRFdmVudENvbnRyYWN0LFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbiAgV29ya3NoZWV0IGFzIFdvcmtzaGVldENvbnRyYWN0LFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBUYWJsZWF1V29ya3NoZWV0RXZlbnQgfSBmcm9tICcuL1RhYmxlYXVXb3Jrc2hlZXRFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya3NTZWxlY3RlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVdvcmtzaGVldEV2ZW50IGltcGxlbWVudHMgTWFya3NTZWxlY3RlZEV2ZW50Q29udHJhY3Qge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih3b3Jrc2hlZXQ6IFdvcmtzaGVldENvbnRyYWN0KSB7XHJcbiAgICBzdXBlcihUYWJsZWF1RXZlbnRUeXBlLk1hcmtTZWxlY3Rpb25DaGFuZ2VkLCB3b3Jrc2hlZXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1hcmtzQXN5bmMoKTogUHJvbWlzZTxBY3RpdmVNYXJrcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NoZWV0LmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQudHNcbiAqKi8iLCJpbXBvcnQgeyBUYWJsZWF1RXZlbnQsIFRhYmxlYXVFdmVudFR5cGUsIFRhYmxlYXVFdmVudFVucmVnaXN0ZXJGbiB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTaW5nbGVFdmVudE1hbmFnZXIgfSBmcm9tICcuLi9TaW5nbGVFdmVudE1hbmFnZXInO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgU2luZ2xlRXZlbnRNYW5hZ2VyIGludGVyZmFjZSBmb3IgYSBzaW5nbGUgdHlwZSBvZiBUYWJsZWF1IGV2ZW50XHJcbiAqXHJcbiAqIEB0ZW1wbGF0ZSBURXZlbnRUeXBlIFRoZSBUYWJsZWF1IGV2ZW50IHR5cGUgdGhpcyBjbGFzcyBzcGVjaWFsaXplc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNpbmdsZUV2ZW50TWFuYWdlckltcGw8VEV2ZW50VHlwZSBleHRlbmRzIFRhYmxlYXVFdmVudD4gaW1wbGVtZW50cyBTaW5nbGVFdmVudE1hbmFnZXIge1xyXG4gIHByaXZhdGUgX2V2ZW50VHlwZTogVGFibGVhdUV2ZW50VHlwZTtcclxuICBwcml2YXRlIF9oYW5kbGVyczogQXJyYXk8KGV2ZW50T2JqOiBURXZlbnRUeXBlKSA9PiB2b2lkPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGV2ZW50VHlwZTogVGFibGVhdUV2ZW50VHlwZSkge1xyXG4gICAgdGhpcy5fZXZlbnRUeXBlID0gZXZlbnRUeXBlO1xyXG4gICAgdGhpcy5faGFuZGxlcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZXZlbnRUeXBlKCk6IFRhYmxlYXVFdmVudFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50VHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRFdmVudExpc3RlbmVyKGhhbmRsZXI6IChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZCk6IFRhYmxlYXVFdmVudFVucmVnaXN0ZXJGbiB7XHJcbiAgICB0aGlzLl9oYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xyXG4gICAgcmV0dXJuICgpID0+IHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmVFdmVudExpc3RlbmVyKGhhbmRsZXI6IChldmVudE9iajogVEV2ZW50VHlwZSkgPT4gdm9pZCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYmVmb3JlQ291bnQgPSB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XHJcbiAgICB0aGlzLl9oYW5kbGVycyA9IHRoaXMuX2hhbmRsZXJzLmZpbHRlcihoID0+IGggIT09IGhhbmRsZXIpO1xyXG4gICAgcmV0dXJuIGJlZm9yZUNvdW50ID4gdGhpcy5faGFuZGxlcnMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyaWdnZXJFdmVudChldmVudEdlbmVyYXRvcjogKCkgPT4gVEV2ZW50VHlwZSk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuX2hhbmRsZXJzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRNb2RlbCA9IGV2ZW50R2VuZXJhdG9yKCk7XHJcbiAgICAgICAgaGFuZGxlcihldmVudE1vZGVsKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIFNpbmNlIHRoaXMgaGFuZGxlciBjb3VsZCBiZSBvdXRzaWRlIG91ciBjb250cm9sLCBqdXN0IGNhdGNoIGFueXRoaW5nIGl0IHRocm93cyBhbmQgY29udGludWUgb25cclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBBY3RpdmVNYXJrcyB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IFZpc3VhbElkIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IERhdGFUYWJsZSB9IGZyb20gJy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbi8qKlxyXG4gKiBEZWZpbmVzIHdoaWNoIHR5cGUgb2YgZ2V0RGF0YSBjYWxsIHRvIG1ha2UuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBHZXREYXRhVHlwZSB7XHJcbiAgU3VtbWFyeSA9ICdzdW1tYXJ5JyxcclxuICBVbmRlcmx5aW5nID0gJ3VuZGVybHlpbmcnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGZvciBpbXBsZW1lbnRpbmcgdGhlIGxvZ2ljIGZvciB2YXJpb3VzIGdldERhdGEgY2FsbHNcclxuICpcclxuICogQGludGVyZmFjZSBHZXREYXRhU2VydmljZVxyXG4gKiBAZXh0ZW5kcyB7QXBpU2VydmljZX1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YVNlcnZpY2UgZXh0ZW5kcyBBcGlTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIGRhdGEgZm9yIGEgcGFydGljdWxhciB2aXN1YWxcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7VmlzdWFsSWR9IHZpc3VhbElkICBUaGUgdmlzdWFsIHRvIGdldCBkYXRhIGZvclxyXG4gICAqIEBwYXJhbSB7R2V0RGF0YVR5cGV9IGdldFR5cGUgIFRoZSB0eXBlIG9mIGdldERhdGEgY2FsbCB0byBtYWtlXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVBbGlhc2VzICBXaGV0aGVyIG9yIG5vdCBhbGlhc2VzIHNob3VsZCBiZSBpZ25vcmVkXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmVTZWxlY3Rpb24gIFdoZXRoZXIgb3Igbm90IHNlbGVjdGlvbiBzaG91bGQgYmUgaWdub3JlZFxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUFsbENvbHVtbnMgIFNob3VsZCBhbGwgY29sdW1ucyBiZSBpbmNsdWRlZFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhSb3dzICBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIHJldHVyblxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPERhdGFUYWJsZT59ICBEYXRhIHRhYmxlIHdpdGggdGhlIHJlcXVlc3RlZCBkYXRhXHJcbiAgICovXHJcbiAgICBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKFxyXG4gICAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICAgIGdldFR5cGU6IEdldERhdGFUeXBlLFxyXG4gICAgICBpZ25vcmVBbGlhc2VzOiBib29sZWFuLFxyXG4gICAgICBpZ25vcmVTZWxlY3Rpb246IGJvb2xlYW4sXHJcbiAgICAgIGluY2x1ZGVBbGxDb2x1bW5zOiBib29sZWFuLFxyXG4gICAgICBtYXhSb3dzOiBudW1iZXIpOiBQcm9taXNlPERhdGFUYWJsZT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXHJcbiAgICAgKlxyXG4gICAgKiBAcGFyYW0ge1Zpc3VhbElkfSB2aXN1YWxJZCAgVGhlIHZpc3VhbCB0byBnZXQgZGF0YSBmb3JcclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcclxuICAgICovXHJcbiAgICBnZXRTZWxlY3RlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxBY3RpdmVNYXJrcz47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgbWFya3MgZm9yIGEgZ2l2ZW4gdmlzdWFsXHJcbiAgICAgKlxyXG4gICAgKiBAcGFyYW0ge1Zpc3VhbElkfSB2aXN1YWxJZCAgVGhlIHZpc3VhbCB0byBnZXQgZGF0YSBmb3JcclxuICAgICogQHJldHVybnMge1Byb21pc2U8QWN0aXZlTWFya3M+fSAgQ29sbGVjdGlvbiBvZiBkYXRhIHRhYmxlcyB3aXRoIHRoZSBhY3RpdmUgbWFya3NcclxuICAgICovXHJcbiAgICBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxBY3RpdmVNYXJrcz47XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9HZXREYXRhU2VydmljZS50c1xuICoqLyIsImltcG9ydCB7IEludGVybmFsQXBpRGlzcGF0Y2hlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IEdldERhdGFTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9HZXREYXRhU2VydmljZUltcGwnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9Ob3RpZmljYXRpb25TZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9QYXJhbWV0ZXJzU2VydmljZUltcGwnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlSW1wbCB9IGZyb20gJy4vaW1wbC9TZWxlY3Rpb25TZXJ2aWNlSW1wbCc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2VSZWdpc3RyeSB9IGZyb20gJy4vU2VydmljZVJlZ2lzdHJ5JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFsbFNoYXJlZFNlcnZpY2VzKGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcik6IHZvaWQge1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IEdldERhdGFTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRmlsdGVyU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBQYXJhbWV0ZXJzU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFNlbGVjdGlvblNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcclxuICAvLyBUT0RPIC0gbW9yZSBzaGFyZWQgc2VydmljZXNcclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMudHNcbiAqKi8iLCJpbXBvcnQge1xyXG4gIEZpbHRlck9wdGlvbnMsXHJcbiAgRmlsdGVyVXBkYXRlVHlwZSxcclxuICBOdWxsT3B0aW9uLFxyXG4gIFJhbmdlRmlsdGVyT3B0aW9uc1xyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZEVycm9yLFxyXG4gIEV4ZWN1dGVQYXJhbWV0ZXJzLFxyXG4gIEludGVybmFsQXBpRGlzcGF0Y2hlcixcclxuICBQYXJhbWV0ZXJJZCxcclxuICBWZXJiSWQsXHJcbiAgVmlzdWFsSWRcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XHJcblxyXG5pbXBvcnQgeyBFeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MgYXMgRW51bUNvbnZlcnRlciB9IGZyb20gJy4uLy4uL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MnO1xyXG5cclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL0ZpbHRlclNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2VJbXBsIGltcGxlbWVudHMgRmlsdGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7XHJcbiAgICB0aGlzLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuRmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXHJcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcclxuICAgIHZhbHVlczogQXJyYXk8c3RyaW5nPixcclxuICAgIHVwZGF0ZVR5cGU6IEZpbHRlclVwZGF0ZVR5cGUsXHJcbiAgICBmaWx0ZXJPcHRpb25zOiBGaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPEZpbHRlclVwZGF0ZVR5cGU+KHVwZGF0ZVR5cGUsIEZpbHRlclVwZGF0ZVR5cGUpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgRmlsdGVyVXBkYXRlVHlwZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHZlcmIgPSBWZXJiSWQuQXBwbHlDYXRlZ29yaWNhbEZpbHRlcjtcclxuICAgICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7fTtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpbHRlclZhbHVlc10gPSB2YWx1ZXM7XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmlsdGVyVXBkYXRlVHlwZV0gPSB1cGRhdGVUeXBlO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklzRXhjbHVkZU1vZGVdID1cclxuICAgICAgICAoZmlsdGVyT3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlck9wdGlvbnMuaXNFeGNsdWRlTW9kZSA9PT0gdW5kZWZpbmVkKSA/IGZhbHNlIDogZmlsdGVyT3B0aW9ucy5pc0V4Y2x1ZGVNb2RlO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPHN0cmluZz4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gcmVzcG9uc2UucmVzdWx0IGFzIENvbW1hbmRFcnJvcjtcclxuICAgICAgICBpZiAoIShlcnJvci5lcnJvckNvZGUgPT09IG51bGwgfHwgZXJyb3IuZXJyb3JDb2RlID09PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgICAvLyBUT0RPOiBjb21lIGJhY2sgYW5kIGltcGxlbWVudCBlcnJvciBoYW5kbGluZyBsb2dpY1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBBcHBseWluZyBGaWx0ZXI6ICcgKyBlcnJvci5lcnJvckNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmllbGROYW1lO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgcHVibGljIGFwcGx5UmFuZ2VGaWx0ZXJBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQsIGZpZWxkTmFtZTogc3RyaW5nLCBmaWx0ZXJPcHRpb25zOiBSYW5nZUZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKCFmaWx0ZXJPcHRpb25zKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBQYXJhbWV0ZXI6IFJhbmdlRmlsdGVyT3B0aW9ucycpO1xyXG4gICAgfVxyXG4gICAgUGFyYW0udmVyaWZ5UmFuZ2VQYXJhbVR5cGUoZmlsdGVyT3B0aW9ucy5taW4sIGZpbHRlck9wdGlvbnMubWF4KTtcclxuXHJcbiAgICBjb25zdCB2ZXJiID0gVmVyYklkLkFwcGx5UmFuZ2VGaWx0ZXI7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG5cclxuICAgIGlmIChmaWx0ZXJPcHRpb25zLm1pbikge1xyXG4gICAgICBsZXQgbWluOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1pbiBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICBtaW4gPSBQYXJhbS5zZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZmlsdGVyT3B0aW9ucy5taW4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1pbiA9IGZpbHRlck9wdGlvbnMubWluO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VNaW5dID0gbWluO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCkge1xyXG4gICAgICBsZXQgbWF4OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICBtYXggPSBQYXJhbS5zZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZmlsdGVyT3B0aW9ucy5tYXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1heCA9IGZpbHRlck9wdGlvbnMubWF4O1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtZXRlcnNbUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VNYXhdID0gbWF4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJPcHRpb25zLm51bGxPcHRpb24pIHtcclxuICAgICAgaWYgKCFQYXJhbS5pc1ZhbGlkRW51bVZhbHVlPE51bGxPcHRpb24+KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbiwgTnVsbE9wdGlvbikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBOdWxsT3B0aW9uJyk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU51bGxPcHRpb25dID0gRW51bUNvbnZlcnRlci5udWxsT3B0aW9ucy5jb252ZXJ0KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbik7XHJcbiAgICB9XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkZpZWxkTmFtZV0gPSBmaWVsZE5hbWU7XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxzdHJpbmc+KHJlc3BvbnNlID0+IHtcclxuICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRmlsdGVyQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkLCBmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCB2ZXJiID0gVmVyYklkLkNsZWFyRmlsdGVyO1xyXG4gICAgbGV0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge307XHJcbiAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuPHN0cmluZz4ocmVzcG9zbmUgPT4ge1xyXG4gICAgICByZXR1cm4gZmllbGROYW1lO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbC50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxyXG4gKlxyXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXHJcbiAqL1xyXG5cclxuZXhwb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJy4vRW51bUNvbnZlcnRlcic7XHJcbmV4cG9ydCB7IFBhcmFtIH0gZnJvbSAnLi9QYXJhbSc7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL3NyYy9BcGlVdGlscy50c1xuICoqLyIsIi8qKlxyXG4gKiBUaGlzIGNsYXNzIGNvbnZlcnRzIGZyb20gYSBzb3VyY2UgZW51bSB2YWx1ZSB0byBkZXN0aW5hdGlvbiBlbnVtXHJcbiAqIHZhbHVlIGdpdmVuIGEgbWFwcGluZyBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiB3aGVuIGNvbnN0cnVjdGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVudW1Db252ZXJ0ZXI8VFNvdXJjZVR5cGUgZXh0ZW5kcyBzdHJpbmcsIFREZXN0aW5hdGlvblR5cGU+IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9tYXBwaW5nczogeyBbZW51bVZhbDogc3RyaW5nXTogVERlc3RpbmF0aW9uVHlwZTsgfSxcclxuICAgIHByaXZhdGUgX2RlZmF1bHRWYWw/OiBURGVzdGluYXRpb25UeXBlKSB7IH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnQoZW51bVZhbDogVFNvdXJjZVR5cGUsIHRocm93SWZNaXNzaW5nPzogYm9vbGVhbik6IFREZXN0aW5hdGlvblR5cGUge1xyXG4gICAgaWYgKHRoaXMuX21hcHBpbmdzLmhhc093blByb3BlcnR5KGVudW1WYWwpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsIGFzIHN0cmluZ107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWwgIT09IHVuZGVmaW5lZCAmJiAhdGhyb3dJZk1pc3NpbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdNYXBwaW5nIG5vdCBmb3VuZCBmb3IgJyArIGVudW1WYWwpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvRW51bUNvbnZlcnRlci50c1xuICoqLyIsImV4cG9ydCBjbGFzcyBQYXJhbSB7XHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhhdCBhbiBpbmNvbWluZyBwYXJhbWV0ZXIgaXMgJ3RydXRoeScgYW5kIHRocm93c1xyXG4gICAqIGFuIGVycm9yIGlmIGl0J3Mgbm90LiBUaGlzIHdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHZhbHVlXHJcbiAgICogaXMgbnVsbCwgdW5kZWZpbmVkLCBOYU4sIHRoZSBlbXB0eSBzdHJpbmcsIDAsIG9yIGZhbHNlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGFyZ3VtZW50VmFsdWUgdmFsdWUgdG8gdmVyaWZ5XHJcbiAgICogQHBhcmFtIGFyZ3VtZW50TmFtZSBuYW1lIG9mIGFyZ3VtZW50IHRvIHZlcmlmeVxyXG4gICAqL1xyXG4gIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXHJcbiAgcHVibGljIHN0YXRpYyB2ZXJpZnlWYWx1ZShhcmd1bWVudFZhbHVlOiBhbnksIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIWFyZ3VtZW50VmFsdWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBpcyBpbnZhbGlkIGZvciBhcmd1bWVudDogJyArIGFyZ3VtZW50TmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmllcyB0aGF0IGEgc3RyaW5nIGlzIHZhbGlkLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgaXNcclxuICAgKiBudWxsLCB1bmRlZmluZWQsIG9yIE5hTi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxyXG4gICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHZlcmlmeVN0cmluZyhhcmd1bWVudFZhbHVlOiBzdHJpbmcsIGFyZ3VtZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRWYWx1ZSA9PT0gbnVsbCB8fCBhcmd1bWVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIHZhbHVlIGlzIHBhcnQgb2YgdGhlIEVudW1cclxuICAgKlxyXG4gICAqIFN0cmluZyBlbnVtcyBhcmUge3N0cmluZyA6IHN0cmluZ30gZGljdGlvbmFyaWVzIHdoaWNoIGFyZSBub3QgcmV2ZXJzZSBtYXBwYWJsZVxyXG4gICAqIFRoaXMgaXMgYW4gdWdseSB3b3JrYXJvdW5kXHJcbiAgICogQHBhcmFtIHZhbHVlIHZhbHVlIHRvIHZlcmlmeVxyXG4gICAqIEBwYXJhbSBlbnVtVHlwZSBlbnVtIHRvIHZlcmlmeSBhZ2FpbnN0XHJcbiAgICovXHJcbiAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkRW51bVZhbHVlPEVudW1UeXBlPih2YWx1ZTogRW51bVR5cGUsIGVudW1UeXBlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaCgoZW51bUtleSkgPT4ge1xyXG4gICAgICBpZiAoZW51bVR5cGVbZW51bUtleV0gPT09IHZhbHVlLnRvU3RyaW5nKCkpIHtcclxuICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaXNWYWxpZDtcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogc2VyaWFsaXplcyB0aGUgZGF0ZSBpbnRvIHRoZSBmb3JtYXQgdGhhdCB0aGUgc2VydmVyIGV4cGVjdHMuXHJcbiAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gc2VyaWFsaXplXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB5ZWFyOiBudW1iZXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aDogbnVtYmVyID0gZGF0ZS5nZXRVVENNb250aCgpICsgMTtcclxuICAgIGNvbnN0IGRheTogbnVtYmVyID0gZGF0ZS5nZXRVVENEYXRlKCk7XHJcbiAgICBjb25zdCBoaDogbnVtYmVyID0gZGF0ZS5nZXRVVENIb3VycygpO1xyXG4gICAgY29uc3QgbW06IG51bWJlciA9IGRhdGUuZ2V0VVRDTWludXRlcygpO1xyXG4gICAgY29uc3Qgc2VjOiBudW1iZXIgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcclxuICAgIHJldHVybiB5ZWFyICsgJy0nICsgbW9udGggKyAnLScgKyBkYXkgKyAnICcgKyBoaCArICc6JyArIG1tICsgJzonICsgc2VjO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzZXJpYWxpemVCb29sZWFuRm9yUGxhdGZvcm0oYm9vbDogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYm9vbCA/ICd0cnVlJyA6ICdmYWxzZSc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBudW0udG9TdHJpbmcoMTApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIHBhcmFtcyBtaW4gYW5kIG1heCBmb3IgYXBwbHlpbmcgcmFuZ2UgZmlsdGVyXHJcbiAgICogQHBhcmFtIG1pbiByYW5nZSBtaW5cclxuICAgKiBAcGFyYW0gbWF4IHJhbmdlIG1heFxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5UmFuZ2VQYXJhbVR5cGUobWluOiBhbnksIG1heDogYW55KTogdm9pZCB7XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuICAgIGlmICghbWluICYmICFtYXgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIVBhcmFtLmlzVHlwZU51bWJlcihtaW4pICYmICFQYXJhbS5pc1R5cGVEYXRlKG1pbikpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1pbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1heCkgJiYgIVBhcmFtLmlzVHlwZURhdGUobWF4KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IE9ubHkgRGF0ZSBhbmQgbnVtYmVyIGFyZSBhbGxvd2VkIGZvciBwYXJhbWV0ZXIgbWF4Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZihtaW4pICE9PSB0eXBlb2YobWF4KSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGFyYW1ldGVyIFR5cGU6IFBhcmFtZXRlcnMgbWluIGFuZCBtYXggc2hvdWxkIGJlIG9mIHRoZSBzYW1lIHR5cGUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlTnVtYmVyKGlucHV0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YoaW5wdXQpID09PSAnbnVtYmVyJyB8fCBpbnB1dCBpbnN0YW5jZW9mIE51bWJlcjtcclxuICB9XHJcbiAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpZXMgdGhlIGlucHV0IGlzIGEgRGF0ZVxyXG4gICAqL1xyXG4gIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlRGF0ZShpbnB1dDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH1cclxuICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xyXG5cclxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXHJcbiAgcHVibGljIHN0YXRpYyBpc1R5cGVTdHJpbmcoaW5wdXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZihpbnB1dCkgPT09ICdzdHJpbmcnIHx8IGlucHV0IGluc3RhbmNlb2YgU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNUeXBlQm9vbChpbnB1dDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZW9mKGlucHV0KSA9PT0gJ2Jvb2xlYW4nIHx8IGlucHV0IGluc3RhbmNlb2YgQm9vbGVhbjtcclxuICB9XHJcblxyXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cclxuICBwdWJsaWMgc3RhdGljIHNlcmlhbGl6ZVBhcmFtdGVyVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoUGFyYW0uaXNUeXBlTnVtYmVyKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gUGFyYW0uc2VyaWFsaXplTnVtYmVyRm9yUGxhdGZvcm0odmFsdWUgYXMgbnVtYmVyKTtcclxuICAgIH0gZWxzZSBpZiAoUGFyYW0uaXNUeXBlRGF0ZSh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybSh2YWx1ZSBhcyBEYXRlKTtcclxuICAgIH0gZWxzZSBpZiAoUGFyYW0uaXNUeXBlQm9vbCh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybSh2YWx1ZSBhcyBib29sZWFuKTtcclxuICAgIH0gZWxzZSBpZiAoUGFyYW0uaXNUeXBlU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50OiB2YWx1ZScpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS11dGlscy9zcmMvUGFyYW0udHNcbiAqKi8iLCJpbXBvcnQgeyBOdWxsT3B0aW9uIGFzIEV4dGVybmFsTnVsbE9wdGlvbiB9IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IE51bGxPcHRpb24gYXMgSW50ZXJuYWxOdWxsT3B0aW9uIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEVudW1Db252ZXJ0ZXIgfSBmcm9tICdAdGFibGVhdS9hcGktdXRpbHMnO1xyXG5cclxuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xyXG4vKipcclxuICogTWFwcyBlbnVtcyB1c2VkIGJ5IHRoZSBleHRlcm5hbC1hcGktY29udHJhY3QgdG8gdGhlIGVudW1zIHVzZWRcclxuICogaW4gdGhlIGludGVybmFsLWFwaS1jb250cmFjdCwgd2hpY2ggZGV2ZWxvcGVycyBjb2RlIGFnYWluc3QuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzIHtcclxuICBwdWJsaWMgc3RhdGljIG51bGxPcHRpb25zID0gbmV3IEVudW1Db252ZXJ0ZXI8RXh0ZXJuYWxOdWxsT3B0aW9uLCBJbnRlcm5hbE51bGxPcHRpb24+KHtcclxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uQWxsVmFsdWVzXTogSW50ZXJuYWxOdWxsT3B0aW9uLkFsbFZhbHVlcyxcclxuICAgIFtFeHRlcm5hbE51bGxPcHRpb24uTm9uTnVsbFZhbHVlc106IEludGVybmFsTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzLFxyXG4gICAgW0V4dGVybmFsTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzXTogSW50ZXJuYWxOdWxsT3B0aW9uLk51bGxWYWx1ZXNcclxuICB9KTtcclxufVxyXG4vKiB0c2xpbnQ6ZW5hYmxlOnR5cGVkZWYgKi9cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHsgQWN0aXZlTWFya3MsIERhdGFUeXBlIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBEYXRhVGFibGUgYXMgRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCxcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBIaWdobGlnaHRlZE1hcmtzVGFibGUsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFNlbGVjdGVkTWFya3NUYWJsZSxcclxuICBVbmRlcmx5aW5nRGF0YVRhYmxlLFxyXG4gIFZlcmJJZCxcclxuICBWaXN1YWxJZCxcclxufSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQ29sdW1uLCBEYXRhVGFibGUsIERhdGFWYWx1ZSB9IGZyb20gJy4uLy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcclxuaW1wb3J0IHsgR2V0RGF0YVNlcnZpY2UsIEdldERhdGFUeXBlIH0gZnJvbSAnLi4vR2V0RGF0YVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdldERhdGFTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEdldERhdGFTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9kaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXI7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpIHtcclxuICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5HZXREYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFVuZGVybHlpbmdEYXRhQXN5bmMoXHJcbiAgICB2aXN1YWxJZDogVmlzdWFsSWQsXHJcbiAgICBnZXRUeXBlOiBHZXREYXRhVHlwZSxcclxuICAgIGlnbm9yZUFsaWFzZXM6IGJvb2xlYW4sXHJcbiAgICBpZ25vcmVTZWxlY3Rpb246IGJvb2xlYW4sXHJcbiAgICBpbmNsdWRlQWxsQ29sdW1uczogYm9vbGVhbixcclxuICAgIG1heFJvd3M6IG51bWJlcik6IFByb21pc2U8RGF0YVRhYmxlPiB7XHJcbiAgICAgIC8vIENyZWF0ZSBhbGwgb2Ygb3VyIHBhcmFtZXRlcnNcclxuICAgICAgY29uc3QgdmVyYiA9IGdldFR5cGUgPT09IEdldERhdGFUeXBlLlN1bW1hcnkgPyBWZXJiSWQuR2V0RGF0YVN1bW1hcnlEYXRhIDogVmVyYklkLkdldFVuZGVybHlpbmdEYXRhO1xyXG4gICAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLklnbm9yZUFsaWFzZXNdID0gaWdub3JlQWxpYXNlcztcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5JZ25vcmVTZWxlY3Rpb25dID0gaWdub3JlU2VsZWN0aW9uO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLkluY2x1ZGVBbGxDb2x1bW5zXSA9IGluY2x1ZGVBbGxDb2x1bW5zO1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLk1heFJvd3NdID0gbWF4Um93cztcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbjxEYXRhVGFibGU+KHJlc3BvbnNlID0+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQgYXMgVW5kZXJseWluZ0RhdGFUYWJsZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVzdWx0c1RhYmxlKHJlc3BvbnNlRGF0YS5kYXRhLCByZXNwb25zZURhdGEuaXNTdW1tYXJ5KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxBY3RpdmVNYXJrcz4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7IFtQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkIH07XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXRTZWxlY3RlZE1hcmtzLCBwYXJhbWV0ZXJzKS50aGVuPEFjdGl2ZU1hcmtzPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBTZWxlY3RlZE1hcmtzVGFibGU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModmlzdWFsSWQ6IFZpc3VhbElkKTogUHJvbWlzZTxBY3RpdmVNYXJrcz4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVyczogRXhlY3V0ZVBhcmFtZXRlcnMgPSB7IFtQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkIH07XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXRIaWdobGlnaHRlZE1hcmtzLCBwYXJhbWV0ZXJzKS50aGVuPEFjdGl2ZU1hcmtzPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLnJlc3VsdCBhcyBIaWdobGlnaHRlZE1hcmtzVGFibGU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLmRhdGEubWFwKHRhYmxlID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZSh0YWJsZSwgdHJ1ZSkpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwcm9jZXNzUmVzdWx0c1RhYmxlKHJlc3BvbnNlRGF0YTogRGF0YVRhYmxlSW50ZXJuYWxDb250cmFjdCwgaXNTdW1tYXJ5OiBib29sZWFuKTogRGF0YVRhYmxlIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSByZXNwb25zZURhdGEuaGVhZGVycy5tYXAoaCA9PiBuZXcgQ29sdW1uKGguZmllbGRDYXB0aW9uLCBEYXRhVHlwZS5TdHJpbmcgLypoLkRhdGFUeXBlKi8sIGguaXNSZWZlcmVuY2VkLCBoLmluZGV4KSk7XHJcbiAgICBjb25zdCB0YWJsZSA9IHJlc3BvbnNlRGF0YS5kYXRhVGFibGUubWFwKHJvdyA9PiB7XHJcbiAgICAgIHJldHVybiByb3cubWFwKGNlbGwgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0YVZhbHVlKGNlbGwudmFsdWUsIGNlbGwuZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXcgRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvaW1wbC9HZXREYXRhU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBJbnRlcm5hbEFwaURpc3BhdGNoZXIsIE1vZGVsLCBOb3RpZmljYXRpb24sIE5vdGlmaWNhdGlvbklkIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UsIFVucmVnaXN0ZXJGbiB9IGZyb20gJy4uL05vdGlmaWNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuY2xhc3MgUmVnaXN0cmF0aW9uIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9maWx0ZXJGbjogKG5vdGlmaWNhdGlvbk1vZGVsOiBNb2RlbCkgPT4gYm9vbGVhbixcclxuICAgIHByaXZhdGUgX2NhbGxiYWNrRm46IChub3RpZmljYXRpb25Nb2RlbDogTW9kZWwpID0+IHZvaWQpIHtcclxuICAgICAgLy8gTm90aGluZyBIZXJlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uTW9kZWw6IE1vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZmlsdGVyRm4obm90aWZpY2F0aW9uTW9kZWwpKSB7XHJcbiAgICAgIHRoaXMuX2NhbGxiYWNrRm4obm90aWZpY2F0aW9uTW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsIGltcGxlbWVudHMgTm90aWZpY2F0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfaGFuZGxlcnM6IHsgW25vdGlmaWNhdGlvbklkOiBzdHJpbmddOiBBcnJheTxSZWdpc3RyYXRpb24+IH07XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikge1xyXG4gICAgdGhpcy5faGFuZGxlcnMgPSB7fTtcclxuICAgIHRoaXMuZGlzcGF0Y2hlci5yZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIodGhpcy5vbk5vdGlmaWNhdGlvbi5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuTm90aWZpY2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVySGFuZGxlcihpZDogTm90aWZpY2F0aW9uSWQsIGZpbHRlckZuOiAobW9kZWw6IE1vZGVsKSA9PiBib29sZWFuLCBoYW5kbGVyOiAobW9kZWw6IE1vZGVsKSA9PiB2b2lkKTogVW5yZWdpc3RlckZuIHtcclxuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5faGFuZGxlcnNbaWRdIHx8IG5ldyBBcnJheTxSZWdpc3RyYXRpb24+KCk7XHJcbiAgICBjb25zdCByZWdpc3RyYXRpb24gPSBuZXcgUmVnaXN0cmF0aW9uKGZpbHRlckZuLCBoYW5kbGVyKTtcclxuICAgIGhhbmRsZXJzLnB1c2gocmVnaXN0cmF0aW9uKTtcclxuICAgIHRoaXMuX2hhbmRsZXJzW2lkXSA9IGhhbmRsZXJzO1xyXG4gICAgcmV0dXJuICgpID0+IHRoaXMucmVtb3ZlUmVnaXN0cmF0aW9uKGlkLCByZWdpc3RyYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUoaWQ6IE5vdGlmaWNhdGlvbklkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMuaGFzT3duUHJvcGVydHkoaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk5vdGlmaWNhdGlvbihub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHbyB0aHJvdWdoIGFuZCBjaGVjayBmb3IgYWxsIHRoZSBoYW5kbGVycyBvZiB0aGlzIHBhcnRpY3VsYXIgbm90aWZpY2F0aW9uXHJcbiAgICB0aGlzLl9oYW5kbGVyc1tub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWRdLmZvckVhY2goaCA9PiBoLm9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVJlZ2lzdHJhdGlvbihpZDogTm90aWZpY2F0aW9uSWQsIHJlZ2lzdHJhdGlvbjogUmVnaXN0cmF0aW9uKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaGFzSGFuZGxlcnNGb3JOb3RpZmljYXRpb25UeXBlKGlkKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faGFuZGxlcnNbaWRdID0gdGhpcy5faGFuZGxlcnNbaWRdLmZpbHRlcihyZWcgPT4gcmVnICE9PSByZWdpc3RyYXRpb24pO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvc3JjL1NlcnZpY2VzL2ltcGwvTm90aWZpY2F0aW9uU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBTaGVldCBhcyBTaGVldENvbnRyYWN0IH0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHtcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgTW9kZWwsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgUGFyYW1ldGVySW5mbyxcclxuICBTaGVldFBhdGgsXHJcbiAgVmVyYklkLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBQYXJhbWV0ZXJJbXBsIH0gZnJvbSAnLi4vLi4vSW50ZXJuYWwvUGFyYW1ldGVySW1wbCc7XHJcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4uLy4uL1BhcmFtZXRlcic7XHJcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vUGFyYW1ldGVyc1NlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlUmVnaXN0cnknO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnNTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFBhcmFtZXRlcnNTZXJ2aWNlIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTZXJ2aWNlTmFtZXMuUGFyYW1ldGVycztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzRm9yU2hlZXRBc3luYyhzaGVldFBhdGg6IFNoZWV0UGF0aCwgc2hlZXQ6IFNoZWV0Q29udHJhY3QpOiBQcm9taXNlPEFycmF5PFBhcmFtZXRlcj4+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIFtQYXJhbWV0ZXJJZC5TaGVldFBhdGhdOiBzaGVldFBhdGhcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5HZXRQYXJhbWV0ZXJzRm9yU2hlZXQsIHBhcmFtZXRlcnMpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAvLyBUT0RPIC0gQ2hlY2sgZm9yIGVycm9yXHJcblxyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgYXMgQXJyYXk8UGFyYW1ldGVySW5mbz47XHJcbiAgICAgIHJldHVybiByZXN1bHQubWFwKHBhcmFtZXRlckluZm8gPT4ge1xyXG4gICAgICAgIGNvbnN0IGltcGwgPSBuZXcgUGFyYW1ldGVySW1wbChwYXJhbWV0ZXJJbmZvKTtcclxuICAgICAgICByZXR1cm4gbmV3IFBhcmFtZXRlcihpbXBsLCBzaGVldCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlUGFyYW1ldGVyVmFsdWVBc3luYyhmaWVsZE5hbWU6IHN0cmluZywgbmV3VmFsdWU6IHN0cmluZyk6IFByb21pc2U8UGFyYW1ldGVySW5mbz4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHtcclxuICAgICAgW1BhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV06IGZpZWxkTmFtZSxcclxuICAgICAgW1BhcmFtZXRlcklkLlBhcmFtZXRlclZhbHVlXTogbmV3VmFsdWVcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5DaGFuZ2VQYXJhbWV0ZXJWYWx1ZSwgcGFyYW1ldGVycykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBQYXJhbWV0ZXJJbmZvO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmluZFBhcmFtZXRlckJ5TmFtZUFzeW5jKG5hbWU6IHN0cmluZywgc2hlZXQ6IFNoZWV0Q29udHJhY3QpOiBQcm9taXNlPFBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmFtZXRlckFzeW5jKHNoZWV0LCBuYW1lLCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJCeUdsb2JhbEZpZWxkTmFtZUFzeW5jKGZpZWxkTmFtZTogc3RyaW5nLCBzaGVldDogU2hlZXRDb250cmFjdCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kUGFyYW1ldGVyQXN5bmMoc2hlZXQsIHVuZGVmaW5lZCwgZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFBhcmFtZXRlckFzeW5jKFxyXG4gICAgc2hlZXQ6IFNoZWV0Q29udHJhY3QsXHJcbiAgICBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8UGFyYW1ldGVyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBwYXJhbWV0ZXJzW1BhcmFtZXRlcklkLlBhcmFtZXRlckNhcHRpb25dID0gbmFtZTtcclxuICAgIH0gZWxzZSBpZiAoZmllbGROYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5QYXJhbWV0ZXJGaWVsZE5hbWVdID0gZmllbGROYW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmUgZmllbGQgbmFtZSBvciBjYXB0aW9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKFZlcmJJZC5GaW5kUGFyYW1ldGVyLCBwYXJhbWV0ZXJzKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgY29uc3QgaW5zdGFuY2VPZlBhcmFtZXRlckluZm8gPSAob2JqZWN0OiBNb2RlbCk6IG9iamVjdCBpcyBQYXJhbWV0ZXJJbmZvID0+IHtcclxuICAgICAgICByZXR1cm4gJ2ZpZWxkTmFtZScgaW4gb2JqZWN0O1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgd2UgZ290IGEgdmFsaWQgcmVzcG9uc2UgYmFjayBhZ2FpblxyXG4gICAgICBpZiAoaW5zdGFuY2VPZlBhcmFtZXRlckluZm8ocmVzcG9uc2UucmVzdWx0KSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBQYXJhbWV0ZXJJbmZvO1xyXG4gICAgICAgIGNvbnN0IGltcGwgPSBuZXcgUGFyYW1ldGVySW1wbChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUGFyYW1ldGVyKGltcGwsIHNoZWV0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWxsb3dhYmxlVmFsdWVzVHlwZSxcclxuICBEYXRhVHlwZSxcclxuICBQYXJhbWV0ZXJEb21haW5SZXN0cmljdGlvbiBhcyBEb21haW5SZXN0cmljdGlvbixcclxuICBQZXJpb2RUeXBlLFxyXG4gIFNoZWV0LFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uSWQsIFBhcmFtZXRlckluZm8gfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBQYXJhbSB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XHJcblxyXG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgfSBmcm9tICcuLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vRXZlbnRzL1BhcmFtZXRlckNoYW5nZWRFdmVudCc7XHJcbmltcG9ydCB7IERhdGFWYWx1ZSB9IGZyb20gJy4uL01vZGVscy9HZXREYXRhTW9kZWxzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL05vdGlmaWNhdGlvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1BhcmFtZXRlcnNTZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5LCBTZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnknO1xyXG5pbXBvcnQgeyBTaW5nbGVFdmVudE1hbmFnZXIgfSBmcm9tICcuLi9TaW5nbGVFdmVudE1hbmFnZXInO1xyXG5pbXBvcnQgeyBTaW5nbGVFdmVudE1hbmFnZXJJbXBsIH0gZnJvbSAnLi9TaW5nbGVFdmVudE1hbmFnZXJJbXBsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJJbXBsIHtcclxuICBwcml2YXRlIF9hbGxvd2FibGVWYWx1ZXM6IERvbWFpblJlc3RyaWN0aW9uO1xyXG4gIHByaXZhdGUgX2dsb2JhbEZpZWxkTmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3BhcmFtZXRlckluZm86IFBhcmFtZXRlckluZm87XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbWV0ZXJJbmZvOiBQYXJhbWV0ZXJJbmZvKSB7XHJcbiAgICB0aGlzLnNldFBhcmFtZXRlckluZm8ocGFyYW1ldGVySW5mbyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJJbmZvLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBEYXRhVmFsdWUge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRhVmFsdWUodGhpcy5fcGFyYW1ldGVySW5mby5jdXJyZW50VmFsdWUudmFsdWUsIHRoaXMuX3BhcmFtZXRlckluZm8uY3VycmVudFZhbHVlLmZvcm1hdHRlZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YVR5cGUoKTogRGF0YVR5cGUge1xyXG4gICAgcmV0dXJuIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRhVHlwZS5jb252ZXJ0KHRoaXMuX3BhcmFtZXRlckluZm8uZGF0YVR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhbGxvd2FibGVWYWx1ZXMoKTogRG9tYWluUmVzdHJpY3Rpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FsbG93YWJsZVZhbHVlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VWYWx1ZUFzeW5jKG5ld1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IFByb21pc2U8RGF0YVZhbHVlPiB7XHJcbiAgICBsZXQgY29lcmNlZFZhbHVlID0gUGFyYW0uc2VyaWFsaXplUGFyYW10ZXJWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFBhcmFtZXRlcnNTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuUGFyYW1ldGVycyk7XHJcbiAgICByZXR1cm4gcGFyYW1ldGVyc1NlcnZpY2UuY2hhbmdlUGFyYW1ldGVyVmFsdWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIGNvZXJjZWRWYWx1ZSkudGhlbihwYXJhbWV0ZXJJbmZvID0+IHtcclxuICAgICAgdGhpcy5zZXRQYXJhbWV0ZXJJbmZvKHBhcmFtZXRlckluZm8pO1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxyXG4gICAqIHdpdGggdGhlIE5vdGlmaWNhdGlvblNlcnZpY2UuIEl0IHJldHVybnMgYW4gYXJyYXkgb2YgU2luZ2xlRXZlbnRNYW5hZ2VyIG9iamVjdHMgd2hpY2hcclxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2hlZXQgVGhlIHNoZWV0IG9iamVjdCB3aGljaCB3aWxsIGJlIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50IG5vdGlmaWNhdGlvbnNcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8U2luZ2xlRXZlbnRNYW5hZ2VyPn0gQ29sbGVjdGlvbiBvZiBldmVudCBtYW5hZ2VycyB0byBwYXNzIHRvIGFuIEV2ZW50TGlzdGVuZXJNYW5hZ2VyXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRpYWxpemVFdmVudHMoc2hlZXQ6IFNoZWV0KTogQXJyYXk8U2luZ2xlRXZlbnRNYW5hZ2VyPiB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gbmV3IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4oKTtcclxuICAgIGxldCBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxOb3RpZmljYXRpb25TZXJ2aWNlPihTZXJ2aWNlTmFtZXMuTm90aWZpY2F0aW9uKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cclxuICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGV2ZW50IG1hbmFnZXJzIHdlJ2xsIG5lZWQgKG9uZSBmb3IgZWFjaCBldmVudCB0eXBlKVxyXG4gICAgY29uc3QgcGFyYW1ldGVyRXZlbnQgPSBuZXcgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQ+KFRhYmxlYXVFdmVudFR5cGUuUGFyYW1ldGVyQ2hhbmdlZCk7XHJcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlLnJlZ2lzdGVySGFuZGxlcihOb3RpZmljYXRpb25JZC5QYXJhbWV0ZXJDaGFuZ2VkLCAobW9kZWwpID0+IHtcclxuICAgICAgY29uc3QgZmllbGROYW1lID0gbW9kZWwgYXMgc3RyaW5nO1xyXG4gICAgICByZXR1cm4gZmllbGROYW1lID09PSB0aGlzLl9nbG9iYWxGaWVsZE5hbWU7XHJcbiAgICB9LCAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgcGFyYW1ldGVyRXZlbnQudHJpZ2dlckV2ZW50KCgpID0+IG5ldyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQoZmllbGROYW1lLCBzaGVldCkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmVzdWx0cy5wdXNoKHBhcmFtZXRlckV2ZW50KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvOiBQYXJhbWV0ZXJJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYXJhbWV0ZXJJbmZvID0gcGFyYW1ldGVySW5mbztcclxuICAgIHRoaXMuX2dsb2JhbEZpZWxkTmFtZSA9IHBhcmFtZXRlckluZm8uZmllbGROYW1lO1xyXG5cclxuICAgIGNvbnN0IHR5cGUgPSBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuYWxsb3dhYmxlVmFsdWVzLmNvbnZlcnQocGFyYW1ldGVySW5mby5hbGxvd2FibGVWYWx1ZXNUeXBlKTtcclxuICAgIGxldCBsaXN0VmFsdWVzOiBBcnJheTxEYXRhVmFsdWU+IHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IG1pblZhbHVlOiBEYXRhVmFsdWUgfCB1bmRlZmluZWQ7XHJcbiAgICBsZXQgbWF4VmFsdWU6IERhdGFWYWx1ZSB8IHVuZGVmaW5lZDtcclxuICAgIGxldCBzdGVwU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IGRhdGVTdGVwUGVyaW9kOiBQZXJpb2RUeXBlIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGlmICh0eXBlID09PSBBbGxvd2FibGVWYWx1ZXNUeXBlLkxpc3QpIHtcclxuICAgICAgY29uc3QgdmFsdWVzID0gcGFyYW1ldGVySW5mby5hbGxvd2FibGVWYWx1ZXMgfHwgW107XHJcbiAgICAgIGxpc3RWYWx1ZXMgPSB2YWx1ZXMubWFwKHZhbCA9PiBuZXcgRGF0YVZhbHVlKHZhbC52YWx1ZSwgdmFsLmZvcm1hdHRlZFZhbHVlKSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEFsbG93YWJsZVZhbHVlc1R5cGUuUmFuZ2UpIHtcclxuICAgICAgbWluVmFsdWUgPSBwYXJhbWV0ZXJJbmZvLm1pblZhbHVlICYmIG5ldyBEYXRhVmFsdWUocGFyYW1ldGVySW5mby5taW5WYWx1ZS52YWx1ZSwgcGFyYW1ldGVySW5mby5taW5WYWx1ZS5mb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgICAgIG1heFZhbHVlID0gcGFyYW1ldGVySW5mby5tYXhWYWx1ZSAmJiBuZXcgRGF0YVZhbHVlKHBhcmFtZXRlckluZm8ubWF4VmFsdWUudmFsdWUsIHBhcmFtZXRlckluZm8ubWF4VmFsdWUuZm9ybWF0dGVkVmFsdWUpO1xyXG4gICAgICBzdGVwU2l6ZSA9IHBhcmFtZXRlckluZm8uc3RlcFNpemU7XHJcbiAgICAgIGRhdGVTdGVwUGVyaW9kID0gcGFyYW1ldGVySW5mby5kYXRlU3RlcFBlcmlvZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KHBhcmFtZXRlckluZm8uZGF0ZVN0ZXBQZXJpb2QpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2FsbG93YWJsZVZhbHVlcyA9IHtcclxuICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgYWxsb3dhYmxlVmFsdWVzOiBsaXN0VmFsdWVzLFxyXG4gICAgICBtaW5WYWx1ZTogbWluVmFsdWUsXHJcbiAgICAgIG1heFZhbHVlOiBtYXhWYWx1ZSxcclxuICAgICAgc3RlcFNpemU6IHN0ZXBTaXplLFxyXG4gICAgICBkYXRlU3RlcFBlcmlvZDogZGF0ZVN0ZXBQZXJpb2RcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvSW50ZXJuYWwvUGFyYW1ldGVySW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWRkSW5Db250ZXh0IGFzIEV4dGVybmFsQWRkSW5Db250ZXh0LFxyXG4gIEFkZEluTW9kZSBhcyBFeHRlcm5hbEFkZEluTW9kZSxcclxuICBBbGxvd2FibGVWYWx1ZXNUeXBlIGFzIEV4dGVybmFsQWxsb3dhYmxlVmFsdWVzVHlwZSxcclxuICBEYXNoYm9hcmRPYmplY3RUeXBlIGFzIEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSxcclxuICBEYXRhVHlwZSBhcyBFeHRlcm5hbERhdGFUeXBlLFxyXG4gIEZpbHRlclVwZGF0ZVR5cGUgYXMgRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLFxyXG4gIFBlcmlvZFR5cGUgYXMgRXh0ZXJuYWxEYXRlUGVyaW9kLFxyXG4gIFNoZWV0VHlwZSBhcyBFeHRlcm5hbFNoZWV0VHlwZSxcclxufSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQge1xyXG4gIEFkZEluQ29udGV4dCBhcyBJbnRlcm5hbEFkZEluQ29udGV4dCxcclxuICBBZGRJbk1vZGUgYXMgSW50ZXJuYWxBZGRJbk1vZGUsXHJcbiAgRGFzaGJvYXJkT2JqZWN0VHlwZSBhcyBJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUsXHJcbiAgRGF0YVR5cGUgYXMgSW50ZXJuYWxEYXRhVHlwZSxcclxuICBEYXRlU3RlcFBlcmlvZCBhcyBJbnRlcm5hbERhdGVTdGVwUGVyaW9kLFxyXG4gIERvbWFpblJlc3RyaWN0aW9uVHlwZSBhcyBJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZSxcclxuICBGaWx0ZXJVcGRhdGVUeXBlIGFzIEludGVybmFsRmlsdGVyVXBkYXRlVHlwZSxcclxuICBTaGVldFR5cGUgYXMgSW50ZXJuYWxTaGVldFR5cGUsXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgRW51bUNvbnZlcnRlciB9IGZyb20gJ0B0YWJsZWF1L2FwaS11dGlscyc7XHJcblxyXG4vKiB0c2xpbnQ6ZGlzYWJsZTp0eXBlZGVmIC0gRGlzYWJsZSB0aGlzIHRvIG1ha2UgZGVjbGFyaW5nIHRoZXNlIGNsYXNzZXMgYSBiaXQgZWFzaWVyICovXHJcbi8qKlxyXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGludGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxyXG4gKiBpbiB0aGUgZXh0ZXJuYWwtYXBpLWNvbnRyYWN0LCB3aGljaCBkZXZlbG9wZXJzIGNvZGUgYWdhaW5zdC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3Mge1xyXG4gIHB1YmxpYyBzdGF0aWMgYWRkSW5Db250ZXh0ID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxBZGRJbkNvbnRleHQsIEV4dGVybmFsQWRkSW5Db250ZXh0Pih7XHJcbiAgICBbSW50ZXJuYWxBZGRJbkNvbnRleHQuRGVza3RvcF06IEV4dGVybmFsQWRkSW5Db250ZXh0LkRlc2t0b3AsXHJcbiAgICBbSW50ZXJuYWxBZGRJbkNvbnRleHQuU2VydmVyXTogRXh0ZXJuYWxBZGRJbkNvbnRleHQuU2VydmVyLFxyXG4gICAgW0ludGVybmFsQWRkSW5Db250ZXh0LlVua25vd25dOiBFeHRlcm5hbEFkZEluQ29udGV4dC5Vbmtub3duXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYWRkSW5Nb2RlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxBZGRJbk1vZGUsIEV4dGVybmFsQWRkSW5Nb2RlPih7XHJcbiAgICBbSW50ZXJuYWxBZGRJbk1vZGUuQXV0aG9yaW5nXTogRXh0ZXJuYWxBZGRJbk1vZGUuQXV0aG9yaW5nLFxyXG4gICAgW0ludGVybmFsQWRkSW5Nb2RlLlZpZXdpbmddOiBFeHRlcm5hbEFkZEluTW9kZS5WaWV3aW5nLFxyXG4gICAgW0ludGVybmFsQWRkSW5Nb2RlLlVua25vd25dOiBFeHRlcm5hbEFkZEluTW9kZS5Vbmtub3duXHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc2hlZXRUeXBlID0gbmV3IEVudW1Db252ZXJ0ZXI8SW50ZXJuYWxTaGVldFR5cGUsIEV4dGVybmFsU2hlZXRUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuRGFzaGJvYXJkXTogRXh0ZXJuYWxTaGVldFR5cGUuRGFzaGJvYXJkLFxyXG4gICAgW0ludGVybmFsU2hlZXRUeXBlLlN0b3J5XTogRXh0ZXJuYWxTaGVldFR5cGUuU3RvcnksXHJcbiAgICBbSW50ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XTogRXh0ZXJuYWxTaGVldFR5cGUuV29ya3NoZWV0XHJcbiAgfSk7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGFzaGJvYXJkT2JqZWN0VHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZSwgRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuTGVnZW5kXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcclxuICAgIFtJbnRlcm5hbERhc2hib2FyZE9iamVjdFR5cGUuUGFnZUZpbHRlcl06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlBhcmFtZXRlckNvbnRyb2wsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5UZXh0XTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRleHQsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlLFxyXG4gICAgW0ludGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5XZWJQYWdlXTogRXh0ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldlYlBhZ2UsXHJcbiAgICBbSW50ZXJuYWxEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldF06IEV4dGVybmFsRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXRcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRhVHlwZSA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGF0YVR5cGUsIEV4dGVybmFsRGF0YVR5cGU+KHtcclxuICAgIFtJbnRlcm5hbERhdGFUeXBlLkJvb2xdOiBFeHRlcm5hbERhdGFUeXBlLkJvb2wsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5EYXRlXTogRXh0ZXJuYWxEYXRhVHlwZS5EYXRlLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRGF0ZVRpbWVdOiBFeHRlcm5hbERhdGFUeXBlLkRhdGVUaW1lLFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuRmxvYXRdOiBFeHRlcm5hbERhdGFUeXBlLkZsb2F0LFxyXG4gICAgW0ludGVybmFsRGF0YVR5cGUuSW50XTogRXh0ZXJuYWxEYXRhVHlwZS5JbnQsXHJcbiAgICBbSW50ZXJuYWxEYXRhVHlwZS5TdHJpbmddOiBFeHRlcm5hbERhdGFUeXBlLlN0cmluZ1xyXG4gIH0pO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGZpbHRlclVwZGF0ZVR5cGUgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbEZpbHRlclVwZGF0ZVR5cGUsIEV4dGVybmFsRmlsdGVyVXBkYXRlVHlwZT4oe1xyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BZGRdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWRkLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5BbGxdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuQWxsLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmVdOiBFeHRlcm5hbEZpbHRlclVwZGF0ZVR5cGUuUmVtb3ZlLFxyXG4gICAgW0ludGVybmFsRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXTogRXh0ZXJuYWxGaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2VcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBhbGxvd2FibGVWYWx1ZXMgPSBuZXcgRW51bUNvbnZlcnRlcjxJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZSwgRXh0ZXJuYWxBbGxvd2FibGVWYWx1ZXNUeXBlPih7XHJcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuQWxsXTogRXh0ZXJuYWxBbGxvd2FibGVWYWx1ZXNUeXBlLkFsbCxcclxuICAgIFtJbnRlcm5hbERvbWFpblJlc3RyaWN0aW9uVHlwZS5MaXN0XTogRXh0ZXJuYWxBbGxvd2FibGVWYWx1ZXNUeXBlLkxpc3QsXHJcbiAgICBbSW50ZXJuYWxEb21haW5SZXN0cmljdGlvblR5cGUuUmFuZ2VdOiBFeHRlcm5hbEFsbG93YWJsZVZhbHVlc1R5cGUuUmFuZ2VcclxuICB9KTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBkYXRlU3RlcFBlcmlvZCA9IG5ldyBFbnVtQ29udmVydGVyPEludGVybmFsRGF0ZVN0ZXBQZXJpb2QsIEV4dGVybmFsRGF0ZVBlcmlvZD4oe1xyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuWWVhcnNdOiBFeHRlcm5hbERhdGVQZXJpb2QuWWVhcnMsXHJcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5RdWFydGVyc106IEV4dGVybmFsRGF0ZVBlcmlvZC5RdWFydGVycyxcclxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLk1vbnRoc106IEV4dGVybmFsRGF0ZVBlcmlvZC5Nb250aHMsXHJcbiAgICBbSW50ZXJuYWxEYXRlU3RlcFBlcmlvZC5XZWVrc106IEV4dGVybmFsRGF0ZVBlcmlvZC5XZWVrcyxcclxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLkRheXNdOiBFeHRlcm5hbERhdGVQZXJpb2QuRGF5cyxcclxuICAgIFtJbnRlcm5hbERhdGVTdGVwUGVyaW9kLkhvdXJzXTogRXh0ZXJuYWxEYXRlUGVyaW9kLkhvdXJzLFxyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuTWludXRlc106IEV4dGVybmFsRGF0ZVBlcmlvZC5NaW51dGVzLFxyXG4gICAgW0ludGVybmFsRGF0ZVN0ZXBQZXJpb2QuU2Vjb25kc106IEV4dGVybmFsRGF0ZVBlcmlvZC5TZWNvbmRzXHJcbiAgfSk7XHJcbn1cclxuLyogdHNsaW50OmVuYWJsZTp0eXBlZGVmICovXHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgUGFyYW1ldGVyIGFzIFBhcmFtZXRlckNvbnRyYWN0LFxyXG4gIFBhcmFtZXRlckNoYW5nZWRFdmVudCBhcyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnRDb250cmFjdCxcclxuICBTaGVldCBhcyBTaGVldENvbnRyYWN0LFxyXG4gIFRhYmxlYXVFdmVudFR5cGUsXHJcbn0gZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvUGFyYW1ldGVyc1NlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeSc7XHJcbmltcG9ydCB7IFRhYmxlYXVTaGVldEV2ZW50IH0gZnJvbSAnLi9UYWJsZWF1U2hlZXRFdmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50IGV4dGVuZHMgVGFibGVhdVNoZWV0RXZlbnQgaW1wbGVtZW50cyBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnRDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2dsb2JhbEZpZWxkTmFtZTogc3RyaW5nLCBzaGVldDogU2hlZXRDb250cmFjdCkge1xyXG4gICAgc3VwZXIoVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkLCBzaGVldCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGFyYW1ldGVyQXN5bmMoKTogUHJvbWlzZTxQYXJhbWV0ZXJDb250cmFjdD4ge1xyXG4gICAgLy8gQ2FsbCBkb3duIHRvIG91ciBzZXJ2aWNlIHRvIGdldCB0aGUgcGFyYW1ldGVyIGJhY2sgdmlhIGl0cyBmaWVsZCBuYW1lXHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmZpbmRQYXJhbWV0ZXJCeUdsb2JhbEZpZWxkTmFtZUFzeW5jKHRoaXMuX2dsb2JhbEZpZWxkTmFtZSwgdGhpcy5zaGVldCkudGhlbihwYXJhbWV0ZXIgPT4ge1xyXG4gICAgICBpZiAocGFyYW1ldGVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHBhcmFtZXRlcicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvRXZlbnRzL1BhcmFtZXRlckNoYW5nZWRFdmVudC50c1xuICoqLyIsIi8qKlxyXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgYW4gYXBpIHNlcnZpY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBpU2VydmljZSB7XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhpcyBzZXJ2aWNlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIHNlcnZpY2UgbmFtZSB3aGljaCB3aWxsIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGFwaS1zaGFyZWQgcHJvamVjdFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGVudW0gU2VydmljZU5hbWVzIHtcclxuICBHZXREYXRhID0gJ2dldC1kYXRhLXNlcnZpY2UnLFxyXG4gIEZpbHRlciA9ICdmaWx0ZXItc2VydmljZScsXHJcbiAgTm90aWZpY2F0aW9uID0gJ25vdGlmaWNhdGlvbi1zZXJ2aWNlJyxcclxuICBQYXJhbWV0ZXJzID0gJ3BhcmFtZXRlcnMtc2VydmljZScsXHJcbiAgU2VsZWN0aW9uID0gJ3NlbGVjdGlvbi1zZXJ2aWNlJ1xyXG59XHJcblxyXG4vKipcclxuICogRG8gc29tZSBnbG9iYWJsIGRlY2xhcmF0aW9ucyBzbyB3ZSBjYW4gY3JlYXRlIGEgc2luZ2xldG9uIG9uIHRoZSB3aW5kb3cgb2JqZWN0XHJcbiAqL1xyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IF9fdGFibGVhdUFwaVNlcnZpY2VSZWdpc3RyeTogU2VydmljZVJlZ2lzdHJ5IHwgdW5kZWZpbmVkOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZVJlZ2lzdHJ5IHtcclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgYSBuZXcgc2VydmljZSBpbnRvIHRoZSBzZXJ2aWNlIHJlZ2lzdHJ5LiBBbnkgZXhpc3Rpbmcgb25lIHdpbGxcclxuICAgKiBiZSBvdmVyd3JpdHRlbi4gdGhlIHNlcnZpY2UgaXMgcmVnaXN0ZXJlZCB1bmRlciBzZXJ2aWNlLnNlcnZpY2VOYW1lXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0FwaVNlcnZpY2V9IHNlcnZpY2UgVGhlIHNlcnZpdmUgdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3RlclNlcnZpY2Uoc2VydmljZTogQXBpU2VydmljZSk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZ2l2ZW4gc2VydmljZSBmcm9tIHRoZSByZWdpc3RyeS4gSWYgdGhlcmUgaXMgbm90IGFcclxuICAgKiBzZXJ2aWNlIHJlZ2lzdGVyZWQgdW5kZXIgdGhhdCBuYW1lLCB0aHJvd3MgYW5kIGVycm9yXHJcbiAgICpcclxuICAgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgc2VydmljZS5cclxuICAgKiBAcmV0dXJucyB7VH0gVGhlIHJlcXVlc3RlZCBzZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VydmljZTxUIGV4dGVuZHMgQXBpU2VydmljZT4oc2VydmljZU5hbWU6IHN0cmluZyk6IFQ7XHJcbn1cclxuXHJcbmNsYXNzIFNlcnZpY2VSZWdpc3RyeUltcGwgaW1wbGVtZW50cyBTZXJ2aWNlUmVnaXN0cnkge1xyXG4gIHByaXZhdGUgX3NlcnZpY2VzOiB7IFtzZXJ2aWNlTmFtZTogc3RyaW5nXTogQXBpU2VydmljZTsgfTtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fc2VydmljZXMgPSB7fTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3RlclNlcnZpY2Uoc2VydmljZTogQXBpU2VydmljZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2VydmljZXNbc2VydmljZS5zZXJ2aWNlTmFtZV0gPSBzZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlcnZpY2U8VCBleHRlbmRzIEFwaVNlcnZpY2U+KHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBUIHtcclxuICAgIGlmICghdGhpcy5fc2VydmljZXMuaGFzT3duUHJvcGVydHkoc2VydmljZU5hbWUpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gU2VydmljZSAke3NlcnZpY2VOYW1lfSBpcyByZWdpc3RlcmVkYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VzW3NlcnZpY2VOYW1lXSBhcyBUO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIHN0YXRpYyBjbGFzcyB1c2VkIGZvciBnZXR0aW5nIGFjY2VzcyB0byB0aGUgc2luZ2xlIGluc3RhbmNlXHJcbiAqIG9mIHRoZSBBcGlTZXJ2aWNlUmVnaXN0cnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlUmVnaXN0cnkge1xyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgU2VydmljZVJlZ2lzdHJ5XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogU2VydmljZVJlZ2lzdHJ5IHtcclxuICAgIGlmICghd2luZG93Ll9fdGFibGVhdUFwaVNlcnZpY2VSZWdpc3RyeSkge1xyXG4gICAgICBBcGlTZXJ2aWNlUmVnaXN0cnkuc2V0SW5zdGFuY2UobmV3IFNlcnZpY2VSZWdpc3RyeUltcGwoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF3aW5kb3cuX190YWJsZWF1QXBpU2VydmljZVJlZ2lzdHJ5KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNzaWduaW5nIHNlcnZpY2UgcmVnaXN0cnkgZmFpbGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIG92ZXJyaWRlIHRoZSByZWdpc3RyeSBpbnN0YW5jZS4gQ2FuIGJlIHVzZWQgYnkgdW5pdCB0ZXN0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHtTZXJ2aWNlUmVnaXN0cnl9IHNlcnZpY2VSZWdpc3RyeSBUaGUgbmV3IHJlZ2lzdHJ5XHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzZXRJbnN0YW5jZShzZXJ2aWNlUmVnaXN0cnk/OiBTZXJ2aWNlUmVnaXN0cnkpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkgPSBzZXJ2aWNlUmVnaXN0cnk7XHJcbiAgfVxyXG5cclxuICAvLyBQcml2YXRlIHRvIGF2b2lkIGFueW9uZSBjb25zdHJ1Y3RpbmcgdGhpc1xyXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9zcmMvU2VydmljZXMvU2VydmljZVJlZ2lzdHJ5LnRzXG4gKiovIiwiaW1wb3J0IHtcclxuICBFeGVjdXRlUGFyYW1ldGVycyxcclxuICBJbnRlcm5hbEFwaURpc3BhdGNoZXIsXHJcbiAgUGFyYW1ldGVySWQsXHJcbiAgVmVyYklkLFxyXG4gIFZpc3VhbElkLFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vU2VsZWN0aW9uU2VydmljZSc7XHJcbmltcG9ydCB7IFNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL1NlcnZpY2VSZWdpc3RyeSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uU2VydmljZUltcGwgaW1wbGVtZW50cyBTZWxlY3Rpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIF9kaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXI7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkaXNwYXRjaGVyOiBJbnRlcm5hbEFwaURpc3BhdGNoZXIpIHtcclxuICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNlcnZpY2VOYW1lcy5TZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2QgdG8gY2xlYXIgYWxsIHRoZSBzZWxlY3RlZCBtYXJrcyBmb3IgdGhlIGdpdmVuIHdvcmtzaGVldFxyXG4gICAqIEBwYXJhbSB2aXN1YWxJZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkTWFya3NBc3luYyh2aXN1YWxJZDogVmlzdWFsSWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnM6IEV4ZWN1dGVQYXJhbWV0ZXJzID0ge1tQYXJhbWV0ZXJJZC5WaXN1YWxJZF06IHZpc3VhbElkfTtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkNsZWFyU2VsZWN0ZWRNYXJrcywgcGFyYW1ldGVycykudGhlbjx2b2lkPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIHJldHVybiA7IC8vIEV4cGVjdGluZyBhbiBlbXB0eSBtb2RlbCBhbmQgaGVuY2UgdGhlIHZvaWQgcmVzcG9uc2UuXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL3NyYy9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IERhc2hib2FyZEltcGwgfSBmcm9tICcuL0ludGVybmFsL0Rhc2hib2FyZEltcGwnO1xyXG5pbXBvcnQgeyBTaGVldCB9IGZyb20gJy4vU2hlZXQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZCBleHRlbmRzIFNoZWV0IGltcGxlbWVudHMgQ29udHJhY3QuRGFzaGJvYXJkIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkYXNoYm9hcmRJbXBsOiBEYXNoYm9hcmRJbXBsKSB7XHJcbiAgICBzdXBlcihkYXNoYm9hcmRJbXBsKTtcclxuICAgIGRhc2hib2FyZEltcGwuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB3b3Jrc2hlZXRzKCk6IEFycmF5PENvbnRyYWN0LldvcmtzaGVldD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkSW1wbC53b3Jrc2hlZXRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBvYmplY3RzKCk6IEFycmF5PENvbnRyYWN0LkRhc2hib2FyZE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkSW1wbC5vYmplY3RzO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRGFzaGJvYXJkLnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEV2ZW50TGlzdGVuZXJNYW5hZ2VyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldEltcGwgfSBmcm9tICcuL0ludGVybmFsL1NoZWV0SW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2hlZXQgZXh0ZW5kcyBFdmVudExpc3RlbmVyTWFuYWdlciBpbXBsZW1lbnRzIENvbnRyYWN0LlNoZWV0IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBzaGVldEltcGw6IFNoZWV0SW1wbCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hlZXRJbXBsLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBDb250cmFjdC5TaGVldFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hlZXRJbXBsLnNoZWV0VHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBDb250cmFjdC5TaXplIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENvbnRyYWN0LlBhcmFtZXRlciB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hlZXRJbXBsLmZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzQXN5bmMoKTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5QYXJhbWV0ZXI+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGVldEltcGwuZ2V0UGFyYW1ldGVyc0FzeW5jKHRoaXMpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvU2hlZXQudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHRlcm5hbCBEYXNoYm9hcmRDb250ZW50IG5hbWVzcGFjZS5cclxuICogVGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlIEltcGwgcGF0dGVybiBhcyBEYXNoYm9hcmRDb250ZW50IGlzXHJcbiAqIGN1cnJlbnRseSBqdXN0IGEgKHNpbmdsZSkgcHJvcGVydHkgYmFnLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbnRlbnQgaW1wbGVtZW50cyBDb250cmFjdC5EYXNoYm9hcmRDb250ZW50IHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQpIHsgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZCgpOiBDb250cmFjdC5EYXNoYm9hcmQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9EYXNoYm9hcmRDb250ZW50LnRzXG4gKiovIiwiaW1wb3J0ICogYXMgQ29udHJhY3QgZnJvbSAnQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0JztcclxuXHJcbmltcG9ydCB7IEFkZEluRW52aXJvbm1lbnQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgYXMgRW51bU1hcHBpbmdzIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IG5hbWVzcGFjZS5cclxuICogRW52aXJvbm1lbnQgZG9lcyBub3QgZm9sbG93IHRoZSBJbXBsIHBhdHRlcm4gYXMgaXQgaXNcclxuICoganVzdCBhIHByb3BlcnR5IGJhZy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCBpbXBsZW1lbnRzIENvbnRyYWN0LkVudmlyb25tZW50IHtcclxuICBwcml2YXRlIF9hcGlWZXJzaW9uOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfY29udGV4dDogQ29udHJhY3QuQWRkSW5Db250ZXh0O1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfbW9kZTogQ29udHJhY3QuQWRkSW5Nb2RlO1xyXG4gIHByaXZhdGUgX29wZXJhdGluZ1N5c3RlbTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3RhYmxlYXVWZXJzaW9uOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihhZGRJbkVudmlyb25tZW50OiBBZGRJbkVudmlyb25tZW50KSB7XHJcbiAgICB0aGlzLl9hcGlWZXJzaW9uID0gYWRkSW5FbnZpcm9ubWVudC5hcGlWZXJzaW9uO1xyXG4gICAgdGhpcy5fY29udGV4dCA9IEVudW1NYXBwaW5ncy5hZGRJbkNvbnRleHQuY29udmVydChhZGRJbkVudmlyb25tZW50LmFkZEluQ29udGV4dCk7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IGFkZEluRW52aXJvbm1lbnQuYWRkSW5MYW5ndWFnZTtcclxuICAgIHRoaXMuX2xvY2FsZSA9IGFkZEluRW52aXJvbm1lbnQuYWRkSW5Mb2NhbGU7XHJcbiAgICB0aGlzLl9tb2RlID0gRW51bU1hcHBpbmdzLmFkZEluTW9kZS5jb252ZXJ0KGFkZEluRW52aXJvbm1lbnQuYWRkSW5Nb2RlKTtcclxuICAgIHRoaXMuX29wZXJhdGluZ1N5c3RlbSA9IGFkZEluRW52aXJvbm1lbnQub3BlcmF0aW5nU3lzdGVtO1xyXG4gICAgdGhpcy5fdGFibGVhdVZlcnNpb24gPSBhZGRJbkVudmlyb25tZW50LnRhYmxlYXVWZXJzaW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGlWZXJzaW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBpVmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29udGV4dCgpOiBDb250cmFjdC5BZGRJbkNvbnRleHQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGxvY2FsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBDb250cmFjdC5BZGRJbk1vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9wZXJhdGluZ1N5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX29wZXJhdGluZ1N5c3RlbTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdGFibGVhdVZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90YWJsZWF1VmVyc2lvbjtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0V4dGVybmFsTmFtZXNwYWNlcy9FbnZpcm9ubWVudC50c1xuICoqLyIsImltcG9ydCB7IFNldHRpbmdzIGFzIFNldHRpbmdzQ29udHJhY3QgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgU2V0dGluZ3NJbXBsIH0gZnJvbSAnLi4vSW50ZXJuYWwvU2V0dGluZ3NJbXBsJztcclxuaW1wb3J0IHsgU2V0dGluZ3NDb2xsZWN0aW9uIH0gZnJvbSAnLi4vU2VydmljZXMvU2V0dGluZ3NTZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgc2V0dGluZ3MgbmFtZXNwYWNlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzIGltcGxlbWVudHMgU2V0dGluZ3NDb250cmFjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc2V0dGluZ3NJbXBsOiBTZXR0aW5nc0ltcGwpIHsgfVxyXG5cclxuICBwdWJsaWMgZXJhc2Uoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0dGluZ3NJbXBsLmVyYXNlKGtleSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXQoa2V5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBbGwoKTogU2V0dGluZ3NDb2xsZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXRBbGwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNNb2RpZmllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5pc01vZGlmaWVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBc3luYygpOiBQcm9taXNlPFNldHRpbmdzQ29sbGVjdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLnNhdmVBc3luYygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR0aW5nc0ltcGwuc2V0KGtleSwgdmFsdWUpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvRXh0ZXJuYWxOYW1lc3BhY2VzL1NldHRpbmdzLnRzXG4gKiovIiwiaW1wb3J0IHsgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcblxyXG5pbXBvcnQgeyBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2VJbXBsIH0gZnJvbSAgJy4vSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFsbEFkZEluU2VydmljZXMoZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKTogdm9pZCB7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbiAgQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgU2V0dGluZ3NTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1NlcnZpY2VzL1JlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcy50c1xuICoqLyIsImltcG9ydCB7IEFkZEluQm9vdHN0cmFwSW5mbywgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLCBWZXJiSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuaW1wb3J0IHsgQWRkSW5TZXJ2aWNlTmFtZXMgfSBmcm9tICcuLi9BZGRJblNlcnZpY2VOYW1lcyc7XHJcbmltcG9ydCB7IEluaXRpYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL0luaXRpYWxpemF0aW9uU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEluaXRpYWxpemF0aW9uU2VydmljZSB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlzcGF0Y2hlcjogSW50ZXJuYWxBcGlEaXNwYXRjaGVyKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBzZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEFkZEluU2VydmljZU5hbWVzLkluaXRpYWxpemF0aW9uU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplRGFzaGJvYXJkQWRkSW5Bc3luYygpOiBQcm9taXNlPEFkZEluQm9vdHN0cmFwSW5mbz4ge1xyXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCBhbnkgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGJlY2F1c2UgdGhleSBhcmUgYWRkZWQgaW4gZm9yIHVzIGJ5IHRoZSBkaXNwYXRjaGVyXHJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLkluaXRpYWxpemVBZGRJbiwge30pLnRoZW48QWRkSW5Cb290c3RyYXBJbmZvPihyZXNwb25zZSA9PiB7XHJcbiAgICAgIC8vIFRPRE8gLSBWYWxpZGF0ZSByZXR1cm4gdmFsdWVcclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCBhcyBBZGRJbkJvb3RzdHJhcEluZm87XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1NlcnZpY2VzL0ltcGwvSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC50c1xuICoqLyIsImltcG9ydCB7XHJcbiAgQWRkSW5TZXR0aW5nc0luZm8sXHJcbiAgRXhlY3V0ZVBhcmFtZXRlcnMsXHJcbiAgSW50ZXJuYWxBcGlEaXNwYXRjaGVyLFxyXG4gIFBhcmFtZXRlcklkLFxyXG4gIFZlcmJJZFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBBZGRJblNlcnZpY2VOYW1lcyB9IGZyb20gJy4uL0FkZEluU2VydmljZU5hbWVzJztcclxuaW1wb3J0IHsgU2V0dGluZ3NDb2xsZWN0aW9uLCBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9TZXR0aW5nc1NlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzU2VydmljZUltcGwgaW1wbGVtZW50cyBTZXR0aW5nc1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpc3BhdGNoZXI6IEludGVybmFsQXBpRGlzcGF0Y2hlcikgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VydmljZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBZGRJblNlcnZpY2VOYW1lcy5TZXR0aW5nc1NlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZVNldHRpbmdzQXN5bmMoc2V0dGluZ3M6IFNldHRpbmdzQ29sbGVjdGlvbik6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBFeGVjdXRlUGFyYW1ldGVycyA9IHt9O1xyXG4gICAgcGFyYW1ldGVyc1tQYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlc10gPSBzZXR0aW5ncztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoVmVyYklkLlNhdmVBZGRJblNldHRpbmdzLCBwYXJhbWV0ZXJzKS50aGVuPFNldHRpbmdzQ29sbGVjdGlvbj4odmFsdWUgPT4ge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZS5yZXN1bHQgYXMgQWRkSW5TZXR0aW5nc0luZm87XHJcblxyXG4gICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnNldHRpbmdzVmFsdWVzKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvciBzYXZpbmcgc2V0dGluZ3MuJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybihyZXN1bHQuc2V0dGluZ3NWYWx1ZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBWZXJzaW9uTnVtYmVyIGFzIFZlcnNpb25OdW1iZXJDb250cmFjdCB9IGZyb20gJ0B0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5kZWNsYXJlIHZhciBBRERJTl9BUElfVkVSU0lPTl9OVU1CRVI6IHN0cmluZztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGFkZGluIGxpYnJhcnlcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJzaW9uTnVtYmVyIGltcGxlbWVudHMgVmVyc2lvbk51bWJlckNvbnRyYWN0IHtcclxuXHJcbiAgLy8gVXNpbmcgc29tZSB3ZWJwYWNrIHRyaWNrcywgd2UgY2FuIGluamVjdCB0aGlzIHZlcnNpb24gaW50byBvdXIgY29kZSAoa2luZGEgbGlrZSBjKysgcHJlcHJvY2Vzc29yIHN0dWZmKVxyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVmVyc2lvbk51bWJlciA9IG5ldyBWZXJzaW9uTnVtYmVyKEFERElOX0FQSV9WRVJTSU9OX05VTUJFUik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgdmVyc2lvbiBudW1iZXIuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogVmVyc2lvbk51bWJlciB7XHJcbiAgICByZXR1cm4gVmVyc2lvbk51bWJlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tYWpvcjogbnVtYmVyO1xyXG4gIHByaXZhdGUgX21pbm9yOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfZml4OiBudW1iZXI7XHJcblxyXG4gIC8vIHByaXZhdGUgY29uc3RydWN0b3Igc28gZXZlcnlvbmUgdXNlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2ZXJzaW9uU3RyaW5nOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBhcnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpLm1hcChwID0+IHBhcnNlSW50KHAsIDEwKSk7XHJcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2ZXJzaW9uIG51bWJlcjogJyArIHZlcnNpb25TdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX21ham9yID0gcGFydHNbMF07XHJcbiAgICB0aGlzLl9taW5vciA9IHBhcnRzWzFdO1xyXG4gICAgdGhpcy5fZml4ID0gcGFydHNbMl07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1ham9yKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWFqb3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1pbm9yKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWlub3I7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpeCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpeDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1ZlcnNpb25OdW1iZXIudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBZGRJbkRhc2hib2FyZEluZm8sIERhc2hib2FyZE9iamVjdFR5cGUsIFNoZWV0UGF0aCwgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBQb2ludCwgU2l6ZSB9IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgRGFzaGJvYXJkT2JqZWN0IH0gZnJvbSAnLi4vRGFzaGJvYXJkT2JqZWN0JztcclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcclxuaW1wb3J0IHsgU2hlZXRJbXBsIH0gZnJvbSAnLi9TaGVldEltcGwnO1xyXG5pbXBvcnQgeyBTaGVldEluZm9JbXBsIH0gZnJvbSAnLi9TaGVldEluZm9JbXBsJztcclxuaW1wb3J0IHsgV29ya3NoZWV0SW1wbCB9IGZyb20gJy4vV29ya3NoZWV0SW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkSW1wbCBleHRlbmRzIFNoZWV0SW1wbCB7XHJcbiAgcHJpdmF0ZSBfd29ya3NoZWV0czogQXJyYXk8Q29udHJhY3QuV29ya3NoZWV0PjtcclxuICBwcml2YXRlIF9vYmplY3RzOiBBcnJheTxDb250cmFjdC5EYXNoYm9hcmRPYmplY3Q+O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5mbzogQWRkSW5EYXNoYm9hcmRJbmZvLCBwcml2YXRlIF9zaGVldFBhdGg6IFNoZWV0UGF0aCkge1xyXG4gICAgc3VwZXIobmV3IFNoZWV0SW5mb0ltcGwoX2luZm8ubmFtZSwgQ29udHJhY3QuU2hlZXRUeXBlLkRhc2hib2FyZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB3b3Jrc2hlZXRzKCk6IEFycmF5PENvbnRyYWN0LldvcmtzaGVldD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG9iamVjdHMoKTogQXJyYXk8Q29udHJhY3QuRGFzaGJvYXJkT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplV2l0aFB1YmxpY0ludGVyZmFjZXMoZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dvcmtzaGVldHMgPSBuZXcgQXJyYXk8V29ya3NoZWV0PigpO1xyXG4gICAgdGhpcy5fb2JqZWN0cyA9IG5ldyBBcnJheTxDb250cmFjdC5EYXNoYm9hcmRPYmplY3Q+KCk7XHJcblxyXG4gICAgLy8gUHJvY2VzcyBhbGwgdGhlIHpvbmVzIHdoaWNoIGFyZSBjb250YWluZWQgaW4gdGhpcyBkYXNoYm9hcmRcclxuICAgIGZvciAoY29uc3Qgem9uZSBvZiB0aGlzLl9pbmZvLnpvbmVzKSB7XHJcbiAgICAgIGxldCB3b3Jrc2hlZXQ6IFdvcmtzaGVldCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIGlmICh6b25lLnpvbmVUeXBlID09PSBEYXNoYm9hcmRPYmplY3RUeXBlLldvcmtzaGVldCkge1xyXG4gICAgICAgIGNvbnN0IHNoZWV0SW5mbyA9IG5ldyBTaGVldEluZm9JbXBsKHpvbmUubmFtZSwgQ29udHJhY3QuU2hlZXRUeXBlLldvcmtzaGVldCk7XHJcbiAgICAgICAgY29uc3Qgdml6SWQ6IFZpc3VhbElkID0ge1xyXG4gICAgICAgICAgd29ya3NoZWV0OiB6b25lLm5hbWUsXHJcbiAgICAgICAgICBkYXNoYm9hcmQ6IHRoaXMuX2luZm8ubmFtZSxcclxuICAgICAgICAgIHN0b3J5Ym9hcmQ6IHRoaXMuX3NoZWV0UGF0aC5zdG9yeWJvYXJkLFxyXG4gICAgICAgICAgZmxpcGJvYXJkWm9uZUlEOiB0aGlzLl9zaGVldFBhdGguZmxpcGJvYXJkWm9uZUlELFxyXG4gICAgICAgICAgc3RvcnlQb2ludElEOiB0aGlzLl9zaGVldFBhdGguc3RvcnlQb2ludElEXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgd29ya3NoZWV0SW1wbCA9IG5ldyBXb3Jrc2hlZXRJbXBsKHNoZWV0SW5mbywgdml6SWQpO1xyXG4gICAgICAgIHdvcmtzaGVldCA9IG5ldyBXb3Jrc2hlZXQod29ya3NoZWV0SW1wbCk7XHJcbiAgICAgICAgdGhpcy5fd29ya3NoZWV0cy5wdXNoKHdvcmtzaGVldCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHpvbmVQb2ludCA9IG5ldyBQb2ludCh6b25lLngsIHpvbmUueSk7XHJcbiAgICAgIGNvbnN0IHpvbmVTaXplID0gbmV3IFNpemUoem9uZS5oZWlnaHQsIHpvbmUud2lkdGgpO1xyXG5cclxuICAgICAgY29uc3QgZGFzaGJvYXJkT2JqZWN0ID0gbmV3IERhc2hib2FyZE9iamVjdChcclxuICAgICAgICBkYXNoYm9hcmQsXHJcbiAgICAgICAgem9uZS56b25lVHlwZSxcclxuICAgICAgICB6b25lUG9pbnQsXHJcbiAgICAgICAgem9uZVNpemUsXHJcbiAgICAgICAgd29ya3NoZWV0XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLl9vYmplY3RzLnB1c2goZGFzaGJvYXJkT2JqZWN0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ludGVybmFsL0Rhc2hib2FyZEltcGwudHNcbiAqKi8iLCJpbXBvcnQgKiBhcyBDb250cmFjdCBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXNoYm9hcmQgb2JqZWN0cyAtIHRoZSB6b25lcyBpbiBhIGRhc2hib2FyZC5cclxuICogVGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlIEltcGwgcGF0dGVybiBhcyBpdCBpcyBqdXN0IGEgcHJvcGVydHkgYmFnLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERhc2hib2FyZE9iamVjdCBpbXBsZW1lbnRzIENvbnRyYWN0LkRhc2hib2FyZE9iamVjdCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGFzaGJvYXJkOiBDb250cmFjdC5EYXNoYm9hcmQsXHJcbiAgICBwcml2YXRlIF90eXBlOiBDb250cmFjdC5EYXNoYm9hcmRPYmplY3RUeXBlLFxyXG4gICAgcHJpdmF0ZSBfcG9zaXRpb246IENvbnRyYWN0LlBvaW50LFxyXG4gICAgcHJpdmF0ZSBfc2l6ZTogQ29udHJhY3QuU2l6ZSxcclxuICAgIHByaXZhdGUgX3dvcmtzaGVldDogQ29udHJhY3QuV29ya3NoZWV0IHwgdW5kZWZpbmVkXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGdldCBkYXNoYm9hcmQoKTogQ29udHJhY3QuRGFzaGJvYXJkIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHR5cGUoKTogQ29udHJhY3QuRGFzaGJvYXJkT2JqZWN0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcG9zaXRpb24oKTogQ29udHJhY3QuUG9pbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaXplKCk6IENvbnRyYWN0LlNpemUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHdvcmtzaGVldCgpOiBDb250cmFjdC5Xb3Jrc2hlZXQgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldDtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0Rhc2hib2FyZE9iamVjdC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldCB9IGZyb20gJy4vU2hlZXQnO1xyXG5cclxuaW1wb3J0IHsgV29ya3NoZWV0SW1wbCB9IGZyb20gJy4vSW50ZXJuYWwvV29ya3NoZWV0SW1wbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya3NoZWV0IGV4dGVuZHMgU2hlZXQgaW1wbGVtZW50cyBDb250cmFjdC5Xb3Jrc2hlZXQge1xyXG4gIHByaXZhdGUgX3dvcmtzaGVldEltcGw6IFdvcmtzaGVldEltcGw7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih3b3Jrc2hlZXRJbXBsOiBXb3Jrc2hlZXRJbXBsKSB7XHJcbiAgICBzdXBlcih3b3Jrc2hlZXRJbXBsKTtcclxuICAgIHRoaXMuX3dvcmtzaGVldEltcGwgPSB3b3Jrc2hlZXRJbXBsO1xyXG5cclxuICAgIC8vIENhbGwgdG8gaW5pdGlhbGl6ZSBldmVudHMgYW5kIHRoZW4gY2FsbCBkb3duIHRvIHRoZSBldmVudCBsaXN0ZW5lciBtYW5hZ2VyIHRvIGhhbmRsZSB0aGluZ3NcclxuICAgIHRoaXMuX3dvcmtzaGVldEltcGwuaW5pdGlhbGl6ZUV2ZW50cyh0aGlzKS5mb3JFYWNoKGUgPT4gdGhpcy5hZGROZXdFdmVudFR5cGUoZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBwYXJlbnREYXNoYm9hcmQoKTogQ29udHJhY3QuRGFzaGJvYXJkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5RmlsdGVyQXN5bmMoXHJcbiAgICBmaWVsZE5hbWU6IHN0cmluZywgdmFsdWVzOiBBcnJheTxzdHJpbmc+LCB1cGRhdGVUeXBlOiBDb250cmFjdC5GaWx0ZXJVcGRhdGVUeXBlLCBvcHRpb25zOiBDb250cmFjdC5GaWx0ZXJPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlGaWx0ZXJBc3luYyhmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZTogc3RyaW5nLCBmaWx0ZXJPcHRpb25zOiBDb250cmFjdC5SYW5nZUZpbHRlck9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXJBc3luYyhmaWVsZE5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5jbGVhckZpbHRlckFzeW5jKGZpZWxkTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RmlsdGVyc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuRmlsdGVyW10+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPENvbnRyYWN0LkFjdGl2ZU1hcmtzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5BY3RpdmVNYXJrcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRTdW1tYXJ5RGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnM6IENvbnRyYWN0LkdldFVuZGVybHlpbmdEYXRhT3B0aW9ucyk6IFByb21pc2U8Q29udHJhY3QuRGF0YVRhYmxlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuY2xlYXJTZWxlY3RlZE1hcmtzQXN5bmMoKTtcclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL1dvcmtzaGVldC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcblxyXG5pbXBvcnQgeyBTaGVldFBhdGggfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlUmVnaXN0cnksIFBhcmFtZXRlcnNTZXJ2aWNlLCBTZXJ2aWNlTmFtZXMgfSBmcm9tICdAdGFibGVhdS9hcGktc2hhcmVkJztcclxuXHJcbmltcG9ydCB7IFNoZWV0SW5mb0ltcGwgfSBmcm9tICcuL1NoZWV0SW5mb0ltcGwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNoZWV0SW1wbCB7XHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hlZXRJbmZvSW1wbDogU2hlZXRJbmZvSW1wbCkge1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnNoZWV0SW5mb0ltcGwubmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBzaGVldFR5cGUoKTogQ29udHJhY3QuU2hlZXRUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLnNoZWV0SW5mb0ltcGwuc2hlZXRUeXBlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNoZWV0UGF0aCgpOiBTaGVldFBhdGgge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hlZXRJbmZvSW1wbC5zaGVldFBhdGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmluZFBhcmFtZXRlckFzeW5jKHBhcmFtZXRlck5hbWU6IHN0cmluZywgc2hlZXQ6IENvbnRyYWN0LlNoZWV0KTogUHJvbWlzZTxDb250cmFjdC5QYXJhbWV0ZXIgfCB1bmRlZmluZWQ+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxQYXJhbWV0ZXJzU2VydmljZT4oU2VydmljZU5hbWVzLlBhcmFtZXRlcnMpO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuZmluZFBhcmFtZXRlckJ5TmFtZUFzeW5jKHBhcmFtZXRlck5hbWUsIHNoZWV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJhbWV0ZXJzQXN5bmMoc2hlZXQ6IENvbnRyYWN0LlNoZWV0KTogUHJvbWlzZTxBcnJheTxDb250cmFjdC5QYXJhbWV0ZXI+PiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8UGFyYW1ldGVyc1NlcnZpY2U+KFNlcnZpY2VOYW1lcy5QYXJhbWV0ZXJzKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmdldFBhcmFtZXRlcnNGb3JTaGVldEFzeW5jKHRoaXMuc2hlZXRQYXRoLCBzaGVldCk7XHJcbiAgfVxyXG59XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4uL3NyYy9JbnRlcm5hbC9TaGVldEltcGwudHNcbiAqKi8iLCJpbXBvcnQgeyBTaGVldFR5cGUgfSBmcm9tICdAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQgeyBTaGVldFBhdGggfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNoZWV0SW5mb0ltcGwge1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX25hbWU6IHN0cmluZyxcclxuICAgIHByaXZhdGUgX3NoZWV0VHlwZTogU2hlZXRUeXBlXHJcbiAgICAvLyBUT0RPOiBab25lSWRcclxuICAgIC8vIFRPRE86IFNoZWV0U2l6ZVxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNoZWV0VHlwZSgpOiBTaGVldFR5cGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NoZWV0VHlwZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hlZXRQYXRoKCk6IFNoZWV0UGF0aCB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaGVldE5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgaXNEYXNoYm9hcmQ6IHRoaXMuc2hlZXRUeXBlID09PSBTaGVldFR5cGUuRGFzaGJvYXJkXHJcbiAgICAgIC8vIFRPRE8gLSBTdG9yaWVzXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvU2hlZXRJbmZvSW1wbC50c1xuICoqLyIsImltcG9ydCAqIGFzIENvbnRyYWN0IGZyb20gJ0B0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdCc7XHJcbmltcG9ydCB7IEZpbHRlckV2ZW50LCBOb3RpZmljYXRpb25JZCwgVmlzdWFsSWQgfSBmcm9tICdAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3QnO1xyXG5pbXBvcnQge1xyXG4gIEFwaVNlcnZpY2VSZWdpc3RyeSxcclxuICBGaWx0ZXJDaGFuZ2VkRXZlbnQsXHJcbiAgRmlsdGVyU2VydmljZSxcclxuICBHZXREYXRhU2VydmljZSxcclxuICBHZXREYXRhVHlwZSxcclxuICBNYXJrc1NlbGVjdGVkRXZlbnQsXHJcbiAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gIFNlcnZpY2VOYW1lcyxcclxuICBTaW5nbGVFdmVudE1hbmFnZXIsXHJcbiAgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbFxyXG59IGZyb20gJ0B0YWJsZWF1L2FwaS1zaGFyZWQnO1xyXG5cclxuaW1wb3J0IHsgV29ya3NoZWV0IH0gZnJvbSAnLi4vV29ya3NoZWV0JztcclxuaW1wb3J0IHsgU2hlZXRJbXBsIH0gZnJvbSAnLi9TaGVldEltcGwnO1xyXG5pbXBvcnQgeyBTaGVldEluZm9JbXBsIH0gZnJvbSAnLi9TaGVldEluZm9JbXBsJztcclxuXHJcbmNvbnN0IHZpc3VhbElkc0FyZUVxdWFsID0gZnVuY3Rpb24oYTogVmlzdWFsSWQsIGI6IFZpc3VhbElkKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIGEgJiYgYiAmJlxyXG4gICAgYS53b3Jrc2hlZXQgPT09IGIud29ya3NoZWV0ICYmXHJcbiAgICBhLmRhc2hib2FyZCA9PT0gYi5kYXNoYm9hcmQgJiZcclxuICAgIGEuc3Rvcnlib2FyZCA9PT0gYi5zdG9yeWJvYXJkICYmXHJcbiAgICBhLnN0b3J5UG9pbnRJRCA9PT0gYi5zdG9yeVBvaW50SUQgJiZcclxuICAgIGEuZmxpcGJvYXJkWm9uZUlEID09PSBiLmZsaXBib2FyZFpvbmVJRDtcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc2hlZXRJbXBsIGV4dGVuZHMgU2hlZXRJbXBsIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2hlZXRJbmZvSW1wbDogU2hlZXRJbmZvSW1wbCwgcHJpdmF0ZSBfdmlzdWFsSWQ6IFZpc3VhbElkKSB7XHJcbiAgICBzdXBlcihzaGVldEluZm9JbXBsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2Qgd2hpY2ggZ29lcyB0aHJvdWdoIGFuZCByZWdpc3RlcnMgZWFjaCBldmVudCB0eXBlIHRoaXMgaW1wbCBrbm93cyBhYm91dFxyXG4gICAqIHdpdGggdGhlIE5vdGlmaWNhdGlvblNlcnZpY2UuIEl0IHJldHVybnMgYW4gYXJyYXkgb2YgU2luZ2xlRXZlbnRNYW5hZ2VyIG9iamVjdHMgd2hpY2hcclxuICAgKiBjYW4gdGhlbiBiZSBwYXNzZWQgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXIgdG8gaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uIC8gdW5yZWdpc3RyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1dvcmtzaGVldH0gd29ya3NoZWV0IFRoZSB3b3Jrc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xyXG4gICAqIEByZXR1cm5zIHtBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+fSBDb2xsZWN0aW9uIG9mIGV2ZW50IG1hbmFnZXJzIHRvIHBhc3MgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXJcclxuICAgKi9cclxuICBwdWJsaWMgaW5pdGlhbGl6ZUV2ZW50cyh3b3Jrc2hlZXQ6IFdvcmtzaGVldCk6IEFycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj4ge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+KCk7XHJcbiAgICBsZXQgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBub3RpZmljYXRpb25TZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8Tm90aWZpY2F0aW9uU2VydmljZT4oU2VydmljZU5hbWVzLk5vdGlmaWNhdGlvbik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgdGhpcyBzZXJ2aWNlIHJlZ2lzdGVyZWQsIGp1c3QgcmV0dXJuXHJcbiAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcclxuICAgIGNvbnN0IG1hcmtzRXZlbnQgPSBuZXcgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDxNYXJrc1NlbGVjdGVkRXZlbnQ+KENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuTWFya1NlbGVjdGlvbkNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuU2VsZWN0ZWRNYXJrc0NoYW5nZWQsIChtb2RlbCkgPT4ge1xyXG4gICAgICBjb25zdCB2aXN1YWxJZCA9IG1vZGVsIGFzIFZpc3VhbElkO1xyXG4gICAgICByZXR1cm4gdmlzdWFsSWRzQXJlRXF1YWwodmlzdWFsSWQsIHRoaXMudmlzdWFsSWQpO1xyXG4gICAgfSwgKHZpejogVmlzdWFsSWQpID0+IHtcclxuICAgICAgbWFya3NFdmVudC50cmlnZ2VyRXZlbnQoKCkgPT4gbmV3IE1hcmtzU2VsZWN0ZWRFdmVudCh3b3Jrc2hlZXQpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlckV2ZW50ID0gbmV3IFNpbmdsZUV2ZW50TWFuYWdlckltcGw8RmlsdGVyQ2hhbmdlZEV2ZW50PihDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLkZpbHRlckNoYW5nZWQpO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoTm90aWZpY2F0aW9uSWQuRmlsdGVyQ2hhbmdlZCwgKG1vZGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckV2ZW50UmVzcG9uc2UgPSBtb2RlbCBhcyBGaWx0ZXJFdmVudDtcclxuICAgICAgcmV0dXJuIHRoaXMudmlzdWFsSWQud29ya3NoZWV0ID09PSBmaWx0ZXJFdmVudFJlc3BvbnNlLnZpc3VhbElkLndvcmtzaGVldDtcclxuICAgIH0sIChldmVudDogRmlsdGVyRXZlbnQpID0+IHtcclxuICAgICAgZmlsdGVyRXZlbnQudHJpZ2dlckV2ZW50KCgpID0+IG5ldyBGaWx0ZXJDaGFuZ2VkRXZlbnQod29ya3NoZWV0LCBldmVudC5maWVsZE5hbWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJlc3VsdHMucHVzaChtYXJrc0V2ZW50KTtcclxuICAgIHJlc3VsdHMucHVzaChmaWx0ZXJFdmVudCk7XHJcblxyXG4gICAgLy8gVE9ETyAtIG90aGVyIGV2ZW50IHR5cGVzXHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZpc3VhbElkKCk6IFZpc3VhbElkIHtcclxuICAgIHJldHVybiB0aGlzLl92aXN1YWxJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZpbHRlckFzeW5jKFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsIHZhbHVlczogQXJyYXk8c3RyaW5nPiwgdXBkYXRlVHlwZTogQ29udHJhY3QuRmlsdGVyVXBkYXRlVHlwZSwgb3B0aW9uczogQ29udHJhY3QuRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcclxuICAgICAgcmV0dXJuIHNlcnZpY2UuYXBwbHlGaWx0ZXJBc3luYyh0aGlzLnZpc3VhbElkLCBmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseVJhbmdlRmlsdGVyQXN5bmMoZmllbGROYW1lOiBzdHJpbmcsIGZpbHRlck9wdGlvbnM6IENvbnRyYWN0LlJhbmdlRmlsdGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlID0gQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2U8RmlsdGVyU2VydmljZT4oU2VydmljZU5hbWVzLkZpbHRlcik7XHJcbiAgICByZXR1cm4gc2VydmljZS5hcHBseVJhbmdlRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhckZpbHRlckFzeW5jKGZpZWxkTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxGaWx0ZXJTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuRmlsdGVyKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTogUHJvbWlzZTxDb250cmFjdC5BY3RpdmVNYXJrcz4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEdldERhdGFTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuR2V0RGF0YSk7XHJcbiAgICByZXR1cm4gc2VydmljZS5nZXRTZWxlY3RlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKCk6IFByb21pc2U8Q29udHJhY3QuQWN0aXZlTWFya3M+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xyXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN1bW1hcnlEYXRhQXN5bmMob3B0aW9uczogQ29udHJhY3QuR2V0U3VtbWFyeURhdGFPcHRpb25zKTogUHJvbWlzZTxDb250cmFjdC5EYXRhVGFibGU+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxHZXREYXRhU2VydmljZT4oU2VydmljZU5hbWVzLkdldERhdGEpO1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgcmV0dXJuIHNlcnZpY2UuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhcclxuICAgICAgdGhpcy52aXN1YWxJZCwgR2V0RGF0YVR5cGUuU3VtbWFyeSwgISFvcHRpb25zLmlnbm9yZUFsaWFzZXMsICEhb3B0aW9ucy5pZ25vcmVTZWxlY3Rpb24sIHRydWUsIDApO1xyXG4gICAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VW5kZXJseWluZ0RhdGFBc3luYyhvcHRpb25zOiBDb250cmFjdC5HZXRVbmRlcmx5aW5nRGF0YU9wdGlvbnMpOiBQcm9taXNlPENvbnRyYWN0LkRhdGFUYWJsZT4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPEdldERhdGFTZXJ2aWNlPihTZXJ2aWNlTmFtZXMuR2V0RGF0YSk7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmdldFVuZGVybHlpbmdEYXRhQXN5bmMoXHJcbiAgICAgIHRoaXMudmlzdWFsSWQsXHJcbiAgICAgIEdldERhdGFUeXBlLlVuZGVybHlpbmcsXHJcbiAgICAgICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLFxyXG4gICAgICAhIW9wdGlvbnMuaWdub3JlU2VsZWN0aW9uLFxyXG4gICAgICAhIW9wdGlvbnMuaW5jbHVkZUFsbENvbHVtbnMsXHJcbiAgICAgIG9wdGlvbnMubWF4Um93cyB8fCAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkTWFya3NBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHNlcnZpY2UgPSBBcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZTxTZWxlY3Rpb25TZXJ2aWNlPihTZXJ2aWNlTmFtZXMuU2VsZWN0aW9uKTtcclxuICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xyXG4gIH1cclxufVxyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuLi9zcmMvSW50ZXJuYWwvV29ya3NoZWV0SW1wbC50c1xuICoqLyIsImltcG9ydCB7IEFkZEluU2V0dGluZ3NJbmZvIH0gZnJvbSAnQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0JztcclxuaW1wb3J0IHsgQXBpU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQHRhYmxlYXUvYXBpLXNoYXJlZCc7XHJcbmltcG9ydCB7IFBhcmFtIH0gZnJvbSAnQHRhYmxlYXUvYXBpLXV0aWxzJztcclxuXHJcbmltcG9ydCB7IEFkZEluU2VydmljZU5hbWVzIH0gZnJvbSAnLi4vU2VydmljZXMvQWRkSW5TZXJ2aWNlTmFtZXMnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc0NvbGxlY3Rpb24sIFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL1NlcnZpY2VzL1NldHRpbmdzU2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NJbXBsIHtcclxuICBwcml2YXRlIF9pc01vZGlmaWVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRTZXR0aW5nczogU2V0dGluZ3NDb2xsZWN0aW9uO1xyXG5cclxuICAvLyBTaW5jZSBwcm9taXNlcyBjYW4ndCBiZSBpbnRyb3NwZWN0ZWQgZm9yIHN0YXRlLCBrZWVwIGEgdmFyaWFibGUgdGhhdFxyXG4gIC8vIGluZGljYXRlcyBhIHNhdmUgaXMgaW4gcHJvZ3Jlc3MsIHNvIHRoYXQgc2V0L2VyYXNlIGNhbid0IGJlIGNhbGxlZCBkdXJpbmcgYSBzYXZlLlxyXG4gIHByaXZhdGUgX3NhdmVJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzZXR0aW5nc0luZm86IEFkZEluU2V0dGluZ3NJbmZvKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVyYXNlKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTtcclxuXHJcbiAgICAvLyBPbmx5IG1ha2UgYSBtb2RpZmljYXRpb24gaWYgd2UgaGF2ZSB0aGUga2V5IGFscmVhZHlcclxuICAgIGlmICh0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSkge1xyXG4gICAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XTtcclxuICAgICAgdGhpcy5faXNNb2RpZmllZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKGtleSwgJ2tleScpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTZXR0aW5nc1trZXldO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbCgpOiBTZXR0aW5nc0NvbGxlY3Rpb24ge1xyXG4gICAgLy8gUmV0dXJucyBhIG11dGFibGUgY29weSBvZiB0aGUgc2V0dGluZ3NcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9jdXJyZW50U2V0dGluZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc01vZGlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzeW5jKCk6IFByb21pc2U8U2V0dGluZ3NDb2xsZWN0aW9uPiB7XHJcbiAgICB0aGlzLnZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTtcclxuXHJcbiAgICAvLyBKdXN0IHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgc2V0dGluZ3MgYXJlIHVuY2hhbmdlZFxyXG4gICAgaWYgKCF0aGlzLl9pc01vZGlmaWVkKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmU8U2V0dGluZ3NDb2xsZWN0aW9uPih0aGlzLl9jdXJyZW50U2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NhdmVJblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBVc2UgdGhlIHNldHRpbmdzIHNlcnZpY2UgdG8gc2F2ZSBzZXR0aW5ncyB0byB0d2JcclxuICAgIGNvbnN0IHNldHRpbmdzU2VydmljZSA9IEFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlPFNldHRpbmdzU2VydmljZT4oXHJcbiAgICAgIEFkZEluU2VydmljZU5hbWVzLlNldHRpbmdzU2VydmljZSk7XHJcblxyXG4gICAgcmV0dXJuIHNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3NBc3luYyh0aGlzLl9jdXJyZW50U2V0dGluZ3MpLnRoZW48U2V0dGluZ3NDb2xsZWN0aW9uPihuZXdTZXR0aW5ncyA9PiB7XHJcbiAgICAgIHRoaXMuX3NhdmVJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBmYWxzZTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jdXJyZW50U2V0dGluZ3MsIG5ld1NldHRpbmdzKTtcclxuICAgICAgcmV0dXJuIG5ld1NldHRpbmdzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBQYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTsgLy8gS2V5IHNob3VsZG4ndCBiZSBhbiBlbXB0eSBzdHJpbmcuXHJcbiAgICBQYXJhbS52ZXJpZnlTdHJpbmcodmFsdWUsICd2YWx1ZScpOyAvLyBFbXB0eSBzdHJpbmcgdmFsdWUgaXMgYWxsb3dlZC5cclxuICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRTZXR0aW5nc1trZXldID0gdmFsdWU7XHJcbiAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNldHRpbmdzKHNldHRpbmdzSW5mbzogQWRkSW5TZXR0aW5nc0luZm8pOiB2b2lkIHtcclxuICAgIFBhcmFtLnZlcmlmeVZhbHVlKHNldHRpbmdzSW5mbywgJ3NldHRpbmdzSW5mbycpO1xyXG4gICAgUGFyYW0udmVyaWZ5VmFsdWUoc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzLCAnc2V0dGluZ3NJbmZvLlNldHRpbmdzVmFsdWVzJyk7XHJcblxyXG4gICAgdGhpcy5fY3VycmVudFNldHRpbmdzID0gc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzO1xyXG5cclxuICAgIC8vIFJlc2V0IHRoZSBpc01vZGlmaWVkIGZsYWdcclxuICAgIHRoaXMuX2lzTW9kaWZpZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgaGVscGVyIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGFueSBsb2NhbCB1cGRhdGUgdG8gdGhpcy5jdXJyZW50U2V0dGluZ3MuXHJcbiAgICogQ2hlY2tzIGlmIGEgY3VycmVudCBzYXZlIGNhbGwgaXMgc3RpbGwgaW4gcHJvZ3Jlc3MgYW5kIHRocm93cyBhbiBlcnJvciBpZiBzby5cclxuICAgKi9cclxuICBwcml2YXRlIHZlcmlmeVNldHRpbmdzQXJlVW5sb2NrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc2F2ZUluUHJvZ3Jlc3MpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3luYyBTYXZlIGlzIGluIHByb2dyZXNzLCB1cGRhdGluZyBzZXR0aW5ncyBpcyBub3QgYWxsb3dlZC4nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi4vc3JjL0ludGVybmFsL1NldHRpbmdzSW1wbC50c1xuICoqLyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/Examples/HelloFrelard/tableau-addin-0.5.0.js b/Examples/HelloFrelard/tableau-addin-0.5.0.js deleted file mode 100644 index a227f696..00000000 --- a/Examples/HelloFrelard/tableau-addin-0.5.0.js +++ /dev/null @@ -1,23670 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["Main"] = factory(); - else - root["Main"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var FrelardDesktopBootstrap_1 = __webpack_require__(1); - // This Main function will be executed when this module is loaded. Attempt to do our - // bootstrapping with qt and log any errors we encounter - FrelardDesktopBootstrap_1.doBootstrap().catch(function (e) { - console.error('Desktop bootstrapping failed: ' + e); - }); - //# sourceMappingURL=Main.js.map - -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_core_1 = __webpack_require__(2); - var api_internal_contract_1 = __webpack_require__(4); - var AddInApiPresLayerImpl_1 = __webpack_require__(30); - var DesktopApiDispatcher_1 = __webpack_require__(31); - var QtWebChannelImpl_1 = __webpack_require__(32); - /** - * Wrapper for all the bootstrapping logic. This code attempts to initialize the qt pres-layer - * as well as the desktop dispatcher. It then assigns it to the global desktop dispatcher to - * be picked up by the add-in external Api - */ - function doBootstrap() { - // First we need to initialize the webchannel pres-layer - var dispatcherPromise = QtWebChannelImpl_1.initializeWebChannelPresLayer().then(function (preslayer) { - var presLayerApi = new AddInApiPresLayerImpl_1.AddInApiPresLayerImpl(preslayer); - if (!presLayerApi.AddInInstanceInfo.addInLocatorPresModel) { - throw new Error('AddInInstanceInfo undefined'); - } - // Initialize the apiEventHandler and the desktopDispatcher with it - var apiEventHandler = new api_core_1.ApiEventHandler(presLayerApi, presLayerApi.AddInInstanceInfo.addInLocatorPresModel); - var desktopDispatcher = new DesktopApiDispatcher_1.DesktopApiDispatcher(apiEventHandler); - return desktopDispatcher; - }); - // Assign the desktop dispatcher for the other project to find it - api_internal_contract_1.InternalApiDispatcherHolder.setDesktopDispatcherPromise(dispatcherPromise); - return dispatcherPromise; - } - exports.doBootstrap = doBootstrap; - //# sourceMappingURL=FrelardDesktopBootstrap.js.map - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(3)); - var Events_1 = __webpack_require__(16); - exports.NotificationId = Events_1.NotificationId; - //# sourceMappingURL=ApiCore.js.map - -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistryFactory_1 = __webpack_require__(11); - var EventMappingRegistryFactory_1 = __webpack_require__(15); - var ParameterMappingRegistryFactory_1 = __webpack_require__(23); - /** - * Main class for the api-core project. This class is responsible for executing comamnd and marshalling notifcations - * between the internal Api and the pres-layer Api. After construction, SetVersionNumber must be called in order to - * use this class - * - * @export - * @class ApiEventHandler - */ - var ApiEventHandler = (function () { - /** - * Creates an instance of ApiEventHandler. - * @param {PresentationLayer} presLayer - An implementation of the pres-layer Api to use - * @param {AddInLocatorPresModel} addInLocatorPresModel - locator for the add-in which is being referenced - * @memberof ApiEventHandler - */ - function ApiEventHandler(presLayer, addInLocatorPresModel) { - this._presLayer = presLayer; - this._presLayerAddInLocator = addInLocatorPresModel; - } - /** - * Sets the internal Api version number which the external library is expecting to use. This must be called before - * anything else in order to properly set up the translation layers. - * - * @param {VersionNumber} versionNumber - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setVersionNumber = function (versionNumber) { - this._versionNumber = versionNumber; - // Initialize all our registries - this._commandRegistry = CommandMappingRegistryFactory_1.CommandMappingRegistryFactory.createCommandMappingRegistry(versionNumber); - this._apiToPresLayerRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createApiToPresLayerParamRegistry(versionNumber); - this._presLayerToApiRegistry = ParameterMappingRegistryFactory_1.ParameterMappingRegistryFactory.createPresLayerToApiParamRegistry(versionNumber); - this._eventRegistry = EventMappingRegistryFactory_1.EventMappingRegistryFactory.createEventMappingRegistry(versionNumber); - // Convert our addInLocator to the Api version - this._apiAddInLocator = this._presLayerToApiRegistry - .get(Params_1.ParameterId.AddInLocator, api_internal_contract_1.ParameterId.AddInLocator)(this._presLayerAddInLocator); - for (var _i = 0, _a = Object.keys(this._eventRegistry); _i < _a.length; _i++) { - var plEventId = _a[_i]; - // Register for all notifications we know about and bind the event type to the callback - this._presLayer.registerNotificationHandler(plEventId, this.onPresLayerNotification.bind(this, plEventId)); - } - }; - /** - * Sets an event handler function to be notified when Api events come in. Only a single registration is supported. - * - * @param {NotificationHandler} eventHandler - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.setEventHandler = function (eventHandler) { - this._eventHandler = eventHandler; - // TODO - Register for pres layer events - }; - /** - * Executes the requested Api command by converting the parameters, running the command against the pres-layer, - * then processing the result back into a format the Api can understand - * - * @param {VerbId} verb - * @param {ExecuteParameters} parameters - * @returns {Promise} - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.execute = function (verb, parameters) { - var _this = this; - this.assertInitialized(); - var command = this._commandRegistry.getCommand(verb); - parameters = parameters || {}; - // Augment the command with the locator if it's needed - if (command.needsAddInLocator) { - parameters[api_internal_contract_1.ParameterId.AddInLocator] = this._apiAddInLocator; - } - var commandsParams = command.createParams(parameters, this._apiToPresLayerRegistry); - return this._presLayer.invokeCommand(command.namespace, command.commandId, commandsParams) - .then(function (commandResult) { - var convertedResult = command.ProcessResult(commandResult, _this._presLayerToApiRegistry); - return { - result: convertedResult - }; - }); - }; - /** - * Helper method to check that things are initialized as expected. Throws if initialization not complete - * - * @private - * @memberof ApiEventHandler - */ - ApiEventHandler.prototype.assertInitialized = function () { - if (!this._versionNumber) { - throw new Error('VersionNumber not yet configured. Cannot take any actions'); - } - }; - /** - * Called when a new event notification comes in from the presentation layer - * - * @param eventId The pres layer event id - * @param presModel The pres model that is included with the event - */ - ApiEventHandler.prototype.onPresLayerNotification = function (eventId, presModel) { - // First look up this eventId in our registry and convert to presModel - var eventMapping = this._eventRegistry[eventId]; - var apiModel = eventMapping.converter(presModel); - if (this._eventHandler) { - this._eventHandler(eventMapping.apiId, apiModel); - } - }; - return ApiEventHandler; - }()); - exports.ApiEventHandler = ApiEventHandler; - //# sourceMappingURL=ApiEventHandler.js.map - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - __export(__webpack_require__(8)); - __export(__webpack_require__(9)); - //# sourceMappingURL=ApiInternalContract.js.map - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var ColumnType; - (function (ColumnType) { - ColumnType["Discrete"] = "discrete"; - ColumnType["Continuous"] = "continuous"; - })(ColumnType = exports.ColumnType || (exports.ColumnType = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - var FieldAggregationType; - (function (FieldAggregationType) { - FieldAggregationType["Sum"] = "sum"; - FieldAggregationType["Avg"] = "avg"; - FieldAggregationType["Min"] = "min"; - FieldAggregationType["Max"] = "max"; - FieldAggregationType["Stdev"] = "stdev"; - FieldAggregationType["Stdevp"] = "stdevp"; - FieldAggregationType["Var"] = "var"; - FieldAggregationType["Varp"] = "varp"; - FieldAggregationType["Count"] = "count"; - FieldAggregationType["Countd"] = "countd"; - FieldAggregationType["Median"] = "median"; - FieldAggregationType["Attr"] = "attr"; - FieldAggregationType["None"] = "none"; - FieldAggregationType["Year"] = "year"; - FieldAggregationType["Qtr"] = "qtr"; - FieldAggregationType["Month"] = "month"; - FieldAggregationType["Day"] = "day"; - FieldAggregationType["Hour"] = "hour"; - FieldAggregationType["Minute"] = "minute"; - FieldAggregationType["Second"] = "second"; - FieldAggregationType["Week"] = "week"; - FieldAggregationType["Weekday"] = "weekday"; - FieldAggregationType["MonthYear"] = "month-year"; - FieldAggregationType["Mdy"] = "mdy"; - FieldAggregationType["End"] = "end"; - FieldAggregationType["TruncYear"] = "trunc-year"; - FieldAggregationType["TruncQtr"] = "trunc-qtr"; - FieldAggregationType["TruncMonth"] = "trunc-month"; - FieldAggregationType["TruncWeek"] = "trunc-week"; - FieldAggregationType["TruncDay"] = "trunc-day"; - FieldAggregationType["TruncHour"] = "trunc-hour"; - FieldAggregationType["TruncMinute"] = "trunc-minute"; - FieldAggregationType["TruncSecond"] = "trunc-second"; - FieldAggregationType["Quart1"] = "quart1"; - FieldAggregationType["Quart3"] = "quart3"; - FieldAggregationType["Skewness"] = "skewness"; - FieldAggregationType["Kurtosis"] = "kurtosis"; - FieldAggregationType["InOut"] = "in-out"; - FieldAggregationType["User"] = "user"; - })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {})); - var FieldRoleType; - (function (FieldRoleType) { - FieldRoleType["Dimension"] = "dimension"; - FieldRoleType["Measure"] = "measure"; - FieldRoleType["Unknown"] = "unknown"; - })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - var DomainRestrictionType; - (function (DomainRestrictionType) { - DomainRestrictionType["All"] = "all"; - DomainRestrictionType["List"] = "list"; - DomainRestrictionType["Range"] = "range"; - })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {})); - var DateStepPeriod; - (function (DateStepPeriod) { - DateStepPeriod["Years"] = "years"; - DateStepPeriod["Quarters"] = "quarters"; - DateStepPeriod["Months"] = "months"; - DateStepPeriod["Weeks"] = "weeks"; - DateStepPeriod["Days"] = "days"; - DateStepPeriod["Hours"] = "hours"; - DateStepPeriod["Minutes"] = "minutes"; - DateStepPeriod["Seconds"] = "seconds"; - })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {})); - /** - * The option for specifying which values to include for filtering. - */ - var FilterNullOption; - (function (FilterNullOption) { - FilterNullOption["NullValues"] = "nullvalues"; - FilterNullOption["NonNullValues"] = "nonnullvalues"; - FilterNullOption["AllValues"] = "allvalues"; - })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {})); - /** - * The type of filter domain - */ - var FilterDomainType; - (function (FilterDomainType) { - FilterDomainType["Relevant"] = "relevant"; - FilterDomainType["Database"] = "database"; - })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {})); - /** - * Internal enum for specifying the selection type for select marks api. - */ - var SelectionUpdateType; - (function (SelectionUpdateType) { - SelectionUpdateType["Replace"] = "select-replace"; - SelectionUpdateType["Add"] = "select-add"; - SelectionUpdateType["Remove"] = "select-remove"; - })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {})); - /** - * Internal enum for specifying the included values type for range selection. - */ - var QuantitativeIncludedValues; - (function (QuantitativeIncludedValues) { - QuantitativeIncludedValues["IncludeNull"] = "include-null"; - QuantitativeIncludedValues["IncludeNonNull"] = "include-non-null"; - QuantitativeIncludedValues["IncludeAll"] = "include-all"; - })(QuantitativeIncludedValues = exports.QuantitativeIncludedValues || (exports.QuantitativeIncludedValues = {})); - /** - * Type of mark for a given marks card in a viz. - */ - var MarkType; - (function (MarkType) { - MarkType["Bar"] = "bar"; - MarkType["Line"] = "line"; - MarkType["Area"] = "area"; - MarkType["Square"] = "square"; - MarkType["Circle"] = "circle"; - MarkType["Shape"] = "shape"; - MarkType["Text"] = "text"; - MarkType["Map"] = "map"; - MarkType["Pie"] = "pie"; - MarkType["GanttBar"] = "gantt-bar"; - MarkType["Polygon"] = "polygon"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - /** - * Internal enum for specifying the type of filter - */ - var FilterType; - (function (FilterType) { - FilterType["Categorical"] = "categorical"; - FilterType["Range"] = "range"; - FilterType["RelativeDate"] = "relativeDate"; - FilterType["Hierarchical"] = "hierarchical"; - })(FilterType = exports.FilterType || (exports.FilterType = {})); - /** - * Internal enum for specifying the DateRangeType of a relative date filter - */ - var DateRangeType; - (function (DateRangeType) { - /** - * Refers to the last day, week, month, etc. of the date period. - */ - DateRangeType["Last"] = "last"; - /** - * Refers to the last N days, weeks, months, etc. of the date period. - */ - DateRangeType["LastN"] = "lastN"; - /** - * Refers to the next day, week, month, etc. of the date period. - */ - DateRangeType["Next"] = "next"; - /** - * Refers to the next N days, weeks, months, etc. of the date period. - */ - DateRangeType["NextN"] = "nextN"; - /** - * Refers to the current day, week, month, etc. of the date period. - */ - DateRangeType["Current"] = "current"; - /** - * Refers to everything up to and including the current day, week, month, etc. of the date period. - */ - DateRangeType["ToDate"] = "toDate"; - })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); - //# sourceMappingURL=Enums.js.map - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - //# sourceMappingURL=InternalApiDispatcher.js.map - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - NotificationId["ParameterChanged"] = "parameter-changed"; - NotificationId["FilterChanged"] = "filter-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - //# sourceMappingURL=Notifications.js.map - -/***/ }, -/* 8 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["DataSourceDataTable"] = "data-source-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetFilters"] = "worksheet-filters"; - ParameterId["FieldId"] = "field-id"; - ParameterId["DomainType"] = "domain-type"; - ParameterId["CategoricalDomain"] = "categorical-domain"; - ParameterId["QuantitativeDomain"] = "quantitative-dmain"; - ParameterId["WorksheetName"] = "worksheet-name"; - ParameterId["DashboardName"] = "dashboard"; - ParameterId["ParameterInfo"] = "parameter-info"; - ParameterId["ParameterInfos"] = "parameter-infos"; - ParameterId["ParameterCaption"] = "paremeter-caption"; - ParameterId["ParameterFieldName"] = "parameter-field-name"; - ParameterId["ParameterValue"] = "parameter-value"; - ParameterId["Selection"] = "selection"; - ParameterId["SelectionUpdateType"] = "selectionUpdateType"; - ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; - ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; - ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; - ParameterId["DataSourceId"] = "data-source-id"; - ParameterId["DataSchema"] = "data-schema"; - ParameterId["DataSourceName"] = "data-source-name"; - ParameterId["ColumnsToInclude"] = "columns-to-include"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - //# sourceMappingURL=Parameters.js.map - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["GetDataSourceData"] = "get-datasource-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - VerbId["GetParametersForSheet"] = "get-parameters-for-sheet"; - VerbId["FindParameter"] = "find-parameter"; - VerbId["ChangeParameterValue"] = "change-parameter-value"; - VerbId["ClearSelectedMarks"] = "clear-selected-marks"; - VerbId["SelectByValue"] = "select-by-value"; - VerbId["GetDataSources"] = "get-data-sources"; - VerbId["RefreshDataSource"] = "refresh-data-source"; - VerbId["GetFilters"] = "get-filters"; - VerbId["GetCategoricalDomain"] = "get-categorical-domain"; - VerbId["GetRangeDomain"] = "get-range-domain"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - //# sourceMappingURL=Verbs.js.map - -/***/ }, -/* 10 */ -/***/ function(module, exports) { - - "use strict"; - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/params-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-params.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - // DPI_IntegerRLE, having type int[] - ParameterId["IntegerRLE"] = "intRle"; - // DPI_UnsignedIntegerRLE, having type uint[] - ParameterId["UnsignedIntegerRLE"] = "uintRle"; - // DPI_FloatRLE, having type float[] - ParameterId["FloatRLE"] = "floatRle"; - // DPI_ParameterID, having type string - ParameterId["ParameterID"] = "paramType"; - // DPI_AllowCustomDatabase, having type bool - ParameterId["AllowCustomDatabase"] = "allowCustomDatabase"; - // DPI_AllowCustomSchema, having type bool - ParameterId["AllowCustomSchema"] = "allowCustomSchema"; - // DPI_AllowCustomSQL, having type bool - ParameterId["AllowCustomSQL"] = "allowCustomSql"; - // DPI_AllowCustomSQLWithoutSchema, having type bool - ParameterId["AllowCustomSQLWithoutSchema"] = "allowCustomSqlWithoutSchema"; - // DPI_AllowPreviewData, having type bool - ParameterId["AllowPreviewData"] = "allowPreviewData"; - // DPI_AllowStoredProc, having type bool - ParameterId["AllowStoredProc"] = "allowStoredProcedure"; - // DPI_AllowUnion, having type bool - ParameterId["AllowUnion"] = "allowUnion"; - // DPI_AreVariablesVisible, having type bool - ParameterId["AreVariablesVisible"] = "areVariablesVisible"; - // DPI_AttrLegacyConnection, having type bool - ParameterId["AttrLegacyConnection"] = "widgetAttrLegacy"; - // DPI_AttrReadUncommitted, having type bool - ParameterId["AttrReadUncommitted"] = "widgetAttrReadUncommittedData"; - // DPI_AttrRequireSSL, having type bool - ParameterId["AttrRequireSSL"] = "widgetAttrRequireSsl"; - // DPI_AttrRequireEncryption, having type bool - ParameterId["AttrRequireEncryption"] = "widgetAttrRequireEncryption"; - // DPI_Bool, having type bool - ParameterId["Bool"] = "bool"; - // DPI_CanPartition, having type bool - ParameterId["CanPartition"] = "canPartition"; - // DPI_CanRecommendDataSources, having type bool - ParameterId["CanRecommendDataSources"] = "canRecommendDatasources"; - // DPI_CanRecommendTables, having type bool - ParameterId["CanRecommendTables"] = "canRecommendTables"; - // DPI_CheckPermissions, having type bool - ParameterId["CheckPermissions"] = "checkPermissions"; - // DPI_DatabaseNameOptional, having type bool - ParameterId["DatabaseNameOptional"] = "databaseNameOptional"; - // DPI_DatabaseWHOptional, having type bool - ParameterId["DatabaseWHOptional"] = "databaseWarehouseOptional"; - // DPI_DoValidation, having type bool - ParameterId["DoValidation"] = "doValidation"; - // DPI_DoneLoadingAllSheets, having type bool - ParameterId["DoneLoadingAllSheets"] = "googleSheetDoneLoading"; - // DPI_GABasicItemsEnabled, having type bool - ParameterId["GABasicItemsEnabled"] = "gaBasicItemsEnabled"; - // DPI_GADimensionMeasuresEnabled, having type bool - ParameterId["GADimensionMeasuresEnabled"] = "gaDimensionsMeasuresEnabled"; - // DPI_GAFiltersEnabled, having type bool - ParameterId["GAFiltersEnabled"] = "gaFiltersEnabled"; - // DPI_HasDatabase, having type bool - ParameterId["HasDatabase"] = "hasDatabase"; - // DPI_HasDataLoss, having type bool - ParameterId["HasDataLoss"] = "hasDataLoss"; - // DPI_HasFastMetadata, having type bool - ParameterId["HasFastMetadata"] = "hasFastMetadata"; - // DPI_HasNewlyDiscoveredSchema, having type bool - ParameterId["HasNewlyDiscoveredSchema"] = "hasNewlyDiscoveredSchema"; - // DPI_HasPermissions, having type bool - ParameterId["HasPermissions"] = "hasPermissions"; - // DPI_HasSchema, having type bool - ParameterId["HasSchema"] = "hasSchema"; - // DPI_HasSchemaCount, having type bool - ParameterId["HasSchemaCount"] = "hasSchemaCount"; - // DPI_HasTables, having type bool - ParameterId["HasTables"] = "hasTables"; - // DPI_HasUncommittedChanges, having type bool - ParameterId["HasUncommittedChanges"] = "hasUncommittedChanges"; - // DPI_HasWarehouse, having type bool - ParameterId["HasWarehouse"] = "hasWarehouse"; - // DPI_HasWarning, having type bool - ParameterId["HasWarning"] = "hasWarning"; - // DPI_IsCalculated, having type bool - ParameterId["IsCalculated"] = "isCalculated"; - // DPI_IsConnectedToDataSource, having type bool - ParameterId["IsConnectedToDataSource"] = "isConnectedDatasource"; - // DPI_IsDisabledDataConnection, having type bool - ParameterId["IsDisabledDataConnection"] = "isDisabledDataConnection"; - // DPI_IsEditable, having type bool - ParameterId["IsEditable"] = "isEditable"; - // DPI_IsEnabled, having type bool - ParameterId["IsEnabled"] = "isEnabled"; - // DPI_IsFinishedConnecting, having type bool - ParameterId["IsFinishedConnecting"] = "isFinishedConnecting"; - // DPI_IsHidden, having type bool - ParameterId["IsHidden"] = "isHidden"; - // DPI_IsMultiTable, having type bool - ParameterId["IsMultiTable"] = "isMultiTable"; - // DPI_IsNewCustomSQL, having type bool - ParameterId["IsNewCustomSQL"] = "isNewCustomSql"; - // DPI_IsNewDataSource, having type bool - ParameterId["IsNewDataSource"] = "isNewDataSrc"; - // DPI_IsPublishedFederated, having type bool - ParameterId["IsPublishedFederated"] = "isPublishedFederated"; - // DPI_IsSampled, having type bool - ParameterId["IsSampled"] = "isSampled"; - // DPI_IsSchemaMemberNewlyDiscovered, having type bool - ParameterId["IsSchemaMemberNewlyDiscovered"] = "isSchemaMemberNewlyDiscovered"; - // DPI_IsSlowFast, having type bool - ParameterId["IsSlowFast"] = "isSlowfast"; - // DPI_IsSupported, having type bool - ParameterId["IsSupported"] = "isSupported"; - // DPI_IsTableSelectionVisible, having type bool - ParameterId["IsTableSelectionVisible"] = "isTableSelectionVisible"; - // DPI_IsTableauServerDatasource, having type bool - ParameterId["IsTableauServerDatasource"] = "isTableauServerDatasource"; - // DPI_IsTableauServerDatasourceConnectable, having type bool - ParameterId["IsTableauServerDatasourceConnectable"] = "isTableauServerDatasourceConnectable"; - // DPI_IsTableauServerDatasourceDownloadable, having type bool - ParameterId["IsTableauServerDatasourceDownloadable"] = "isTableauServerDatasourceDownloadable"; - // DPI_IsVisible, having type bool - ParameterId["IsVisible"] = "isVisible"; - // DPI_NeedFlatten, having type bool - ParameterId["NeedFlatten"] = "needFlatten"; - // DPI_SSLRequiresCertificate, having type bool - ParameterId["SSLRequiresCertificate"] = "sslRequiresCertificate"; - // DPI_SchemaOptional, having type bool - ParameterId["SchemaOptional"] = "schemaOptional"; - // DPI_ServiceNameOptional, having type bool - ParameterId["ServiceNameOptional"] = "serviceNameOptional"; - // DPI_ShouldWarnForCrossSchemaJoins, having type bool - ParameterId["ShouldWarnForCrossSchemaJoins"] = "shouldWarnCrossSchemaJoins"; - // DPI_ShowBrowseButton, having type bool - ParameterId["ShowBrowseButton"] = "showBrowseButton"; - // DPI_ShowConnectionPrompt, having type bool - ParameterId["ShowConnectionPrompt"] = "showConnectionPrompt"; - // DPI_ShowDBBrowseButton, having type bool - ParameterId["ShowDBBrowseButton"] = "showDbBrowseButton"; - // DPI_ShowDBNamePrompt, having type bool - ParameterId["ShowDBNamePrompt"] = "showDbPrompt"; - // DPI_ShowDBWHNamePrompt, having type bool - ParameterId["ShowDBWHNamePrompt"] = "showDbwhPrompt"; - // DPI_ShowImportSSLCertLabel, having type bool - ParameterId["ShowImportSSLCertLabel"] = "showImportSslcertLabel"; - // DPI_ShowPortPrompt, having type bool - ParameterId["ShowPortPrompt"] = "showPortPrompt"; - // DPI_ShowSSLCheckbox, having type bool - ParameterId["ShowSSLCheckbox"] = "showSslCheckbox"; - // DPI_ShowEncryptionCheckbox, having type bool - ParameterId["ShowEncryptionCheckbox"] = "showEncryptionCheckbox"; - // DPI_ShowServerNamePrompt, having type bool - ParameterId["ShowServerNamePrompt"] = "showServerPrompt"; - // DPI_ShowServiceNamePrompt, having type bool - ParameterId["ShowServiceNamePrompt"] = "showServicePrompt"; - // DPI_ShowUncommittedDataCheckbox, having type bool - ParameterId["ShowUncommittedDataCheckbox"] = "showUncommittedDataCheckbox"; - // DPI_SupportsGenericAuth, having type bool - ParameterId["SupportsGenericAuth"] = "supportsGenericAuth"; - // DPI_TableauServerFetchAscending, having type bool - ParameterId["TableauServerFetchAscending"] = "tableauServerFetchAscending"; - // DPI_UsesRadioButton, having type bool - ParameterId["UsesRadioButton"] = "usesRadioButton"; - // DPI_BigQueryLegacySQLCheckStatus, having type bool - ParameterId["BigQueryLegacySQLCheckStatus"] = "datasourceBigqueryLegacySqlCheckStatus"; - // DPI_HasBigQueryLegacySQLCheck, having type bool - ParameterId["HasBigQueryLegacySQLCheck"] = "datasourceBigqueryLegacySqlCheck"; - // DPI_AutoFetchLimit, having type int - ParameterId["AutoFetchLimit"] = "autoFetchLimit"; - // DPI_ConnectionType, having type int - ParameterId["ConnectionType"] = "connectionType"; - // DPI_IconId, having type int - ParameterId["IconId"] = "iconId"; - // DPI_SelectedCatalogIndex, having type int - ParameterId["SelectedCatalogIndex"] = "selectedCatalogIndex"; - // DPI_SelectedCubeIndex, having type int - ParameterId["SelectedCubeIndex"] = "selectedCubeIndex"; - // DPI_SelectedGAAccountIndex, having type int - ParameterId["SelectedGAAccountIndex"] = "selectedGaAccountIndex"; - // DPI_SelectedGAMeasureSetIndex, having type int - ParameterId["SelectedGAMeasureSetIndex"] = "selectedGaMeasureSetIndex"; - // DPI_SelectedGAPropertyIndex, having type int - ParameterId["SelectedGAPropertyIndex"] = "selectedGaPropertyIndex"; - // DPI_SelectedGASegmentIndex, having type int - ParameterId["SelectedGASegmentIndex"] = "selectedGaSegmentIndex"; - // DPI_SelectedGAViewIndex, having type int - ParameterId["SelectedGAViewIndex"] = "selectedGaViewIndex"; - // DPI_SelectedGoogleSheetIndex, having type int - ParameterId["SelectedGoogleSheetIndex"] = "selectedGoogleSheetIndex"; - // DPI_SelectedOptionIndex, having type int - ParameterId["SelectedOptionIndex"] = "selectedOptionIndex"; - // DPI_SlowMetadataCount, having type int - ParameterId["SlowMetadataCount"] = "slowMetadataCount"; - // DPI_TableauServerFetchSortBy, having type int - ParameterId["TableauServerFetchSortBy"] = "tableauServerFetchSort"; - // DPI_ActualParameterOrdinal, having type uint - ParameterId["ActualParameterOrdinal"] = "actualParameterOrdinal"; - // DPI_ActualParameterType, having type uint - ParameterId["ActualParameterType"] = "actualParameterType"; - // DPI_CharSetID, having type uint - ParameterId["CharSetID"] = "charsetId"; - // DPI_DataSourceOrdinal, having type uint - ParameterId["DataSourceOrdinal"] = "datasourceOrdinal"; - // DPI_FilterCount, having type uint - ParameterId["FilterCount"] = "filterCount"; - // DPI_VariablesCount, having type uint - ParameterId["VariablesCount"] = "variablesCount"; - // DPI_ActualParameterDisplayName, having type string - ParameterId["ActualParameterDisplayName"] = "actualParameterDisplayName"; - // DPI_ActualParameterName, having type string - ParameterId["ActualParameterName"] = "actualParameterName"; - // DPI_ActualParameterValue, having type string - ParameterId["ActualParameterValue"] = "actualParameterValue"; - // DPI_AttrAPIVersion, having type string - ParameterId["AttrAPIVersion"] = "attrApiVersion"; - // DPI_AttrAuthType, having type string - ParameterId["AttrAuthType"] = "widgetAttrAuthtype"; - // DPI_AttrConnectionData, having type string - ParameterId["AttrConnectionData"] = "attrConnectionData"; - // DPI_AttrConnectionName, having type string - ParameterId["AttrConnectionName"] = "attrConnectionName"; - // DPI_AttrConnectionType, having type string - ParameterId["AttrConnectionType"] = "widgetAttrConnectiontype"; - // DPI_AttrConnectionURL, having type string - ParameterId["AttrConnectionURL"] = "attrConnectionUrl"; - // DPI_AttrCubeSpecificationId, having type string - ParameterId["AttrCubeSpecificationId"] = "widgetAttrCubeSpecificationId"; - // DPI_AttrCubeSpecificationValue, having type string - ParameterId["AttrCubeSpecificationValue"] = "widgetAttrCubeSpecificationValue"; - // DPI_AttrDSN, having type string - ParameterId["AttrDSN"] = "widgetAttrDsn"; - // DPI_AttrDatabase, having type string - ParameterId["AttrDatabase"] = "widgetAttrDb"; - // DPI_AttrDatabaseWarehouse, having type string - ParameterId["AttrDatabaseWarehouse"] = "widgetAttrDbwh"; - // DPI_AttrDriver, having type string - ParameterId["AttrDriver"] = "widgetAttrDriver"; - // DPI_AttrFilename, having type string - ParameterId["AttrFilename"] = "widgetAttrFilename"; - // DPI_AttrHTTPPath, having type string - ParameterId["AttrHTTPPath"] = "widgetAttrHttpPath"; - // DPI_AttrIncrementalRefreshKey, having type string - ParameterId["AttrIncrementalRefreshKey"] = "attrIncrementalRefreshKey"; - // DPI_AttrKerberosHost, having type string - ParameterId["AttrKerberosHost"] = "widgetAttrKerberosHost"; - // DPI_AttrKerberosRealm, having type string - ParameterId["AttrKerberosRealm"] = "widgetAttrKerberosRealm"; - // DPI_AttrKerberosService, having type string - ParameterId["AttrKerberosService"] = "widgetAttrKerberosService"; - // DPI_AttrLastRecordToken, having type string - ParameterId["AttrLastRecordToken"] = "attrLastRecordToken"; - // DPI_AttrMDWPath, having type string - ParameterId["AttrMDWPath"] = "widgetAttrMdwPath"; - // DPI_AttrMDWUsername, having type string - ParameterId["AttrMDWUsername"] = "widgetAttrMdwUsername"; - // DPI_AttrODBCPrompt, having type string - ParameterId["AttrODBCPrompt"] = "widgetAttrOdbcPrompt"; - // DPI_AttrODBCStringExtras, having type string - ParameterId["AttrODBCStringExtras"] = "widgetAttrOdbcStringExtras"; - // DPI_AttrPort, having type string - ParameterId["AttrPort"] = "widgetAttrPort"; - // DPI_AttrSAPClient, having type string - ParameterId["AttrSAPClient"] = "widgetAttrSapClient"; - // DPI_AttrSAPLanguage, having type string - ParameterId["AttrSAPLanguage"] = "widgetAttrSapLanguage"; - // DPI_AttrEdition, having type string - ParameterId["AttrEdition"] = "widgetAttrSslEdition"; - // DPI_AttrSSODomain, having type string - ParameterId["AttrSSODomain"] = "widgetAttrSsoDomain"; - // DPI_AttrSSLCert, having type string - ParameterId["AttrSSLCert"] = "widgetAttrSslCert"; - // DPI_AttrScriptVersion, having type string - ParameterId["AttrScriptVersion"] = "attrScriptVersion"; - // DPI_AttrServer, having type string - ParameterId["AttrServer"] = "widgetAttrServer"; - // DPI_AttrService, having type string - ParameterId["AttrService"] = "widgetAttrService"; - // DPI_AttrUsername, having type string - ParameterId["AttrUsername"] = "widgetAttrUser"; - // DPI_AuthenticationPrompt, having type string - ParameterId["AuthenticationPrompt"] = "authenticationPrompt"; - // DPI_ButtonClickAction, having type string - ParameterId["ButtonClickAction"] = "buttonClickAction"; - // DPI_ButtonCaption, having type string - ParameterId["ButtonCaption"] = "buttonCaption"; - // DPI_Caption, having type string - ParameterId["Caption"] = "caption"; - // DPI_CatalogListPrompt, having type string - ParameterId["CatalogListPrompt"] = "catalogListPrompt"; - // DPI_CatalogName, having type string - ParameterId["CatalogName"] = "catalogName"; - // DPI_CatalogSearchTerm, having type string - ParameterId["CatalogSearchTerm"] = "catalogSearchTerm"; - // DPI_Category, having type string - ParameterId["Category"] = "itemCategory"; - // DPI_ClassName, having type string - ParameterId["ClassName"] = "classNameForCleaning"; - // DPI_CloudFileClassName, having type string - ParameterId["CloudFileClassName"] = "cloudFileClassName"; - // DPI_CloudFileStorageProvider, having type string - ParameterId["CloudFileStorageProvider"] = "cloudFileStorageProvider"; - // DPI_ConfigName, having type string - ParameterId["ConfigName"] = "connectionConfigName"; - // DPI_ConnectionCaption, having type string - ParameterId["ConnectionCaption"] = "connectionCaption"; - // DPI_ConnectionDescriptionLabel, having type string - ParameterId["ConnectionDescriptionLabel"] = "connectionDescriptionLabel"; - // DPI_ConnectionClass, having type string - ParameterId["ConnectionClass"] = "connectionClassName"; - // DPI_ConnectionName, having type string - ParameterId["ConnectionName"] = "connectionName"; - // DPI_ConnectionOptionName, having type string - ParameterId["ConnectionOptionName"] = "connectionOptionName"; - // DPI_ConnectionSpecificationTitle, having type string - ParameterId["ConnectionSpecificationTitle"] = "connectionSpecificationTitle"; - // DPI_ConnectionTypeLabel, having type string - ParameterId["ConnectionTypeLabel"] = "connectionTypeLabel"; - // DPI_CubeDescription, having type string - ParameterId["CubeDescription"] = "cubeDescription"; - // DPI_CubeLastUpdated, having type string - ParameterId["CubeLastUpdated"] = "cubeLastUpdated"; - // DPI_CubeListPrompt, having type string - ParameterId["CubeListPrompt"] = "cubeListPrompt"; - // DPI_CubeName, having type string - ParameterId["CubeName"] = "cubeName"; - // DPI_CubeSearchTerm, having type string - ParameterId["CubeSearchTerm"] = "cubeSearchTerm"; - // DPI_CurrentText, having type string - ParameterId["CurrentText"] = "currentText"; - // DPI_CustomSplitStringSeparator, having type string - ParameterId["CustomSplitStringSeparator"] = "customSplitStringSeparator"; - // DPI_DatasourceId, having type string - ParameterId["DatasourceId"] = "datasourceId"; - // DPI_DBNamePrompt, having type string - ParameterId["DBNamePrompt"] = "dbNamePrompt"; - // DPI_DBWHNamePrompt, having type string - ParameterId["DBWHNamePrompt"] = "dbWarehouseNamePrompt"; - // DPI_DSClass, having type string - ParameterId["DSClass"] = "dsClass"; - // DPI_DatabaseName, having type string - ParameterId["DatabaseName"] = "datasourceDatabaseName"; - // DPI_DatabaseNote, having type string - ParameterId["DatabaseNote"] = "databaseNote"; - // DPI_DragLabel, having type string - ParameterId["DragLabel"] = "dragLabel"; - // DPI_EffectiveDateRange, having type string - ParameterId["EffectiveDateRange"] = "effectiveDateRange"; - // DPI_GoogleSheetCreatedTime, having type string - ParameterId["GoogleSheetCreatedTime"] = "googleSheetCreatedTime"; - // DPI_GoogleSheetId, having type string - ParameterId["GoogleSheetId"] = "googleSheetId"; - // DPI_GoogleSheetLastModifiedTime, having type string - ParameterId["GoogleSheetLastModifiedTime"] = "googleSheetLastModifiedTime"; - // DPI_GoogleSheetLastModifyingUser, having type string - ParameterId["GoogleSheetLastModifyingUser"] = "googleSheetLastModifyingUser"; - // DPI_GoogleSheetLastViewedByUserTime, having type string - ParameterId["GoogleSheetLastViewedByUserTime"] = "googleSheetLastViewedByUserTime"; - // DPI_GoogleSheetMimeType, having type string - ParameterId["GoogleSheetMimeType"] = "googleSheetMimeType"; - // DPI_GoogleSheetName, having type string - ParameterId["GoogleSheetName"] = "googleSheetName"; - // DPI_GoogleSheetOwner, having type string - ParameterId["GoogleSheetOwner"] = "googleSheetOwner"; - // DPI_GoogleSheetThumbnailLink, having type string - ParameterId["GoogleSheetThumbnailLink"] = "googleSheetThumbnailLink"; - // DPI_GoogleSheetThumbnailId, having type string - ParameterId["GoogleSheetThumbnailId"] = "googleSheetThumbnailId"; - // DPI_GoogleSheetThumbnailLocalPath, having type string - ParameterId["GoogleSheetThumbnailLocalPath"] = "googleSheetThumbnailLocalPath"; - // DPI_GoogleSheetWebViewLink, having type string - ParameterId["GoogleSheetWebViewLink"] = "googleSheetWebViewLink"; - // DPI_GoogleSheetsListErrorMessage, having type string - ParameterId["GoogleSheetsListErrorMessage"] = "googleSheetsListErrorMessage"; - // DPI_InitialSQL, having type string - ParameterId["InitialSQL"] = "initialSql"; - // DPI_ISODate, having type string - ParameterId["ISODate"] = "isoDate"; - // DPI_ISOEndDate, having type string - ParameterId["ISOEndDate"] = "isoEndDate"; - // DPI_ISOStartDate, having type string - ParameterId["ISOStartDate"] = "isoStartDate"; - // DPI_IsolationLevel, having type string - ParameterId["IsolationLevel"] = "datasourceIsolationLevel"; - // DPI_ItemDescription, having type string - ParameterId["ItemDescription"] = "itemDescription"; - // DPI_ItemId, having type string - ParameterId["ItemId"] = "itemId"; - // DPI_KerberosHost, having type string - ParameterId["KerberosHost"] = "datasourceKerberosHost"; - // DPI_KerberosRealm, having type string - ParameterId["KerberosRealm"] = "datasourceKerberosRealm"; - // DPI_KerberosService, having type string - ParameterId["KerberosService"] = "datasourceKerberosService"; - // DPI_Name, having type string - ParameterId["Name"] = "name"; - // DPI_OptionId, having type string - ParameterId["OptionId"] = "optionId"; - // DPI_PartitioningButtonLabel, having type string - ParameterId["PartitioningButtonLabel"] = "partitioningButtonLabel"; - // DPI_PartitioningButtonTooltip, having type string - ParameterId["PartitioningButtonTooltip"] = "partitioningButtonTooltip"; - // DPI_PartitioningText, having type string - ParameterId["PartitioningText"] = "queryPartitioningText"; - // DPI_PdfStartPage, having type string - ParameterId["PdfStartPage"] = "pdfStartPage"; - // DPI_PdfEndPage, having type string - ParameterId["PdfEndPage"] = "pdfEndPage"; - // DPI_PortPrompt, having type string - ParameterId["PortPrompt"] = "portPrompt"; - // DPI_PromptText, having type string - ParameterId["PromptText"] = "promptText"; - // DPI_QueryBanding, having type string - ParameterId["QueryBanding"] = "queryBanding"; - // DPI_QueryText, having type string - ParameterId["QueryText"] = "queryText"; - // DPI_RecommendationUUID, having type string - ParameterId["RecommendationUUID"] = "recommendationUuid"; - // DPI_SQLQuery, having type string - ParameterId["SQLQuery"] = "sqlQuery"; - // DPI_SchemaComboFallbackText, having type string - ParameterId["SchemaComboFallbackText"] = "schemaComboFallbackText"; - // DPI_SchemaLabel, having type string - ParameterId["SchemaLabel"] = "schemaLabel"; - // DPI_SchemaMemberGlobalName, having type string - ParameterId["SchemaMemberGlobalName"] = "schemaMemberGlobalName"; - // DPI_SchemaName, having type string - ParameterId["SchemaName"] = "datasourceSchemaName"; - // DPI_ScriptText, having type string - ParameterId["ScriptText"] = "scriptText"; - // DPI_SecondaryWhiteList, having type string - ParameterId["SecondaryWhiteList"] = "secondaryWhiteList"; - // DPI_Server, having type string - ParameterId["Server"] = "datasourceServer"; - // DPI_ServerNamePrompt, having type string - ParameterId["ServerNamePrompt"] = "serverNamePrompt"; - // DPI_Service, having type string - ParameterId["Service"] = "datasourceService"; - // DPI_ServiceNamePrompt, having type string - ParameterId["ServiceNamePrompt"] = "servicePrompt"; - // DPI_SheetFormatting, having type string - ParameterId["SheetFormatting"] = "sheetFormatting"; - // DPI_SlowMetadataSearchTerm, having type string - ParameterId["SlowMetadataSearchTerm"] = "slowMetadataSearchTerm"; - // DPI_StandardConnectionName, having type string - ParameterId["StandardConnectionName"] = "datasourceStandardConnectionName"; - // DPI_StandardConnectionPlaceholderText, having type string - ParameterId["StandardConnectionPlaceholderText"] = "standardConnectionPlaceholderText"; - // DPI_StoredProcedureParameterTitle, having type string - ParameterId["StoredProcedureParameterTitle"] = "storedProcedureParameterTitle"; - // DPI_TableAlias, having type string - ParameterId["TableAlias"] = "tableAlias"; - // DPI_RightTableAlias, having type string - ParameterId["RightTableAlias"] = "rightTableAlias"; - // DPI_TableCaption, having type string - ParameterId["TableCaption"] = "tableCaption"; - // DPI_TableCollectionName, having type string - ParameterId["TableCollectionName"] = "tableCollectionName"; - // DPI_TablePlaceholderText, having type string - ParameterId["TablePlaceholderText"] = "tablePlaceholderText"; - // DPI_TableRanking, having type string - ParameterId["TableRanking"] = "tableRanking"; - // DPI_TableSortKey, having type string - ParameterId["TableSortKey"] = "tableSortkey"; - // DPI_TableTooltip, having type string - ParameterId["TableTooltip"] = "tableTooltip"; - // DPI_TableToReplace, having type string - ParameterId["TableToReplace"] = "tableToReplace"; - // DPI_TableWarningMessage, having type string - ParameterId["TableWarningMessage"] = "tableWarningMessage"; - // DPI_TableauServerDatasourceDescription, having type string - ParameterId["TableauServerDatasourceDescription"] = "tableauServerDatasourceDescription"; - // DPI_TableauServerDatasourceLastExtract, having type string - ParameterId["TableauServerDatasourceLastExtract"] = "tableauServerDatasourceLastExtract"; - // DPI_TableauServerDatasourceModified, having type string - ParameterId["TableauServerDatasourceModified"] = "tableauServerDatasourceModified"; - // DPI_TableauServerDatasourceOwner, having type string - ParameterId["TableauServerDatasourceOwner"] = "tableauServerDatasourceOwner"; - // DPI_TableauServerDatasourcePath, having type string - ParameterId["TableauServerDatasourcePath"] = "tableauServerDatasourcePath"; - // DPI_TableauServerFetchSearchQuery, having type string - ParameterId["TableauServerFetchSearchQuery"] = "tableauServerFetchSearchQuery"; - // DPI_TableauServerName, having type string - ParameterId["TableauServerName"] = "tableauServerName"; - // DPI_TableauServerProjectName, having type string - ParameterId["TableauServerProjectName"] = "tableauServerProjectName"; - // DPI_TableauServerUsername, having type string - ParameterId["TableauServerUsername"] = "tableauServerUsername"; - // DPI_TransportType, having type string - ParameterId["TransportType"] = "transportType"; - // DPI_WarehouseName, having type string - ParameterId["WarehouseName"] = "datasourceWarehouseName"; - // DPI_WorkgroupWorkbookName, having type string - ParameterId["WorkgroupWorkbookName"] = "workgroupWorkbookName"; - // DPI_AnalyticsItemTooltip, having type string - ParameterId["AnalyticsItemTooltip"] = "analyticsItemTooltip"; - // DPI_Description, having type string - ParameterId["Description"] = "description"; - // DPI_DSClassCaption, having type string - ParameterId["DSClassCaption"] = "dsClassCaption"; - // DPI_Formula, having type string - ParameterId["Formula"] = "formula"; - // DPI_MessageText, having type string - ParameterId["MessageText"] = "messageText"; - // DPI_Datasource, having type string - ParameterId["Datasource"] = "datasource"; - // DPI_DatasourceSource, having type string - ParameterId["DatasourceSource"] = "datasourceSource"; - // DPI_DatasourceTarget, having type string - ParameterId["DatasourceTarget"] = "datasourceTarget"; - // DPI_FirstDatasource, having type string - ParameterId["FirstDatasource"] = "firstDatasource"; - // DPI_NewDatasource, having type string - ParameterId["NewDatasource"] = "newDatasource"; - // DPI_ParametersDatasource, having type string - ParameterId["ParametersDatasource"] = "parametersDatasource"; - // DPI_PrimaryDatasource, having type string - ParameterId["PrimaryDatasource"] = "primaryDatasource"; - // DPI_ConnectionDatabases, having type string[] - ParameterId["ConnectionDatabases"] = "connectionDatabases"; - // DPI_ConnectionSchemas, having type string[] - ParameterId["ConnectionSchemas"] = "connectionSchemas"; - // DPI_ConnectionWarehouses, having type string[] - ParameterId["ConnectionWarehouses"] = "connectionWarehouses"; - // DPI_DSClasses, having type string[] - ParameterId["DSClasses"] = "dsClasses"; - // DPI_PossibleChoices, having type string[] - ParameterId["PossibleChoices"] = "possibleChoices"; - // DPI_StandardConnections, having type string[] - ParameterId["StandardConnections"] = "standardConnections"; - // DPI_Strings, having type string[] - ParameterId["Strings"] = "strings"; - // DPI_TableauServerProjectNames, having type string[] - ParameterId["TableauServerProjectNames"] = "tableauServerProjectNames"; - // DPI_TableCaptions, having type string[] - ParameterId["TableCaptions"] = "tableCaptions"; - // DPI_DataValues, having type object[] - ParameterId["DataValues"] = "dataValues"; - // DPI_QueryBandErrors, having type object[] - ParameterId["QueryBandErrors"] = "queryBandErrors"; - // DPI_QueryBandParameters, having type object[] - ParameterId["QueryBandParameters"] = "queryBandParameters"; - // DPI_InitialSQLParameters, having type object[] - ParameterId["InitialSQLParameters"] = "initialSqlParameters"; - // DPI_ConnectionAttributes, having type Dictionary(of string) - ParameterId["ConnectionAttributes"] = "connectionAttrs"; - // DPI_ConnectionProps, having type Dictionary(of string) - ParameterId["ConnectionProps"] = "connectionProps"; - // DPI_DisplayNameMap, having type Dictionary(of string) - ParameterId["DisplayNameMap"] = "displayNameMap"; - // DPI_LookupTable, having type Dictionary(of string) - ParameterId["LookupTable"] = "lookupTable"; - // DPI_OAuthAttrs, having type Dictionary(of string) - ParameterId["OAuthAttrs"] = "oauthAttrs"; - // DPI_StringMap, having type Dictionary(of string) - ParameterId["StringMap"] = "stringMap"; - // DPI_TableRankingMap, having type Dictionary(of string) - ParameterId["TableRankingMap"] = "tableRankingMap"; - // DPI_WDCAttributes, having type Dictionary(of string) - ParameterId["WDCAttributes"] = "wdcAttrs"; - // DPI_ConnectorAttributes, having type Dictionary(of string) - ParameterId["ConnectorAttributes"] = "connectorAttrs"; - // DPI_TableRelevanceParams, having type Dictionary(of string) - ParameterId["TableRelevanceParams"] = "tableRelevanceParams"; - // DPI_ActualParameterParameter, having type string - ParameterId["ActualParameterParameter"] = "actualParameterParameter"; - // DPI_DataColumnName, having type string - ParameterId["DataColumnName"] = "dataColumnName"; - // DPI_LHSDataColumnName, having type string - ParameterId["LHSDataColumnName"] = "lhsDataColumnName"; - // DPI_RHSDataColumnName, having type string - ParameterId["RHSDataColumnName"] = "rhsDataColumnName"; - // DPI_FullCubeName, having type string - ParameterId["FullCubeName"] = "fullCubeName"; - // DPI_FullVariableName, having type string - ParameterId["FullVariableName"] = "fullVariableName"; - // DPI_SemanticRole, having type string - ParameterId["SemanticRole"] = "semanticRole"; - // DPI_StoredProcedureName, having type string - ParameterId["StoredProcedureName"] = "storedProcName"; - // DPI_TableName, having type string - ParameterId["TableName"] = "tableName"; - // DPI_AddedTableNames, having type string[] - ParameterId["AddedTableNames"] = "addedTableNames"; - // DPI_CoalesceGroupFields, having type string[] - ParameterId["CoalesceGroupFields"] = "coalesceGroupFields"; - // DPI_FieldNames, having type string[] - ParameterId["FieldNames"] = "fieldNames"; - // DPI_JoinFieldAliases, having type string[] - ParameterId["JoinFieldAliases"] = "joinField_aliases"; - // DPI_JoinInfoFields, having type string[] - ParameterId["JoinInfoFields"] = "joinInfoFields"; - // DPI_PivotGroupFields, having type string[] - ParameterId["PivotGroupFields"] = "pivotGroupFields"; - // DPI_RemovedTableNames, having type string[] - ParameterId["RemovedTableNames"] = "removedTableNames"; - // DPI_StoredProcedures, having type string[] - ParameterId["StoredProcedures"] = "storedProcedures"; - // DPI_TableNames, having type string[] - ParameterId["TableNames"] = "tableNames"; - // DPI_ColumnName, having type string - ParameterId["ColumnName"] = "columnName"; - // DPI_FieldName, having type string - ParameterId["FieldName"] = "fn"; - // DPI_GoogleSheetThumbnailImage, having type string - ParameterId["GoogleSheetThumbnailImage"] = "googleSheetThumbnailImage"; - // DPI_AttrMDWPassword, having type string - ParameterId["AttrMDWPassword"] = "widgetAttrMdwPassword"; - // DPI_AttrPassword, having type string - ParameterId["AttrPassword"] = "widgetAttrPassword"; - // DPI_DatasourcePassword, having type string - ParameterId["DatasourcePassword"] = "datasourcePassword"; - // DPI_FederatedKeychain, having type string - ParameterId["FederatedKeychain"] = "federatedKeychain"; - // DPI_DataParameterID, having type string - ParameterId["DataParameterID"] = "dataParamType"; - // DPI_ConnectServerWidgetType, having type ConnectServerWidgetType - ParameterId["ConnectServerWidgetType"] = "connectServerWidgetType"; - // DPI_AuthenticationMode, having type Mode - ParameterId["AuthenticationMode"] = "authMode"; - // DPI_ReconnectAuthMode, having type ReconnectMode - ParameterId["ReconnectAuthMode"] = "reconnectAuthMode"; - // DPI_CurrentAuthOption, having type AuthOption - ParameterId["CurrentAuthOption"] = "currAuthOption"; - // DPI_AuthOptionList, having type AuthOption[] - ParameterId["AuthOptionList"] = "authOptions"; - // DPI_ConnectionSpecificationType, having type ConnectionSpecificationType - ParameterId["ConnectionSpecificationType"] = "connectionSpecificationType"; - // DPI_DataType, having type DataType - ParameterId["DataType"] = "dataType"; - // DPI_LHSDataType, having type DataType - ParameterId["LHSDataType"] = "lhsDataType"; - // DPI_RHSDataType, having type DataType - ParameterId["RHSDataType"] = "rhsDataType"; - // DPI_DefaultFieldRole, having type FieldRole - ParameterId["DefaultFieldRole"] = "defaultFieldRole"; - // DPI_FieldRole, having type FieldRole - ParameterId["FieldRole"] = "fieldRole"; - // DPI_DefaultFieldType, having type FieldType - ParameterId["DefaultFieldType"] = "defaultFieldType"; - // DPI_FieldType, having type FieldType - ParameterId["FieldType"] = "fieldType"; - // DPI_FieldTypeList, having type FieldType[] - ParameterId["FieldTypeList"] = "fieldTypeList"; - // DPI_FieldTypeListDetail, having type FieldType[] - ParameterId["FieldTypeListDetail"] = "fieldTypeListDetail"; - // DPI_AggType, having type AggType - ParameterId["AggType"] = "aggregation"; - // DPI_DefaultAggType, having type AggType - ParameterId["DefaultAggType"] = "defaultAggregation"; - // DPI_ForecastAgg, having type AggType - ParameterId["ForecastAgg"] = "forecastSummarizeTo"; - // DPI_ForecastAutoAgg, having type AggType - ParameterId["ForecastAutoAgg"] = "forecastAutoSummarizeTo"; - // DPI_ForecastAutoRangeUnits, having type AggType - ParameterId["ForecastAutoRangeUnits"] = "forecastAutoRangeUnits"; - // DPI_ForecastEndOfRangeUnits, having type AggType - ParameterId["ForecastEndOfRangeUnits"] = "forecastEndOfRangeUnits"; - // DPI_ForecastNextRangeUnits, having type AggType - ParameterId["ForecastNextRangeUnits"] = "forecastNextRangeUnits"; - // DPI_SourceAgg, having type AggType - ParameterId["SourceAgg"] = "sourceAggregation"; - // DPI_TargetAgg, having type AggType - ParameterId["TargetAgg"] = "targetAggregation"; - // DPI_AggregateByAggTypes, having type AggType[] - ParameterId["AggregateByAggTypes"] = "aggregateByAggTypes"; - // DPI_AggregationValues, having type AggType[] - ParameterId["AggregationValues"] = "aggregationValues"; - // DPI_SortAggValues, having type AggType[] - ParameterId["SortAggValues"] = "sortAggValues"; - // DPI_ColumnClass, having type ColumnClass - ParameterId["ColumnClass"] = "columnClass"; - // DPI_ConnectionWidgetType, having type ConnectionWidgetType - ParameterId["ConnectionWidgetType"] = "connectionWidgetType"; - // DPI_TablePillIcon, having type TablePillIcon - ParameterId["TablePillIcon"] = "tablePillIconType"; - // DPI_EnumeratedEntityType, having type EntityType - ParameterId["EnumeratedEntityType"] = "enumeratedEntityType"; - // DPI_PickEntitySearchType, having type PickEntitySearchType - ParameterId["PickEntitySearchType"] = "entitySearchType"; - // DPI_ExpressionOp, having type Op - ParameterId["ExpressionOp"] = "expressionOp"; - // DPI_ExpressionOperatorCaption, having type ExpressionOperatorCaptionPresModel - ParameterId["ExpressionOperatorCaption"] = "expressionOperatorCaption"; - // DPI_RelationalExperessionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["RelationalExperessionOps"] = "relationalExpressionOps"; - // DPI_HierarchyExpressionOps, having type ExpressionOperatorCaptionPresModel[] - ParameterId["HierarchyExpressionOps"] = "hierarchyExpressionOps"; - // DPI_DefaultSortDirection, having type SortDirection - ParameterId["DefaultSortDirection"] = "defSortOrder"; - // DPI_SortDirection, having type SortDirection - ParameterId["SortDirection"] = "sortOrder"; - // DPI_SortDirectionValues, having type SortDirection[] - ParameterId["SortDirectionValues"] = "sortDirectionValues"; - // DPI_CubeMetadataCategory, having type CubeMetadataCategory - ParameterId["CubeMetadataCategory"] = "cubeMetadataCategory"; - // DPI_CubeMetadataCategories, having type CubeMetadataCategory[] - ParameterId["CubeMetadataCategories"] = "cubeMetadataCategories"; - // DPI_GoogleBasicInfoType, having type GoogleBasicInfoType - ParameterId["GoogleBasicInfoType"] = "googleBasicInfoType"; - // DPI_GoogleAnalyticsDateRangeOptionType, having type DateRange - ParameterId["GoogleAnalyticsDateRangeOptionType"] = "googleAnalyticsDateRangeOptionType"; - // DPI_TableCalcType, having type TableCalcType - ParameterId["TableCalcType"] = "tableCalcType"; - // DPI_TableCalcTypeValues, having type TableCalcType[] - ParameterId["TableCalcTypeValues"] = "tableCalcTypeValues"; - // DPI_RelativeAddress, having type RelativeAddress - ParameterId["RelativeAddress"] = "relativeAddress"; - // DPI_RelativeValues, having type RelativeAddress[] - ParameterId["RelativeValues"] = "relativeValues"; - // DPI_OrderingType, having type OrderingType - ParameterId["OrderingType"] = "orderingType"; - // DPI_OrderingTypeValues, having type OrderingType[] - ParameterId["OrderingTypeValues"] = "orderingTypeValues"; - // DPI_CategoricalBinItemType, having type CategoricalBinItemType - ParameterId["CategoricalBinItemType"] = "categoricalBinItemType"; - // DPI_AuthenticationInfos, having type AuthenticationSettingsPresModel - ParameterId["AuthenticationInfos"] = "authInfo"; - // DPI_ConnectionWidgetParams, having type ConnectionParamsPresModel - ParameterId["ConnectionWidgetParams"] = "widgetConnectionParams"; - // DPI_ConnectionSettings, having type ConnectionSettingsPresModel - ParameterId["ConnectionSettings"] = "connectionSettings"; - // DPI_ReconnectAuthenticationSettings, having type AuthenticationSettingsPresModel - ParameterId["ReconnectAuthenticationSettings"] = "reconnectAuthSettings"; - // DPI_CubeConnectionSpecificationOption, having type CubeConnectionSpecificationOptionPresModel - ParameterId["CubeConnectionSpecificationOption"] = "cubeConnectionSpecificationOption"; - // DPI_CubeConnectionSpecificationOptions, having type CubeConnectionSpecificationOptionPresModel[] - ParameterId["CubeConnectionSpecificationOptions"] = "cubeConnectionSpecificationOptions"; - // DPI_CubeConnectionSpecification, having type CubeConnectionSpecificationPresModel - ParameterId["CubeConnectionSpecification"] = "cubeConnectionSpecification"; - // DPI_ConnectionSettingsOption, having type ConnectionSettingsOptionPresModel - ParameterId["ConnectionSettingsOption"] = "connectionSettingsOption"; - // DPI_ConnectionSettingsOptions, having type ConnectionSettingsOptionPresModel[] - ParameterId["ConnectionSettingsOptions"] = "connectionSettingsOptions"; - // DPI_StringCollation, having type StringCollationPresModel - ParameterId["StringCollation"] = "stringCollation"; - // DPI_DatabaseEnumeration, having type DatabaseEnumerationPresModel - ParameterId["DatabaseEnumeration"] = "databaseEnumeration"; - // DPI_SchemaEnumeration, having type SchemaEnumerationPresModel - ParameterId["SchemaEnumeration"] = "schemaEnumeration"; - // DPI_StandardConnectionEnumeration, having type StandardConnectionEnumerationPresModel - ParameterId["StandardConnectionEnumeration"] = "standardConnectionEnumeration"; - // DPI_StoredProcedureEnumeration, having type StoredProcedureEnumerationPresModel - ParameterId["StoredProcedureEnumeration"] = "storedProcedureEnumeration"; - // DPI_TableEnumeration, having type TableEnumerationPresModel - ParameterId["TableEnumeration"] = "tableEnumeration"; - // DPI_WarehouseEnumeration, having type WarehouseEnumerationPresModel - ParameterId["WarehouseEnumeration"] = "warehouseEnumeration"; - // DPI_SlowMetadataSchemaList, having type SlowMetadataSchemaListPresModel - ParameterId["SlowMetadataSchemaList"] = "slowMetadataSchemaList"; - // DPI_SlowMetadataTableList, having type SlowMetadataTableListPresModel - ParameterId["SlowMetadataTableList"] = "slowMetadataTableList"; - // DPI_CubeCatalog, having type CubeCatalogPresModel - ParameterId["CubeCatalog"] = "cubeCatalog"; - // DPI_CubeCatalogs, having type CubeCatalogPresModel[] - ParameterId["CubeCatalogs"] = "cubeCatalogs"; - // DPI_CubeCatalogEnumeration, having type CubeCatalogEnumerationPresModel - ParameterId["CubeCatalogEnumeration"] = "cubeCatalogEnumeration"; - // DPI_Cube, having type CubePresModel - ParameterId["Cube"] = "cube"; - // DPI_Cubes, having type CubePresModel[] - ParameterId["Cubes"] = "cubes"; - // DPI_CubeEnumeration, having type CubeEnumerationPresModel - ParameterId["CubeEnumeration"] = "cubeEnumeration"; - // DPI_GoogleAnalyticsBasicItem, having type GoogleAnalyticsBasicItemPresModel - ParameterId["GoogleAnalyticsBasicItem"] = "googleAnalyticsBasicItem"; - // DPI_GAMeasureSets, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GAMeasureSets"] = "gaMeasureSets"; - // DPI_GoogleAnalyticsViews, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsViews"] = "googleAnalyticsViews"; - // DPI_GoogleAnalyticsProperties, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleAnalyticsProperties"] = "googleAnalyticsProperties"; - // DPI_GoogleBasicInfoItems, having type GoogleAnalyticsBasicItemPresModel[] - ParameterId["GoogleBasicInfoItems"] = "googleAnalyticsAccounts"; - // DPI_GoogleAnalyticsComplexItem, having type GoogleAnalyticsComplexItemPresModel - ParameterId["GoogleAnalyticsComplexItem"] = "googleAnalyticsComplexItem"; - // DPI_GoogleAnalyticsPossibleDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleDimensions"] = "googleAnalyticsPossibleDimensions"; - // DPI_GoogleAnalyticsPossibleMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleMeasures"] = "googleAnalyticsPossibleMeasures"; - // DPI_GoogleAnalyticsPossibleSegments, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsPossibleSegments"] = "googleAnalyticsPossibleSegments"; - // DPI_GoogleAnalyticsSelectedDimensions, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedDimensions"] = "googleAnalyticsSelectedDimensions"; - // DPI_GoogleAnalyticsSelectedMeasures, having type GoogleAnalyticsComplexItemPresModel[] - ParameterId["GoogleAnalyticsSelectedMeasures"] = "googleAnalyticsSelectedMeasures"; - // DPI_GoogleAnalyticsDateRangeOption, having type GoogleAnalyticsDateRangeOptionPresModel - ParameterId["GoogleAnalyticsDateRangeOption"] = "googleAnalyticsDateRangeOption"; - // DPI_GoogleAnalyticsDateRangeOptions, having type GoogleAnalyticsDateRangeOptionPresModel[] - ParameterId["GoogleAnalyticsDateRangeOptions"] = "googleAnalyticsDateRangeOptions"; - // DPI_GoogleAnalyticsEndDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsEndDate"] = "googleAnalyticsEndDate"; - // DPI_GoogleAnalyticsStartDate, having type GoogleAnalyticsDatePresModel - ParameterId["GoogleAnalyticsStartDate"] = "googleAnalyticsStartDate"; - // DPI_GoogleAnalyticsDateRange, having type GoogleAnalyticsDateRangePresModel - ParameterId["GoogleAnalyticsDateRange"] = "googleAnalyticsDateRange"; - // DPI_GoogleAnalyticsQueryPartitioning, having type GoogleAnalyticsQueryPartitioningPresModel - ParameterId["GoogleAnalyticsQueryPartitioning"] = "googleAnalyticsQueryPartitioning"; - // DPI_GAConnectionDescription, having type GoogleAnalyticsConnectionDescriptionPresModel - ParameterId["GAConnectionDescription"] = "gaConnectionDescription"; - // DPI_GoogleSheetItem, having type GoogleSheetItemPresModel - ParameterId["GoogleSheetItem"] = "googleSheetItem"; - // DPI_GoogleSheetItems, having type GoogleSheetItemPresModel[] - ParameterId["GoogleSheetItems"] = "googleSheetItems"; - // DPI_GoogleSheetsListPresModel, having type GoogleSheetsListPresModel - ParameterId["GoogleSheetsListPresModel"] = "googleSheetsList"; - // DPI_GoogleSheetPanePresModel, having type GoogleSheetPanePresModel - ParameterId["GoogleSheetPanePresModel"] = "googleSheetPane"; - // DPI_TableauServerConnectionDescription, having type TableauServerConnectionDescriptionPresModel - ParameterId["TableauServerConnectionDescription"] = "tableauServerConnectionDescription"; - // DPI_InitialSQLPresModel, having type InitialSQLPresModel - ParameterId["InitialSQLPresModel"] = "initialSqlPresModel"; - // DPI_QueryBandingPresModel, having type QueryBandingPresModel - ParameterId["QueryBandingPresModel"] = "queryBandingPresModel"; - // DPI_SlowMetadata, having type SlowMetadataPresModel - ParameterId["SlowMetadata"] = "slowMetadata"; - // DPI_SlowMetadataSchemaSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataSchemaSearchPresModel"] = "slowMetadataSchemaSearch"; - // DPI_SlowMetadataTableSearchPresModel, having type SlowMetadataSearchPresModel - ParameterId["SlowMetadataTableSearchPresModel"] = "slowMetadataTableSearch"; - // DPI_TableauServerProjectsPresModel, having type TableauServerProjectsPresModel - ParameterId["TableauServerProjectsPresModel"] = "tableauServerProjectsPresmodel"; - // DPI_TableauServerDataSourcePresModel, having type TableauServerDataSourcePresModel - ParameterId["TableauServerDataSourcePresModel"] = "tableauServerDataSourcePresmodel"; - // DPI_TableauServerDataSourcePresModels, having type TableauServerDataSourcePresModel[] - ParameterId["TableauServerDataSourcePresModels"] = "tableauServerDataSourcePresmodels"; - // DPI_TableauServerDataSourcesPresModel, having type TableauServerDataSourcesPresModel - ParameterId["TableauServerDataSourcesPresModel"] = "tableauServerDataSourcesPresmodel"; - // DPI_TableauServerDataPresModel, having type TableauServerDataPresModel - ParameterId["TableauServerDataPresModel"] = "tableauServerDataPresmodel"; - // DPI_StoredProcedureParameterPresModel, having type StoredProcedureParameterPresModel - ParameterId["StoredProcedureParameterPresModel"] = "storedProcedureParameter"; - // DPI_StoredProcedureParametersPresModel, having type StoredProcedureParameterPresModel[] - ParameterId["StoredProcedureParametersPresModel"] = "storedProcedureParameters"; - // DPI_CustomSQLInfo, having type CustomSQLInfoPresModel - ParameterId["CustomSQLInfo"] = "customSqlInfo"; - // DPI_ConnectionTableInfo, having type ConnectionTableInfoPresModel - ParameterId["ConnectionTableInfo"] = "connectionTableInfo"; - // DPI_TableInfos, having type ConnectionTableInfoPresModel[] - ParameterId["TableInfos"] = "tableInfos"; - // DPI_ConnectionDescription, having type ConnectionDescriptionPresModel - ParameterId["ConnectionDescription"] = "connectionDescription"; - // DPI_DataSourceParserValidationMode, having type DataSourceParserValidationMode - ParameterId["DataSourceParserValidationMode"] = "dataSourceParserValidationMode"; - // DPI_OAuthCredentialTypeInfo, having type OAuthCredentialTypeInfoPresModel - ParameterId["OAuthCredentialTypeInfo"] = "oauthCredentialTypeInfo"; - // DPI_OAuthCredentialTypeInfos, having type OAuthCredentialTypeInfoPresModel[] - ParameterId["OAuthCredentialTypeInfos"] = "oauthCredentialTypeInfos"; - // DPI_OAuthSettings, having type OAuthSettingsPresModel - ParameterId["OAuthSettings"] = "oauthSettings"; - // DPI_CredentialTypePropertiesFlag, having type CredentialTypePropertiesFlag - ParameterId["CredentialTypePropertiesFlag"] = "credentialTypePropertiesFlag"; - // DPI_CredentialTypePropertiesFlags, having type CredentialTypePropertiesFlag[] - ParameterId["CredentialTypePropertiesFlags"] = "credentialTypePropertiesFlags"; - // DPI_ConnectionTypeEnum, having type ConnectionTypeEnum - ParameterId["ConnectionTypeEnum"] = "connectionTypeEnum"; - // DPI_ConnectorType, having type ConnectorType - ParameterId["ConnectorType"] = "connectorType"; - // DPI_PdfPagePicker, having type PdfPagePickerPresModel - ParameterId["PdfPagePicker"] = "pdfPagePicker"; - // DPI_ActivateNew, having type bool - ParameterId["ActivateNew"] = "activateNew"; - // DPI_AddActions, having type bool - ParameterId["AddActions"] = "addActions"; - // DPI_AddAsFloating, having type bool - ParameterId["AddAsFloating"] = "addAsFloating"; - // DPI_AddColorDictionary, having type bool - ParameterId["AddColorDictionary"] = "addColorDictionary"; - // DPI_AddDroplines, having type bool - ParameterId["AddDroplines"] = "addDroplines"; - // DPI_AddHeaders, having type bool - ParameterId["AddHeaders"] = "addHeaders"; - // DPI_AddHighlighting, having type bool - ParameterId["AddHighlighting"] = "addHighlighting"; - // DPI_AddImageDictionary, having type bool - ParameterId["AddImageDictionary"] = "addImageDictionary"; - // DPI_AddMarkLabels, having type bool - ParameterId["AddMarkLabels"] = "addMarkLabels"; - // DPI_AddPages, having type bool - ParameterId["AddPages"] = "addPages"; - // DPI_AddSelection, having type bool - ParameterId["AddSelection"] = "addSelection"; - // DPI_AddToFolder, having type bool - ParameterId["AddToFolder"] = "addToFolder"; - // DPI_AddVizData, having type bool - ParameterId["AddVizData"] = "addVizData"; - // DPI_AlertConditionMet, having type bool - ParameterId["AlertConditionMet"] = "alertConditionMet"; - // DPI_AllFields, having type bool - ParameterId["AllFields"] = "allFields"; - // DPI_AllOnEmpty, having type bool - ParameterId["AllOnEmpty"] = "allOnEmpty"; - // DPI_AllPages, having type bool - ParameterId["AllPages"] = "includeAllPages"; - // DPI_AllowPreviewSizeChange, having type bool - ParameterId["AllowPreviewSizeChange"] = "allowPreviewSizeChange"; - // DPI_AllSelectedIsEffectivelyRangeTypeAll, having type bool - ParameterId["AllSelectedIsEffectivelyRangeTypeAll"] = "allSelectedIsEffectivelyRangeTypeAll"; - // DPI_AllStoryPoints, having type bool - ParameterId["AllStoryPoints"] = "allStorypoints"; - // DPI_AllowAllRange, having type bool - ParameterId["AllowAllRange"] = "allowAllRange"; - // DPI_AllowCreatingNewParameters, having type bool - ParameterId["AllowCreatingNewParameters"] = "allowCreatingNewParameters"; - // DPI_AllowDuplicateFieldDropOnFilterShelf, having type bool - ParameterId["AllowDuplicateFieldDropOnFilterShelf"] = "allowDuplicateFieldDropOnFilterShelf"; - // DPI_AllowFilterPreset, having type bool - ParameterId["AllowFilterPreset"] = "allowFilterPreset"; - // DPI_AllowHoverActions, having type bool - ParameterId["AllowHoverActions"] = "allowHoverActions"; - // DPI_AllowHyphenation, having type bool - ParameterId["AllowHyphenation"] = "allowHyphenation"; - // DPI_AllowJoinOnCalc, having type bool - ParameterId["AllowJoinOnCalc"] = "allowJoinOnCalc"; - // DPI_AllowManualRange, having type bool - ParameterId["AllowManualRange"] = "allowManualRange"; - // DPI_AllowMapping, having type bool - ParameterId["AllowMapping"] = "allowMapping"; - // DPI_AllowMultiSelect, having type bool - ParameterId["AllowMultiSelect"] = "allowMultiSelect"; - // DPI_AllowNull, having type bool - ParameterId["AllowNull"] = "allowNull"; - // DPI_AllowPanZoom, having type bool - ParameterId["AllowPanZoom"] = "allowPanZoom"; - // DPI_AllowPatternBased, having type bool - ParameterId["AllowPatternBased"] = "allowPatternBasedUnion"; - // DPI_AllowPromptText, having type bool - ParameterId["AllowPromptText"] = "allowPromptText"; - // DPI_AllowSaveDataSource, having type bool - ParameterId["AllowSaveDataSource"] = "allowSaveDataSource"; - // DPI_AllowWholeDate, having type bool - ParameterId["AllowWholeDate"] = "allowWholeDate"; - // DPI_AllowWork, having type bool - ParameterId["AllowWork"] = "allowWork"; - // DPI_AllowWrap, having type bool - ParameterId["AllowWrap"] = "allowWrap"; - // DPI_AppIs32Bit, having type bool - ParameterId["AppIs32Bit"] = "appIs32Bit"; - // DPI_AppIs64Bit, having type bool - ParameterId["AppIs64Bit"] = "appIs64Bit"; - // DPI_AppIsBeta, having type bool - ParameterId["AppIsBeta"] = "appIsBeta"; - // DPI_AppIsOEM, having type bool - ParameterId["AppIsOEM"] = "appIsOem"; - // DPI_AppendTde, having type bool - ParameterId["AppendTde"] = "appendTde"; - // DPI_ApplyColors, having type bool - ParameterId["ApplyColors"] = "applyColors"; - // DPI_ApplyNewSelection, having type bool - ParameterId["ApplyNewSelection"] = "applyNewSelection"; - // DPI_AreConfidenceBandsValid, having type bool - ParameterId["AreConfidenceBandsValid"] = "areConfidenceBandsValid"; - // DPI_AreDataSourceFiltersVisible, having type bool - ParameterId["AreDataSourceFiltersVisible"] = "areDataSourceFiltersVisible"; - // DPI_AreExtractFiltersEnabled, having type bool - ParameterId["AreExtractFiltersEnabled"] = "areExtractFiltersEnabled"; - // DPI_AreTotalsUsed, having type bool - ParameterId["AreTotalsUsed"] = "areTotalsUsed"; - // DPI_AtTheLevelFieldIsInvalid, having type bool - ParameterId["AtTheLevelFieldIsInvalid"] = "atTheLevelFieldIsInvalid"; - // DPI_AutoURL, having type bool - ParameterId["AutoURL"] = "autoUrl"; - // DPI_AutoUpdate, having type bool - ParameterId["AutoUpdate"] = "autoUpdate"; - // DPI_BackingSheetIsDashboard, having type bool - ParameterId["BackingSheetIsDashboard"] = "isBackingSheetDashboard"; - // DPI_BeginDataSourcePresModelUpdate, having type bool - ParameterId["BeginDataSourcePresModelUpdate"] = "beginDataSourcePresModelUpdate"; - // DPI_AggregateDrillUp, having type bool - ParameterId["AggregateDrillUp"] = "boolAggregateDrillUp"; - // DPI_BoxplotMarkExclusion, having type bool - ParameterId["BoxplotMarkExclusion"] = "boxplotMarkExclusion"; - // DPI_BreakPageOnPane, having type bool - ParameterId["BreakPageOnPane"] = "breakPageOnPane"; - // DPI_BrushLegends, having type bool - ParameterId["BrushLegends"] = "brushLegends"; - // DPI_CachePresModels, having type bool - ParameterId["CachePresModels"] = "cachePresModels"; - // DPI_CanAddConnections, having type bool - ParameterId["CanAddConnections"] = "canAddConnections"; - // DPI_SortPillCanBeDragged, having type bool - ParameterId["SortPillCanBeDragged"] = "sortPillCanBeDragged"; - // DPI_CanAddTable, having type bool - ParameterId["CanAddTable"] = "canAddTable"; - // DPI_CanAnalyzeData, having type bool - ParameterId["CanAnalyzeData"] = "canAnalyzeData"; - // DPI_CanChangeDataType, having type bool - ParameterId["CanChangeDataType"] = "canChangeDataType"; - // DPI_CanChangeSemanticRole, having type bool - ParameterId["CanChangeSemanticRole"] = "canChangeSemanticRole"; - // DPI_CanDerive, having type bool - ParameterId["CanDerive"] = "canDerive"; - // DPI_CanDrop, having type bool - ParameterId["CanDrop"] = "canDrop"; - // DPI_CanEdit, having type bool - ParameterId["CanEdit"] = "canEdit"; - // DPI_CanEditLegendColor, having type bool - ParameterId["CanEditLegendColor"] = "canEditLegendColor"; - // DPI_CanEnableCenter, having type bool - ParameterId["CanEnableCenter"] = "canEnableCenter"; - // DPI_CanShowAdvancedSettings, having type bool - ParameterId["CanShowAdvancedSettings"] = "canShowAdvancedSettings"; - // DPI_CanEnableFilterStateButton, having type bool - ParameterId["CanEnableFilterStateButton"] = "canEnableFilterStateButton"; - // DPI_CanFloat, having type bool - ParameterId["CanFloat"] = "canFloat"; - // DPI_CanHaveTitle, having type bool - ParameterId["CanHaveTitle"] = "canHaveTitle"; - // DPI_CanIgnoreUpdate, having type bool - ParameterId["CanIgnoreUpdate"] = "canIgnoreUpdate"; - // DPI_CanNavigateBack, having type bool - ParameterId["CanNavigateBack"] = "canNavigateBack"; - // DPI_CanNavigateForward, having type bool - ParameterId["CanNavigateForward"] = "canNavigateForward"; - // DPI_CanScrollX, having type bool - ParameterId["CanScrollX"] = "canScrollX"; - // DPI_CanScrollY, having type bool - ParameterId["CanScrollY"] = "canScrollY"; - // DPI_CanSetDomain, having type bool - ParameterId["CanSetDomain"] = "canSetDomain"; - // DPI_CanSetMapUnit, having type bool - ParameterId["CanSetMapUnit"] = "canSetMapUnit"; - // DPI_CanShowApplyButton, having type bool - ParameterId["CanShowApplyButton"] = "canShowApplyButton"; - // DPI_CanShowFilterStateButton, having type bool - ParameterId["CanShowFilterStateButton"] = "canShowFilterStateButton"; - // DPI_CanShowMoreFewerButton, having type bool - ParameterId["CanShowMoreFewerButton"] = "canShowMoreFewerButton"; - // DPI_CanShowSyncClientOptions, having type bool - ParameterId["CanShowSyncClientOptions"] = "canShowSyncClientOptions"; - // DPI_CanSort, having type bool - ParameterId["CanSort"] = "canSort"; - // DPI_CanSortOrdinally, having type bool - ParameterId["CanSortOrdinally"] = "canSortOrdinal"; - // DPI_CanToggleAutomaticDrill, having type bool - ParameterId["CanToggleAutomaticDrill"] = "canToggleAutomaticDrill"; - // DPI_CanToggleGeographicSearch, having type bool - ParameterId["CanToggleGeographicSearch"] = "canToggleGeographicSearch"; - // DPI_CanToggleMapScale, having type bool - ParameterId["CanToggleMapScale"] = "canToggleMapScale"; - // DPI_CanUseFullColorRange, having type bool - ParameterId["CanUseFullColorRange"] = "canUseFullColorRange"; - // DPI_CanAddToDrillPath, having type bool - ParameterId["CanAddToDrillPath"] = "canAddToDrillPath"; - // DPI_CenterHorizontally, having type bool - ParameterId["CenterHorizontally"] = "centerHorizontally"; - // DPI_CenterVertically, having type bool - ParameterId["CenterVertically"] = "centerVertically"; - // DPI_ChangeAllFields, having type bool - ParameterId["ChangeAllFields"] = "changeAllFields"; - // DPI_Changed, having type bool - ParameterId["Changed"] = "changed"; - // DPI_ClearBrushing, having type bool - ParameterId["ClearBrushing"] = "clearBrushing"; - // DPI_ClearSort, having type bool - ParameterId["ClearSort"] = "clearSort"; - // DPI_ClearView, having type bool - ParameterId["ClearView"] = "clearView"; - // DPI_Collapsed, having type bool - ParameterId["Collapsed"] = "collapsed"; - // DPI_ConsolidateInCommit, having type bool - ParameterId["ConsolidateInCommit"] = "consolidateInCommit"; - // DPI_ClusterEnableScaledCheckbox, having type bool - ParameterId["ClusterEnableScaledCheckbox"] = "clusterEnableScaledCheckbox"; - // DPI_CommitPillFinished, having type bool - ParameterId["CommitPillFinished"] = "commitPillFinished"; - // DPI_CompressArrays, having type bool - ParameterId["CompressArrays"] = "compressArrays"; - // DPI_ComputeCompoundedRate, having type bool - ParameterId["ComputeCompoundedRate"] = "computeCompoundedRate"; - // DPI_ConfidenceIntervalAllowed, having type bool - ParameterId["ConfidenceIntervalAllowed"] = "confidenceIntervalAllowed"; - // DPI_ConfigIsDesktopStandard, having type bool - ParameterId["ConfigIsDesktopStandard"] = "configIsDesktopStandard"; - // DPI_ConfigIsInteractor, having type bool - ParameterId["ConfigIsInteractor"] = "configIsInteractor"; - // DPI_ConfigIsPublic, having type bool - ParameterId["ConfigIsPublic"] = "configIsPublic"; - // DPI_ConfigIsReader, having type bool - ParameterId["ConfigIsReader"] = "configIsReader"; - // DPI_ContainsQuant, having type bool - ParameterId["ContainsQuant"] = "containsQuant"; - // DPI_ContainsValidDatasources, having type bool - ParameterId["ContainsValidDatasources"] = "containsValidDatasources"; - // DPI_ControllerMissing, having type bool - ParameterId["ControllerMissing"] = "controllerMissing"; - // DPI_CreateExtractForPublish, having type bool - ParameterId["CreateExtractForPublish"] = "createExtractForPublish"; - // DPI_CrossTab, having type bool - ParameterId["CrossTab"] = "crossTab"; - // DPI_CullLabels, having type bool - ParameterId["CullLabels"] = "cullLabels"; - // DPI_CurrentCustViewIdFlag, having type bool - ParameterId["CurrentCustViewIdFlag"] = "isCurrentCustViewIdValid"; - // DPI_DashboardEnableSnap, having type bool - ParameterId["DashboardEnableSnap"] = "dashboardEnableSnap"; - // DPI_DashboardShowGrid, having type bool - ParameterId["DashboardShowGrid"] = "dashboardShowGrid"; - // DPI_DataGridSortOrder, having type bool - ParameterId["DataGridSortOrder"] = "datagridSortOrder"; - // DPI_DeleteExtract, having type bool - ParameterId["DeleteExtract"] = "deleteExtract"; - // DPI_DeleteOnlySpecifiedSelection, having type bool - ParameterId["DeleteOnlySpecifiedSelection"] = "deleteOnlySpecifiedSelection"; - // DPI_DeleteOrphans, having type bool - ParameterId["DeleteOrphans"] = "deleteOrphans"; - // DPI_DisabledDataConnectionClassNames, having type bool - ParameterId["DisabledDataConnectionClassNames"] = "disabledDataConnectionClassNames"; - // DPI_DisablePresModelHandler, having type bool - ParameterId["DisablePresModelHandler"] = "disablePresModelHandler"; - // DPI_DisplayDate, having type bool - ParameterId["DisplayDate"] = "displayDate"; - // DPI_DisplayTime, having type bool - ParameterId["DisplayTime"] = "displayTime"; - // DPI_DoDropUIAction, having type bool - ParameterId["DoDropUIAction"] = "doDropUiAction"; - // DPI_DoMerge, having type bool - ParameterId["DoMerge"] = "doMerge"; - // DPI_DoPreDropUIAction, having type bool - ParameterId["DoPreDropUIAction"] = "doPreDropUiAction"; - // DPI_DoQuery, having type bool - ParameterId["DoQuery"] = "doQuery"; - // DPI_DragHorz, having type bool - ParameterId["DragHorz"] = "dragHorz"; - // DPI_DrillDown, having type bool - ParameterId["DrillDown"] = "drillDown"; - // DPI_DropToXAxis, having type bool - ParameterId["DropToXAxis"] = "dropToXAxis"; - // DPI_DropToYAxis, having type bool - ParameterId["DropToYAxis"] = "dropToYAxis"; - // DPI_DropUnnamedFields, having type bool - ParameterId["DropUnnamedFields"] = "dropUnnamedFields"; - // DPI_EditExisting, having type bool - ParameterId["EditExisting"] = "editExisting"; - // DPI_EditingConnection, having type bool - ParameterId["EditingConnection"] = "editingConnection"; - // DPI_EmbedCredentials, having type bool - ParameterId["EmbedCredentials"] = "embedCredentials"; - // DPI_EmbedOAuthCredential, having type bool - ParameterId["EmbedOAuthCredential"] = "embedOauthCredentials"; - // DPI_EmptyHighlightFogAll, having type bool - ParameterId["EmptyHighlightFogAll"] = "emptyHighlightFogAll"; - // DPI_EnableAlphabeticSort, having type bool - ParameterId["EnableAlphabeticSort"] = "enableAlphabeticSort"; - // DPI_EnableAutomaticDrill, having type bool - ParameterId["EnableAutomaticDrill"] = "enableAutomaticDrill"; - // DPI_EnableConfidenceBands, having type bool - ParameterId["EnableConfidenceBands"] = "enableConfidenceBands"; - // DPI_EnableDataOrderSort, having type bool - ParameterId["EnableDataOrderSort"] = "enableDataOrderSort"; - // DPI_EnableFieldSort, having type bool - ParameterId["EnableFieldSort"] = "enableFieldSort"; - // DPI_EnableInstantAnalytics, having type bool - ParameterId["EnableInstantAnalytics"] = "enableInstantAnalytics"; - // DPI_EnableLines, having type bool - ParameterId["EnableLines"] = "enableLines"; - // DPI_EnableManualSort, having type bool - ParameterId["EnableManualSort"] = "enableManualSort"; - // DPI_EnableMarks, having type bool - ParameterId["EnableMarks"] = "enableMarks"; - // DPI_EnableMultipleSelection, having type bool - ParameterId["EnableMultipleSelection"] = "enableMultipleSelection"; - // DPI_EnablePrefetching, having type bool - ParameterId["EnablePrefetching"] = "enablePrefetching"; - // DPI_EnableTableCalcDensification, having type bool - ParameterId["EnableTableCalcDensification"] = "enableTableCalcDensification"; - // DPI_EnableTooltips, having type bool - ParameterId["EnableTooltips"] = "enableTooltips"; - // DPI_EndDataSourcePresModelUpdate, having type bool - ParameterId["EndDataSourcePresModelUpdate"] = "endDataSourcePresModelUpdate"; - // DPI_EstimateNulls, having type bool - ParameterId["EstimateNulls"] = "estimateNulls"; - // DPI_Exclude, having type bool - ParameterId["Exclude"] = "exclude"; - // DPI_ExcludeColor, having type bool - ParameterId["ExcludeColor"] = "excludeColor"; - // DPI_ExcludeCubeDenorm, having type bool - ParameterId["ExcludeCubeDenorm"] = "excludeCubeDenorm"; - // DPI_ExcludeInterceptEnabled, having type bool - ParameterId["ExcludeInterceptEnabled"] = "excludeInterceptEnabled"; - // DPI_ExcludeLocalFunctions, having type bool - ParameterId["ExcludeLocalFunctions"] = "excludeLocalFunctions"; - // DPI_ExportDashboardImageFromSheet, having type bool - ParameterId["ExportDashboardImageFromSheet"] = "exportImageSheetAsDashboard"; - // DPI_ExtSvcConfigIsAuthEnabled, having type bool - ParameterId["ExtSvcConfigIsAuthEnabled"] = "extSvcConfigIsAuthEnabled"; - // DPI_ExtractFullRefresh, having type bool - ParameterId["ExtractFullRefresh"] = "extractFullRefresh"; - // DPI_ExtractNeedsRefresh, having type bool - ParameterId["ExtractNeedsRefresh"] = "extractNeedsRefresh"; - // DPI_ExtractPending, having type bool - ParameterId["ExtractPending"] = "extractPending"; - // DPI_ExtractSelected, having type bool - ParameterId["ExtractSelected"] = "extractSelected"; - // DPI_FederatableOnly, having type bool - ParameterId["FederatableOnly"] = "federatableOnly"; - // DPI_FieldSortOrder, having type bool - ParameterId["FieldSortOrder"] = "fieldSortOrder"; - // DPI_FieldSupportsContains, having type bool - ParameterId["FieldSupportsContains"] = "fieldSupportsContains"; - // DPI_FieldSupportsEndsWith, having type bool - ParameterId["FieldSupportsEndsWith"] = "fieldSupportsEndsWith"; - // DPI_FieldSupportsStartsWith, having type bool - ParameterId["FieldSupportsStartsWith"] = "fieldSupportsStartsWith"; - // DPI_FillAbove, having type bool - ParameterId["FillAbove"] = "fillAbove"; - // DPI_FillBelow, having type bool - ParameterId["FillBelow"] = "fillBelow"; - // DPI_FillWithZeroes, having type bool - ParameterId["FillWithZeroes"] = "fillZeroes"; - // DPI_FilterIsNamed, having type bool - ParameterId["FilterIsNamed"] = "filterIsNamed"; - // DPI_Focus, having type bool - ParameterId["Focus"] = "focus"; - // DPI_ForInternalUse, having type bool - ParameterId["ForInternalUse"] = "internalUse"; - // DPI_ForceBrowserRendering, having type bool - ParameterId["ForceBrowserRendering"] = "forceBrowserRendering"; - // DPI_ForceCache, having type bool - ParameterId["ForceCache"] = "forceCache"; - // DPI_ForceColorFromApp, having type bool - ParameterId["ForceColorFromApp"] = "forceColorFromApp"; - // DPI_ForceConnectionAttempt, having type bool - ParameterId["ForceConnectionAttempt"] = "forceConnectionAttempt"; - // DPI_ForceConsolidateInCommit, having type bool - ParameterId["ForceConsolidateInCommit"] = "forceConsolidateInCommit"; - // DPI_ForceExtractRefresh, having type bool - ParameterId["ForceExtractRefresh"] = "extractForceRefresh"; - // DPI_ForceInterceptZero, having type bool - ParameterId["ForceInterceptZero"] = "forceInterceptZero"; - // DPI_ForceOldConnectExperience, having type bool - ParameterId["ForceOldConnectExperience"] = "forceOldConnectExperience"; - // DPI_ForceToggleHighlightStateOn, having type bool - ParameterId["ForceToggleHighlightStateOn"] = "forceHighlightOn"; - // DPI_ForceWholeDate, having type bool - ParameterId["ForceWholeDate"] = "forceWholeDate"; - // DPI_ForecastSelected, having type bool - ParameterId["ForecastSelected"] = "forecastSelected"; - // DPI_ForecastUseAutoAgg, having type bool - ParameterId["ForecastUseAutoAgg"] = "forecastUseAutoSummarize"; - // DPI_ForJoin, having type bool - ParameterId["ForJoin"] = "forJoin"; - // DPI_FormatDataValueLocally, having type bool - ParameterId["FormatDataValueLocally"] = "formatDataValueLocally"; - // DPI_FormatIfColumn, having type bool - ParameterId["FormatIfColumn"] = "formatIfColumn"; - // DPI_FormatIfParameter, having type bool - ParameterId["FormatIfParameter"] = "formatIfParameter"; - // DPI_GeographicSearchIsDataLoaded, having type bool - ParameterId["GeographicSearchIsDataLoaded"] = "geographicSearchDataLoaded"; - // DPI_GeographicSearchLoadDataAsync, having type bool - ParameterId["GeographicSearchLoadDataAsync"] = "geographicSearchLoadDataAsync"; - // DPI_GroupByAll, having type bool - ParameterId["GroupByAll"] = "groupByAll"; - // DPI_HasAlias, having type bool - ParameterId["HasAlias"] = "hasAlias"; - // DPI_HasAllMember, having type bool - ParameterId["HasAllMember"] = "hasAllMember"; - // DPI_HasApply, having type bool - ParameterId["HasApply"] = "hasApply"; - // DPI_HasBackgroundImage, having type bool - ParameterId["HasBackgroundImage"] = "hasBackgroundImage"; - // DPI_HasBeenDismissed, having type bool - ParameterId["HasBeenDismissed"] = "hasBeenDismissed"; - // DPI_HasCaption, having type bool - ParameterId["HasCaption"] = "hasCaption"; - // DPI_HasCondition, having type bool - ParameterId["HasCondition"] = "hasCondition"; - // DPI_HasConnectPermissions, having type bool - ParameterId["HasConnectPermissions"] = "hasConnectPermissions"; - // DPI_HasDashboard, having type bool - ParameterId["HasDashboard"] = "hasDashboard"; - // DPI_HasDownloadPermissions, having type bool - ParameterId["HasDownloadPermissions"] = "hasDownloadPermissions"; - // DPI_HasDrill, having type bool - ParameterId["HasDrill"] = "hasDrill"; - // DPI_HasExclude, having type bool - ParameterId["HasExclude"] = "hasExclude"; - // DPI_HasFill, having type bool - ParameterId["HasFill"] = "hasFill"; - // DPI_HasLabels, having type bool - ParameterId["HasLabels"] = "hasLabels"; - // DPI_HasLimit, having type bool - ParameterId["HasLimit"] = "hasLimit"; - // DPI_HasLine, having type bool - ParameterId["HasLine"] = "hasLine"; - // DPI_HasModifiedAxes, having type bool - ParameterId["HasModifiedAxes"] = "hasModifiedAxes"; - // DPI_HasNonRootCalculations, having type bool - ParameterId["HasNonRootCalculations"] = "hasNonRootCalculations"; - // DPI_HasPattern, having type bool - ParameterId["HasPattern"] = "hasPattern"; - // DPI_HasPublishGuidanceResults, having type bool - ParameterId["HasPublishGuidanceResults"] = "hasPublishGuidanceResults"; - // DPI_HasSelection, having type bool - ParameterId["HasSelection"] = "hasSelection"; - // DPI_HasServerCredentials, having type bool - ParameterId["HasServerCredentials"] = "hasServerCredentials"; - // DPI_HasSpace, having type bool - ParameterId["HasSpace"] = "hasSpace"; - // DPI_HasStoredProcedure, having type bool - ParameterId["HasStoredProcedure"] = "hasStoredProcedure"; - // DPI_HasStringCalculatedMeasures, having type bool - ParameterId["HasStringCalculatedMeasures"] = "hasStringCalculatedMeasures"; - // DPI_HasTableCalcData, having type bool - ParameterId["HasTableCalcData"] = "hasTableCalcData"; - // DPI_HasTitle, having type bool - ParameterId["HasTitle"] = "hasTitle"; - // DPI_HasUserSpecificContent, having type bool - ParameterId["HasUserSpecificContent"] = "hasUserSpecificContent"; - // DPI_HasUnjoinedTable, having type bool - ParameterId["HasUnjoinedTable"] = "hasUnjoinedTable"; - // DPI_HasVarArgs, having type bool - ParameterId["HasVarArgs"] = "hasVarArgs"; - // DPI_HasVisitedWDCPage, having type bool - ParameterId["HasVisitedWDCPage"] = "hasVisitedWdcPage"; - // DPI_IgnoreAliases, having type bool - ParameterId["IgnoreAliases"] = "ignoreAliases"; - // DPI_IgnoreDomain, having type bool - ParameterId["IgnoreDomain"] = "ignoreDomain"; - // DPI_IgnoreSelection, having type bool - ParameterId["IgnoreSelection"] = "ignoreSelection"; - // DPI_IncludeAllColumns, having type bool - ParameterId["IncludeAllColumns"] = "includeAllColumns"; - // DPI_IncludeContext, having type bool - ParameterId["IncludeContext"] = "includeContext"; - // DPI_IncludeDashboardPresModels, having type bool - ParameterId["IncludeDashboardPresModels"] = "includeDashboardPresModels"; - // DPI_IncludeItemSet, having type bool - ParameterId["IncludeItemSet"] = "includeItemSet"; - // DPI_IncludeLocalFiles, having type bool - ParameterId["IncludeLocalFiles"] = "includeLocalFiles"; - // DPI_IncludeOtherSelected, having type bool - ParameterId["IncludeOtherSelected"] = "includeOtherSelected"; - // DPI_IncludeNulls, having type bool - ParameterId["IncludeNulls"] = "includeNulls"; - // DPI_IncludeParent, having type bool - ParameterId["IncludeParent"] = "includeParent"; - // DPI_IncludeSelections, having type bool - ParameterId["IncludeSelections"] = "includeSelections"; - // DPI_IncludeSiblings, having type bool - ParameterId["IncludeSiblings"] = "includeSiblings"; - // DPI_IncludeStories, having type bool - ParameterId["IncludeStories"] = "includeStories"; - // DPI_IncludeSubfolders, having type bool - ParameterId["IncludeSubfolders"] = "includeSubfolders"; - // DPI_IncludeVolatileProps, having type bool - ParameterId["IncludeVolatileProps"] = "includeVolatileProps"; - // DPI_IncludesTag, having type bool - ParameterId["IncludesTag"] = "includesTag"; - // DPI_InsertAfter, having type bool - ParameterId["InsertAfter"] = "insertAfter"; - // DPI_InsertAtEnd, having type bool - ParameterId["InsertAtEnd"] = "insertAtEnd"; - // DPI_InstantAnalyticsAllowed, having type bool - ParameterId["InstantAnalyticsAllowed"] = "instantAnalyticsAllowed"; - // DPI_IntegerCoordinates, having type bool - ParameterId["IntegerCoordinates"] = "intCoords"; - // DPI_InvalidatedLayout, having type bool - ParameterId["InvalidatedLayout"] = "invalidatedLayout"; - // DPI_IsActive, having type bool - ParameterId["IsActive"] = "isActive"; - // DPI_IsAddToFilter, having type bool - ParameterId["IsAddToFilter"] = "isAddToFilterButtonChecked"; - // DPI_IsAllButtonVisible, having type bool - ParameterId["IsAllButtonVisible"] = "isAllButtonVisible"; - // DPI_IsAllowedInCalcs, having type bool - ParameterId["IsAllowedInCalcs"] = "isAllowedInCalcs"; - // DPI_IsAppMapSource, having type bool - ParameterId["IsAppMapSource"] = "isAppMapSource"; - // DPI_IsArchive, having type bool - ParameterId["IsArchive"] = "isArchive"; - // DPI_IsAuthoringMode, having type bool - ParameterId["IsAuthoringMode"] = "isAuthoringMode"; - // DPI_IsAuto, having type bool - ParameterId["IsAuto"] = "isAuto"; - // DPI_IsAutoClear, having type bool - ParameterId["IsAutoClear"] = "isAutoClear"; - // DPI_IsAutoColumn, having type bool - ParameterId["IsAutoColumn"] = "isAutoColumn"; - // DPI_IsAutoHidden, having type bool - ParameterId["IsAutoHidden"] = "isAutoHidden"; - // DPI_IsAutoSelect, having type bool - ParameterId["IsAutoSelect"] = "isAutoSelect"; - // DPI_IsBold, having type bool - ParameterId["IsBold"] = "isBold"; - // DPI_IsBorderVisible, having type bool - ParameterId["IsBorderVisible"] = "isBorderVisible"; - // DPI_IsBoxplot, having type bool - ParameterId["IsBoxplot"] = "isBoxplot"; - // DPI_IsCapable, having type bool - ParameterId["IsCapable"] = "isCapable"; - // DPI_IsCaptured, having type bool - ParameterId["IsCaptured"] = "isCaptured"; - // DPI_IsCentered, having type bool - ParameterId["IsCentered"] = "isCentered"; - // DPI_IsChecked, having type bool - ParameterId["IsChecked"] = "isChecked"; - // DPI_IsColorDiverging, having type bool - ParameterId["IsColorDiverging"] = "isColorDiverging"; - // DPI_IsColorStepped, having type bool - ParameterId["IsColorStepped"] = "isColorStepped"; - // DPI_IsCombinedField, having type bool - ParameterId["IsCombinedField"] = "isCombinedField"; - // DPI_IsConnected, having type bool - ParameterId["IsConnected"] = "isConnected"; - // DPI_IsContextMenuAllowed, having type bool - ParameterId["IsContextMenuAllowed"] = "isContextMenuAllowed"; - // DPI_IsContinuous, having type bool - ParameterId["IsContinuous"] = "isContinuous"; - // DPI_IsCopy, having type bool - ParameterId["IsCopy"] = "isCopy"; - // DPI_IsCustomPalette, having type bool - ParameterId["IsCustomPalette"] = "isCustomPalette"; - // DPI_IsCustomSQL, having type bool - ParameterId["IsCustomSQL"] = "isCustomSql"; - // DPI_IsCustomValueEnabled, having type bool - ParameterId["IsCustomValueEnabled"] = "isCustomValueEnabled"; - // DPI_IsDataAlertConditionMet, having type bool - ParameterId["IsDataAlertConditionMet"] = "isDataAlertConditionMet"; - // DPI_IsDataAlertDialogVisible, having type bool - ParameterId["IsDataAlertDialogVisible"] = "isDataAlertDialogVisible"; - // DPI_IsDataBin, having type bool - ParameterId["IsDataBin"] = "isDataBin"; - // DPI_IsDataGridVisible, having type bool - ParameterId["IsDataGridVisible"] = "isDataGridVisible"; - // DPI_IsDatabase, having type bool - ParameterId["IsDatabase"] = "isDatabase"; - // DPI_IsDatabaseFilterInclusive, having type bool - ParameterId["IsDatabaseFilterInclusive"] = "isDbFilterInclusive"; - // DPI_IsWebDataTabViewSupported, having type bool - ParameterId["IsWebDataTabViewSupported"] = "isWebDataTabViewSupported"; - // DPI_IsPublishedDatasourceReplacement, having type bool - ParameterId["IsPublishedDatasourceReplacement"] = "isPublishedDatasourceReplacement"; - // DPI_IsDeadDrop, having type bool - ParameterId["IsDeadDrop"] = "isDeadDrop"; - // DPI_IsDefault, having type bool - ParameterId["IsDefault"] = "isDefault"; - // DPI_IsDeleteCalcConfirm, having type bool - ParameterId["IsDeleteCalcConfirm"] = "isDeleteCalcConfirmed"; - // DPI_IsDimension, having type bool - ParameterId["IsDimension"] = "isDimension"; - // DPI_IsDivider, having type bool - ParameterId["IsDivider"] = "isDivider"; - // DPI_IsDropdownEnabled, having type bool - ParameterId["IsDropdownEnabled"] = "isDropdownEnabled"; - // DPI_IsEditing, having type bool - ParameterId["IsEditing"] = "isEditing"; - // DPI_IsEmbedded, having type bool - ParameterId["IsEmbedded"] = "isEmbedded"; - // DPI_IsEmpty, having type bool - ParameterId["IsEmpty"] = "isEmpty"; - // DPI_IsAddInEnabled, having type bool - ParameterId["IsAddInEnabled"] = "isAddInEnabled"; - // DPI_IsInDrillPath, having type bool - ParameterId["IsInDrillPath"] = "isInDrillPath"; - // DPI_AddInJSDebuggingEnabled, having type bool - ParameterId["AddInJSDebuggingEnabled"] = "addInJsDebugginEnabled"; - // DPI_AddInPauseBeforeLoading, having type bool - ParameterId["AddInPauseBeforeLoading"] = "addInPauseBeforeLoading"; - // DPI_IsDSHierarchical, having type bool - ParameterId["IsDSHierarchical"] = "isDsHierarchical"; - // DPI_IsEndPtMoveable, having type bool - ParameterId["IsEndPtMoveable"] = "isEndpointMovable"; - // DPI_IsExclude, having type bool - ParameterId["IsExclude"] = "isExcludeButtonChecked"; - // DPI_IsExistingConnection, having type bool - ParameterId["IsExistingConnection"] = "isExistingConnection"; - // DPI_IsExistingObject, having type bool - ParameterId["IsExistingObject"] = "isExistingObject"; - // DPI_IsExtract, having type bool - ParameterId["IsExtract"] = "isExtract"; - // DPI_IsExtractOnlyConnection, having type bool - ParameterId["IsExtractOnlyConnection"] = "isExtractOnlyConnection"; - // DPI_IsExtractSelectionVisible, having type bool - ParameterId["IsExtractSelectionVisible"] = "isExtractSelectionVisible"; - // DPI_IsFederatable, having type bool - ParameterId["IsFederatable"] = "isFederatable"; - // DPI_IsField, having type bool - ParameterId["IsField"] = "isField"; - // DPI_IsFieldParameter, having type bool - ParameterId["IsFieldParameter"] = "isFieldParameter"; - // DPI_IsFilterActionField, having type bool - ParameterId["IsFilterActionField"] = "isFilterActionField"; - // DPI_IsFirstClassConnector, having type bool - ParameterId["IsFirstClassConnector"] = "isFirstClassConnector"; - // DPI_IsFloating, having type bool - ParameterId["IsFloating"] = "isFloating"; - // DPI_IsFolded, having type bool - ParameterId["IsFolded"] = "isFolded"; - // DPI_IsForInput, having type bool - ParameterId["IsForInput"] = "isForInput"; - // DPI_IsForecastEnabled, having type bool - ParameterId["IsForecastEnabled"] = "isForecastEnabled"; - // DPI_IsForceDirty, having type bool - ParameterId["IsForceDirty"] = "isForceDirty"; - // DPI_IsFullScan, having type bool - ParameterId["IsFullScan"] = "isFullScan"; - // DPI_IsFullStyling, having type bool - ParameterId["IsFullStyling"] = "isFullStyling"; - // DPI_IsGenerated, having type bool - ParameterId["IsGenerated"] = "isGenerated"; - // DPI_IsGlobalNames, having type bool - ParameterId["IsGlobalNames"] = "isGlobalNames"; - // DPI_IsGrayed, having type bool - ParameterId["IsGrayed"] = "isGrayed"; - // DPI_IsGrayscale, having type bool - ParameterId["IsGrayscale"] = "isGrayscale"; - // DPI_IsGroup, having type bool - ParameterId["IsGroup"] = "isGroup"; - // DPI_IsHideableField, having type bool - ParameterId["IsHideableField"] = "isHideableField"; - // DPI_IsHierarchy, having type bool - ParameterId["IsHierarchy"] = "isHierarchy"; - // DPI_IsHierarchySingleSelect, having type bool - ParameterId["IsHierarchySingleSelect"] = "isHierarchySingleSelect"; - // DPI_IsHighlightAllowed, having type bool - ParameterId["IsHighlightAllowed"] = "isHighlightAllowed"; - // DPI_IsHighlightEnabled, having type bool - ParameterId["IsHighlightEnabled"] = "isHighlightEnabled"; - // DPI_IsHighlightField, having type bool - ParameterId["IsHighlightField"] = "isHighlightField"; - // DPI_IsHorizontal, having type bool - ParameterId["IsHorizontal"] = "isHorizontal"; - // DPI_IsImageEnabled, having type bool - ParameterId["IsImageEnabled"] = "isImageEnabled"; - // DPI_IsInDefault, having type bool - ParameterId["IsInDefault"] = "isInDefault"; - // DPI_IsInPrimaryDataSource, having type bool - ParameterId["IsInPrimaryDataSource"] = "isInPrimaryDataSource"; - // DPI_IsInner, having type bool - ParameterId["IsInner"] = "isInner"; - // DPI_IsInitial, having type bool - ParameterId["IsInitial"] = "isInitial"; - // DPI_IsInstance, having type bool - ParameterId["IsInstance"] = "isInstance"; - // DPI_IsInvalid, having type bool - ParameterId["IsInvalid"] = "isInvalid"; - // DPI_IsInvalidCalcOnDG, having type bool - ParameterId["IsInvalidCalcOnDG"] = "isInvalidDgCalc"; - // DPI_IsItalics, having type bool - ParameterId["IsItalics"] = "isItalics"; - // DPI_IsJoinAreaVisible, having type bool - ParameterId["IsJoinAreaVisible"] = "isJoinAreaVisible"; - // DPI_IsLabels, having type bool - ParameterId["IsLabels"] = "isLabels"; - // DPI_IsLayered, having type bool - ParameterId["IsLayered"] = "isLayered"; - // DPI_IsLeft, having type bool - ParameterId["IsLeft"] = "isLeft"; - // DPI_IsLegacy, having type bool - ParameterId["IsLegacy"] = "isLegacy"; - // DPI_IsLevel, having type bool - ParameterId["IsLevel"] = "isLevel"; - // DPI_IsLevelOrLevelIdentity, having type bool - ParameterId["IsLevelOrLevelIdentity"] = "isLevelOrLevelIdentity"; - // DPI_IsLicensed, having type bool - ParameterId["IsLicensed"] = "isLicensed"; - // DPI_IsLink, having type bool - ParameterId["IsLink"] = "isLink"; - // DPI_IsMap, having type bool - ParameterId["IsMap"] = "isMap"; - // DPI_IsMeasure, having type bool - ParameterId["IsMeasure"] = "isMeasure"; - // DPI_IsMerge, having type bool - ParameterId["IsMerge"] = "isMerge"; - // DPI_IsMessageSourceRemote, having type bool - ParameterId["IsMessageSourceRemote"] = "isMessageSourceRemote"; - // DPI_IsMissingFromExtract, having type bool - ParameterId["IsMissingFromExtract"] = "isMissingFromExtract"; - // DPI_IsMobile, having type bool - ParameterId["IsMobile"] = "isMobile"; - // DPI_IsModified, having type bool - ParameterId["IsModified"] = "isModified"; - // DPI_IsNew, having type bool - ParameterId["IsNew"] = "isNew"; - // DPI_IsNewCloudFileDataSource, having type bool - ParameterId["IsNewCloudFileDataSource"] = "isNewCloudFileDataSource"; - // DPI_IsNewZone, having type bool - ParameterId["IsNewZone"] = "isNewZone"; - // DPI_IsNone, having type bool - ParameterId["IsNone"] = "isNone"; - // DPI_IsOfflineMode, having type bool - ParameterId["IsOfflineMode"] = "isOfflineMode"; - // DPI_IsPreAqlBin, having type bool - ParameterId["IsPreAqlBin"] = "isPreAqlBin"; - // DPI_IsOMeasuresAndRelational, having type bool - ParameterId["IsOMeasuresAndRelational"] = "isOmeasuresAndRelational"; - // DPI_IsOpaque, having type bool - ParameterId["IsOpaque"] = "isOpaque"; - // DPI_IsOrphaned, having type bool - ParameterId["IsOrphaned"] = "isOrphaned"; - // DPI_IsOverlay, having type bool - ParameterId["IsOverlay"] = "isOverlay"; - // DPI_IsOverride, having type bool - ParameterId["IsOverride"] = "isOverride"; - // DPI_IsPageLoading, having type bool - ParameterId["IsPageLoading"] = "isPageLoading"; - // DPI_IsParameterSelected, having type bool - ParameterId["IsParameterSelected"] = "isParameterSelected"; - // DPI_IsParameterSelectedOnFrom, having type bool - ParameterId["IsParameterSelectedOnFrom"] = "isParameterSelectedOnFrom"; - // DPI_IsParameterSelectedOnTo, having type bool - ParameterId["IsParameterSelectedOnTo"] = "isParameterSelectedOnTo"; - // DPI_IsPatternBased, having type bool - ParameterId["IsPatternBased"] = "isPatternBased"; - // DPI_IsPinned, having type bool - ParameterId["IsPinned"] = "isPinned"; - // DPI_IsPresentationMode, having type bool - ParameterId["IsPresentationMode"] = "isPresentationModeDoc"; - // DPI_IsPublishAllowed, having type bool - ParameterId["IsPublishAllowed"] = "isPublishAllowed"; - // DPI_IsMustDowngradeToPublish, having type bool - ParameterId["IsMustDowngradeToPublish"] = "isDowngradeToPublishRequired"; - // DPI_IsPublished, having type bool - ParameterId["IsPublished"] = "isPublished"; - // DPI_IsQuickTableCalc, having type bool - ParameterId["IsQuickTableCalc"] = "isQuickTableCalc"; - // DPI_IsRadioOn, having type bool - ParameterId["IsRadioOn"] = "isRadioOn"; - // DPI_IsReconnect, having type bool - ParameterId["IsReconnect"] = "isReconnect"; - // DPI_IsRecursive, having type bool - ParameterId["IsRecursive"] = "isRecursive"; - // DPI_IsReferenced, having type bool - ParameterId["IsReferenced"] = "isReferenced"; - // DPI_IsRemovalAllowed, having type bool - ParameterId["IsRemovalAllowed"] = "isRowRemovalAllowed"; - // DPI_IsRenderCapable, having type bool - ParameterId["IsRenderCapable"] = "isRenderCapable"; - // DPI_IsRequired, having type bool - ParameterId["IsRequired"] = "isRequired"; - // DPI_IsReversed, having type bool - ParameterId["IsReversed"] = "isReversed"; - // DPI_IsRightDrag, having type bool - ParameterId["IsRightDrag"] = "isRightDrag"; - // DPI_IsRowLabels, having type bool - ParameterId["IsRowLabels"] = "isRowLabels"; - // DPI_IsPercentage, having type bool - ParameterId["IsPercentage"] = "isPercentage"; - // DPI_IsSalesforceInConnection, having type bool - ParameterId["IsSalesforceInConnection"] = "isSalesforceInConnection"; - // DPI_IsScaled, having type bool - ParameterId["IsScaled"] = "isScaled"; - // DPI_IsSelected, having type bool - ParameterId["IsSelected"] = "isSelected"; - // DPI_IsSelectedItem, having type bool - ParameterId["IsSelectedItem"] = "isSelectedItem"; - // DPI_IsSelectionDisabled, having type bool - ParameterId["IsSelectionDisabled"] = "isSelectionDisabled"; - // DPI_IsShiftDrag, having type bool - ParameterId["IsShiftDrag"] = "isShiftDrag"; - // DPI_IsSingleLabel, having type bool - ParameterId["IsSingleLabel"] = "isSingleLabel"; - // DPI_IsSingleSelect, having type bool - ParameterId["IsSingleSelect"] = "isSingleSelect"; - // DPI_IsSingleSelectMode, having type bool - ParameterId["IsSingleSelectMode"] = "isSingleSelectMode"; - // DPI_IsSingleSelection, having type bool - ParameterId["IsSingleSelection"] = "isSingleSelection"; - // DPI_IsSorted, having type bool - ParameterId["IsSorted"] = "isSorted"; - // DPI_IsSortPill, having type bool - ParameterId["IsSortPill"] = "isSortPill"; - // DPI_IsSpecial, having type bool - ParameterId["IsSpecial"] = "isSpecial"; - // DPI_IsSplashScreen, having type bool - ParameterId["IsSplashScreen"] = "isSplashScreen"; - // DPI_IsStoryEmpty, having type bool - ParameterId["IsStoryEmpty"] = "isStoryEmpty"; - // DPI_IsStrikeThrough, having type bool - ParameterId["IsStrikeThrough"] = "isStrikeThrough"; - // DPI_IsTableCalc, having type bool - ParameterId["IsTableCalc"] = "isTableCalc"; - // DPI_IsTableCleaningSubtable, having type bool - ParameterId["IsTableCleaningSubtable"] = "isTableCleaningSubtable"; - // DPI_IsTableFilterInclusive, having type bool - ParameterId["IsTableFilterInclusive"] = "isTableFilterInclusive"; - // DPI_IsTableRanked, having type bool - ParameterId["IsTableRanked"] = "isTableRanked"; - // DPI_IsTemporary, having type bool - ParameterId["IsTemporary"] = "isTemporary"; - // DPI_IsTitleVisible, having type bool - ParameterId["IsTitleVisible"] = "isTitleVisible"; - // DPI_IsTopLevel, having type bool - ParameterId["IsTopLevel"] = "isTopLevel"; - // DPI_IsTwoValued, having type bool - ParameterId["IsTwoValued"] = "isTwoValued"; - // DPI_IsTypeInFinished, having type bool - ParameterId["IsTypeInFinished"] = "isTypeinFinished"; - // DPI_IsTypeInPill, having type bool - ParameterId["IsTypeInPill"] = "isTypeInPill"; - // DPI_IsURLActionField, having type bool - ParameterId["IsURLActionField"] = "isUrlActionField"; - // DPI_IsUnderlined, having type bool - ParameterId["IsUnderlined"] = "isUnderlined"; - // DPI_IsUnion, having type bool - ParameterId["IsUnion"] = "isUnion"; - // DPI_IsUnionReplacement, having type bool - ParameterId["IsUnionReplacement"] = "isUnionReplacement"; - // DPI_IsUnnamedCalc, having type bool - ParameterId["IsUnnamedCalc"] = "isUnnamed"; - // DPI_IsUserDefinedAttribute, having type bool - ParameterId["IsUserDefinedAttribute"] = "isUserDefinedAttribute"; - // DPI_IsUserEditable, having type bool - ParameterId["IsUserEditable"] = "isUserEditable"; - // DPI_IsUserPrompted, having type bool - ParameterId["IsUserPrompted"] = "isUserPrompted"; - // DPI_IsUserResponded, having type bool - ParameterId["IsUserResponded"] = "isUserResponded"; - // DPI_IsValid, having type bool - ParameterId["IsValid"] = "isValid"; - // DPI_IsValidWDCPage, having type bool - ParameterId["IsValidWDCPage"] = "isValidWdcPage"; - // DPI_IsVaryingAttributeDimension, having type bool - ParameterId["IsVaryingAttributeDimension"] = "isVaryingAttributeDimension"; - // DPI_IsVertical, having type bool - ParameterId["IsVertical"] = "isVertical"; - // DPI_IsViewModified, having type bool - ParameterId["IsViewModified"] = "isViewModified"; - // DPI_IsVisuallyCategorical, having type bool - ParameterId["IsVisuallyCategorical"] = "isVisuallyCat"; - // DPI_IsVizInTooltip, having type bool - ParameterId["IsVizInTooltip"] = "isVizInTooltip"; - // DPI_IsWeb, having type bool - ParameterId["IsWeb"] = "isWeb"; - // DPI_IsWhite, having type bool - ParameterId["IsWhite"] = "isWhite"; - // DPI_IsWorldNew, having type bool - ParameterId["IsWorldNew"] = "isWorldNew"; - // DPI_IsXAxis, having type bool - ParameterId["IsXAxis"] = "isXAxis"; - // DPI_KeepAspectRatio, having type bool - ParameterId["KeepAspectRatio"] = "keepAspectRatio"; - // DPI_LabelLineEndFirst, having type bool - ParameterId["LabelLineEndFirst"] = "labelLineEndFirst"; - // DPI_LabelLineEndLast, having type bool - ParameterId["LabelLineEndLast"] = "labelLineEndLast"; - // DPI_LabelMarkMax, having type bool - ParameterId["LabelMarkMax"] = "labelMarkMax"; - // DPI_LabelMarkMin, having type bool - ParameterId["LabelMarkMin"] = "labelMarkMin"; - // DPI_LockAspectRatio, having type bool - ParameterId["LockAspectRatio"] = "lockAspectRatio"; - // DPI_LoopPlayback, having type bool - ParameterId["LoopPlayback"] = "loopPlayback"; - // DPI_LossyImages, having type bool - ParameterId["LossyImages"] = "lossyImages"; - // DPI_MakeGlobal, having type bool - ParameterId["MakeGlobal"] = "isMakeGlobal"; - // DPI_ManualSortOnly, having type bool - ParameterId["ManualSortOnly"] = "manualSortOnly"; - // DPI_MapBoxDefaultStyleSelected, having type bool - ParameterId["MapBoxDefaultStyleSelected"] = "mapboxDefaultStyleSelected"; - // DPI_MapBoxURLParseSuccessful, having type bool - ParameterId["MapBoxURLParseSuccessful"] = "mapboxUrlParseSuccessful"; - // DPI_MapClientRequestsMapTiles, having type bool - ParameterId["MapClientRequestsMapTiles"] = "clientRequestsMapTiles"; - // DPI_MapHasValidLayer, having type bool - ParameterId["MapHasValidLayer"] = "mapHasValidLayer"; - // DPI_MapShowAttribution, having type bool - ParameterId["MapShowAttribution"] = "showAttribution"; - // DPI_MarkLabelsVisibilityChanged, having type bool - ParameterId["MarkLabelsVisibilityChanged"] = "markLabelsVisibilityChanged"; - // DPI_MembersLoaded, having type bool - ParameterId["MembersLoaded"] = "membersLoaded"; - // DPI_MinimizeNames, having type bool - ParameterId["MinimizeNames"] = "useMinNames"; - // DPI_MoveRefereceLineUp, having type bool - ParameterId["MoveRefereceLineUp"] = "moveReferenceLineUp"; - // DPI_MultiDataSources, having type bool - ParameterId["MultiDataSources"] = "multiDataSources"; - // DPI_NavArrowsVisible, having type bool - ParameterId["NavArrowsVisible"] = "navArrowsVisible"; - // DPI_OEMHasSplashScreen, having type bool - ParameterId["OEMHasSplashScreen"] = "oemHasSplashScreen"; - // DPI_OneWayBrushing, having type bool - ParameterId["OneWayBrushing"] = "oneWayBrushing"; - // DPI_OnlyAggregations, having type bool - ParameterId["OnlyAggregations"] = "onlyAggregations"; - // DPI_OverrideAllowed, having type bool - ParameterId["OverrideAllowed"] = "overrideAllowed"; - // DPI_OverrideStackDumper, having type bool - ParameterId["OverrideStackDumper"] = "overrideStackDumper"; - // DPI_PageAutoColorLines, having type bool - ParameterId["PageAutoColorLines"] = "autoColorLines"; - // DPI_PageAutoColorMarks, having type bool - ParameterId["PageAutoColorMarks"] = "autoColorMarks"; - // DPI_PageHistoryFade, having type bool - ParameterId["PageHistoryFade"] = "historyFade"; - // DPI_PercentageBands, having type bool - ParameterId["PercentageBands"] = "percentageBands"; - // DPI_PercentilesAllowed, having type bool - ParameterId["PercentilesAllowed"] = "percentilesAllowed"; - // DPI_PublishWithRemoteQueryAgent, having type bool - ParameterId["PublishWithRemoteQueryAgent"] = "publishWithRemoteQueryAgent"; - // DPI_PreviousSheet, having type bool - ParameterId["PreviousSheet"] = "previousSheet"; - // DPI_PromptDeleteSheetsWithVizInTooltip, having type bool - ParameterId["PromptDeleteSheetsWithVizInTooltip"] = "promptDeleteSheetsWithVizInTooltip"; - // DPI_QuantilesAllowed, having type bool - ParameterId["QuantilesAllowed"] = "quantilesAllowed"; - // DPI_RadialDistanceHitTest, having type bool - ParameterId["RadialDistanceHitTest"] = "radialDistanceHitTest"; - // DPI_RefLineSelected, having type bool - ParameterId["RefLineSelected"] = "refLineSelected"; - // DPI_RemovedSheets, having type bool - ParameterId["RemovedSheets"] = "removedSheets"; - // DPI_RenderImagesAsUrls, having type bool - ParameterId["RenderImagesAsUrls"] = "imagesAsUrls"; - // DPI_RenderOnTop, having type bool - ParameterId["RenderOnTop"] = "renderOnTop"; - // DPI_RepeatHeadersLegends, having type bool - ParameterId["RepeatHeadersLegends"] = "repeatHeadersLegends"; - // DPI_ReplaceActiveConfig, having type bool - ParameterId["ReplaceActiveConfig"] = "replaceActiveConfig"; - // DPI_ReplaceDatasourceAfterPublish, having type bool - ParameterId["ReplaceDatasourceAfterPublish"] = "replaceDatasourceAfterPublish"; - // DPI_ReplaceDatasourceFailed, having type bool - ParameterId["ReplaceDatasourceFailed"] = "replaceDatasourceFailed"; - // DPI_ReplaceTde, having type bool - ParameterId["ReplaceTde"] = "replaceTde"; - // DPI_RequireSelection, having type bool - ParameterId["RequireSelection"] = "requireSelection"; - // DPI_RequiresDBVariables, having type bool - ParameterId["RequiresDBVariables"] = "requiresDbVariables"; - // DPI_RequiresFieldList, having type bool - ParameterId["RequiresFieldList"] = "requiresFieldList"; - // DPI_RestartEveryFieldIsInvalid, having type bool - ParameterId["RestartEveryFieldIsInvalid"] = "restartEveryFieldIsInvalid"; - // DPI_RightJustify, having type bool - ParameterId["RightJustify"] = "rightJustify"; - // DPI_SaveEnabled, having type bool - ParameterId["SaveEnabled"] = "saveEnabled"; - // DPI_SavePasswordAllowed, having type bool - ParameterId["SavePasswordAllowed"] = "savePasswordAllowed"; - // DPI_ScopeIsolation, having type bool - ParameterId["ScopeIsolation"] = "scopeIsolation"; - // DPI_SelectionRequired, having type bool - ParameterId["SelectionRequired"] = "selectionRequired"; - // DPI_SendNotifications, having type bool - ParameterId["SendNotifications"] = "sendNotifications"; - // DPI_SetActive, having type bool - ParameterId["SetActive"] = "setActive"; - // DPI_SetDefaultSort, having type bool - ParameterId["SetDefaultSort"] = "setDefault"; - // DPI_SheetIsDashboard, having type bool - ParameterId["SheetIsDashboard"] = "isDashboard"; - // DPI_SheetIsStoryboard, having type bool - ParameterId["SheetIsStoryboard"] = "isStory"; - // DPI_ShouldAlwaysDisplayAlias, having type bool - ParameterId["ShouldAlwaysDisplayAlias"] = "shouldAlwaysDisplayAlias"; - // DPI_ShouldAutoCapture, having type bool - ParameterId["ShouldAutoCapture"] = "shouldAutoCapture"; - // DPI_ShouldAutoRevert, having type bool - ParameterId["ShouldAutoRevert"] = "shouldAutoRevert"; - // DPI_ShouldChangeUIMode, having type bool - ParameterId["ShouldChangeUIMode"] = "shouldChangeUiMode"; - // DPI_ShouldDisplay, having type bool - ParameterId["ShouldDisplay"] = "shouldDisplay"; - // DPI_ShouldDrill, having type bool - ParameterId["ShouldDrill"] = "shouldDrill"; - // DPI_ShouldForceConnectionAttempt, having type bool - ParameterId["ShouldForceConnectionAttempt"] = "shouldForceConnectionAttempt"; - // DPI_ShouldRefreshDS, having type bool - ParameterId["ShouldRefreshDS"] = "shouldRefreshDs"; - // DPI_ShouldScaleMarksInAxisUnits, having type bool - ParameterId["ShouldScaleMarksInAxisUnits"] = "shouldScaleMarksInAxisUnits"; - // DPI_ShouldSeedCredentials, having type bool - ParameterId["ShouldSeedCredentials"] = "shouldSeedCredentials"; - // DPI_ShouldShowDataSourceConnectionError, having type bool - ParameterId["ShouldShowDataSourceConnectionError"] = "shouldShowDataSourceConnectionError"; - // DPI_ShouldShowDistance, having type bool - ParameterId["ShouldShowDistance"] = "shouldShowDistance"; - // DPI_ShouldShowHiddenField, having type bool - ParameterId["ShouldShowHiddenField"] = "shouldShowHiddenField"; - // DPI_ShouldShowMapScale, having type bool - ParameterId["ShouldShowMapScale"] = "shouldShowMapScale"; - // DPI_ShouldURLEscape, having type bool - ParameterId["ShouldURLEscape"] = "shouldUrlEscape"; - // DPI_ShouldUpdateDomainInfo, having type bool - ParameterId["ShouldUpdateDomainInfo"] = "shouldUpdateDomInfo"; - // DPI_ShowAddToFilter, having type bool - ParameterId["ShowAddToFilter"] = "showAddToFilterButton"; - // DPI_ShowAliases, having type bool - ParameterId["ShowAliases"] = "showAliases"; - // DPI_ShowAllPages, having type bool - ParameterId["ShowAllPages"] = "showAllPages"; - // DPI_ShowApply, having type bool - ParameterId["ShowApply"] = "showApplyButton"; - // DPI_ShowApplyAndCancelButtons, having type bool - ParameterId["ShowApplyAndCancelButtons"] = "showApplyAndCancelButtons"; - // DPI_ShowAuthenticationOptions, having type bool - ParameterId["ShowAuthenticationOptions"] = "showAuthenticationOptions"; - // DPI_ShowAuthenticationSetting, having type bool - ParameterId["ShowAuthenticationSetting"] = "showAuthenticationSetting"; - // DPI_ShowAuto, having type bool - ParameterId["ShowAuto"] = "showAuto"; - // DPI_ShowBold, having type bool - ParameterId["ShowBold"] = "showBoldOption"; - // DPI_ShowButtons, having type bool - ParameterId["ShowButtons"] = "showButtons"; - // DPI_ShowCaption, having type bool - ParameterId["ShowCaption"] = "showCaption"; - // DPI_ShowColorLegend, having type bool - ParameterId["ShowColorLegend"] = "showColorLegend"; - // DPI_ShowDataGridInlineRename, having type bool - ParameterId["ShowDataGridInlineRename"] = "showDataGridInlineRename"; - // DPI_ShowDetailMessages, having type bool - ParameterId["ShowDetailMessages"] = "showDetailMessages"; - // DPI_ShowDate, having type bool - ParameterId["ShowDate"] = "showDate"; - // DPI_ShowDragLabel, having type bool - ParameterId["ShowDragLabel"] = "showDragLabel"; - // DPI_ShowDropMeasures, having type bool - ParameterId["ShowDropMeasures"] = "showDropMeasures"; - // DPI_ShowEmbedAll, having type bool - ParameterId["ShowEmbedAll"] = "showEmbedAll"; - // DPI_ShowEntireImage, having type bool - ParameterId["ShowEntireImage"] = "showEntireImage"; - // DPI_ShowExclude, having type bool - ParameterId["ShowExclude"] = "showExcludeButton"; - // DPI_ShowFloatingZoomToolbar, having type bool - ParameterId["ShowFloatingZoomToolbar"] = "showFloatingZoomToolbar"; - // DPI_ShowFormatter, having type bool - ParameterId["ShowFormatter"] = "showFormatter"; - // DPI_ShowFullSchedules, having type bool - ParameterId["ShowFullSchedules"] = "showFullSchedules"; - // DPI_ShowGeographicSearch, having type bool - ParameterId["ShowGeographicSearch"] = "showGeographicSearch"; - // DPI_ShowHiddenFields, having type bool - ParameterId["ShowHiddenFields"] = "showHiddenFields"; - // DPI_ShowHistoryControls, having type bool - ParameterId["ShowHistoryControls"] = "showHistoryControls"; - // DPI_ShowIncludeLocalFiles, having type bool - ParameterId["ShowIncludeLocalFiles"] = "showIncludeLocalFiles"; - // DPI_ShowIncludeOtherOption, having type bool - ParameterId["ShowIncludeOtherOption"] = "showIncludeOtherOption"; - // DPI_ShowIncludeSelections, having type bool - ParameterId["ShowIncludeSelections"] = "showIncludeSelections"; - // DPI_ShowIncrSchedules, having type bool - ParameterId["ShowIncrSchedules"] = "showIncrSchedules"; - // DPI_ShowInnerMostLevel, having type bool - ParameterId["ShowInnerMostLevel"] = "showInnermostLevel"; - // DPI_ShowItalics, having type bool - ParameterId["ShowItalics"] = "showItalicsOption"; - // DPI_ShowLegend, having type bool - ParameterId["ShowLegend"] = "showLegend"; - // DPI_ShowLockedPermissionsIcon, having type bool - ParameterId["ShowLockedPermissionsIcon"] = "showLockedPermissionsIcon"; - // DPI_ShowManageDatasources, having type bool - ParameterId["ShowManageDatasources"] = "showManageDatasources"; - // DPI_ShowMapLegend, having type bool - ParameterId["ShowMapLegend"] = "showMapLegend"; - // DPI_ShowMapScale, having type bool - ParameterId["ShowMapScale"] = "showMapScale"; - // DPI_ShowMappedFilterCols, having type bool - ParameterId["ShowMappedFilterCols"] = "showMappedFilterColumns"; - // DPI_ShowName, having type bool - ParameterId["ShowName"] = "showName"; - // DPI_ShowNone, having type bool - ParameterId["ShowNone"] = "showNone"; - // DPI_ShowPagePlayback, having type bool - ParameterId["ShowPagePlayback"] = "showPagePlayback"; - // DPI_ShowPageReadout, having type bool - ParameterId["ShowPageReadout"] = "showPageReadout"; - // DPI_ShowPageSlider, having type bool - ParameterId["ShowPageSlider"] = "showPageSlider"; - // DPI_ShowParent, having type bool - ParameterId["ShowParent"] = "showParent"; - // DPI_ShowPercentages, having type bool - ParameterId["ShowPercentages"] = "showPercentages"; - // DPI_ShowPredictionIntervals, having type bool - ParameterId["ShowPredictionIntervals"] = "showPredictionIntervals"; - // DPI_ShowPublishedDatasources, having type bool - ParameterId["ShowPublishedDatasources"] = "showPublishedDatasources"; - // DPI_ShowRelDatePicker, having type bool - ParameterId["ShowRelDatePicker"] = "showRelDatePicker"; - // DPI_ShowReplaceDatasource, having type bool - ParameterId["ShowReplaceDatasource"] = "showReplaceDatasource"; - // DPI_ShowSeparator, having type bool - ParameterId["ShowSeparator"] = "showSeparator"; - // DPI_ShowShapeLegend, having type bool - ParameterId["ShowShapeLegend"] = "showShapeLegend"; - // DPI_ShowSizeLegend, having type bool - ParameterId["ShowSizeLegend"] = "showSizeLegend"; - // DPI_ShowShelf, having type bool - ParameterId["ShowShelf"] = "showShelf"; - // DPI_ShowStructure, having type bool - ParameterId["ShowStructure"] = "showStructure"; - // DPI_ShowSyncClientOptions, having type bool - ParameterId["ShowSyncClientOptions"] = "showSyncClientOptions"; - // DPI_ShowTabsAllowed, having type bool - ParameterId["ShowTabsAllowed"] = "showTabsAllowed"; - // DPI_ShowTime, having type bool - ParameterId["ShowTime"] = "showTime"; - // DPI_ShowTitle, having type bool - ParameterId["ShowTitle"] = "showTitle"; - // DPI_ShowTransSlider, having type bool - ParameterId["ShowTransSlider"] = "showTransparencySlider"; - // DPI_ShowUnderline, having type bool - ParameterId["ShowUnderline"] = "showUnderlineOption"; - // DPI_ShowUserThumbnailOptions, having type bool - ParameterId["ShowUserThumbnailOptions"] = "showUserThumbnailOptions"; - // DPI_ShowView, having type bool - ParameterId["ShowView"] = "showView"; - // DPI_ShowViews, having type bool - ParameterId["ShowViews"] = "showViews"; - // DPI_ShowingPageLoadError, having type bool - ParameterId["ShowingPageLoadError"] = "showingPageLoadError"; - // DPI_SupressAliases, having type bool - ParameterId["SupressAliases"] = "suspressAliases"; - // DPI_SupressThousandsSeparator, having type bool - ParameterId["SupressThousandsSeparator"] = "supressThousandsSeparator"; - // DPI_SingleSelectOnly, having type bool - ParameterId["SingleSelectOnly"] = "singleSelectOnly"; - // DPI_SkipIfActive, having type bool - ParameterId["SkipIfActive"] = "skipIfActive"; - // DPI_SkipRefresh, having type bool - ParameterId["SkipRefresh"] = "skipRefresh"; - // DPI_SkipValidation, having type bool - ParameterId["SkipValidation"] = "skipValidation"; - // DPI_Skipped, having type bool - ParameterId["Skipped"] = "skipped"; - // DPI_SortFieldIsInvalid, having type bool - ParameterId["SortFieldIsInvalid"] = "sortFieldIsInvalid"; - // DPI_SortModeIsAuto, having type bool - ParameterId["SortModeIsAuto"] = "sortModeIsAuto"; - // DPI_SplitOnEdgeSnap, having type bool - ParameterId["SplitOnEdgeSnap"] = "splitOnEdgeSnap"; - // DPI_StandardDeviationAllowed, having type bool - ParameterId["StandardDeviationAllowed"] = "standardDeviationAllowed"; - // DPI_State, having type bool - ParameterId["State"] = "state"; - // DPI_StoredProcDisabled, having type bool - ParameterId["StoredProcDisabled"] = "storedProcDisabled"; - // DPI_StoredProcsDropable, having type bool - ParameterId["StoredProcsDropable"] = "storedProcsDropable"; - // DPI_StoryIsEmpty, having type bool - ParameterId["StoryIsEmpty"] = "storyIsEmpty"; - // DPI_StoryPointIsEmpty, having type bool - ParameterId["StoryPointIsEmpty"] = "storyPointIsEmpty"; - // DPI_SuccessfulSave, having type bool - ParameterId["SuccessfulSave"] = "successfulSave"; - // DPI_SupportXAxis, having type bool - ParameterId["SupportXAxis"] = "supportXAxis"; - // DPI_SupportYAxis, having type bool - ParameterId["SupportYAxis"] = "supportYAxis"; - // DPI_SupportsCenterAlignment, having type bool - ParameterId["SupportsCenterAlignment"] = "supportsCenterAlignment"; - // DPI_SupportsDBFilters, having type bool - ParameterId["SupportsDBFilters"] = "supportsDatabaseFilters"; - // DPI_SupportsMultipleValues, having type bool - ParameterId["SupportsMultipleValues"] = "supportsMultipleValues"; - // DPI_SupportsRightAlignment, having type bool - ParameterId["SupportsRightAlignment"] = "supportsRightAlignment"; - // DPI_SupportsTableFilters, having type bool - ParameterId["SupportsTableFilters"] = "supportsTableFilters"; - // DPI_Symmetric, having type bool - ParameterId["Symmetric"] = "symmetric"; - // DPI_SyncAutomaticDrill, having type bool - ParameterId["SyncAutomaticDrill"] = "syncAutomaticDrill"; - // DPI_TabsAllowed, having type bool - ParameterId["TabsAllowed"] = "tabsAllowed"; - // DPI_TextDropdownState, having type bool - ParameterId["TextDropdownState"] = "toggleState"; - // DPI_TitleInline, having type bool - ParameterId["TitleInline"] = "titleInline"; - // DPI_ToggleHighlightStateChanged, having type bool - ParameterId["ToggleHighlightStateChanged"] = "toggleHighlight"; - // DPI_Transformed80Format, having type bool - ParameterId["Transformed80Format"] = "oldFormat"; - // DPI_TrendLineSelected, having type bool - ParameterId["TrendLineSelected"] = "trendLineSelected"; - // DPI_TruncDate, having type bool - ParameterId["TruncDate"] = "truncDate"; - // DPI_TupleSelected, having type bool - ParameterId["TupleSelected"] = "tupleSelected"; - // DPI_UIAutomationDidPageLoad, having type bool - ParameterId["UIAutomationDidPageLoad"] = "uiAutomationDidPageLoad"; - // DPI_UIAutomationIsChecked, having type bool - ParameterId["UIAutomationIsChecked"] = "uiAutomationIsChecked"; - // DPI_UIAutomationIsEnabled, having type bool - ParameterId["UIAutomationIsEnabled"] = "uiAutomationIsEnabled"; - // DPI_UIAutomationIsEventProcessed, having type bool - ParameterId["UIAutomationIsEventProcessed"] = "uiAutomationIsEventProcessed"; - // DPI_UIAutomationIsFocused, having type bool - ParameterId["UIAutomationIsFocused"] = "uiAutomationIsFocused"; - // DPI_UIAutomationIsFound, having type bool - ParameterId["UIAutomationIsFound"] = "uiAutomationIsFound"; - // DPI_UIAutomationIsReadonly, having type bool - ParameterId["UIAutomationIsReadonly"] = "uiAutomationIsReadonly"; - // DPI_UIAutomationIsSelected, having type bool - ParameterId["UIAutomationIsSelected"] = "uiAutomationIsSelected"; - // DPI_UpdateAllPanes, having type bool - ParameterId["UpdateAllPanes"] = "updateAllPanes"; - // DPI_UpdateDSCaptionOnly, having type bool - ParameterId["UpdateDSCaptionOnly"] = "updateDsCaptionOnly"; - // DPI_UpdateModelFromParams, having type bool - ParameterId["UpdateModelFromParams"] = "updateModelFromParams"; - // DPI_UpdateShelves, having type bool - ParameterId["UpdateShelves"] = "updateShelves"; - // DPI_UpdatesUseContext, having type bool - ParameterId["UpdatesUseContext"] = "updatesUseContext"; - // DPI_UpgradeDocumentVersion, having type bool - ParameterId["UpgradeDocumentVersion"] = "upgradeDocumentVersion"; - // DPI_UseAliases, having type bool - ParameterId["UseAliases"] = "useAliases"; - // DPI_UseBlankForNull, having type bool - ParameterId["UseBlankForNull"] = "useBlankForNull"; - // DPI_UseCalculationEditor, having type bool - ParameterId["UseCalculationEditor"] = "useCalculationEditor"; - // DPI_UseCenterValue, having type bool - ParameterId["UseCenterValue"] = "useCenterValue"; - // DPI_UseColor, having type bool - ParameterId["UseColor"] = "useColor"; - // DPI_UseCustomMarkSize, having type bool - ParameterId["UseCustomMarkSize"] = "useCustomMarkSize"; - // DPI_UseDarkIcons, having type bool - ParameterId["UseDarkIcons"] = "useDarkIcons"; - // DPI_UseDataStoreMinfiedNames, having type bool - ParameterId["UseDataStoreMinfiedNames"] = "useDatastoreMinNames"; - // DPI_UseInitialDomainType, having type bool - ParameterId["UseInitialDomainType"] = "useInitialDomainType"; - // DPI_UseEndValue, having type bool - ParameterId["UseEndValue"] = "useEndValue"; - // DPI_UseForOverlayHitTest, having type bool - ParameterId["UseForOverlayHitTest"] = "useForOverlayHitTest"; - // DPI_UseFullColorRange, having type bool - ParameterId["UseFullColorRange"] = "useFullColorRange"; - // DPI_UseFullDomain, having type bool - ParameterId["UseFullDomain"] = "useFullDomain"; - // DPI_UseInlineImages, having type bool - ParameterId["UseInlineImages"] = "useInlineImages"; - // DPI_UseMeasures, having type bool - ParameterId["UseMeasures"] = "useMeasures"; - // DPI_UseNewQuickFilters, having type bool - ParameterId["UseNewQuickFilters"] = "useNewQuickFilters"; - // DPI_UseNotificationReturn, having type bool - ParameterId["UseNotificationReturn"] = "useNotificationReturn"; - // DPI_UseParameters, having type bool - ParameterId["UseParameters"] = "useParameters"; - // DPI_UseSelector, having type bool - ParameterId["UseSelector"] = "useSelector"; - // DPI_UseSignificantDigits, having type bool - ParameterId["UseSignificantDigits"] = "useSignificantDigits"; - // DPI_UseSpecialStrings, having type bool - ParameterId["UseSpecialStrings"] = "useSpecialStrings"; - // DPI_UseStartValue, having type bool - ParameterId["UseStartValue"] = "useStartValue"; - // DPI_UseTabs, having type bool - ParameterId["UseTabs"] = "useTabs"; - // DPI_UseTabletAsDefaultPreview, having type bool - ParameterId["UseTabletAsDefaultPreview"] = "useTabletAsDefaultPreview"; - // DPI_UseTargetPt, having type bool - ParameterId["UseTargetPt"] = "useTargetPoint"; - // DPI_UseUSLocale, having type bool - ParameterId["UseUSLocale"] = "useUsLocale"; - // DPI_UseYAxis, having type bool - ParameterId["UseYAxis"] = "useYAxis"; - // DPI_Valid, having type bool - ParameterId["Valid"] = "valid"; - // DPI_VizDataV82, having type bool - ParameterId["VizDataV82"] = "vizData82"; - // DPI_WMSConnectionSuccessful, having type bool - ParameterId["WMSConnectionSuccessful"] = "wmsConnectionSuccessful"; - // DPI_WMSShouldUseTiles, having type bool - ParameterId["WMSShouldUseTiles"] = "wmsShouldUseTiles"; - // DPI_WantDomain, having type bool - ParameterId["WantDomain"] = "wantDomain"; - // DPI_WorkbookModified, having type bool - ParameterId["WorkbookModified"] = "workbookModified"; - // DPI_ZoomIn, having type bool - ParameterId["ZoomIn"] = "zoomIn"; - // DPI_ShowMarkLabels, having type bool - ParameterId["ShowMarkLabels"] = "showMarkLabels"; - // DPI_HasDuplicates, having type bool - ParameterId["HasDuplicates"] = "hasDuplicates"; - // DPI_HasUserDefinedIncrement, having type bool - ParameterId["HasUserDefinedIncrement"] = "hasUserDefinedIncrement"; - // DPI_HasUserDefinedMax, having type bool - ParameterId["HasUserDefinedMax"] = "hasUserDefinedMax"; - // DPI_HasUserDefinedMin, having type bool - ParameterId["HasUserDefinedMin"] = "hasUserDefinedMin"; - // DPI_IsDuplicate, having type bool - ParameterId["IsDuplicate"] = "isDuplicate"; - // DPI_IsEditingValue, having type bool - ParameterId["IsEditingValue"] = "isEditingValue"; - // DPI_ShouldRestrictDataType, having type bool - ParameterId["ShouldRestrictDataType"] = "restrictDataType"; - // DPI_EnableIncludeZero, having type bool - ParameterId["EnableIncludeZero"] = "enableIncludeZero"; - // DPI_EnableSyncDualAxes, having type bool - ParameterId["EnableSyncDualAxes"] = "enableSynchronizeDualAxes"; - // DPI_EnableShowTimes, having type bool - ParameterId["EnableShowTimes"] = "enableShowTimes"; - // DPI_EnableTickMarksTab, having type bool - ParameterId["EnableTickMarksTab"] = "enableTickMarksTab"; - // DPI_IsTemporal, having type bool - ParameterId["IsTemporal"] = "isTemporal"; - // DPI_ShouldIncludeZero, having type bool - ParameterId["ShouldIncludeZero"] = "shouldIncludeZero"; - // DPI_ShouldReverseAxis, having type bool - ParameterId["ShouldReverseAxis"] = "shouldReverseAxis"; - // DPI_ShouldShowTimes, having type bool - ParameterId["ShouldShowTimes"] = "shouldShowTimes"; - // DPI_UseAutomaticAxisSubtitle, having type bool - ParameterId["UseAutomaticAxisSubtitle"] = "useAutomaticSubtitle"; - // DPI_UseAutomaticAxisTitle, having type bool - ParameterId["UseAutomaticAxisTitle"] = "useAutomaticTitle"; - // DPI_AllSelected, having type bool - ParameterId["AllSelected"] = "allSelected"; - // DPI_AutoCommit, having type bool - ParameterId["AutoCommit"] = "autoCommit"; - // DPI_CacheOnly, having type bool - ParameterId["CacheOnly"] = "cacheOnly"; - // DPI_IncludeData, having type bool - ParameterId["IncludeData"] = "includeData"; - // DPI_IsPatternExclusive, having type bool - ParameterId["IsPatternExclusive"] = "isPatternExclusive"; - // DPI_IsSearchable, having type bool - ParameterId["IsSearchable"] = "isSearchable"; - // DPI_IsSelectionExclusive, having type bool - ParameterId["IsSelectionExclusive"] = "isSelectionExclusive"; - // DPI_ResetNewFilter, having type bool - ParameterId["ResetNewFilter"] = "resetNewFilter"; - // DPI_UseAllWhenManualEmpty, having type bool - ParameterId["UseAllWhenManualEmpty"] = "useAllWhenManualEmpty"; - // DPI_UseAllWhenPatternEmpty, having type bool - ParameterId["UseAllWhenPatternEmpty"] = "useAllWhenPatternEmpty"; - // DPI_GroupByDrillDown, having type bool - ParameterId["GroupByDrillDown"] = "groupByDrillDown"; - // DPI_GroupByTable, having type bool - ParameterId["GroupByTable"] = "groupByTable"; - // DPI_IncludeGroups, having type bool - ParameterId["IncludeGroups"] = "includeGroups"; - // DPI_IncludePendingState, having type bool - ParameterId["IncludePendingState"] = "includePendingState"; - // DPI_IncludeFieldMenus, having type bool - ParameterId["IncludeFieldMenus"] = "includeFieldMenus"; - // DPI_IncludeFormattedValues, having type bool - ParameterId["IncludeFormattedValues"] = "includeFormattedValues"; - // DPI_IncludeColumnInstances, having type bool - ParameterId["IncludeColumnInstances"] = "includeColumnInstances"; - // DPI_IncludeAdHocCalcs, having type bool - ParameterId["IncludeAdHocCalcs"] = "includeAdhocCalcs"; - // DPI_IncludeHiddenInvalidFields, having type bool - ParameterId["IncludeHiddenInvalidFields"] = "includeHiddenInvalidFields"; - // DPI_IncludeNonExtractedColumns, having type bool - ParameterId["IncludeNonExtractedColumns"] = "includeNonExtractedColumns"; - // DPI_IncludeCalculatedFieldFormulas, having type bool - ParameterId["IncludeCalculatedFieldFormulas"] = "includeCalculatedFieldFormulas"; - // DPI_SetDataPreviewCustomFieldOrder, having type bool - ParameterId["SetDataPreviewCustomFieldOrder"] = "setDataPreviewCustomFieldOrder"; - // DPI_CustomSplitAllowSplitFromRight, having type bool - ParameterId["CustomSplitAllowSplitFromRight"] = "customSplitAllowSplitFromRight"; - // DPI_IsChanged, having type bool - ParameterId["IsChanged"] = "isChanged"; - // DPI_ShowFontColorPicker, having type bool - ParameterId["ShowFontColorPicker"] = "showFontColorPicker"; - // DPI_ShowFontFamilyPicker, having type bool - ParameterId["ShowFontFamilyPicker"] = "showFontFamilyPicker"; - // DPI_ShowFontSizePicker, having type bool - ParameterId["ShowFontSizePicker"] = "showFontSizePicker"; - // DPI_ShowFontStyleButtons, having type bool - ParameterId["ShowFontStyleButtons"] = "showFontStyleButtons"; - // DPI_ShowLineForAll, having type bool - ParameterId["ShowLineForAll"] = "showLineForAll"; - // DPI_ShowLineForColumn, having type bool - ParameterId["ShowLineForColumn"] = "showLineForColumn"; - // DPI_ShowLineForRow, having type bool - ParameterId["ShowLineForRow"] = "showLineForRow"; - // DPI_ShowLinePatternPicker, having type bool - ParameterId["ShowLinePatternPicker"] = "showLinePatternPicker"; - // DPI_ShowLineTransparency, having type bool - ParameterId["ShowLineTransparency"] = "showLineTransparency"; - // DPI_ShowLineWidthPicker, having type bool - ParameterId["ShowLineWidthPicker"] = "showLineWidthPicker"; - // DPI_CanBeAuto, having type bool - ParameterId["CanBeAuto"] = "canBeAuto"; - // DPI_CanBeNone, having type bool - ParameterId["CanBeNone"] = "canBeNone"; - // DPI_CanMatchMarkColor, having type bool - ParameterId["CanMatchMarkColor"] = "canMatchMarkColor"; - // DPI_HasOpacity, having type bool - ParameterId["HasOpacity"] = "hasOpacity"; - // DPI_IncludeAllHidden, having type bool - ParameterId["IncludeAllHidden"] = "includeAllHidden"; - // DPI_IncludeCurrent, having type bool - ParameterId["IncludeCurrent"] = "includeCurrent"; - // DPI_IsIncluded, having type bool - ParameterId["IsIncluded"] = "isIncluded"; - // DPI_IsRelative, having type bool - ParameterId["IsRelative"] = "isRelative"; - // DPI_IsSecondaryAllowed, having type bool - ParameterId["IsSecondaryAllowed"] = "isSecondaryAllowed"; - // DPI_NullIfIncomplete, having type bool - ParameterId["NullIfIncomplete"] = "nullIfIncomplete"; - // DPI_IsCalcAssistanceEnabled, having type bool - ParameterId["IsCalcAssistanceEnabled"] = "isCalcAssistanceEnabled"; - // DPI_UseSecondaryCalc, having type bool - ParameterId["UseSecondaryCalc"] = "useSecondaryCalc"; - // DPI_CanLoad, having type bool - ParameterId["CanLoad"] = "canLoad"; - // DPI_DescriptionOnly, having type bool - ParameterId["DescriptionOnly"] = "descriptionOnly"; - // DPI_AreAliasesSupported, having type bool - ParameterId["AreAliasesSupported"] = "areAliasesSupported"; - // DPI_AreRefColumnsSupported, having type bool - ParameterId["AreRefColumnsSupported"] = "areRefColumnsSupported"; - // DPI_IsAggregated, having type bool - ParameterId["IsAggregated"] = "isAggregated"; - // DPI_IsExportSupported, having type bool - ParameterId["IsExportSupported"] = "isExportSupported"; - // DPI_IsMeasureNames, having type bool - ParameterId["IsMeasureNames"] = "isMeasureNames"; - // DPI_IsSummarySupported, having type bool - ParameterId["IsSummarySupported"] = "isSummarySupported"; - // DPI_IsTopNSupported, having type bool - ParameterId["IsTopNSupported"] = "isTopNSupported"; - // DPI_IsUnderlyingSupported, having type bool - ParameterId["IsUnderlyingSupported"] = "isUnderlyingSupported"; - // DPI_OnlyExportSummary, having type bool - ParameterId["OnlyExportSummary"] = "onlyExportSummary"; - // DPI_ShowAllFields, having type bool - ParameterId["ShowAllFields"] = "showAllFields"; - // DPI_UseTablePtrs, having type bool - ParameterId["UseTablePtrs"] = "useTablePtrs"; - // DPI_OnlyFetchSummary, having type bool - ParameterId["OnlyFetchSummary"] = "onlyFetchSummary"; - // DPI_IsDeviceLayoutCustomized, having type bool - ParameterId["IsDeviceLayoutCustomized"] = "isDeviceLayoutCustomized"; - // DPI_IsDeviceSizeCustomized, having type bool - ParameterId["IsDeviceSizeCustomized"] = "isDeviceSizeCustomized"; - // DPI_IsDeviceSupportedByMobileApp, having type bool - ParameterId["IsDeviceSupportedByMobileApp"] = "isDeviceSupportedByMobileApp"; - // DPI_IsPortrait, having type bool - ParameterId["IsPortrait"] = "isPortrait"; - // DPI_IsPortraitByDefault, having type bool - ParameterId["IsPortraitByDefault"] = "isPortraitByDefault"; - // DPI_IsUserCustomFormat, having type bool - ParameterId["IsUserCustomFormat"] = "isUserCustomFormat"; - // DPI_ShouldDisplayRebuildExtractMessage, having type bool - ParameterId["ShouldDisplayRebuildExtractMessage"] = "shouldDisplayRebuildExtractMessage"; - // DPI_SupportsCustomStartOfWeek, having type bool - ParameterId["SupportsCustomStartOfWeek"] = "supportsCustomStartOfWeek"; - // DPI_NeedsConnectPrompt, having type bool - ParameterId["NeedsConnectPrompt"] = "needsConnectPrompt"; - // DPI_NeedsCloseDataSourceErrorPrompt, having type bool - ParameterId["NeedsCloseDataSourceErrorPrompt"] = "needsCloseDsErrorPrompt"; - // DPI_ClearCurrentSelection, having type bool - ParameterId["ClearCurrentSelection"] = "clearCurrentSelection"; - // DPI_HasContains, having type bool - ParameterId["HasContains"] = "hasContains"; - // DPI_HasEndsWith, having type bool - ParameterId["HasEndsWith"] = "hasEndsWith"; - // DPI_HasReplaceSelection, having type bool - ParameterId["HasReplaceSelection"] = "hasReplaceSelection"; - // DPI_HasStartsWith, having type bool - ParameterId["HasStartsWith"] = "hasStartsWith"; - // DPI_IsLeafSelectionOnly, having type bool - ParameterId["IsLeafSelectionOnly"] = "isLeafSelectionOnly"; - // DPI_ReplaceSelection, having type bool - ParameterId["ReplaceSelection"] = "replaceSelection"; - // DPI_IsColorPaletteCustomized, having type bool - ParameterId["IsColorPaletteCustomized"] = "isColorPaletteCustomized"; - // DPI_ReversePaletteOrder, having type bool - ParameterId["ReversePaletteOrder"] = "reversePaletteOrder"; - // DPI_TriedToConnect, having type bool - ParameterId["TriedToConnect"] = "triedToConnect"; - // DPI_ScaleMarksInAxisUnits, having type bool - ParameterId["ScaleMarksInAxisUnits"] = "scaleMarksInAxisUnits"; - // DPI_ShowMarkSizingOptions, having type bool - ParameterId["ShowMarkSizingOptions"] = "showMarkSizingOptions"; - // DPI_UseSizeFieldCaption, having type bool - ParameterId["UseSizeFieldCaption"] = "useSizeFieldCaption"; - // DPI_IsLicensedAndRegistered, having type bool - ParameterId["IsLicensedAndRegistered"] = "isLicensedAndRegistered"; - // DPI_SetNewDatasourceActive, having type bool - ParameterId["SetNewDatasourceActive"] = "setNewDatasourceActive"; - // DPI_AllowCustomLabel, having type bool - ParameterId["AllowCustomLabel"] = "allowCustomLabel"; - // DPI_IsMostRecentModeValid, having type bool - ParameterId["IsMostRecentModeValid"] = "isMostRecentModeValid"; - // DPI_MustShowLabels, having type bool - ParameterId["MustShowLabels"] = "mustShowLabels"; - // DPI_ShowRunningOrderLabels, having type bool - ParameterId["ShowRunningOrderLabels"] = "showRunningOrderLabels"; - // DPI_IsDroppedFile, having type bool - ParameterId["IsDroppedFile"] = "isDroppedFile"; - // DPI_IsInitialized, having type bool - ParameterId["IsInitialized"] = "isInitialized"; - // DPI_IncludeDashboard, having type bool - ParameterId["IncludeDashboard"] = "includeDashboard"; - // DPI_ChildrenCanResize, having type bool - ParameterId["ChildrenCanResize"] = "childrenCanResize"; - // DPI_BoolMap, having type Dictionary(of bool) - ParameterId["BoolMap"] = "boolMap"; - // DPI_CheckedMenuItems, having type bool[] - ParameterId["CheckedMenuItems"] = "checkedMenuItems"; - // DPI_IncludedSheetValues, having type bool[] - ParameterId["IncludedSheetValues"] = "includedSheetValues"; - // DPI_SortOrderVector, having type bool[] - ParameterId["SortOrderVector"] = "sortOrderVector"; - // DPI_ActionName, having type string - ParameterId["ActionName"] = "actionName"; - // DPI_ActionSourceText, having type string - ParameterId["ActionSourceText"] = "actionSourceText"; - // DPI_ActionTypeAsString, having type string - ParameterId["ActionTypeAsString"] = "actionTypeAsString"; - // DPI_ActiveTab, having type string - ParameterId["ActiveTab"] = "active_tab"; - // DPI_AddInFeatureName, having type string - ParameterId["AddInFeatureName"] = "addInFeatureName"; - // DPI_AddInId, having type string - ParameterId["AddInId"] = "addInId"; - // DPI_AddInstanceId, having type string - ParameterId["AddInstanceId"] = "addInInstanceId"; - // DPI_AddInName, having type string - ParameterId["AddInName"] = "addInName"; - // DPI_AddInLocale, having type string - ParameterId["AddInLocale"] = "addInLocale"; - // DPI_AddInLanguage, having type string - ParameterId["AddInLanguage"] = "addInLanguage"; - // DPI_APIVersion, having type string - ParameterId["APIVersion"] = "apiVersion"; - // DPI_Alias, having type string - ParameterId["Alias"] = "alias"; - // DPI_AnchorDate, having type string - ParameterId["AnchorDate"] = "anchorDate"; - // DPI_AnnotationRes, having type string - ParameterId["AnnotationRes"] = "annotationRes"; - // DPI_ReadId, having type string - ParameterId["ReadId"] = "readId"; - // DPI_AnnotationText, having type string - ParameterId["AnnotationText"] = "annotationText"; - // DPI_ArchiveDirectory, having type string - ParameterId["ArchiveDirectory"] = "archiveDirectory"; - // DPI_ArchiveFullPath, having type string - ParameterId["ArchiveFullPath"] = "archiveFullPath"; - // DPI_AtTheLevelInvalidFieldCaption, having type string - ParameterId["AtTheLevelInvalidFieldCaption"] = "atTheLevelInvalidFieldCaption"; - // DPI_AutoCompleteSubstring, having type string - ParameterId["AutoCompleteSubstring"] = "acSubstring"; - // DPI_AutosaveFileId, having type string - ParameterId["AutosaveFileId"] = "autosaveFileId"; - // DPI_AutosaveTimerInterval, having type string - ParameterId["AutosaveTimerInterval"] = "autosaveTimerInterval"; - // DPI_BaseColumnCaption, having type string - ParameterId["BaseColumnCaption"] = "baseColumnCaption"; - // DPI_ClearButtonText, having type string - ParameterId["ClearButtonText"] = "clearButtonText"; - // DPI_ColorPaletteId, having type string - ParameterId["ColorPaletteId"] = "colorPaletteId"; - // DPI_ColorPaletteName, having type string - ParameterId["ColorPaletteName"] = "colorPaletteName"; - // DPI_ColorSwatch, having type string - ParameterId["ColorSwatch"] = "colorSwatch"; - // DPI_CommandName, having type string - ParameterId["CommandName"] = "commandName"; - // DPI_ConfidenceLevelValue, having type string - ParameterId["ConfidenceLevelValue"] = "confidenceLevelValue"; - // DPI_CountDistinctStr, having type string - ParameterId["CountDistinctStr"] = "countDistinctStr"; - // DPI_CrossTabFilepath, having type string - ParameterId["CrossTabFilepath"] = "crossTabFilepath"; - // DPI_CSSMargin, having type string - ParameterId["CSSMargin"] = "cssMargin"; - // DPI_CSSWhitespace, having type string - ParameterId["CSSWhitespace"] = "cssWhitespace"; - // DPI_DBPassword, having type string - ParameterId["DBPassword"] = "dbPassword"; - // DPI_DBUsername, having type string - ParameterId["DBUsername"] = "dbUsername"; - // DPI_DataAlertConditionText, having type string - ParameterId["DataAlertConditionText"] = "dataAlertConditionText"; - // DPI_DataAlertMeasureText, having type string - ParameterId["DataAlertMeasureText"] = "dataAlertMeasureText"; - // DPI_DataAlertSpecSerializedText, having type string - ParameterId["DataAlertSpecSerializedText"] = "dataAlertSpecSerializedText"; - // DPI_DataAlertDefaultSubject, having type string - ParameterId["DataAlertDefaultSubject"] = "dataAlertDefaultSubject"; - // DPI_DataAlertThresholdText, having type string - ParameterId["DataAlertThresholdText"] = "dataAlertThresholdText"; - // DPI_DataGridSortColumnName, having type string - ParameterId["DataGridSortColumnName"] = "datagridSortColumnName"; - // DPI_DataServerConnectionError, having type string - ParameterId["DataServerConnectionError"] = "dataServerConnectionError"; - // DPI_DatabaseFilter, having type string - ParameterId["DatabaseFilter"] = "databaseFilter"; - // DPI_DatabaseFilterPrompt, having type string - ParameterId["DatabaseFilterPrompt"] = "databaseFilterPrompt"; - // DPI_DatasourceRanking, having type string - ParameterId["DatasourceRanking"] = "datasourceRanking"; - // DPI_DatasourceUrl, having type string - ParameterId["DatasourceUrl"] = "datasourceUrl"; - // DPI_DatasourceUsername, having type string - ParameterId["DatasourceUsername"] = "datasourceUsername"; - // DPI_DateFormat, having type string - ParameterId["DateFormat"] = "dateFormat"; - // DPI_DatePart, having type string - ParameterId["DatePart"] = "datePart"; - // DPI_DatePartAbbrev, having type string - ParameterId["DatePartAbbrev"] = "datePartAbbrev"; - // DPI_DefaultHierarchyName, having type string - ParameterId["DefaultHierarchyName"] = "defaultHierarchyName"; - // DPI_DefaultMenuItemKey, having type string - ParameterId["DefaultMenuItemKey"] = "defaultMenuItemKey"; - // DPI_Delimiter, having type string - ParameterId["Delimiter"] = "delimiter"; - // DPI_DeviceName, having type string - ParameterId["DeviceName"] = "deviceName"; - // DPI_DeviceType, having type string - ParameterId["DeviceType"] = "deviceType"; - // DPI_DisplayPath, having type string - ParameterId["DisplayPath"] = "displayPath"; - // DPI_DistributionValueString, having type string - ParameterId["DistributionValueString"] = "distributionValueString"; - // DPI_DrillPathName, having type string - ParameterId["DrillPathName"] = "drillPathName"; - // DPI_EmbeddedTitle, having type string - ParameterId["EmbeddedTitle"] = "embeddedTitle"; - // DPI_EnterValueText, having type string - ParameterId["EnterValueText"] = "enterValueText"; - // DPI_EscapeString, having type string - ParameterId["EscapeString"] = "escapeString"; - // DPI_ExtSvcConfigHost, having type string - ParameterId["ExtSvcConfigHost"] = "extSvcConfigHost"; - // DPI_ExtSvcConfigPassword, having type string - ParameterId["ExtSvcConfigPassword"] = "extSvcConfigPassword"; - // DPI_ExtSvcConfigPort, having type string - ParameterId["ExtSvcConfigPort"] = "extSvcConfigPort"; - // DPI_ExtSvcConfigConnectTimeout, having type string - ParameterId["ExtSvcConfigConnectTimeout"] = "extSvcConnectTimeout"; - // DPI_ExtSvcConfigPrevHost, having type string - ParameterId["ExtSvcConfigPrevHost"] = "extSvcConfigPrevHost"; - // DPI_ExtSvcConfigUsername, having type string - ParameterId["ExtSvcConfigUsername"] = "extSvcConfigUsername"; - // DPI_ExtractUpdateTime, having type string - ParameterId["ExtractUpdateTime"] = "extractUpdateTime"; - // DPI_FieldFolderName, having type string - ParameterId["FieldFolderName"] = "fieldFolderName"; - // DPI_FieldNameString, having type string - ParameterId["FieldNameString"] = "fieldName"; - // DPI_FilterSearchDomain, having type string - ParameterId["FilterSearchDomain"] = "filterSearchDomain"; - // DPI_FilterSpec, having type string - ParameterId["FilterSpec"] = "filterSpec"; - // DPI_FirstValue, having type string - ParameterId["FirstValue"] = "firstValue"; - // DPI_FolderName, having type string - ParameterId["FolderName"] = "folderName"; - // DPI_FontName, having type string - ParameterId["FontName"] = "fontName"; - // DPI_FormatString, having type string - ParameterId["FormatString"] = "formatString"; - // DPI_FormattedDisplayString, having type string - ParameterId["FormattedDisplayString"] = "formattedDisplayString"; - // DPI_FormattedIncrementValue, having type string - ParameterId["FormattedIncrementValue"] = "formattedIncrement"; - // DPI_FormattedMaxValue, having type string - ParameterId["FormattedMaxValue"] = "formattedMax"; - // DPI_FormattedMinValue, having type string - ParameterId["FormattedMinValue"] = "formattedMin"; - // DPI_FormattedValue, having type string - ParameterId["FormattedValue"] = "formattedValue"; - // DPI_FormattedCenterValue, having type string - ParameterId["FormattedCenterValue"] = "formattedCenter"; - // DPI_FormattedEndValue, having type string - ParameterId["FormattedEndValue"] = "formattedEnd"; - // DPI_FormattedStartValue, having type string - ParameterId["FormattedStartValue"] = "formattedStart"; - // DPI_PairedFormattedValue, having type string - ParameterId["PairedFormattedValue"] = "pairedFormattedValue"; - // DPI_FrameAttributes, having type string - ParameterId["FrameAttributes"] = "frameAttr"; - // DPI_GUID, having type string - ParameterId["GUID"] = "guid"; - // DPI_GeographicSearchCandidateDisplayName, having type string - ParameterId["GeographicSearchCandidateDisplayName"] = "geographicSearchCandidateDisplayName"; - // DPI_GeographicSearchCandidateParentName, having type string - ParameterId["GeographicSearchCandidateParentName"] = "geographicSearchCandidateParentName"; - // DPI_GeographicSearchCandidateType, having type string - ParameterId["GeographicSearchCandidateType"] = "geographicSearchCandidateType"; - // DPI_GeographicSearchLocale, having type string - ParameterId["GeographicSearchLocale"] = "geographicSearchLocale"; - // DPI_GeographicSearchQueryString, having type string - ParameterId["GeographicSearchQueryString"] = "geographicSearchSearchString"; - // DPI_GeographicSearchUILocale, having type string - ParameterId["GeographicSearchUILocale"] = "geographicSearchUilocale"; - // DPI_IconRes, having type string - ParameterId["IconRes"] = "iconRes"; - // DPI_ImageHash, having type string - ParameterId["ImageHash"] = "imageHash"; - // DPI_ImageName, having type string - ParameterId["ImageName"] = "imageName"; - // DPI_ImageRes, having type string - ParameterId["ImageRes"] = "imageRes"; - // DPI_IncludesSiblingsPrompt, having type string - ParameterId["IncludesSiblingsPrompt"] = "includesSiblingsPrompt"; - // DPI_IncludesSubfoldersPrompt, having type string - ParameterId["IncludesSubfoldersPrompt"] = "includesSubfoldersPrompt"; - // DPI_IncrementalScheduleIDs, having type string - ParameterId["IncrementalScheduleIDs"] = "incrementalScheduleIds"; - // DPI_InvariantKeyword, having type string - ParameterId["InvariantKeyword"] = "invariantKeyword"; - // DPI_JoinOperator, having type string - ParameterId["JoinOperator"] = "joinOperator"; - // DPI_JoinExpression, having type string - ParameterId["JoinExpression"] = "joinExpression"; - // DPI_Key, having type string - ParameterId["Key"] = "keyId"; - // DPI_Label, having type string - ParameterId["Label"] = "label"; - // DPI_PairedLabel, having type string - ParameterId["PairedLabel"] = "pairedLabel"; - // DPI_LayoutID, having type string - ParameterId["LayoutID"] = "layoutId"; - // DPI_LeftJoinExpression, having type string - ParameterId["LeftJoinExpression"] = "leftJoinExpression"; - // DPI_LimitCountExpression, having type string - ParameterId["LimitCountExpression"] = "limitCountExpression"; - // DPI_LinkTarget, having type string - ParameterId["LinkTarget"] = "linkTarget"; - // DPI_Locale, having type string - ParameterId["Locale"] = "locale"; - // DPI_LocalizedKeyword, having type string - ParameterId["LocalizedKeyword"] = "localizedKeyword"; - // DPI_MapBoxGLStyleId, having type string - ParameterId["MapBoxGLStyleId"] = "mapboxGlStyleId"; - // DPI_MapBoxStyleUrl, having type string - ParameterId["MapBoxStyleUrl"] = "mapboxStyleUrl"; - // DPI_MapBoxUsername, having type string - ParameterId["MapBoxUsername"] = "mapboxUsername"; - // DPI_MapScaleReadoutString, having type string - ParameterId["MapScaleReadoutString"] = "mapScaleReadoutString"; - // DPI_MapScaleTooltipString, having type string - ParameterId["MapScaleTooltipString"] = "mapScaleTooltipString"; - // DPI_MapSourceName, having type string - ParameterId["MapSourceName"] = "mapSourceName"; - // DPI_MaxLabel, having type string - ParameterId["MaxLabel"] = "maxLabel"; - // DPI_MinLabel, having type string - ParameterId["MinLabel"] = "minLabel"; - // DPI_ModelDescriptionParagraph, having type string - ParameterId["ModelDescriptionParagraph"] = "modelDescriptionParagraph"; - // DPI_NameTemplate, having type string - ParameterId["NameTemplate"] = "nameTemplate"; - // DPI_NewDrillPath, having type string - ParameterId["NewDrillPath"] = "newDrillPath"; - // DPI_NewFieldFolderName, having type string - ParameterId["NewFieldFolderName"] = "newFieldFolderName"; - // DPI_NewTableAlias, having type string - ParameterId["NewTableAlias"] = "newTableAlias"; - // DPI_NonFormattedValue, having type string - ParameterId["NonFormattedValue"] = "unformattedValue"; - // DPI_OAuthUserName, having type string - ParameterId["OAuthUserName"] = "oauthUsername"; - // DPI_ObjectName, having type string - ParameterId["ObjectName"] = "objectName"; - // DPI_ObjectOverrideMessage, having type string - ParameterId["ObjectOverrideMessage"] = "objectOverrideMessage"; - // DPI_OldTableAlias, having type string - ParameterId["OldTableAlias"] = "oldTableAlias"; - // DPI_OperatingSystem, having type string - ParameterId["OperatingSystem"] = "operatingSystem"; - // DPI_OriginalFilePath, having type string - ParameterId["OriginalFilePath"] = "originalFilePath"; - // DPI_OriginalFileVersion, having type string - ParameterId["OriginalFileVersion"] = "originalFileVersion"; - // DPI_PaneDescriptorKey, having type string - ParameterId["PaneDescriptorKey"] = "paneDescrKey"; - // DPI_ParentName, having type string - ParameterId["ParentName"] = "parentName"; - // DPI_ParentTable, having type string - ParameterId["ParentTable"] = "parentTable"; - // DPI_PatternFilterString, having type string - ParameterId["PatternFilterString"] = "patternFilterString"; - // DPI_PendingCalcName, having type string - ParameterId["PendingCalcName"] = "pendingCalcName"; - // DPI_PercentilesString, having type string - ParameterId["PercentilesString"] = "percentilesString"; - // DPI_ProjectName, having type string - ParameterId["ProjectName"] = "projectName"; - // DPI_PropertyName, having type string - ParameterId["PropertyName"] = "propertyName"; - // DPI_QuickFilterTitleCaption, having type string - ParameterId["QuickFilterTitleCaption"] = "quickFilterTitleCaption"; - // DPI_RangeDiffStr, having type string - ParameterId["RangeDiffStr"] = "diffValue"; - // DPI_RangeMaxStr, having type string - ParameterId["RangeMaxStr"] = "maxValue"; - // DPI_RangeMinStr, having type string - ParameterId["RangeMinStr"] = "minValue"; - // DPI_RecoveredFilePath, having type string - ParameterId["RecoveredFilePath"] = "recoveredFilePath"; - // DPI_ReferenceLineSpecificationId, having type string - ParameterId["ReferenceLineSpecificationId"] = "referenceLineId"; - // DPI_ReplaceFieldPrompt, having type string - ParameterId["ReplaceFieldPrompt"] = "replaceFieldPrompt"; - // DPI_RightJoinExpression, having type string - ParameterId["RightJoinExpression"] = "rightJoinExpression"; - // DPI_RootPath, having type string - ParameterId["RootPath"] = "rootPath"; - // DPI_RuntimeFinalDatastore, having type string - ParameterId["RuntimeFinalDatastore"] = "runtimeFinalDatastore"; - // DPI_RuntimeInitialDatastore, having type string - ParameterId["RuntimeInitialDatastore"] = "runtimeInitialDatastore"; - // DPI_RuntimeVTL, having type string - ParameterId["RuntimeVTL"] = "runtimeVtl"; - // DPI_SampleDataString, having type string - ParameterId["SampleDataString"] = "sampleData"; - // DPI_ScheduleIDs, having type string - ParameterId["ScheduleIDs"] = "scheduleIds"; - // DPI_SchemaFieldIconResource, having type string - ParameterId["SchemaFieldIconResource"] = "fieldIconRes"; - // DPI_ScreenName, having type string - ParameterId["ScreenName"] = "screenName"; - // DPI_ScriptCommand, having type string - ParameterId["ScriptCommand"] = "command"; - // DPI_SecondValue, having type string - ParameterId["SecondValue"] = "secondValue"; - // DPI_SelectedValue, having type string - ParameterId["SelectedValue"] = "selectedValue"; - // DPI_ShapeName, having type string - ParameterId["ShapeName"] = "shapeName"; - // DPI_SheetId, having type string - ParameterId["SheetId"] = "sheetId"; - // DPI_ShowDataTable, having type string - ParameterId["ShowDataTable"] = "showDataTable"; - // DPI_SimpleCommand, having type string - ParameterId["SimpleCommand"] = "simpleCommand"; - // DPI_SortModeCaption, having type string - ParameterId["SortModeCaption"] = "sortModeCaption"; - // DPI_SourceName, having type string - ParameterId["SourceName"] = "sourceName"; - // DPI_SourceText, having type string - ParameterId["SourceText"] = "sourceText"; - // DPI_SpecialValueText, having type string - ParameterId["SpecialValueText"] = "specialValueText"; - // DPI_StaticImage, having type string - ParameterId["StaticImage"] = "staticImage"; - // DPI_StoryPointBase, having type string - ParameterId["StoryPointBase"] = "storyPointBase"; - // DPI_StoryPointCaption, having type string - ParameterId["StoryPointCaption"] = "storyPointCaption"; - // DPI_Storyboard, having type string - ParameterId["Storyboard"] = "storyboard"; - // DPI_StyledLabel, having type string - ParameterId["StyledLabel"] = "styledLabel"; - // DPI_SummaryCaption, having type string - ParameterId["SummaryCaption"] = "summaryCaption"; - // DPI_SummaryField, having type string - ParameterId["SummaryField"] = "summaryField"; - // DPI_TableauVersion, having type string - ParameterId["TableauVersion"] = "tableauVersion"; - // DPI_TableFilter, having type string - ParameterId["TableFilter"] = "tableFilter"; - // DPI_TableFilterPrompt, having type string - ParameterId["TableFilterPrompt"] = "tableFilterPrompt"; - // DPI_TagsLabel, having type string - ParameterId["TagsLabel"] = "tagsLabel"; - // DPI_Target, having type string - ParameterId["Target"] = "target"; - // DPI_ThumbnailGroup, having type string - ParameterId["ThumbnailGroup"] = "thumbnailGroup"; - // DPI_ThumbnailUser, having type string - ParameterId["ThumbnailUser"] = "thumbnailUser"; - // DPI_TimeFormat, having type string - ParameterId["TimeFormat"] = "timeFormat"; - // DPI_TrendLineErrorString, having type string - ParameterId["TrendLineErrorString"] = "trendLineErrorString"; - // DPI_TrendLineModelFormula, having type string - ParameterId["TrendLineModelFormula"] = "trendLineModelFormula"; - // DPI_URLString, having type string - ParameterId["URLString"] = "urlString"; - // DPI_URLTest, having type string - ParameterId["URLTest"] = "urlTest"; - // DPI_ValidationMessage, having type string - ParameterId["ValidationMessage"] = "validationMessage"; - // DPI_ValueStr, having type string - ParameterId["ValueStr"] = "valueString"; - // DPI_VerifiedNonFormattedValue, having type string - ParameterId["VerifiedNonFormattedValue"] = "verifiedUnformattedValue"; - // DPI_WorkbookFullPath, having type string - ParameterId["WorkbookFullPath"] = "workbookFullPath"; - // DPI_WindowTitle, having type string - ParameterId["WindowTitle"] = "windowTitle"; - // DPI_ZoneName, having type string - ParameterId["ZoneName"] = "zoneName"; - // DPI_ZoneParam, having type string - ParameterId["ZoneParam"] = "zoneParam"; - // DPI_DataAlertErrorText, having type string - ParameterId["DataAlertErrorText"] = "dataAlertErrorText"; - // DPI_ExtractTempDirectory, having type string - ParameterId["ExtractTempDirectory"] = "extractTempDir"; - // DPI_DSSubClass, having type string - ParameterId["DSSubClass"] = "dsSubClass"; - // DPI_DbgCommandLine, having type string - ParameterId["DbgCommandLine"] = "debugCommandLine"; - // DPI_DbgLogPath, having type string - ParameterId["DbgLogPath"] = "debugLogPath"; - // DPI_DbgOSVersion, having type string - ParameterId["DbgOSVersion"] = "debugOsVersion"; - // DPI_DbgUserName, having type string - ParameterId["DbgUserName"] = "debugUsername"; - // DPI_ErrorMsg, having type string - ParameterId["ErrorMsg"] = "errorMessage"; - // DPI_ErrorStackTrace, having type string - ParameterId["ErrorStackTrace"] = "errorStackTrace"; - // DPI_ErrorStr, having type string - ParameterId["ErrorStr"] = "errorString"; - // DPI_EventMessage, having type string - ParameterId["EventMessage"] = "eventMessage"; - // DPI_EventTimestamp, having type string - ParameterId["EventTimestamp"] = "eventTimestamp"; - // DPI_ExtractDeltaPath, having type string - ParameterId["ExtractDeltaPath"] = "extractDeltaPath"; - // DPI_ExtractPath, having type string - ParameterId["ExtractPath"] = "extractPath"; - // DPI_ExtractSuggestedPath, having type string - ParameterId["ExtractSuggestedPath"] = "suggestedExtractPath"; - // DPI_ExtractTaskSummary, having type string - ParameterId["ExtractTaskSummary"] = "extractTaskSummary"; - // DPI_FactorsString, having type string - ParameterId["FactorsString"] = "factorsStr"; - // DPI_FormattedFamilyName, having type string - ParameterId["FormattedFamilyName"] = "formattedFamilyName"; - // DPI_FunctionSignature, having type string - ParameterId["FunctionSignature"] = "funcSig"; - // DPI_FunctionTooltip, having type string - ParameterId["FunctionTooltip"] = "funcTooltip"; - // DPI_HelpContents, having type string - ParameterId["HelpContents"] = "helpContents"; - // DPI_MapAttributionText, having type string - ParameterId["MapAttributionText"] = "mapAttributionText"; - // DPI_MapAttributionTextSize, having type string - ParameterId["MapAttributionTextSize"] = "mapAttributionTextSize"; - // DPI_MapAttributionUrl, having type string - ParameterId["MapAttributionUrl"] = "mapAttributionUrl"; - // DPI_MapBoxErrorMessage, having type string - ParameterId["MapBoxErrorMessage"] = "mapboxErrorMessage"; - // DPI_MapBoxOldStyleName, having type string - ParameterId["MapBoxOldStyleName"] = "mapboxOldStyleName"; - // DPI_MapBoxSelectedStyle, having type string - ParameterId["MapBoxSelectedStyle"] = "mapboxSelectedStyle"; - // DPI_MapBoxStyleName, having type string - ParameterId["MapBoxStyleName"] = "mapboxStyleName"; - // DPI_MapLayerRequest, having type string - ParameterId["MapLayerRequest"] = "mapLayerRequest"; - // DPI_MapServerKey, having type string - ParameterId["MapServerKey"] = "mapServerKey"; - // DPI_MapTileServer, having type string - ParameterId["MapTileServer"] = "mapTileServer"; - // DPI_MapTileUrl, having type string - ParameterId["MapTileUrl"] = "mapTileUrl"; - // DPI_PercentagesString, having type string - ParameterId["PercentagesString"] = "percentagesStr"; - // DPI_PublishErrorMessage, having type string - ParameterId["PublishErrorMessage"] = "publishErrorMessage"; - // DPI_TdePath, having type string - ParameterId["TdePath"] = "tdePath"; - // DPI_UIAutomationComponentName, having type string - ParameterId["UIAutomationComponentName"] = "uiAutomationComponentName"; - // DPI_UIAutomationEndTime, having type string - ParameterId["UIAutomationEndTime"] = "uiAutomationEndTime"; - // DPI_UIAutomationName, having type string - ParameterId["UIAutomationName"] = "uiAutomationName"; - // DPI_UIAutomationStartTime, having type string - ParameterId["UIAutomationStartTime"] = "uiAutomationStartTime"; - // DPI_UIAutomationValue, having type string - ParameterId["UIAutomationValue"] = "uiAutomationValue"; - // DPI_WMSConnectionName, having type string - ParameterId["WMSConnectionName"] = "wmsConnectionName"; - // DPI_WMSOldConnectionName, having type string - ParameterId["WMSOldConnectionName"] = "wmsOldConnectionName"; - // DPI_WMSServerUrl, having type string - ParameterId["WMSServerUrl"] = "wmsServerUrl"; - // DPI_AboutBuildVersion, having type string - ParameterId["AboutBuildVersion"] = "aboutBuildVersion"; - // DPI_ActionFields, having type string - ParameterId["ActionFields"] = "actionFields"; - // DPI_AddVariableLabel, having type string - ParameterId["AddVariableLabel"] = "addVariableLabel"; - // DPI_AddVariableTooltip, having type string - ParameterId["AddVariableTooltip"] = "addVariableTooltip"; - // DPI_AllowedDataSourcesByName, having type string - ParameterId["AllowedDataSourcesByName"] = "allowedDataSourcesByName"; - // DPI_AppAboutVersion, having type string - ParameterId["AppAboutVersion"] = "appAboutVersion"; - // DPI_AppBuildBranchName, having type string - ParameterId["AppBuildBranchName"] = "appBuildBranchName"; - // DPI_AppBuildVersion, having type string - ParameterId["AppBuildVersion"] = "appBuildVersion"; - // DPI_AppExternalVersion, having type string - ParameterId["AppExternalVersion"] = "appExternalVersion"; - // DPI_AppName, having type string - ParameterId["AppName"] = "appName"; - // DPI_AppProductVersion, having type string - ParameterId["AppProductVersion"] = "appProductVersion"; - // DPI_OriginalVersion, having type string - ParameterId["OriginalVersion"] = "originalVersion"; - // DPI_AtTheLevelSpecialCaption, having type string - ParameterId["AtTheLevelSpecialCaption"] = "atTheLevelSpecialCaption"; - // DPI_AutoCompleteCalc, having type string - ParameterId["AutoCompleteCalc"] = "acCalc"; - // DPI_CSVPath, having type string - ParameterId["CSVPath"] = "csvPath"; - // DPI_CommandNamespace, having type string - ParameterId["CommandNamespace"] = "commandNamespace"; - // DPI_Condition, having type string - ParameterId["Condition"] = "condition"; - // DPI_ConditionSummary, having type string - ParameterId["ConditionSummary"] = "conditionSummary"; - // DPI_ConfirmationMsg, having type string - ParameterId["ConfirmationMsg"] = "confirmationMsg"; - // DPI_DashboardTypeText, having type string - ParameterId["DashboardTypeText"] = "dashboardType"; - // DPI_DataserverPublicAddress, having type string - ParameterId["DataserverPublicAddress"] = "dataserverPublicAddress"; - // DPI_DatasourceFileName, having type string - ParameterId["DatasourceFileName"] = "datasourceFileName"; - // DPI_DecimalMark, having type string - ParameterId["DecimalMark"] = "decimalMark"; - // DPI_DeleteVariableTooltip, having type string - ParameterId["DeleteVariableTooltip"] = "deleteVariableTooltip"; - // DPI_DialogTitle, having type string - ParameterId["DialogTitle"] = "dialogTitle"; - // DPI_DisplayValue, having type string - ParameterId["DisplayValue"] = "displayValue"; - // DPI_TooltipValue, having type string - ParameterId["TooltipValue"] = "tooltipValue"; - // DPI_DstPath, having type string - ParameterId["DstPath"] = "dstPath"; - // DPI_EditWidgetHeader, having type string - ParameterId["EditWidgetHeader"] = "editWidgetHeader"; - // DPI_EditWidgetInstruction, having type string - ParameterId["EditWidgetInstruction"] = "editWidgetInstruction"; - // DPI_EndSelectionCaption, having type string - ParameterId["EndSelectionCaption"] = "endSelectionCaption"; - // DPI_ErrorDialogTitle, having type string - ParameterId["ErrorDialogTitle"] = "errorDialogTitle"; - // DPI_ErrorHelpLink, having type string - ParameterId["ErrorHelpLink"] = "errorHelpLink"; - // DPI_ErrorShortMessage, having type string - ParameterId["ErrorShortMessage"] = "errorShortMessage"; - // DPI_FilterSearchQuery, having type string - ParameterId["FilterSearchQuery"] = "filterSearchQuery"; - // DPI_FromLabel, having type string - ParameterId["FromLabel"] = "fromLabel"; - // DPI_FunctionHelp, having type string - ParameterId["FunctionHelp"] = "functionHelp"; - // DPI_Instructions, having type string - ParameterId["Instructions"] = "instructions"; - // DPI_LargeUnitDisplay, having type string - ParameterId["LargeUnitDisplay"] = "largeUnitDisplay"; - // DPI_Limit, having type string - ParameterId["Limit"] = "limit"; - // DPI_ListViewNameLabel, having type string - ParameterId["ListViewNameLabel"] = "listViewNameLabel"; - // DPI_ListViewValueLabel, having type string - ParameterId["ListViewValueLabel"] = "listViewValueLabel"; - // DPI_MapScaleReadoutUnit, having type string - ParameterId["MapScaleReadoutUnit"] = "mapScaleReadoutUnit"; - // DPI_MeasureDimension, having type string - ParameterId["MeasureDimension"] = "measuresDimension"; - // DPI_MimeType, having type string - ParameterId["MimeType"] = "mimeType"; - // DPI_MinimizedName, having type string - ParameterId["MinimizedName"] = "minName"; - // DPI_NotificationMsg, having type string - ParameterId["NotificationMsg"] = "notificationMsg"; - // DPI_OperationName, having type string - ParameterId["OperationName"] = "operationName"; - // DPI_PageTitle, having type string - ParameterId["PageTitle"] = "pageTitle"; - // DPI_PatternSummary, having type string - ParameterId["PatternSummary"] = "patternSummary"; - // DPI_ReferenceLineId, having type string - ParameterId["ReferenceLineId"] = "refLineId"; - // DPI_ReferenceLinePairedId, having type string - ParameterId["ReferenceLinePairedId"] = "refLinePairedId"; - // DPI_ReplaceText, having type string - ParameterId["ReplaceText"] = "replaceText"; - // DPI_RequiredVariableMessage, having type string - ParameterId["RequiredVariableMessage"] = "requiredVariableMessage"; - // DPI_RestartEverySpecialCaption, having type string - ParameterId["RestartEverySpecialCaption"] = "restartEverySpecialCaption"; - // DPI_Root, having type string - ParameterId["Root"] = "root"; - // DPI_SelectionSummary, having type string - ParameterId["SelectionSummary"] = "selectionSummary"; - // DPI_SessionAttributeKey, having type string - ParameterId["SessionAttributeKey"] = "sessionAttributeKey"; - // DPI_SessionAttributeValue, having type string - ParameterId["SessionAttributeValue"] = "sessionAttributeValue"; - // DPI_SheetAttributeKey, having type string - ParameterId["SheetAttributeKey"] = "baseSheetAttributeKey"; - // DPI_SheetAttributeValue, having type string - ParameterId["SheetAttributeValue"] = "baseSheetAttributeValue"; - // DPI_SmallUnitDisplay, having type string - ParameterId["SmallUnitDisplay"] = "smallUnitDisplay"; - // DPI_SourceCaption, having type string - ParameterId["SourceCaption"] = "sourceCaption"; - // DPI_SrcPath, having type string - ParameterId["SrcPath"] = "srcPath"; - // DPI_StartSelectionCaption, having type string - ParameterId["StartSelectionCaption"] = "startSelectionCaption"; - // DPI_Subtitle, having type string - ParameterId["Subtitle"] = "subtitle"; - // DPI_TableauServerSiteName, having type string - ParameterId["TableauServerSiteName"] = "tableauServerSiteName"; - // DPI_TargetCaption, having type string - ParameterId["TargetCaption"] = "targetCaption"; - // DPI_ThumbnailPath, having type string - ParameterId["ThumbnailPath"] = "thumbnailPath"; - // DPI_ToLabel, having type string - ParameterId["ToLabel"] = "toLabel"; - // DPI_URLAddress, having type string - ParameterId["URLAddress"] = "urlAddress"; - // DPI_ValuesTableHeader, having type string - ParameterId["ValuesTableHeader"] = "valuesTableHeader"; - // DPI_ValuesTableHeader2, having type string - ParameterId["ValuesTableHeader2"] = "valuesTableHeader2"; - // DPI_VariableDescription, having type string - ParameterId["VariableDescription"] = "variableDescription"; - // DPI_VariableDisplayName, having type string - ParameterId["VariableDisplayName"] = "variableDisplayName"; - // DPI_VariableGUID, having type string - ParameterId["VariableGUID"] = "variableGuid"; - // DPI_VerboseName, having type string - ParameterId["VerboseName"] = "verboseName"; - // DPI_ViewId, having type string - ParameterId["ViewId"] = "viewId"; - // DPI_Warning1, having type string - ParameterId["Warning1"] = "warning1"; - // DPI_Warning2, having type string - ParameterId["Warning2"] = "warning2"; - // DPI_RefreshToken, having type string - ParameterId["RefreshToken"] = "refresh_token"; - // DPI_TokenType, having type string - ParameterId["TokenType"] = "token_type"; - // DPI_XSRFToken, having type string - ParameterId["XSRFToken"] = "xsrf_token"; - // DPI_AxisSubtitle, having type string - ParameterId["AxisSubtitle"] = "axisSubtitle"; - // DPI_AxisTitle, having type string - ParameterId["AxisTitle"] = "axisTitle"; - // DPI_TickMarkOriginDataValue, having type string - ParameterId["TickMarkOriginDataValue"] = "tickMarkOriginDataValue"; - // DPI_TickMarkOriginDataValueNoTime, having type string - ParameterId["TickMarkOriginDataValueNoTime"] = "tickMarkOriginDataValueNoTime"; - // DPI_TickMarkSpacingDataValue, having type string - ParameterId["TickMarkSpacingDataValue"] = "tickMarkSpacingDataValue"; - // DPI_ExtractActionLocalized, having type string - ParameterId["ExtractActionLocalized"] = "extractActionLocalized"; - // DPI_ExtractSource, having type string - ParameterId["ExtractSource"] = "extractSource"; - // DPI_FileContents, having type string - ParameterId["FileContents"] = "fileContents"; - // DPI_SaveImagePath, having type string - ParameterId["SaveImagePath"] = "saveImagePath"; - // DPI_WidgetUID, having type string - ParameterId["WidgetUID"] = "widgetUniqueId"; - // DPI_DatePropertiesDisplayText, having type string - ParameterId["DatePropertiesDisplayText"] = "datePropertiesDisplayText"; - // DPI_DatePropertiesHelperText, having type string - ParameterId["DatePropertiesHelperText"] = "datePropertiesHelperText"; - // DPI_EventName, having type string - ParameterId["EventName"] = "eventName"; - // DPI_ExceptionType, having type string - ParameterId["ExceptionType"] = "exceptionType"; - // DPI_SearchPlaceholder, having type string - ParameterId["SearchPlaceholder"] = "searchPlaceholder"; - // DPI_TargetVersion, having type string - ParameterId["TargetVersion"] = "targetVersion"; - // DPI_DataValueDisplayString, having type string - ParameterId["DataValueDisplayString"] = "dataValueDisplayString"; - // DPI_DomainString, having type string - ParameterId["DomainString"] = "domainString"; - // DPI_RawDataValueString, having type string - ParameterId["RawDataValueString"] = "rawDataValueString"; - // DPI_RichTextDialogTitle, having type string - ParameterId["RichTextDialogTitle"] = "richTextDialogTitle"; - // DPI_RichTextContent, having type string - ParameterId["RichTextContent"] = "richTextContent"; - // DPI_MarkSizeAsString, having type string - ParameterId["MarkSizeAsString"] = "markSizeAsString"; - // DPI_UnitsLabel, having type string - ParameterId["UnitsLabel"] = "unitsLabel"; - // DPI_EmailAddress, having type string - ParameterId["EmailAddress"] = "emailAddress"; - // DPI_FirstName, having type string - ParameterId["FirstName"] = "firstName"; - // DPI_LastName, having type string - ParameterId["LastName"] = "lastName"; - // DPI_SummaryCardAvg, having type string - ParameterId["SummaryCardAvg"] = "summaryCardAvg"; - // DPI_SummaryCardCaption, having type string - ParameterId["SummaryCardCaption"] = "summaryCardCaption"; - // DPI_SummaryCardCount, having type string - ParameterId["SummaryCardCount"] = "summaryCardCount"; - // DPI_SummaryCardKurtosis, having type string - ParameterId["SummaryCardKurtosis"] = "summaryCardKurtosis"; - // DPI_SummaryCardMax, having type string - ParameterId["SummaryCardMax"] = "summaryCardMax"; - // DPI_SummaryCardMedian, having type string - ParameterId["SummaryCardMedian"] = "summaryCardMedian"; - // DPI_SummaryCardMin, having type string - ParameterId["SummaryCardMin"] = "summaryCardMin"; - // DPI_SummaryCardQuart1, having type string - ParameterId["SummaryCardQuart1"] = "summaryCardQuart1"; - // DPI_SummaryCardQuart3, having type string - ParameterId["SummaryCardQuart3"] = "summaryCardQuart3"; - // DPI_SummaryCardSkewness, having type string - ParameterId["SummaryCardSkewness"] = "summaryCardSkewness"; - // DPI_SummaryCardStdev, having type string - ParameterId["SummaryCardStdev"] = "summaryCardStdev"; - // DPI_SummaryCardSum, having type string - ParameterId["SummaryCardSum"] = "summaryCardSum"; - // DPI_ValueClassAttr, having type string - ParameterId["ValueClassAttr"] = "valueClassAttr"; - // DPI_TrendLineDialogTitle, having type string - ParameterId["TrendLineDialogTitle"] = "trendLineDialogTitle"; - // DPI_LinearFitTypeLabel, having type string - ParameterId["LinearFitTypeLabel"] = "linearFitTypeLabel"; - // DPI_LogFitTypeLabel, having type string - ParameterId["LogFitTypeLabel"] = "logFitTypeLabel"; - // DPI_ExpFitTypeLabel, having type string - ParameterId["ExpFitTypeLabel"] = "expFitTypeLabel"; - // DPI_PowerFitTypeLabel, having type string - ParameterId["PowerFitTypeLabel"] = "powerFitTypeLabel"; - // DPI_PolynomialFitTypeLabel, having type string - ParameterId["PolynomialFitTypeLabel"] = "polynomialFitTypeLabel"; - // DPI_ExcludeColorLabel, having type string - ParameterId["ExcludeColorLabel"] = "excludeColorLabel"; - // DPI_EnableConfidenceBandsLabel, having type string - ParameterId["EnableConfidenceBandsLabel"] = "enableConfidenceBandsLabel"; - // DPI_ForceInterceptZeroLabel, having type string - ParameterId["ForceInterceptZeroLabel"] = "forceInterceptZero label"; - // DPI_EnableInstantAnalyticsLabel, having type string - ParameterId["EnableInstantAnalyticsLabel"] = "enableInstantAnalyticsLabel"; - // DPI_EnableTooltipsLabel, having type string - ParameterId["EnableTooltipsLabel"] = "enableTooltipLabel"; - // DPI_AuthenticationSummary, having type string - ParameterId["AuthenticationSummary"] = "authenticationSummary"; - // DPI_BtnCancelText, having type string - ParameterId["BtnCancelText"] = "btnCancelText"; - // DPI_BtnOkText, having type string - ParameterId["BtnOkText"] = "btnOkText"; - // DPI_ButtonText, having type string - ParameterId["ButtonText"] = "buttonText"; - // DPI_CalculationCaption, having type string - ParameterId["CalculationCaption"] = "calculationCaption"; - // DPI_CalculationDependencies, having type string - ParameterId["CalculationDependencies"] = "calculationDependencies"; - // DPI_CalculationFormula, having type string - ParameterId["CalculationFormula"] = "calculationFormula"; - // DPI_CheckPublishMessage, having type string - ParameterId["CheckPublishMessage"] = "checkPublishSummary"; - // DPI_ClusterModelText, having type string - ParameterId["ClusterModelText"] = "clusterModelText"; - // DPI_ClusterSummaryScaledText, having type string - ParameterId["ClusterSummaryScaledText"] = "clusterSummaryScaledText"; - // DPI_ClusterSummaryText, having type string - ParameterId["ClusterSummaryText"] = "clusterSummaryText"; - // DPI_ColumnCaption, having type string - ParameterId["ColumnCaption"] = "columnCaption"; - // DPI_DatasourceCaption, having type string - ParameterId["DatasourceCaption"] = "datasourceCaption"; - // DPI_DefaultCaption, having type string - ParameterId["DefaultCaption"] = "defaultCaption"; - // DPI_DisplayString, having type string - ParameterId["DisplayString"] = "displayText"; - // DPI_DragDescription, having type string - ParameterId["DragDescription"] = "dragDescription"; - // DPI_ExceptionMessage, having type string - ParameterId["ExceptionMessage"] = "exceptionMessage"; - // DPI_Explanation, having type string - ParameterId["Explanation"] = "explanation"; - // DPI_FieldCaption, having type string - ParameterId["FieldCaption"] = "fieldCaption"; - // DPI_FieldSummary, having type string - ParameterId["FieldSummary"] = "fieldSummary"; - // DPI_FieldSummaryLabel, having type string - ParameterId["FieldSummaryLabel"] = "fieldSummaryLabel"; - // DPI_FilterDescription, having type string - ParameterId["FilterDescription"] = "filterDescription"; - // DPI_FilterName, having type string - ParameterId["FilterName"] = "filterName"; - // DPI_ForecastModelText, having type string - ParameterId["ForecastModelText"] = "forecastModelText"; - // DPI_ForecastSummaryPctText, having type string - ParameterId["ForecastSummaryPctText"] = "forecastSummaryPctText"; - // DPI_ForecastSummaryText, having type string - ParameterId["ForecastSummaryText"] = "forecastSummaryText"; - // DPI_HasActiveExtractText, having type string - ParameterId["HasActiveExtractText"] = "hasActiveExtractText"; - // DPI_HtmlColor, having type string - ParameterId["HtmlColor"] = "htmlColor"; - // DPI_IncludeLocalFilesCheckedWarning, having type string - ParameterId["IncludeLocalFilesCheckedWarning"] = "includeLocalFilesCheckedWarning"; - // DPI_IncludeLocalFilesWarning, having type string - ParameterId["IncludeLocalFilesWarning"] = "includeLocalFilesWarning"; - // DPI_InvalidFieldCaption, having type string - ParameterId["InvalidFieldCaption"] = "invalidFieldCaption"; - // DPI_LimitSummary, having type string - ParameterId["LimitSummary"] = "limitSummary"; - // DPI_LoadedExistingObjectWarning, having type string - ParameterId["LoadedExistingObjectWarning"] = "loadedExistingObjectWarning"; - // DPI_ManageDatasourcesSummary, having type string - ParameterId["ManageDatasourcesSummary"] = "manageDatasourcesSummary"; - // DPI_ModalDialog, having type string - ParameterId["ModalDialog"] = "modalDialog"; - // DPI_NewDatasourceCaption, having type string - ParameterId["NewDatasourceCaption"] = "newDatasourceCaption"; - // DPI_PermissionsButtonLabel, having type string - ParameterId["PermissionsButtonLabel"] = "permissionsButtonLabel"; - // DPI_PermissionsEditorRoleId, having type string - ParameterId["PermissionsEditorRoleId"] = "permissionsEditorRoleId"; - // DPI_PermissionsLabel, having type string - ParameterId["PermissionsLabel"] = "permissionsLabel"; - // DPI_PerspectiveCaption, having type string - ParameterId["PerspectiveCaption"] = "perspectiveCaption"; - // DPI_PublishButtonLabel, having type string - ParameterId["PublishButtonLabel"] = "publishButtonLabel"; - // DPI_PublishChoiceLabel, having type string - ParameterId["PublishChoiceLabel"] = "publishChoiceLabel"; - // DPI_PublishObjectViewsSummary, having type string - ParameterId["PublishObjectViewsSummary"] = "publishObjectViewsSummary"; - // DPI_QualifiedFieldCaption, having type string - ParameterId["QualifiedFieldCaption"] = "qualifiedFieldCaption"; - // DPI_RelationshipTooltipText, having type string - ParameterId["RelationshipTooltipText"] = "relationshipTooltipText"; - // DPI_ResetObjectAttributesWarning, having type string - ParameterId["ResetObjectAttributesWarning"] = "resetObjectAttributesWarning"; - // DPI_RowCountCaption, having type string - ParameterId["RowCountCaption"] = "rowCountCaption"; - // DPI_ServerCaption, having type string - ParameterId["ServerCaption"] = "serverCaption"; - // DPI_SizeModeName, having type string - ParameterId["SizeModeName"] = "sizeModeName"; - // DPI_SummaryText, having type string - ParameterId["SummaryText"] = "summaryText"; - // DPI_SyncClientUseExtractLabel, having type string - ParameterId["SyncClientUseExtractLabel"] = "syncClientUseExtractLabel"; - // DPI_Text, having type string - ParameterId["Text"] = "text"; - // DPI_TextDropdownControlLabel, having type string - ParameterId["TextDropdownControlLabel"] = "controlLabel"; - // DPI_ThumbnailUserName, having type string - ParameterId["ThumbnailUserName"] = "thumbnailUserName"; - // DPI_TitleString, having type string - ParameterId["TitleString"] = "titleString"; - // DPI_TooltipText, having type string - ParameterId["TooltipText"] = "tooltipText"; - // DPI_UpdatedCalcCaption, having type string - ParameterId["UpdatedCalcCaption"] = "updatedCalculationCaption"; - // DPI_UpdatedCalcFormula, having type string - ParameterId["UpdatedCalcFormula"] = "updatedCalculationFormula"; - // DPI_UserCaption, having type string - ParameterId["UserCaption"] = "userCaption"; - // DPI_WarningTooltipText, having type string - ParameterId["WarningTooltipText"] = "warningTooltipText"; - // DPI_DatasourceFile, having type string - ParameterId["DatasourceFile"] = "datasourceFile"; - // DPI_File, having type string - ParameterId["File"] = "file"; - // DPI_FileNameBase, having type string - ParameterId["FileNameBase"] = "filenameBase"; - // DPI_NewFile, having type string - ParameterId["NewFile"] = "newFile"; - // DPI_OriginalFile, having type string - ParameterId["OriginalFile"] = "originalFile"; - // DPI_OutputFile, having type string - ParameterId["OutputFile"] = "outputFile"; - // DPI_SampleFileName, having type string - ParameterId["SampleFileName"] = "sampleFilename"; - // DPI_WorkbookFile, having type string - ParameterId["WorkbookFile"] = "workbookFile"; - // DPI_ImageKey, having type string - ParameterId["ImageKey"] = "imageKey"; - // DPI_OverlayImageKey, having type string - ParameterId["OverlayImageKey"] = "overlayImageKey"; - // DPI_TempFileKey, having type string - ParameterId["TempFileKey"] = "tempfileKey"; - // DPI_CapturedSheet, having type string - ParameterId["CapturedSheet"] = "capturedSheet"; - // DPI_CurrentSheet, having type string - ParameterId["CurrentSheet"] = "currentSheet"; - // DPI_Dashboard, having type string - ParameterId["Dashboard"] = "dashboard"; - // DPI_EnsureSheet, having type string - ParameterId["EnsureSheet"] = "ensureSheetName"; - // DPI_NewSheet, having type string - ParameterId["NewSheet"] = "newSheet"; - // DPI_Sheet, having type string - ParameterId["Sheet"] = "sheet"; - // DPI_SheetName, having type string - ParameterId["SheetName"] = "sheetName"; - // DPI_SourceDashboard, having type string - ParameterId["SourceDashboard"] = "sourceDashboard"; - // DPI_SourceSheet, having type string - ParameterId["SourceSheet"] = "sourceSheet"; - // DPI_TargetSheet, having type string - ParameterId["TargetSheet"] = "targetSheet"; - // DPI_WorkbookName, having type string - ParameterId["WorkbookName"] = "workbookName"; - // DPI_Worksheet, having type string - ParameterId["Worksheet"] = "worksheet"; - // DPI_BaseViewThumbLink, having type string - ParameterId["BaseViewThumbLink"] = "baseViewThumbLink"; - // DPI_BlogLink, having type string - ParameterId["BlogLink"] = "blogLink"; - // DPI_CacheUrl, having type string - ParameterId["CacheUrl"] = "cacheUrl"; - // DPI_DownloadLink, having type string - ParameterId["DownloadLink"] = "downloadLink"; - // DPI_RepositoryUrl, having type string - ParameterId["RepositoryUrl"] = "repositoryUrl"; - // DPI_ShareLink, having type string - ParameterId["ShareLink"] = "shareLink"; - // DPI_URL, having type string - ParameterId["URL"] = "url"; - // DPI_ClusterModelHtml, having type string - ParameterId["ClusterModelHtml"] = "clusterModelHtml"; - // DPI_ClusterSummaryHtml, having type string - ParameterId["ClusterSummaryHtml"] = "clusterSummaryHtml"; - // DPI_ClusterSummaryScaledHtml, having type string - ParameterId["ClusterSummaryScaledHtml"] = "clusterSummaryScaledHtml"; - // DPI_FieldDescription, having type string - ParameterId["FieldDescription"] = "fieldDescription"; - // DPI_ForecastModelHtml, having type string - ParameterId["ForecastModelHtml"] = "forecastModelHtml"; - // DPI_ForecastSummaryHtml, having type string - ParameterId["ForecastSummaryHtml"] = "forecastSummaryHtml"; - // DPI_ForecastSummaryPctHtml, having type string - ParameterId["ForecastSummaryPctHtml"] = "forecastSummaryPctHtml"; - // DPI_Html, having type string - ParameterId["Html"] = "html"; - // DPI_HtmlSelection, having type string - ParameterId["HtmlSelection"] = "htmlSelection"; - // DPI_HtmlTooltip, having type string - ParameterId["HtmlTooltip"] = "htmlTooltip"; - // DPI_HtmlTooltipModified, having type string - ParameterId["HtmlTooltipModified"] = "htmlTooltipModified"; - // DPI_TitleHtml, having type string - ParameterId["TitleHtml"] = "titleHtml"; - // DPI_CacheUrlInfoJson, having type string - ParameterId["CacheUrlInfoJson"] = "cacheUrlInfoJson"; - // DPI_FilterSearchJson, having type string - ParameterId["FilterSearchJson"] = "filterSearchJson"; - // DPI_FilterSearchWithIndexJson, having type string - ParameterId["FilterSearchWithIndexJson"] = "filterSearchWithIndexJson"; - // DPI_FilterShowChildrenJson, having type string - ParameterId["FilterShowChildrenJson"] = "filterShowChildrenJson"; - // DPI_FiltersJson, having type string - ParameterId["FiltersJson"] = "filtersJson"; - // DPI_FrameJson, having type string - ParameterId["FrameJson"] = "frameJson"; - // DPI_GeometryJson, having type string - ParameterId["GeometryJson"] = "geometryJson"; - // DPI_GetFilterItemsJson, having type string - ParameterId["GetFilterItemsJson"] = "getFilterItemsJson"; - // DPI_KeepOnlyResponseJson, having type string - ParameterId["KeepOnlyResponseJson"] = "keepOnlyResponseJson"; - // DPI_MenuCommandsJson, having type string - ParameterId["MenuCommandsJson"] = "menuCommandsJson"; - // DPI_ModifiedSheetsJson, having type string - ParameterId["ModifiedSheetsJson"] = "modifiedSheetsJson"; - // DPI_ParameterCtrlJson, having type string - ParameterId["ParameterCtrlJson"] = "parameterCtrlJson"; - // DPI_ViewJson, having type string - ParameterId["ViewJson"] = "viewJson"; - // DPI_CustomizedViewXML, having type string - ParameterId["CustomizedViewXML"] = "customizedViewXml"; - // DPI_DatasourceDeltaXML, having type string - ParameterId["DatasourceDeltaXML"] = "datasourceDeltaXml"; - // DPI_DatasourceXML, having type string - ParameterId["DatasourceXML"] = "datasourceXml"; - // DPI_KeychainXML, having type string - ParameterId["KeychainXML"] = "keychainXml"; - // DPI_PermissionsModelXML, having type string - ParameterId["PermissionsModelXML"] = "permissionsModelXml"; - // DPI_SharedViewsXML, having type string - ParameterId["SharedViewsXML"] = "sharedViewsXml"; - // DPI_TargetURL, having type string - ParameterId["TargetURL"] = "targetUrl"; - // DPI_Anchor, having type string - ParameterId["Anchor"] = "anchor"; - // DPI_CenterValue, having type string - ParameterId["CenterValue"] = "centerValue"; - // DPI_ComputedBinSize, having type string - ParameterId["ComputedBinSize"] = "computedBinSize"; - // DPI_ConstantValue, having type string - ParameterId["ConstantValue"] = "constantValue"; - // DPI_PairedConstantValue, having type string - ParameterId["PairedConstantValue"] = "pairedConstantValue"; - // DPI_CountDistinct, having type string - ParameterId["CountDistinct"] = "countDistinct"; - // DPI_DataMax, having type string - ParameterId["DataMax"] = "dataMax"; - // DPI_DataMin, having type string - ParameterId["DataMin"] = "dataMin"; - // DPI_DataValueString, having type string - ParameterId["DataValueString"] = "dataValueStr"; - // DPI_EndValue, having type string - ParameterId["EndValue"] = "endValue"; - // DPI_RangeMax, having type string - ParameterId["RangeMax"] = "rangeMax"; - // DPI_RangeMin, having type string - ParameterId["RangeMin"] = "rangeMin"; - // DPI_RangeStepSize, having type string - ParameterId["RangeStepSize"] = "rangeStepSize"; - // DPI_StartValue, having type string - ParameterId["StartValue"] = "startValue"; - // DPI_TargetValue, having type string - ParameterId["TargetValue"] = "targetValue"; - // DPI_ValueInc, having type string - ParameterId["ValueInc"] = "valueInc"; - // DPI_ValueMax, having type string - ParameterId["ValueMax"] = "valueMax"; - // DPI_ValueMin, having type string - ParameterId["ValueMin"] = "valueMin"; - // DPI_QuantilesValue, having type string - ParameterId["QuantilesValue"] = "quantilesValue"; - // DPI_UserInputBinSize, having type string - ParameterId["UserInputBinSize"] = "userBinSize"; - // DPI_AddedDataSources, having type string[] - ParameterId["AddedDataSources"] = "addedDataSourceNames"; - // DPI_AddressingCaptions, having type string[] - ParameterId["AddressingCaptions"] = "addressingCaptions"; - // DPI_AggregationCaptions, having type string[] - ParameterId["AggregationCaptions"] = "aggregationCaptions"; - // DPI_AtTheLevelCaptions, having type string[] - ParameterId["AtTheLevelCaptions"] = "atTheLevelCaptions"; - // DPI_AuthenticationSettingLabels, having type string[] - ParameterId["AuthenticationSettingLabels"] = "authenticationSettingLabels"; - // DPI_AutosaveFileIdsVector, having type string[] - ParameterId["AutosaveFileIdsVector"] = "autosaveFileIdsVector"; - // DPI_ChangedTuples, having type string[] - ParameterId["ChangedTuples"] = "changedTuples"; - // DPI_CharsetsAvailable, having type string[] - ParameterId["CharsetsAvailable"] = "charsetsAvailable"; - // DPI_CharsetDisplayNames, having type string[] - ParameterId["CharsetDisplayNames"] = "charsetDisplayNames"; - // DPI_ColorFactors, having type string[] - ParameterId["ColorFactors"] = "colorFactors"; - // DPI_ColumnFullNames, having type string[] - ParameterId["ColumnFullNames"] = "columnFullNames"; - // DPI_ConnectionNames, having type string[] - ParameterId["ConnectionNames"] = "connectionNames"; - // DPI_ConnectionCaptions, having type string[] - ParameterId["ConnectionCaptions"] = "connectionCaptions"; - // DPI_ConnectionBigQueryLegacySQLCheckBox, having type string[] - ParameterId["ConnectionBigQueryLegacySQLCheckBox"] = "connectionBigqueryLegacySqlCheckbox"; - // DPI_CustomFieldOrder, having type string[] - ParameterId["CustomFieldOrder"] = "customFieldOrder"; - // DPI_DataSourceClasses, having type string[] - ParameterId["DataSourceClasses"] = "dataSourceClasses"; - // DPI_DataSourceNames, having type string[] - ParameterId["DataSourceNames"] = "dataSourceNames"; - // DPI_DataSourceNames2, having type string[] - ParameterId["DataSourceNames2"] = "dataSourceNames2"; - // DPI_DataSourcesWithEmptyRelation, having type string[] - ParameterId["DataSourcesWithEmptyRelation"] = "dataSourcesWithEmptyRelation"; - // DPI_DateFormats, having type string[] - ParameterId["DateFormats"] = "dateFormats"; - // DPI_DayNames, having type string[] - ParameterId["DayNames"] = "dayNames"; - // DPI_DrillPathVector, having type string[] - ParameterId["DrillPathVector"] = "drillpathVector"; - // DPI_ErrorDetails, having type string[] - ParameterId["ErrorDetails"] = "errorDetails"; - // DPI_ExceptionMessageParams, having type string[] - ParameterId["ExceptionMessageParams"] = "exceptionMessageParams"; - // DPI_ExcludedSheets, having type string[] - ParameterId["ExcludedSheets"] = "excludeSheets"; - // DPI_FieldDisplayNames, having type string[] - ParameterId["FieldDisplayNames"] = "fieldDisplayNames"; - // DPI_FieldFolderVector, having type string[] - ParameterId["FieldFolderVector"] = "fieldFolderVector"; - // DPI_FileIds, having type string[] - ParameterId["FileIds"] = "fileIds"; - // DPI_FilePaths, having type string[] - ParameterId["FilePaths"] = "filePaths"; - // DPI_FileNames, having type string[] - ParameterId["FileNames"] = "fileNames"; - // DPI_FilterAdd, having type string[] - ParameterId["FilterAdd"] = "filterAdd"; - // DPI_FilterAliases, having type string[] - ParameterId["FilterAliases"] = "filterValues"; - // DPI_FilterRemove, having type string[] - ParameterId["FilterRemove"] = "filterRemove"; - // DPI_FixedCaptions, having type string[] - ParameterId["FixedCaptions"] = "fixedCaptions"; - // DPI_FontFamilies, having type string[] - ParameterId["FontFamilies"] = "fontFamilies"; - // DPI_FormatStrings, having type string[] - ParameterId["FormatStrings"] = "formatStrings"; - // DPI_FormattedValues, having type string[] - ParameterId["FormattedValues"] = "formattedValues"; - // DPI_FoundTuples, having type string[] - ParameterId["FoundTuples"] = "foundTuples"; - // DPI_FullSchedulesLabels, having type string[] - ParameterId["FullSchedulesLabels"] = "fullSchedulesLabels"; - // DPI_ImageResourceList, having type string[] - ParameterId["ImageResourceList"] = "imageResources"; - // DPI_IncludeList, having type string[] - ParameterId["IncludeList"] = "includeList"; - // DPI_IncrSchedulesLabels, having type string[] - ParameterId["IncrSchedulesLabels"] = "incrSchedulesLabels"; - // DPI_InvalidDates, having type string[] - ParameterId["InvalidDates"] = "invalidDates"; - // DPI_InvalidValues, having type string[] - ParameterId["InvalidValues"] = "invalidValues"; - // DPI_ItemValues, having type string[] - ParameterId["ItemValues"] = "itemValues"; - // DPI_JoinEditableProps, having type string[] - ParameterId["JoinEditableProps"] = "joinEditableProps"; - // DPI_JoinFieldCaptions, having type string[] - ParameterId["JoinFieldCaptions"] = "joinFieldCaptions"; - // DPI_LocaleOptions, having type string[] - ParameterId["LocaleOptions"] = "localeOptions"; - // DPI_LocaleDisplayNames, having type string[] - ParameterId["LocaleDisplayNames"] = "localeDisplayNames"; - // DPI_MapBoxStyleMaps, having type string[] - ParameterId["MapBoxStyleMaps"] = "mapboxStyleMaps"; - // DPI_MapConnectionErrorDetails, having type string[] - ParameterId["MapConnectionErrorDetails"] = "mapConnectionErrorDetails"; - // DPI_SheetNames, having type string[] - ParameterId["SheetNames"] = "sheetNames"; - // DPI_MapSourceNames, having type string[] - ParameterId["MapSourceNames"] = "mapSourceNames"; - // DPI_MarkGeometries, having type string[] - ParameterId["MarkGeometries"] = "markGeometries"; - // DPI_MenuItems, having type string[] - ParameterId["MenuItems"] = "menuItems"; - // DPI_Modes, having type string[] - ParameterId["Modes"] = "modes"; - // DPI_MonthNames, having type string[] - ParameterId["MonthNames"] = "monthNames"; - // DPI_NumberFormats, having type string[] - ParameterId["NumberFormats"] = "numberFormats"; - // DPI_ObjectTextIDs, having type string[] - ParameterId["ObjectTextIDs"] = "objectTextIds"; - // DPI_OldExtracts, having type string[] - ParameterId["OldExtracts"] = "oldExtracts"; - // DPI_OrderingTypeCaptions, having type string[] - ParameterId["OrderingTypeCaptions"] = "orderingTypeCaptions"; - // DPI_PageNames, having type string[] - ParameterId["PageNames"] = "pageNames"; - // DPI_PaneDescriptorKeys, having type string[] - ParameterId["PaneDescriptorKeys"] = "paneDescriptorKeys"; - // DPI_ParamCaptions, having type string[] - ParameterId["ParamCaptions"] = "paramCaptions"; - // DPI_PrecannedDataValues, having type string[] - ParameterId["PrecannedDataValues"] = "precannedDataValues"; - // DPI_PublishChoiceLabels, having type string[] - ParameterId["PublishChoiceLabels"] = "publishChoiceLabels"; - // DPI_RankTypeCaptions, having type string[] - ParameterId["RankTypeCaptions"] = "rankTypeCaptions"; - // DPI_RecentTags, having type string[] - ParameterId["RecentTags"] = "recentTags"; - // DPI_RelativeCaptions, having type string[] - ParameterId["RelativeCaptions"] = "relativeCaptions"; - // DPI_RemovedDataSources, having type string[] - ParameterId["RemovedDataSources"] = "removedDataSourceNames"; - // DPI_RepresentativeTuple, having type string[] - ParameterId["RepresentativeTuple"] = "representativeTuple"; - // DPI_RestartEveryCaptions, having type string[] - ParameterId["RestartEveryCaptions"] = "restartEveryCaptions"; - // DPI_SchemaMemberGlobalNames, having type string[] - ParameterId["SchemaMemberGlobalNames"] = "schemaMemberGlobalNames"; - // DPI_SelectValuesList, having type string[] - ParameterId["SelectValuesList"] = "selectValues"; - // DPI_SelectionValueList, having type string[] - ParameterId["SelectionValueList"] = "selectionValueList"; - // DPI_SortAggCaptions, having type string[] - ParameterId["SortAggCaptions"] = "sortAggCaptions"; - // DPI_SortDirectionCaptions, having type string[] - ParameterId["SortDirectionCaptions"] = "sortDirectionCaptions"; - // DPI_SortFieldCaptions, having type string[] - ParameterId["SortFieldCaptions"] = "sortFieldCaptions"; - // DPI_SortFieldNameVector, having type string[] - ParameterId["SortFieldNameVector"] = "sortFieldnameVector"; - // DPI_SupportedJoinOperators, having type string[] - ParameterId["SupportedJoinOperators"] = "supportedJoinOperators"; - // DPI_TableCalcTypeCaptions, having type string[] - ParameterId["TableCalcTypeCaptions"] = "tableCalcTypeCaptions"; - // DPI_Tags, having type string[] - ParameterId["Tags"] = "tags"; - // DPI_TermVec, having type string[] - ParameterId["TermVec"] = "termVector"; - // DPI_UIAutomationList, having type string[] - ParameterId["UIAutomationList"] = "uiAutomationList"; - // DPI_ReferenceLineValidCustomLabelTags, having type string[] - ParameterId["ReferenceLineValidCustomLabelTags"] = "validReferenceLineCustomLabelTags"; - // DPI_LocalizedKeywords, having type string[] - ParameterId["LocalizedKeywords"] = "localizedKeywords"; - // DPI_AvailableCalendars, having type string[] - ParameterId["AvailableCalendars"] = "availableCalendars"; - // DPI_SheetsToBeDeletedOrHidden, having type string[] - ParameterId["SheetsToBeDeletedOrHidden"] = "sheetsToBeDeletedOrHidden"; - // DPI_AddSheets, having type string[] - ParameterId["AddSheets"] = "addSheets"; - // DPI_NamesOfSubsheets, having type string[] - ParameterId["NamesOfSubsheets"] = "namesOfSubsheets"; - // DPI_RemoveSheets, having type string[] - ParameterId["RemoveSheets"] = "removeSheets"; - // DPI_ScrollOffsetSheets, having type string[] - ParameterId["ScrollOffsetSheets"] = "scrollOffsetSheets"; - // DPI_Sheets, having type string[] - ParameterId["Sheets"] = "sheets"; - // DPI_SourceWorksheets, having type string[] - ParameterId["SourceWorksheets"] = "sourceWorksheets"; - // DPI_TargetExcludes, having type string[] - ParameterId["TargetExcludes"] = "targetExclude"; - // DPI_TargetWorksheets, having type string[] - ParameterId["TargetWorksheets"] = "targetWorksheets"; - // DPI_TileURLs, having type string[] - ParameterId["TileURLs"] = "tileUrls"; - // DPI_Details, having type string[] - ParameterId["Details"] = "details"; - // DPI_FieldCaptions, having type string[] - ParameterId["FieldCaptions"] = "fieldCaptions"; - // DPI_HighlightCaptions, having type string[] - ParameterId["HighlightCaptions"] = "highlightCaptions"; - // DPI_LevelCaptions, having type string[] - ParameterId["LevelCaptions"] = "levelCaptions"; - // DPI_LevelLeafValues, having type string[] - ParameterId["LevelLeafValues"] = "levelLeafValues"; - // DPI_SubstitutionVariables, having type string[] - ParameterId["SubstitutionVariables"] = "substitutionVariables"; - // DPI_SubstitutionVariableValues, having type string[] - ParameterId["SubstitutionVariableValues"] = "substitutionVariableValues"; - // DPI_HtmlTooltips, having type string[] - ParameterId["HtmlTooltips"] = "htmlTooltips"; - // DPI_InvalidFields, having type string[] - ParameterId["InvalidFields"] = "invalidFields"; - // DPI_NamesOfColumns, having type string[] - ParameterId["NamesOfColumns"] = "namesOfColumns"; - // DPI_NamesOfFields, having type string[] - ParameterId["NamesOfFields"] = "namesOfFields"; - // DPI_ReferencedDatasources, having type string[] - ParameterId["ReferencedDatasources"] = "referencedDataSourceList"; - // DPI_CSSAttrs, having type Dictionary(of string) - ParameterId["CSSAttrs"] = "cssAttrs"; - // DPI_DataSourceMap, having type Dictionary(of string) - ParameterId["DataSourceMap"] = "dataSourceMap"; - // DPI_EventParameters, having type Dictionary(of string) - ParameterId["EventParameters"] = "eventParameters"; - // DPI_ExceptionAttrs, having type Dictionary(of string) - ParameterId["ExceptionAttrs"] = "exceptionAttrs"; - // DPI_InvalidSheetMessage, having type Dictionary(of string) - ParameterId["InvalidSheetMessage"] = "invalidSheetMessages"; - // DPI_MapBoxDefaultStyle, having type Dictionary(of string) - ParameterId["MapBoxDefaultStyle"] = "mapboxDefaultStyles"; - // DPI_PaneFormattings, having type Dictionary(of string) - ParameterId["PaneFormattings"] = "paneFormattings"; - // DPI_SourceNameWithCaption, having type Dictionary(of string) - ParameterId["SourceNameWithCaption"] = "sourceNameWithCaption"; - // DPI_ConnectionColorMap, having type Dictionary(of string) - ParameterId["ConnectionColorMap"] = "connectionColorMap"; - // DPI_TargetNameWithCaption, having type Dictionary(of string) - ParameterId["TargetNameWithCaption"] = "targetNameWithCaption"; - // DPI_ViewIds, having type Dictionary(of string) - ParameterId["ViewIds"] = "viewIds"; - // DPI_AddInSettings, having type Dictionary(of string) - ParameterId["AddInSettings"] = "addInSettings"; - // DPI_DatasourceIcons, having type Dictionary(of string) - ParameterId["DatasourceIcons"] = "datasourceIcons"; - // DPI_FormattedText, having type string - ParameterId["FormattedText"] = "formattedText"; - // DPI_IconTooltip, having type string - ParameterId["IconTooltip"] = "iconTooltip"; - // DPI_Title, having type string - ParameterId["Title"] = "title"; - // DPI_Tooltip, having type string - ParameterId["Tooltip"] = "tooltip"; - // DPI_ZoneText, having type string - ParameterId["ZoneText"] = "zoneText"; - // DPI_AlignmentFlags, having type int - ParameterId["AlignmentFlags"] = "alignmentFlags"; - // DPI_AlphaLevel, having type int - ParameterId["AlphaLevel"] = "alphaLevel"; - // DPI_AnovaDF, having type int - ParameterId["AnovaDF"] = "anovaDf"; - // DPI_AtTheLevelIndex, having type int - ParameterId["AtTheLevelIndex"] = "atTheLevelIndex"; - // DPI_AutomaticDrillIdxInVector, having type int - ParameterId["AutomaticDrillIdxInVector"] = "automaticDrillIdxVector"; - // DPI_AutoSize, having type int - ParameterId["AutoSize"] = "automaticSize"; - // DPI_BaseCoord, having type int - ParameterId["BaseCoord"] = "baseCoord"; - // DPI_CalcEditorCursorPosPostDrop, having type int - ParameterId["CalcEditorCursorPosPostDrop"] = "calcEditorCursorPosPostDrop"; - // DPI_CalcEditorDropPos, having type int - ParameterId["CalcEditorDropPos"] = "calcEditorDropPos"; - // DPI_CalcEditorTextSelectionEndPos, having type int - ParameterId["CalcEditorTextSelectionEndPos"] = "calcEditorTextSelectionEndPos"; - // DPI_CalcEditorTextSelectionStartPos, having type int - ParameterId["CalcEditorTextSelectionStartPos"] = "calcEditorTextSelectionStartPos"; - // DPI_CategoricalBinId, having type int - ParameterId["CategoricalBinId"] = "categoricalBinId"; - // DPI_CategoricalFindControllerId, having type int - ParameterId["CategoricalFindControllerId"] = "categoricalFindControllerId"; - // DPI_ClauseToModifyIndex, having type int - ParameterId["ClauseToModifyIndex"] = "clauseToModifyIndex"; - // DPI_ClientRenderPixelLimit, having type int - ParameterId["ClientRenderPixelLimit"] = "clientRenderPixelLimit"; - // DPI_ColCount, having type int - ParameterId["ColCount"] = "colCount"; - // DPI_ColWidth, having type int - ParameterId["ColWidth"] = "colWidth"; - // DPI_ColumnLevels, having type int - ParameterId["ColumnLevels"] = "columnLevels"; - // DPI_ColumnNumber, having type int - ParameterId["ColumnNumber"] = "columnNumber"; - // DPI_ColumnWidth, having type int - ParameterId["ColumnWidth"] = "columnWidth"; - // DPI_ContentHeight, having type int - ParameterId["ContentHeight"] = "contentH"; - // DPI_ContentWidth, having type int - ParameterId["ContentWidth"] = "contentW"; - // DPI_ContentX, having type int - ParameterId["ContentX"] = "contentX"; - // DPI_ContentY, having type int - ParameterId["ContentY"] = "contentY"; - // DPI_Coordinate, having type int - ParameterId["Coordinate"] = "coord"; - // DPI_CurDateAgg, having type int - ParameterId["CurDateAgg"] = "curDateAgg"; - // DPI_CurrentCustViewId, having type int - ParameterId["CurrentCustViewId"] = "currentCustomViewId"; - // DPI_CustomSplitCharacterCountSeparator, having type int - ParameterId["CustomSplitCharacterCountSeparator"] = "customSplitCharacterCountSeparator"; - // DPI_CustomSplitDesiredSplitCount, having type int - ParameterId["CustomSplitDesiredSplitCount"] = "customSplitDesiredSplitCount"; - // DPI_DashboardGridSize, having type int - ParameterId["DashboardGridSize"] = "dashboardGridSize"; - // DPI_DataIndex, having type int - ParameterId["DataIndex"] = "dataIndex"; - // DPI_DecimalPlaces, having type int - ParameterId["DecimalPlaces"] = "decimalPlaces"; - // DPI_DeltaTime, having type int - ParameterId["DeltaTime"] = "deltaTime"; - // DPI_DestPix, having type int - ParameterId["DestPix"] = "destPix"; - // DPI_DeviceIndex, having type int - ParameterId["DeviceIndex"] = "deviceIndex"; - // DPI_Duration, having type int - ParameterId["Duration"] = "duration"; - // DPI_EndPtX, having type int - ParameterId["EndPtX"] = "endX"; - // DPI_EndPtY, having type int - ParameterId["EndPtY"] = "endY"; - // DPI_ErrorLen, having type int - ParameterId["ErrorLen"] = "lengthOfCalcOfError"; - // DPI_ErrorPos, having type int - ParameterId["ErrorPos"] = "startPositionForError"; - // DPI_ExceptionErrorMessageId, having type int - ParameterId["ExceptionErrorMessageId"] = "exceptionErrorMessageId"; - // DPI_ExtentsH, having type int - ParameterId["ExtentsH"] = "extentsHeight"; - // DPI_ExtentsW, having type int - ParameterId["ExtentsW"] = "extentsWidth"; - // DPI_ExtentsX, having type int - ParameterId["ExtentsX"] = "extentsX"; - // DPI_ExtentsY, having type int - ParameterId["ExtentsY"] = "extentsY"; - // DPI_FieldIndex, having type int - ParameterId["FieldIndex"] = "fieldIndex"; - // DPI_FieldNameId, having type int - ParameterId["FieldNameId"] = "fieldNameId"; - // DPI_FirstDayOfWeek, having type int - ParameterId["FirstDayOfWeek"] = "firstDayOfWeek"; - // DPI_FirstValueIndex, having type int - ParameterId["FirstValueIndex"] = "firstValueIndex"; - // DPI_FixedSizePresetIndex, having type int - ParameterId["FixedSizePresetIndex"] = "fixedSizePresetIndex"; - // DPI_FocusItemIndex, having type int - ParameterId["FocusItemIndex"] = "focusItemIndex"; - // DPI_FontSize, having type int - ParameterId["FontSize"] = "fontSize"; - // DPI_ForecastIntRangeEnd, having type int - ParameterId["ForecastIntRangeEnd"] = "forecastIntRangeEnd"; - // DPI_ForecastIntRangeStart, having type int - ParameterId["ForecastIntRangeStart"] = "forecastIntRangeStart"; - // DPI_FunctionHelpIndex, having type int - ParameterId["FunctionHelpIndex"] = "functionHelpIndex"; - // DPI_GeographicSearchMaxResults, having type int - ParameterId["GeographicSearchMaxResults"] = "geographicSearchMaxResults"; - // DPI_Height, having type int - ParameterId["Height"] = "h"; - // DPI_HierarchyLevel, having type int - ParameterId["HierarchyLevel"] = "hierarchyLevel"; - // DPI_HierarchyLevelLoaded, having type int - ParameterId["HierarchyLevelLoaded"] = "hierarchyLevelLoaded"; - // DPI_HierarchyLevelMinimum, having type int - ParameterId["HierarchyLevelMinimum"] = "hierarchyLevelMinimum"; - // DPI_HierarchyLoadLimit, having type int - ParameterId["HierarchyLoadLimit"] = "hierarchyLoadLimit"; - // DPI_HierarchySelectControllerId, having type int - ParameterId["HierarchySelectControllerId"] = "hierarchySelectControllerId"; - // DPI_HorzTextCell, having type int - ParameterId["HorzTextCell"] = "horzTextCell"; - // DPI_ImageIndex, having type int - ParameterId["ImageIndex"] = "imageIndex"; - // DPI_ImageSizeLimit, having type int - ParameterId["ImageSizeLimit"] = "imageSizeLimit"; - // DPI_TransparentLineMarksLimit, having type int - ParameterId["TransparentLineMarksLimit"] = "transparentLineMarksLimit"; - // DPI_Indent, having type int - ParameterId["Indent"] = "indent"; - // DPI_Index, having type int - ParameterId["Index"] = "idx"; - // DPI_IndexFrom, having type int - ParameterId["IndexFrom"] = "indexFrom"; - // DPI_IndexOffset, having type int - ParameterId["IndexOffset"] = "indexOffset"; - // DPI_IndexTo, having type int - ParameterId["IndexTo"] = "indexTo"; - // DPI_InlineConnectionRenameRow, having type int - ParameterId["InlineConnectionRenameRow"] = "inlineConnectionRenameRow"; - // DPI_InsertPos, having type int - ParameterId["InsertPos"] = "insertPos"; - // DPI_IsHasDataSupported, having type int - ParameterId["IsHasDataSupported"] = "isHasDataSupported"; - // DPI_LeftMargin, having type int - ParameterId["LeftMargin"] = "leftMargin"; - // DPI_LeftRightBorderWidth, having type int - ParameterId["LeftRightBorderWidth"] = "leftRightBorderWidth"; - // DPI_LowerBound, having type int - ParameterId["LowerBound"] = "lowerBound"; - // DPI_MapRequestPixels, having type int - ParameterId["MapRequestPixels"] = "mapRequestPixels"; - // DPI_MapScaleFontSizePixels, having type int - ParameterId["MapScaleFontSizePixels"] = "mapScaleFontSizePixels"; - // DPI_MapScaleReadoutNumber, having type int - ParameterId["MapScaleReadoutNumber"] = "mapScaleReadoutNumber"; - // DPI_MapScaleWidth, having type int - ParameterId["MapScaleWidth"] = "mapScaleWidth"; - // DPI_MapTileSize, having type int - ParameterId["MapTileSize"] = "mapTileSize"; - // DPI_Margin, having type int - ParameterId["Margin"] = "margin"; - // DPI_MarginBottom, having type int - ParameterId["MarginBottom"] = "marginBottom"; - // DPI_MarginLeft, having type int - ParameterId["MarginLeft"] = "marginLeft"; - // DPI_MarginRight, having type int - ParameterId["MarginRight"] = "marginRight"; - // DPI_MarginTop, having type int - ParameterId["MarginTop"] = "marginTop"; - // DPI_MaxCell, having type int - ParameterId["MaxCell"] = "maxCell"; - // DPI_MaxItemSpan, having type int - ParameterId["MaxItemSpan"] = "maxItemSpan"; - // DPI_MaxPolynomialDegree, having type int - ParameterId["MaxPolynomialDegree"] = "maxDegree"; - // DPI_MaxPosition, having type int - ParameterId["MaxPosition"] = "maxPosition"; - // DPI_MaxSize, having type int - ParameterId["MaxSize"] = "maxSize"; - // DPI_MinCell, having type int - ParameterId["MinCell"] = "minCell"; - // DPI_MinPolynomialDegree, having type int - ParameterId["MinPolynomialDegree"] = "minDegree"; - // DPI_MinPosition, having type int - ParameterId["MinPosition"] = "minPosition"; - // DPI_MinSize, having type int - ParameterId["MinSize"] = "minSize"; - // DPI_ModelDF, having type int - ParameterId["ModelDF"] = "modelDf"; - // DPI_NewIndex, having type int - ParameterId["NewIndex"] = "newIndex"; - // DPI_NumDataSourcesUsingServer, having type int - ParameterId["NumDataSourcesUsingServer"] = "numDataSourcesUsingServer"; - // DPI_NumFilteredObs, having type int - ParameterId["NumFilteredObs"] = "filteredObservations"; - // DPI_NumModeledObs, having type int - ParameterId["NumModeledObs"] = "modeledObservations"; - // DPI_NumNotClustered, having type int - ParameterId["NumNotClustered"] = "numNotClustered"; - // DPI_NumNumericFields, having type int - ParameterId["NumNumericFields"] = "numNumericFields"; - // DPI_NumOutliers, having type int - ParameterId["NumOutliers"] = "numOutliers"; - // DPI_NumRows, having type int - ParameterId["NumRows"] = "numRows"; - // DPI_NumSelected, having type int - ParameterId["NumSelected"] = "numSelected"; - // DPI_OffsetX, having type int - ParameterId["OffsetX"] = "offsetX"; - // DPI_OffsetY, having type int - ParameterId["OffsetY"] = "offsetY"; - // DPI_Padding, having type int - ParameterId["Padding"] = "padding"; - // DPI_PaddingBottom, having type int - ParameterId["PaddingBottom"] = "paddingBottom"; - // DPI_PaddingLeft, having type int - ParameterId["PaddingLeft"] = "paddingLeft"; - // DPI_PaddingRight, having type int - ParameterId["PaddingRight"] = "paddingRight"; - // DPI_PaddingTop, having type int - ParameterId["PaddingTop"] = "paddingTop"; - // DPI_PageLoadPercentage, having type int - ParameterId["PageLoadPercentage"] = "pageLoadPercentage"; - // DPI_PaletteIndex, having type int - ParameterId["PaletteIndex"] = "paletteIndex"; - // DPI_PaneSpecificationId, having type int - ParameterId["PaneSpecificationId"] = "paneSpec"; - // DPI_ParameterCtrlIncrementsPerTick, having type int - ParameterId["ParameterCtrlIncrementsPerTick"] = "parameterControlIncrementMultiplier"; - // DPI_PolynomialDegree, having type int - ParameterId["PolynomialDegree"] = "degree"; - // DPI_Port, having type int - ParameterId["Port"] = "datasourcePort"; - // DPI_Position, having type int - ParameterId["Position"] = "position"; - // DPI_ParentProjectId, having type int - ParameterId["ParentProjectId"] = "parentProjectId"; - // DPI_PublishResultStringId, having type int - ParameterId["PublishResultStringId"] = "publishResultStringId"; - // DPI_Radius, having type int - ParameterId["Radius"] = "radius"; - // DPI_ReadoutOffset, having type int - ParameterId["ReadoutOffset"] = "readoutOffset"; - // DPI_ReferenceIndex, having type int - ParameterId["ReferenceIndex"] = "referenceIndex"; - // DPI_RegionHeight, having type int - ParameterId["RegionHeight"] = "regionHeight"; - // DPI_RegionWidth, having type int - ParameterId["RegionWidth"] = "regionWidth"; - // DPI_RemovedDatasourceCount, having type int - ParameterId["RemovedDatasourceCount"] = "removedDatasourceCount"; - // DPI_RemovedSheetCount, having type int - ParameterId["RemovedSheetCount"] = "removedSheetCount"; - // DPI_ResidualDF, having type int - ParameterId["ResidualDF"] = "residualDf"; - // DPI_ResizeColumn, having type int - ParameterId["ResizeColumn"] = "resizeColumn"; - // DPI_RestartEveryIndex, having type int - ParameterId["RestartEveryIndex"] = "restartEveryIndex"; - // DPI_RightMargin, having type int - ParameterId["RightMargin"] = "rightMargin"; - // DPI_RowCount, having type int - ParameterId["RowCount"] = "rowCount"; - // DPI_RowHeight, having type int - ParameterId["RowHeight"] = "rowHeight"; - // DPI_RowInnerLevels, having type int - ParameterId["RowInnerLevels"] = "rowInnerLevels"; - // DPI_RowLevels, having type int - ParameterId["RowLevels"] = "rowLevels"; - // DPI_RowNumber, having type int - ParameterId["RowNumber"] = "rowNumber"; - // DPI_RowWidth, having type int - ParameterId["RowWidth"] = "rowWidth"; - // DPI_SecondValueIndex, having type int - ParameterId["SecondValueIndex"] = "secondValueIndex"; - // DPI_SecondsAgo, having type int - ParameterId["SecondsAgo"] = "secondsAgo"; - // DPI_SelectionEnd, having type int - ParameterId["SelectionEnd"] = "selectionEnd"; - // DPI_SelectionStart, having type int - ParameterId["SelectionStart"] = "selectionStart"; - // DPI_ShapePaletteID, having type int - ParameterId["ShapePaletteID"] = "shapePaletteId"; - // DPI_SheetIndex, having type int - ParameterId["SheetIndex"] = "sheetIndex"; - // DPI_ShelfPositionIndex, having type int - ParameterId["ShelfPositionIndex"] = "shelfPosIndex"; - // DPI_Size, having type int - ParameterId["Size"] = "size"; - // DPI_SizeDifference, having type int - ParameterId["SizeDifference"] = "sizeDelta"; - // DPI_SnapDistance, having type int - ParameterId["SnapDistance"] = "snapDistance"; - // DPI_SnapLocation, having type int - ParameterId["SnapLocation"] = "snapLocation"; - // DPI_SolveOrder, having type int - ParameterId["SolveOrder"] = "solveOrder"; - // DPI_SpaceBetweenPoints, having type int - ParameterId["SpaceBetweenPoints"] = "spaceBetweenPoints"; - // DPI_StepSize, having type int - ParameterId["StepSize"] = "stepSize"; - // DPI_Steps, having type int - ParameterId["Steps"] = "steps"; - // DPI_StoryPointIndex, having type int - ParameterId["StoryPointIndex"] = "currentStorypointIndex"; - // DPI_StyleLen, having type int - ParameterId["StyleLen"] = "tokenLengthForStyle"; - // DPI_StylePos, having type int - ParameterId["StylePos"] = "tokenPositionForStyle"; - // DPI_SwatchAreaWidth, having type int - ParameterId["SwatchAreaWidth"] = "swatchWidth"; - // DPI_TargetBinId, having type int - ParameterId["TargetBinId"] = "targetBinId"; - // DPI_TargetPtX, having type int - ParameterId["TargetPtX"] = "targetX"; - // DPI_TargetPtY, having type int - ParameterId["TargetPtY"] = "targetY"; - // DPI_TileFactor, having type int - ParameterId["TileFactor"] = "tileFactor"; - // DPI_TitleHeight, having type int - ParameterId["TitleHeight"] = "titleHeight"; - // DPI_TitleWidth, having type int - ParameterId["TitleWidth"] = "titleWidth"; - // DPI_TopBottomBorderWidth, having type int - ParameterId["TopBottomBorderWidth"] = "topBottomBorderWidth"; - // DPI_UIAutomationLineSize, having type int - ParameterId["UIAutomationLineSize"] = "uiAutomationLineSize"; - // DPI_UIAutomationPageSize, having type int - ParameterId["UIAutomationPageSize"] = "uiAutomationPageSize"; - // DPI_UID, having type int - ParameterId["UID"] = "uid"; - // DPI_UpperBound, having type int - ParameterId["UpperBound"] = "upperBound"; - // DPI_VertTextCell, having type int - ParameterId["VertTextCell"] = "vertTextCell"; - // DPI_Width, having type int - ParameterId["Width"] = "w"; - // DPI_X, having type int - ParameterId["X"] = "x"; - // DPI_Y, having type int - ParameterId["Y"] = "y"; - // DPI_ZOrder, having type int - ParameterId["ZOrder"] = "zOrder"; - // DPI_ZoneIconIndex, having type int - ParameterId["ZoneIconIndex"] = "zoneIconIndex"; - // DPI_AliasIndices, having type int[] - ParameterId["AliasIndices"] = "aliasIndices"; - // DPI_AnovaDFVec, having type int[] - ParameterId["AnovaDFVec"] = "anovaDfVector"; - // DPI_ColumnIndices, having type int[] - ParameterId["ColumnIndices"] = "columnIndices"; - // DPI_DrillFieldIndices, having type int[] - ParameterId["DrillFieldIndices"] = "drillFieldIndices"; - // DPI_FilterMaxIndices, having type int[] - ParameterId["FilterMaxIndices"] = "filterMaxIndices"; - // DPI_FilterMinIndices, having type int[] - ParameterId["FilterMinIndices"] = "filterMinIndices"; - // DPI_FilterValuesIndices, having type int[] - ParameterId["FilterValuesIndices"] = "filterValueIndices"; - // DPI_FormatStringIndices, having type int[] - ParameterId["FormatStringIndices"] = "formatstrIndices"; - // DPI_FormattedValIndices, having type int[] - ParameterId["FormattedValIndices"] = "formatValIdxs"; - // DPI_PaletteIndices, having type int[] - ParameterId["PaletteIndices"] = "palettesIndices"; - // DPI_PaneIndices, having type int[] - ParameterId["PaneIndices"] = "paneIndices"; - // DPI_Points, having type int[] - ParameterId["Points"] = "points"; - // DPI_QuickFilterSettings, having type int[] - ParameterId["QuickFilterSettings"] = "quickFilterSettings"; - // DPI_SelectedIndices, having type int[] - ParameterId["SelectedIndices"] = "selectedIndices"; - // DPI_ShelfPositionIndices, having type int[] - ParameterId["ShelfPositionIndices"] = "shelfPosIndices"; - // DPI_TileBox, having type int[] - ParameterId["TileBox"] = "tileBox"; - // DPI_TrailOverride, having type int[] - ParameterId["TrailOverride"] = "trailOverride"; - // DPI_UIDs, having type int[] - ParameterId["UIDs"] = "uids"; - // DPI_ValueIndices, having type int[] - ParameterId["ValueIndices"] = "valueIndices"; - // DPI_XCellOffsets, having type int[] - ParameterId["XCellOffsets"] = "xCellOffsets"; - // DPI_XPixelOffsets, having type int[] - ParameterId["XPixelOffsets"] = "xPixelOffsets"; - // DPI_YCellOffsets, having type int[] - ParameterId["YCellOffsets"] = "yCellOffsets"; - // DPI_YPixelOffsets, having type int[] - ParameterId["YPixelOffsets"] = "yPixelOffsets"; - // DPI_IntMap, having type Dictionary(of int) - ParameterId["IntMap"] = "intMap"; - // DPI_SelectedAuthSettingIndices, having type Dictionary(of int) - ParameterId["SelectedAuthSettingIndices"] = "selectedAuthSettingIndices"; - // DPI_ActiveStoryPointID, having type uint - ParameterId["ActiveStoryPointID"] = "activeStoryPointId"; - // DPI_ActiveZoneID, having type uint - ParameterId["ActiveZoneID"] = "activeZoneId"; - // DPI_ActualSize, having type uint - ParameterId["ActualSize"] = "actualSize"; - // DPI_AddInDebugPort, having type uint - ParameterId["AddInDebugPort"] = "addInDebugPort"; - // DPI_AggregationIndex, having type uint - ParameterId["AggregationIndex"] = "aggregationIndex"; - // DPI_AnnotationID, having type uint - ParameterId["AnnotationID"] = "annotationId"; - // DPI_AssignedAliasCount, having type uint - ParameterId["AssignedAliasCount"] = "assignedAliasCount"; - // DPI_CapabilityId, having type uint - ParameterId["CapabilityId"] = "capabilityId"; - // DPI_CaretIndex, having type uint - ParameterId["CaretIndex"] = "caretIndex"; - // DPI_CellID, having type uint - ParameterId["CellID"] = "cellId"; - // DPI_ColumnIndex, having type uint - ParameterId["ColumnIndex"] = "columnIndex"; - // DPI_CommandID, having type uint - ParameterId["CommandID"] = "id"; - // DPI_CommandIndex, having type uint - ParameterId["CommandIndex"] = "index"; - // DPI_ControllerId, having type uint - ParameterId["ControllerId"] = "controllerId"; - // DPI_Count, having type uint - ParameterId["Count"] = "count"; - // DPI_URowCount, having type uint - ParameterId["URowCount"] = "uRowCount"; - // DPI_UColumnCount, having type uint - ParameterId["UColumnCount"] = "uColumnCount"; - // DPI_CurrentPage, having type uint - ParameterId["CurrentPage"] = "currentPage"; - // DPI_DatePeriodsCount, having type uint - ParameterId["DatePeriodsCount"] = "datePeriodsCount"; - // DPI_Decimals, having type uint - ParameterId["Decimals"] = "decimals"; - // DPI_DefaultHeight, having type uint - ParameterId["DefaultHeight"] = "defaultHeight"; - // DPI_DefaultItem, having type uint - ParameterId["DefaultItem"] = "defaultItem"; - // DPI_DefaultWidth, having type uint - ParameterId["DefaultWidth"] = "defaultWidth"; - // DPI_Depth, having type uint - ParameterId["Depth"] = "depth"; - // DPI_DetailID, having type uint - ParameterId["DetailID"] = "detailId"; - // DPI_DrillLevel, having type uint - ParameterId["DrillLevel"] = "drillLevel"; - // DPI_DuplicateIndex, having type uint - ParameterId["DuplicateIndex"] = "duplicateIndex"; - // DPI_EndIndex, having type uint - ParameterId["EndIndex"] = "endIndex"; - // DPI_FieldIconIdx, having type uint - ParameterId["FieldIconIdx"] = "fieldIconIdx"; - // DPI_FilterLevel, having type uint - ParameterId["FilterLevel"] = "filterLevel"; - // DPI_FilterTileSize, having type uint - ParameterId["FilterTileSize"] = "filterTileSize"; - // DPI_FiscalYearStart, having type uint - ParameterId["FiscalYearStart"] = "fiscalYearStart"; - // DPI_FitPagesAcross, having type uint - ParameterId["FitPagesAcross"] = "pageFitHorizontal"; - // DPI_FitPagesDown, having type uint - ParameterId["FitPagesDown"] = "pageFitVertical"; - // DPI_FixedIndex, having type uint - ParameterId["FixedIndex"] = "fixedIndex"; - // DPI_FlipboardZoneID, having type uint - ParameterId["FlipboardZoneID"] = "flipboardZoneId"; - // DPI_ForecastAutoRangeSize, having type uint - ParameterId["ForecastAutoRangeSize"] = "forecastAutoRangeSize"; - // DPI_ForecastEndOfRange, having type uint - ParameterId["ForecastEndOfRange"] = "forecastEndOfRange"; - // DPI_ForecastIgnoreLast, having type uint - ParameterId["ForecastIgnoreLast"] = "forecastIgnoreLast"; - // DPI_ForecastNextRangeSize, having type uint - ParameterId["ForecastNextRangeSize"] = "forecastNextRangeSize"; - // DPI_GroupFlags, having type uint - ParameterId["GroupFlags"] = "groupFlag"; - // DPI_HierarchyLevels, having type uint - ParameterId["HierarchyLevels"] = "hierarchyLevels"; - // DPI_HierarchyMemberId, having type uint - ParameterId["HierarchyMemberId"] = "hierarchyMemberId"; - // DPI_HitTestFlags, having type uint - ParameterId["HitTestFlags"] = "hitTestFlags"; - // DPI_ImageHeight, having type uint - ParameterId["ImageHeight"] = "imageHeight"; - // DPI_ImageWidth, having type uint - ParameterId["ImageWidth"] = "imageWidth"; - // DPI_ItemIndex, having type uint - ParameterId["ItemIndex"] = "itemIndex"; - // DPI_ItemIndex1, having type uint - ParameterId["ItemIndex1"] = "itemIndex1"; - // DPI_LineHeight, having type uint - ParameterId["LineHeight"] = "lineHeight"; - // DPI_MapIntermediateLevels, having type uint - ParameterId["MapIntermediateLevels"] = "mapIntermediateLevels"; - // DPI_MapWorldRepeats, having type uint - ParameterId["MapWorldRepeats"] = "mapWorldRepeats"; - // DPI_MaxAlpha, having type uint - ParameterId["MaxAlpha"] = "maxAlpha"; - // DPI_MaxHeight, having type uint - ParameterId["MaxHeight"] = "maxHeight"; - // DPI_MaxNumberWebListItems, having type uint - ParameterId["MaxNumberWebListItems"] = "maxNumberWebListItems"; - // DPI_MaxPrevOrNextValues, having type uint - ParameterId["MaxPrevOrNextValues"] = "maxPrevOrNextValues"; - // DPI_MaxRows, having type uint - ParameterId["MaxRows"] = "maxRows"; - // DPI_MaxTransparency, having type uint - ParameterId["MaxTransparency"] = "colorMaxTransparencyValue"; - // DPI_MaxWidth, having type uint - ParameterId["MaxWidth"] = "maxWidth"; - // DPI_MinColumns, having type uint - ParameterId["MinColumns"] = "minColumns"; - // DPI_MinHeight, having type uint - ParameterId["MinHeight"] = "minHeight"; - // DPI_MinPrevOrNextValues, having type uint - ParameterId["MinPrevOrNextValues"] = "minPrevOrNextValues"; - // DPI_MinTransparency, having type uint - ParameterId["MinTransparency"] = "colorMinTransparencyValue"; - // DPI_MinWidth, having type uint - ParameterId["MinWidth"] = "minWidth"; - // DPI_NestedCalcsIndex, having type uint - ParameterId["NestedCalcsIndex"] = "nestedCalcsIndex"; - // DPI_NextValues, having type uint - ParameterId["NextValues"] = "nextValues"; - // DPI_NodeLevel, having type uint - ParameterId["NodeLevel"] = "nodeLevel"; - // DPI_NumHighlighted, having type uint - ParameterId["NumHighlighted"] = "numHighlighted"; - // DPI_NumberOfNextValues, having type uint - ParameterId["NumberOfNextValues"] = "numberOfNextValues"; - // DPI_NumberOfPrevValues, having type uint - ParameterId["NumberOfPrevValues"] = "numberOfPrevValues"; - // DPI_ObjectID, having type uint - ParameterId["ObjectID"] = "objectId"; - // DPI_OrderingTypeIndex, having type uint - ParameterId["OrderingTypeIndex"] = "orderingTypeIndex"; - // DPI_PageCount, having type uint - ParameterId["PageCount"] = "pageCount"; - // DPI_PageFadeEnd, having type uint - ParameterId["PageFadeEnd"] = "fadeEnd"; - // DPI_PageFadeStart, having type uint - ParameterId["PageFadeStart"] = "fadeStart"; - // DPI_PageIndex, having type uint - ParameterId["PageIndex"] = "pageIndex"; - // DPI_PageNumber, having type uint - ParameterId["PageNumber"] = "pageNumber"; - // DPI_PageScalePercent, having type uint - ParameterId["PageScalePercent"] = "pageScalePercent"; - // DPI_PageTrailLength, having type uint - ParameterId["PageTrailLength"] = "historyLength"; - // DPI_PaletteFlagsVal, having type uint - ParameterId["PaletteFlagsVal"] = "paletteFlagsVal"; - // DPI_PaneIndex, having type uint - ParameterId["PaneIndex"] = "paneIndex"; - // DPI_ParamCtrlDisplayFlags, having type uint - ParameterId["ParamCtrlDisplayFlags"] = "paramDisplayFlags"; - // DPI_ParentZoneID, having type uint - ParameterId["ParentZoneID"] = "parentZoneId"; - // DPI_PercentileParam, having type uint - ParameterId["PercentileParam"] = "percentileParam"; - // DPI_PrevValues, having type uint - ParameterId["PrevValues"] = "prevValues"; - // DPI_QRGBColor, having type uint - ParameterId["QRGBColor"] = "qrgbColor"; - // DPI_RangeN, having type uint - ParameterId["RangeN"] = "rangeN"; - // DPI_RankTypeIndex, having type uint - ParameterId["RankTypeIndex"] = "rankTypeIndex"; - // DPI_RenderComplexity, having type uint - ParameterId["RenderComplexity"] = "renderComplexityLimit"; - // DPI_RowIndex, having type uint - ParameterId["RowIndex"] = "rowIndex"; - // DPI_SelectedAuthSettingIndex, having type uint - ParameterId["SelectedAuthSettingIndex"] = "selectedAuthSettingIndex"; - // DPI_SelectedFullScheduleIndex, having type uint - ParameterId["SelectedFullScheduleIndex"] = "selectedFullScheduleIndex"; - // DPI_SelectedIncrScheduleIndex, having type uint - ParameterId["SelectedIncrScheduleIndex"] = "selectedIncrScheduleIndex"; - // DPI_SelectedPublishChoiceIndex, having type uint - ParameterId["SelectedPublishChoiceIndex"] = "selectedPublishChoiceIndex"; - // DPI_SelectedMemberCount, having type uint - ParameterId["SelectedMemberCount"] = "selectedMemberCount"; - // DPI_ShapeID, having type uint - ParameterId["ShapeID"] = "shapeId"; - // DPI_SheetUseCount, having type uint - ParameterId["SheetUseCount"] = "useCount"; - // DPI_ShelfItemID, having type uint - ParameterId["ShelfItemID"] = "shelfItemId"; - // DPI_SigFigs, having type uint - ParameterId["SigFigs"] = "sigFigs"; - // DPI_SortAggIndex, having type uint - ParameterId["SortAggIndex"] = "sortAggIndvValues"; - // DPI_SortColumnIndex, having type uint - ParameterId["SortColumnIndex"] = "sortColumnIndex"; - // DPI_SortDirectionIndex, having type uint - ParameterId["SortDirectionIndex"] = "sortDirectionIndex"; - // DPI_SortFieldIndex, having type uint - ParameterId["SortFieldIndex"] = "sortFieldIndex"; - // DPI_StartIndex, having type uint - ParameterId["StartIndex"] = "startIndex"; - // DPI_StartOfWeek, having type uint - ParameterId["StartOfWeek"] = "startOfWeek"; - // DPI_StoryPointID, having type uint - ParameterId["StoryPointID"] = "storyPointId"; - // DPI_TableCalcTypeIndex, having type uint - ParameterId["TableCalcTypeIndex"] = "tableCalcTypeIndex"; - // DPI_TableCalcTypesUsed, having type uint - ParameterId["TableCalcTypesUsed"] = "tableCalcTypesUsed"; - // DPI_TemplateIndex, having type uint - ParameterId["TemplateIndex"] = "templateIndex"; - // DPI_TileCount, having type uint - ParameterId["TileCount"] = "tileCount"; - // DPI_TimeoutSeconds, having type uint - ParameterId["TimeoutSeconds"] = "timeoutSeconds"; - // DPI_TopN, having type uint - ParameterId["TopN"] = "topN"; - // DPI_TotalNumberOfItemsInSet, having type uint - ParameterId["TotalNumberOfItemsInSet"] = "totalNumberOfItemsInSet"; - // DPI_TotalMemberCount, having type uint - ParameterId["TotalMemberCount"] = "totalMemberCount"; - // DPI_Transparency, having type uint - ParameterId["Transparency"] = "colorTransparencyValue"; - // DPI_TupleID, having type uint - ParameterId["TupleID"] = "tupleId"; - // DPI_UIndex, having type uint - ParameterId["UIndex"] = "uindex"; - // DPI_UndoPosition, having type uint - ParameterId["UndoPosition"] = "undoPosition"; - // DPI_UnsignedWidth, having type uint - ParameterId["UnsignedWidth"] = "uw"; - // DPI_UnsignedWidthBottom, having type uint - ParameterId["UnsignedWidthBottom"] = "uwb"; - // DPI_UnsignedWidthLeft, having type uint - ParameterId["UnsignedWidthLeft"] = "uwl"; - // DPI_UnsignedWidthRight, having type uint - ParameterId["UnsignedWidthRight"] = "uwr"; - // DPI_UnsignedWidthTop, having type uint - ParameterId["UnsignedWidthTop"] = "uwt"; - // DPI_ValueIndex, having type uint - ParameterId["ValueIndex"] = "valueIndex"; - // DPI_ValueInt, having type uint - ParameterId["ValueInt"] = "valueInt"; - // DPI_WorldOffset, having type uint - ParameterId["WorldOffset"] = "worldOffset"; - // DPI_XDuplicateIndex, having type uint - ParameterId["XDuplicateIndex"] = "xDuplicateIndex"; - // DPI_XIndex, having type uint - ParameterId["XIndex"] = "xIndex"; - // DPI_YDuplicateIndex, having type uint - ParameterId["YDuplicateIndex"] = "yDuplicateIndex"; - // DPI_YIndex, having type uint - ParameterId["YIndex"] = "yIndex"; - // DPI_ZoneID, having type uint - ParameterId["ZoneID"] = "zoneId"; - // DPI_ZoneZOrder, having type uint - ParameterId["ZoneZOrder"] = "zoneZOrder"; - // DPI_ComponentID, having type uint - ParameterId["ComponentID"] = "componentId"; - // DPI_NonThreadPoolUseCount, having type uint - ParameterId["NonThreadPoolUseCount"] = "nonThreadPoolUseCount"; - // DPI_AddressingIndices, having type uint[] - ParameterId["AddressingIndices"] = "addressingIndices"; - // DPI_AddressingInvalidIndices, having type uint[] - ParameterId["AddressingInvalidIndices"] = "addressingInvalidIndices"; - // DPI_ChildZoneIds, having type uint[] - ParameterId["ChildZoneIds"] = "childZoneIds"; - // DPI_ColorList, having type uint[] - ParameterId["ColorList"] = "colorList"; - // DPI_DuplicateIndices, having type uint[] - ParameterId["DuplicateIndices"] = "duplicateIndices"; - // DPI_FilterAddIndices, having type uint[] - ParameterId["FilterAddIndices"] = "filterAddIndices"; - // DPI_FilterIndices, having type uint[] - ParameterId["FilterIndices"] = "filterIndices"; - // DPI_FilterLevelAdd, having type uint[] - ParameterId["FilterLevelAdd"] = "filterLevelAdd"; - // DPI_FilterLevelRemove, having type uint[] - ParameterId["FilterLevelRemove"] = "filterLevelRemove"; - // DPI_FilterLevels, having type uint[] - ParameterId["FilterLevels"] = "filterLevels"; - // DPI_FilterRemoveIndices, having type uint[] - ParameterId["FilterRemoveIndices"] = "filterRemoveIndices"; - // DPI_FixedValues, having type uint[] - ParameterId["FixedValues"] = "fixedValues"; - // DPI_HierarchyMemberIdList, having type uint[] - ParameterId["HierarchyMemberIdList"] = "hierarchyMemberIdList"; - // DPI_InvalidIndices, having type uint[] - ParameterId["InvalidIndices"] = "invalidIndices"; - // DPI_ItemIndices, having type uint[] - ParameterId["ItemIndices"] = "itemIndices"; - // DPI_LineTupleIDs, having type uint[] - ParameterId["LineTupleIDs"] = "lineTupleIds"; - // DPI_ObjectIDs, having type uint[] - ParameterId["ObjectIDs"] = "objectIds"; - // DPI_PageIndices, having type uint[] - ParameterId["PageIndices"] = "pageIndices"; - // DPI_QRGB, having type uint[] - ParameterId["QRGB"] = "qrgbList"; - // DPI_QRGBColors, having type uint[] - ParameterId["QRGBColors"] = "qrgbColors"; - // DPI_RefLineID, having type uint[] - ParameterId["RefLineID"] = "reflineId"; - // DPI_ShapeIDs, having type uint[] - ParameterId["ShapeIDs"] = "shapeIds"; - // DPI_ShelfSelection, having type uint[] - ParameterId["ShelfSelection"] = "shelfSelection"; - // DPI_StoryPointIDs, having type uint[] - ParameterId["StoryPointIDs"] = "storyPointIds"; - // DPI_TupleIDs, having type uint[] - ParameterId["TupleIDs"] = "tupleIds"; - // DPI_Widths, having type uint[] - ParameterId["Widths"] = "widths"; - // DPI_UintMap, having type Dictionary(of uint32_t) - ParameterId["UintMap"] = "uintMap"; - // DPI_Alpha, having type float - ParameterId["Alpha"] = "alpha"; - // DPI_Angle, having type float - ParameterId["Angle"] = "angle"; - // DPI_BreakPointValue, having type float - ParameterId["BreakPointValue"] = "breakPointValue"; - // DPI_DevicePixelRatio, having type float - ParameterId["DevicePixelRatio"] = "devicePixelRatio"; - // DPI_Distance, having type float - ParameterId["Distance"] = "distance"; - // DPI_FloatX, having type float - ParameterId["FloatX"] = "floatX"; - // DPI_FloatY, having type float - ParameterId["FloatY"] = "floatY"; - // DPI_FogDesaturation, having type float - ParameterId["FogDesaturation"] = "fogDesaturation"; - // DPI_MarkScale, having type float - ParameterId["MarkScale"] = "markScale"; - // DPI_MarkSizeInPixelUnits, having type float - ParameterId["MarkSizeInPixelUnits"] = "markSizeInPixelUnits"; - // DPI_PointSize, having type float - ParameterId["PointSize"] = "pointSize"; - // DPI_StrokeWidth, having type float - ParameterId["StrokeWidth"] = "strokeWidth"; - // DPI_TextRegionOrientation, having type float - ParameterId["TextRegionOrientation"] = "orientation"; - // DPI_TransformAngle, having type float - ParameterId["TransformAngle"] = "transformAngle"; - // DPI_ZoomLevel, having type float - ParameterId["ZoomLevel"] = "zoomLevel"; - // DPI_OldZoomLevel, having type float - ParameterId["OldZoomLevel"] = "oldZoomLevel"; - // DPI_NewZoomLevel, having type float - ParameterId["NewZoomLevel"] = "newZoomLevel"; - // DPI_AspectRatio, having type float - ParameterId["AspectRatio"] = "aspectRatio"; - // DPI_BottomPrintMargin, having type float - ParameterId["BottomPrintMargin"] = "bottomPrintMargin"; - // DPI_EarthRadius, having type float - ParameterId["EarthRadius"] = "earthRadius"; - // DPI_FloatHeight, having type float - ParameterId["FloatHeight"] = "floatHeight"; - // DPI_FloatLeft, having type float - ParameterId["FloatLeft"] = "floatLeft"; - // DPI_FloatRadius, having type float - ParameterId["FloatRadius"] = "floatRadius"; - // DPI_FloatTop, having type float - ParameterId["FloatTop"] = "floatTop"; - // DPI_FloatWidth, having type float - ParameterId["FloatWidth"] = "floatWidth"; - // DPI_LeftPrintMargin, having type float - ParameterId["LeftPrintMargin"] = "leftPrintMargin"; - // DPI_MapCenterLatitude, having type float - ParameterId["MapCenterLatitude"] = "mapCenterLatitude"; - // DPI_MapCenterLongitude, having type float - ParameterId["MapCenterLongitude"] = "mapCenterLongitude"; - // DPI_MapDisplayScale, having type float - ParameterId["MapDisplayScale"] = "mapDisplayScale"; - // DPI_MapMaxStretch, having type float - ParameterId["MapMaxStretch"] = "mapMaxStretch"; - // DPI_MapMaxZoom, having type float - ParameterId["MapMaxZoom"] = "mapMaxZoom"; - // DPI_MapMinShrink, having type float - ParameterId["MapMinShrink"] = "mapMinShrink"; - // DPI_MapMinZoom, having type float - ParameterId["MapMinZoom"] = "mapMinZoom"; - // DPI_MapRequestZoom, having type float - ParameterId["MapRequestZoom"] = "mapRequestZoom"; - // DPI_MapWashout, having type float - ParameterId["MapWashout"] = "mapWashout"; - // DPI_MaxLatitude, having type float - ParameterId["MaxLatitude"] = "maxLatitude"; - // DPI_MaxLongitude, having type float - ParameterId["MaxLongitude"] = "maxLongitude"; - // DPI_MinLatitude, having type float - ParameterId["MinLatitude"] = "minLatitude"; - // DPI_MinLongitude, having type float - ParameterId["MinLongitude"] = "minLongitude"; - // DPI_RightPrintMargin, having type float - ParameterId["RightPrintMargin"] = "rightPrintMargin"; - // DPI_TopPrintMargin, having type float - ParameterId["TopPrintMargin"] = "topPrintMargin"; - // DPI_UIAutomationMaximum, having type float - ParameterId["UIAutomationMaximum"] = "uiAutomationMaximum"; - // DPI_UIAutomationMinimum, having type float - ParameterId["UIAutomationMinimum"] = "uiAutomationMinimum"; - // DPI_UIAutomationOffset, having type float - ParameterId["UIAutomationOffset"] = "uiAutomationOffset"; - // DPI_UnitDivisor, having type float - ParameterId["UnitDivisor"] = "unitDivisor"; - // DPI_UnitTransition, having type float - ParameterId["UnitTransition"] = "unitTransition"; - // DPI_AutomaticDrillIdx, having type float[] - ParameterId["AutomaticDrillIdx"] = "automaticDrillIdx"; - // DPI_DestinationBox, having type float[] - ParameterId["DestinationBox"] = "destBox"; - // DPI_LowerEnd, having type float[] - ParameterId["LowerEnd"] = "lowerEnd"; - // DPI_OppositeAxis, having type float[] - ParameterId["OppositeAxis"] = "oppositeAxis"; - // DPI_PointsF, having type float[] - ParameterId["PointsF"] = "pointsF"; - // DPI_SourceBox, having type float[] - ParameterId["SourceBox"] = "sourceBox"; - // DPI_TransformOffset, having type float[] - ParameterId["TransformOffset"] = "transformOffset"; - // DPI_TransformScale, having type float[] - ParameterId["TransformScale"] = "transformScale"; - // DPI_UpperEnd, having type float[] - ParameterId["UpperEnd"] = "upperEnd"; - // DPI_FloatMap, having type Dictionary(of float) - ParameterId["FloatMap"] = "floatMap"; - // DPI_BGSS, having type double - ParameterId["BGSS"] = "betweenGroupSumOfSquares"; - // DPI_ConfidenceLevel, having type double - ParameterId["ConfidenceLevel"] = "confidenceLevel"; - // DPI_ConfidencePercentage, having type double - ParameterId["ConfidencePercentage"] = "confidencePercentage"; - // DPI_DoubleLeft, having type double - ParameterId["DoubleLeft"] = "doubleLeft"; - // DPI_DoubleTop, having type double - ParameterId["DoubleTop"] = "doubleTop"; - // DPI_DoubleValue, having type double - ParameterId["DoubleValue"] = "doubleValue"; - // DPI_DoubleX, having type double - ParameterId["DoubleX"] = "doubleX"; - // DPI_DoubleY, having type double - ParameterId["DoubleY"] = "doubleY"; - // DPI_FStatistic, having type double - ParameterId["FStatistic"] = "fStatistic"; - // DPI_FilterRangeMax, having type double - ParameterId["FilterRangeMax"] = "filterRangeMax"; - // DPI_FilterRangeMin, having type double - ParameterId["FilterRangeMin"] = "filterRangeMin"; - // DPI_GeographicSearchCandidateScore, having type double - ParameterId["GeographicSearchCandidateScore"] = "geographicSearchCandidateScore"; - // DPI_HeightD, having type double - ParameterId["HeightD"] = "height"; - // DPI_InflectionFraction, having type double - ParameterId["InflectionFraction"] = "inflectionFraction"; - // DPI_InflectionValue, having type double - ParameterId["InflectionValue"] = "inflectionValue"; - // DPI_MSE, having type double - ParameterId["MSE"] = "meanSquaredError"; - // DPI_MSM, having type double - ParameterId["MSM"] = "meanSquaredModel"; - // DPI_MapScaleMarginOfError, having type double - ParameterId["MapScaleMarginOfError"] = "mapScaleMarginOfError"; - // DPI_MarkSize, having type double - ParameterId["MarkSize"] = "markSize"; - // DPI_MaxMarkSize, having type double - ParameterId["MaxMarkSize"] = "maxMarkSize"; - // DPI_MinMarkSize, having type double - ParameterId["MinMarkSize"] = "minMarkSize"; - // DPI_NotchPosition, having type double - ParameterId["NotchPosition"] = "notchPosition"; - // DPI_NotchValue, having type double - ParameterId["NotchValue"] = "notchValue"; - // DPI_PValue, having type double - ParameterId["PValue"] = "pValue"; - // DPI_PercentDimensions, having type double - ParameterId["PercentDimensions"] = "percentDimensions"; - // DPI_PercentGroups, having type double - ParameterId["PercentGroups"] = "percentGroups"; - // DPI_PercentMeasures, having type double - ParameterId["PercentMeasures"] = "percentMeasures"; - // DPI_RSquared, having type double - ParameterId["RSquared"] = "rSquared"; - // DPI_SSE, having type double - ParameterId["SSE"] = "sumSquaredError"; - // DPI_SSM, having type double - ParameterId["SSM"] = "sumSquaredModel"; - // DPI_StandardError, having type double - ParameterId["StandardError"] = "standardError"; - // DPI_TSS, having type double - ParameterId["TSS"] = "totalSumOfSquares"; - // DPI_WGSS, having type double - ParameterId["WGSS"] = "withinGroupSumOfSquares"; - // DPI_WidthD, having type double - ParameterId["WidthD"] = "width"; - // DPI_ZoomFactor, having type double - ParameterId["ZoomFactor"] = "zoomFactor"; - // DPI_CoefficientPValueVec, having type double[] - ParameterId["CoefficientPValueVec"] = "coefficientPValueVector"; - // DPI_CoefficientStdErrVec, having type double[] - ParameterId["CoefficientStdErrVec"] = "coefficientStdErrorVector"; - // DPI_CoefficientTValueVec, having type double[] - ParameterId["CoefficientTValueVec"] = "coefficientTValueVector"; - // DPI_CoefficientVec, having type double[] - ParameterId["CoefficientVec"] = "coefficientVector"; - // DPI_FStatisticVec, having type double[] - ParameterId["FStatisticVec"] = "trendLineFStatisticVector"; - // DPI_Factors, having type double[] - ParameterId["Factors"] = "factors"; - // DPI_MSEVec, having type double[] - ParameterId["MSEVec"] = "meanSquaredErrorVector"; - // DPI_Means, having type double[] - ParameterId["Means"] = "means"; - // DPI_PValueVec, having type double[] - ParameterId["PValueVec"] = "pValueVector"; - // DPI_Percentages, having type double[] - ParameterId["Percentages"] = "percentages"; - // DPI_Percentiles, having type double[] - ParameterId["Percentiles"] = "percentiles"; - // DPI_SSEVec, having type double[] - ParameterId["SSEVec"] = "sumSquaredErrorVector"; - // DPI_StDevs, having type double[] - ParameterId["StDevs"] = "stdev"; - // DPI_UnscaledMeans, having type double[] - ParameterId["UnscaledMeans"] = "unscaledMeans"; - // DPI_DeltaTimeMs, having type long - ParameterId["DeltaTimeMs"] = "deltaTimeMs"; - // DPI_ExtractHistoryRowCount, having type long - ParameterId["ExtractHistoryRowCount"] = "extractRowCount"; - // DPI_ExtractHistoryRowsRemoved, having type long - ParameterId["ExtractHistoryRowsRemoved"] = "extractRowsRemoved"; - // DPI_ExtractsSize, having type long - ParameterId["ExtractsSize"] = "extractsSize"; - // DPI_OldExtractSize, having type long - ParameterId["OldExtractSize"] = "oldExtractSize"; - // DPI_RowsInserted, having type long - ParameterId["RowsInserted"] = "rowsInserted"; - // DPI_SampleSize, having type long - ParameterId["SampleSize"] = "sampleSize"; - // DPI_SampleSpace, having type long - ParameterId["SampleSpace"] = "sampleSpace"; - // DPI_ThreadPoolUseCount, having type long - ParameterId["ThreadPoolUseCount"] = "threadPoolUseCount"; - // DPI_ActionId, having type string - ParameterId["ActionId"] = "actionId"; - // DPI_AxisColumn, having type string - ParameterId["AxisColumn"] = "axisColumn"; - // DPI_BaseColumnName, having type string - ParameterId["BaseColumnName"] = "baseColumnName"; - // DPI_BreakPointFieldName, having type string - ParameterId["BreakPointFieldName"] = "breakPointFieldName"; - // DPI_PairedFieldName, having type string - ParameterId["PairedFieldName"] = "pairedFn"; - // DPI_FieldNameAllowEmpty, having type string - ParameterId["FieldNameAllowEmpty"] = "fieldNameAllowEmpty"; - // DPI_FieldNameDisAgg, having type string - ParameterId["FieldNameDisAgg"] = "fnDisagg"; - // DPI_FieldNameLocal, having type string - ParameterId["FieldNameLocal"] = "fieldNameLocal"; - // DPI_FieldNamePrev, having type string - ParameterId["FieldNamePrev"] = "fnPrev"; - // DPI_FieldNameSource, having type string - ParameterId["FieldNameSource"] = "fnSource"; - // DPI_FieldNameTarget, having type string - ParameterId["FieldNameTarget"] = "fnTarget"; - // DPI_FieldNameX, having type string - ParameterId["FieldNameX"] = "fnX"; - // DPI_FieldNameY, having type string - ParameterId["FieldNameY"] = "fnY"; - // DPI_FieldToSort, having type string - ParameterId["FieldToSort"] = "fieldToSort"; - // DPI_GlobalFieldName, having type string - ParameterId["GlobalFieldName"] = "globalFieldName"; - // DPI_HierarchyName, having type string - ParameterId["HierarchyName"] = "hierarchyName"; - // DPI_InvalidAggFieldName, having type string - ParameterId["InvalidAggFieldName"] = "invalidAggFieldName"; - // DPI_InvalidFieldName, having type string - ParameterId["InvalidFieldName"] = "invalidFieldName"; - // DPI_LimitParameterName, having type string - ParameterId["LimitParameterName"] = "limitParameterName"; - // DPI_LocalBaseColumnName, having type string - ParameterId["LocalBaseColumnName"] = "localBaseColumnName"; - // DPI_MeasureName, having type string - ParameterId["MeasureName"] = "measureName"; - // DPI_NestedCalcField, having type string - ParameterId["NestedCalcField"] = "nestedCalcFn"; - // DPI_ParameterName, having type string - ParameterId["ParameterName"] = "parameterName"; - // DPI_ReferenceParam, having type string - ParameterId["ReferenceParam"] = "referenceParam"; - // DPI_ReplacementFieldName, having type string - ParameterId["ReplacementFieldName"] = "replacementFieldName"; - // DPI_RHSTableAlias, having type string - ParameterId["RHSTableAlias"] = "rhsTableAlias"; - // DPI_SortMeasureName, having type string - ParameterId["SortMeasureName"] = "sortMeasureName"; - // DPI_UniqueName, having type string - ParameterId["UniqueName"] = "uniqueName"; - // DPI_ValueColumn, having type string - ParameterId["ValueColumn"] = "valueColumn"; - // DPI_PairedValueColumn, having type string - ParameterId["PairedValueColumn"] = "pairedValueColumn"; - // DPI_ActionIds, having type string[] - ParameterId["ActionIds"] = "actionIds"; - // DPI_AddressingValues, having type string[] - ParameterId["AddressingValues"] = "addressingValues"; - // DPI_AllColumns, having type string[] - ParameterId["AllColumns"] = "allColumns"; - // DPI_AtTheLevelValues, having type string[] - ParameterId["AtTheLevelValues"] = "atTheLevelValues"; - // DPI_AutomaticDrillFieldName, having type string[] - ParameterId["AutomaticDrillFieldName"] = "automaticDrillFieldName"; - // DPI_BlendingFieldCandidates, having type string[] - ParameterId["BlendingFieldCandidates"] = "blendingFieldCandidates"; - // DPI_Columns, having type string[] - ParameterId["Columns"] = "columns"; - // DPI_CurrentBlendingFields, having type string[] - ParameterId["CurrentBlendingFields"] = "currentBlendingFields"; - // DPI_DimensionsToSort, having type string[] - ParameterId["DimensionsToSort"] = "dimensionsToSort"; - // DPI_DrillFieldVector, having type string[] - ParameterId["DrillFieldVector"] = "drillFieldVector"; - // DPI_EncodingFieldVector, having type string[] - ParameterId["EncodingFieldVector"] = "encodingFieldVector"; - // DPI_FieldVector, having type string[] - ParameterId["FieldVector"] = "fieldVector"; - // DPI_FilterFields, having type string[] - ParameterId["FilterFields"] = "filterFields"; - // DPI_LODFieldVector, having type string[] - ParameterId["LODFieldVector"] = "lodFieldVector"; - // DPI_LegendColumns, having type string[] - ParameterId["LegendColumns"] = "legendColumns"; - // DPI_LegendNames, having type string[] - ParameterId["LegendNames"] = "legendNames"; - // DPI_NodeColumns, having type string[] - ParameterId["NodeColumns"] = "nodeColumns"; - // DPI_PageFields, having type string[] - ParameterId["PageFields"] = "pageFields"; - // DPI_ParamValues, having type string[] - ParameterId["ParamValues"] = "paramValues"; - // DPI_RefLineFields, having type string[] - ParameterId["RefLineFields"] = "reflineFields"; - // DPI_ReferencedColumns, having type string[] - ParameterId["ReferencedColumns"] = "referencedColumns"; - // DPI_RelatedFieldNames, having type string[] - ParameterId["RelatedFieldNames"] = "relatedFieldNames"; - // DPI_RemoveActionResults, having type string[] - ParameterId["RemoveActionResults"] = "removeActionResults"; - // DPI_ResponseVector, having type string[] - ParameterId["ResponseVector"] = "responseVector"; - // DPI_RestartEveryValues, having type string[] - ParameterId["RestartEveryValues"] = "restartEveryValues"; - // DPI_ResultFields, having type string[] - ParameterId["ResultFields"] = "resultFields"; - // DPI_SortFieldValues, having type string[] - ParameterId["SortFieldValues"] = "sortFieldValues"; - // DPI_XFields, having type string[] - ParameterId["XFields"] = "xFields"; - // DPI_YFields, having type string[] - ParameterId["YFields"] = "yFields"; - // DPI_ConnectionFullName, having type string - ParameterId["ConnectionFullName"] = "connectionFullName"; - // DPI_ConnectionFullNames, having type string[] - ParameterId["ConnectionFullNames"] = "connectionFullNames"; - // DPI_BoundDataValue, having type object - ParameterId["BoundDataValue"] = "boundDataValue"; - // DPI_DataValue, having type object - ParameterId["DataValue"] = "dataValue"; - // DPI_DataValueIncrement, having type object - ParameterId["DataValueIncrement"] = "dataValueIncrement"; - // DPI_DataValueLowerX, having type object - ParameterId["DataValueLowerX"] = "dataValueLowerX"; - // DPI_DataValueLowerY, having type object - ParameterId["DataValueLowerY"] = "dataValueLowerY"; - // DPI_DataValueUpperX, having type object - ParameterId["DataValueUpperX"] = "dataValueUpperX"; - // DPI_DataValueUpperY, having type object - ParameterId["DataValueUpperY"] = "dataValueUpperY"; - // DPI_DefaultDataValue, having type object - ParameterId["DefaultDataValue"] = "defaultDataValue"; - // DPI_MaxDataValue, having type object - ParameterId["MaxDataValue"] = "maxDataValue"; - // DPI_MinDataValue, having type object - ParameterId["MinDataValue"] = "minDataValue"; - // DPI_ValidatedDataValue, having type object - ParameterId["ValidatedDataValue"] = "validatedDataValue"; - // DPI_BinSize, having type object - ParameterId["BinSize"] = "binSize"; - // DPI_LimitCount, having type object - ParameterId["LimitCount"] = "limitCount"; - // DPI_DataValueList, having type object[] - ParameterId["DataValueList"] = "dataValueList"; - // DPI_FieldCaptionPair, having type FieldCaptionPairPresModel - ParameterId["FieldCaptionPair"] = "fieldCaptionPair"; - // DPI_FieldCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["FieldCaptionPairs"] = "fieldCaptionPairs"; - // DPI_ParameterCaptionPairs, having type FieldCaptionPairPresModel[] - ParameterId["ParameterCaptionPairs"] = "parameterCaptionPairs"; - // DPI_VaryingAttributeDimensions, having type FieldCaptionPairPresModel[] - ParameterId["VaryingAttributeDimensions"] = "varyingAttributeDimensions"; - // DPI_FieldCaptionPairState, having type FieldCaptionPairStatePresModel - ParameterId["FieldCaptionPairState"] = "fieldCaptionPairState"; - // DPI_FieldCaptionPairStates, having type FieldCaptionPairStatePresModel[] - ParameterId["FieldCaptionPairStates"] = "fieldCaptionPairStates"; - // DPI_DatasourceCaptionPair, having type DatasourceCaptionPairPresModel - ParameterId["DatasourceCaptionPair"] = "datasourceCaptionPair"; - // DPI_DatasourceCaptionPairs, having type DatasourceCaptionPairPresModel[] - ParameterId["DatasourceCaptionPairs"] = "datasourceCaptionPairs"; - // DPI_SheetNameInfoPair, having type SheetNameInfoPairPresModel - ParameterId["SheetNameInfoPair"] = "sheetNameInfoPair"; - // DPI_SheetNameInfoPairs, having type SheetNameInfoPairPresModel[] - ParameterId["SheetNameInfoPairs"] = "sheetNameInfoPairs"; - // DPI_BGActiveColor, having type string - ParameterId["BGActiveColor"] = "bgActiveColor"; - // DPI_BGColor, having type string - ParameterId["BGColor"] = "bgColor"; - // DPI_BGRestColor, having type string - ParameterId["BGRestColor"] = "bgRestColor"; - // DPI_BorderColor, having type string - ParameterId["BorderColor"] = "borderColor"; - // DPI_BorderColorBottom, having type string - ParameterId["BorderColorBottom"] = "borderColorBottom"; - // DPI_BorderColorLeft, having type string - ParameterId["BorderColorLeft"] = "borderColorLeft"; - // DPI_BorderColorRight, having type string - ParameterId["BorderColorRight"] = "borderColorRight"; - // DPI_BorderColorTop, having type string - ParameterId["BorderColorTop"] = "borderColorTop"; - // DPI_Color, having type string - ParameterId["Color"] = "color"; - // DPI_Color1, having type string - ParameterId["Color1"] = "color1"; - // DPI_Color2, having type string - ParameterId["Color2"] = "color2"; - // DPI_DefaultColor, having type string - ParameterId["DefaultColor"] = "defaultColor"; - // DPI_DistanceFontColor, having type string - ParameterId["DistanceFontColor"] = "distanceFontColor"; - // DPI_FillColor, having type string - ParameterId["FillColor"] = "fillColor"; - // DPI_FogColor, having type string - ParameterId["FogColor"] = "fogColor"; - // DPI_HeaderColor, having type string - ParameterId["HeaderColor"] = "headerColor"; - // DPI_HighlightBGColor, having type string - ParameterId["HighlightBGColor"] = "highlightBgColor"; - // DPI_HighlightTextColor, having type string - ParameterId["HighlightTextColor"] = "highlightTextColor"; - // DPI_HoverColor, having type string - ParameterId["HoverColor"] = "hoverColor"; - // DPI_MapAttributionFill, having type string - ParameterId["MapAttributionFill"] = "mapAttributionFill"; - // DPI_MapAttributionTextColor, having type string - ParameterId["MapAttributionTextColor"] = "mapAttributionTextColor"; - // DPI_MapPaneBackgroundFill, having type string - ParameterId["MapPaneBackgroundFill"] = "mapPaneBackgroundFill"; - // DPI_MapScaleBorderColor, having type string - ParameterId["MapScaleBorderColor"] = "mapScaleBorderColor"; - // DPI_MapScaleColor, having type string - ParameterId["MapScaleColor"] = "mapScaleColor"; - // DPI_MapWaitTileFill, having type string - ParameterId["MapWaitTileFill"] = "mapWaitTileFill"; - // DPI_MarkColor, having type string - ParameterId["MarkColor"] = "markColor"; - // DPI_NavArrowDisabledColor, having type string - ParameterId["NavArrowDisabledColor"] = "navArrowDisabledColor"; - // DPI_NavArrowHoverColor, having type string - ParameterId["NavArrowHoverColor"] = "navArrowHoverColor"; - // DPI_NavArrowIdleColor, having type string - ParameterId["NavArrowIdleColor"] = "navArrowIdleColor"; - // DPI_NavArrowPressedColor, having type string - ParameterId["NavArrowPressedColor"] = "navArrowPressedColor"; - // DPI_PaneColor, having type string - ParameterId["PaneColor"] = "paneColor"; - // DPI_PressColor, having type string - ParameterId["PressColor"] = "pressColor"; - // DPI_ResizeBorderColor, having type string - ParameterId["ResizeBorderColor"] = "resizeBorderColor"; - // DPI_SelectBGColor, having type string - ParameterId["SelectBGColor"] = "selectBgColor"; - // DPI_SelectionTextColor, having type string - ParameterId["SelectionTextColor"] = "selectionTextColor"; - // DPI_SwatchBackgroundColor, having type string - ParameterId["SwatchBackgroundColor"] = "swatchBgColor"; - // DPI_SwatchBorderColor, having type string - ParameterId["SwatchBorderColor"] = "swatchBorderColor"; - // DPI_TabColor, having type string - ParameterId["TabColor"] = "tabColor"; - // DPI_Colors, having type string[] - ParameterId["Colors"] = "colors"; - // DPI_ColorMap, having type Dictionary(of string) - ParameterId["ColorMap"] = "colorMap"; - // DPI_Pixmap, having type string - ParameterId["Pixmap"] = "pixmap"; - // DPI_Image, having type string - ParameterId["Image"] = "image"; - // DPI_OverlayImage, having type string - ParameterId["OverlayImage"] = "overlayImage"; - // DPI_IconImage, having type string - ParameterId["IconImage"] = "iconImage"; - // DPI_ImageList, having type string[] - ParameterId["ImageList"] = "imageList"; - // DPI_ImageMap, having type Dictionary(of string) - ParameterId["ImageMap"] = "imageMap"; - // DPI_UUID, having type object - ParameterId["UUID"] = "uuid"; - // DPI_Nanoseconds, having type object - ParameterId["Nanoseconds"] = "nanoseconds"; - // DPI_Microseconds, having type object - ParameterId["Microseconds"] = "microseconds"; - // DPI_Milliseconds, having type object - ParameterId["Milliseconds"] = "milliseconds"; - // DPI_TimeoutS, having type object - ParameterId["TimeoutS"] = "timeoutS"; - // DPI_Minutes, having type object - ParameterId["Minutes"] = "minutes"; - // DPI_Hours, having type object - ParameterId["Hours"] = "hours"; - // DPI_CardType, having type CardType - ParameterId["CardType"] = "cardType"; - // DPI_DocParameterID, having type string - ParameterId["DocParameterID"] = "type"; - // DPI_ArgumentParam, having type string - ParameterId["ArgumentParam"] = "argumentParam"; - // DPI_ArgumentParams, having type string[] - ParameterId["ArgumentParams"] = "argumentParams"; - // DPI_ActionType, having type ActionType - ParameterId["ActionType"] = "actionType"; - // DPI_AnnotateEnum, having type AnnotateEnum - ParameterId["AnnotateEnum"] = "annotateEnum"; - // DPI_JoinType, having type SQLJoinType - ParameterId["JoinType"] = "joinType"; - // DPI_SupportedJoinTypes, having type SQLJoinType[] - ParameterId["SupportedJoinTypes"] = "supportedJoinTypes"; - // DPI_Rounding, having type Rounding - ParameterId["Rounding"] = "roundingEnum"; - // DPI_BodyType, having type BodyType - ParameterId["BodyType"] = "bodyType"; - // DPI_LineEnd, having type LineEnd - ParameterId["LineEnd"] = "lineEndEnum"; - // DPI_LineEndSize, having type LineEndSize - ParameterId["LineEndSize"] = "lineEndSizeEnum"; - // DPI_BrushSpecialFields, having type BrushSpecialFields - ParameterId["BrushSpecialFields"] = "specialFields"; - // DPI_CellSizeChange, having type CellSizeChange - ParameterId["CellSizeChange"] = "cellSizeChange"; - // DPI_CellType, having type CellType - ParameterId["CellType"] = "cellType"; - // DPI_ConnectionAttemptResult, having type ConnectionAttemptResult - ParameterId["ConnectionAttemptResult"] = "connectionAttemptResult"; - // DPI_ConnectionErrorStage, having type ConnectionErrorStage - ParameterId["ConnectionErrorStage"] = "connectionErrorStage"; - // DPI_ConnectionErrorType, having type ConnectionErrorType - ParameterId["ConnectionErrorType"] = "connectionErrorType"; - // DPI_DataServerConnectionResult, having type DataServerConnectionResult - ParameterId["DataServerConnectionResult"] = "dsConnectionResult"; - // DPI_DropWhen, having type DropWhen - ParameterId["DropWhen"] = "dropWhen"; - // DPI_DropType, having type DropFieldResult - ParameterId["DropType"] = "dropType"; - // DPI_EncodingType, having type EncodingType - ParameterId["EncodingType"] = "encodingType"; - // DPI_DropdownEncodingType, having type EncodingType - ParameterId["DropdownEncodingType"] = "dropdownEncodingType"; - // DPI_EncodingTypes, having type EncodingType[] - ParameterId["EncodingTypes"] = "encodingTypes"; - // DPI_FieldOrderType, having type FieldOrderType - ParameterId["FieldOrderType"] = "fieldOrderType"; - // DPI_FilterIconType, having type FilterIconType - ParameterId["FilterIconType"] = "filterIconType"; - // DPI_FilterIconTypes, having type FilterIconType[] - ParameterId["FilterIconTypes"] = "filterIconTypes"; - // DPI_FloatingToolbarVis, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVis"] = "toolbarVisibility"; - // DPI_FolderRole, having type FolderRole - ParameterId["FolderRole"] = "folderRole"; - // DPI_LegendType, having type Enum - ParameterId["LegendType"] = "legendType"; - // DPI_ForecastModelType, having type ForecastModelType - ParameterId["ForecastModelType"] = "forecastModelType"; - // DPI_ForecastTrendType, having type ForecastComponentType - ParameterId["ForecastTrendType"] = "forecastTrendType"; - // DPI_ForecastSeasonType, having type ForecastComponentType - ParameterId["ForecastSeasonType"] = "forecastSeasonType"; - // DPI_ForecastRangeType, having type ForecastRangeType - ParameterId["ForecastRangeType"] = "forecastRangeType"; - // DPI_ForecastStatus, having type ForecastStatus - ParameterId["ForecastStatus"] = "forecastStatus"; - // DPI_SheetForecastStatus, having type ForecastStatus - ParameterId["SheetForecastStatus"] = "sheetForecastStatus"; - // DPI_PDForecastStatusList, having type ForecastStatus[] - ParameterId["PDForecastStatusList"] = "paneDescriptorForecastStatusList"; - // DPI_ForecastColumnType, having type ForecastColumnType - ParameterId["ForecastColumnType"] = "forecastColumnType"; - // DPI_DataScaling, having type DataScaling - ParameterId["DataScaling"] = "dataScaling"; - // DPI_GetFilterItemsJsonResponse, having type GetJsonResponseEnum - ParameterId["GetFilterItemsJsonResponse"] = "getFilterItemsJsonResponse"; - // DPI_FilterSearchJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchJsonResponse"] = "filterSearchJsonResponse"; - // DPI_FilterSearchWithIndexJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterSearchWithIndexJsonResponse"] = "filterSearchWithIndexJsonResponse"; - // DPI_FilterShowChildrenJsonResponse, having type GetJsonResponseEnum - ParameterId["FilterShowChildrenJsonResponse"] = "filterShowChildrenJsonResponse"; - // DPI_HAlignment, having type LabelHAlignment - ParameterId["HAlignment"] = "horizontalLabelAlignment"; - // DPI_JoinValidationError, having type JoinValidationError - ParameterId["JoinValidationError"] = "joinValidationError"; - // DPI_NameConflictResolution, having type NameConflictResolution - ParameterId["NameConflictResolution"] = "nameConflictResolution"; - // DPI_LabelDir, having type TextOrient - ParameterId["LabelDir"] = "labelDirection"; - // DPI_LabelAlign, having type TextAlign - ParameterId["LabelAlign"] = "labelAlignment"; - // DPI_LabelWrap, having type TextWrapMode - ParameterId["LabelWrap"] = "labelWrap"; - // DPI_WrapMode, having type TextWrapMode - ParameterId["WrapMode"] = "wrapMode"; - // DPI_MarkEnum, having type MarkEnum - ParameterId["MarkEnum"] = "markEnum"; - // DPI_PercentMode, having type PercentMode - ParameterId["PercentMode"] = "percentageMode"; - // DPI_ReferenceOptionsSet, having type ReferenceOptionsSet - ParameterId["ReferenceOptionsSet"] = "referenceOptionsSet"; - // DPI_ReferenceOptionsSets, having type ReferenceOptionsSet[] - ParameterId["ReferenceOptionsSets"] = "referenceOptionsSets"; - // DPI_RankType, having type RankType - ParameterId["RankType"] = "rankType"; - // DPI_RankTypeValues, having type RankType[] - ParameterId["RankTypeValues"] = "rankTypeValues"; - // DPI_SpecialValuesMode, having type SpecialValuesMode - ParameterId["SpecialValuesMode"] = "specialValuesMode"; - // DPI_VAlignment, having type LabelVAlignment - ParameterId["VAlignment"] = "verticalLabelAlignment"; - // DPI_ColorMode, having type ColorMode - ParameterId["ColorMode"] = "colorMode"; - // DPI_MarkLabelsMode, having type MarkLabelsMode - ParameterId["MarkLabelsMode"] = "markLabelsMode"; - // DPI_MarkLabelsScope, having type MarkLabelsScope - ParameterId["MarkLabelsScope"] = "markLabelsScope"; - // DPI_MarkLabelsVisibility, having type MarkLabelsVisibility - ParameterId["MarkLabelsVisibility"] = "markLabelsVisibility"; - // DPI_PrimitiveType, having type PrimitiveType - ParameterId["PrimitiveType"] = "primitiveType"; - // DPI_ActualPrimitiveType, having type PrimitiveType - ParameterId["ActualPrimitiveType"] = "actualPrimitiveType"; - // DPI_PrimitiveTypes, having type PrimitiveType[] - ParameterId["PrimitiveTypes"] = "primitiveTypes"; - // DPI_ShapeType, having type ShapeType - ParameterId["ShapeType"] = "shapeType"; - // DPI_SortType, having type SortType - ParameterId["SortType"] = "sortBy"; - // DPI_SortEnd, having type SortEnd - ParameterId["SortEnd"] = "sortEnd"; - // DPI_StackingMode, having type StackingMode - ParameterId["StackingMode"] = "stackingMode"; - // DPI_StyleTheme, having type StyleTheme - ParameterId["StyleTheme"] = "styleTheme"; - // DPI_TrendLineFitType, having type TrendLineFitType - ParameterId["TrendLineFitType"] = "fitType"; - // DPI_UpdateScope, having type UpdateScope - ParameterId["UpdateScope"] = "updateScope"; - // DPI_ParameterCtrlDisplayMode, having type DisplayMode - ParameterId["ParameterCtrlDisplayMode"] = "paramDisplayMode"; - // DPI_ParameterCtrlDisplayFlag, having type ParameterCtrlDisplayFlag - ParameterId["ParameterCtrlDisplayFlag"] = "paramDisplayFlag"; - // DPI_Included, having type QuantitativeIncludedValues - ParameterId["Included"] = "included"; - // DPI_CommandsType, having type CommandsType - ParameterId["CommandsType"] = "commandsType"; - // DPI_ParameterDomainType, having type DomainType - ParameterId["ParameterDomainType"] = "parameterDomainType"; - // DPI_FilterDomainType, having type DomainType - ParameterId["FilterDomainType"] = "filterDomainType"; - // DPI_FilterDomains, having type DomainType[] - ParameterId["FilterDomains"] = "filterDomains"; - // DPI_CategoricalFilterType, having type CategoricalFilterType - ParameterId["CategoricalFilterType"] = "categoricalFilterType"; - // DPI_DatePeriodType, having type DatePeriodType - ParameterId["DatePeriodType"] = "datePeriodType"; - // DPI_FilterPatternType, having type PatternType - ParameterId["FilterPatternType"] = "filterPatternType"; - // DPI_FilterConditionType, having type ConditionType - ParameterId["FilterConditionType"] = "filterConditionType"; - // DPI_FiltersPresetType, having type PresetType - ParameterId["FiltersPresetType"] = "filtersPresetType"; - // DPI_FiltersRangeType, having type RangeType - ParameterId["FiltersRangeType"] = "filtersRangeType"; - // DPI_DateRangeType, having type RelativeDateRangeType - ParameterId["DateRangeType"] = "dateRangeType"; - // DPI_PageFlag, having type PageNavFlags - ParameterId["PageFlag"] = "pageFlag"; - // DPI_MarksToTrail, having type MarksToTrail - ParameterId["MarksToTrail"] = "marksToTrail"; - // DPI_TrailType, having type TrailType - ParameterId["TrailType"] = "trailType"; - // DPI_ChangePageDirection, having type ChangePageType - ParameterId["ChangePageDirection"] = "changeTo"; - // DPI_AnimationControl, having type PageAnimationControl - ParameterId["AnimationControl"] = "animationControl"; - // DPI_LinePattern, having type LinePattern - ParameterId["LinePattern"] = "linePattern"; - // DPI_LineCap, having type LineCap - ParameterId["LineCap"] = "lineCap"; - // DPI_LineJoin, having type LineJoin - ParameterId["LineJoin"] = "lineJoin"; - // DPI_LineAlignment, having type LineAlignment - ParameterId["LineAlignment"] = "lineAlignment"; - // DPI_FillMode, having type FillMode - ParameterId["FillMode"] = "fillMode"; - // DPI_CursorShape, having type CursorShape - ParameterId["CursorShape"] = "cursorShape"; - // DPI_ShowMeCommandType, having type ShowMeCommandType - ParameterId["ShowMeCommandType"] = "showMeCommandType"; - // DPI_ShelfIconType, having type ShelfIconType - ParameterId["ShelfIconType"] = "shelfIconType"; - // DPI_ShelfIconTypes, having type ShelfIconType[] - ParameterId["ShelfIconTypes"] = "shelfIconTypes"; - // DPI_ItemDrawStyle, having type ItemDrawStyle - ParameterId["ItemDrawStyle"] = "itemDrawStyle"; - // DPI_ScaleMode, having type ScaleMode - ParameterId["ScaleMode"] = "pageScaleMode"; - // DPI_PageOrientationOption, having type PageOrientation - ParameterId["PageOrientationOption"] = "pageOrientationOption"; - // DPI_PageSizeOption, having type PageSizeOption - ParameterId["PageSizeOption"] = "pageSizeOption"; - // DPI_SortRegionType, having type SortRegionType - ParameterId["SortRegionType"] = "sortRegion"; - // DPI_LegendItemLayout, having type LegendItemLayout - ParameterId["LegendItemLayout"] = "legendLayout"; - // DPI_LegendItemOrder, having type LegendItemOrder - ParameterId["LegendItemOrder"] = "legendOrder"; - // DPI_VizImageRegion, having type VizImageRegion - ParameterId["VizImageRegion"] = "r"; - // DPI_LegacyMenuName, having type LegacyMenuName - ParameterId["LegacyMenuName"] = "legacyMenuName"; - // DPI_LegacyMenuState, having type LegacyMenuState - ParameterId["LegacyMenuState"] = "legacyMenuState"; - // DPI_LegacyMenuStateList, having type LegacyMenuState[] - ParameterId["LegacyMenuStateList"] = "legacyMenuStates"; - // DPI_DimensionType, having type DimensionType - ParameterId["DimensionType"] = "dimensionType"; - // DPI_LayoutType, having type LayoutType - ParameterId["LayoutType"] = "layoutType"; - // DPI_ShelfType, having type ShelfType - ParameterId["ShelfType"] = "shelfType"; - // DPI_LastSelectionShelf, having type ShelfType - ParameterId["LastSelectionShelf"] = "lastShelf"; - // DPI_SchemaViewerDataSourceType, having type SchemaViewerDataSourceType - ParameterId["SchemaViewerDataSourceType"] = "schemaDatasourceType"; - // DPI_SchemaItemType, having type SchemaItemType - ParameterId["SchemaItemType"] = "schemaItemType"; - // DPI_HSMSelectionMode, having type SelectionMode - ParameterId["HSMSelectionMode"] = "hsmSelectionMode"; - // DPI_HSMDefaultMemberType, having type DefaultMemberType - ParameterId["HSMDefaultMemberType"] = "hsmDefaultMemberType"; - // DPI_HSMNotificationType, having type NotificationType - ParameterId["HSMNotificationType"] = "hsmNotificationType"; - // DPI_HSMSelectionRequestType, having type SelectionRequestType - ParameterId["HSMSelectionRequestType"] = "hsmSelectionRequestType"; - // DPI_HSMMemberSelectRequestType, having type MemberSelectRequestType - ParameterId["HSMMemberSelectRequestType"] = "hsmMemberSelectRequestType"; - // DPI_PivotStrategy, having type FieldPivotStrategy - ParameterId["PivotStrategy"] = "pivotStrategy"; - // DPI_AliasType, having type AliasType - ParameterId["AliasType"] = "aliasType"; - // DPI_DSODimensionSortOrder, having type DataSourceOrder - ParameterId["DSODimensionSortOrder"] = "dsoDimensionSortOrder"; - // DPI_DSOMeasureSortOrder, having type DataSourceOrder - ParameterId["DSOMeasureSortOrder"] = "dsoMeasureSortOrder"; - // DPI_DSOSortOrder, having type DataSourceOrder - ParameterId["DSOSortOrder"] = "dsoSortOrder"; - // DPI_VTAggType, having type VTAggType - ParameterId["VTAggType"] = "vtAggregation"; - // DPI_FieldTypeIconSet, having type FieldTypeIconSet - ParameterId["FieldTypeIconSet"] = "fieldIconSet"; - // DPI_VisualPart, having type VisualPart - ParameterId["VisualPart"] = "visualPart"; - // DPI_DefaultMapToolEnum, having type MapToolSelection - ParameterId["DefaultMapToolEnum"] = "defaultMapToolEnum"; - // DPI_DefaultMapUnitEnum, having type MapUnitSelectionEnum - ParameterId["DefaultMapUnitEnum"] = "defaultMapUnitEnum"; - // DPI_SceneModelDetail, having type Detail - ParameterId["SceneModelDetail"] = "sceneModelDetailEnum"; - // DPI_SceneModelHitType, having type HitType - ParameterId["SceneModelHitType"] = "sceneModelHitType"; - // DPI_HitTestStyle, having type HitTestStyle - ParameterId["HitTestStyle"] = "hitTestStyle"; - // DPI_MarkState, having type MarkState - ParameterId["MarkState"] = "markState"; - // DPI_SheetType, having type SheetType - ParameterId["SheetType"] = "sheetType"; - // DPI_DragSource, having type DragDropType - ParameterId["DragSource"] = "dragSource"; - // DPI_DropTarget, having type DragDropType - ParameterId["DropTarget"] = "dropTarget"; - // DPI_ShelfDropAction, having type ShelfDropAction - ParameterId["ShelfDropAction"] = "shelfDropAction"; - // DPI_ShelfDropContext, having type ShelfDropContext - ParameterId["ShelfDropContext"] = "shelfDropContext"; - // DPI_FilterSelectionTracking, having type SelectionTracking - ParameterId["FilterSelectionTracking"] = "filterSelectionTracking"; - // DPI_FilterUpdateType, having type FilterUpdateType - ParameterId["FilterUpdateType"] = "filterUpdateType"; - // DPI_FilterUpdateQualifierType, having type FilterUpdateQualifierType - ParameterId["FilterUpdateQualifierType"] = "filterUpdateQualifierType"; - // DPI_ParameterError, having type ParameterError - ParameterId["ParameterError"] = "parameterError"; - // DPI_SelectionType, having type SelectionType - ParameterId["SelectionType"] = "selectionType"; - // DPI_SelectionUpdateType, having type SelectionUpdateType - ParameterId["SelectionUpdateType"] = "selectionUpdateType"; - // DPI_SelectOptions, having type SelectOptions - ParameterId["SelectOptions"] = "selectOptions"; - // DPI_WhitespaceSelectionBehavior, having type WhitespaceSelectionBehavior - ParameterId["WhitespaceSelectionBehavior"] = "whitespaceSelectionBehavior"; - // DPI_AxisOrientation, having type Orientation - ParameterId["AxisOrientation"] = "axisOrientation"; - // DPI_DecimalMode, having type DecimalMode - ParameterId["DecimalMode"] = "decimalMode"; - // DPI_ActivationMethod, having type ActivationMethod - ParameterId["ActivationMethod"] = "activation"; - // DPI_SourceType, having type SourceType - ParameterId["SourceType"] = "sourceType"; - // DPI_OnClear, having type OnClear - ParameterId["OnClear"] = "onClear"; - // DPI_MergeOrSplit, having type MergeOrSplit - ParameterId["MergeOrSplit"] = "mergeOrSplit"; - // DPI_FilterMode, having type FilterMode - ParameterId["FilterMode"] = "filterMode"; - // DPI_FilterType, having type FilterType - ParameterId["FilterType"] = "filterType"; - // DPI_ZoneType, having type ZoneType - ParameterId["ZoneType"] = "zoneType"; - // DPI_ZoneLayoutType, having type ZoneLayoutType - ParameterId["ZoneLayoutType"] = "zoneLayoutType"; - // DPI_QuickTableCalcType, having type QuickTableCalcCommandType - ParameterId["QuickTableCalcType"] = "quickTableCalcType"; - // DPI_TableCalcCommandType, having type TableCalcCommandType - ParameterId["TableCalcCommandType"] = "tableCalcCommandType"; - // DPI_TableCalcAddressType, having type TableCalcAddressCommandType - ParameterId["TableCalcAddressType"] = "tableCalcAddressType"; - // DPI_MarkLayoutPrimitive, having type Primitive - ParameterId["MarkLayoutPrimitive"] = "markLayoutPrimitive"; - // DPI_MarkLayoutVizType, having type VizType - ParameterId["MarkLayoutVizType"] = "markLayoutVizType"; - // DPI_MarkAlignment, having type MarkAlignment - ParameterId["MarkAlignment"] = "markAlignment"; - // DPI_ModifyZoneZOrderType, having type ModifyZoneZOrderCommandType - ParameterId["ModifyZoneZOrderType"] = "modifyZoneZOrderType"; - // DPI_TextRegionHAlign, having type TextRegionHAlign - ParameterId["TextRegionHAlign"] = "halign"; - // DPI_TextRegionVAlign, having type TextRegionVAlign - ParameterId["TextRegionVAlign"] = "valign"; - // DPI_PathElement, having type PathElement - ParameterId["PathElement"] = "pathElement"; - // DPI_PathElements, having type PathElement[] - ParameterId["PathElements"] = "pathElements"; - // DPI_RenderMode, having type RenderMode - ParameterId["RenderMode"] = "renderMode"; - // DPI_FontStyle, having type TableauFontStyle - ParameterId["FontStyle"] = "fontStyle"; - // DPI_FontWeight, having type FontWeight - ParameterId["FontWeight"] = "fontWeight"; - // DPI_TextDecoration, having type TextDecoration - ParameterId["TextDecoration"] = "textDecoration"; - // DPI_BorderStyle, having type BorderStyle - ParameterId["BorderStyle"] = "borderStyle"; - // DPI_BorderStyleTop, having type BorderStyle - ParameterId["BorderStyleTop"] = "borderStyleTop"; - // DPI_BorderStyleRight, having type BorderStyle - ParameterId["BorderStyleRight"] = "borderStyleRight"; - // DPI_BorderStyleBottom, having type BorderStyle - ParameterId["BorderStyleBottom"] = "borderStyleBottom"; - // DPI_BorderStyleLeft, having type BorderStyle - ParameterId["BorderStyleLeft"] = "borderStyleLeft"; - // DPI_FloatingToolbarVisibility, having type FloatingToolbarVisibility - ParameterId["FloatingToolbarVisibility"] = "floatingToolbarVisibility"; - // DPI_GeoSearchVisibility, having type GeoSearchVisibility - ParameterId["GeoSearchVisibility"] = "geographicSearchVisibility"; - // DPI_MapScaleVisibility, having type MapScaleVisibility - ParameterId["MapScaleVisibility"] = "mapScaleVisibility"; - // DPI_VizNavigationSetting, having type VizNavigationSetting - ParameterId["VizNavigationSetting"] = "vizNavigationSetting"; - // DPI_AutoDrillVisibility, having type AutoDrillVisibility - ParameterId["AutoDrillVisibility"] = "autoDrillVisibility"; - // DPI_ClientUIMetricType, having type ClientUIMetricType - ParameterId["ClientUIMetricType"] = "clientUiMetricType"; - // DPI_SheetScrollDirection, having type SheetScrollDirection - ParameterId["SheetScrollDirection"] = "sheetScrollDirection"; - // DPI_SizeMode, having type SizeMode - ParameterId["SizeMode"] = "sizeMode"; - // DPI_PerspectiveAggregate, having type PerspectiveAggregate - ParameterId["PerspectiveAggregate"] = "perspectiveAggregation"; - // DPI_StyleAttribute, having type StyleAttribute - ParameterId["StyleAttribute"] = "styleAttribute"; - // DPI_StyleAttributes, having type StyleAttribute[] - ParameterId["StyleAttributes"] = "styleAttributes"; - // DPI_StyleElement, having type StyleElement - ParameterId["StyleElement"] = "styleElement"; - // DPI_StyleDataClass, having type StyleDataClass - ParameterId["StyleDataClass"] = "styleClass"; - // DPI_StyleFieldScope, having type StyleFieldScope - ParameterId["StyleFieldScope"] = "styleScope"; - // DPI_FormatControlType, having type FormatControlType - ParameterId["FormatControlType"] = "formatType"; - // DPI_LineInterpolationMode, having type LineInterpolationMode - ParameterId["LineInterpolationMode"] = "lineInterpolationMode"; - // DPI_LineMarkerPosition, having type LineMarkerPosition - ParameterId["LineMarkerPosition"] = "lineMarkerPosition"; - // DPI_MarkersMode, having type MarkMarkersMode - ParameterId["MarkersMode"] = "markersMode"; - // DPI_AppConfigEnum, having type AppConfigEnum - ParameterId["AppConfigEnum"] = "appConfigEnum"; - // DPI_ColorPaletteType, having type ColorPaletteType - ParameterId["ColorPaletteType"] = "colorPaletteType"; - // DPI_ExtractType, having type ExtractType - ParameterId["ExtractType"] = "extractType"; - // DPI_ActivityDisposition, having type ActivityDisposition - ParameterId["ActivityDisposition"] = "activityDisposition"; - // DPI_ActivityResult, having type ActivityResult - ParameterId["ActivityResult"] = "activityResult"; - // DPI_TooltipMode, having type TooltipMode - ParameterId["TooltipMode"] = "tooltipMode"; - // DPI_RuntimeOutput, having type RuntimeOutput - ParameterId["RuntimeOutput"] = "runtimeOutput"; - // DPI_AnalyticsObjectType, having type AnalyticsObjectType - ParameterId["AnalyticsObjectType"] = "analyticsObjectType"; - // DPI_UIAutomationStatus, having type UIAutomationCommandStatus - ParameterId["UIAutomationStatus"] = "uiAutomationStatus"; - // DPI_TableViewDataType, having type TableViewDataType - ParameterId["TableViewDataType"] = "tableViewerDataType"; - // DPI_UnitsFormat, having type UnitsFormatEnum - ParameterId["UnitsFormat"] = "unitsFormat"; - // DPI_FilterLimitType, having type LimitType - ParameterId["FilterLimitType"] = "filterLimitType"; - // DPI_DistributionSelectedType, having type DistributionType - ParameterId["DistributionSelectedType"] = "distributionSelectedType"; - // DPI_DistributionType, having type DistributionType - ParameterId["DistributionType"] = "distributionType"; - // DPI_TranslatedDistributionType, having type TranslatedDistributionTypePresModel - ParameterId["TranslatedDistributionType"] = "translatedDistributionType"; - // DPI_TranslatedDistributionTypes, having type TranslatedDistributionTypePresModel[] - ParameterId["TranslatedDistributionTypes"] = "translatedDistributionTypes"; - // DPI_RefLineFormulaGroup, having type FormulaGroup - ParameterId["RefLineFormulaGroup"] = "reflineFormulaGroup"; - // DPI_ReferenceLineScopeType, having type ScopeType - ParameterId["ReferenceLineScopeType"] = "referenceLineScopeType"; - // DPI_StDevType, having type StDevType - ParameterId["StDevType"] = "stdevType"; - // DPI_ShowBounds, having type ShowBounds - ParameterId["ShowBounds"] = "showBounds"; - // DPI_BoxplotWhiskerType, having type BoxplotWhiskerType - ParameterId["BoxplotWhiskerType"] = "boxplotWhiskerType"; - // DPI_ReferenceLineLabelType, having type LabelType - ParameterId["ReferenceLineLabelType"] = "referenceLineLabelType"; - // DPI_PairedReferenceLineLabelType, having type LabelType - ParameterId["PairedReferenceLineLabelType"] = "pairedReferenceLineLabelType"; - // DPI_ConfidenceIntervalSelectedState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalSelectedState"] = "confidenceIntervalSelectedState"; - // DPI_ConfidenceIntervalState, having type ConfidenceIntervalState - ParameterId["ConfidenceIntervalState"] = "confidenceIntervalState"; - // DPI_TranslatedLabelType, having type TranslatedLabelTypePresModel - ParameterId["TranslatedLabelType"] = "translatedLabelType"; - // DPI_ReferenceLineValidLabelTypes, having type TranslatedLabelTypePresModel[] - ParameterId["ReferenceLineValidLabelTypes"] = "validReferenceLineLabelTypes"; - // DPI_ReferenceLineFormulaType, having type FormulaType - ParameterId["ReferenceLineFormulaType"] = "referenceLineFormulaType"; - // DPI_PairedReferenceLineFormulaType, having type FormulaType - ParameterId["PairedReferenceLineFormulaType"] = "pairedReferenceLineFormulaType"; - // DPI_TranslatedFormulaType, having type TranslatedFormulaTypePresModel - ParameterId["TranslatedFormulaType"] = "translatedFormulaType"; - // DPI_ReferenceLineValidFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidFormulaTypes"] = "validReferenceLineFormulaTypes"; - // DPI_ReferenceLineValidPairedFormulaTypes, having type TranslatedFormulaTypePresModel[] - ParameterId["ReferenceLineValidPairedFormulaTypes"] = "validReferenceLinePairedFormulaTypes"; - // DPI_TranslatedConfidenceIntervalState, having type TranslatedConfidenceIntervalStatePresModel - ParameterId["TranslatedConfidenceIntervalState"] = "translatedConfidenceIntervalState"; - // DPI_TranslatedConfidenceIntervalStates, having type TranslatedConfidenceIntervalStatePresModel[] - ParameterId["TranslatedConfidenceIntervalStates"] = "translatedConfidenceIntervalStates"; - // DPI_TranslatedStDevType, having type TranslatedStDevTypePresModel - ParameterId["TranslatedStDevType"] = "translatedStdevType"; - // DPI_TranslatedStDevTypes, having type TranslatedStDevTypePresModel[] - ParameterId["TranslatedStDevTypes"] = "translatedStdevTypes"; - // DPI_ReferenceLineLODCalcType, having type LODCalcType - ParameterId["ReferenceLineLODCalcType"] = "referenceLineLodCalcType"; - // DPI_ValueDomainType, having type ValueDomainType - ParameterId["ValueDomainType"] = "valueDomainType"; - // DPI_ValueDomainTypes, having type ValueDomainType[] - ParameterId["ValueDomainTypes"] = "valueDomainTypes"; - // DPI_OperationType, having type OperationType - ParameterId["OperationType"] = "operationType"; - // DPI_OperationTypes, having type OperationType[] - ParameterId["OperationTypes"] = "operationTypes"; - // DPI_ConnectionTypeCategory, having type ConnectionTypeCategory - ParameterId["ConnectionTypeCategory"] = "connectionTypeCategory"; - // DPI_ConnectionTypeGroup, having type ConnectionTypeGroup - ParameterId["ConnectionTypeGroup"] = "connectionTypeGroup"; - // DPI_CommandRedirectType, having type CommandRedirectType - ParameterId["CommandRedirectType"] = "commandRedirectType"; - // DPI_CustomSplitMode, having type SplitMode - ParameterId["CustomSplitMode"] = "customSplitMode"; - // DPI_CustomSplitSeparatorType, having type SeparatorType - ParameterId["CustomSplitSeparatorType"] = "customSplitSeparatorType"; - // DPI_LevelSelectionState, having type LevelSelectionState - ParameterId["LevelSelectionState"] = "levelSelectionState"; - // DPI_LevelSelectionStates, having type LevelSelectionState[] - ParameterId["LevelSelectionStates"] = "levelSelectionStates"; - // DPI_SourceDestIcon, having type SourceDestIcon - ParameterId["SourceDestIcon"] = "sourceDestIcon"; - // DPI_LegendLayout, having type LegendLayout - ParameterId["LegendLayout"] = "pageLegendLayout"; - // DPI_ImagesEditResultCode, having type ImagesEditResultCode - ParameterId["ImagesEditResultCode"] = "imagesEditResultCode"; - // DPI_CalculationContext, having type CalculationContext - ParameterId["CalculationContext"] = "calculationContext"; - // DPI_WorkgroupPublishErrorType, having type WorkgroupPublishErrorType - ParameterId["WorkgroupPublishErrorType"] = "workgroupPublishErrorType"; - // DPI_IsParameter, having type TriBool - ParameterId["IsParameter"] = "isParameter"; - // DPI_AddressingState, having type WidgetState - ParameterId["AddressingState"] = "addressingState"; - // DPI_AllPagesState, having type WidgetState - ParameterId["AllPagesState"] = "allPagesState"; - // DPI_AtTheLevelState, having type WidgetState - ParameterId["AtTheLevelState"] = "atTheLevelState"; - // DPI_ComputeCompoundedRateState, having type WidgetState - ParameterId["ComputeCompoundedRateState"] = "computeCompoundedRateState"; - // DPI_CustomNullIfIncompleteState, having type WidgetState - ParameterId["CustomNullIfIncompleteState"] = "customNullIfIncompleteState"; - // DPI_NestedCalcsState, having type WidgetState - ParameterId["NestedCalcsState"] = "nestedCalcsState"; - // DPI_RankTypeState, having type WidgetState - ParameterId["RankTypeState"] = "rankTypeState"; - // DPI_ReferenceOptionsState, having type WidgetState - ParameterId["ReferenceOptionsState"] = "referenceOptionsState"; - // DPI_RestartEveryState, having type WidgetState - ParameterId["RestartEveryState"] = "restartEveryState"; - // DPI_SortAggState, having type WidgetState - ParameterId["SortAggState"] = "sortAggState"; - // DPI_SortState, having type WidgetState - ParameterId["SortState"] = "sortState"; - // DPI_TableCalcTypeState, having type WidgetState - ParameterId["TableCalcTypeState"] = "tableCalcTypeState"; - // DPI_TableCalcAssistanceWidgetState, having type WidgetState - ParameterId["TableCalcAssistanceWidgetState"] = "tableCalcAssistanceWidgetState"; - // DPI_CalcNestingLevel, having type CalcNestingLevel - ParameterId["CalcNestingLevel"] = "calcNestingLevel"; - // DPI_DataProviderType, having type DataProviderType - ParameterId["DataProviderType"] = "dataProviderType"; - // DPI_HeuristicCommandReinterpretation, having type HeuristicCommandReinterpretation - ParameterId["HeuristicCommandReinterpretation"] = "heuristicCommandReinterpretation"; - // DPI_ExtractRefreshStatus, having type ExtractRefreshStatus - ParameterId["ExtractRefreshStatus"] = "extractRefreshStatus"; - // DPI_RichTextEditorWidgetKey, having type RichTextEditorWidgetKey - ParameterId["RichTextEditorWidgetKey"] = "richTextEditorWidgetKey"; - // DPI_RichTextWidgetKeys, having type RichTextEditorWidgetKey[] - ParameterId["RichTextWidgetKeys"] = "richTextWidgetKeys"; - // DPI_TypeOfFormatItem, having type TypeOfFormatItem - ParameterId["TypeOfFormatItem"] = "typeOfFormatItem"; - // DPI_TypeOfFormatContainer, having type TypeOfFormatContainer - ParameterId["TypeOfFormatContainer"] = "typeOfFormatContainer"; - // DPI_TypeOfFormatControl, having type TypeOfFormatControl - ParameterId["TypeOfFormatControl"] = "typeOfFormatControl"; - // DPI_FormatWidgetKey, having type FormatWidgetKey - ParameterId["FormatWidgetKey"] = "formatWidgetKey"; - // DPI_ColorSwatchType, having type ColorSwatchType - ParameterId["ColorSwatchType"] = "formatColorSwatchType"; - // DPI_PickerType, having type PickerType - ParameterId["PickerType"] = "pickerType"; - // DPI_ExtractHistoryRefreshType, having type RefreshType - ParameterId["ExtractHistoryRefreshType"] = "extractHistoryRefreshTypeEnum"; - // DPI_AxisFoldState, having type AxisFoldState - ParameterId["AxisFoldState"] = "axisFoldState"; - // DPI_TickMarkSpacingUnits, having type TickSpacingUnits - ParameterId["TickMarkSpacingUnits"] = "tickSpacingUnits"; - // DPI_TickMarkState, having type TickMarkState - ParameterId["TickMarkState"] = "tickMarkState"; - // DPI_AxisRangeType, having type AxisRangeType - ParameterId["AxisRangeType"] = "axisRangeType"; - // DPI_ScaleType, having type ScaleType - ParameterId["ScaleType"] = "scaleType"; - // DPI_DashboardDeviceLayout, having type DashboardDeviceLayout - ParameterId["DashboardDeviceLayout"] = "dashboardDeviceLayout"; - // DPI_ActivateDeviceLayout, having type DashboardDeviceLayout - ParameterId["ActivateDeviceLayout"] = "activateDeviceLayout"; - // DPI_DashboardDeviceLayouts, having type DashboardDeviceLayout[] - ParameterId["DashboardDeviceLayouts"] = "dashboardDeviceLayouts"; - // DPI_DeviceSource, having type DeviceSource - ParameterId["DeviceSource"] = "deviceSource"; - // DPI_DashboardSizingDimension, having type DashboardSizingDimension - ParameterId["DashboardSizingDimension"] = "dashboardSizingDimension"; - // DPI_GridOverlayMode, having type GridOverlayMode - ParameterId["GridOverlayMode"] = "gridOverlayMode"; - // DPI_DashboardSizingMode, having type DashboardSizingMode - ParameterId["DashboardSizingMode"] = "dashboardSizingMode"; - // DPI_FlipboardNavType, having type FlipboardNavType - ParameterId["FlipboardNavType"] = "flipboardNavType"; - // DPI_FieldPickerDialogUseCase, having type FieldPickerDialogUseCase - ParameterId["FieldPickerDialogUseCase"] = "fieldPickerDialogUseCase"; - // DPI_StartOfWeekEnum, having type SOWValue - ParameterId["StartOfWeekEnum"] = "startOfWeekEnum"; - // DPI_StartOfFiscalYear, having type FYSValues - ParameterId["StartOfFiscalYear"] = "startOfFiscalYear"; - // DPI_TotalsInclusionValue, having type TotalsInclusion - ParameterId["TotalsInclusionValue"] = "totalsInclusionValue"; - // DPI_FormatCode, having type FormatCode - ParameterId["FormatCode"] = "formatCode"; - // DPI_FindType, having type FindType - ParameterId["FindType"] = "findType"; - // DPI_PerspectiveType, having type PerspectiveType - ParameterId["PerspectiveType"] = "perspectiveType"; - // DPI_GeometryType, having type GeometryType - ParameterId["GeometryType"] = "geometryType"; - // DPI_PaneLabelComposition, having type PaneLabelComposition - ParameterId["PaneLabelComposition"] = "paneLabelComposition"; - // DPI_WarningType, having type WarningType - ParameterId["WarningType"] = "warningType"; - // DPI_UIMode, having type WorkbookUIMode - ParameterId["UIMode"] = "uiMode"; - // DPI_MenuItemId, having type TopLevelMenuItem - ParameterId["MenuItemId"] = "menuItemId"; - // DPI_CommandReturn, having type object - ParameterId["CommandReturn"] = "commandReturn"; - // DPI_LegacyPresModel, having type object - ParameterId["LegacyPresModel"] = "legacyPresModel"; - // DPI_PresentationModel, having type object - ParameterId["PresentationModel"] = "presModelHolder"; - // DPI_Event, having type object - ParameterId["Event"] = "eventContainer"; - // DPI_LineStyle, having type Array - ParameterId["LineStyle"] = "lineStyle"; - // DPI_StrokeStyle, having type Array - ParameterId["StrokeStyle"] = "strokeStyle"; - // DPI_Schema, having type Array - ParameterId["Schema"] = "schema"; - // DPI_StartTuple, having type Array - ParameterId["StartTuple"] = "startTuple"; - // DPI_EndTuple, having type Array - ParameterId["EndTuple"] = "endTuple"; - // DPI_Tuple, having type Array - ParameterId["Tuple"] = "tuple"; - // DPI_Tuples, having type Array[] - ParameterId["Tuples"] = "tuples"; - // DPI_CustomDomainTuples, having type Array[] - ParameterId["CustomDomainTuples"] = "customDomainTuples"; - // DPI_UpdatedTuples, having type Array[] - ParameterId["UpdatedTuples"] = "updatedTuples"; - // DPI_Table, having type Array - ParameterId["Table"] = "table"; - // DPI_AliasedValue, having type Array - ParameterId["AliasedValue"] = "valueAlias"; - // DPI_FirstAliasedValue, having type Array - ParameterId["FirstAliasedValue"] = "firstAlisedValue"; - // DPI_MaximumRange, having type Array - ParameterId["MaximumRange"] = "maximumRangeValue"; - // DPI_MinimumRange, having type Array - ParameterId["MinimumRange"] = "minimumRangeValue"; - // DPI_SecondAliasedValue, having type Array - ParameterId["SecondAliasedValue"] = "secondAlisedValue"; - // DPI_AliasedSelectionList, having type Array[] - ParameterId["AliasedSelectionList"] = "aliasedSelectionList"; - // DPI_AliasedValues, having type Array[] - ParameterId["AliasedValues"] = "valuesAliases"; - // DPI_VerboseAliasedRangeMax, having type Array - ParameterId["VerboseAliasedRangeMax"] = "verboseAliasedRangeMax"; - // DPI_VerboseAliasedValue, having type Array - ParameterId["VerboseAliasedValue"] = "verboseAliasedValue"; - // DPI_MultiBucket, having type MultiBucket - ParameterId["MultiBucket"] = "xValues"; - // DPI_PageName, having type PageName - ParameterId["PageName"] = "pageName"; - // DPI_Selector, having type object - ParameterId["Selector"] = "selector"; - // DPI_PaneId, having type object - ParameterId["PaneId"] = "paneId"; - // DPI_PaneIds, having type PaneId[] - ParameterId["PaneIds"] = "paneIds"; - // DPI_ImageRegionInfo, having type object - ParameterId["ImageRegionInfo"] = "vizRegionRect"; - // DPI_ImageRegionInfoList, having type object[] - ParameterId["ImageRegionInfoList"] = "vizRegionRectList"; - // DPI_VisualID, having type VisualID - ParameterId["VisualID"] = "visualId"; - // DPI_VisualIDPM, having type VisualIDPresModel - ParameterId["VisualIDPM"] = "visualIdPresModel"; - // DPI_InvalidSheets, having type VisualIDPresModel[] - ParameterId["InvalidSheets"] = "invalidSheets"; - // DPI_VisualIDPMs, having type VisualIDPresModel[] - ParameterId["VisualIDPMs"] = "visualIds"; - // DPI_SheetPathPM, having type SheetPathPresModel - ParameterId["SheetPathPM"] = "sheetPath"; - // DPI_CapturedSheetPM, having type SheetPathPresModel - ParameterId["CapturedSheetPM"] = "capturedSheetPm"; - // DPI_CurrentSheetPM, having type SheetPathPresModel - ParameterId["CurrentSheetPM"] = "currentSheetPm"; - // DPI_DashboardPM, having type SheetPathPresModel - ParameterId["DashboardPM"] = "dashboardPm"; - // DPI_NewSheetPM, having type SheetPathPresModel - ParameterId["NewSheetPM"] = "newSheetPm"; - // DPI_SheetNamePM, having type SheetPathPresModel - ParameterId["SheetNamePM"] = "sheetNamePm"; - // DPI_SheetPM, having type SheetPathPresModel - ParameterId["SheetPM"] = "sheetPm"; - // DPI_SourceDashboardPM, having type SheetPathPresModel - ParameterId["SourceDashboardPM"] = "sourceDashboardPm"; - // DPI_SourceSheetPM, having type SheetPathPresModel - ParameterId["SourceSheetPM"] = "sourceSheetPm"; - // DPI_TargetSheetPM, having type SheetPathPresModel - ParameterId["TargetSheetPM"] = "targetSheetPm"; - // DPI_WorksheetPM, having type SheetPathPresModel - ParameterId["WorksheetPM"] = "worksheetPm"; - // DPI_ModifiedSheets, having type SheetPathPresModel[] - ParameterId["ModifiedSheets"] = "modifiedSheets"; - // DPI_DataColumn, having type DataColumnPresModel - ParameterId["DataColumn"] = "dataColumn"; - // DPI_DataColumns, having type DataColumnPresModel[] - ParameterId["DataColumns"] = "dataColumns"; - // DPI_Addresses, having type DataColumnPresModel[] - ParameterId["Addresses"] = "addresses"; - // DPI_EncodingColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["EncodingColumns"] = "encodingColumns"; - // DPI_TextRunColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextRunColumns"] = "textRunColumns"; - // DPI_TextStyleColumns, having type Dictionary(of DataColumnPresModel) - ParameterId["TextStyleColumns"] = "textStyleColumns"; - // DPI_NamedDataColumn, having type NamedDataColumnPresModel - ParameterId["NamedDataColumn"] = "namedDataColumn"; - // DPI_NamedDataColumns, having type NamedDataColumnPresModel[] - ParameterId["NamedDataColumns"] = "namedDataColumns"; - // DPI_DataTable, having type DataTablePresModel - ParameterId["DataTable"] = "dataTable"; - // DPI_ActionSpecification, having type None - ParameterId["ActionSpecification"] = "actionSpec"; - // DPI_Column, having type Column - ParameterId["Column"] = "columnContext"; - // DPI_SetFunction, having type SetFunction - ParameterId["SetFunction"] = "setFunction"; - // DPI_SetFunctions, having type SetFunctions - ParameterId["SetFunctions"] = "setFunctions"; - // DPI_VisualProfileShowMe, having type VisualProfileShowMe - ParameterId["VisualProfileShowMe"] = "vpsm"; - // DPI_DataSourcePtr, having type DataSource - ParameterId["DataSourcePtr"] = "datasourcePtr"; - // DPI_WorkgroupConnection, having type WorkgroupConnection - ParameterId["WorkgroupConnection"] = "workgroupConnection"; - // DPI_Authenticator, having type AuthenticatorRawPtr - ParameterId["Authenticator"] = "authenticator"; - // DPI_UpgradeAttr, having type UpgradeAttr - ParameterId["UpgradeAttr"] = "upgradeAttr"; - // DPI_ExtractAttr, having type ExtractAttr - ParameterId["ExtractAttr"] = "extractAttr"; - // DPI_RefreshAttr, having type RefreshAttr - ParameterId["RefreshAttr"] = "refreshAttr"; - // DPI_ContextSpecification, having type ContextSpecification - ParameterId["ContextSpecification"] = "contextSpecification"; - // DPI_SchemaViewerSelector, having type SchemaViewerSelectorPtr - ParameterId["SchemaViewerSelector"] = "schemaViewerSelector"; - // DPI_Buckets, having type Buckets - ParameterId["Buckets"] = "buckets"; - // DPI_LegendItems, having type MultiBuckets - ParameterId["LegendItems"] = "legendItems"; - // DPI_LegendItem, having type MultiBucket - ParameterId["LegendItem"] = "legendItem"; - // DPI_SourceItem, having type MultiBucket - ParameterId["SourceItem"] = "sourceItem"; - // DPI_DestItem, having type MultiBucket - ParameterId["DestItem"] = "destItem"; - // DPI_IQuickSortState, having type IQuickSortState - ParameterId["IQuickSortState"] = "quickSortState"; - // DPI_AppBuildDate, having type DateTime - ParameterId["AppBuildDate"] = "appBuildDate"; - // DPI_ForecastDateRangeEnd, having type DateTime - ParameterId["ForecastDateRangeEnd"] = "forecastDateRangeEnd"; - // DPI_ForecastDateRangeStart, having type DateTime - ParameterId["ForecastDateRangeStart"] = "forecastDateRangeStart"; - // DPI_LastModified, having type DateTime - ParameterId["LastModified"] = "lastModified"; - // DPI_SearchDomainPtr, having type MultiDomain - ParameterId["SearchDomainPtr"] = "searchDomainPtr"; - // DPI_ResultsDomainPtr, having type MultiDomain - ParameterId["ResultsDomainPtr"] = "resultsDomainPtr"; - // DPI_Actions, having type object - ParameterId["Actions"] = "actions"; - // DPI_SRCommands, having type object - ParameterId["SRCommands"] = "selectionRelaxationCommands"; - // DPI_Commands, having type object - ParameterId["Commands"] = "commands"; - // DPI_DataTypeCommands, having type object - ParameterId["DataTypeCommands"] = "datatypeCommands"; - // DPI_MultiSelectCommands, having type object - ParameterId["MultiSelectCommands"] = "multiselectCommands"; - // DPI_NonVizCommands, having type object - ParameterId["NonVizCommands"] = "nonVizCommands"; - // DPI_QuickFilterCommands, having type object - ParameterId["QuickFilterCommands"] = "quickFilterCommands"; - // DPI_ShowMeCommands, having type object - ParameterId["ShowMeCommands"] = "showMeCommands"; - // DPI_SortIndicatorMenu, having type object - ParameterId["SortIndicatorMenu"] = "sortIndicatorMenu"; - // DPI_StandardCommands, having type object - ParameterId["StandardCommands"] = "standardCommands"; - // DPI_VizCommands, having type object - ParameterId["VizCommands"] = "vizCommands"; - // DPI_ZoneChromeCommands, having type object - ParameterId["ZoneChromeCommands"] = "zoneChromeCommands"; - // DPI_CommandItem, having type CommandsItem - ParameterId["CommandItem"] = "commandItem"; - // DPI_CommandItems, having type CommandsItem[] - ParameterId["CommandItems"] = "commandItems"; - // DPI_Command, having type SimpleCommandsPresModel - ParameterId["Command"] = "simpleCommandModel"; - // DPI_AddCommand, having type SimpleCommandsPresModel - ParameterId["AddCommand"] = "addSimpleCommandModel"; - // DPI_RemoveCommand, having type SimpleCommandsPresModel - ParameterId["RemoveCommand"] = "removeSimpleCommandModel"; - // DPI_AcceptCommand, having type SimpleCommandsPresModel - ParameterId["AcceptCommand"] = "acceptSimpleCommandModel"; - // DPI_DeclineCommand, having type SimpleCommandsPresModel - ParameterId["DeclineCommand"] = "declineSimpleCommandModel"; - // DPI_DropCommand, having type SimpleCommandsPresModel - ParameterId["DropCommand"] = "dropCommandModel"; - // DPI_EditCaptionCommand, having type SimpleCommandsPresModel - ParameterId["EditCaptionCommand"] = "editCaptionCommandModel"; - // DPI_FontCommand, having type SimpleCommandsPresModel - ParameterId["FontCommand"] = "fontCommandModel"; - // DPI_LineStyleCommand, having type SimpleCommandsPresModel - ParameterId["LineStyleCommand"] = "lineStyleCommandModel"; - // DPI_FormatCommand, having type SimpleCommandsPresModel - ParameterId["FormatCommand"] = "formatCommandModel"; - // DPI_DestructorCommand, having type SimpleCommandsPresModel - ParameterId["DestructorCommand"] = "destructorCommand"; - // DPI_ClearFormatCommand, having type SimpleCommandsPresModel - ParameterId["ClearFormatCommand"] = "clearFormatCommandModel"; - // DPI_RichTextCommand, having type SimpleCommandsPresModel - ParameterId["RichTextCommand"] = "richTextCommandModel"; - // DPI_SortIndicatorCommand, having type SimpleCommandsPresModel - ParameterId["SortIndicatorCommand"] = "sortIndicatorCommand"; - // DPI_CommandList, having type SimpleCommandsPresModel[] - ParameterId["CommandList"] = "commandList"; - // DPI_ParameterCtrl, having type ParameterCtrlPresModel - ParameterId["ParameterCtrl"] = "parameterControl"; - // DPI_ParameterCtrls, having type ParameterCtrlPresModel[] - ParameterId["ParameterCtrls"] = "parameterControls"; - // DPI_PageModel, having type PagePresModel - ParameterId["PageModel"] = "pageModel"; - // DPI_PageTrailOptions, having type PageTrailOptionsPresModel - ParameterId["PageTrailOptions"] = "pageTrailOptions"; - // DPI_Field, having type FieldPresModel - ParameterId["Field"] = "field"; - // DPI_FieldList, having type FieldPresModel[] - ParameterId["FieldList"] = "fieldList"; - // DPI_FieldColumn, having type FieldColumnPresModel - ParameterId["FieldColumn"] = "column"; - // DPI_FieldColumnList, having type FieldColumnPresModel[] - ParameterId["FieldColumnList"] = "columnList"; - // DPI_Parameter, having type ParameterPresModel - ParameterId["Parameter"] = "parameter"; - // DPI_Dimension, having type DimensionPresModel - ParameterId["Dimension"] = "dimension"; - // DPI_AttributeDimensionList, having type DimensionPresModel[] - ParameterId["AttributeDimensionList"] = "attributeDimensionList"; - // DPI_RelationalTable, having type RelationalTablePresModel - ParameterId["RelationalTable"] = "relationalTable"; - // DPI_DrillPath, having type DrillPathPresModel - ParameterId["DrillPath"] = "drillPath"; - // DPI_FieldFolder, having type FieldFolderPresModel - ParameterId["FieldFolder"] = "fieldFolder"; - // DPI_Group, having type GroupPresModel - ParameterId["Group"] = "group"; - // DPI_Hierarchy, having type HierarchyPresModel - ParameterId["Hierarchy"] = "hierarchy"; - // DPI_HierarchyList, having type HierarchyPresModel[] - ParameterId["HierarchyList"] = "hierarchyList"; - // DPI_HierarchyMemberSelectedState, having type HierarchySelect_MemberSelectedStatePresModel - ParameterId["HierarchyMemberSelectedState"] = "hierarchyMemberSelectedState"; - // DPI_HierarchySelectionChanges, having type HierarchySelect_MemberSelectedStatePresModel[] - ParameterId["HierarchySelectionChanges"] = "hierarchySelectionChanges"; - // DPI_DisplayFolder, having type DisplayFolderPresModel - ParameterId["DisplayFolder"] = "displayFolder"; - // DPI_DisplayFolderList, having type DisplayFolderPresModel[] - ParameterId["DisplayFolderList"] = "displayFolderList"; - // DPI_DataSourceLayout, having type DataSourceLayoutPresModel - ParameterId["DataSourceLayout"] = "dataSourceLayout"; - // DPI_BaseDataSource, having type BaseDataSourcePresModel - ParameterId["BaseDataSource"] = "baseDataSource"; - // DPI_BaseDataSources, having type Dictionary(of BaseDataSourcePresModel) - ParameterId["BaseDataSources"] = "baseDataSources"; - // DPI_DataSource, having type DataSourcePresModel - ParameterId["DataSource"] = "dataSource"; - // DPI_DataSources, having type Dictionary(of DataSourcePresModel) - ParameterId["DataSources"] = "dataSources"; - // DPI_SchemaViewerDataSource, having type SchemaViewerDataSourcePresModel - ParameterId["SchemaViewerDataSource"] = "schemaViewerDataSource"; - // DPI_SchemaViewerDataSources, having type Dictionary(of SchemaViewerDataSourcePresModel) - ParameterId["SchemaViewerDataSources"] = "schemaViewerDataSources"; - // DPI_BaseDataSchema, having type BaseDataSchemaPresModel - ParameterId["BaseDataSchema"] = "baseDataSchema"; - // DPI_DataSchema, having type DataSchemaPresModel - ParameterId["DataSchema"] = "dataSchema"; - // DPI_SchemaViewerDataSchema, having type SchemaViewerDataSchemaPresModel - ParameterId["SchemaViewerDataSchema"] = "schemaViewerDataSchema"; - // DPI_SheetListItem, having type SheetListItemPresModel - ParameterId["SheetListItem"] = "sheetListItem"; - // DPI_SheetListItems, having type SheetListItemPresModel[] - ParameterId["SheetListItems"] = "sheetListItems"; - // DPI_SheetList, having type SheetListPresModel - ParameterId["SheetList"] = "sheetList"; - // DPI_SizeModeOption, having type SizeModeOptionPresModel - ParameterId["SizeModeOption"] = "sizeModeOption"; - // DPI_SizeModeOptions, having type SizeModeOptionPresModel[] - ParameterId["SizeModeOptions"] = "sizeModeOptions"; - // DPI_DashboardSizeControl, having type DashboardSizeControlPresModel - ParameterId["DashboardSizeControl"] = "dashboardSizeControl"; - // DPI_DeviceLayoutInfoItem, having type DeviceLayoutInfoItemPresModel - ParameterId["DeviceLayoutInfoItem"] = "deviceLayoutInfoItem"; - // DPI_DeviceLayoutInfoItems, having type DeviceLayoutInfoItemPresModel[] - ParameterId["DeviceLayoutInfoItems"] = "deviceLayoutInfoItems"; - // DPI_DeviceLayoutInfoList, having type DeviceLayoutInfoListPresModel - ParameterId["DeviceLayoutInfoList"] = "deviceLayoutInfoList"; - // DPI_SpecializedDeviceLayoutItem, having type SpecializedDeviceLayoutItemPresModel - ParameterId["SpecializedDeviceLayoutItem"] = "specializedDeviceLayoutItem"; - // DPI_SpecializedDeviceLayoutItems, having type SpecializedDeviceLayoutItemPresModel[] - ParameterId["SpecializedDeviceLayoutItems"] = "specializedDeviceLayoutItems"; - // DPI_SpecializedDeviceLayoutList, having type SpecializedDeviceLayoutListPresModel - ParameterId["SpecializedDeviceLayoutList"] = "specializedDeviceLayoutList"; - // DPI_SizeItem, having type SizeItemPresModel - ParameterId["SizeItem"] = "sizeItem"; - // DPI_SizeItems, having type SizeItemPresModel[] - ParameterId["SizeItems"] = "sizeItems"; - // DPI_DeviceSizesList, having type SizeItemListPresModel - ParameterId["DeviceSizesList"] = "deviceSizesList"; - // DPI_PresetSizesList, having type SizeItemListPresModel - ParameterId["PresetSizesList"] = "presetSizesList"; - // DPI_SizeItemList, having type SizeItemListPresModel - ParameterId["SizeItemList"] = "sizeItemList"; - // DPI_SubstitutionKeyword, having type SubstitutionKeywordPresModel - ParameterId["SubstitutionKeyword"] = "substitutionKeyword"; - // DPI_SubstitutionKeywords, having type SubstitutionKeywordPresModel[] - ParameterId["SubstitutionKeywords"] = "substitutionKeywords"; - // DPI_SubstitutionKeywordSubList, having type SubstitutionKeywordSubListPresModel - ParameterId["SubstitutionKeywordSubList"] = "substitutionKeywordsSublist"; - // DPI_SubstitutionKeywordSubLists, having type SubstitutionKeywordSubListPresModel[] - ParameterId["SubstitutionKeywordSubLists"] = "substitutionKeywordSublists"; - // DPI_SubstitutionKeywordList, having type SubstitutionKeywordListPresModel - ParameterId["SubstitutionKeywordList"] = "substitutionKeywordsList"; - // DPI_DeviceZoneListItem, having type DeviceZoneListItemPresModel - ParameterId["DeviceZoneListItem"] = "deviceZoneListItem"; - // DPI_DeviceZoneListItems, having type DeviceZoneListItemPresModel[] - ParameterId["DeviceZoneListItems"] = "deviceZoneListItems"; - // DPI_DeviceZoneList, having type DeviceZoneListPresModel - ParameterId["DeviceZoneList"] = "deviceZoneList"; - // DPI_ZoneSnapLineListItem, having type ZoneSnapLineListItemPresModel - ParameterId["ZoneSnapLineListItem"] = "snapLineListItem"; - // DPI_OuterHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[] - ParameterId["OuterHorizontalSnapLines"] = "outerHorizontalSnapLines"; - // DPI_OuterVerticalSnapLines, having type ZoneSnapLineListItemPresModel[] - ParameterId["OuterVerticalSnapLines"] = "outerVerticalSnapLines"; - // DPI_InnerHorizontalSnapLines, having type ZoneSnapLineListItemPresModel[] - ParameterId["InnerHorizontalSnapLines"] = "innerHorizontalSnapLines"; - // DPI_InnerVerticalSnapLines, having type ZoneSnapLineListItemPresModel[] - ParameterId["InnerVerticalSnapLines"] = "innerVerticalSnapLines"; - // DPI_ZoneSnapLineList, having type ZoneSnapLineListPresModel - ParameterId["ZoneSnapLineList"] = "snapLineList"; - // DPI_DashboardZoneHierarchy, having type DashboardZoneHierarchyPresModel - ParameterId["DashboardZoneHierarchy"] = "dashboardZoneHierarchy"; - // DPI_DeviceZoneVisibilityListItem, having type DeviceZoneVisibilityListItemPresModel - ParameterId["DeviceZoneVisibilityListItem"] = "deviceZoneVisibilityListItem"; - // DPI_DeviceZoneVisibilityListItems, having type DeviceZoneVisibilityListItemPresModel[] - ParameterId["DeviceZoneVisibilityListItems"] = "deviceZoneVisibilityListItems"; - // DPI_DeviceZoneVisibilityList, having type DeviceZoneVisibilityListPresModel - ParameterId["DeviceZoneVisibilityList"] = "deviceZoneVisibilityList"; - // DPI_WorksheetDataSchema, having type WorksheetDataSchemaPresModel - ParameterId["WorksheetDataSchema"] = "worksheetDataSchema"; - // DPI_WorksheetDataSchemaMap, having type Dictionary(of WorksheetDataSchemaPresModel) - ParameterId["WorksheetDataSchemaMap"] = "worksheetDataSchemaMap"; - // DPI_Shelf, having type ShelfPresModel - ParameterId["Shelf"] = "shelf"; - // DPI_ShelfDetail, having type ShelfPresModel - ParameterId["ShelfDetail"] = "shelfDetail"; - // DPI_ShelfList, having type ShelfPresModel[] - ParameterId["ShelfList"] = "shelfList"; - // DPI_ShelfItem, having type ShelfItemPresModel - ParameterId["ShelfItem"] = "shelfItem"; - // DPI_ShelfItems, having type ShelfItemPresModel[] - ParameterId["ShelfItems"] = "shelfItems"; - // DPI_Shelves, having type ShelvesPresModel - ParameterId["Shelves"] = "shelves"; - // DPI_FieldEncoding, having type FieldEncodingPresModel - ParameterId["FieldEncoding"] = "fieldEncoding"; - // DPI_FieldEncodings, having type FieldEncodingPresModel[] - ParameterId["FieldEncodings"] = "fieldEncodings"; - // DPI_UberTip, having type UberTipPresModel - ParameterId["UberTip"] = "uberTip"; - // DPI_AnalyticsObjectDragInfo, having type AnalyticsObjectDragInfoPresModel - ParameterId["AnalyticsObjectDragInfo"] = "analyticsObjectDragInfo"; - // DPI_TrendLine, having type TrendLinePresModel - ParameterId["TrendLine"] = "trendLine"; - // DPI_TrendLineDialog, having type TrendLineDialogPresModel - ParameterId["TrendLineDialog"] = "trendLineDialog"; - // DPI_TrendLineDescribePresModel, having type TrendLineDescribePresModel - ParameterId["TrendLineDescribePresModel"] = "trendLineDescribePresModel"; - // DPI_TrendLineAOVModelPresModel, having type TrendLineAOVModelPresModel - ParameterId["TrendLineAOVModelPresModel"] = "trendLineAovModelPresModel"; - // DPI_TrendLineAOVModelsPresModel, having type TrendLineAOVModelPresModel[] - ParameterId["TrendLineAOVModelsPresModel"] = "trendModelDescriptionVector"; - // DPI_TrendLineLineCoefficientPresModel, having type TrendLineLineCoefficientPresModel - ParameterId["TrendLineLineCoefficientPresModel"] = "trendLineLineCoefficient"; - // DPI_TrendLineLineCoefficientsPresModel, having type TrendLineLineCoefficientPresModel[] - ParameterId["TrendLineLineCoefficientsPresModel"] = "trendLineLineCoefficientsPresModel"; - // DPI_TrendLineLinesPresModel, having type TrendLineLinesPresModel - ParameterId["TrendLineLinesPresModel"] = "trendLineLinesPresModel"; - // DPI_TrendLineAOVPresModel, having type TrendLineAOVPresModel - ParameterId["TrendLineAOVPresModel"] = "trendLineAnovaPresModel"; - // DPI_ReferenceLine, having type ReferenceLinePresModel - ParameterId["ReferenceLine"] = "referenceLine"; - // DPI_ReferenceLines, having type ReferenceLinePresModel[] - ParameterId["ReferenceLines"] = "referenceLines"; - // DPI_PercentileEditDataValue, having type EditDataValuePresModel - ParameterId["PercentileEditDataValue"] = "percentileEditDataValue"; - // DPI_LimitEditDataValue, having type EditDataValuePresModel - ParameterId["LimitEditDataValue"] = "limitEditDataValue"; - // DPI_ConfidenceLevelCombo, having type EditValueWidgetPresModel - ParameterId["ConfidenceLevelCombo"] = "confidenceLevelCombo"; - // DPI_DistributionQuantilesCombo, having type EditValueWidgetPresModel - ParameterId["DistributionQuantilesCombo"] = "distributionQuantilesLevelCombo"; - // DPI_PercentilesCombo, having type EditValueWidgetPresModel - ParameterId["PercentilesCombo"] = "distributionPercentilesLevelCombo"; - // DPI_NumericBinSizeCombo, having type EditValueWidgetPresModel - ParameterId["NumericBinSizeCombo"] = "numericBinSizeCombo"; - // DPI_FieldPickerField, having type FieldPickerFieldPresModel - ParameterId["FieldPickerField"] = "fieldPickerField"; - // DPI_FieldPickerFields, having type FieldPickerFieldPresModel[] - ParameterId["FieldPickerFields"] = "fieldPickerFields"; - // DPI_FieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["FieldPickerCombo"] = "fieldPickerCombo"; - // DPI_PairedFieldPickerCombo, having type FieldPickerComboPresModel - ParameterId["PairedFieldPickerCombo"] = "pairedFieldPickerCombo"; - // DPI_ReferenceLineEditorPresModel, having type ReferenceLineEditorPresModel - ParameterId["ReferenceLineEditorPresModel"] = "referenceLineEditor"; - // DPI_CloseDataSourceErrorDialogPresModel, having type CloseDataSourceErrorDialogPresModel - ParameterId["CloseDataSourceErrorDialogPresModel"] = "closeDsErrorDialog"; - // DPI_EditReferenceLine, having type EditReferenceLinePresModel - ParameterId["EditReferenceLine"] = "editReferenceLine"; - // DPI_EditReferenceBand, having type EditReferenceBandPresModel - ParameterId["EditReferenceBand"] = "editReferenceBand"; - // DPI_EditDistribution, having type EditDistributionPresModel - ParameterId["EditDistribution"] = "editDistribution"; - // DPI_DistributionPercentages, having type DistributionPercentagesPresModel - ParameterId["DistributionPercentages"] = "distributionPercentages"; - // DPI_DistributionPercentiles, having type DistributionPercentilesPresModel - ParameterId["DistributionPercentiles"] = "distributionPercentiles"; - // DPI_DistributionQuantiles, having type DistributionQuantilesPresModel - ParameterId["DistributionQuantiles"] = "distributionQuantiles"; - // DPI_DistributionStandardDeviation, having type DistributionStandardDeviationPresModel - ParameterId["DistributionStandardDeviation"] = "distributionStddev"; - // DPI_SortIndicators, having type SortIndicatorsPresModel - ParameterId["SortIndicators"] = "sortIndicators"; - // DPI_SortIndicatorRegion, having type SortIndicatorRegionPresModel - ParameterId["SortIndicatorRegion"] = "sortIndicatorRegion"; - // DPI_SortIndicatorRegions, having type SortIndicatorRegionPresModel[] - ParameterId["SortIndicatorRegions"] = "sortIndicatorRegions"; - // DPI_SortIndicatorItem, having type SortIndicatorItemPresModel - ParameterId["SortIndicatorItem"] = "sortIndicatorItem"; - // DPI_SortIndicatorItems, having type SortIndicatorItemPresModel[] - ParameterId["SortIndicatorItems"] = "sortIndicatorItems"; - // DPI_BuilderConfig, having type BuilderConfigPresModel - ParameterId["BuilderConfig"] = "builderConfig"; - // DPI_SheetLayoutInfo, having type SheetLayoutInfoPresModel - ParameterId["SheetLayoutInfo"] = "sheetLayoutInfo"; - // DPI_AreaRect, having type RectanglePresModel - ParameterId["AreaRect"] = "areaRect"; - // DPI_Border, having type RectanglePresModel - ParameterId["Border"] = "borderRect"; - // DPI_BoundsRect, having type RectanglePresModel - ParameterId["BoundsRect"] = "boundsRect"; - // DPI_ButtonRect, having type RectanglePresModel - ParameterId["ButtonRect"] = "buttonRect"; - // DPI_DragRect, having type RectanglePresModel - ParameterId["DragRect"] = "dragRect"; - // DPI_FocusRect, having type RectanglePresModel - ParameterId["FocusRect"] = "focusRect"; - // DPI_ImageTileRect, having type RectanglePresModel - ParameterId["ImageTileRect"] = "tileRect"; - // DPI_ItemRect, having type RectanglePresModel - ParameterId["ItemRect"] = "itemRect"; - // DPI_LabelRect, having type RectanglePresModel - ParameterId["LabelRect"] = "labelRect"; - // DPI_MarkRect, having type RectanglePresModel - ParameterId["MarkRect"] = "markRect"; - // DPI_MarkTooltipRect, having type RectanglePresModel - ParameterId["MarkTooltipRect"] = "markTooltipRect"; - // DPI_MenuButtonRect, having type RectanglePresModel - ParameterId["MenuButtonRect"] = "menuButtonRect"; - // DPI_OutRegionRect, having type RectanglePresModel - ParameterId["OutRegionRect"] = "outRegionRect"; - // DPI_PaneRect, having type RectanglePresModel - ParameterId["PaneRect"] = "paneRect"; - // DPI_PixelExtents, having type RectanglePresModel - ParameterId["PixelExtents"] = "pixelExtents"; - // DPI_RectMaxLabel, having type RectanglePresModel - ParameterId["RectMaxLabel"] = "rectMaxLabel"; - // DPI_RectMinLabel, having type RectanglePresModel - ParameterId["RectMinLabel"] = "rectMinLabel"; - // DPI_RectRamp, having type RectanglePresModel - ParameterId["RectRamp"] = "rectRamp"; - // DPI_RectTitle, having type RectanglePresModel - ParameterId["RectTitle"] = "rectTitle"; - // DPI_RegionRect, having type RectanglePresModel - ParameterId["RegionRect"] = "regionRect"; - // DPI_SelectionRect, having type RectanglePresModel - ParameterId["SelectionRect"] = "selectionRect"; - // DPI_UnusedRect, having type RectanglePresModel - ParameterId["UnusedRect"] = "unusedRect"; - // DPI_ZoneEdgeRect, having type RectanglePresModel - ParameterId["ZoneEdgeRect"] = "zoneEdge"; - // DPI_ZoneEdgeRectPix, having type RectanglePresModel - ParameterId["ZoneEdgeRectPix"] = "zoneEdgePix"; - // DPI_ZoneEdgeRectPp, having type RectanglePresModel - ParameterId["ZoneEdgeRectPp"] = "zoneEdgePp"; - // DPI_UIAutomationLinkRect, having type RectanglePresModel - ParameterId["UIAutomationLinkRect"] = "linkRect"; - // DPI_Borders, having type RectanglePresModel[] - ParameterId["Borders"] = "borderRects"; - // DPI_UIAutomationLinkRects, having type RectanglePresModel[] - ParameterId["UIAutomationLinkRects"] = "linkRects"; - // DPI_DomainExtents, having type DoubleRectanglePresModel - ParameterId["DomainExtents"] = "domainExtents"; - // DPI_MapDomainExtents, having type DoubleRectanglePresModel - ParameterId["MapDomainExtents"] = "mapDomainExtents"; - // DPI_MapLatLongRect, having type MapRectPresModel - ParameterId["MapLatLongRect"] = "mapLatLongRect"; - // DPI_Center, having type PointPresModel - ParameterId["Center"] = "center"; - // DPI_CenterMarkLineBegin, having type PointPresModel - ParameterId["CenterMarkLineBegin"] = "centerMarkLineBegin"; - // DPI_CenterMarkLineEnd, having type PointPresModel - ParameterId["CenterMarkLineEnd"] = "centerMarkLineEnd"; - // DPI_DropLocation, having type PointPresModel - ParameterId["DropLocation"] = "dropLocation"; - // DPI_EndPt, having type PointPresModel - ParameterId["EndPt"] = "endPoint"; - // DPI_GrabLocation, having type PointPresModel - ParameterId["GrabLocation"] = "grabLocation"; - // DPI_GridOrigin, having type PointPresModel - ParameterId["GridOrigin"] = "gridOrigin"; - // DPI_LassoSelectionPoint, having type PointPresModel - ParameterId["LassoSelectionPoint"] = "lassoSelectionPoint"; - // DPI_MenuLocation, having type PointPresModel - ParameterId["MenuLocation"] = "menuLocation"; - // DPI_MoveOffset, having type PointPresModel - ParameterId["MoveOffset"] = "moveOffset"; - // DPI_OverlayAnchor, having type PointPresModel - ParameterId["OverlayAnchor"] = "overlayAnchor"; - // DPI_PanAmount, having type PointPresModel - ParameterId["PanAmount"] = "panAmount"; - // DPI_PanLocation, having type PointPresModel - ParameterId["PanLocation"] = "panLocation"; - // DPI_PaneResolverLocation, having type PointPresModel - ParameterId["PaneResolverLocation"] = "paneResolverLocation"; - // DPI_PixelExtentsOffset, having type PointPresModel - ParameterId["PixelExtentsOffset"] = "extentsOffset"; - // DPI_Point1, having type PointPresModel - ParameterId["Point1"] = "pt1"; - // DPI_Point2, having type PointPresModel - ParameterId["Point2"] = "pt2"; - // DPI_Point3, having type PointPresModel - ParameterId["Point3"] = "pt3"; - // DPI_RegionPoint, having type PointPresModel - ParameterId["RegionPoint"] = "regionPoint"; - // DPI_ScrollOffset, having type PointPresModel - ParameterId["ScrollOffset"] = "scrollOffset"; - // DPI_SelectAtPoint, having type PointPresModel - ParameterId["SelectAtPoint"] = "selectAtPoint"; - // DPI_SelectOffset, having type PointPresModel - ParameterId["SelectOffset"] = "selectOffset"; - // DPI_TargetPt, having type PointPresModel - ParameterId["TargetPt"] = "targetPoint"; - // DPI_TextOrigin, having type PointPresModel - ParameterId["TextOrigin"] = "textOrigin"; - // DPI_TooltipAnchorPoint, having type PointPresModel - ParameterId["TooltipAnchorPoint"] = "tooltipAnchorPoint"; - // DPI_TooltipOffset, having type PointPresModel - ParameterId["TooltipOffset"] = "tooltipOffset"; - // DPI_VizLocation, having type PointPresModel - ParameterId["VizLocation"] = "vizLocation"; - // DPI_ZoomAnchorPoint, having type PointPresModel - ParameterId["ZoomAnchorPoint"] = "zoomAnchorPoint"; - // DPI_MenuAnchorPoint, having type PointPresModel - ParameterId["MenuAnchorPoint"] = "menuAnchorPoint"; - // DPI_OverlayAnchors, having type PointPresModel[] - ParameterId["OverlayAnchors"] = "overlayAnchors"; - // DPI_LassoSelection, having type PointPresModel[] - ParameterId["LassoSelection"] = "lassoSelection"; - // DPI_ScrollOffsetPoints, having type PointPresModel[] - ParameterId["ScrollOffsetPoints"] = "scrollOffsetPoints"; - // DPI_RadialSelection, having type CirclePresModel - ParameterId["RadialSelection"] = "radialSelection"; - // DPI_DomainOrigin, having type FloatPointPresModel - ParameterId["DomainOrigin"] = "domainOrigin"; - // DPI_FloatCenter, having type FloatPointPresModel - ParameterId["FloatCenter"] = "floatCenter"; - // DPI_FloatPoint, having type FloatPointPresModel - ParameterId["FloatPoint"] = "floatPoint"; - // DPI_ClientAvailableSpace, having type SizePresModel - ParameterId["ClientAvailableSpace"] = "clientAvailableSpace"; - // DPI_DashboardPortSize, having type SizePresModel - ParameterId["DashboardPortSize"] = "dashboardPort"; - // DPI_LegendSize, having type SizePresModel - ParameterId["LegendSize"] = "legendSize"; - // DPI_StoryPortSize, having type SizePresModel - ParameterId["StoryPortSize"] = "storyPort"; - // DPI_SwatchAreaSize, having type SizePresModel - ParameterId["SwatchAreaSize"] = "areaSize"; - // DPI_SwatchImageSize, having type SizePresModel - ParameterId["SwatchImageSize"] = "imageSize"; - // DPI_ViewportSize, having type SizePresModel - ParameterId["ViewportSize"] = "viewportSize"; - // DPI_WorksheetPortSize, having type SizePresModel - ParameterId["WorksheetPortSize"] = "worksheetPort"; - // DPI_ResizeEntity, having type ResizeEntityPresModel - ParameterId["ResizeEntity"] = "resizeEntity"; - // DPI_RowResizers, having type ResizeEntityPresModel[] - ParameterId["RowResizers"] = "rowResizers"; - // DPI_ColResizers, having type ResizeEntityPresModel[] - ParameterId["ColResizers"] = "colResizers"; - // DPI_ResizeInfoPresModel, having type ResizeInfoPresModel - ParameterId["ResizeInfoPresModel"] = "resizeInfo"; - // DPI_ServerSheet, having type ServerSheetPresModel - ParameterId["ServerSheet"] = "serverSheet"; - // DPI_ServerSheets, having type ServerSheetPresModel[] - ParameterId["ServerSheets"] = "serverSheets"; - // DPI_SheetInfo, having type SheetInfoPresModel - ParameterId["SheetInfo"] = "sheetInfo"; - // DPI_SheetsInfo, having type SheetInfoPresModel[] - ParameterId["SheetsInfo"] = "sheetsInfo"; - // DPI_ServerWorkbook, having type ServerWorkbookPresModel - ParameterId["ServerWorkbook"] = "serverWorkbook"; - // DPI_PDFExportOptionsPresModel, having type PDFExportOptionsPresModel - ParameterId["PDFExportOptionsPresModel"] = "pdfExport"; - // DPI_ExportFileResultPresModel, having type ExportFileResultPresModel - ParameterId["ExportFileResultPresModel"] = "pdfResult"; - // DPI_PDFSheet, having type PDFSheetPresModel - ParameterId["PDFSheet"] = "pdfSheet"; - // DPI_SheetOptions, having type PDFSheetPresModel[] - ParameterId["SheetOptions"] = "sheetOptions"; - // DPI_ExportLayoutOptions, having type ExportLayoutOptionsPresModel - ParameterId["ExportLayoutOptions"] = "exportLayoutOptions"; - // DPI_DataAlertConditionOperationType, having type DataAlertConditionOperationType - ParameterId["DataAlertConditionOperationType"] = "dataAlertConditionOp"; - // DPI_DataAlertDialogPresModel, having type DataAlertDialogPresModel - ParameterId["DataAlertDialogPresModel"] = "dataAlertDialogPresModel"; - // DPI_DataAlertMeasure, having type DataAlertMeasurePresModel - ParameterId["DataAlertMeasure"] = "dataAlertMeasure"; - // DPI_DataAlertMeasures, having type DataAlertMeasurePresModel[] - ParameterId["DataAlertMeasures"] = "dataAlertMeasures"; - // DPI_DataAlertConstantCondition, having type DataAlertConstantConditionPresModel - ParameterId["DataAlertConstantCondition"] = "dataAlertConstantCondition"; - // DPI_DataAlertDialogMode, having type DataAlertDialogMode - ParameterId["DataAlertDialogMode"] = "dataAlertDialogMode"; - // DPI_LightweightMapOptions, having type LightweightMapOptionsPresModel - ParameterId["LightweightMapOptions"] = "lightweightMapOptions"; - // DPI_DataHighlighter, having type DataHighlighterPresModel - ParameterId["DataHighlighter"] = "dataHighlighter"; - // DPI_DataHighlighterItemSet, having type DataHighlighterItemSetPresModel - ParameterId["DataHighlighterItemSet"] = "dataHighlighterItemSet"; - // DPI_DataHighlighterItem, having type DataHighlighterItemPresModel - ParameterId["DataHighlighterItem"] = "dataHighlighterItem"; - // DPI_DataHighlighterItems, having type DataHighlighterItemPresModel[] - ParameterId["DataHighlighterItems"] = "dataHighlighterItems"; - // DPI_CategoricalLegendLayout, having type CategoricalLegendLayoutPresModel - ParameterId["CategoricalLegendLayout"] = "catLegendLayout"; - // DPI_CategoricalLegend, having type CategoricalLegendPresModel - ParameterId["CategoricalLegend"] = "categoricalLegend"; - // DPI_CategoricalLegends, having type CategoricalLegendPresModel[] - ParameterId["CategoricalLegends"] = "categoricalLegends"; - // DPI_CategoricalColorLegend, having type CategoricalColorLegendPresModel - ParameterId["CategoricalColorLegend"] = "colorLegend"; - // DPI_ColorLegendItem, having type CategoricalColorLegendItemPresModel - ParameterId["ColorLegendItem"] = "colorLegendItem"; - // DPI_ColorLegendItems, having type CategoricalColorLegendItemPresModel[] - ParameterId["ColorLegendItems"] = "colorLegendItems"; - // DPI_CategoricalShapeLegend, having type CategoricalShapeLegendPresModel - ParameterId["CategoricalShapeLegend"] = "categoricalShapeLegend"; - // DPI_ShapeLegendItem, having type CategoricalShapeLegendItemPresModel - ParameterId["ShapeLegendItem"] = "shapeLegendItem"; - // DPI_ShapeLegendItems, having type CategoricalShapeLegendItemPresModel[] - ParameterId["ShapeLegendItems"] = "shapeLegendItems"; - // DPI_CategoricalHighlightLegend, having type CategoricalHighlightLegendPresModel - ParameterId["CategoricalHighlightLegend"] = "categoricalHighlightLegend"; - // DPI_HighlightLegendItem, having type CategoricalLegendItemPresModel - ParameterId["HighlightLegendItem"] = "highlightLegendItem"; - // DPI_HighlightLegendItems, having type CategoricalLegendItemPresModel[] - ParameterId["HighlightLegendItems"] = "highlightLegendItems"; - // DPI_CategoricalSizeLegend, having type CategoricalSizeLegendPresModel - ParameterId["CategoricalSizeLegend"] = "categoricalSizeLegend"; - // DPI_SizeLegendItem, having type CategoricalSizeLegendItemPresModel - ParameterId["SizeLegendItem"] = "sizeLegendItem"; - // DPI_SizeLegendItems, having type CategoricalSizeLegendItemPresModel[] - ParameterId["SizeLegendItems"] = "sizeLegendItems"; - // DPI_CategoricalMapLegend, having type CategoricalMapLegendPresModel - ParameterId["CategoricalMapLegend"] = "categoricalMapLegend"; - // DPI_QuantitativeColorLegend, having type QuantitativeColorLegendPresModel - ParameterId["QuantitativeColorLegend"] = "quantitativeColorLegend"; - // DPI_QuantitativeColorLegends, having type QuantitativeColorLegendPresModel[] - ParameterId["QuantitativeColorLegends"] = "quantitativeColorLegends"; - // DPI_QuantitativeLegendLayout, having type QuantitativeLegendLayoutPresModel - ParameterId["QuantitativeLegendLayout"] = "quantitativeLegendLayout"; - // DPI_ServerRenderedLegend, having type ServerRenderedLegendPresModel - ParameterId["ServerRenderedLegend"] = "serverRenderedLegend"; - // DPI_CategoricalFilter, having type CategoricalFilterPresModel - ParameterId["CategoricalFilter"] = "categoricalFilter"; - // DPI_CategoricalFilterRelational, having type CategoricalFilterRelationalPresModel - ParameterId["CategoricalFilterRelational"] = "categoricalFilterRelational"; - // DPI_CategoricalFilterMemberDomainPage, having type CategoricalFilterMemberDomainPagePresModel - ParameterId["CategoricalFilterMemberDomainPage"] = "categoricalFilterMemberDomainPage"; - // DPI_CategoricalFilterCacheInfo, having type CategoricalFilterCacheInfoPresModel - ParameterId["CategoricalFilterCacheInfo"] = "categoricalFilterCacheInfo"; - // DPI_CategoricalFilterPatternDisplay, having type CategoricalFilterPatternDisplayPresModel - ParameterId["CategoricalFilterPatternDisplay"] = "categoricalFilterPatternDisplay"; - // DPI_CategoricalFilterPatternUpdate, having type CategoricalFilterPatternUpdatePresModel - ParameterId["CategoricalFilterPatternUpdate"] = "categoricalFilterPatternUpdate"; - // DPI_CategoricalFilterConditionDisplay, having type CategoricalFilterConditionDisplayPresModel - ParameterId["CategoricalFilterConditionDisplay"] = "categoricalFilterConditionDisplay"; - // DPI_CategoricalFilterConditionUpdate, having type CategoricalFilterConditionUpdatePresModel - ParameterId["CategoricalFilterConditionUpdate"] = "categoricalFilterConditionUpdate"; - // DPI_CategoricalFilterLimitDisplay, having type CategoricalFilterLimitDisplayPresModel - ParameterId["CategoricalFilterLimitDisplay"] = "categoricalFilterLimitDisplay"; - // DPI_CategoricalFilterLimitUpdate, having type CategoricalFilterLimitUpdatePresModel - ParameterId["CategoricalFilterLimitUpdate"] = "categoricalFilterLimitUpdate"; - // DPI_CategoricalFilterNew, having type CategoricalFilter_NewPresModel - ParameterId["CategoricalFilterNew"] = "categoricalFilterNew"; - // DPI_CategoricalFilterHierarchy, having type CategoricalFilterHierarchyPresModel - ParameterId["CategoricalFilterHierarchy"] = "categoricalFilterHirerarchy"; - // DPI_CategoricalFilterUpdate, having type CategoricalFilterUpdatePresModel - ParameterId["CategoricalFilterUpdate"] = "categoricalFilterUpdate"; - // DPI_CategoricalFilterRelationalState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalState"] = "categoricalRelationalState"; - // DPI_CategoricalFilterRelationalUpdatedState, having type CategoricalFilterRelationalStatePresModel - ParameterId["CategoricalFilterRelationalUpdatedState"] = "categoricalRelationalUpdatedState"; - // DPI_CategoricalFilterRelationalDomainInfo, having type CategoricalFilterRelationalDomainInfoPresModel - ParameterId["CategoricalFilterRelationalDomainInfo"] = "categoricalFilterRelationalDomainInfo"; - // DPI_CategoricalFilterRelationalDisplay, having type CategoricalFilterRelationalDisplayPresModel - ParameterId["CategoricalFilterRelationalDisplay"] = "categoricalFilterRelationalDisplay"; - // DPI_ExpressionToken, having type ExpressionTokenPresModel - ParameterId["ExpressionToken"] = "expressionToken"; - // DPI_ExpressionTokens, having type ExpressionTokenPresModel[] - ParameterId["ExpressionTokens"] = "expressionTokens"; - // DPI_FormulaValidation, having type FormulaValidationPresModel - ParameterId["FormulaValidation"] = "formulaValidation"; - // DPI_CaptionedFilterValue, having type FilterValuePresModel - ParameterId["CaptionedFilterValue"] = "captionedFilterValue"; - // DPI_CaptionedRangeMin, having type FilterValuePresModel - ParameterId["CaptionedRangeMin"] = "captionedRangeMin"; - // DPI_CaptionedRangeMax, having type FilterValuePresModel - ParameterId["CaptionedRangeMax"] = "captionedRangeMax"; - // DPI_CaptionedAnchorDate, having type FilterValuePresModel - ParameterId["CaptionedAnchorDate"] = "captionedAnchorDate"; - // DPI_CaptionedFilterValueList, having type FilterValuePresModel[] - ParameterId["CaptionedFilterValueList"] = "captionedFilterValueList"; - // DPI_CategoricalFilterInfo, having type CategoricalFilterInfoPresModel - ParameterId["CategoricalFilterInfo"] = "categoricalFilterInfo"; - // DPI_QuantitativeFilterInfo, having type QuantitativeFilterInfoPresModel - ParameterId["QuantitativeFilterInfo"] = "quantitativeFilterInfo"; - // DPI_RelativeDateFilterInfo, having type RelativeDateFilterInfoPresModel - ParameterId["RelativeDateFilterInfo"] = "relativeDateFilterInfo"; - // DPI_FilterInfo, having type FilterInfoPresModel - ParameterId["FilterInfo"] = "filterInfo"; - // DPI_FiltersInfo, having type FilterInforPresModel[] - ParameterId["FiltersInfo"] = "filtersInfo"; - // DPI_CategoricalDomain, having type CategoricalDomainPresModel - ParameterId["CategoricalDomain"] = "categoricalDomain"; - // DPI_QuantitativeDomain, having type QuantitativeDomainPresModel - ParameterId["QuantitativeDomain"] = "quantitativeDomain"; - // DPI_ValidationResults, having type ValidationResultsPresModel - ParameterId["ValidationResults"] = "validationResults"; - // DPI_DomainMember, having type DomainMemberPresModel - ParameterId["DomainMember"] = "domainMember"; - // DPI_DomainMembers, having type DomainMemberPresModel[] - ParameterId["DomainMembers"] = "domainMembers"; - // DPI_QuickFilterDisplay, having type QuickFilterDisplayPresModel - ParameterId["QuickFilterDisplay"] = "quickFilterDisplay"; - // DPI_QuickFilter, having type QuickFilterPresModel - ParameterId["QuickFilter"] = "quickFilter"; - // DPI_QuantitativeQuickFilter, having type QuantitativeQuickFilterPresModel - ParameterId["QuantitativeQuickFilter"] = "quantitativeQuickFilter"; - // DPI_RelativeDateQuickFilter, having type RelativeDateQuickFilterPresModel - ParameterId["RelativeDateQuickFilter"] = "relativeDateQuickFilter"; - // DPI_CategoricalQuickFilter, having type CategoricalQuickFilterPresModel - ParameterId["CategoricalQuickFilter"] = "categoricalQuickFilter"; - // DPI_HierarchicalQuickFilter, having type HierarchicalQuickFilterPresModel - ParameterId["HierarchicalQuickFilter"] = "hierarchicalQuickFilter"; - // DPI_DomainTable, having type DomainTablePresModel - ParameterId["DomainTable"] = "domainTable"; - // DPI_DomainTables, having type DomainTablePresModel[] - ParameterId["DomainTables"] = "domainTables"; - // DPI_DomainTuples, having type Tuples - ParameterId["DomainTuples"] = "domainTuples"; - // DPI_SearchTuples, having type Tuples - ParameterId["SearchTuples"] = "searchTuples"; - // DPI_SelectedTuples, having type TupleHash - ParameterId["SelectedTuples"] = "selectedTuples"; - // DPI_PendingTuples, having type TupleHash - ParameterId["PendingTuples"] = "pendingTuples"; - // DPI_Domain, having type MultiDomain - ParameterId["Domain"] = "domain"; - // DPI_DateOption, having type DateBinDialogOptionPresModel - ParameterId["DateOption"] = "dateOption"; - // DPI_DateOptions, having type DateBinDialogOptionPresModel[] - ParameterId["DateOptions"] = "dateOptions"; - // DPI_FilterRangeAdd, having type FilterRangePresModel - ParameterId["FilterRangeAdd"] = "filterRangeAdd"; - // DPI_FilterRangeRemove, having type FilterRangePresModel - ParameterId["FilterRangeRemove"] = "filterRangeRemove"; - // DPI_FilterOptions, having type FilterOptionsPresModel - ParameterId["FilterOptions"] = "filterOptions"; - // DPI_Layer, having type LayerPresModel - ParameterId["Layer"] = "layer"; - // DPI_Layers, having type LayerPresModel[] - ParameterId["Layers"] = "layers"; - // DPI_MarksCardPresModel, having type MarksCardPresModel - ParameterId["MarksCardPresModel"] = "marksCardPresModel"; - // DPI_UIItem, having type UIItemPresModel - ParameterId["UIItem"] = "uiItem"; - // DPI_EncodingUIItem, having type EncodingUIItemPresModel - ParameterId["EncodingUIItem"] = "encodingUiItem"; - // DPI_EncodingUIItems, having type EncodingUIItemPresModel[] - ParameterId["EncodingUIItems"] = "encodingUiItems"; - // DPI_PrimTypeUIItem, having type PrimitiveTypeUIItemPresModel - ParameterId["PrimTypeUIItem"] = "primitiveTypeUiItem"; - // DPI_PrimTypeUIItems, having type PrimitiveTypeUIItemPresModel[] - ParameterId["PrimTypeUIItems"] = "primitiveTypeUiItems"; - // DPI_PrimitiveTypeUIItemOptions, having type PrimitiveTypeUIItemOptionsPresModel - ParameterId["PrimitiveTypeUIItemOptions"] = "primitiveTypeUiItemOptions"; - // DPI_LineUIItemOptions, having type LineUIItemOptionsPresModel - ParameterId["LineUIItemOptions"] = "lineUiItemOptions"; - // DPI_LineInterpolationModeUIItem, having type LineInterpolationModeUIItemPresModel - ParameterId["LineInterpolationModeUIItem"] = "lineInterpolationModeUiItem"; - // DPI_LineInterpolationModeUIItemSet, having type LineInterpolationModeUIItemPresModel[] - ParameterId["LineInterpolationModeUIItemSet"] = "lineInterpolationModeUiItemSet"; - // DPI_LineMarkerPositionUIItem, having type LineMarkerPositionUIItemPresModel - ParameterId["LineMarkerPositionUIItem"] = "lineMarkerPositionUiItem"; - // DPI_LineMarkerPositionUIItemSet, having type LineMarkerPositionUIItemPresModel[] - ParameterId["LineMarkerPositionUIItemSet"] = "lineMarkerPositionUiItemSet"; - // DPI_MarksCardDropdownItem, having type MarksCardDropdownItemPresModel - ParameterId["MarksCardDropdownItem"] = "marksCardDropdownItem"; - // DPI_TooltipDropdownItem, having type TooltipDropdownItemPresModel - ParameterId["TooltipDropdownItem"] = "tooltipDropdownItem"; - // DPI_TextDropdownItem, having type TextDropdownItemPresModel - ParameterId["TextDropdownItem"] = "textDropdownItem"; - // DPI_ColorDropdownItem, having type ColorDropdownItemPresModel - ParameterId["ColorDropdownItem"] = "colorDropdownItem"; - // DPI_SizeSliderPresModel, having type SizeSliderPresModel - ParameterId["SizeSliderPresModel"] = "sizeSliderPresModel"; - // DPI_InflectionPoint, having type InflectionPointPresModel - ParameterId["InflectionPoint"] = "inflectionPoint"; - // DPI_InflectionPoints, having type InflectionPointPresModel[] - ParameterId["InflectionPoints"] = "inflectionPoints"; - // DPI_Notch, having type NotchPresModel - ParameterId["Notch"] = "notch"; - // DPI_Notches, having type NotchPresModel[] - ParameterId["Notches"] = "notches"; - // DPI_MarkSizeOptionsPresModel, having type MarkSizeOptionsPresModel - ParameterId["MarkSizeOptionsPresModel"] = "markSizeOptionsPresModel"; - // DPI_ModifyMarksInSet, having type AddOrRemoveMarks - ParameterId["ModifyMarksInSet"] = "addOrRemoveMarks"; - // DPI_MarkLabelsSpecification, having type MarkLabelsSpecificationPresModel - ParameterId["MarkLabelsSpecification"] = "markLabelsSpecification"; - // DPI_ColorPalette, having type ColorPalettePresModel - ParameterId["ColorPalette"] = "colorPalette"; - // DPI_SelectedColorPalette, having type ColorPalettePresModel - ParameterId["SelectedColorPalette"] = "selectedColorPalette"; - // DPI_ColorPalettes, having type ColorPalettePresModel[] - ParameterId["ColorPalettes"] = "colorPalettes"; - // DPI_ColorPaletteGroup, having type ColorPaletteGroupPresModel - ParameterId["ColorPaletteGroup"] = "colorPaletteGroup"; - // DPI_CatColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["CatColorPaletteGroups"] = "catColorPaletteGroups"; - // DPI_QColorPaletteGroups, having type ColorPaletteGroupPresModel[] - ParameterId["QColorPaletteGroups"] = "qColorPaletteGroups"; - // DPI_ColorPaletteCollection, having type ColorPaletteCollectionPresModel - ParameterId["ColorPaletteCollection"] = "colorPaletteCollection"; - // DPI_QuantitativeColor, having type QuantitativeColorPresModel - ParameterId["QuantitativeColor"] = "quantitativeColor"; - // DPI_CategoricalColor, having type CategoricalColorPresModel - ParameterId["CategoricalColor"] = "categoricalColor"; - // DPI_ItemColorPair, having type ItemColorPairPresModel - ParameterId["ItemColorPair"] = "itemColorPair"; - // DPI_ItemColorPairs, having type ItemColorPairPresModel[] - ParameterId["ItemColorPairs"] = "itemColorPairs"; - // DPI_VQLCommandResponse, having type VQLCommandResponsePresModel - ParameterId["VQLCommandResponse"] = "vqlCmdResponse"; - // DPI_LayoutStatus, having type LayoutStatusPresModel - ParameterId["LayoutStatus"] = "layoutStatus"; - // DPI_VizState, having type VizStatePresModel - ParameterId["VizState"] = "vizState"; - // DPI_VizStateList, having type VizStatePresModel[] - ParameterId["VizStateList"] = "vizStateList"; - // DPI_CommandResult, having type CommandResultPresModel - ParameterId["CommandResult"] = "cmdResult"; - // DPI_CommandResultList, having type CommandResultPresModel[] - ParameterId["CommandResultList"] = "cmdResultList"; - // DPI_URLAction, having type URLActionPresModel - ParameterId["URLAction"] = "urlAction"; - // DPI_URLActionList, having type URLActionPresModel[] - ParameterId["URLActionList"] = "urlActionList"; - // DPI_LegacyMenu, having type LegacyMenuPresModel - ParameterId["LegacyMenu"] = "legacyMenu"; - // DPI_LegacyMenus, having type LegacyMenuPresModel[] - ParameterId["LegacyMenus"] = "legacyMenus"; - // DPI_ConnectionAttemptInfo, having type ConnectionAttemptInfoPresModel - ParameterId["ConnectionAttemptInfo"] = "connectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfo, having type DataSourceConnectionAttemptInfoPresModel - ParameterId["DataSourceConnectionAttemptInfo"] = "dataSourceConnectionAttemptInfo"; - // DPI_DataSourceConnectionAttemptInfos, having type DataSourceConnectionAttemptInfoPresModel[] - ParameterId["DataSourceConnectionAttemptInfos"] = "dataSourceConnectionAttemptInfos"; - // DPI_CommandValidationPresModel, having type CommandValidationPresModel - ParameterId["CommandValidationPresModel"] = "commandValidationPresModel"; - // DPI_WarningMessage, having type WarningMessagePresModel - ParameterId["WarningMessage"] = "warningMessagePresModel"; - // DPI_ApplicationPresModel, having type ApplicationPresModel - ParameterId["ApplicationPresModel"] = "applicationPresModel"; - // DPI_ToolbarPresModel, having type ToolbarPresModel - ParameterId["ToolbarPresModel"] = "toolbarPresModel"; - // DPI_WorkbookPresModel, having type WorkbookPresModel - ParameterId["WorkbookPresModel"] = "workbookPresModel"; - // DPI_ServerFonts, having type ServerFontsPresModel - ParameterId["ServerFonts"] = "serverFonts"; - // DPI_PublishDataSourceMetadataPresModel, having type PublishDataSourceMetadataPresModel - ParameterId["PublishDataSourceMetadataPresModel"] = "publishDataSourceMetadataPresModel"; - // DPI_DashboardPresModel, having type DashboardPresModel - ParameterId["DashboardPresModel"] = "dashboardPresModel"; - // DPI_DashboardSizePresModel, having type DashboardSizePresModel - ParameterId["DashboardSizePresModel"] = "dashboardSizePresModel"; - // DPI_DashboardSizeWithValidationPresModel, having type DashboardSizeWithValidationPresModel - ParameterId["DashboardSizeWithValidationPresModel"] = "dashboardSizeWithValidationPresModel"; - // DPI_DashboardInfoPresModel, having type DashboardInfoPresModel - ParameterId["DashboardInfoPresModel"] = "dashboardInfoPresModel"; - // DPI_VisualPresModel, having type VisualPresModel - ParameterId["VisualPresModel"] = "visual"; - // DPI_VisualPresModels, having type VisualPresModel[] - ParameterId["VisualPresModels"] = "visuals"; - // DPI_DropLinesPresModel, having type DropLinesPresModel - ParameterId["DropLinesPresModel"] = "dropLinesPresModel"; - // DPI_DropFieldPresModel, having type DropFieldPresModel - ParameterId["DropFieldPresModel"] = "dropFieldPresModel"; - // DPI_DropFieldResultPresModel, having type DropFieldResultPresModel - ParameterId["DropFieldResultPresModel"] = "dropFieldResultPresModel"; - // DPI_CurrentAxisRange, having type DataValueRangePresModel - ParameterId["CurrentAxisRange"] = "currentAxisRange"; - // DPI_CurrentAxisRangeNoTime, having type DataValueRangePresModel - ParameterId["CurrentAxisRangeNoTime"] = "currentAxisRangeNoTime"; - // DPI_DefaultAxisRange, having type DataValueRangePresModel - ParameterId["DefaultAxisRange"] = "defaultAxisRange"; - // DPI_NewAxisRange, having type DataValueRangePresModel - ParameterId["NewAxisRange"] = "newAxisRange"; - // DPI_AxisOptions, having type AxisOptionsPresModel - ParameterId["AxisOptions"] = "axis"; - // DPI_AxisMajorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMajorTicks"] = "axisMajorTicks"; - // DPI_AxisMinorTicks, having type TickMarkInfoPresModel - ParameterId["AxisMinorTicks"] = "axisMinorTicks"; - // DPI_EditAxisDialog, having type EditAxisDialogPresModel - ParameterId["EditAxisDialog"] = "editAxisDialog"; - // DPI_MarkLabels, having type ScenePresModel - ParameterId["MarkLabels"] = "markLabels"; - // DPI_Scene, having type ScenePresModel - ParameterId["Scene"] = "scene"; - // DPI_MapServer, having type MapServerPresModel - ParameterId["MapServer"] = "mapServer"; - // DPI_VisualList, having type VisualListPresModel - ParameterId["VisualList"] = "visualList"; - // DPI_DrawFirst, having type VisualListPresModel[] - ParameterId["DrawFirst"] = "drawFirst"; - // DPI_DrawLast, having type VisualListPresModel[] - ParameterId["DrawLast"] = "drawLast"; - // DPI_DrawPane, having type VisualListPresModel[] - ParameterId["DrawPane"] = "drawPane"; - // DPI_UserPaneInfo, having type UserPaneInfoPresModel - ParameterId["UserPaneInfo"] = "userPaneInfo"; - // DPI_AnalyticsPane, having type AnalyticsPanePresModel - ParameterId["AnalyticsPane"] = "analyticsPane"; - // DPI_AnalyticsObjectItem, having type AnalyticsObjectItemPresModel - ParameterId["AnalyticsObjectItem"] = "analyticsObjectItem"; - // DPI_AnalyticsObjectItems, having type AnalyticsObjectItemPresModel[] - ParameterId["AnalyticsObjectItems"] = "analyticsObjectItems"; - // DPI_AnalyticsObjectGroup, having type AnalyticsObjectGroupPresModel - ParameterId["AnalyticsObjectGroup"] = "analyticsObjectGroup"; - // DPI_AnalyticsObjectGroups, having type AnalyticsObjectGroupPresModel[] - ParameterId["AnalyticsObjectGroups"] = "analyticsObjectGroups"; - // DPI_DropZoneItem, having type DropZoneItemPresModel - ParameterId["DropZoneItem"] = "dropZoneItem"; - // DPI_DropZoneItems, having type DropZoneItemPresModel[] - ParameterId["DropZoneItems"] = "dropZoneItems"; - // DPI_DropTargetInfo, having type DropTargetInfoPresModel - ParameterId["DropTargetInfo"] = "dropTargetInfo"; - // DPI_Pane, having type PanePresModel - ParameterId["Pane"] = "pane"; - // DPI_Panes, having type PanePresModel[] - ParameterId["Panes"] = "panes"; - // DPI_RadialSelectionDistanceInfo, having type RadialSelectionDistanceInfoPresModel - ParameterId["RadialSelectionDistanceInfo"] = "radialSelectionDistanceInfo"; - // DPI_MapScaleInfo, having type MapScaleInfoPresModel - ParameterId["MapScaleInfo"] = "mapScaleInfo"; - // DPI_RenderNode, having type RenderNodePresModel - ParameterId["RenderNode"] = "renderNode"; - // DPI_RenderNodes, having type RenderNodePresModel[] - ParameterId["RenderNodes"] = "renderNodes"; - // DPI_PredictionBand, having type PredictionBandPresModel - ParameterId["PredictionBand"] = "predictionBand"; - // DPI_PredictionWhisker, having type PredictionWhiskerPresModel - ParameterId["PredictionWhisker"] = "predictionWhisker"; - // DPI_DrawGroup, having type DrawPointsPresModel - ParameterId["DrawGroup"] = "drawGroup"; - // DPI_ClipReset, having type DrawItemPresModel - ParameterId["ClipReset"] = "clipReset"; - // DPI_DrawItem, having type DrawItemPresModel - ParameterId["DrawItem"] = "drawItem"; - // DPI_TransformPop, having type DrawItemPresModel - ParameterId["TransformPop"] = "transformPop"; - // DPI_TransformPush, having type DrawItemPresModel - ParameterId["TransformPush"] = "transformPush"; - // DPI_DrawItems, having type DrawItemPresModel[] - ParameterId["DrawItems"] = "drawItems"; - // DPI_ClipRect, having type DrawPointsPresModel - ParameterId["ClipRect"] = "clipRect"; - // DPI_DrawEllipse, having type DrawPointsPresModel - ParameterId["DrawEllipse"] = "drawEllipse"; - // DPI_DrawFillEllipse, having type DrawPointsPresModel - ParameterId["DrawFillEllipse"] = "drawFillEllipse"; - // DPI_DrawFillPolygon, having type DrawPointsPresModel - ParameterId["DrawFillPolygon"] = "drawFillPolygon"; - // DPI_DrawFillRect, having type DrawPointsPresModel - ParameterId["DrawFillRect"] = "drawFillRect"; - // DPI_DrawPolygon, having type DrawPointsPresModel - ParameterId["DrawPolygon"] = "drawPolygon"; - // DPI_DrawPolyline, having type DrawPointsPresModel - ParameterId["DrawPolyline"] = "drawPolyline"; - // DPI_DrawRect, having type DrawPointsPresModel - ParameterId["DrawRect"] = "drawRect"; - // DPI_DrawFillPath, having type DrawPathPresModel - ParameterId["DrawFillPath"] = "drawFillPath"; - // DPI_DrawPath, having type DrawPathPresModel - ParameterId["DrawPath"] = "drawPath"; - // DPI_DrawText, having type DrawTextPresModel - ParameterId["DrawText"] = "drawText"; - // DPI_DrawImage, having type DrawImagePresModel - ParameterId["DrawImage"] = "drawImage"; - // DPI_ImageTileInfo, having type ImageTileInfoPresModel - ParameterId["ImageTileInfo"] = "tileInfo"; - // DPI_ImageTileInfos, having type ImageTileInfoPresModel[] - ParameterId["ImageTileInfos"] = "tileInfos"; - // DPI_DrawImageTiles, having type DrawImageTilesPresModel - ParameterId["DrawImageTiles"] = "drawImageTiles"; - // DPI_DrawPen, having type DrawPenPresModel - ParameterId["DrawPen"] = "drawPen"; - // DPI_DrawSolidBrush, having type DrawSolidBrushPresModel - ParameterId["DrawSolidBrush"] = "drawSolidBrush"; - // DPI_DrawTextProperties, having type DrawTextPropertiesPresModel - ParameterId["DrawTextProperties"] = "drawTextProps"; - // DPI_DrawGradientBrush, having type DrawGradientBrushPresModel - ParameterId["DrawGradientBrush"] = "drawGradientBrush"; - // DPI_DrawTransform, having type DrawTransformPresModel - ParameterId["DrawTransform"] = "transform"; - // DPI_DrawAntialias, having type DrawAntialiasPresModel - ParameterId["DrawAntialias"] = "drawAntialias"; - // DPI_ImageDictionary, having type ImageDictionaryPresModel - ParameterId["ImageDictionary"] = "imageDictionary"; - // DPI_ColorDictionary, having type ColorDictionaryPresModel - ParameterId["ColorDictionary"] = "colorDictionary"; - // DPI_MarkShape, having type MarkShapePresModel - ParameterId["MarkShape"] = "markShape"; - // DPI_MarkShapeList, having type MarkShapePresModel[] - ParameterId["MarkShapeList"] = "markShapeList"; - // DPI_PaneDescriptor, having type PaneDescriptorPresModel - ParameterId["PaneDescriptor"] = "paneDescriptor"; - // DPI_PDMarks, having type PDMarksPresModel - ParameterId["PDMarks"] = "pdMarks"; - // DPI_PDMarksMap, having type Dictionary(of PDMarksPresModel) - ParameterId["PDMarksMap"] = "pdMarksMap"; - // DPI_LabelTextTable, having type LabelTextTable - ParameterId["LabelTextTable"] = "labelTextTable"; - // DPI_TextTableHelper, having type TextTableHelper - ParameterId["TextTableHelper"] = "textTableHelper"; - // DPI_GeometryTable, having type GeometryTable - ParameterId["GeometryTable"] = "geometryTable"; - // DPI_PaneMarks, having type PaneMarksPresModel - ParameterId["PaneMarks"] = "paneMarks"; - // DPI_PaneMarksList, having type PaneMarksPresModel[] - ParameterId["PaneMarksList"] = "paneMarksList"; - // DPI_BrushingSelection, having type SelectionPresModel - ParameterId["BrushingSelection"] = "brushing"; - // DPI_Selection, having type SelectionPresModel - ParameterId["Selection"] = "selection"; - // DPI_BrushingSelectionList, having type SelectionPresModel[] - ParameterId["BrushingSelectionList"] = "brushingSelectionList"; - // DPI_SelectionList, having type SelectionPresModel[] - ParameterId["SelectionList"] = "selectionList"; - // DPI_ShelfSelectionModel, having type ShelfSelectionPresModel - ParameterId["ShelfSelectionModel"] = "shelfSelectionModel"; - // DPI_ShelfSelectionModels, having type ShelfSelectionPresModel[] - ParameterId["ShelfSelectionModels"] = "shelfSelectionModels"; - // DPI_ShelfSelectionsModel, having type ShelfSelectionsPresModel - ParameterId["ShelfSelectionsModel"] = "shelfSelectionsModel"; - // DPI_DimValSelectionModel, having type DimensionValueSelectionPresModel - ParameterId["DimValSelectionModel"] = "dimensionValueSelectionModel"; - // DPI_DimValSelectionModels, having type DimensionValueSelectionPresModel[] - ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; - // DPI_HierValSelectionModel, having type HierarchicalValueSelectionPresModel - ParameterId["HierValSelectionModel"] = "hierarchicalValueSelectionModel"; - // DPI_HierValSelectionModels, having type HierarchicalValueSelectionPresModel[] - ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; - // DPI_QuantRangeSelectionModel, having type QuantativeRangeSelectionPresModel - ParameterId["QuantRangeSelectionModel"] = "quantativeRangeSelectionModel"; - // DPI_QuantRangeSelectionModels, having type QuantativeRangeSelectionPresModel[] - ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; - // DPI_QuantValueSelectionModel, having type QuantativeValueSelectionPresModel - ParameterId["QuantValueSelectionModel"] = "quantativeValueSelectionModel"; - // DPI_QuantValueSelectionModels, having type QuantativeValueSelectionPresModel[] - ParameterId["QuantValueSelectionModels"] = "quantativeValueSelectionModels"; - // DPI_LegendSelectionInfo, having type LegendSelectionInfoPresModel - ParameterId["LegendSelectionInfo"] = "legendSelectionInfo"; - // DPI_NodeReference, having type NodeReferencePresModel - ParameterId["NodeReference"] = "nodeReference"; - // DPI_PageReference, having type PageReferencePresModel - ParameterId["PageReference"] = "pageReference"; - // DPI_OrientedNodeReference, having type OrientedNodeReferencePresModel - ParameterId["OrientedNodeReference"] = "orientedNodeReference"; - // DPI_OrientedNodeReferences, having type OrientedNodeReferencePresModel[] - ParameterId["OrientedNodeReferences"] = "orientedNodeReferences"; - // DPI_SelectionData, having type SelectionDataPresModel - ParameterId["SelectionData"] = "selectionData"; - // DPI_HighlightedData, having type HighlightedDataPresModel - ParameterId["HighlightedData"] = "highlightedData"; - // DPI_Node, having type NodePresModel - ParameterId["Node"] = "node"; - // DPI_Nodes, having type NodePresModel[] - ParameterId["Nodes"] = "nodes"; - // DPI_SelectedNodes, having type NodePresModel[] - ParameterId["SelectedNodes"] = "selectedNodes"; - // DPI_UserAction, having type ActionPresModel - ParameterId["UserAction"] = "userAction"; - // DPI_UserActions, having type ActionPresModel[] - ParameterId["UserActions"] = "userActions"; - // DPI_LinkSpec, having type LinkSpecPresModel - ParameterId["LinkSpec"] = "linkSpec"; - // DPI_ActionSpecificationModel, having type ActionSpecificationPresModel - ParameterId["ActionSpecificationModel"] = "actionSpecification"; - // DPI_LinkSpecification, having type LinkSpecificationPresModel - ParameterId["LinkSpecification"] = "linkSpecification"; - // DPI_ScriptDescription, having type ScriptDescriptionPresModel - ParameterId["ScriptDescription"] = "scriptDescription"; - // DPI_ActionSource, having type ActionSourcePresModel - ParameterId["ActionSource"] = "actionSource"; - // DPI_FieldExprItem, having type FieldExprItemPresModel - ParameterId["FieldExprItem"] = "fieldExpressionItem"; - // DPI_FieldExprVector, having type FieldExprItemPresModel[] - ParameterId["FieldExprVector"] = "fieldExpressionVector"; - // DPI_ActionComboItem, having type ActionComboItemPresModel - ParameterId["ActionComboItem"] = "actionComboItem"; - // DPI_ActionComboVector, having type ActionComboItemPresModel[] - ParameterId["ActionComboVector"] = "actionComboVector"; - // DPI_ActionSourceCombo, having type ActionSourceComboPresModel - ParameterId["ActionSourceCombo"] = "actionSourceCombo"; - // DPI_ActionDestCombo, having type ActionComboPresModel - ParameterId["ActionDestCombo"] = "actionDestCombo"; - // DPI_ActionFieldList, having type ActionFieldListPresModel - ParameterId["ActionFieldList"] = "actionFieldList"; - // DPI_EditBrushAction, having type EditBrushActionPresModel - ParameterId["EditBrushAction"] = "editBrushAction"; - // DPI_UpdateActionSource, having type UpdateActionSourcePresModel - ParameterId["UpdateActionSource"] = "updateActionSource"; - // DPI_UpdateBrushAction, having type UpdateBrushActionPresModel - ParameterId["UpdateBrushAction"] = "updateBrushAction"; - // DPI_ActionWarnings, having type ActionWarningsPresModel - ParameterId["ActionWarnings"] = "actionWarnings"; - // DPI_EditHyperlinkAction, having type EditHyperlinkActionPresModel - ParameterId["EditHyperlinkAction"] = "editHyperlinkAction"; - // DPI_UpdateHyperlinkAction, having type UpdateHyperlinkActionPresModel - ParameterId["UpdateHyperlinkAction"] = "updateHyperlinkAction"; - // DPI_EditSheetLinkAction, having type EditSheetLinkActionPresModel - ParameterId["EditSheetLinkAction"] = "editSheetlinkAction"; - // DPI_UpdateSheetLinkAction, having type UpdateSheetLinkActionPresModel - ParameterId["UpdateSheetLinkAction"] = "updateSheetlinkAction"; - // DPI_ActionItem, having type ActionItemPresModel - ParameterId["ActionItem"] = "actionItem"; - // DPI_ActionItemList, having type ActionItemPresModel[] - ParameterId["ActionItemList"] = "actionItemList"; - // DPI_DataSegment, having type DataSegmentPresModel - ParameterId["DataSegment"] = "dataSegment"; - // DPI_DataSegments, having type Dictionary(of DataSegmentPresModel) - ParameterId["DataSegments"] = "dataSegments"; - // DPI_DataDictionary, having type DataDictionaryPresModel - ParameterId["DataDictionary"] = "dataDictionary"; - // DPI_VizData, having type VizDataPresModel - ParameterId["VizData"] = "vizData"; - // DPI_VizColumn, having type VizColumnPresModel - ParameterId["VizColumn"] = "vizColumn"; - // DPI_VizColumns, having type VizColumnPresModel[] - ParameterId["VizColumns"] = "vizColumns"; - // DPI_VizDataColumn, having type VizDataColumnPresModel - ParameterId["VizDataColumn"] = "vizDataColumn"; - // DPI_VizDataColumns, having type VizDataColumnPresModel[] - ParameterId["VizDataColumns"] = "vizDataColumns"; - // DPI_VizPaneColumn, having type VizPaneColumnPresModel - ParameterId["VizPaneColumn"] = "vizPaneColumn"; - // DPI_VizPaneColumns, having type VizPaneColumnPresModel[] - ParameterId["VizPaneColumns"] = "vizPaneColumns"; - // DPI_PaneColumns, having type PaneColumnsPresModel - ParameterId["PaneColumns"] = "paneColumns"; - // DPI_PaneColumnsList, having type PaneColumnsPresModel[] - ParameterId["PaneColumnsList"] = "paneColumnsList"; - // DPI_PaneColumnsData, having type PaneColumnsDataPresModel - ParameterId["PaneColumnsData"] = "paneColumnsData"; - // DPI_FilterContext, having type FilterContextPresModel - ParameterId["FilterContext"] = "filterContext"; - // DPI_UberTipPaneData, having type UberTipPaneDataPresModel - ParameterId["UberTipPaneData"] = "ubertipPaneData"; - // DPI_UberTipPaneDatas, having type UberTipPaneDataPresModel[] - ParameterId["UberTipPaneDatas"] = "ubertipPaneDatas"; - // DPI_UberTipData, having type UberTipDataPresModel - ParameterId["UberTipData"] = "ubertipData"; - // DPI_RefLineTip, having type RefLineTipPresModel - ParameterId["RefLineTip"] = "refLineTip"; - // DPI_RefLineTips, having type RefLineTipPresModel[] - ParameterId["RefLineTips"] = "refLineTips"; - // DPI_NumericBin, having type NumericBinPresModel - ParameterId["NumericBin"] = "numericBin"; - // DPI_NumericBinDialog, having type NumericBinDialogPresModel - ParameterId["NumericBinDialog"] = "numericBinDialog"; - // DPI_DomainRange, having type DomainRangePresModel - ParameterId["DomainRange"] = "domainRange"; - // DPI_BinSizeInfo, having type BinSizeInfoPresModel - ParameterId["BinSizeInfo"] = "binSizeInfo"; - // DPI_DetailedErrorDialog, having type DetailedErrorPresModel - ParameterId["DetailedErrorDialog"] = "detailedErrorDialog"; - // DPI_DragSourcePosition, having type ShelfDropPositionPresModel - ParameterId["DragSourcePosition"] = "shelfDragSourcePosition"; - // DPI_DropTargetPosition, having type ShelfDropPositionPresModel - ParameterId["DropTargetPosition"] = "shelfDropTargetPosition"; - // DPI_ShelfDropPosition, having type ShelfDropPositionPresModel - ParameterId["ShelfDropPosition"] = "shelfDropPosition"; - // DPI_ShelfDropPositions, having type ShelfDropPositionPresModel[] - ParameterId["ShelfDropPositions"] = "shelfDropPositions"; - // DPI_ShelfDropModel, having type ShelfDropPresModel - ParameterId["ShelfDropModel"] = "shelfDropModel"; - // DPI_ShelfDropModels, having type ShelfDropPresModel[] - ParameterId["ShelfDropModels"] = "shelfDropModels"; - // DPI_Drag, having type DragPresModel - ParameterId["Drag"] = "drag"; - // DPI_SceneElement, having type SceneElementPresModel - ParameterId["SceneElement"] = "sceneElement"; - // DPI_SceneElements, having type SceneElementPresModel[] - ParameterId["SceneElements"] = "sceneElements"; - // DPI_QuickFilterType, having type QuickFilterType - ParameterId["QuickFilterType"] = "quickFilterType"; - // DPI_CatMode, having type QuickFilterCategoricalMode - ParameterId["CatMode"] = "categoricalMode"; - // DPI_CatCtrl, having type QuickFilterCategoricalCtrl - ParameterId["CatCtrl"] = "categoricalControl"; - // DPI_QuantMode, having type QuickFilterQuantitativeMode - ParameterId["QuantMode"] = "quantitativeMode"; - // DPI_QuantCtrl, having type QuickFilterQuantitativeCtrl - ParameterId["QuantCtrl"] = "quantitativeControl"; - // DPI_ZoneCommon, having type ZoneCommonPresModel - ParameterId["ZoneCommon"] = "zoneCommon"; - // DPI_ZoneCommonListItems, having type ZoneCommonPresModel[] - ParameterId["ZoneCommonListItems"] = "zoneCommonListItems"; - // DPI_Zone, having type ZonePresModel - ParameterId["Zone"] = "zone"; - // DPI_Zones, having type Dictionary(of ZonePresModel) - ParameterId["Zones"] = "zones"; - // DPI_ImageZone, having type ImageZonePresModel - ParameterId["ImageZone"] = "imageZone"; - // DPI_WebZone, having type WebZonePresModel - ParameterId["WebZone"] = "webZone"; - // DPI_ButtonZonePresModel, having type ButtonZonePresModel - ParameterId["ButtonZonePresModel"] = "buttonZone"; - // DPI_ZoneEdgeMoveType, having type ZoneEdgeMove - ParameterId["ZoneEdgeMoveType"] = "zoneEdgeMoveType"; - // DPI_ZoneSide, having type SideType - ParameterId["ZoneSide"] = "zoneSide"; - // DPI_SnapPoint, having type SnapPointPresModel - ParameterId["SnapPoint"] = "snapPoint"; - // DPI_SnapPoints, having type SnapPointPresModel[] - ParameterId["SnapPoints"] = "snapPoints"; - // DPI_TargetPreviewPair, having type DragDropTargetPreviewPairPresModel - ParameterId["TargetPreviewPair"] = "targetPreviewPair"; - // DPI_TargetPreviewPairs, having type DragDropTargetPreviewPairPresModel[] - ParameterId["TargetPreviewPairs"] = "targetPreviewPairs"; - // DPI_ContainerGuide, having type DragDropContainerGuidePresModel - ParameterId["ContainerGuide"] = "containerGuide"; - // DPI_ContainerGuides, having type DragDropContainerGuidePresModel[] - ParameterId["ContainerGuides"] = "containerGuides"; - // DPI_ZoneBorder, having type DragDropZoneBorderPresModel - ParameterId["ZoneBorder"] = "zoneBorder"; - // DPI_ZoneBorders, having type DragDropZoneBorderPresModel[] - ParameterId["ZoneBorders"] = "zoneBorders"; - // DPI_DashboardDragDrop, having type DashboardDragDropPresModel - ParameterId["DashboardDragDrop"] = "zoneDragDrop"; - // DPI_DragZoneResize, having type DragZoneResizePresModel - ParameterId["DragZoneResize"] = "zoneResize"; - // DPI_DashboardText, having type TextRegionPresModel - ParameterId["DashboardText"] = "dashboardText"; - // DPI_DashboardTitle, having type TextRegionPresModel - ParameterId["DashboardTitle"] = "dashboardTitle"; - // DPI_QuickFilterTitle, having type TextRegionPresModel - ParameterId["QuickFilterTitle"] = "quickFilterTitle"; - // DPI_VisualCaption, having type TextRegionPresModel - ParameterId["VisualCaption"] = "visualCaption"; - // DPI_VisualTitle, having type TextRegionPresModel - ParameterId["VisualTitle"] = "visualTitle"; - // DPI_ZoneTitleRegion, having type TextRegionPresModel - ParameterId["ZoneTitleRegion"] = "zoneTitle"; - // DPI_ForecastOptions, having type ForecastPresModel - ParameterId["ForecastOptions"] = "forecastOptions"; - // DPI_ForecastDescription, having type ForecastDescribePresModel - ParameterId["ForecastDescription"] = "forecastDescription"; - // DPI_WorkgroupPublishObject, having type WorkgroupPublishObjectPresModel - ParameterId["WorkgroupPublishObject"] = "publishDataSource"; - // DPI_PublishPermissionsSummary, having type PublishPermissionsSummaryPresModel - ParameterId["PublishPermissionsSummary"] = "publishPermissionsSummary"; - // DPI_CheckNameResults, having type CheckNameResultsPresModel - ParameterId["CheckNameResults"] = "checkNameResults"; - // DPI_ValidatePublishViewsResult, having type ValidatePublishViewsResultPresModel - ParameterId["ValidatePublishViewsResult"] = "validatePublishViewsResult"; - // DPI_PublishAuthenticationSettings, having type PublishAuthenticationSettingsPresModel - ParameterId["PublishAuthenticationSettings"] = "publishAuthenticationSettings"; - // DPI_ManageDatasources, having type ManageDatasourcesPresModel - ParameterId["ManageDatasources"] = "manageDatasources"; - // DPI_CredentialsAuthSettings, having type CredentialsAuthSettingsPresModel - ParameterId["CredentialsAuthSettings"] = "credentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettings, having type ConnectionCredentialsAuthSettingsPresModel - ParameterId["ConnectionCredentialsAuthSettings"] = "connectionCredentialsAuthSettings"; - // DPI_ConnectionCredentialsAuthSettingsList, having type ConnectionCredentialsAuthSettingsPresModel[] - ParameterId["ConnectionCredentialsAuthSettingsList"] = "connectionCredentialsAuthSettingsList"; - // DPI_PublishDatasourceFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel - ParameterId["PublishDatasourceFromWorkbookInfo"] = "publishDatasourceFromWorkbookInfo"; - // DPI_PublishDatasourcesFromWorkbookInfo, having type PublishDatasourceFromWorkbookInfoPresModel[] - ParameterId["PublishDatasourcesFromWorkbookInfo"] = "publishDatasourcesFromWorkbookInfo"; - // DPI_PublishSheet, having type PublishSheetPresModel - ParameterId["PublishSheet"] = "publishSheet"; - // DPI_PublishSheets, having type PublishSheetPresModel[] - ParameterId["PublishSheets"] = "publishSheets"; - // DPI_PublishObjectViews, having type PublishObjectViewsPresModel - ParameterId["PublishObjectViews"] = "publishObjectViews"; - // DPI_PublishObjectPublishSheetResults, having type PublishObjectPublishSheetResultsPresModel - ParameterId["PublishObjectPublishSheetResults"] = "publishObjectPublishSheetResults"; - // DPI_RefreshExtractSchedulingSettings, having type RefreshExtractSchedulingSettingsPresModel - ParameterId["RefreshExtractSchedulingSettings"] = "refreshExtractSchedulingSettings"; - // DPI_SetRefreshExtractScheduleResult, having type SetRefreshExtractScheduleResultPresModel - ParameterId["SetRefreshExtractScheduleResult"] = "setRefreshExtractScheduleResult"; - // DPI_CheckPublishObjectNameWarningsResults, having type CheckPublishObjectNameWarningsResultsPresModel - ParameterId["CheckPublishObjectNameWarningsResults"] = "checkPublishObjectNameWarningsResults"; - // DPI_PublishDatasourceOnWorkbookPublishResults, having type PublishDatasourceOnWorkbookPublishResultsPresModel - ParameterId["PublishDatasourceOnWorkbookPublishResults"] = "publishDatasourceOnWorkbookPublishResult"; - // DPI_PublishDataSourceResult, having type PublishDataSourceResultPresModel - ParameterId["PublishDataSourceResult"] = "publishDataSourceResult"; - // DPI_PublishWarningMessage, having type PublishWarningMessagePresModel - ParameterId["PublishWarningMessage"] = "publishWarningMessage"; - // DPI_MustDowngradeToPublishWarningMessagePresModel, having type PublishWarningMessagePresModel - ParameterId["MustDowngradeToPublishWarningMessagePresModel"] = "mustDowngradeToPublishWarningMessagePresModel"; - // DPI_PublishSelectedAttributes, having type PublishSelectedAttributesPresModel - ParameterId["PublishSelectedAttributes"] = "publishSelectedAttributes"; - // DPI_AutosaveFile, having type AutosaveFilePresModel - ParameterId["AutosaveFile"] = "autosaveFile"; - // DPI_AutosaveFiles, having type AutosaveFilePresModel[] - ParameterId["AutosaveFiles"] = "autosaveFiles"; - // DPI_FunctionGroup, having type FunctionGroup - ParameterId["FunctionGroup"] = "funcGrp"; - // DPI_FunctionGroups, having type FunctionGroup[] - ParameterId["FunctionGroups"] = "funcGrps"; - // DPI_FunctionArgType, having type FunctionArgType - ParameterId["FunctionArgType"] = "funcArgType"; - // DPI_FunctionArgTypes, having type FunctionArgType[] - ParameterId["FunctionArgTypes"] = "funcArgTypes"; - // DPI_CalculationStyle, having type CalcStyle - ParameterId["CalculationStyle"] = "calculationStyle"; - // DPI_Calculation, having type CalculationPresModel - ParameterId["Calculation"] = "calculation"; - // DPI_TypeInPill, having type CalculationPresModel - ParameterId["TypeInPill"] = "typeInPill"; - // DPI_CalcErrorInfo, having type CalcErrorInfoPresModel - ParameterId["CalcErrorInfo"] = "errorInfo"; - // DPI_CalcErrorInfos, having type CalcErrorInfoPresModel[] - ParameterId["CalcErrorInfos"] = "errorInfoList"; - // DPI_CalcualtionValidation, having type CalculationValidationPresModel - ParameterId["CalcualtionValidation"] = "calculationValidation"; - // DPI_ExpressionFunction, having type ExpressionFunctionPresModel - ParameterId["ExpressionFunction"] = "expressionFunc"; - // DPI_ExpressionFunctions, having type ExpressionFunctionPresModel[] - ParameterId["ExpressionFunctions"] = "expressionFuncList"; - // DPI_ExpressionFunctionsPM, having type ExpressionFunctionsPresModel - ParameterId["ExpressionFunctionsPM"] = "expressionFuncPm"; - // DPI_StyleToken, having type StyleTokenPresModel - ParameterId["StyleToken"] = "styleToken"; - // DPI_StyleTokens, having type StyleTokenPresModel[] - ParameterId["StyleTokens"] = "styleTokenList"; - // DPI_CalcEditorTextSelection, having type CalcEditorTextSelectionPresModel - ParameterId["CalcEditorTextSelection"] = "calcEditorTextSelection"; - // DPI_AutoCompleteItemType, having type AutoCompleteItemType - ParameterId["AutoCompleteItemType"] = "autocompleteType"; - // DPI_AutoCompleteItem, having type AutoCompleteItemPresModel - ParameterId["AutoCompleteItem"] = "autocompleteItem"; - // DPI_AutoCompleteItems, having type AutoCompleteItemPresModel[] - ParameterId["AutoCompleteItems"] = "autocompleteItemList"; - // DPI_CalculationAutoCompleteContextMenu, having type CalculationAutoCompleteContextMenuPresModel - ParameterId["CalculationAutoCompleteContextMenu"] = "calculationAutocompleteContextMenu"; - // DPI_CalcApplyResult, having type CalcApplyResult - ParameterId["CalcApplyResult"] = "calculationApplyResult"; - // DPI_RampBorderStyledBox, having type StyledBoxPresModel - ParameterId["RampBorderStyledBox"] = "rampBorderStyledBox"; - // DPI_StyledBox, having type StyledBoxPresModel - ParameterId["StyledBox"] = "styledBox"; - // DPI_GlobalStyledBox, having type StyledBoxPresModel - ParameterId["GlobalStyledBox"] = "globalStyledBox"; - // DPI_StyleContext, having type StyleContextPresModel - ParameterId["StyleContext"] = "styleContext"; - // DPI_CurrentTextStyle, having type TextStylePresModel - ParameterId["CurrentTextStyle"] = "currentTextStyle"; - // DPI_LabelTextStyle, having type TextStylePresModel - ParameterId["LabelTextStyle"] = "labelTextStyle"; - // DPI_OriginalTextStyle, having type TextStylePresModel - ParameterId["OriginalTextStyle"] = "originalTextStyle"; - // DPI_SelectedTextStyleModel, having type TextStylePresModel - ParameterId["SelectedTextStyleModel"] = "selectedTextStyleModel"; - // DPI_SwatchTextStyleModel, having type TextStylePresModel - ParameterId["SwatchTextStyleModel"] = "swatchTextStyle"; - // DPI_TextStyleModel, having type TextStylePresModel - ParameterId["TextStyleModel"] = "textStyle"; - // DPI_TitleStyleModel, having type TextStylePresModel - ParameterId["TitleStyleModel"] = "titleStyleModel"; - // DPI_PropertyBag, having type PropertyBagPresModel - ParameterId["PropertyBag"] = "propBagWrapper"; - // DPI_PresModelMap, having type Dictionary(of PropertyBagPresModel) - ParameterId["PresModelMap"] = "presModelMap"; - // DPI_PresentationLayerNotifications, having type PresModelMapPresModel - ParameterId["PresentationLayerNotifications"] = "presentationLayerNotifications"; - // DPI_SecondaryInfo, having type PresModelMapPresModel - ParameterId["SecondaryInfo"] = "secondaryInfo"; - // DPI_ClientDashboardUIMetric, having type ClientDashboardUIMetricPresModel - ParameterId["ClientDashboardUIMetric"] = "clientDashboardUiMetric"; - // DPI_ClientDashboardUIMetrics, having type ClientDashboardUIMetricPresModel[] - ParameterId["ClientDashboardUIMetrics"] = "clientDashboardUiMetrics"; - // DPI_ClientDashboardUIMetricContainer, having type ClientDashboardUIMetricContainerPresModel - ParameterId["ClientDashboardUIMetricContainer"] = "clientDashboardUiMetricContainer"; - // DPI_ExtSvcConfig, having type ExtSvcConfigPresModel - ParameterId["ExtSvcConfig"] = "extSvcConfig"; - // DPI_StoryboardSheetItem, having type StoryboardSheetItemPresModel - ParameterId["StoryboardSheetItem"] = "storyboardSheetItem"; - // DPI_StoryboardSheetItems, having type StoryboardSheetItemPresModel[] - ParameterId["StoryboardSheetItems"] = "storyboardSheetItems"; - // DPI_StoryboardSheetList, having type StoryboardSheetListPresModel - ParameterId["StoryboardSheetList"] = "storyboardSheetList"; - // DPI_FitToStoryBoardOptionItem, having type FitToStoryBoardOptionItemPresModel - ParameterId["FitToStoryBoardOptionItem"] = "fitToStoryboardOptionItem"; - // DPI_FitToStoryBoardOptionItems, having type FitToStoryBoardOptionItemPresModel[] - ParameterId["FitToStoryBoardOptionItems"] = "fitToStoryboardOptionItems"; - // DPI_FitToStoryBoardOptionList, having type FitToStoryBoardOptionListPresModel - ParameterId["FitToStoryBoardOptionList"] = "fitToStoryboardOptionList"; - // DPI_StoryPointNavItem, having type StoryPointNavItemPresModel - ParameterId["StoryPointNavItem"] = "storypointNavItem"; - // DPI_StoryPointNavItems, having type StoryPointNavItemPresModel[] - ParameterId["StoryPointNavItems"] = "storypointNavItems"; - // DPI_FlipboardNav, having type FlipboardNavPresModel - ParameterId["FlipboardNav"] = "flipboardNav"; - // DPI_ScrollBarStyle, having type ScrollBarStylePresModel - ParameterId["ScrollBarStyle"] = "scrollBarStyle"; - // DPI_DashboardZoneLayoutPane, having type DashboardZoneLayoutPanePresModel - ParameterId["DashboardZoneLayoutPane"] = "dashboardZoneLayoutPane"; - // DPI_SelectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["SelectedStoryPointStyle"] = "selectedStoryPointStyle"; - // DPI_UnselectedStoryPointStyle, having type StoryPointCaptionStylePresModel - ParameterId["UnselectedStoryPointStyle"] = "unselectedStoryPointStyle"; - // DPI_FlipboardNavStyle, having type FlipboardNavStylePresModel - ParameterId["FlipboardNavStyle"] = "flipboardNavStyle"; - // DPI_StoryPoint, having type StoryPointPresModel - ParameterId["StoryPoint"] = "storyPoint"; - // DPI_StoryPoints, having type Dictionary(of StoryPointPresModel) - ParameterId["StoryPoints"] = "storyPoints"; - // DPI_Flipboard, having type FlipboardPresModel - ParameterId["Flipboard"] = "flipboard"; - // DPI_StoryPair, having type StoryPairPresModel - ParameterId["StoryPair"] = "storyPair"; - // DPI_StoryPairs, having type StoryPairPresModel[] - ParameterId["StoryPairs"] = "storyPairs"; - // DPI_StoryboardPM, having type StoryboardPresModel - ParameterId["StoryboardPM"] = "storyboardPm"; - // DPI_HiDpiIconDictionary, having type ImageCollectionPresModel - ParameterId["HiDpiIconDictionary"] = "hiDpiIconDictionary"; - // DPI_IconDictionary, having type ImageCollectionPresModel - ParameterId["IconDictionary"] = "iconDictionary"; - // DPI_IconResourceDictionary, having type ImageResourceCollectionPresModel - ParameterId["IconResourceDictionary"] = "iconResDictionary"; - // DPI_DataPreviewWindowMessage, having type DataPreviewWindowMessagePresModel - ParameterId["DataPreviewWindowMessage"] = "dataPreviewWindowMessage"; - // DPI_DataSourceData, having type DataSourceDataPresModel - ParameterId["DataSourceData"] = "dataSrcData"; - // DPI_DataSourceSort, having type DataSourceSortPresModel - ParameterId["DataSourceSort"] = "dataSrcSort"; - // DPI_ColumnInfo, having type DSColumnInfoPresModel - ParameterId["ColumnInfo"] = "columnInfo"; - // DPI_ColumnInfos, having type DSColumnInfoPresModel[] - ParameterId["ColumnInfos"] = "columnInfos"; - // DPI_DataFormatter, having type DVFormatter - ParameterId["DataFormatter"] = "dataFormatter"; - // DPI_JoinDescription, having type JoinDescriptionPresModel - ParameterId["JoinDescription"] = "joinDescription"; - // DPI_JoinDescriptions, having type Dictionary(of JoinDescriptionPresModel) - ParameterId["JoinDescriptions"] = "joinDescriptions"; - // DPI_FileTableInfo, having type FileTableInfoPresModel - ParameterId["FileTableInfo"] = "fileTableInfo"; - // DPI_FieldMapping, having type FieldMappingPresModel - ParameterId["FieldMapping"] = "fieldMapping"; - // DPI_FieldMappingData, having type FieldMappingDataPresModel - ParameterId["FieldMappingData"] = "fieldMappingData"; - // DPI_FieldMappingDataVector, having type FieldMappingDataPresModel[] - ParameterId["FieldMappingDataVector"] = "fieldMappingDataVector"; - // DPI_FrameFinder, having type FrameFinderPresModel - ParameterId["FrameFinder"] = "frameFinder"; - // DPI_SheetLinkFieldMapping, having type SheetLinkFieldMappingPresModel - ParameterId["SheetLinkFieldMapping"] = "sheetLinkFieldMapping"; - // DPI_UnionInfo, having type UnionInfoPresModel - ParameterId["UnionInfo"] = "unionInfo"; - // DPI_UnionTableInfo, having type UnionTableInfoPresMode - ParameterId["UnionTableInfo"] = "unionTableInfo"; - // DPI_UnionTableInfos, having type UnionTableInfoPresModel[] - ParameterId["UnionTableInfos"] = "unionTableInfos"; - // DPI_ConnectionPBUnionInfo, having type PBUnionInfoPresModel - ParameterId["ConnectionPBUnionInfo"] = "connectionPbunionInfo"; - // DPI_ConnectionPBUnionInfos, having type PBUnionInfoPresModel[] - ParameterId["ConnectionPBUnionInfos"] = "connectionPbunionInfos"; - // DPI_JoinClause, having type JoinClausePresModel - ParameterId["JoinClause"] = "joinClause"; - // DPI_JoinClauses, having type JoinClausePresModel[] - ParameterId["JoinClauses"] = "joinClauses"; - // DPI_JoinValidationResult, having type JoinValidationResultPresModel - ParameterId["JoinValidationResult"] = "joinValidationResult"; - // DPI_JoinTableInfo, having type JoinTableInfoPresModel - ParameterId["JoinTableInfo"] = "joinTableInfo"; - // DPI_ParameterInfo, having type JoinTableInfoPresModel - ParameterId["ParameterInfo"] = "parameterInfo"; - // DPI_JoinTableInfos, having type JoinTableInfoPresModel[] - ParameterId["JoinTableInfos"] = "joinTableInfos"; - // DPI_JoinOnCalcInfo, having type JoinOnCalcInfoPresModel - ParameterId["JoinOnCalcInfo"] = "joinOnCalcInfo"; - // DPI_ConnectionSummary, having type ConnectionSummaryPresModel - ParameterId["ConnectionSummary"] = "connectionSummary"; - // DPI_ConnectionSummaries, having type ConnectionSummaryPresModel[] - ParameterId["ConnectionSummaries"] = "connectionSummaries"; - // DPI_TopLevelConnectionDescription, having type TopLevelConnectionDescriptionPresModel - ParameterId["TopLevelConnectionDescription"] = "topLevelConnectionDescription"; - // DPI_DataConnectionTableViewMessages, having type DataConnectionTableViewMessagesPresModel - ParameterId["DataConnectionTableViewMessages"] = "dataConnectionTableViewMessages"; - // DPI_TextTransformScript, having type TextTransformScriptPresModel - ParameterId["TextTransformScript"] = "textTransformScript"; - // DPI_CalendarDateOptions, having type CalendarDateOptionsPresModel - ParameterId["CalendarDateOptions"] = "calendarDateOptions"; - // DPI_GoToWorksheetTooltipPresModel, having type GoToWorksheetTooltipPresModel - ParameterId["GoToWorksheetTooltipPresModel"] = "goToWorksheetTooltipPresModel"; - // DPI_TableCleaningPresModel, having type TableCleaningPresModel - ParameterId["TableCleaningPresModel"] = "tableCleaningPresModel"; - // DPI_PivotPresModel, having type PivotPresModel - ParameterId["PivotPresModel"] = "pivotPresModel"; - // DPI_PivotTreeItemPresModel, having type PivotTreeItemPresModel - ParameterId["PivotTreeItemPresModel"] = "pivotTreeItemPresModel"; - // DPI_PivotTreeItems, having type PivotTreeItemPresModel[] - ParameterId["PivotTreeItems"] = "pivotTreeItemsPresModel"; - // DPI_PivotDisplay, having type PivotDisplayPresModel - ParameterId["PivotDisplay"] = "pivotDisplay"; - // DPI_PivotTag, having type NameColumnsPairPresModel - ParameterId["PivotTag"] = "pivotTag"; - // DPI_PivotGroups, having type NameColumnsPairPresModel[] - ParameterId["PivotGroups"] = "pivotGroups"; - // DPI_DataSourceDropdown, having type DataSourceDropdownPresModel - ParameterId["DataSourceDropdown"] = "dataSourceDropdown"; - // DPI_ConnectionDropdown, having type ConnectionDropdownPresModel - ParameterId["ConnectionDropdown"] = "connectionDropdown"; - // DPI_ActivityEvent, having type ActivityEventPresModel - ParameterId["ActivityEvent"] = "activityEvent"; - // DPI_UIAutomation, having type UIAutomationPresModel - ParameterId["UIAutomation"] = "uiAutomation"; - // DPI_UIAutomationIndex, having type UIAutomationIndexPresModel - ParameterId["UIAutomationIndex"] = "uiAutomationIndex"; - // DPI_UIAutomationIndexList, having type UIAutomationIndexPresModel[] - ParameterId["UIAutomationIndexList"] = "uiAutomationIndexList"; - // DPI_UIAutomationComponentInfo, having type UIAutomationComponentInfoPresModel - ParameterId["UIAutomationComponentInfo"] = "uiAutomationComponentInfo"; - // DPI_UIAutomationComponentInfoList, having type UIAutomationComponentInfoPresModel[] - ParameterId["UIAutomationComponentInfoList"] = "uiAutomationComponentInfoList"; - // DPI_Geometry, having type GeometryPresModel - ParameterId["Geometry"] = "geometry"; - // DPI_MultiPoint, having type MultiPointPresModel - ParameterId["MultiPoint"] = "multiPoint"; - // DPI_MultiLine, having type MultiLinePresModel - ParameterId["MultiLine"] = "multiLine"; - // DPI_MultiPolygon, having type MultiPolygonPresModel - ParameterId["MultiPolygon"] = "multiPolygon"; - // DPI_Polygon, having type PolygonPresModel - ParameterId["Polygon"] = "polygon"; - // DPI_PolygonList, having type PolygonPresModel[] - ParameterId["PolygonList"] = "polygonList"; - // DPI_Line, having type LinePresModel - ParameterId["Line"] = "line"; - // DPI_LineList, having type LinePresModel[] - ParameterId["LineList"] = "lineList"; - // DPI_TabbedAuthentication, having type TabbedAuthenticationPresModel - ParameterId["TabbedAuthentication"] = "tabbedAuthentication"; - // DPI_TabbedAuthenticationTabInfo, having type TabbedAuthenticationTabInfoPresModel - ParameterId["TabbedAuthenticationTabInfo"] = "tabbedAuthenticationTabInfo"; - // DPI_TabbedAuthenticationTabInfos, having type TabbedAuthenticationTabInfoPresModel[] - ParameterId["TabbedAuthenticationTabInfos"] = "tabbedAuthenticationTabInfos"; - // DPI_GeographicSearchCandidate, having type GeographicSearchCandidatePresModel - ParameterId["GeographicSearchCandidate"] = "geographicSearchCandidate"; - // DPI_GeographicSearchCandidateList, having type GeographicSearchCandidatePresModel[] - ParameterId["GeographicSearchCandidateList"] = "geographicSearchCandidateList"; - // DPI_GeographicSearchResults, having type GeographicSearchPresModel - ParameterId["GeographicSearchResults"] = "geographicSearchResults"; - // DPI_ParamInfo, having type ParameterInfoPresModel - ParameterId["ParamInfo"] = "paramInfo"; - // DPI_ParamInfos, having type ParameterInfoPresModel[] - ParameterId["ParamInfos"] = "paramInfos"; - // DPI_ParamNamespaceInfo, having type ParameterNamespaceInfoInfoPresModel - ParameterId["ParamNamespaceInfo"] = "paramNamespaceInfo"; - // DPI_ParamNamespaceInfos, having type ParameterNamespaceInfoPresModel[] - ParameterId["ParamNamespaceInfos"] = "paramNamespaceInfos"; - // DPI_ParamRegistryInfo, having type ParameterRegistryInfoPresModel - ParameterId["ParamRegistryInfo"] = "paramRegistryInfo"; - // DPI_DataSourceProperties, having type DataSourcePropertiesPresModel - ParameterId["DataSourceProperties"] = "connectionProperties"; - // DPI_ConnectionTypePresModel, having type ConnectionTypePresModel - ParameterId["ConnectionTypePresModel"] = "connectionTypePresModel"; - // DPI_ConnectionTypes, having type ConnectionTypePresModel[] - ParameterId["ConnectionTypes"] = "connectionTypes"; - // DPI_ConnectionTypeGroupPresModel, having type ConnectionTypeGroupPresModel - ParameterId["ConnectionTypeGroupPresModel"] = "connectionTypeGroupPresModel"; - // DPI_SavedDataSourcePresModel, having type SavedDataSourcePresModel - ParameterId["SavedDataSourcePresModel"] = "savedDatasourcePresModel"; - // DPI_SavedDataSources, having type SavedDataSourcePresModel[] - ParameterId["SavedDataSources"] = "savedDatasources"; - // DPI_SavedDataSourcesPresModel, having type SavedDataSourcesPresModel - ParameterId["SavedDataSourcesPresModel"] = "savedDatasourcesPresModel"; - // DPI_OpenPaneItemPresModel, having type OpenPaneItemPresModel - ParameterId["OpenPaneItemPresModel"] = "openPaneItemPresModel"; - // DPI_OpenPaneItems, having type OpenPaneItemPresModel[] - ParameterId["OpenPaneItems"] = "openPaneItems"; - // DPI_OpenPaneItemsPresModel, having type OpenPaneItemsPresModel - ParameterId["OpenPaneItemsPresModel"] = "openPaneItemsPresModel"; - // DPI_VariableValue, having type VariableValuePresModel - ParameterId["VariableValue"] = "variableValue"; - // DPI_VariableValues, having type VariableValuePresModel[] - ParameterId["VariableValues"] = "variableValues"; - // DPI_ServerVariableValue, having type ServerVariableValuePresModel - ParameterId["ServerVariableValue"] = "serverVariableValue"; - // DPI_EditableVariableValue, having type EditableVariableValuePresModel - ParameterId["EditableVariableValue"] = "editableVariableValue"; - // DPI_ServerVariableMetadata, having type ServerVariableMetadataPresModel - ParameterId["ServerVariableMetadata"] = "serverVariableMetadata"; - // DPI_PromptVariable, having type PromptVariablePresModel - ParameterId["PromptVariable"] = "promptVariable"; - // DPI_PromptVariables, having type PromptVariablePresModel[] - ParameterId["PromptVariables"] = "promptVariables"; - // DPI_VariablePromptDialog, having type VariablePromptDialogPresModel - ParameterId["VariablePromptDialog"] = "variablePromptDialog"; - // DPI_VariableValueOperation, having type VariableValueOperationPresModel - ParameterId["VariableValueOperation"] = "variableValueOperation"; - // DPI_VariableValueOperations, having type VariableValueOperationPresModel[] - ParameterId["VariableValueOperations"] = "variableValueOperations"; - // DPI_TableOptionsPresModel, having type TableOptionsPresModel - ParameterId["TableOptionsPresModel"] = "tableOptionsPresModel"; - // DPI_ClientInfoPresModel, having type ClientInfoPresModel - ParameterId["ClientInfoPresModel"] = "clientInfoPresModel"; - // DPI_TableauFileInfoPresModel, having type TableauFileInfoPresModel - ParameterId["TableauFileInfoPresModel"] = "tableauFileInfoPresModel"; - // DPI_DebuggingInfoPresModel, having type DebuggingInfoPresModel - ParameterId["DebuggingInfoPresModel"] = "debuggingInfoPresModel"; - // DPI_RunningThreadInfoPresModel, having type RunningThreadInfoPresModel - ParameterId["RunningThreadInfoPresModel"] = "runningThreadInfoPresModel"; - // DPI_AboutDialogInfoPresModel, having type AboutDialogInfoPresModel - ParameterId["AboutDialogInfoPresModel"] = "aboutDialogInfoPresModel"; - // DPI_HybridUIShowcasePresModel, having type HybridUIShowcasePresModel - ParameterId["HybridUIShowcasePresModel"] = "hybridUiShowcasePresModel"; - // DPI_MenuConfiguration, having type MenuConfigurationPresModel - ParameterId["MenuConfiguration"] = "menuConfiguration"; - // DPI_MenuItem, having type MenuItemPresModel - ParameterId["MenuItem"] = "menuItem"; - // DPI_MenuItemModels, having type MenuItemPresModel[] - ParameterId["MenuItemModels"] = "menuItemModels"; - // DPI_DefaultTextFormat, having type DefaultTextFormatPresModel - ParameterId["DefaultTextFormat"] = "defaultTextFormat"; - // DPI_MapBoxServerInfoPresModel, having type MapBoxServerInfoPresModel - ParameterId["MapBoxServerInfoPresModel"] = "mapboxServerInfoPresModel"; - // DPI_WMSServerInfoPresModel, having type WMSServerInfoPresModel - ParameterId["WMSServerInfoPresModel"] = "wmsServerInfoPresModel"; - // DPI_MapSourceConflictPresModel, having type MapSourceConflictPresModel - ParameterId["MapSourceConflictPresModel"] = "mapSourceConflictPresModel"; - // DPI_EnumeratedSetDialogPresModel, having type EnumeratedSetDialogPresModel - ParameterId["EnumeratedSetDialogPresModel"] = "enumeratedSetDialogPresModel"; - // DPI_EditAliasesDialog, having type EditAliasesDialogPresModel - ParameterId["EditAliasesDialog"] = "editAliasesDialogPresModel"; - // DPI_AliasesPresModel, having type AliasesPresModel - ParameterId["AliasesPresModel"] = "aliasesPresModel"; - // DPI_ClearAliasesPresModel, having type AliasesPresModel - ParameterId["ClearAliasesPresModel"] = "clearAliasesPresModel"; - // DPI_NewAliasesPresModel, having type NewAliasesPresModel - ParameterId["NewAliasesPresModel"] = "newAliasesPresModel"; - // DPI_AliasPresModel, having type AliasPresModel - ParameterId["AliasPresModel"] = "aliasPresModel"; - // DPI_AliasItem, having type AliasItemPresModel - ParameterId["AliasItem"] = "aliasItem"; - // DPI_DuplicateAliasItem, having type AliasItemPresModel - ParameterId["DuplicateAliasItem"] = "duplicateAliasItem"; - // DPI_AliasList, having type AliasItemPresModel[] - ParameterId["AliasList"] = "aliasList"; - // DPI_AliasResultItem, having type AliasResultItemPresModel - ParameterId["AliasResultItem"] = "aliasResultItem"; - // DPI_AliasResultList, having type AliasResultItemPresModel[] - ParameterId["AliasResultList"] = "aliasResultList"; - // DPI_AliasResults, having type AliasResultsPresModel - ParameterId["AliasResults"] = "aliasResults"; - // DPI_EditSetDialogPresModel, having type EditSetDialogPresModel - ParameterId["EditSetDialogPresModel"] = "editSetDialogPresModel"; - // DPI_ConfirmationPresModel, having type ConfirmationPresModel - ParameterId["ConfirmationPresModel"] = "confirmationPresModel"; - // DPI_NotificationPresModel, having type NotificationPresModel - ParameterId["NotificationPresModel"] = "notificationPresModel"; - // DPI_RetargetDataSourceDialogPresModel, having type RetargetDataSourceDialogPresModel - ParameterId["RetargetDataSourceDialogPresModel"] = "retargetDatasourceDialogPresModel"; - // DPI_SharedFilterPresModel, having type SharedFilterPresModel - ParameterId["SharedFilterPresModel"] = "sharedFilterPresModel"; - // DPI_SharedFilterWorksheetInfo, having type SharedFilterWorksheetInfoPresModel - ParameterId["SharedFilterWorksheetInfo"] = "sharedFilterWorksheetInfo"; - // DPI_SharedFilterWorksheetInfoList, having type SharedFilterWorksheetInfoPresModel[] - ParameterId["SharedFilterWorksheetInfoList"] = "sharedFilterWorksheetInfoList"; - // DPI_FieldPickerTreePresModel, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModel"] = "fieldPickerTreePresModel"; - // DPI_FieldPickerTreePresModelSource, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelSource"] = "fieldPickerTreePresModelSource"; - // DPI_FieldPickerTreePresModelTarget, having type FieldPickerTreePresModel - ParameterId["FieldPickerTreePresModelTarget"] = "fieldPickerTreePresModelTarget"; - // DPI_ErrorInfo, having type ErrorInfoPresModel - ParameterId["ErrorInfo"] = "errorInfoPresModel"; - // DPI_CustomSplitPresModel, having type CustomSplitPresModel - ParameterId["CustomSplitPresModel"] = "customSplitPresModel"; - // DPI_PageSetup, having type PageSetupPresModel - ParameterId["PageSetup"] = "pageSetup"; - // DPI_ServerConnectStatus, having type ServerConnectionStatus - ParameterId["ServerConnectStatus"] = "serverConnectionStatus"; - // DPI_GetFilterItemsResponse, having type GetFilterItemsResponsePresModel - ParameterId["GetFilterItemsResponse"] = "getFilterItemsResponse"; - // DPI_FilterSearchResponse, having type FilterSearchResponsePresModel - ParameterId["FilterSearchResponse"] = "filterSearchResponse"; - // DPI_FilterSearchWithIndexResponse, having type FilterSearchWithIndexResponsePresModel - ParameterId["FilterSearchWithIndexResponse"] = "filterSearchWithIndexResponse"; - // DPI_FilterShowChildrenResponse, having type FilterShowChildrenResponsePresModel - ParameterId["FilterShowChildrenResponse"] = "filterShowChildrenResponse"; - // DPI_EditDataServerConnection, having type EditDataServerConnectionPresModel - ParameterId["EditDataServerConnection"] = "editDataServerConnection"; - // DPI_ImagesEdit, having type ImagesEditPresModel - ParameterId["ImagesEdit"] = "imagesEdit"; - // DPI_BackgroundImage, having type BackgroundImagePresModel - ParameterId["BackgroundImage"] = "backgroundImage"; - // DPI_BackgroundImages, having type BackgroundImagePresModel[] - ParameterId["BackgroundImages"] = "backgroundImages"; - // DPI_Predicate, having type PredicatePresModel - ParameterId["Predicate"] = "predicate"; - // DPI_Predicates, having type PredicatePresModel[] - ParameterId["Predicates"] = "predicates"; - // DPI_ImagesEditResult, having type ImagesEditResultPresModel - ParameterId["ImagesEditResult"] = "imagesEditResult"; - // DPI_SortDialogPresModel, having type SortDialogPresModel - ParameterId["SortDialogPresModel"] = "sortDialogPresModel"; - // DPI_CompoundTableCalc, having type CompoundTableCalculationPresModel - ParameterId["CompoundTableCalc"] = "compoundTableCalculationPresModel"; - // DPI_TableCalc, having type TableCalculationPresModel - ParameterId["TableCalc"] = "tableCalculationPresModel"; - // DPI_TableCalcs, having type TableCalculationPresModel[] - ParameterId["TableCalcs"] = "tableCalculationPresModels"; - // DPI_TableCalcIdentifier, having type TableCalcIdentifierPresModel - ParameterId["TableCalcIdentifier"] = "tableCalcIdentifier"; - // DPI_NestedTableCalcInfo, having type NestedTableCalcInfoPresModel - ParameterId["NestedTableCalcInfo"] = "nestedTableCalcInfo"; - // DPI_NestedTableCalcInfos, having type NestedTableCalcInfoPresModel[] - ParameterId["NestedTableCalcInfos"] = "nestedTableCalcInfos"; - // DPI_Ordering, having type TableCalcOrderingPresModel - ParameterId["Ordering"] = "tableCalcOrderingPresModel"; - // DPI_Cumulative, having type CumulativeTableCalcPresModel - ParameterId["Cumulative"] = "cumulativeTableCalcPresModel"; - // DPI_ReferenceOptions, having type TableCalcReferenceOptionsPresModel - ParameterId["ReferenceOptions"] = "tableCalcReferenceOptionsPresModel"; - // DPI_Difference, having type DifferenceTableCalcPresModel - ParameterId["Difference"] = "differenceTableCalcPresModel"; - // DPI_Window, having type WindowTableCalcPresModel - ParameterId["Window"] = "windowTableCalcPresModel"; - // DPI_PercentTotal, having type PercentTotalTableCalcPresModel - ParameterId["PercentTotal"] = "percentTotalTableCalcPresModel"; - // DPI_Rank, having type RankTableCalcPresModel - ParameterId["Rank"] = "rankTableCalcPresModel"; - // DPI_Custom, having type CustomTableCalcPresModel - ParameterId["Custom"] = "customTableCalcPresModel"; - // DPI_WebDataUrl, having type WebDataUrlPresModel - ParameterId["WebDataUrl"] = "webDataUrl"; - // DPI_VisitedWebDataConnectors, having type WebDataUrlPresModel[] - ParameterId["VisitedWebDataConnectors"] = "visitedWebDataConnectors"; - // DPI_WebDataSessionUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataSessionUrls"] = "webDataSessionUrls"; - // DPI_WebDataUrls, having type WebDataUrlPresModel[] - ParameterId["WebDataUrls"] = "webDataUrls"; - // DPI_FieldPicker, having type FieldPickerPresModel - ParameterId["FieldPicker"] = "fieldPicker"; - // DPI_DescribeField, having type DescribeFieldPresModel - ParameterId["DescribeField"] = "describeField"; - // DPI_ShowDataPresModel, having type ShowDataPresModel - ParameterId["ShowDataPresModel"] = "showDataPresModel"; - // DPI_DataTablePresModel, having type ShowDataTablePresModel - ParameterId["DataTablePresModel"] = "dataTablePresModel"; - // DPI_DataTablePresModels, having type ShowDataTablePresModel[] - ParameterId["DataTablePresModels"] = "dataTablePresModels"; - // DPI_SummaryTablePresModels, having type ShowDataTablePresModel[] - ParameterId["SummaryTablePresModels"] = "summaryTablePresModels"; - // DPI_RefreshAllExtractsPresModel, having type RefreshAllExtractsPresModel - ParameterId["RefreshAllExtractsPresModel"] = "refeshAllExtractsPresModel"; - // DPI_RefreshExtractDataSourcePresModel, having type RefreshExtractDataSourcePresModel - ParameterId["RefreshExtractDataSourcePresModel"] = "refreshExtractDatasourcePresModel"; - // DPI_RefreshExtractDataSourceList, having type RefreshExtractDataSourcePresModel[] - ParameterId["RefreshExtractDataSourceList"] = "refreshExtractDatasourceList"; - // DPI_ExtractHistoryPresModel, having type ExtractHistoryPresModel - ParameterId["ExtractHistoryPresModel"] = "extractHistoryPresModel"; - // DPI_ExtractHistoryItemPresModel, having type ExtractHistoryItemPresModel - ParameterId["ExtractHistoryItemPresModel"] = "extractHistoryItem"; - // DPI_ExtractHistoryList, having type ExtractHistoryItemPresModel[] - ParameterId["ExtractHistoryList"] = "extractHistoryList"; - // DPI_DataProviderPresModel, having type DataProviderPresModel - ParameterId["DataProviderPresModel"] = "dataProviderPresModel"; - // DPI_FormatItem, having type FormatItemPresModel - ParameterId["FormatItem"] = "formatItem"; - // DPI_FormatItemList, having type FormatItemPresModel[] - ParameterId["FormatItemList"] = "formatItemList"; - // DPI_FormatContainer, having type FormatContainerPresModel - ParameterId["FormatContainer"] = "formatContainer"; - // DPI_FormatPane, having type FormatPanePresModel - ParameterId["FormatPane"] = "formatPane"; - // DPI_FormatSection, having type FormatSectionPresModel - ParameterId["FormatSection"] = "formatSection"; - // DPI_CollapsibleSection, having type CollapsibleSectionPresModel - ParameterId["CollapsibleSection"] = "collapsibleSection"; - // DPI_CompositeContainer, having type CompositeContainerPresModel - ParameterId["CompositeContainer"] = "compositeContainer"; - // DPI_UnitContainer, having type UnitContainerPresModel - ParameterId["UnitContainer"] = "unitContainer"; - // DPI_TabGroup, having type TabGroupPresModel - ParameterId["TabGroup"] = "tabGroup"; - // DPI_Tab, having type TabPresModel - ParameterId["Tab"] = "tab"; - // DPI_FormatControl, having type FormatControlPresModel - ParameterId["FormatControl"] = "formatControl"; - // DPI_TextControl, having type TextControlPresModel - ParameterId["TextControl"] = "textControl"; - // DPI_NumericControl, having type NumericControlPresModel - ParameterId["NumericControl"] = "numericControl"; - // DPI_ColorControl, having type ColorControlPresModel - ParameterId["ColorControl"] = "colorControl"; - // DPI_ToggleControl, having type ToggleControlPresModel - ParameterId["ToggleControl"] = "toggleControl"; - // DPI_SelectorControl, having type SelectorControlPresModel - ParameterId["SelectorControl"] = "enumStringStyle"; - // DPI_StatsAnalyticSpec, having type StatsAnalyticSpecPresModel - ParameterId["StatsAnalyticSpec"] = "statsAnalyticSpec"; - // DPI_ClusterSpec, having type ClusterSpecPresModel - ParameterId["ClusterSpec"] = "clusteringSpec"; - // DPI_ClusterResults, having type ClusterResultsPresModel - ParameterId["ClusterResults"] = "clusterResults"; - // DPI_ClusterUnit, having type ClusterUnitPresModel - ParameterId["ClusterUnit"] = "cluster"; - // DPI_ClusterUnits, having type ClusterUnitPresModel[] - ParameterId["ClusterUnits"] = "clusterUnitPresModels"; - // DPI_ClusterFieldANOVA, having type ClusterFieldANOVAPresModel - ParameterId["ClusterFieldANOVA"] = "clusterFieldAnova"; - // DPI_ClusterFieldANOVATable, having type ClusterFieldANOVAPresModel[] - ParameterId["ClusterFieldANOVATable"] = "clusterFieldAnovaTablePresModel"; - // DPI_ClusterEdit, having type ClusterEditPresModel - ParameterId["ClusterEdit"] = "clusterEditPresModel"; - // DPI_ClusterDescription, having type ClusterDescribePresModel - ParameterId["ClusterDescription"] = "clusterDescription"; - // DPI_OutlierResults, having type OutlierResultsPresModel - ParameterId["OutlierResults"] = "outlierResults"; - // DPI_ConnectToDataServerSourceResult, having type ConnectToDataServerSourceResultPresModel - ParameterId["ConnectToDataServerSourceResult"] = "connectToDataServerSourceResult"; - // DPI_DataServerConnectionReturnStatus, having type ConnectToDataServerSourceResultPresModel - ParameterId["DataServerConnectionReturnStatus"] = "dataServerConnectionReturnStatus"; - // DPI_WebQuantitativeColorDialog, having type WebQuantitativeColorDialogPresModel - ParameterId["WebQuantitativeColorDialog"] = "quantitativeColorDialog"; - // DPI_WebCategoricalColorDialog, having type WebCategoricalColorDialogPresModel - ParameterId["WebCategoricalColorDialog"] = "categoricalColorDialog"; - // DPI_WebSaveDatasourceDialog, having type WebSaveDatasourceDialogPresModel - ParameterId["WebSaveDatasourceDialog"] = "saveDatasourceDialog"; - // DPI_BorderStyleSpec, having type StyleSpecPresModel - ParameterId["BorderStyleSpec"] = "borderStyleSpec"; - // DPI_HaloStyleSpec, having type StyleSpecPresModel - ParameterId["HaloStyleSpec"] = "haloStyleSpec"; - // DPI_MarksColorUberEffects, having type MarksColorUberEffectsPresModel - ParameterId["MarksColorUberEffects"] = "marksColorUberEffects"; - // DPI_CategoricalColorEncoding, having type CategoricalColorEncodingPresModel - ParameterId["CategoricalColorEncoding"] = "categoricalColorEncoding"; - // DPI_CategoricalShapeEncoding, having type CategoricalShapeEncodingPresModel - ParameterId["CategoricalShapeEncoding"] = "categoricalShapeEncoding"; - // DPI_ShapePalettePresModel, having type ShapePalettePresModel - ParameterId["ShapePalettePresModel"] = "shapePalettePresModel"; - // DPI_ShapePalettePresModels, having type ShapePalettePresModel[] - ParameterId["ShapePalettePresModels"] = "shapePalettePresModels"; - // DPI_DataSourceDateProperties, having type DataSourceDatePropertiesPresModel - ParameterId["DataSourceDateProperties"] = "datasourceDateProperties"; - // DPI_DatePropertiesDateFormat, having type DatePropertiesDateFormatPresModel - ParameterId["DatePropertiesDateFormat"] = "datePropertiesDateFormat"; - // DPI_DatePropertiesDateFormats, having type DatePropertiesDateFormatPresModel[] - ParameterId["DatePropertiesDateFormats"] = "datePropertiesDateFormats"; - // DPI_HierarchySelect, having type HierarchySelectModel - ParameterId["HierarchySelect"] = "hierarchySelect"; - // DPI_HierarchySelectMember, having type HierarchySelectMemberPresModel - ParameterId["HierarchySelectMember"] = "hierarchySelectMember"; - // DPI_HierarchySelectMemberList, having type HierarchySelectMemberPresModel[] - ParameterId["HierarchySelectMemberList"] = "hierarchySelectMemberList"; - // DPI_HierarchySetDefaultMember, having type HierarchySetDefaultMemberPresModel - ParameterId["HierarchySetDefaultMember"] = "hierarchySetDefaultMember"; - // DPI_SemiStructSchema, having type SemiStructSchemaPresModel - ParameterId["SemiStructSchema"] = "semiStructSchema"; - // DPI_SemiStructSchemaMember, having type SemiStructSchemaMemberPresModel - ParameterId["SemiStructSchemaMember"] = "semiStructSchemaMember"; - // DPI_SemiStructSchemaMemberList, having type SemiStructSchemaMemberPresModel[] - ParameterId["SemiStructSchemaMemberList"] = "semiStructSchemaMemberList"; - // DPI_ParameterEditInfo, having type ParameterEditInfoPresModel - ParameterId["ParameterEditInfo"] = "parameterEditInfo"; - // DPI_ProductParameterInfo, having type ProductParameterInfoPresModel - ParameterId["ProductParameterInfo"] = "productParameterInfo"; - // DPI_CaptionedDatasourceField, having type CaptionedDatasourceInfoPresModel - ParameterId["CaptionedDatasourceField"] = "captionedDatasourceField"; - // DPI_CaptionedDatasourceFields, having type CaptionedDatasourceInfoPresModel[] - ParameterId["CaptionedDatasourceFields"] = "captionedDatasourceFields"; - // DPI_EditedParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["EditedParameterRangeDomain"] = "editedParameterRangeDomain"; - // DPI_ParameterRangeDomain, having type ParameterRangeDomainPresModel - ParameterId["ParameterRangeDomain"] = "parameterRangeDomain"; - // DPI_ParameterListDomain, having type ParameterListDomainPresModel - ParameterId["ParameterListDomain"] = "parameterListDomain"; - // DPI_ParameterListDomainMember, having type ParameterListDomainMemberPresModel - ParameterId["ParameterListDomainMember"] = "parameterListDomainMember"; - // DPI_ParameterListDomainMembers, having type ParameterListDomainMemberPresModel[] - ParameterId["ParameterListDomainMembers"] = "parameterListDomainMembers"; - // DPI_IndexedDomainMember, having type IndexedDomainMemberPresModel - ParameterId["IndexedDomainMember"] = "indexedDomainMember"; - // DPI_IndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["IndexedDomainMembers"] = "indexedDomainMembers"; - // DPI_NewIndexedDomainMembers, having type IndexedDomainMemberPresModel[] - ParameterId["NewIndexedDomainMembers"] = "newIndexedDomainMembers"; - // DPI_ParameterListDomainDiff, having type parameter-list-domain-diff - ParameterId["ParameterListDomainDiff"] = "parameterListDomainDiff"; - // DPI_IndexRange, having type IndexRangePresModel - ParameterId["IndexRange"] = "indexRange"; - // DPI_IndexRanges, having type IndexRangePresModel[] - ParameterId["IndexRanges"] = "indexRanges"; - // DPI_CategoricalFind, having type CategoricalFindPresModel - ParameterId["CategoricalFind"] = "categoricalFind"; - // DPI_CaptionedDataValue, having type CaptionedDataValuePresModel - ParameterId["CaptionedDataValue"] = "captionedDataValue"; - // DPI_SelectedValueCaption, having type CaptionedDataValuePresModel - ParameterId["SelectedValueCaption"] = "selectedValueCaption"; - // DPI_DataValueCaptionList, having type CaptionedDataValuePresModel[] - ParameterId["DataValueCaptionList"] = "dataValueCatpionList"; - // DPI_RangeDataValue, having type RangeDataValuePresModel - ParameterId["RangeDataValue"] = "rangeDataValue"; - // DPI_ParameterRangeDataValue, having type RangeDataValuePresModel - ParameterId["ParameterRangeDataValue"] = "parameterRangeDataValue"; - // DPI_DataValueRangeCaptions, having type DataValueRangeCaptionsPresModel - ParameterId["DataValueRangeCaptions"] = "dataValueRangeCaptions"; - // DPI_IndependentDimension, having type IndependentDimensionPresModel - ParameterId["IndependentDimension"] = "independentDimension"; - // DPI_IndependentDimensions, having type IndependentDimensionPresModel[] - ParameterId["IndependentDimensions"] = "independentDimensions"; - // DPI_AttributePerspective, having type PerspectivePresModel - ParameterId["AttributePerspective"] = "attributePerspective"; - // DPI_CubePerspective, having type PerspectivePresModel - ParameterId["CubePerspective"] = "cubePerspective"; - // DPI_AttributePerspectives, having type PerspectivePresModel[] - ParameterId["AttributePerspectives"] = "attributePerspectives"; - // DPI_CalculatedMembersForEditingPresModel, having type EditCalculatedMembersPresModel - ParameterId["CalculatedMembersForEditingPresModel"] = "calculatedMembersForEditingPresmodel"; - // DPI_CalculatedMember, having type CalculatedMemberPresModel - ParameterId["CalculatedMember"] = "calculatedMember"; - // DPI_NewCalculatedMember, having type CalculatedMemberPresModel - ParameterId["NewCalculatedMember"] = "newCalculatedMember"; - // DPI_UpdatedCalculatedMember, having type CalculatedMemberPresModel - ParameterId["UpdatedCalculatedMember"] = "updatedCalculatedMember"; - // DPI_CalculatedMembersList, having type CalculatedMemberPresModel[] - ParameterId["CalculatedMembersList"] = "calculatedMembersList"; - // DPI_CalculatedMemberHierarchyItem, having type CalculatedMemberHierarchyItemPresModel - ParameterId["CalculatedMemberHierarchyItem"] = "calculatedMemberHierarchyItem"; - // DPI_CalculatedMemberHierarchyList, having type CalculatedMemberHierarchyItemPresModel[] - ParameterId["CalculatedMemberHierarchyList"] = "calculatedMemberHierarchyList"; - // DPI_SummaryCardPresModel, having type SummaryCardPresModel - ParameterId["SummaryCardPresModel"] = "summaryCard"; - // DPI_MeasureSummary, having type MeasureSummaryPresModel - ParameterId["MeasureSummary"] = "measureSummary"; - // DPI_MeasureSummaryList, having type MeasureSummaryPresModel[] - ParameterId["MeasureSummaryList"] = "measureSummaryList"; - // DPI_AnnotationPresModel, having type AnnotationPresModel - ParameterId["AnnotationPresModel"] = "annotation"; - // DPI_AnnotationList, having type AnnotationPresModel[] - ParameterId["AnnotationList"] = "annotationList"; - // DPI_AnnotationShapeStyle, having type AnnotationShapeStylePresModel - ParameterId["AnnotationShapeStyle"] = "annotationShapeStyle"; - // DPI_Telemetry, having type TelemetryPresModel - ParameterId["Telemetry"] = "telemetry"; - // DPI_DataSourceTelemetry, having type DataSourceTelemetryPresModel - ParameterId["DataSourceTelemetry"] = "dataSourceTelemetry"; - // DPI_DataSourceTelemetryList, having type DataSourceTelemetryPresModel[] - ParameterId["DataSourceTelemetryList"] = "dataSourceTelemetryList"; - // DPI_VisualSpecificationTelemetry, having type VisualSpecificationTelemetryPresModel - ParameterId["VisualSpecificationTelemetry"] = "visualSpecificationTelemetry"; - // DPI_VisualSpecificationTelemetryList, having type VisualSpecificationTelemetryPresModel[] - ParameterId["VisualSpecificationTelemetryList"] = "visualSpecificationTelemetryList"; - // DPI_UnderlyingDataTable, having type UnderlyingDataTablePresModel - ParameterId["UnderlyingDataTable"] = "underlyingDataTable"; - // DPI_UnderlyingDataTables, having type UnderlyingDataTablePresModel[] - ParameterId["UnderlyingDataTables"] = "underlyingDataTables"; - // DPI_UnderlyingDataTableColumn, having type UnderlyingDataTableColumnPresModel - ParameterId["UnderlyingDataTableColumn"] = "underlyingDataTableColumn"; - // DPI_UnderlyingDataTableColumns, having type UnderlyingDataTableColumnPresModel[] - ParameterId["UnderlyingDataTableColumns"] = "underlyingDataTableColumns"; - // DPI_PageCacheID, having type PageCacheIDPresModel - ParameterId["PageCacheID"] = "pageCacheId"; - // DPI_RelationalPageCacheID, having type PageCacheIDPresModel - ParameterId["RelationalPageCacheID"] = "relationalPageCacheId"; - // DPI_SearchResultsCacheID, having type PageCacheIDPresModel - ParameterId["SearchResultsCacheID"] = "searchResultsCacheId"; - // DPI_PageInfo, having type PageInfoPresModel - ParameterId["PageInfo"] = "pageInfo"; - // DPI_RowColPair, having type RowColPairPresModel - ParameterId["RowColPair"] = "rowColPair"; - // DPI_TopLeftRowCol, having type RowColPairPresModel - ParameterId["TopLeftRowCol"] = "topLeftRowCol"; - // DPI_BotRightRowCol, having type RowColPairPresModel - ParameterId["BotRightRowCol"] = "botRightRowCol"; - // DPI_RowColPairs, having type RowColPairPresModel[] - ParameterId["RowColPairs"] = "rowColPairs"; - // DPI_TableViewCacheInfo, having type TableViewCachePresModel - ParameterId["TableViewCacheInfo"] = "tableViewCacheInfo"; - // DPI_TableViewInfo, having type tableViewInfoPresModel - ParameterId["TableViewInfo"] = "tableViewInfo"; - // DPI_TableViewColumnInfo, having type TableViewColumnInfoPresModel - ParameterId["TableViewColumnInfo"] = "tableViewColumnInfo"; - // DPI_TableViewColumns, having type TableViewColumnInfoPresModel[] - ParameterId["TableViewColumns"] = "tableViewColumns"; - // DPI_TableViewPageItem, having type TableViewPageItemPresModel - ParameterId["TableViewPageItem"] = "tableViewPageItem"; - // DPI_TableViewPageColumns, having type TableViewPageItemPresModel[] - ParameterId["TableViewPageColumns"] = "tableViewPageColumns"; - // DPI_TableViewPageRow, having type TableViewPageRowPresModel - ParameterId["TableViewPageRow"] = "tableViewPageRow"; - // DPI_TableViewPageRows, having type TableViewPageRowPresModel[] - ParameterId["TableViewPageRows"] = "tableViewPageRows"; - // DPI_TableViewPage, having type TableViewPagePresModel - ParameterId["TableViewPage"] = "tableViewPage"; - // DPI_CategoricalValuePicker, having type CategoricalValuePickerPresModel - ParameterId["CategoricalValuePicker"] = "categoricalValuePicker"; - // DPI_AnnotationShapeBorderStyle, having type LineStylePresModel - ParameterId["AnnotationShapeBorderStyle"] = "annotationShapeBorderStyle"; - // DPI_AnotationShapeStrokeStyle, having type LineStylePresModel - ParameterId["AnotationShapeStrokeStyle"] = "annotationShapeStrokeStyle"; - // DPI_CategoricalBinEditorPresModel, having type CategoricalBinEditorPresModel - ParameterId["CategoricalBinEditorPresModel"] = "categoricalBinEditor"; - // DPI_CategoricalBinItem, having type CategoricalBinItemPresModel - ParameterId["CategoricalBinItem"] = "categoricalBinItemPresModel"; - // DPI_CategoricalBinItems, having type CategoricalBinItemPresModel[] - ParameterId["CategoricalBinItems"] = "categoricalBinItemPresModels"; - // DPI_MeasurePickerFieldInfo, having type MeasurePickerFieldInfoPresModel - ParameterId["MeasurePickerFieldInfo"] = "measurePickerFieldInfo"; - // DPI_MeasurePickerFields, having type MeasurePickerFieldInfoPresModel[] - ParameterId["MeasurePickerFields"] = "measurePickerFields"; - // DPI_MeasureAggregationInfo, having type MeasureAggregationInfoPresModel - ParameterId["MeasureAggregationInfo"] = "measureAggregationInfo"; - // DPI_MeasureAggregations, having type MeasureAggregationInfoPresModel[] - ParameterId["MeasureAggregations"] = "measureAggregations"; - // DPI_TuplePair, having type TuplePairPresModel - ParameterId["TuplePair"] = "tuplePair"; - // DPI_DimensionBound, having type DimensionBoundPresModel - ParameterId["DimensionBound"] = "dimensionBound"; - // DPI_PerspectiveBounds, having type DimensionBoundPresModel[] - ParameterId["PerspectiveBounds"] = "perspectiveBounds"; - // DPI_FilterPerspectiveInfoPresModel, having type FilterPerspectiveInfoPresModel - ParameterId["FilterPerspectiveInfoPresModel"] = "filterPerspectiveInfo"; - // DPI_TableRelevance, having type TableRelevancePresModel - ParameterId["TableRelevance"] = "tableRelevance"; - // DPI_AddInRegistrationPresModel, having type AddInRegistrationPresModel - ParameterId["AddInRegistrationPresModel"] = "addInRegistrationPresModel"; - // DPI_AddInRegistrationPresModelList, having type AddInRegistrationPresModel[] - ParameterId["AddInRegistrationPresModelList"] = "addInRegistrationPresModelList"; - // DPI_AddInDashboardAuthoringWidget, having type AddInDashboardWidgetPresModel - ParameterId["AddInDashboardAuthoringWidget"] = "addInDashboardAuthoringWidgetPresModel"; - // DPI_AddInInstance, having type AddInInstancePresModel - ParameterId["AddInInstance"] = "addInInstancePresModel"; - // DPI_AddInLocator, having type AddInLocatorPresModel - ParameterId["AddInLocator"] = "addInLocatorPresModel"; - // DPI_AddInContext, having type AddInContext - ParameterId["AddInContext"] = "addInContext"; - // DPI_AddInMode, having type AddInMode - ParameterId["AddInMode"] = "addInMode"; - // DPI_SetAxisRangeResult, having type SetAxisRangeResult - ParameterId["SetAxisRangeResult"] = "setAxisRangeResult"; - // DPI_SetTickOriginResult, having type SetTickOriginResult - ParameterId["SetTickOriginResult"] = "setTickOriginResult"; - // DPI_SetTickSpacingResult, having type SetTickSpacingResult - ParameterId["SetTickSpacingResult"] = "setTickSpacingResult"; - // DPI_AxisExtentStartType, having type AxisExtentType - ParameterId["AxisExtentStartType"] = "axisExtentStartType"; - // DPI_AxisExtentEndType, having type AxisExtentType - ParameterId["AxisExtentEndType"] = "axisExtentEndType"; - // DPI_AxisExtentsType, having type AxisExtentType - ParameterId["AxisExtentsType"] = "axisExtentsType"; - // DPI_AddInEnvironment, having type AddInEnvironmentPresModel - ParameterId["AddInEnvironment"] = "addInEnvironmentPresModel"; - // DPI_AddInDashboardInfo, having type AddInDashboardInfoPresModel - ParameterId["AddInDashboardInfo"] = "addInDashboardInfoPresModel"; - // DPI_AddInSettingsInfo, having type AddInSettingsInfoPresModel - ParameterId["AddInSettingsInfo"] = "addInSettingsInfo"; - // DPI_AddInBootstrapInfo, having type AddInBootstrapInfoPresModel - ParameterId["AddInBootstrapInfo"] = "addInBootstrapInfo"; - // DPI_AddInDebugSettings, having type AddInDebugSettingsPresModel - ParameterId["AddInDebugSettings"] = "addInDebugSettings"; - // DPI_RichText, having type RichTextPresModel - ParameterId["RichText"] = "richText"; - // DPI_RichTextKeywordSubList, having type RichTextKeywordSubListPresModel - ParameterId["RichTextKeywordSubList"] = "richTextKeywordsSublist"; - // DPI_RichTextKeywordSubLists, having type RichTextKeywordSubListPresModel[] - ParameterId["RichTextKeywordSubLists"] = "richTextKeywordSublists"; - // DPI_RichTextKeywordList, having type RichTextKeywordListPresModel - ParameterId["RichTextKeywordList"] = "richTextKeywordsList"; - // DPI_RichTextBlockStyle, having type RichTextBlockStylePresModel - ParameterId["RichTextBlockStyle"] = "richTextBlockStyle"; - // DPI_RichTextContentStyle, having type RichTextContentStylePresModel - ParameterId["RichTextContentStyle"] = "richTextContentStyle"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - //# sourceMappingURL=Params.js.map - -/***/ }, -/* 11 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var CommandIds_1 = __webpack_require__(12); - var Params_1 = __webpack_require__(10); - var CommandMappingRegistry_1 = __webpack_require__(13); - var CommandRegistration_1 = __webpack_require__(14); - var CommandMappingRegistryFactory = (function () { - function CommandMappingRegistryFactory() { - } - /** - * Creates and populates a new CommandMappingRegistry for the specific version number requested - * - * @static - * @param {VersionNumber} versionNumber - * @returns {CommandMappingRegistry} - * @memberof CommandMappingRegistryFactory - */ - CommandMappingRegistryFactory.createCommandMappingRegistry = function (versionNumber) { - var result = new CommandMappingRegistry_1.CommandMappingRegistry(); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.InitializeAddIn, CommandIds_1.DocCommands.InitializeAddInInstance, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInBootstrapInfo, Params_1.ParameterId.AddInBootstrapInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetUnderlyingData, CommandIds_1.DocCommands.GetUnderlyingData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IncludeAllColumns, Params_1.ParameterId.IncludeAllColumns), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSummaryData, CommandIds_1.DocCommands.GetSummaryData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreSelection, Params_1.ParameterId.IgnoreSelection), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.UnderlyingSummaryDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSourceData, CommandIds_1.DocCommands.GetDataSourceData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IgnoreAliases, Params_1.ParameterId.IgnoreAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.MaxRows, Params_1.ParameterId.MaxRows), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ColumnsToInclude, Params_1.ParameterId.FieldDisplayNames)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceDataTable, Params_1.ParameterId.UnderlyingDataTable))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyCategoricalFilter, CommandIds_1.DocCommands.CategoricalFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterValues, Params_1.ParameterId.FilterAliases), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterUpdateType, Params_1.ParameterId.FilterUpdateType), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.IsExcludeMode, Params_1.ParameterId.Exclude, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ApplyRangeFilter, CommandIds_1.DocCommands.RangeFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMin, Params_1.ParameterId.RangeMin, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeMax, Params_1.ParameterId.RangeMax, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FilterRangeNullOption, Params_1.ParameterId.Included, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearFilter, CommandIds_1.DocCommands.ClearExistingFilter, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.QualifiedFieldCaption), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Worksheet), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.Dashboard)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldName, Params_1.ParameterId.FieldCaption))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetSelectedMarks, CommandIds_1.DocCommands.GetSelectionData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectedData, Params_1.ParameterId.SelectionData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetHighlightedMarks, CommandIds_1.DocCommands.GetHighlightedData, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HighlightedData, Params_1.ParameterId.HighlightedData))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SaveAddInSettings, CommandIds_1.DocCommands.SaveAddInSettings, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInLocator, Params_1.ParameterId.AddInLocator), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SettingsValues, Params_1.ParameterId.AddInSettings)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.AddInSettingsInfo, Params_1.ParameterId.AddInSettingsInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetParametersForSheet, CommandIds_1.DocCommands.GetParameterModels, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfos, Params_1.ParameterId.ParameterCtrls))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.FindParameter, CommandIds_1.DocCommands.FindParameterModel, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterCaption, Params_1.ParameterId.FieldCaption, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.FieldNameString, true)], - // We might not get a response if the parameter isn't found - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl, true))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ChangeParameterValue, CommandIds_1.DocCommands.SetParameterValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterFieldName, Params_1.ParameterId.GlobalFieldName), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterValue, Params_1.ParameterId.ValueStr)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.ParameterInfo, Params_1.ParameterId.ParameterCtrl))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.ClearSelectedMarks, CommandIds_1.DocCommands.ClearSelectedMarks, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)])); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.SelectByValue, CommandIds_1.DocCommands.SelectByValue, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.Selection, Params_1.ParameterId.Selection, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.SelectionUpdateType, Params_1.ParameterId.SelectionUpdateType), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.HierValSelectionModels, Params_1.ParameterId.HierValSelectionModels, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DimValSelectionModels, Params_1.ParameterId.DimValSelectionModels, true), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantRangeSelectionModels, Params_1.ParameterId.QuantRangeSelectionModels, true)])); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetDataSources, CommandIds_1.DocCommands.GetSchema, [], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSchema, Params_1.ParameterId.DataSchema))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.RefreshDataSource, CommandIds_1.UICommands.RefreshDataSourceUI, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DataSourceId, Params_1.ParameterId.Datasource)], undefined, CommandRegistration_1.CommandNamespace.TabUI)); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetFilters, CommandIds_1.DocCommands.GetWorksheetFilters, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.WorksheetFilters, Params_1.ParameterId.FiltersInfo))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetCategoricalDomain, CommandIds_1.DocCommands.GetCategoricalDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.CategoricalDomain, Params_1.ParameterId.CategoricalDomain))); - result.addCommand(new CommandRegistration_1.CommandRegistration(api_internal_contract_1.VerbId.GetRangeDomain, CommandIds_1.DocCommands.GetQuantitativeDomain, [new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.VisualId, Params_1.ParameterId.VisualIDPM), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.FieldId, Params_1.ParameterId.FieldName), - new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.DomainType, Params_1.ParameterId.FilterDomainType)], new CommandRegistration_1.CommandParameter(api_internal_contract_1.ParameterId.QuantitativeDomain, Params_1.ParameterId.QuantitativeDomain))); - return result; - }; - return CommandMappingRegistryFactory; - }()); - exports.CommandMappingRegistryFactory = CommandMappingRegistryFactory; - //# sourceMappingURL=CommandMappingRegistryFactory.js.map - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/commands-enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-cmd-wrappers.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - var DocCommands; - (function (DocCommands) { - // Saves the settings for the specified add-in id - DocCommands["SaveAddInSettings"] = "save-add-in-settings"; - // Gets the pres model for an add-in instance. - DocCommands["GetAddInInstancePresModel"] = "get-add-in-instance-pres-model"; - // Gets the pres model for the dashboard authoring widget for add-ins. - DocCommands["GetAddInDashboardAuthoringWidgetPresModel"] = "get-add-in-dashboard-authoring-widget-pres-model"; - // Gets the necessary information for an add-in to initialize itself. - DocCommands["InitializeAddInInstance"] = "initialize-add-in-instance"; - // Enables or disable javascript debugging of an add-in. - DocCommands["SetAddInJsDebuggingEnabled"] = "set-add-in-js-debugging-enabled"; - // Whether or not we should pause before loading. If missing, toggle the value - DocCommands["SetPauseBeforeLoadingAddIn"] = "set-pause-before-loading-add-in"; - // Reloads the Add-In widget and web page. - DocCommands["ReloadAddIn"] = "reload-add-in"; - // Retrieves the context menu for a dashboard add-in. - DocCommands["GetAddInZoneContextMenu"] = "get-add-in-zone-context-menu"; - // Gets the pres model which indicates what the debug settings for add-ins is. - DocCommands["GetAddInDebugSettingsPresModel"] = "get-add-in-debug-settings-pres-model"; - // Primary use is for building context menus - DocCommands["IsSelectionAnEditableParameter"] = "is-selection-an-editable-parameter"; - // Check if selection can be used as base for creating a new parameter. Primary use is for building context menus - DocCommands["GetCreateParameterState"] = "get-create-parameter-state"; - // Uses EditParameter to get and return info about the presmodel without maintaining the controller - DocCommands["GetParameterEditInfo"] = "get-parameter-edit-info"; - // Initialize the controller and its stored parameter then return a populated presmodel - DocCommands["CreateParameter"] = "create-parameter"; - // Same underlying logic as CreateParameter but edits rather than creating a new parameter - DocCommands["EditParameter_New"] = "edit-parameter-new"; - // Add a member of a parameter domain. Changes are applied to intermediate state and saved on commit - DocCommands["AddParameterMember"] = "add-parameter-member"; - // Edit a member of a parameter domain. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterMember"] = "edit-parameter-member"; - // Delete a series of ranges of members from the parameter list. - DocCommands["DeleteParameterMembers"] = "delete-parameter-members"; - // Copy a series of ranges of members of a parameter list - DocCommands["CopyParameterMembers"] = "copy-parameter-members"; - // Move a series of ranges of members of a parameter list - DocCommands["MoveParameterMembers"] = "move-parameter-members"; - // Change domain of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterDomainType"] = "edit-parameter-domain-type"; - // Change datatype of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterDataType"] = "edit-parameter-data-type"; - // Change display format of a parameter. Changes are applied to intermediate state and saved on commit - DocCommands["EditParameterFormat"] = "edit-parameter-format"; - // Validate changes to a parameter's range domain and apply to intermediate state. Changes are saved on commit - DocCommands["EditParameterRange"] = "edit-parameter-range"; - // Edit the value of a non-list domain parameter - DocCommands["EditParameterValue"] = "edit-parameter-value"; - // Edit the value of a list domain parameter - DocCommands["EditParameterValueIndex"] = "edit-parameter-value-index"; - // Update the parameter caption and description - used to keep backend in sync. No verification/return is requried. - DocCommands["EditParameterDisplayInfo"] = "edit-parameter-display-info"; - // Update the domain of the parameter using a field (column or parameter) as a base - DocCommands["UpdateParameterFromField"] = "update-parameter-from-field"; - // Update the list domain of a parameter from a plain text representation of values - DocCommands["ParseParameterListDomain"] = "parse-parameter-list-domain"; - // Clears the parameter's domain of all members - DocCommands["ClearParameterListDomain"] = "clear-parameter-list-domain"; - // Creates or edits parameter from intermediate state. Takes a few properties that are cached in dialog and applies them pre-commit. - DocCommands["CommitParameterEdits"] = "commit-parameter-edits"; - // Gets the model for a particular parameter or returns an empty response if one is not found. - DocCommands["FindParameterModel"] = "find-parameter-model"; - // Gets the pres model for the show data dialog - DocCommands["GetShowDataPresModel"] = "get-show-data-pres-model"; - // Export underlying data from the ShowDataDialog to a CSV file - DocCommands["ShowDataExportToCSV"] = "show-data-export-to-csv"; - // Gets the summary data for a worksheet - DocCommands["GetSummaryData"] = "get-summary-data"; - // Gets the underlying data for a worksheet - DocCommands["GetUnderlyingData"] = "get-underlying-data"; - // Gets the underlying data for a specific data source. - DocCommands["GetDataSourceData"] = "get-data-source-data"; - // Select all marks that have the tuple's value for the given field . - DocCommands["SelectByTupleValue"] = "select-by-tuple-value"; - // Clear all the selected marks for the given worksheet - DocCommands["ClearSelectedMarks"] = "clear-selected-marks"; - // Creates or updates and existing filter based on the provided updates. - DocCommands["ApplyCategoricalFilterUpdates"] = "apply-categorical-filter-updates"; - // Search filter domain for text and return any matching tuples. - DocCommands["CategoricalFilterSearch"] = "categorical-filter-search"; - // Clear all members from the table of the identified cache. - DocCommands["CategoricalFilterClearRelationalCache"] = "categorical-filter-clear-relational-cache"; - // Create tuples for an existing filter from supplied text. - DocCommands["GetCategoricalFilterTuplesFromText"] = "get-categorical-filter-tuples-from-text"; - // Returns a presmodel backing a categorical filter, initializing a data cache for fast lookup of the filter's member domain. - DocCommands["GetCategoricalFilter"] = "get-categorical-filter"; - // Retrieves a page of data to display in the filter's list domain - DocCommands["GetCategoricalFilterDomainPage"] = "get-categorical-filter-domain-page"; - // Reset filter to committed state - DocCommands["ResetCategoricalFilterDeferred"] = "reset-categorical-filter-deferred"; - // Use uncommitted state to reset the filter's controller - DocCommands["RecreateCategoricalFilterController"] = "recreate-categorical-filter-controller"; - // Validates a Categroical Filter name. - DocCommands["ValidateCategoricalFilterName"] = "validate-categorical-filter-name"; - // Gets a summary of the filter pattern. - DocCommands["GetCategoricalFilterPatternSummary"] = "get-categorical-filter-pattern-summary"; - // Gets a summery of the filter condition. - DocCommands["GetCategoricalFilterConditionSummary"] = "get-categorical-filter-condition-summary"; - // Load the current minimum and maximum data value range for the condition field. - DocCommands["LoadCategoricalFilterConditionFieldValueRange"] = "load-categorical-filter-condition-field-value-range"; - // Validates a Categorical Filter's condition formula and re-writes it. - DocCommands["ValidateCategoricalFilterConditionFormula"] = "validate-categorical-filter-condition-formula"; - // Gets a summery of the filter limit. - DocCommands["GetCategoricalFilterLimitSummary"] = "get-categorical-filter-limit-summary"; - // Validates a Categorical Filter's limit count. - DocCommands["ValidateCategoricalFilterLimitCount"] = "validate-categorical-filter-limit-count"; - // Validates a Categorical Filter's limit formula, and re-writes the formula. - DocCommands["ValidateCategoricalFilterLimitFormula"] = "validate-categorical-filter-limit-formula"; - // Validates a Categorical Filter's limit. - DocCommands["ValidateCategoricalFilterLimit"] = "validate-categorical-filter-limit"; - // Inform cache when a user changes the range - DocCommands["CategoricalFilterSetRangeTypeDeferred"] = "categorical-filter-set-range-type-deferred"; - // Inform cache when a user changes whether the selection is exclusive - DocCommands["CategoricalFilterSetSelectionExclusiveDeferred"] = "categorical-filter-set-selection-exclusive-deferred"; - // Inform cache when a user changes whether an empty selection should be considered a selection of 'All' in a Manual selection mode - DocCommands["CategoricalFilterSetUseAllWhenManualIsEmptyDeferred"] = "categorical-filter-set-use-all-when-manual-is-empty-deferred"; - // Inform cache when a user alters the preset type - DocCommands["CategoricalFilterSetPresetTypeDeferred"] = "categorical-filter-set-preset-type-deferred"; - // Inform cache the user has selected one or more members - DocCommands["CategoricalFilterSelectRelationalMembersDeferred"] = "categorical-filter-select-relational-members-deferred"; - // Inform cache the user has deselected one or more members - DocCommands["CategoricalFilterDeselectRelationalMembersDeferred"] = "categorical-filter-deselect-relational-members-deferred"; - // Inform cache when a user selects everything in the domain - DocCommands["CategoricalFilterSelectAllRelationalMembersDeferred"] = "categorical-filter-select-all-relational-members-deferred"; - // Inform cache when a user deselects everything in the domain - DocCommands["CategoricalFilterDeselectAllRelationalMembersDeferred"] = "categorical-filter-deselect-all-relational-members-deferred"; - // Inform cache the user wants to see a different domain (e.g. relevant values only) - DocCommands["CategoricalFilterSetDomainTypeDeferred"] = "categorical-filter-set-domain-type-deferred"; - // Set whether filters apply to totals as well as non-totals table calcs - DocCommands["FilterApplyToTotalTableCalcs"] = "filter-apply-to-total-table-calcs"; - // Gets the list of filters used in a worksheet - DocCommands["GetWorksheetFilters"] = "get-worksheet-filters"; - // Gets the domain for a categorical Filter - DocCommands["GetCategoricalDomain"] = "get-categorical-domain"; - // Gets the domain for a quantitative Filter - DocCommands["GetQuantitativeDomain"] = "get-quantitative-domain"; - // - DocCommands["GetHighlightedData"] = "get-highlighted-data"; - // - DocCommands["GetSelectionData"] = "get-selection"; - // - DocCommands["Select"] = "select"; - // - DocCommands["SelectAll"] = "select-all"; - // - DocCommands["SelectByValue"] = "select-by-value"; - // - DocCommands["SelectNoneIncludingMaster"] = "select-none-including-master"; - // - DocCommands["AddManualItemsToFilter"] = "add-manual-items-to-filter"; - // - DocCommands["CategoricalFilter"] = "categorical-filter"; - // - DocCommands["CategoricalFilterByIndex"] = "categorical-filter-by-index"; - // - DocCommands["ChangeSharedFilter"] = "change-shared-filter"; - // - DocCommands["ClearContextFilters"] = "clear-context-filters"; - // - DocCommands["ClearExistingFilter"] = "clear-existing-filter"; - // - DocCommands["DefaultFilter"] = "default-filter"; - // - DocCommands["FilterGeo"] = "filter-geo"; - // - DocCommands["FilterNeg"] = "filter-neg"; - // - DocCommands["FilterNulls"] = "filter-nulls"; - // - DocCommands["FilterTargets"] = "filter-targets"; - // - DocCommands["GetSharedFilterPresModel"] = "get-shared-filter-pres-model"; - // - DocCommands["HierarchicalFilter"] = "hierarchical-filter"; - // - DocCommands["KeepOnlyOrExclude"] = "keep-only-or-exclude"; - // - DocCommands["RangeFilter"] = "range-filter"; - // - DocCommands["RelDateFilter"] = "relative-date-filter"; - // - DocCommands["ResetFilter"] = "reset-filter"; - // - DocCommands["ShowGeoAtDefault"] = "show-geo-at-default"; - // - DocCommands["ShowSVAtDefault"] = "show-sv-at-default"; - // - DocCommands["ToggleLockQuickFilters"] = "toggle-lock-quick-filters"; - // - DocCommands["AddDataConnection"] = "add-data-connection"; - // - DocCommands["AddDrillPath"] = "add-drill-path"; - // - DocCommands["AddCredentialsFromKeychain"] = "add-credentials-from-keychain"; - // - DocCommands["AddCredentialsFromKeychainFile"] = "add-credentials-from-keychain-file"; - // - DocCommands["AddFieldFolder"] = "add-field-folder"; - // - DocCommands["AddSubtotals"] = "add-subtotals"; - // - DocCommands["AddToDrillPath"] = "add-to-drill-path"; - // - DocCommands["AddToFieldFolder"] = "add-to-field-folder"; - // - DocCommands["AggregateMeasuresFlag"] = "aggregate-measures"; - // - DocCommands["ApplyCalculation"] = "apply-calculation"; - // - DocCommands["ApplyPageSetupOptions"] = "apply-page-setup-options"; - // - DocCommands["ApplyTableOptions"] = "apply-table-options"; - // - DocCommands["ApplyTypeInPill"] = "apply-type-in-pill"; - // - DocCommands["Assert"] = "assert"; - // - DocCommands["AttemptConnectDataSourcesOnSheet"] = "attempt-connect-datasources-on-sheet"; - // - DocCommands["AttemptConnectWorkbook"] = "attempt-connect-workbook"; - // - DocCommands["AttemptDataSourcesConnection"] = "attempt-datasources-connection"; - // - DocCommands["AutoUpdates"] = "auto-update"; - // - DocCommands["Brush"] = "highlight"; - // - DocCommands["BrushSpecial"] = "highlight-special"; - // - DocCommands["BuildDataSchemaDataSourceContextMenu"] = "build-data-schema-data-source-context-menu"; - // - DocCommands["BuildDataSchemaContextMenu"] = "build-data-schema-context-menu"; - // - DocCommands["BuildDataSchemaFieldContextMenu"] = "build-data-schema-field-context-menu"; - // - DocCommands["BuildDataSchemaDrillPathContextMenu"] = "build-data-schema-drill-path-context-menu"; - // - DocCommands["BuildFileTableInfoPresModel"] = "build-file-table-info-pres-model"; - // - DocCommands["BuildSheetTabContextMenu"] = "build-sheet-tab-context-menu"; - // - DocCommands["CancelDataSourcePresModel"] = "cancel-datasource-pres-model"; - // - DocCommands["CatBinMergeSplitLabel"] = "categorical-bin-merge-split"; - // - DocCommands["CategoricalQuickFilterEdit"] = "categorical-quick-filter-edit"; - // - DocCommands["CategoricalQuickFilterExcludeValues"] = "categorical-quick-filter-exclude-values"; - // - DocCommands["CategoricalQuickFilterIncludeAllWhenEmpty"] = "categorical-quick-filter-include-all-when-empty"; - // - DocCommands["CategoricalQuickFilterMode"] = "categorical-quick-filter-mode"; - // - DocCommands["CategoricalQuickFilterPattern"] = "categorical-quick-filter-pattern"; - // - DocCommands["ChangeAggregation"] = "change-aggregation"; - // - DocCommands["ChangeAlphaLevel"] = "change-alpha-level"; - // - DocCommands["ChangeBorder"] = "change-border"; - // - DocCommands["ChangeFieldType"] = "change-field-type"; - // - DocCommands["ChangeForecastColumnType"] = "change-forecast-column-type"; - // - DocCommands["ChangeHalo"] = "change-halo"; - // - DocCommands["ChangeMarkers"] = "change-markers"; - // - DocCommands["ChangeSize"] = "change-size"; - // - DocCommands["ChangeSheetTabColor"] = "change-sheet-tab-color"; - // - DocCommands["ClearAllAxisRanges"] = "clear-axis-ranges"; - // - DocCommands["ClearCalcModel"] = "clear-calculation-model"; - // - DocCommands["ClearFilters"] = "clear-filters"; - // - DocCommands["ClearFormatting"] = "clear-formatting"; - // - DocCommands["ClearFuture"] = "clear-future"; - // - DocCommands["ClearLayout"] = "clear-layout"; - // - DocCommands["ClearQuickFilter"] = "clear-quick-filter"; - // - DocCommands["ClearSorts"] = "clear-sorts"; - // - DocCommands["CloseConnection"] = "close-connection"; - // - DocCommands["CloseDataSource"] = "close-data-source"; - // - DocCommands["ConnectionAddGoogleAnalyticsDimension"] = "connection-add-google-analytics-dimension"; - // - DocCommands["ConnectionAddGoogleAnalyticsMeasure"] = "connection-add-google-analytics-measure"; - // - DocCommands["ConnectionAddNewTable"] = "connection-add-new-table"; - // - DocCommands["ConnectionAddCoalesce"] = "connection-add-coalesce"; - // - DocCommands["ConnectionAddPivot"] = "connection-add-pivot"; - // - DocCommands["ConnectionConvertToUnionAndEdit"] = "connection-convert-to-union-and-edit"; - // - DocCommands["ConnectionConvertToUnion"] = "connection-convert-to-union"; - // - DocCommands["ConnectionEditUnion"] = "connection-edit-union"; - // - DocCommands["ConnectionAddOrEditBatchUnion"] = "connection-add-or-edit-batch-union"; - // - DocCommands["ConnectionChangeTableProperty"] = "connection-change-table-property"; - // - DocCommands["ConnectionCountEntity"] = "connection-count-entity"; - // - DocCommands["ConnectionDataServerFetchMoreDatasources"] = "connection-dataserver-fetch-more-datasources"; - // - DocCommands["ConnectionDataServerProjectSelect"] = "connection-dataserver-change-selected-project"; - // - DocCommands["ConnectionDataServerUpdateFetchParameters"] = "connection-dataserver-update-fetch-parameters"; - // - DocCommands["ConnectionDataServerFlushCache"] = "connection-dataserver-flush-cache"; - // - DocCommands["ConnectionDeleteAllTables"] = "connection-delete-all-tables"; - // - DocCommands["ConnectionDeleteTable"] = "connection-delete-table"; - // - DocCommands["ConnectionEditCaption"] = "connection-edit-caption"; - // - DocCommands["ConnectionEditGoogleAnalyticsAccount"] = "connection-edit-google-analytics-account"; - // - DocCommands["ConnectionEditGoogleAnalyticsDateRange"] = "connection-edit-google-analytics-date-range"; - // - DocCommands["ConnectionEditGoogleAnalyticsMeasureGroup"] = "connection-edit-google-analytics-measure-group"; - // - DocCommands["ConnectionToggleGAQueryPartitioning"] = "connection-toggle-ga-query-partitioning"; - // - DocCommands["ConnectionEditGoogleAnalyticsProperty"] = "connection-edit-google-analytics-property"; - // - DocCommands["ConnectionEditGoogleAnalyticsView"] = "connection-edit-google-analytics-view"; - // - DocCommands["ConnectionEditGoogleAnalyticsSegment"] = "connection-edit-google-analytics-segment"; - // - DocCommands["ConnectionEditJoinClauses"] = "connection-edit-join-clauses"; - // - DocCommands["ConnectionEditJoinType"] = "connection-edit-join-type"; - // - DocCommands["ConnectionEditSQLText"] = "connection-edit-sql-text"; - // - DocCommands["ConnectionFetchEntity"] = "connection-fetch-entity"; - // - DocCommands["ConnectionSetForceExtractRefresh"] = "connection-set-force-extract-refresh"; - // - DocCommands["ConnectionPrepareDataSourceForEdit"] = "connection-prepare-datasource-for-edit"; - // - DocCommands["ConnectionClearRefreshAttributes"] = "connection-clear-refresh-attributes"; - // - DocCommands["ConnectionRemoveGoogleAnalyticsDimension"] = "connection-remove-google-analytics-dimension"; - // - DocCommands["ConnectionRemoveGoogleAnalyticsMeasure"] = "connection-remove-google-analytics-measure"; - // - DocCommands["ConnectionRemoveCoalesce"] = "connection-remove-coalesce"; - // - DocCommands["ConnectionRemovePivot"] = "connection-remove-pivot"; - // - DocCommands["ConnectionAddDateParseFormats"] = "connection-add-date-parse-formats"; - // - DocCommands["ConnectionRenameTable"] = "connection-rename-table"; - // - DocCommands["ConnectionReplaceRelationWithSQLText"] = "connection-replace-relation-with-sql-text"; - // - DocCommands["ConnectionReplaceTable"] = "connection-replace-table"; - // - DocCommands["ConnectionResetTableAlias"] = "connection-reset-table-alias"; - // - DocCommands["ConnectionSelectCatalog"] = "connection-select-catalog"; - // - DocCommands["ConnectionSelectCube"] = "connection-select-cube"; - // - DocCommands["ConnectionSelectDatabase"] = "connection-select-database"; - // - DocCommands["ConnectionSelectSchema"] = "connection-select-schema"; - // - DocCommands["ConnectionSelectStoredProcedure"] = "connection-select-stored-procedure"; - // - DocCommands["ConnectionSelectWarehouse"] = "connection-select-warehouse"; - // - DocCommands["ConnectionSelectBigQueryLegacySQLCheckBox"] = "connection-select-bigquery-legacy-check"; - // - DocCommands["ConnectionToggleHasHeaderRow"] = "connection-toggle-has-header-row"; - // - DocCommands["ConnectionToggleTableCleaning"] = "connection-toggle-table-cleaning"; - // - DocCommands["ConnectionToggleUseExtract"] = "connection-toggle-use-extract"; - // - DocCommands["ConnectionViewTableCleaningResults"] = "connection-view-table-cleaning-results"; - // - DocCommands["ConnectToDataServerSource"] = "connect-data-server-datasource"; - // - DocCommands["ConsiderZerosEmptyFlag"] = "consider-zeros-empty"; - // - DocCommands["ConvertUnnamedFields"] = "convert-unnamed-fields"; - // - DocCommands["Crash"] = "crash"; - // - DocCommands["CreateAggregateRole"] = "create-aggregate-role"; - // - DocCommands["CreateConnection"] = "create-connection"; - // - DocCommands["CreateDefaultQuickFilter"] = "create-default-quick-filter"; - // - DocCommands["CreateTypeInPill"] = "create-type-in-pill"; - // - DocCommands["CustomDataGridFieldOrder"] = "custom-datagrid-field-order"; - // - DocCommands["CustomDateAggregation"] = "custom-date-aggregation"; - // - DocCommands["CustomSplitField"] = "custom-split-field"; - // - DocCommands["DebugAssertion"] = "debug-assertion"; - // - DocCommands["DecrementParameterValue"] = "decr-parameter-value"; - // - DocCommands["DeleteFields"] = "delete-calculation-fields-command"; - // - DocCommands["DeleteSheet"] = "delete-sheet"; - // - DocCommands["DescribeDrillPath"] = "describe-drill-path"; - // - DocCommands["DescribeSortFilter"] = "describe-sort-filter"; - // - DocCommands["DismissNullWart"] = "dismiss-null-wart"; - // - DocCommands["DomainQuickFilter"] = "domain-quick-filter"; - // - DocCommands["DoubleFreeCrash"] = "double-free"; - // - DocCommands["DropNowhere"] = "drop-nowhere"; - // - DocCommands["DropOnSchemaViewer"] = "drop-on-schema-viewer"; - // - DocCommands["DropOnShelf"] = "drop-on-shelf"; - // - DocCommands["DropOnCalcEditor"] = "drop-on-calc-editor"; - // - DocCommands["DropOnShowMe"] = "drop-on-showme"; - // - DocCommands["DropPrepare"] = "drop-prepare"; - // - DocCommands["DualAxis"] = "dual-axis"; - // - DocCommands["DuplicateSheet"] = "duplicate-sheet"; - // - DocCommands["EditCopyCalc"] = "edit-copy-calc"; - // - DocCommands["EditDropLines"] = "edit-drop-lines"; - // - DocCommands["EditEnumeratedGroup"] = "edit-enumerated-group"; - // - DocCommands["EditNestedGroup"] = "edit-nested-group"; - // - DocCommands["EditPill"] = "edit-pill"; - // - DocCommands["EditPrimitiveType"] = "edit-primitive-type"; - // - DocCommands["EnableAllBrushing"] = "enable-all-highlights"; - // - DocCommands["EnableQuickFilter"] = "enable-quick-filter"; - // - DocCommands["EnableSheetBrushing"] = "enable-sheet-highlights"; - // - DocCommands["EnableThemedBrushing"] = "enable-themed-highlights"; - // - DocCommands["EnumerateVariables"] = "enumerate-variables"; - // - DocCommands["EnumerateVariableSelectionValues"] = "enumerate-variable-selection-values"; - // - DocCommands["EstablishConnection"] = "establish-connection"; - // - DocCommands["EstablishMatchingConnections"] = "establish-matching-connections"; - // - DocCommands["ExportDataToText"] = "export-data-to-text"; - // - DocCommands["ExtSvcConfig"] = "ext-svc-config"; - // - DocCommands["ExtSvcConfigConnect"] = "ext-svc-config-connect"; - // - DocCommands["Extract"] = "extract"; - // - DocCommands["SetDataGridCurrentTable"] = "set-data-grid-current-table"; - // - DocCommands["FetchTableRelevance"] = "fetch-table-relevance"; - // - DocCommands["FetchCachedTableRelevance"] = "fetch-cached-table-relevance"; - // - DocCommands["FlipLabels"] = "flip-labels"; - // - DocCommands["FloatingToolbar"] = "zoom-controls"; - // - DocCommands["FloatingToolbarToggle"] = "zoom-controls-toggle"; - // - DocCommands["ForecastConfig"] = "forecast-config"; - // - DocCommands["ForecastToggle"] = "forecast-toggle"; - // - DocCommands["FormatWorkbook"] = "format-workbook"; - // - DocCommands["GeographicSearchQuery"] = "geographic-search-query"; - // - DocCommands["GeographicSearchLoadData"] = "geographic-search-load-data"; - // - DocCommands["GeographicSearchIsDataDoneLoading"] = "geographic-search-data-done-loading"; - // - DocCommands["GeographicSearchToggleVisibility"] = "geographic-search-toggle-visibility"; - // - DocCommands["GetEditConnectionPresModel"] = "get-edit-connection-pres-model"; - // - DocCommands["GetEditEnumeratedGroupPresModel"] = "get-edit-enumerated-group-pres-model"; - // - DocCommands["GetEditNestedGroupPresModel"] = "get-edit-nested-group-pres-model"; - // - DocCommands["GetFrameFinderPresModel"] = "get-frame-finder-pres-model"; - // - DocCommands["GetGoogleSheetsListPresModel"] = "get-google-sheets-list-pres-model"; - // - DocCommands["GetGoogleSheetPanePresModel"] = "get-google-sheet-pane-pres-model"; - // - DocCommands["GetInitialSQLPresModel"] = "get-initial-sql-pres-model"; - // - DocCommands["GetQueryBandingPresModel"] = "get-query-banding-pres-model"; - // - DocCommands["GetTabbedAuthenticationPresModel"] = "get-tabbed-authentication-pres-model"; - // - DocCommands["GetActiveSheet"] = "get-active-sheet"; - // - DocCommands["GetAlphaLevel"] = "get-alpha-level"; - // - DocCommands["GetAppConfig"] = "get-app-config"; - // - DocCommands["GetDisabledSecondaryDSFields"] = "get-disabled-secondaryds-fields"; - // - DocCommands["GetBlendingFields"] = "get-blending-fields"; - // - DocCommands["GetCalculationPresModel"] = "get-calculation-pres-model"; - // - DocCommands["GetCategoricalColor"] = "get-categorical-color"; - // - DocCommands["GetClientInfo"] = "get-client-info"; - // - DocCommands["GetCommands"] = "get-commands"; - // - DocCommands["GetConnectionDescriptionPresModel"] = "get-connection-description-pres-model"; - // - DocCommands["GetDSDropdownPresModel"] = "get-ds-dropdown-pres-model"; - // - DocCommands["GetDataPreviewWindowMessagePresModel"] = "get-data-preview-window-pres-model"; - // - DocCommands["GetDataSourcePresModel"] = "get-datasource-pres-model"; - // - DocCommands["GetDataSourceSortPresModel"] = "get-datasource-sort-pres-model"; - // - DocCommands["GetDataSourcePropertiesPresModel"] = "get-datasource-properties-pres-model"; - // - DocCommands["GetConnectionSettingsPresModel"] = "get-connection-settings-pres-model"; - // - DocCommands["GetDashboard"] = "get-dashboard"; - // - DocCommands["GetDataPreview"] = "get-data-preview"; - // - DocCommands["GetDatabaseEnumerationPresModel"] = "get-database-enumeration-pres-model"; - // - DocCommands["GetDefaultColor"] = "get-default-color"; - // - DocCommands["GetDefaultShape"] = "get-default-shape"; - // - DocCommands["GetDragPresModelForText"] = "get-drag-pres-model-for-text"; - // - DocCommands["GetDropTargetPresModel"] = "get-drop-target-pres-model"; - // - DocCommands["GetEditDataServerConnectionPresModel"] = "get-edit-data-server-connection-pres-model"; - // - DocCommands["GetEditDropLinesModel"] = "get-edit-drop-lines-model"; - // - DocCommands["GetEncodingState"] = "get-encoding-state"; - // - DocCommands["GetEncodingTypeMenuModel"] = "get-encoding-type-menu"; - // - DocCommands["GetExtSvcConfig"] = "get-ext-svc-config"; - // - DocCommands["GetForecastPresModel"] = "get-forecast-pres-model"; - // - DocCommands["GetJoinDescriptionPresModel"] = "get-join-description-pres-model"; - // - DocCommands["GetQuickFilter"] = "get-quick-filter"; - // - DocCommands["GetQuickFilters"] = "get-quick-filters"; - // - DocCommands["GetReferenceLinePresModel"] = "get-reference-line-pres-model"; - // - DocCommands["GetParameters"] = "get-parameters"; - // - DocCommands["GetParameterModels"] = "get-parameter-models"; - // - DocCommands["GetParametersRegistryInfo"] = "get-params-registry-info"; - // - DocCommands["GetPivotPresModel"] = "get-pivot-pres-model"; - // - DocCommands["GetScene"] = "get-scene"; - // - DocCommands["GetSchemaEnumerationPresModel"] = "get-schema-enumeration-pres-model"; - // - DocCommands["GetSheetsInfo"] = "get-sheets-info"; - // - DocCommands["GetShowMe"] = "get-show-me"; - // - DocCommands["GetStandardConnectionEnumerationPresModel"] = "get-standard-connection-enumeration-pres-model"; - // - DocCommands["GetStoredProcedureEnumerationPresModel"] = "get-stored-procedure-enumeration-pres-model"; - // - DocCommands["GetStoredProcedureParametersPresModel"] = "get-stored-procedure-parameters-pres-model"; - // - DocCommands["GetTableEnumerationPresModel"] = "get-table-enumeration-pres-model"; - // - DocCommands["GetTableCleaningPresModel"] = "get-table-cleaning-pres-model"; - // - DocCommands["GetTargetFieldList"] = "get-target-field-list"; - // - DocCommands["GetTopLevelConnectionDescriptionPresModel"] = "get-top-level-connection-description-pres-model"; - // - DocCommands["GetTypeInPillPresModel"] = "get-type-in-pill-pres-model"; - // - DocCommands["GetUberTipPresModel"] = "get-ubertip-pres-model"; - // - DocCommands["GetUnionInfoPresModel"] = "get-union-info-pres-model"; - // - DocCommands["GetVisual"] = "get-visual"; - // - DocCommands["GetVizData"] = "get-viz-data"; - // - DocCommands["GetWarehouseEnumerationPresModel"] = "get-warehouse-enumeration-pres-model"; - // - DocCommands["GetWorkbook"] = "get-workbook"; - // - DocCommands["GetWorldUpdate"] = "get-world-update"; - // - DocCommands["GoToSheet"] = "goto-sheet"; - // - DocCommands["HeapCorruptionCrash"] = "corrupt-heap"; - // - DocCommands["HideColumnFieldLabel"] = "hide-column-field-label"; - // - DocCommands["HideEmptyColsFlag"] = "hide-empty-cols"; - // - DocCommands["HideEmptyRowsFlag"] = "hide-empty-rows"; - // - DocCommands["HideLabel"] = "hide-label"; - // - DocCommands["HideRowFieldLabel"] = "hide-row-field-label"; - // - DocCommands["HierarchicalQuickFilterUpdateSetFunction"] = "hierarchical-quick-filter-update-set-function"; - // - DocCommands["IncludeInTooltip"] = "include-in-tooltip"; - // - DocCommands["IncludeOtherCategoricalBin"] = "include-other-cat-bin"; - // - DocCommands["IncrementExtract"] = "increment-extract"; - // - DocCommands["IncrementParameterValue"] = "incr-parameter-value"; - // - DocCommands["CreateCalc"] = "create-calc"; - // - DocCommands["EditCalc"] = "edit-calc"; - // - DocCommands["InvokeHyperlink"] = "invoke-hyperlink"; - // - DocCommands["KeepOnlyOrExcludeSelection"] = "keep-only-or-exclude-selection"; - // - DocCommands["LabelDrill"] = "label-drill"; - // - DocCommands["LabelDrillCtx"] = "label-drill-ctx"; - // - DocCommands["LevelDrill"] = "level-drill"; - // - DocCommands["LoadUrl"] = "load-url"; - // - DocCommands["ListPublishedDataSources"] = "list-published-datasources"; - // - DocCommands["MarkLabel"] = "mark-label"; - // - DocCommands["MarkTrail"] = "mark-trail"; - // - DocCommands["MemoryDumpObjectCounts"] = "memory-dump-object-counts"; - // - DocCommands["MemoryLeak"] = "memory-leak"; - // - DocCommands["Merge"] = "merge-or-split"; - // - DocCommands["MigrateDataSource"] = "migrate-data-source"; - // - DocCommands["ModifyMarksInSet"] = "add-or-remove-marks"; - // - DocCommands["MoveAreaAnnotationText"] = "move-area-annotation-text"; - // - DocCommands["MoveColumnTotals"] = "move-column-totals"; - // - DocCommands["MoveMark"] = "move-mark"; - // - DocCommands["MovePointAnnotation"] = "move-point-annotation"; - // - DocCommands["MovePointAnnotationTarget"] = "move-point-annotation-target"; - // - DocCommands["MoveReferenceLine"] = "move-reference-line"; - // - DocCommands["MoveRowTotals"] = "move-row-totals"; - // - DocCommands["NavigateToSheet"] = "navigate-to-sheet"; - // - DocCommands["PostCalcJoinClauseResult"] = "post-calc-join-clause-result"; - // - DocCommands["NewDocDashboard"] = "new-dashboard"; - // - DocCommands["NewDocWorksheet"] = "new-worksheet"; - // - DocCommands["NonRangedRemoveReferenceLine"] = "non-ranged-remove-reference-line"; - // - DocCommands["OptimizeExtract"] = "optimize-extract"; - // - DocCommands["OptOutActions"] = "opt-out-actions"; - // - DocCommands["PageHistorySettings"] = "page-history-settings"; - // - DocCommands["PageToggleTrails"] = "page-toggle-trails"; - // - DocCommands["ParseUIName"] = "parse-ui-name"; - // - DocCommands["Percentages"] = "percentages"; - // - DocCommands["Perspectives"] = "perspectives"; - // - DocCommands["PositionPointAnnotation"] = "position-point-annotation"; - // - DocCommands["ProtocolPoolLog"] = "protocol-pool-log"; - // - DocCommands["PublishDataSource"] = "publish-datasource"; - // - DocCommands["PublishDataSourceFromData"] = "publish-data-source-from-data"; - // - DocCommands["PublishDataSourceFromWorkbookData"] = "publish-data-source-from-workbook-data"; - // - DocCommands["QuantitativeQuickFilterEdit"] = "quantitative-quick-filter-edit"; - // - DocCommands["QuantitativeModeQuickFilter"] = "quantitative-mode-quick-filter"; - // - DocCommands["QueryMigrateDataSources"] = "query-migrate-data-sources"; - // - DocCommands["QuickSort"] = "quick-sort"; - // - DocCommands["RangedByIndexMerge"] = "ranged-by-index-merge"; - // - DocCommands["RangedByValueMerge"] = "ranged-by-value-merge"; - // - DocCommands["Record"] = "record"; - // - DocCommands["Redo"] = "redo"; - // - DocCommands["RefreshExtract"] = "refresh-extract"; - // - DocCommands["RefreshFromSource"] = "refresh-from-source"; - // - DocCommands["RelativeDateQuickFilterEdit"] = "relative-date-quick-filter-edit"; - // - DocCommands["RemoveAllReferenceLines"] = "remove-all-reference-lines"; - // - DocCommands["RemoveDrillPath"] = "remove-drill-path"; - // - DocCommands["RemoveExtract"] = "remove-extract"; - // - DocCommands["RemoveFieldFolder"] = "remove-field-folder"; - // - DocCommands["RemoveFieldLabel"] = "remove-field-label"; - // - DocCommands["RemoveFields"] = "remove-fields"; - // - DocCommands["RemoveFieldsFromShelf"] = "remove-fields-from-shelf"; - // - DocCommands["RemoveFromDrillPath"] = "remove-from-drill-path"; - // - DocCommands["RemoveFromFieldFolder"] = "remove-from-field-folder"; - // - DocCommands["RemoveReferenceLine"] = "remove-reference-line"; - // - DocCommands["RemoveSubtotals"] = "remove-subtotals"; - // - DocCommands["RenameDataSource"] = "rename-data-source"; - // - DocCommands["RenameDrillPath"] = "rename-drill-path"; - // - DocCommands["RenameFieldFolder"] = "rename-field-folder"; - // - DocCommands["RenameSheet"] = "rename-sheet"; - // - DocCommands["ReorderLabels"] = "reorder-labels"; - // - DocCommands["ReportBug"] = "report-bug"; - // - DocCommands["RequestDataSourcePresModel"] = "request-datasource-pres-model"; - // - DocCommands["ResetParameterCtrlTitle"] = "reset-parameter-ctrl-title"; - // - DocCommands["ResetTooltip"] = "reset-tooltip"; - // - DocCommands["ResizeAreaAnnotationText"] = "resize-area-annotation-text"; - // - DocCommands["ResizeAxis"] = "resize-axis"; - // - DocCommands["ResizeCell"] = "resize-cell"; - // - DocCommands["ResizeHeader"] = "resize-header"; - // - DocCommands["ResizePointAnnotation"] = "resize-point-annotation"; - // - DocCommands["Revert"] = "revert"; - // - DocCommands["RotateFieldLabel"] = "rotate-field-label"; - // - DocCommands["RotateLabel"] = "rotate-label"; - // - DocCommands["SplitFieldLabel"] = "split-field-label"; - // - DocCommands["RunAction"] = "run-action"; - // - DocCommands["RunScript"] = "run-script"; - // - DocCommands["RunUpdates"] = "run-update"; - // - DocCommands["SaveModel"] = "save-model"; - // - DocCommands["SavePublishedDStoFile"] = "save-published-ds-to-file"; - // - DocCommands["SelectDataSource"] = "select-data-source"; - // - DocCommands["SelectFieldsInShelf"] = "select-fields-in-shelf"; - // - DocCommands["SendDataConnectionTableViewMessage"] = "send-data-connection-tableview-message"; - // - DocCommands["SetActiveDataSourceName"] = "set-active-data-source-name"; - // - DocCommands["SetActiveConnectionName"] = "set-active-connection-name"; - // - DocCommands["SetActiveDataSource"] = "set-active-datasource"; - // - DocCommands["SetBasePalette"] = "set-base-palette"; - // - DocCommands["SetCategoricalColor"] = "set-categorical-color"; - // - DocCommands["SetDataCacheDelta"] = "set-data-cache-delta"; - // - DocCommands["SetDataPreviewAutoUpdate"] = "set-data-preview-auto-update"; - // - DocCommands["SetDataPreviewCustomFieldOrder"] = "set-data-preview-custom-field-order"; - // - DocCommands["SetDefaultColor"] = "set-default-color"; - // - DocCommands["SetDefaultShape"] = "set-default-shape"; - // - DocCommands["SetFilterContext"] = "set-filter-context"; - // - DocCommands["SetFilterShared"] = "set-filter-shared"; - // - DocCommands["SetInitialSQL"] = "set-initial-sql"; - // - DocCommands["SetItemColor"] = "set-item-color"; - // - DocCommands["SetItemColorResetCustomization"] = "set-item-color-reset-customization"; - // - DocCommands["SetItemEncodingType"] = "set-item-encoding-type"; - // - DocCommands["SetMarkSize"] = "set-mark-size"; - // - DocCommands["SetPageNavFlag"] = "set-page-flag"; - // - DocCommands["SetParameterCtrlDisplayFlags"] = "set-parameter-ctrl-display-flags"; - // - DocCommands["SetParameterCtrlDisplayMode"] = "set-parameter-ctrl-display-mode"; - // - DocCommands["SetParameterCtrlTitle"] = "set-parameter-ctrl-title"; - // - DocCommands["SetParameterValue"] = "set-parameter-value"; - // - DocCommands["SetPrimitive"] = "set-primitive"; - // - DocCommands["SetQueryBanding"] = "set-query-banding"; - // - DocCommands["SetQuickFilterIncludedValues"] = "set-quick-filter-included"; - // - DocCommands["SetReferenceLineFormula"] = "set-reference-line-formula"; - // - DocCommands["SetReferenceLineConstantValue"] = "set-reference-line-constant-value"; - // - DocCommands["SetSheetFormatting"] = "set-sheet-formatting"; - // - DocCommands["SetSheetSize"] = "set-sheet-size"; - // - DocCommands["SetTotalsType"] = "set-totals-type"; - // - DocCommands["SetWorkbookLocale"] = "set-workbook-locale"; - // - DocCommands["ShowCatCtrlQuickFilter"] = "show-cat-ctrl-quick-filter"; - // - DocCommands["ShowColFieldNamesFlag"] = "show-col-field-names"; - // - DocCommands["ShowColTotalsFlag"] = "show-col-totals"; - // - DocCommands["ShowColumnFieldLabel"] = "show-column-field-label"; - // - DocCommands["ShowEmptyColsFlag"] = "show-empty-cols"; - // - DocCommands["ShowEmptyRowsFlag"] = "show-empty-rows"; - // - DocCommands["ShowForecastEditor"] = "show-forecast-editor"; - // - DocCommands["ShowFullRange"] = "show-full-range"; - // - DocCommands["ShowHeader"] = "show-header"; - // - DocCommands["ShowHiddenData"] = "show-hidden-data"; - // - DocCommands["ShowMe"] = "show-me"; - // - DocCommands["ShowQuantCtrlQuickFilter"] = "show-quant-ctrl-quick-filter"; - // - DocCommands["ShowQuickFilterDoc"] = "show-quickfilter-doc"; - // - DocCommands["ShowReferenceLineEditor"] = "show-reference-line-editor"; - // - DocCommands["ShowReferenceLineConstantValueEditor"] = "show-reference-line-constant-value-editor"; - // - DocCommands["ShowReferenceLineFormatter"] = "show-reference-line-formatter"; - // - DocCommands["ShowRowFieldLabel"] = "show-row-field-label"; - // - DocCommands["ShowRowFieldNamesFlag"] = "show-row-field-names"; - // - DocCommands["ShowRowTotalsFlag"] = "show-row-totals"; - // - DocCommands["SimpleCommandList"] = "simple-command-list"; - // - DocCommands["Sleep"] = "sleep"; - // - DocCommands["SleepBackgroundThread"] = "sleep-background-thread"; - // - DocCommands["SortDataGridByColumn"] = "sort-datagrid-by-column"; - // - DocCommands["SortDataGridFields"] = "sort-datagrid-fields"; - // - DocCommands["SpecialValues"] = "special-values"; - // - DocCommands["SplitField"] = "split-field"; - // - DocCommands["StackMarks"] = "stack-marks"; - // - DocCommands["StackOverflowCrash"] = "stack-overflow"; - // - DocCommands["SubtotalAggregation"] = "subtotal-aggregation"; - // - DocCommands["Subtotals"] = "subtotals"; - // - DocCommands["SwapFields"] = "swap-fields"; - // - DocCommands["SwapRowsAndColumns"] = "swap-rows-and-columns"; - // - DocCommands["TableauException"] = "tableau-exception"; - // - DocCommands["ToggleDropLines"] = "toggle-drop-lines"; - // - DocCommands["ToggleFieldBlending"] = "toggle-field-blending"; - // - DocCommands["ToggleMarkLabels"] = "toggle-mark-labels"; - // - DocCommands["TogglePageTitle"] = "toggle-page-title"; - // - DocCommands["ToggleParameterCtrlDisplayFlag"] = "toggle-parameter-ctrl-display-flag"; - // - DocCommands["ToggleParameterCtrlTitle"] = "toggle-parameter-ctrl-title"; - // - DocCommands["ToggleQuickFilterTitle"] = "toggle-quick-filter-title"; - // - DocCommands["ToggleVizNavigationSetting"] = "toggle-viz-navigation-setting"; - // - DocCommands["Undo"] = "undo"; - // - DocCommands["UnhideData"] = "unhide-data"; - // - DocCommands["UnhideLabel"] = "unhide-label"; - // - DocCommands["UpdateAreaAnnotation"] = "update-area-annotation"; - // - DocCommands["UpdateCalcScopeIsolation"] = "update-scope-isolation-for-calculation"; - // - DocCommands["UpdateDataServerConnectionInfo"] = "update-data-server-connection-info"; - // - DocCommands["UpdatePointAnnotationPullback"] = "update-point-annotation-pullback"; - // - DocCommands["UpdateTableCalcInfo"] = "update-table-calc-infomation"; - // - DocCommands["UpgradeExtract"] = "upgrade-extract"; - // - DocCommands["UseExtract"] = "use-extract"; - // - DocCommands["ValidateDrillPathName"] = "validate-drill-path-name"; - // - DocCommands["ValidateFormula"] = "validate-formula"; - // - DocCommands["ValidateInitialSQL"] = "validate-initial-sql"; - // - DocCommands["ValidateQueryBanding"] = "validate-query-banding"; - // - DocCommands["ValidateTypeInPill"] = "validate-type-in-pill"; - // - DocCommands["ViewParameterCtrls"] = "view-param-ctrls"; - // - DocCommands["ViewQuickFilters"] = "view-quick-filters"; - // - DocCommands["GetSchema"] = "get-schema"; - // - DocCommands["GetSchemaViewerDataSchema"] = "get-schema-viewer-data-schema"; - // - DocCommands["ConvertToDimension"] = "convert-to-dimension"; - // - DocCommands["ConvertToMeasure"] = "convert-to-measure"; - // - DocCommands["ConvertToContinuous"] = "convert-to-continuous"; - // - DocCommands["ConvertToDiscrete"] = "convert-to-discrete"; - // - DocCommands["RenameField"] = "rename-field"; - // - DocCommands["HideField"] = "hide-field"; - // - DocCommands["UnhideField"] = "unhide-field"; - // - DocCommands["HideUnusedFields"] = "hide-unused-fields"; - // - DocCommands["DuplicateFields"] = "duplicate-fields"; - // - DocCommands["CleanValues"] = "clean-values"; - // - DocCommands["ParseDate"] = "parse-date"; - // - DocCommands["MakeDate"] = "make-date"; - // - DocCommands["SetQualifyNames"] = "set-qualify-names"; - // - DocCommands["CreateMeasureFromColumn"] = "create-measure-from-column"; - // - DocCommands["RemoveFromSchemaDrillPath"] = "remove-from-schema-drill-path"; - // - DocCommands["AddToSchemaDrillPath"] = "add-to-schema-drill-path"; - // - DocCommands["RemoveSchemaDrillPath"] = "remove-schema-drill-path"; - // - DocCommands["ShowHiddenFields"] = "show-hidden-fields"; - // - DocCommands["ShowAliases"] = "show-aliases"; - // - DocCommands["SetRowDisplayCount"] = "set-row-display-count"; - // - DocCommands["ShowStructure"] = "show-structure"; - // - DocCommands["GroupByTable"] = "group-by-table"; - // - DocCommands["ChangeDataType"] = "change-data-type"; - // - DocCommands["ChangePivotStrategy"] = "change-pivot-strategy"; - // - DocCommands["ChangeDisplayAlias"] = "change-display-alias"; - // - DocCommands["SetIncludeSharedMembers"] = "set-include-shared-members"; - // - DocCommands["SetUtilityDimension"] = "set-utility-dimension"; - // - DocCommands["SetDefaultHierarchy"] = "set-default-hierarchy"; - // - DocCommands["DataSourceSortOrder"] = "data-source-sort-order"; - // - DocCommands["ClearUtilityDimension"] = "clear-utility-dimension"; - // - DocCommands["ClearDefaultSort"] = "clear-default-sort"; - // - DocCommands["SetDefaultAggregation"] = "set-default-aggregation"; - // - DocCommands["SetDefaultVTAggregation"] = "set-default-vtaggregation"; - // - DocCommands["ChangeFiscalYear"] = "change-fiscal-year"; - // - DocCommands["ChangeSemanticRole"] = "change-semantic-role"; - // - DocCommands["AddToSheet"] = "add-to-sheet"; - // - DocCommands["DropSchemaSelOnShelf"] = "drop-schema-sel-on-shelf"; - // - DocCommands["AddToSchemaFieldFolder"] = "add-to-schema-field-folder"; - // - DocCommands["RemoveFromSchemaFieldFolder"] = "remove-from-schema-field-folder"; - // - DocCommands["RemoveSchemaFieldFolder"] = "remove-schema-field-folder"; - // - DocCommands["DefaultTextFormat"] = "default-text-format"; - // - DocCommands["EditSchemaCaption"] = "edit-schema-caption"; - // - DocCommands["ResetSchemaCaption"] = "reset-schema-caption"; - // - DocCommands["CreateOutlierSet"] = "create-outlier-set"; - })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); - var UICommands; - (function (UICommands) { - // - UICommands["About"] = "about"; - // - UICommands["AddDataServerDataSourceUI"] = "add-data-server-datasource-ui"; - // - UICommands["SwitchToDocumentAndAddDataServerDataSourceUI"] = "switch-to-document-and-add-data-server-ds-ui"; - // - UICommands["AddDrillPathUI"] = "add-drillpath-ui"; - // - UICommands["AddFieldFolderUI"] = "add-field-folder-ui"; - // - UICommands["AddFileToExtractUI"] = "add-file-to-extract-ui"; - // - UICommands["AddDataSourceToExtractUI"] = "add-data-source-to-extract-ui"; - // - UICommands["AddQCToSheetUI"] = "add-qc-to-sheet-ui"; - // - UICommands["AddReferenceLineUI"] = "add-reference-line-ui"; - // - UICommands["AddSchemaFieldFolderUI"] = "add-to-schema-field-folder-ui"; - // - UICommands["AddTableauServerDSConnectionUI"] = "add-tableau-server-ds-connection-ui"; - // - UICommands["AddToSchemaDrillPathUI"] = "add-to-schema-drillpath-ui"; - // - UICommands["AddToSheetUI"] = "add-to-sheet-ui"; - // - UICommands["AnnotateUI"] = "annotate-ui"; - // - UICommands["AppendDataSourceToRemoteExtractUI"] = "append-data-source-to-remote-extract-ui"; - // - UICommands["AttemptConnectDataSourcesOnSheetUI"] = "attempt-connect-datasources-on-sheet-ui"; - // - UICommands["AttemptDataSourceConnectionUI"] = "attempt-datasource-connect-ui"; - // - UICommands["AutoHideSheet"] = "auto-hide-sheet"; - // - UICommands["AutomationClickMRUItem"] = "click-mru-item"; - // - UICommands["CalculatedMembersUI"] = "calculated-members-ui"; - // - UICommands["ChangeAggregationUI"] = "change-aggregation-ui"; - // - UICommands["ChangeDataServerLogonUI"] = "change-data-server-logon-ui"; - // - UICommands["ChangeEssbaseAliasFile"] = "change-essbase-alias-file"; - // - UICommands["ChangeFieldTypeUI"] = "change-field-type-ui"; - // - UICommands["ChangeTabColorSheet"] = "change-tab-color-sheet"; - // - UICommands["CheckForProductUpdates"] = "check-for-product-updates"; - // - UICommands["ClearDashboardUI"] = "clear-dashboard-ui"; - // - UICommands["ClearSheetUI"] = "clear-sheet-ui"; - // - UICommands["ClearStoryUI"] = "clear-story-ui"; - // - UICommands["ClearVizUI"] = "clear-viz-ui"; - // - UICommands["CloseCalculationUI"] = "close-calculation-ui"; - // - UICommands["CloseDataSourceUI"] = "close-datasource-ui"; - // - UICommands["CloseWorkbook"] = "close-workbook"; - // - UICommands["ColorLegendEditUI"] = "color-legend-edit-ui"; - // - UICommands["CommitPillEditUI"] = "commit-pill-edit-ui"; - // - UICommands["ConnectDataSourceUI"] = "connect-datasource-ui"; - // - UICommands["ConnectRepromptUI"] = "connect-reprompt-ui"; - // - UICommands["ConnectVariablePromptUI"] = "connect-variable-prompt-ui"; - // - UICommands["ConnectVariablePromptMatchingUI"] = "connect-variable-prompt-matching-ui"; - // - UICommands["ConnectionAddNewCustomSQLUI"] = "connection-add-new-custom-sql-ui"; - // - UICommands["ConnectionAddNewTableUI"] = "connection-add-new-table-ui"; - // - UICommands["ConnectionDataGridCopyUI"] = "connection-data-grid-copy-ui"; - // - UICommands["ConnectionEditCustomSQLUI"] = "connection-custom-sql-ui"; - // - UICommands["ConnectionEditExtractUI"] = "connection-extract-ui"; - // - UICommands["ConnectionEditDBVariablesUI"] = "connection-edit-db-variables-ui"; - // - UICommands["ConnectionEditConnectionUI"] = "connection-edit-connection-ui"; - // - UICommands["ConnectionFinalizeDataSourceUI"] = "connection-finalize-datasource-ui"; - // - UICommands["ConnectionFinalizeExtractStatesUI"] = "connection-finalize-extract-states-ui"; - // - UICommands["ConnectionGetTypeGroupPresModelUI"] = "connection-get-type-group-pres-model-ui"; - // - UICommands["ConnectionGetSavedDataSourcesPresModelUI"] = "connection-get-saved-ds-pres-model-ui"; - // - UICommands["ConnectionPartitioningFailureUI"] = "connection-partitioning-failure-ui"; - // - UICommands["ConnectionReplaceTableUI"] = "connection-replace-table-ui"; - // - UICommands["ConnectionSearchCatalogUI"] = "connection-search-catalog-ui"; - // - UICommands["ConnectionSearchCubeUI"] = "connection-search-cube-ui"; - // - UICommands["ConnectionSelectCatalogUI"] = "connection-select-catalog-ui"; - // - UICommands["ConnectionSelectCubeUI"] = "connection-select-cube-ui"; - // - UICommands["ConnectionSelectDatabaseUI"] = "connection-select-database-ui"; - // - UICommands["ConnectionSelectStandardConnectionUI"] = "connection-select-standard-connection-ui"; - // - UICommands["ConnectionSelectStoredProcedureUI"] = "connection-select-stored-procedure-ui"; - // - UICommands["ConnectionShowEditTableDialogUI"] = "connection-show-edit-table-ui"; - // - UICommands["ConnectionShowPivotDialogUI"] = "conneciton-show-pivot-dialog-ui"; - // - UICommands["ConnectionSortCatalogUI"] = "connection-sort-catalog-ui"; - // - UICommands["ConnectionSortCubeUI"] = "connection-sort-cube-ui"; - // - UICommands["ConnectionValidateCustomSQLUI"] = "connection-validate-custom-sql-ui"; - // - UICommands["ConnectToCloudFile"] = "connect-to-cloud-file"; - // - UICommands["ConnectToDataServerSourceUI"] = "connect-data-server-datasource-ui"; - // - UICommands["ConnectionConvertToSQLUI"] = "connection-convert-to-sql-ui"; - // - UICommands["ConnectionRenameConnectionUI"] = "connection-rename-connection-ui"; - // - UICommands["ExportUnderlyingDataToCSVUI"] = "export-to-csv-with-progress-ui"; - // - UICommands["ConnectODBCUI"] = "connect-odbc-ui"; - // - UICommands["CopyCrosstab"] = "copy-crosstab"; - // - UICommands["CopyData"] = "copy-data"; - // - UICommands["CopyDrillPathFieldsUI"] = "copy-drill-path-fields-ui"; - // - UICommands["CopyFieldsDefnUI"] = "copy-fields-defn-ui"; - // - UICommands["CopyImage"] = "copy-image"; - // - UICommands["CopyImageDashboard"] = "copy-image-dashboard"; - // - UICommands["CopyImageWorksheet"] = "copy-image-worksheet"; - // - UICommands["CopyImageStory"] = "copy-image-story"; - // - UICommands["CopyWorksheetFormatting"] = "copy-formatting"; - // - UICommands["CreateCalculatedSetUI"] = "create-calculated-set-ui"; - // - UICommands["CreateCalculationUI"] = "create-calculation-ui"; - // - UICommands["CreateCombinedFieldUI"] = "create-combined-field-ui"; - // - UICommands["CreateConnectionUI"] = "create-connection-ui"; - // - UICommands["CreateDateBinUI"] = "create-Date-bin-ui"; - // - UICommands["CreateGroupSelectionUI"] = "create-group-selection-ui"; - // - UICommands["CreateGroupUI"] = "create-group-ui"; - // - UICommands["CreateIdentitySet"] = "create-user-filter"; - // - UICommands["CreateLeafConnectionUI"] = "create-leaf-connection-ui"; - // - UICommands["CreateNumericBinsUI"] = "create-numeric-bins-ui"; - // - UICommands["CreateSetUI"] = "create-set-ui"; - // - UICommands["CustomDateAggregationUI"] = "custom-date-aggregation-ui"; - // - UICommands["CutDrillPathFieldsUI"] = "cut-drill-path-fields-ui"; - // - UICommands["CutFieldsDefnUI"] = "cut-fields-defn-ui"; - // - UICommands["DeactivateDashboard"] = "deactivate-dashboard"; - // - UICommands["DeleteCookies"] = "delete-cookies"; - // - UICommands["DeleteFieldsUI"] = "delete-fields-ui"; - // - UICommands["DeleteSheetUI"] = "delete-sheet-ui"; - // - UICommands["DescribeAdhocClusterUI"] = "describe-adhoc-cluster-ui"; - // - UICommands["DescribeDrillPathUI"] = "describe-drillpath-ui"; - // - UICommands["DescribeFieldUI"] = "describe-field-ui"; - // - UICommands["DescribeForecastUI"] = "describe-forecast-ui"; - // - UICommands["DescribeSchemaDrillPathUI"] = "describe-schema-drillpath-ui"; - // - UICommands["DescribeTrendLine"] = "describe-trend-line"; - // - UICommands["DescribeTrendModel"] = "describe-trend-model"; - // - UICommands["OpenDiscoverPaneLinks"] = "open-discover-pane-links"; - // - UICommands["DismissGoToWorksheetTooltipUI"] = "dismiss-go-to-worksheet-tooltip-ui"; - // - UICommands["DownloadCopyDataSource"] = "download-copy-data-source"; - // - UICommands["DrilldownUI"] = "drilldown-ui"; - // - UICommands["DropSchemaSelOnShelfUI"] = "drop-schema-sel-on-shelf-ui"; - // - UICommands["DropUI"] = "drop-ui"; - // - UICommands["DuplicateDataSourceUI"] = "duplicate-datasource-ui"; - // - UICommands["DuplicateSheetAsCrosstab"] = "duplicate-sheet-as-crosstab"; - // - UICommands["DuplicateSheetOrCrosstabUI"] = "duplicate-sheet-or-crosstab-ui"; - // - UICommands["DuplicateSheetUI"] = "duplicate-sheet-ui"; - // - UICommands["EditAliasesUI"] = "edit-aliases-ui"; - // - UICommands["EditAnnotation"] = "edit-annotation"; - // - UICommands["EditAxisUI"] = "edit-axis-ui"; - // - UICommands["EditCalculatedSetUI"] = "edit-calculated-set-ui"; - // - UICommands["EditCalculationUI"] = "edit-calculation-ui"; - // - UICommands["EditCaptionUI"] = "edit-caption"; - // - UICommands["EditCombinedFieldUI"] = "edit-combined-field"; - // - UICommands["EditCopyFieldUI"] = "edit-copy-field-ui"; - // - UICommands["EditDataSourceUI"] = "edit-datasource-ui"; - // - UICommands["EditDataSourceFieldAliases"] = "edit-datasource-field-aliases"; - // - UICommands["EditDataSourceFiltersUI"] = "edit-datasource-filters-ui"; - // - UICommands["EditDataSourceSitePathsUI"] = "edit-datasource-site-paths-ui"; - // - UICommands["EditDateBinUI"] = "edit-date-bin-ui"; - // - UICommands["EditDefaultSortUI"] = "edit-default-sort-ui"; - // - UICommands["EditDropLinesUI"] = "edit-drop-lines-ui"; - // - UICommands["EditDropFieldUI"] = "edit-drop-field-ui"; - // - UICommands["EditDataSourceRelationshipsUI"] = "edit-datasource-relationships-ui"; - // - UICommands["EditEnumeratedSetUI"] = "edit-enumerated-set"; - // - UICommands["EditFilterQuickFilter"] = "edit-filter-quick-filter"; - // - UICommands["EditFilterUI"] = "edit-filter-ui"; - // - UICommands["EditForecastUI"] = "edit-forecast-ui"; - // - UICommands["EditGroupUI"] = "edit-group-ui"; - // - UICommands["EditGroupValue"] = "edit-group-value"; - // - UICommands["EditGroupValueLabel"] = "edit-group-value-label"; - // - UICommands["EditLegendGroupValueUI"] = "edit-group-value-legend"; - // - UICommands["EditImageUI"] = "edit-image-ui"; - // - UICommands["EditLegendMemberAliasUI"] = "edit-legend-member-alias-ui"; - // - UICommands["EditLegendTitleUI"] = "edit-legend-title-ui"; - // - UICommands["EditMarkColorUI"] = "edit-mark-color-ui"; - // - UICommands["EditMarkShapeUI"] = "edit-mark-shape-ui"; - // - UICommands["EditMemberAlias"] = "edit-member-alias"; - // - UICommands["EditMemberAliasLabel"] = "edit-member-alias-label"; - // - UICommands["EditPageTitleUI"] = "edit-page-title-ui"; - // - UICommands["EditParameterCtrlTitle"] = "edit-param-control-title"; - // - UICommands["EditPdfPageSelectionUI"] = "edit-pdf-page-selection-ui"; - // - UICommands["EditPrimaryAliasesUI"] = "edit-primary-aliases-ui"; - // - UICommands["EditReferenceLine"] = "edit-reference-line"; - // - UICommands["EditSchemaCalculationUI"] = "edit-schema-calculation-ui"; - // - UICommands["EditSchemaCalculationRangeUI"] = "edit-schema-calculation-range-ui"; - // - UICommands["EditSchemaCaptionUI"] = "edit-schema-caption-ui"; - // - UICommands["EditSchemaFieldAliasUI"] = "edit-schema-field-alias-ui"; - // - UICommands["ResetSchemaCaptionUI"] = "reset-schema-field-alias-ui"; - // - UICommands["ResetMultipleSchemaCaptionsUI"] = "reset-multiple-schema-field-alias-ui"; - // - UICommands["EditSchemaNumericBinsUI"] = "edit-schema-numeric-bins-ui"; - // - UICommands["EditSetUI"] = "edit-set-ui"; - // - UICommands["EditTitleQuickFilter"] = "edit-title-quick-filter"; - // - UICommands["EditTitleUI"] = "edit-title"; - // - UICommands["EditTooltipUI"] = "edit-tooltip"; - // - UICommands["EditTrendLinesUI"] = "edit-trend-lines-ui"; - // - UICommands["EditUserDescriptionUI"] = "edit-user-description-ui"; - // - UICommands["EditWMSMapTileServer"] = "edit-wms-map-tile-server"; - // - UICommands["EditZoneParam"] = "edit-zone-param"; - // - UICommands["EditZoneUrl"] = "edit-zone-url"; - // - UICommands["EstablishConnectionUI"] = "establish-connection-ui"; - // - UICommands["EstablishTableauServerConnectionUI"] = "establish-tableau-server-connection-ui"; - // - UICommands["ExecuteUIAutomationButton"] = "execute-ui-button-action"; - // - UICommands["ExecuteUIAutomationComboBox"] = "execute-ui-combo-box-action"; - // - UICommands["ExecuteUIAutomationGenericWidget"] = "execute-ui-generic-widget-action"; - // - UICommands["ExecuteUIAutomationLabel"] = "execute-ui-label-action"; - // - UICommands["ExecuteUIAutomationMenu"] = "execute-ui-menu-action"; - // - UICommands["ExecuteUIAutomationItemView"] = "execute-ui-item-view-action"; - // - UICommands["ExecuteUIAutomationTextBox"] = "execute-ui-text-box-action"; - // - UICommands["ExecuteUIAutomationToggleButton"] = "execute-ui-toggle-button-action"; - // - UICommands["ExecuteUIAutomationSlider"] = "execute-ui-slider-action"; - // - UICommands["ExecuteUIAutomationWindow"] = "execute-ui-window-action"; - // - UICommands["ExecuteUIAutomationWebView"] = "execute-ui-web-view-action"; - // - UICommands["ExecuteUIAutomationTab"] = "execute-ui-tab-action"; - // - UICommands["ExecuteUIAutomationTextBrowser"] = "execute-ui-text-browser-action"; - // - UICommands["ExitApplication"] = "exit-application"; - // - UICommands["ExportData"] = "export-data"; - // - UICommands["ExportDataSourceUI"] = "export-datasource-ui"; - // - UICommands["ExportPackagedWorkbook"] = "export-packaged"; - // - UICommands["ExportWorkbookSheetsUI"] = "export-workbook-sheets-ui"; - // - UICommands["ExtSvcConfigUI"] = "ext-svc-config-ui"; - // - UICommands["ExtractHistory"] = "extract-history"; - // - UICommands["ExtractPropertiesUI"] = "extract-properties-ui"; - // - UICommands["ExtractUI"] = "extract-ui"; - // - UICommands["FilterFieldLabelUI"] = "filter-field-label-ui"; - // - UICommands["FormatAnnotation"] = "format-annotation"; - // - UICommands["FormatAxisUI"] = "format-axis-ui"; - // - UICommands["FormatCaptionTitleUI"] = "format-caption-title"; - // - UICommands["FormatField"] = "format-pane"; - // - UICommands["FormatFieldLabelUI"] = "format-field-label-ui"; - // - UICommands["FormatLabel"] = "format-label"; - // - UICommands["FormatLegendsUI"] = "format-legends-ui"; - // - UICommands["FormatReferenceLine"] = "format-reference-line"; - // - UICommands["FormatUI"] = "format-ui"; - // - UICommands["FullScreen"] = "fullscreen"; - // - UICommands["GetDashboardSidePaneMode"] = "get-dashboard-sidepane-mode"; - // - UICommands["GetDebuggingInfo"] = "get-debugging-info"; - // - UICommands["GetIconPathForEncodingType"] = "get-icon-path-for-encoding-type"; - // - UICommands["GetIconPathForPrimitiveType"] = "get-icon-path-for-primitive-type"; - // - UICommands["GetTableOptionsPresModel"] = "get-table-options-pres-model"; - // - UICommands["GetWindowNameUI"] = "get-window-name"; - // - UICommands["GetWorksheetSidePaneMode"] = "get-worksheet-sidepane-mode"; - // - UICommands["GetHiddenSheets"] = "get-hidden-sheets"; - // - UICommands["GetOpenPaneMRUs"] = "get-open-pane-mrus"; - // - UICommands["GetOpenPaneSampleWorkbooks"] = "get-open-pane-sample-workbooks"; - // - UICommands["GetRetargetDataSourcePresModelUI"] = "get-retarget-datasource-pres-model-ui"; - // - UICommands["GetSchemaViewerPresModel"] = "get-schema-viewer-pres-model"; - // - UICommands["GetSelectedSheets"] = "get-selected-sheets"; - // - UICommands["GetSheetSorterThumbnail"] = "get-sheet-sorter-thumbnail"; - // - UICommands["GetSheetTabUIThumbnail"] = "get-sheet-tab-ui-thumbnail"; - // - UICommands["GetSheetTabUIText"] = "get-sheet-tab-ui-text"; - // - UICommands["GetVisibleTreeItems"] = "get-visible-tree-items"; - // - UICommands["GotoSheetRange"] = "goto"; - // - UICommands["GotoURL"] = "goto-url"; - // - UICommands["HideCaptionUI"] = "hide-caption"; - // - UICommands["HideFilmstripUI"] = "hide-filmstrip-ui"; - // - UICommands["HideTitleUI"] = "hide-title"; - // - UICommands["HideZoneUI"] = "hide-zone-ui"; - // - UICommands["HideAllSheetsUI"] = "hide-all-sheets-ui"; - // - UICommands["UnhideAllSheetsUI"] = "unhide-all-sheets-ui"; - // - UICommands["ImportLocalDataUI"] = "import-local-data-ui"; - // - UICommands["ImportMapSource"] = "import-map-source"; - // - UICommands["ImportMapSourceUI"] = "import-map-source-ui"; - // - UICommands["ImportWorkbookUI"] = "import-workbook-ui"; - // - UICommands["LoadDefaultFormattingUI"] = "load-formatting-ui"; - // - UICommands["LocateFieldUI"] = "locate-field-ui"; - // - UICommands["LogMemoryUsage"] = "log-memory-usage"; - // - UICommands["ManageLicensing"] = "manage-licensing"; - // - UICommands["ManageMapbox"] = "manage-mapbox"; - // - UICommands["ManagePublicWorkbooks"] = "manage-public"; - // - UICommands["ManageMapServices"] = "manage-map-services"; - // - UICommands["MapLayersUI"] = "map-layers-ui"; - // - UICommands["ManageWMS"] = "manage-wms"; - // - UICommands["UpgradeDataSourcesUI"] = "upgrade-datasources-ui"; - // - UICommands["UpgradeDataSourceUI"] = "upgrade-datasource-ui"; - // - UICommands["MoveRepository"] = "move-repository"; - // - UICommands["NewSchemaDrillPathUI"] = "new-schema-drill-path-ui"; - // - UICommands["NewUIDashboard"] = "new-dashboard-ui"; - // - UICommands["NewUIWorksheet"] = "new-worksheet-ui"; - // - UICommands["NewUIStoryboard"] = "new-storyboard-ui"; - // - UICommands["NewWorkbook"] = "new-workbook"; - // - UICommands["NextSheet"] = "next-sheet"; - // - UICommands["NonRangedEditReferenceLine"] = "non-ranged-edit-reference-line"; - // - UICommands["OpenBookmark"] = "open-bookmark"; - // - UICommands["OpenFromWorkgroup"] = "open-workbook-from-workgroup"; - // - UICommands["OpenMapSource"] = "open-map-source"; - // - UICommands["OpenMapSourceUI"] = "open-map-source-ui"; - // - UICommands["OpenSampleWorkbook"] = "open-sample-workbook"; - // - UICommands["OpenWorkbook"] = "open-workbook"; - // - UICommands["OpenRecentWorkbook"] = "open-recent-workbook"; - // - UICommands["OpenOtherFiles"] = "open-other-files"; - // - UICommands["OptimizeExtractUI"] = "optimize-extract-ui"; - // - UICommands["PageSetup"] = "page-setup"; - // - UICommands["Paste"] = "paste"; - // - UICommands["PasteFieldsDefnUI"] = "paste-fields-defn-ui"; - // - UICommands["PasteWorksheetFormatting"] = "paste-formatting"; - // - UICommands["PDFExport"] = "export-pdf"; - // - UICommands["PerspectivesUI"] = "perspectives-ui"; - // - UICommands["PresentationMode"] = "presentation-mode"; - // - UICommands["Print"] = "print"; - // - UICommands["PromptScript"] = "prompt-command"; - // - UICommands["PropertiesDataSourceUI"] = "properties-datasource-ui"; - // - UICommands["PublishDatasourceToWorkgroup"] = "publish-datasource-to-workgroup"; - // - UICommands["PublishDatasourceToWorkgroupFromData"] = "publish-datasource-to-workgroup-from-data"; - // - UICommands["PublishDatasourceToWorkgroupRange"] = "publish-datasource-to-workgroup-range"; - // - UICommands["PublishWorkbookToWorkgroup"] = "publish-workbook-to-workgroup"; - // - UICommands["PublishDatasourceToWorkgroupFromWorkbookData"] = "publish-datasource-to-workgroup-from-workbook-data"; - // - UICommands["PromptForDataSourceFileUI"] = "prompt-for-datasource-file-ui"; - // - UICommands["PromptUnknownWDCUrlUI"] = "prompt-unknown-wdc-url-ui"; - // - UICommands["QueryDataSourceUI"] = "query-datasource-ui"; - // - UICommands["QuickFilterFieldLabelUI"] = "quick-filter-field-label-ui"; - // - UICommands["QuickTableCalcUI"] = "quick-table-calc-ui"; - // - UICommands["ReconnectMapSourceUI"] = "reconnect-map-source-ui"; - // - UICommands["RecordPerformance"] = "record-perf"; - // - UICommands["RefreshAllExtractsUI"] = "refresh-all-extracts-ui"; - // - UICommands["RefreshAllThumbnailsUI"] = "refresh-all-thumbnails"; - // - UICommands["RefreshAutoExtractUI"] = "refresh-auto-extract-ui"; - // - UICommands["RefreshDataSourceUI"] = "refresh-datasource-ui"; - // - UICommands["RefreshExtractUI"] = "refresh-extract-ui"; - // - UICommands["RefreshFromSourceUI"] = "refresh-from-source-ui"; - // - UICommands["RefreshLocalDataUI"] = "refresh-local-data-ui"; - // - UICommands["RefreshThumbnailUI"] = "refresh-thumbnail"; - // - UICommands["ReleaseMemory"] = "release-memory"; - // - UICommands["RemoveAnnotation"] = "remove-annotation"; - // - UICommands["RemoveExtractUI"] = "remove-extract-ui"; - // - UICommands["RemoveMRUItem"] = "remove-mru"; - // - UICommands["RemoveSavedDataSourceUI"] = "remove-saved-datasource"; - // - UICommands["RemoveSheetFromDashboardUI"] = "remove-sheet-from-dashboard-ui"; - // - UICommands["RemoveTableUI"] = "remove-table-ui"; - // - UICommands["RenameDataSourceUI"] = "rename-datasource-ui"; - // - UICommands["RenameSchemaFieldFolderUI"] = "rename-field-folder-ui"; - // - UICommands["RenameSchemaDrillPathUI"] = "rename-schema-drillpath-ui"; - // - UICommands["RenameSheetUI"] = "rename-sheet-ui"; - // - UICommands["ReorderSheetsUI"] = "reorder-sheets-ui"; - // - UICommands["ReplaceDataSourceWithDataServerDataSourceUI"] = "replace-datasource-with-data-server-datasource-ui"; - // - UICommands["ReplaceFieldUI"] = "replace-field-ui"; - // - UICommands["ResetCaptionUI"] = "reset-caption-ui"; - // - UICommands["ResetCards"] = "reset-cards"; - // - UICommands["ResetLocalDataUI"] = "remove-local-data-ui"; - // - UICommands["ResetMessages"] = "reset-messages"; - // - UICommands["StartOnlineSyncClient"] = "start-online-sync-client"; - // - UICommands["ResetTitleUI"] = "reset-title-ui"; - // - UICommands["ResetToDefaultsMapCard"] = "reset-map-to-defaults"; - // - UICommands["ResetWorkbook"] = "revert-workbook-ui"; - // - UICommands["RetargetDataSource"] = "retarget-datasource"; - // - UICommands["RetargetDataSourceUI"] = "retarget-datasource-ui"; - // - UICommands["SaveAsWorkbook"] = "save-as-workbook"; - // - UICommands["SaveBookmark"] = "save-bookmark"; - // - UICommands["SaveDebuggingWorkbook"] = "save-debugging-workbook"; - // - UICommands["SaveDefaultFormattingUI"] = "save-formatting-ui"; - // - UICommands["SaveWorkbook"] = "save-workbook"; - // - UICommands["SchemaDefaultMemberUI"] = "schema-default-member-ui"; - // - UICommands["ScrollSheet"] = "scroll-sheet"; - // - UICommands["SetAccountsDimension"] = "set-accounts-dimension"; - // - UICommands["SetActiveConnectionUI"] = "set-active-connection-ui"; - // - UICommands["SetAnalyticsDropTargetVisibility"] = "set-analytics-drop-target-visibility"; - // - UICommands["SetDashboardSidePaneMode"] = "set-dashboard-sidepane-mode"; - // - UICommands["SetDefaultDateFormatUI"] = "set-default-date-format-ui"; - // - UICommands["SetDefaultLocationUI"] = "set-default-location-ui"; - // - UICommands["SetDefaultMapSourceUI"] = "set-default-mapsource-ui"; - // - UICommands["SetDefaultTextFormatUI"] = "set-default-text-format-ui"; - // - UICommands["SetDefaultUtilityMember"] = "set-default-utility-member"; - // - UICommands["SetFreeFormDashboardUI"] = "set-free-form-dashboard-ui"; - // - UICommands["SetFilterSharedUI"] = "set-filter-shared-ui"; - // - UICommands["SetKey"] = "set-key"; - // - UICommands["SetProductAutoUpdate"] = "set-auto-update"; - // - UICommands["SetQueryFailure"] = "set-query-failure"; - // - UICommands["SetRendering"] = "set-rendering"; - // - UICommands["SetRuntimeImmediateMode"] = "set-runtime-immediate-mode"; - // - UICommands["SetUILanguage"] = "set-ui-language"; - // - UICommands["SetWorkbookLocaleUI"] = "set-workbook-locale-ui"; - // - UICommands["SetWorksheetSidePaneMode"] = "set-worksheet-sidepane-mode"; - // - UICommands["SetZoneFixedSizeUI"] = "set-zone-fixed-size-ui"; - // - UICommands["SetsInOutUI"] = "show-in-out-sets"; - // - UICommands["ShapeLegendEditUI"] = "shape-legend-edit-ui"; - // - UICommands["ShowCloudFileOAuthPromptAndSelectionUI"] = "show-cloudfile-oauth-prompt-and-selection-ui"; - // - UICommands["ShowConnectionAuthUI"] = "show-connection-auth-ui"; - // - UICommands["ShowConnectionAuthAndEstablishConnectionUI"] = "show-connection-auth-and-establish-connection-ui"; - // - UICommands["ShowConnectTab"] = "show-connect-tab"; - // - UICommands["ShowCustomSplitDialogUI"] = "show-custom-split-dialog-ui"; - // - UICommands["ShowDocument"] = "document"; - // - UICommands["ShowFeatureFlagDialog"] = "show-feature-flag-dialog"; - // - UICommands["ShowFieldFormatUI"] = "show-field-format-ui"; - // - UICommands["ShowFieldInSchemaUI"] = "show-field-in-schema"; - // - UICommands["ShowFilmstripUI"] = "show-filmstrip-ui"; - // - UICommands["ShowGoogleSheetsSelectionUI"] = "show-google-sheets-selection-ui"; - // - UICommands["ShowHelp"] = "show-help"; - // - UICommands["ShowHideDashboardSheetUI"] = "show-hide-dashboard-sheet-ui"; - // - UICommands["ShowHideStoryboardSheetUI"] = "show-hide-storyboard-sheet-ui"; - // - UICommands["ShowGraphicsAPI"] = "show-graphics-api-command"; - // - UICommands["ShowMapOptionsDialog"] = "show-map-options-dialog"; - // - UICommands["ShowMeasuresUI"] = "show-measures-ui"; - // - UICommands["ShowMeCycleUI"] = "show-me-cycle-ui"; - // - UICommands["ShowMeHideUI"] = "show-me-hide-ui"; - // - UICommands["ShowMembersUI"] = "show-members-ui"; - // - UICommands["ShowMeToggleUI"] = "show-me-toggle-ui"; - // - UICommands["ShowOAuthPromptUI"] = "show-oauth-prompt-ui"; - // - UICommands["ShowParameterControl"] = "show-parameter-control"; - // - UICommands["ShowPublicStatusDialog"] = "show-public-status-dialog"; - // - UICommands["ShowPublicQuotaExceededDialog"] = "show-public-quota-exceeded-dialog"; - // - UICommands["ShowPublishDatasourceToWorkgroupDialog"] = "show-publish-datasource-to-workgroup-dialog"; - // - UICommands["ShowQueryBandingAndInitialSQLDialogUI"] = "show-query-banding-and-initial-sql-dialog-ui"; - // - UICommands["ShowQuickFilter"] = "show-quickfilter"; - // - UICommands["ShowQuickFilterUI"] = "show-quickfilter-ui"; - // - UICommands["ShowRuntimeIndicator"] = "show-runtime-indicator"; - // - UICommands["ShowSheetSorter"] = "sheet-sorter"; - // - UICommands["ShowTableOptionsDialog"] = "show-table-options-dialog"; - // - UICommands["ShowWebDataConnectorUI"] = "show-web-data-connector-ui"; - // - UICommands["ShowWidgetSandboxUI"] = "show-widget-sandbox-ui"; - // - UICommands["SizeLegendEditUI"] = "size-legend-edit-ui"; - // - UICommands["SleepUI"] = "sleep-ui"; - // - UICommands["SortAscendingFieldLabelUI"] = "sort-ascending-field-label-ui"; - // - UICommands["SortDescendingFieldLabelUI"] = "sort-descending-field-label-ui"; - // - UICommands["SortFieldLabelUI"] = "sort-field-label-ui"; - // - UICommands["SortUI"] = "sort-ui"; - // - UICommands["SplitFieldUI"] = "split-field-ui"; - // - UICommands["StackMarksUI"] = "stack-marks-ui"; - // - UICommands["StartFileConnectionUI"] = "start-file-connection-ui"; - // - UICommands["StartPillEditUI"] = "start-pill-edit-ui"; - // - UICommands["SwitchToConnectTab"] = "switch-to-connect-tab"; - // - UICommands["SwitchToDocument"] = "switch-to-document"; - // - UICommands["SwitchToSheetSorter"] = "switch-to-sheet-sorter"; - // - UICommands["TableCalcAddressUI"] = "table-calc-address-ui"; - // - UICommands["TableCalcIgnoreUI"] = "table-calc-ignore-ui"; - // - UICommands["TableCalcOrderingUI"] = "table-calc-ordering-ui"; - // - UICommands["TableCalcUI"] = "table-calc-ui"; - // - UICommands["ToggleConnectPaneUI"] = "toggle-connect-pane"; - // - UICommands["ToggleFilmstripUI"] = "toggle-filmstrip-ui"; - // - UICommands["ToggleINDJoinSemanticsUI"] = "toggle-ind-join-semantics-ui"; - // - UICommands["TogglePinMRUItem"] = "toggle-pin-mru"; - // - UICommands["ToggleReferentialIntegrityUI"] = "toggle-referential-integrity-ui"; - // - UICommands["ToggleStartPageUI"] = "toggle-start-page"; - // - UICommands["TrackMemory"] = "track-memory"; - // - UICommands["TrendLinesFlagUI"] = "trend-lines-ui"; - // - UICommands["UpdateDefaultsMapCard"] = "update-map-defaults"; - // - UICommands["UpgradeExtractsUI"] = "upgrade-extracts-ui"; - // - UICommands["UpgradeExtractUI"] = "upgrade-extract-ui"; - // - UICommands["UseExtractUI"] = "use-extract-ui"; - // - UICommands["UseMemory"] = "use-memory"; - // - UICommands["UtilityDimensionUI"] = "utility-dimension-ui"; - // - UICommands["ValidateExtractCredentialsUI"] = "validate-extract-credentials-ui"; - // - UICommands["ViewCard"] = "view-card"; - // - UICommands["ViewTitleCard"] = "view-title-card"; - // - UICommands["ViewSummaryCard"] = "view-summary-card"; - // - UICommands["ViewCaptionCard"] = "view-caption-card"; - // - UICommands["ViewColumnsShelf"] = "view-columns-shelf"; - // - UICommands["ViewRowsShelf"] = "view-rows-shelf"; - // - UICommands["ViewPagesShelf"] = "view-pages-shelf"; - // - UICommands["ViewFiltersShelf"] = "view-filters-shelf"; - // - UICommands["ViewMeasuresShelf"] = "view-measures-shelf"; - // - UICommands["ViewMarksShelf"] = "view-marks-shelf"; - // - UICommands["ViewCurrentPageCard"] = "view-current-page-card"; - // - UICommands["ViewData"] = "view-data"; - // - UICommands["ViewSQLDataUI"] = "view-sql-data-ui"; - // - UICommands["ViewDataSourceData"] = "view-datasource-data"; - // - UICommands["ViewLegend"] = "view-legend"; - // - UICommands["ViewSidePane"] = "view-side-pane"; - // - UICommands["ViewStatusBar"] = "view-statusbar"; - // - UICommands["ViewSummaryDetail"] = "view-summary-detail"; - // - UICommands["ViewTableData"] = "view-table-data"; - // - UICommands["ViewToolBar"] = "view-toolbar"; - // - UICommands["WebViewEnableJavascript"] = "webview-enable-javascript"; - // - UICommands["WebViewEnablePlugins"] = "webview-enable-plugins"; - // - UICommands["WebViewBlockPopups"] = "webview-block-popups"; - // - UICommands["WebViewEnableURLHoverActions"] = "webview-enable-url-hover-actions"; - // - UICommands["WorkgroupChangeDataserver"] = "workgroup-change-dataserver"; - // - UICommands["WorkgroupChangeServer"] = "workgroup-change-server"; - // - UICommands["WorkgroupChangeUser"] = "workgroup-change-user"; - // - UICommands["WorkgroupRemoveLastServer"] = "workgroup-remove-last-server"; - })(UICommands = exports.UICommands || (exports.UICommands = {})); - (function (DocCommands) { - // Gets the axis options . - DocCommands["GetAxisOptions"] = "get-axis-options"; - // Reset the axis options . - DocCommands["ResetAxisOptions"] = "reset-axis-options"; - // Show axis edit dialog - DocCommands["ShowEditAxisDialog"] = "show-edit-axis-dialog"; - // Sets the axis direction - DocCommands["SetAxisReversed"] = "set-axis-reversed"; - // Sets the axis scale type - DocCommands["SetAxisScaleType"] = "set-axis-scale-type"; - // Sets the main title of a quantitative axis - DocCommands["SetAxisTitle"] = "set-axis-title"; - // Sets the subtitle of a quantitative axis - DocCommands["SetAxisSubtitle"] = "set-axis-subtitle"; - // Sets whether we should use the automatic subtitle for a quantitative axis - DocCommands["SetAxisUseAutomaticSubtitle"] = "set-axis-use-automatic-subtitle"; - // Sets the axis range type of a quantitative axis - DocCommands["SetAxisExtentStartType"] = "set-axis-extent-start-type"; - // Sets the axis range type of a quantitative axis - DocCommands["SetAxisExtentEndType"] = "set-axis-extent-end-type"; - // Sets the axis range type of a quantitative axis - DocCommands["SetBothAxisExtentsType"] = "set-both-axis-extents-type"; - // Sets whether or not to force-include zero on a quantitative axis - DocCommands["SetAxisIncludeZero"] = "set-axis-include-zero"; - // Sets new min/max range endings for axis - DocCommands["SetAxisRangeEnd"] = "set-axis-range-end"; - // Sets new min/max range endings for axis - DocCommands["SetAxisRangeStart"] = "set-axis-range-start"; - // Synchronize dual axes on a folded quantitative axis - DocCommands["SetAxisFoldState"] = "set-axis-fold-state"; - // Set the major tick mark state - DocCommands["SetMajorTickMarkState"] = "set-major-tick-mark-state"; - // Set the minor tick mark state - DocCommands["SetMinorTickMarkState"] = "set-minor-tick-mark-state"; - // Set the major tick mark origin - DocCommands["SetMajorTickMarkOrigin"] = "set-major-tick-mark-origin"; - // Set the minor tick mark origin - DocCommands["SetMinorTickMarkOrigin"] = "set-minor-tick-mark-origin"; - // Set the major tick mark spacing - DocCommands["SetMajorTickMarkSpacing"] = "set-major-tick-mark-spacing"; - // Set the minor tick mark spacing - DocCommands["SetMinorTickMarkSpacing"] = "set-minor-tick-mark-spacing"; - // Set the major tick mark units - DocCommands["SetMajorTickMarkUnits"] = "set-major-tick-mark-units"; - // Set the minor tick mark units - DocCommands["SetMinorTickMarkUnits"] = "set-minor-tick-mark-units"; - // - DocCommands["BoundingBoxPan"] = "bounding-box-pan"; - // - DocCommands["OnToggleAxisRanges"] = "on-toggle-axis-ranges"; - // - DocCommands["PanePan"] = "pane-pan"; - // - DocCommands["PaneZoom"] = "pane-zoom"; - // - DocCommands["PaneZoomFactor"] = "pane-zoom-factor"; - // - DocCommands["PaneZoomPan"] = "pane-zoom-pan"; - // - DocCommands["ReorderFoldedAxes"] = "reorder-folded-axes"; - // - DocCommands["ResetAxisRange"] = "reset-axis-range"; - // - DocCommands["SelectAxisTuples"] = "select-axis-tuples"; - // - DocCommands["SwapReferenceLineFields"] = "swap-reference-line-fields"; - // - DocCommands["SynchronizeAxis"] = "synchronize-axis"; - // - DocCommands["ToggleDualAxis"] = "toggle-dual-axis"; - // - DocCommands["ZoomLevel"] = "zoom-level"; - })(DocCommands = exports.DocCommands || (exports.DocCommands = {})); - //# sourceMappingURL=CommandIds.js.map - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Registry which contains mappings from an Api VerbId to a pres-layer command. - * This includes the parameters and return values of the command as well - * - * @export - * @class CommandMappingRegistry - */ - var CommandMappingRegistry = (function () { - /** - * Creates an instance of CommandMappingRegistry. - * @memberof CommandMappingRegistry - */ - function CommandMappingRegistry() { - this._commands = {}; - } - /** - * Adds a new command to the registry - * - * @param {CommandRegistration} command - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.addCommand = function (command) { - this._commands[command.apiVerbId] = command; - }; - /** - * Whether or not this registry contains a definition for this ApiVerbId - * - * @param {ApiVerbId} apiVerbId - * @returns {boolean} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.hasCommand = function (apiVerbId) { - if (!this._commands.hasOwnProperty(apiVerbId)) { - return false; - } - if (!this._commands[apiVerbId]) { - return false; - } - return true; - }; - /** - * Gets the command registration for this command id or throws if it doesn't exist - * - * @param {ApiVerbId} apiVerbId - * @returns {CommandRegistration} - * @memberof CommandMappingRegistry - */ - CommandMappingRegistry.prototype.getCommand = function (apiVerbId) { - if (!this.hasCommand(apiVerbId)) { - throw new Error('Unknown ApiVerb: ' + apiVerbId); - } - return this._commands[apiVerbId]; - }; - return CommandMappingRegistry; - }()); - exports.CommandMappingRegistry = CommandMappingRegistry; - //# sourceMappingURL=CommandMappingRegistry.js.map - -/***/ }, -/* 14 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - /** - * This is an enum used only internally by the api-core project. - * This enum represents the difference namespaces available for commands. - */ - var CommandNamespace; - (function (CommandNamespace) { - CommandNamespace["TabDoc"] = "tabdoc"; - CommandNamespace["TabUI"] = "tabui"; - })(CommandNamespace = exports.CommandNamespace || (exports.CommandNamespace = {})); - /** - * Represents an input or output paramter for a command. - * - * @export - * @class CommandParameter - */ - var CommandParameter = (function () { - /** - * Creates an instance of CommandParameter. - * @param {ApiParameterId} apiId - * @param {PresLayerParameterId} presLayerId - * @param {boolean} [isOptional] - * @memberof CommandParameter - */ - function CommandParameter(_apiId, _presLayerId, _isOptional) { - this._apiId = _apiId; - this._presLayerId = _presLayerId; - this._isOptional = _isOptional; - } - Object.defineProperty(CommandParameter.prototype, "apiId", { - /** - * The Id of the Api Parameter - * - * @readonly - * @type {ApiParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "presLayerId", { - /** - * The Id of the Pres Layer Parameter - * - * @readonly - * @type {PresLayerParameterId} - * @memberof CommandParameter - */ - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandParameter.prototype, "isOptional", { - /** - * Whether or not this is an optional parameter - * - * @readonly - * @type {boolean} - * @memberof CommandParameter - */ - get: function () { - return !!this._isOptional; - }, - enumerable: true, - configurable: true - }); - return CommandParameter; - }()); - exports.CommandParameter = CommandParameter; - /** - * Represents a the complete mapping of an ApiCommand to its corresponding pres-layer command - * and the conversion of the output value as well - * - * @export - * @class CommandRegistration - */ - var CommandRegistration = (function () { - function CommandRegistration(_apiVerbId, _commandId, _inputParameters, _outputParameter, _namespace) { - this._apiVerbId = _apiVerbId; - this._commandId = _commandId; - this._inputParameters = _inputParameters; - this._outputParameter = _outputParameter; - this._namespace = _namespace; - } - Object.defineProperty(CommandRegistration.prototype, "apiVerbId", { - get: function () { - return this._apiVerbId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "commandId", { - get: function () { - return this._commandId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "inputs", { - get: function () { - return this._inputParameters || new Array(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "output", { - get: function () { - return this._outputParameter; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "namespace", { - get: function () { - return this._namespace || CommandNamespace.TabDoc; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CommandRegistration.prototype, "needsAddInLocator", { - /** - * Whether or not this command requires an add-in locator to be injected into it - * - * @readonly - * @type {boolean} - * @memberof CommandRegistration - */ - get: function () { - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var input = _a[_i]; - if (input.apiId === api_internal_contract_1.ParameterId.AddInLocator) { - return true; - } - } - return false; - }, - enumerable: true, - configurable: true - }); - /** - * Creates a dictionary of pres-layer parameters from the input dictionary - * of api parameters. - * - * @param {ExecuteParameters} parameters - The parameters to convert - * @param {ApiToPresLayerMappingRegistry} apiToPresLayer - mapping to determine the conversion - * @returns {{ [paramId: string]: object; }} - parameters to send to the pres-layer - * @memberof CommandRegistration - */ - CommandRegistration.prototype.createParams = function (parameters, apiToPresLayer) { - var result = {}; - for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) { - var inputParam = _a[_i]; - // First make sure the parameter is there or that it's optional - if (!parameters.hasOwnProperty(inputParam.apiId)) { - if (inputParam.isOptional) { - continue; - } - else { - throw new Error('Missing parameter for command: ' + inputParam.apiId); - } - } - // Find the conversion function for this parameter - var conversionFn = apiToPresLayer.get(inputParam.apiId, inputParam.presLayerId); - // Convert the pres model and insert it into our results object - result[inputParam.presLayerId] = conversionFn(parameters[inputParam.apiId]); - } - return result; - }; - /** - * Processes the result received back after executing a pres-layer command - * - * @param {{ [docParamId: string]: object; }} resultParameters - * @param {PresLayerToApiMappingRegistry} presLayerToApi - * @returns {Model} - * @memberof CommandRegistration - */ - CommandRegistration.prototype.ProcessResult = function (resultParameters, presLayerToApi) { - // TODO: Add error handling - if (this.output === undefined) { - var noOutputModel = {}; - return noOutputModel; - } - if (!resultParameters || !resultParameters.hasOwnProperty(this.output.presLayerId)) { - // if the output result is marked as optional, we don't consider this an error situation and just return an empty model - if (this.output.isOptional) { - return {}; - } - throw new Error('Missing expected result parameter: ' + this.output.presLayerId); - } - var conversionFn = presLayerToApi.get(this.output.presLayerId, this.output.apiId); - return conversionFn(resultParameters[this.output.presLayerId]); - }; - return CommandRegistration; - }()); - exports.CommandRegistration = CommandRegistration; - //# sourceMappingURL=CommandRegistration.js.map - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Events_1 = __webpack_require__(16); - var PresLayerToApiConverter_1 = __webpack_require__(17); - /** - * Simple wrapper which holds a mapping to go from a pres-layer event to an API event - */ - var EventMappingRegistration = (function () { - function EventMappingRegistration(_presLayerId, _apiId, _converter) { - this._presLayerId = _presLayerId; - this._apiId = _apiId; - this._converter = _converter; - } - Object.defineProperty(EventMappingRegistration.prototype, "presLayerId", { - get: function () { - return this._presLayerId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "apiId", { - get: function () { - return this._apiId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(EventMappingRegistration.prototype, "converter", { - get: function () { - return this._converter; - }, - enumerable: true, - configurable: true - }); - return EventMappingRegistration; - }()); - exports.EventMappingRegistration = EventMappingRegistration; - var EventMappingRegistryFactory = (function () { - function EventMappingRegistryFactory() { - } - /** - * Creates and populates a new EventMappingRegistry for the specific version number requested - * - * @param {VersionNumber} versionNumber - * @returns {EventMappingRegistry} - */ - EventMappingRegistryFactory.createEventMappingRegistry = function (versionNumber) { - var registry = {}; - registry[Events_1.NotificationId.SelectionChanged] = new EventMappingRegistration(Events_1.NotificationId.SelectionChanged, api_internal_contract_1.NotificationId.SelectedMarksChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId); - registry[Events_1.NotificationId.ParameterChanged] = new EventMappingRegistration(Events_1.NotificationId.ParameterChanged, api_internal_contract_1.NotificationId.ParameterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFieldCaptionPair); - registry[Events_1.NotificationId.FilterChanged] = new EventMappingRegistration(Events_1.NotificationId.FilterChanged, api_internal_contract_1.NotificationId.FilterChanged, PresLayerToApiConverter_1.PresLayerToApiConverter.convertFilterEvent); - return registry; - }; - return EventMappingRegistryFactory; - }()); - exports.EventMappingRegistryFactory = EventMappingRegistryFactory; - //# sourceMappingURL=EventMappingRegistryFactory.js.map - -/***/ }, -/* 16 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/events-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-events.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // Events you can register to receive presentation models - var NotificationId; - (function (NotificationId) { - // Triggered when aliases are to be edited. Used to launch a dialog. - NotificationId["EditAliasesDialogNotification"] = "edit-aliases-dialog-notification-event"; - // for the calculation dialog - NotificationId["CalculationDialog"] = "calculation-dialog-event"; - // update for an adhoc calc in a type in pill - NotificationId["TypeInPill"] = "type-in-pill-event"; - // results of a validation command - NotificationId["CommandValidation"] = "command-validation-event"; - // event for the groups dialog - NotificationId["UpdateCategoricalBinEditDialog"] = "update-categorical-bin-edit-dialog-event"; - // for the categorical color dialog - NotificationId["CategoricalColor"] = "categorical-color-event"; - // update the web categorical color dialog - NotificationId["WebCategoricalColorDialog"] = "web-categorical-color-dialog-event"; - // user invoked action which requires a Data Alert Dialog - NotificationId["DataAlertDialog"] = "data-alert-dialog-event"; - // event to select field(s) in the data schema - NotificationId["DataSchemaSelection"] = "data-schema-selection-event"; - // event for when the data source being edited is updated - NotificationId["UpdateDataPreparation"] = "update-data-preparation-event"; - // event for when the data source data is updated - NotificationId["UpdateDataSourceData"] = "update-data-source-data-event"; - // event for when a client should request new data source or data source data pres models - NotificationId["DataSourceUpdateNeeded"] = "data-source-update-needed-event"; - // event for getting the pres model to update file join table properties - NotificationId["TextFileProperties"] = "text-file-properties-event"; - // event for the detailed error dialog - NotificationId["UpdateDetailedErrorDialog"] = "update-detailed-error-dialog-event"; - // notify changes to the state of a filter's relational model - NotificationId["FilterRelationalStateChanged"] = "filter-relational-state-changed-event"; - // notify changes to the size/selection count of a relational domain - NotificationId["FilterRelationalDomainChanged"] = "filter-relational-domain-changed-event"; - // notify when filter cache was requested but not found - NotificationId["FilterCacheNotFound"] = "filter-cache-not-found-event"; - // Hierarchy Select model observable notification. - NotificationId["HierarchyNotification"] = "hierarchy-notification-event"; - // Hierarchy selection change notifications. - NotificationId["HierarchySelection"] = "hierarchy-selection-event"; - // event for the map options dialog - NotificationId["MapOptionsDialog"] = "map-options-dialog-event"; - // notify the Page UI(hide/show states, layout) needs to be updated - NotificationId["UpdatePageUINotification"] = "update-page-uinotification-event"; - // notify to the SceneView has been drawn. - NotificationId["SceneViewDrawnNotification"] = "scene-view-drawn-notification-event"; - // The AnimationControlChange event fires when the user clicks an animation playback button: forward, stop, slow, fast, etc. - NotificationId["AnimationControlChange"] = "animation-control-change-event"; - // notify the sheet has been renamed - NotificationId["RenameSheetNotification"] = "rename-sheet-notification-event"; - // update the web quantitative color dialog - NotificationId["WebQuantitativeColorDialog"] = "web-quantitative-color-dialog-event"; - // update the axis edit dialog - NotificationId["UpdateEditAxisDialog"] = "update-edit-axis-dialog-event"; - // event for the reference line dialog, which is only valid during web authoring - NotificationId["UpdateRefLineDialog"] = "update-ref-line-dialog-event"; - // event to trigger other reference line dialogs to close - NotificationId["RefLineDialogOpening"] = "ref-line-dialog-opening-event"; - // event for the close data source error dialog, which is only valid during web authoring - NotificationId["CloseDataSourceErrorDialog"] = "close-data-source-error-dialog-event"; - // update the web Save Datasource dialog - NotificationId["WebSaveDatasourceDialog"] = "web-save-datasource-dialog-event"; - // warning resulting from WarningMsg - NotificationId["WarningMessage"] = "warning-message-event"; - // event for the table calc dialog, on web, this is only valid during web authoring - NotificationId["TableCalcDialog"] = "table-calc-dialog-event"; - // user invoked action which requires Table Calc Dialog - NotificationId["TableCalcActivateDialog"] = "table-calc-activate-dialog-event"; - // event for the trend line dialog - NotificationId["UpdateTrendLineEditDialog"] = "update-trend-line-edit-dialog-event"; - // The table page cache has been refreshed; pages must be reloaded from the cache. - NotificationId["PageCacheRefresh"] = "page-cache-refresh-event"; - // The table page cache has expired and all resources have been released. - NotificationId["PageCacheExpired"] = "page-cache-expired-event"; - // All pages, identified by row/col, in the provided list have expired and should be reloaded. - NotificationId["PageCachePagesExpired"] = "page-cache-pages-expired-event"; - // All pages betweem the range (inclusive) in the provided list have expired and should be reloaded. - NotificationId["PageCachePageRangeExpired"] = "page-cache-page-range-expired-event"; - // Update for the rich text editor dialog - NotificationId["RichTextEditorDialog"] = "rich-text-editor-dialog-event"; - // Triggered when the user wants to reload an add-in instance. - NotificationId["ReloadAddIn"] = "reload-add-in-event"; - // Triggered when the selected marks have changed. - NotificationId["SelectionChanged"] = "selection-changed-event"; - // Triggered when the value of a parameter has changed. Emits the name and caption of the parameter - NotificationId["ParameterChanged"] = "parameter-changed-event"; - // Triggered when the filters have changed. - NotificationId["FilterChanged"] = "filter-changed-event"; - // notification to launch the hybrid UI showcase - NotificationId["LaunchHybridUIShowcase"] = "launch-hybrid-uishowcase-event"; - // notification of new echoed text for HybridUI showcase demo - NotificationId["HybridUIShowcaseEcho"] = "hybrid-uishowcase-echo-event"; - // event for the bin dialog - NotificationId["UpdateNumericBinEditDialog"] = "update-numeric-bin-edit-dialog-event"; - // a test event with a pres model - NotificationId["TestEventWithModel"] = "test-event-with-model-event"; - // a test event without a pres model - NotificationId["TestEventWithoutModel"] = "test-event-without-model-event"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - //# sourceMappingURL=Events.js.map - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Api = __webpack_require__(4); - var api_utils_1 = __webpack_require__(18); - var EnumMappings_1 = __webpack_require__(21); - /** - * Class containing helper methods for converting from PresLayerPresModels to their ApiPresModels equivalents - * - * @export - * @class PresLayerToApiConverter - */ - var PresLayerToApiConverter = (function () { - function PresLayerToApiConverter() { - } - PresLayerToApiConverter.convertSheetPath = function (plSheetPath) { - var result = { - sheetName: plSheetPath.sheetName, - isDashboard: plSheetPath.isDashboard, - storyboard: plSheetPath.storyboard, - flipboardZoneID: plSheetPath.flipboardZoneId, - storyPointID: plSheetPath.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertVisualId = function (plVisualId) { - var result = { - worksheet: plVisualId.worksheet, - dashboard: plVisualId.dashboard, - storyboard: plVisualId.storyboard, - flipboardZoneID: plVisualId.flipboardZoneId, - storyPointID: plVisualId.storyPointId, - }; - return result; - }; - PresLayerToApiConverter.convertAddInLocator = function (plAddInLocator) { - var dashboardPath = undefined; - if (plAddInLocator.sheetPath) { - dashboardPath = PresLayerToApiConverter.convertSheetPath(plAddInLocator.sheetPath); - } - var result = { - instanceId: plAddInLocator.addInInstanceId, - dashboardPath: dashboardPath - }; - return result; - }; - PresLayerToApiConverter.convertDashboardInZones = function (plDashboard) { - var result = new Array(); - for (var _i = 0, _a = Object.keys(plDashboard.zones); _i < _a.length; _i++) { - var zoneKey = _a[_i]; - var zone = plDashboard.zones[zoneKey]; - var apiZone = { - name: zone.zoneCommon.name, - zoneId: zone.zoneId, - zoneType: EnumMappings_1.PresLayerToApiEnumMappings.zoneType.convert(zone.zoneCommon.zoneType), - height: zone.zoneCommon.h, - width: zone.zoneCommon.w, - x: zone.zoneCommon.x, - y: zone.zoneCommon.y - }; - result.push(apiZone); - } - return result; - }; - PresLayerToApiConverter.convertDashboardInfo = function (plDashboardInfo) { - var result = { - zones: PresLayerToApiConverter.convertDashboardInZones(plDashboardInfo.dashboardPresModel), - name: plDashboardInfo.dashboardPresModel.sheetPath.sheetName, - addInZoneId: plDashboardInfo.zoneId, - size: plDashboardInfo.dashboardPresModel.viewportSize - }; - return result; - }; - PresLayerToApiConverter.convertAddInInstance = function (plAddInInstance) { - var result = { - url: plAddInInstance.addInRegistrationPresModel.url, - locator: PresLayerToApiConverter.convertAddInLocator(plAddInInstance.addInLocatorPresModel) - }; - return result; - }; - PresLayerToApiConverter.convertAddInEnivrionment = function (plAddInEnvironment) { - var result = { - addInContext: EnumMappings_1.PresLayerToApiEnumMappings.addInContext.convert(plAddInEnvironment.addInContext), - addInMode: EnumMappings_1.PresLayerToApiEnumMappings.addInMode.convert(plAddInEnvironment.addInMode), - addInLocale: plAddInEnvironment.addInLocale, - addInLanguage: plAddInEnvironment.addInLanguage, - tableauVersion: plAddInEnvironment.tableauVersion, - operatingSystem: plAddInEnvironment.operatingSystem, - apiVersion: plAddInEnvironment.apiVersion - }; - return result; - }; - PresLayerToApiConverter.convertAddInSettingsInfo = function (plAddInSettings) { - var result = { - // addInSettings is undefined during bootstrap initialization - settingsValues: plAddInSettings.addInSettings || {} - }; - return result; - }; - PresLayerToApiConverter.convertAddInBootstrapInfo = function (plBootstrapInfo) { - var result = { - addinDashboardInfo: PresLayerToApiConverter.convertDashboardInfo(plBootstrapInfo.addInDashboardInfoPresModel), - addInEnvironment: PresLayerToApiConverter.convertAddInEnivrionment(plBootstrapInfo.addInEnvironmentPresModel), - addInInstance: PresLayerToApiConverter.convertAddInInstance(plBootstrapInfo.addInInstancePresModel), - addInSettingsInfo: PresLayerToApiConverter.convertAddInSettingsInfo(plBootstrapInfo.addInSettingsInfo) - }; - return result; - }; - PresLayerToApiConverter.convertFieldCaptionPair = function (plFieldCaptionPair) { - return plFieldCaptionPair.fn; - }; - PresLayerToApiConverter.convertFilterEvent = function (plFilterEvent) { - var result = { - visualId: PresLayerToApiConverter.convertVisualId(plFilterEvent.visualIdPresModel), - fieldName: plFilterEvent.fieldCaption - }; - return result; - }; - PresLayerToApiConverter.convertDataSchema = function (dataSchema) { - var apiDataSources = {}; - api_utils_1.Param.verifyValue(dataSchema, 'dataSchema'); - api_utils_1.Param.verifyValue(dataSchema.dataSources, 'dataSchema.dataSources'); - // Convert each pres layer datasource in the schema to an Api datasource - Object.keys(dataSchema.dataSources).forEach(function (key) { - // Skip the default Parameters datasource we receive from the platform. - if (dataSchema.dataSources[key].datasource !== PresLayerToApiConverter.PARAMETERS_DB_NAME) { - apiDataSources[key] = PresLayerToApiConverter.convertDataSource(dataSchema.dataSources[key]); - } - }); - var schemaMap = PresLayerToApiConverter.convertWorksheetDataSchemaMap(dataSchema.worksheetDataSchemaMap); - var result = { - dataSources: apiDataSources, - worksheetDataSchemaMap: schemaMap, - }; - return result; - }; - PresLayerToApiConverter.convertDataSource = function (dataSource) { - var extractUpdateTime = (dataSource.extractUpdateTime === '') ? undefined : dataSource.extractUpdateTime; - var dataSourceFields = new Array(); - api_utils_1.Param.verifyValue(dataSource, 'dataSource'); - api_utils_1.Param.verifyValue(dataSource.fieldList, 'dataSchema.fieldList'); - dataSource.fieldList.forEach(function (plField) { - // If the datasource contains hierarchies or folders, the base field will contain - // a list of the fields grouped beneath it, we are interested in those. - // Tableau does not support nested folders or hierarchies, so this does not need to be recursive. - var hierarchyModel = plField; - if (hierarchyModel.columnList) { - hierarchyModel.columnList.forEach(function (field) { return dataSourceFields.push(PresLayerToApiConverter.convertField(field)); }); - } - else { - // This is a bit brittle for now, but this value is not exposed via the platform FieldType Enum. - if (plField.type !== 'field-folder') { - dataSourceFields.push(PresLayerToApiConverter.convertField(plField)); - } - } - }); - var result = { - name: dataSource.datasourceCaption, - id: dataSource.datasource, - isExtract: (extractUpdateTime !== undefined), - extractUpdateTime: extractUpdateTime, - fields: dataSourceFields - }; - return result; - }; - PresLayerToApiConverter.convertWorksheetDataSchemaMap = function (schemaMap) { - var result = {}; - Object.keys(schemaMap).forEach(function (key) { - // We need to remove any references to the "Parameters" datasource. This is treated as a separate - // datasource by the platform, but the Extensions API accesses Parameters directly. - var cleanReferencedDataSourceList = schemaMap[key].referencedDataSourceList.filter(function (dsName) { - return dsName !== PresLayerToApiConverter.PARAMETERS_DB_NAME; - }); - var worksheetDataSourceInfo = { - primaryDataSource: schemaMap[key].primaryDatasource, - referencedDataSourceList: cleanReferencedDataSourceList - }; - result[key] = worksheetDataSourceInfo; - }); - return result; - }; - PresLayerToApiConverter.convertField = function (plField) { - var fieldColumn = plField; - var groupColumn = plField; - var aggregation = Api.FieldAggregationType.None; - var role = Api.FieldRoleType.Unknown; - var isCalculated = false; - // We expect that every FieldPresModel we get back from the command that returns FieldPresModels - // is actually an instance of the derived FieldColumnPresModel. - if (fieldColumn.aggregation && fieldColumn.fieldRole) { - aggregation = EnumMappings_1.PresLayerToApiEnumMappings.fieldAggregationType.convert(fieldColumn.aggregation); - role = EnumMappings_1.PresLayerToApiEnumMappings.fieldRoleType.convert(fieldColumn.fieldRole); - isCalculated = fieldColumn.isCalculated || false; - } - else { - throw new Error('Unexpected Internal Error: field pres model is missing expected properties.'); - } - var result = { - name: plField.description, - id: plField.name, - description: plField.userCaption, - aggregation: aggregation, - isHidden: !!(plField.isHidden), - isGenerated: plField.isGenerated, - isCalculatedField: isCalculated, - role: role, - isCombinedField: !!(groupColumn.isCombinedField) - }; - return result; - }; - PresLayerToApiConverter.PARAMETERS_DB_NAME = 'Parameters'; - return PresLayerToApiConverter; - }()); - exports.PresLayerToApiConverter = PresLayerToApiConverter; - //# sourceMappingURL=PresLayerToApiConverter.js.map - -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(19); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(20); - exports.Param = Param_1.Param; - //# sourceMappingURL=ApiUtils.js.map - -/***/ }, -/* 19 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(_mappings, _defaultVal) { - this._mappings = _mappings; - this._defaultVal = _defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this._mappings.hasOwnProperty(enumVal)) { - return this._mappings[enumVal]; - } - if (this._defaultVal !== undefined && !throwIfMissing) { - return this._defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - //# sourceMappingURL=EnumConverter.js.map - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies the value is part of the Enum - * - * String enums are {string : string} dictionaries which are not reverse mappable - * This is an ugly workaround - * @param value value to verify - * @param enumType enum to verify against - */ - /* tslint:disable:no-any */ - Param.isValidEnumValue = function (value, enumType) { - var isValid = false; - Object.keys(enumType).forEach(function (enumKey) { - if (enumType[enumKey] === value.toString()) { - isValid = true; - } - }); - return isValid; - }; - /* tslint:enable:no-any */ - /** - * serializes the date into the format that the server expects. - * @param date the date to serialize - */ - Param.serializeDateForPlatform = function (date) { - var year = date.getUTCFullYear(); - var month = date.getUTCMonth() + 1; - var day = date.getUTCDate(); - var hh = date.getUTCHours(); - var mm = date.getUTCMinutes(); - var sec = date.getUTCSeconds(); - return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; - }; - Param.serializeBooleanForPlatform = function (bool) { - return bool ? 'true' : 'false'; - }; - Param.serializeNumberForPlatform = function (num) { - return num.toString(10); - }; - /** - * Verifies the params min and max for applying range filter - * @param min range min - * @param max range max - */ - /* tslint:disable:no-any */ - Param.verifyRangeParamType = function (min, max) { - /* tslint:enable:no-any */ - if (!min && !max) { - throw new Error('Missing Parameter: At least one of min or max is required'); - } - if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); - } - if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); - } - if (typeof (min) !== typeof (max)) { - throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); - } - }; - /** - * Verifies the input is a number - */ - /* tslint:disable:no-any */ - Param.isTypeNumber = function (input) { - return typeof (input) === 'number' || input instanceof Number; - }; - /* tslint:enable:no-any */ - /** - * Verifies the input is a Date - */ - /* tslint:disable:no-any */ - Param.isTypeDate = function (input) { - return input instanceof Date; - }; - /* tslint:enable:no-any */ - /* tslint:disable-next-line:no-any */ - Param.isTypeString = function (input) { - return typeof (input) === 'string' || input instanceof String; - }; - /* tslint:disable-next-line:no-any */ - Param.isTypeBool = function (input) { - return typeof (input) === 'boolean' || input instanceof Boolean; - }; - /* tslint:disable-next-line:no-any */ - Param.serializeParamterValue = function (value) { - if (Param.isTypeNumber(value)) { - return Param.serializeNumberForPlatform(value); - } - else if (Param.isTypeDate(value)) { - return Param.serializeDateForPlatform(value); - } - else if (Param.isTypeBool(value)) { - return Param.serializeBooleanForPlatform(value); - } - else if (Param.isTypeString(value)) { - return value; - } - else { - throw new Error('Value is invalid for argument: value'); - } - }; - return Param; - }()); - exports.Param = Param; - //# sourceMappingURL=Param.js.map - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var api_utils_1 = __webpack_require__(18); - var Enums = __webpack_require__(22); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - var PresLayerToApiEnumMappings = (function () { - function PresLayerToApiEnumMappings() { - } - PresLayerToApiEnumMappings.zoneType = new api_utils_1.EnumConverter((_a = {}, - _a[Enums.ZoneType.ZT_Invalid] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Viz] = api_internal_contract_1.DashboardObjectType.Worksheet, - _a[Enums.ZoneType.ZT_ColorLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_ShapeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_SizeLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_MapLegend] = api_internal_contract_1.DashboardObjectType.Legend, - _a[Enums.ZoneType.ZT_QuickFilter] = api_internal_contract_1.DashboardObjectType.QuickFilter, - _a[Enums.ZoneType.ZT_Highlighter] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_CurrPage] = api_internal_contract_1.DashboardObjectType.PageFilter, - _a[Enums.ZoneType.ZT_Empty] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Title] = api_internal_contract_1.DashboardObjectType.Title, - _a[Enums.ZoneType.ZT_Text] = api_internal_contract_1.DashboardObjectType.Text, - _a[Enums.ZoneType.ZT_Bitmap] = api_internal_contract_1.DashboardObjectType.Image, - _a[Enums.ZoneType.ZT_Web] = api_internal_contract_1.DashboardObjectType.WebPage, - _a[Enums.ZoneType.ZT_AddIn] = api_internal_contract_1.DashboardObjectType.AddIn, - _a[Enums.ZoneType.ZT_ParamCtrl] = api_internal_contract_1.DashboardObjectType.ParameterControl, - _a[Enums.ZoneType.ZT_FlipboardNav] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Flipboard] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutBasic] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFlow] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_LayoutFreeForm] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_End] = api_internal_contract_1.DashboardObjectType.Blank, - _a[Enums.ZoneType.ZT_Button] = api_internal_contract_1.DashboardObjectType.Blank, - _a), api_internal_contract_1.DashboardObjectType.Blank); - PresLayerToApiEnumMappings.addInContext = new api_utils_1.EnumConverter((_b = {}, - _b[Enums.AddInContext.Unknown] = api_internal_contract_1.AddInContext.Unknown, - _b[Enums.AddInContext.Desktop] = api_internal_contract_1.AddInContext.Desktop, - _b[Enums.AddInContext.Server] = api_internal_contract_1.AddInContext.Server, - _b)); - PresLayerToApiEnumMappings.addInMode = new api_utils_1.EnumConverter((_c = {}, - _c[Enums.AddInMode.Unknown] = api_internal_contract_1.AddInMode.Unknown, - _c[Enums.AddInMode.Authoring] = api_internal_contract_1.AddInMode.Authoring, - _c[Enums.AddInMode.Viewing] = api_internal_contract_1.AddInMode.Viewing, - _c)); - PresLayerToApiEnumMappings.dataType = new api_utils_1.EnumConverter((_d = {}, - _d[Enums.DataType.DT_BOOLEAN] = api_internal_contract_1.DataType.Bool, - _d[Enums.DataType.DT_DATE] = api_internal_contract_1.DataType.Date, - _d[Enums.DataType.DT_DATETIME] = api_internal_contract_1.DataType.DateTime, - _d[Enums.DataType.DT_INTEGER] = api_internal_contract_1.DataType.Int, - _d[Enums.DataType.DT_REAL] = api_internal_contract_1.DataType.Float, - _d[Enums.DataType.DT_STRING] = api_internal_contract_1.DataType.String, - _d[Enums.DataType.DT_SPATIAL] = api_internal_contract_1.DataType.Spatial, - _d)); - PresLayerToApiEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_e = {}, - _e[Enums.AggType.AGG_ATTR] = api_internal_contract_1.FieldAggregationType.Attr, - _e[Enums.AggType.AGG_AVG] = api_internal_contract_1.FieldAggregationType.Avg, - _e[Enums.AggType.AGG_COUNT] = api_internal_contract_1.FieldAggregationType.Count, - _e[Enums.AggType.AGG_COUNTD] = api_internal_contract_1.FieldAggregationType.Countd, - _e[Enums.AggType.AGG_DAY] = api_internal_contract_1.FieldAggregationType.Day, - _e[Enums.AggType.AGG_END] = api_internal_contract_1.FieldAggregationType.End, - _e[Enums.AggType.AGG_HOUR] = api_internal_contract_1.FieldAggregationType.Hour, - _e[Enums.AggType.AGG_INOUT] = api_internal_contract_1.FieldAggregationType.InOut, - _e[Enums.AggType.AGG_KURTOSIS] = api_internal_contract_1.FieldAggregationType.Kurtosis, - _e[Enums.AggType.AGG_MAX] = api_internal_contract_1.FieldAggregationType.Max, - _e[Enums.AggType.AGG_MDY] = api_internal_contract_1.FieldAggregationType.Mdy, - _e[Enums.AggType.AGG_MEDIAN] = api_internal_contract_1.FieldAggregationType.Median, - _e[Enums.AggType.AGG_MIN] = api_internal_contract_1.FieldAggregationType.Min, - _e[Enums.AggType.AGG_MINUTE] = api_internal_contract_1.FieldAggregationType.Minute, - _e[Enums.AggType.AGG_MONTHYEAR] = api_internal_contract_1.FieldAggregationType.MonthYear, - _e[Enums.AggType.AGG_NONE] = api_internal_contract_1.FieldAggregationType.None, - _e[Enums.AggType.AGG_QTR] = api_internal_contract_1.FieldAggregationType.Qtr, - _e[Enums.AggType.AGG_QUART1] = api_internal_contract_1.FieldAggregationType.Quart1, - _e[Enums.AggType.AGG_QUART3] = api_internal_contract_1.FieldAggregationType.Quart3, - _e[Enums.AggType.AGG_SECOND] = api_internal_contract_1.FieldAggregationType.Second, - _e[Enums.AggType.AGG_SKEWNESS] = api_internal_contract_1.FieldAggregationType.Skewness, - _e[Enums.AggType.AGG_STDEV] = api_internal_contract_1.FieldAggregationType.Stdev, - _e[Enums.AggType.AGG_STDEVP] = api_internal_contract_1.FieldAggregationType.Stdevp, - _e[Enums.AggType.AGG_SUM] = api_internal_contract_1.FieldAggregationType.Sum, - _e[Enums.AggType.TRUNC_DAY] = api_internal_contract_1.FieldAggregationType.TruncDay, - _e[Enums.AggType.TRUNC_HOUR] = api_internal_contract_1.FieldAggregationType.TruncHour, - _e[Enums.AggType.TRUNC_MINUTE] = api_internal_contract_1.FieldAggregationType.TruncMinute, - _e[Enums.AggType.TRUNC_MONTH] = api_internal_contract_1.FieldAggregationType.TruncMonth, - _e[Enums.AggType.TRUNC_QTR] = api_internal_contract_1.FieldAggregationType.TruncQtr, - _e[Enums.AggType.TRUNC_SECOND] = api_internal_contract_1.FieldAggregationType.TruncSecond, - _e[Enums.AggType.TRUNC_WEEK] = api_internal_contract_1.FieldAggregationType.TruncWeek, - _e[Enums.AggType.TRUNC_YEAR] = api_internal_contract_1.FieldAggregationType.TruncYear, - _e[Enums.AggType.AGG_USER] = api_internal_contract_1.FieldAggregationType.User, - _e[Enums.AggType.AGG_VAR] = api_internal_contract_1.FieldAggregationType.Var, - _e[Enums.AggType.AGG_VARP] = api_internal_contract_1.FieldAggregationType.Varp, - _e[Enums.AggType.AGG_WEEK] = api_internal_contract_1.FieldAggregationType.Week, - _e[Enums.AggType.AGG_WEEKDAY] = api_internal_contract_1.FieldAggregationType.Weekday, - _e[Enums.AggType.AGG_YEAR] = api_internal_contract_1.FieldAggregationType.Year, - _e)); - PresLayerToApiEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_f = {}, - _f[Enums.FieldRole.ROLE_DIMENSION] = api_internal_contract_1.FieldRoleType.Dimension, - _f[Enums.FieldRole.ROLE_MEASURE] = api_internal_contract_1.FieldRoleType.Measure, - _f)); - PresLayerToApiEnumMappings.parameterTypesDomainType = new api_utils_1.EnumConverter((_g = {}, - _g[Enums.ParameterTypesDomainType.Domain_Any] = api_internal_contract_1.DomainRestrictionType.All, - _g[Enums.ParameterTypesDomainType.Domain_List] = api_internal_contract_1.DomainRestrictionType.List, - _g[Enums.ParameterTypesDomainType.Domain_Range] = api_internal_contract_1.DomainRestrictionType.Range, - _g)); - PresLayerToApiEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_h = {}, - _h[Enums.DatePeriodType.PeriodYear] = api_internal_contract_1.DateStepPeriod.Years, - _h[Enums.DatePeriodType.PeriodQuarter] = api_internal_contract_1.DateStepPeriod.Quarters, - _h[Enums.DatePeriodType.PeriodMonth] = api_internal_contract_1.DateStepPeriod.Months, - _h[Enums.DatePeriodType.PeriodWeek] = api_internal_contract_1.DateStepPeriod.Weeks, - _h[Enums.DatePeriodType.PeriodDay] = api_internal_contract_1.DateStepPeriod.Days, - _h[Enums.DatePeriodType.PeriodHour] = api_internal_contract_1.DateStepPeriod.Hours, - _h[Enums.DatePeriodType.PeriodMinute] = api_internal_contract_1.DateStepPeriod.Minutes, - _h[Enums.DatePeriodType.PeriodSecond] = api_internal_contract_1.DateStepPeriod.Seconds, - _h)); - PresLayerToApiEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_j = {}, - _j[Enums.FiltersRelativeDateRangeType.RangeCurrent] = api_internal_contract_1.DateRangeType.Current, - _j[Enums.FiltersRelativeDateRangeType.RangeCurrentToDate] = api_internal_contract_1.DateRangeType.ToDate, - _j[Enums.FiltersRelativeDateRangeType.RangeLast1] = api_internal_contract_1.DateRangeType.Last, - _j[Enums.FiltersRelativeDateRangeType.RangeLastN] = api_internal_contract_1.DateRangeType.LastN, - _j[Enums.FiltersRelativeDateRangeType.RangeNext1] = api_internal_contract_1.DateRangeType.Next, - _j[Enums.FiltersRelativeDateRangeType.RangeNextN] = api_internal_contract_1.DateRangeType.NextN, - _j)); - PresLayerToApiEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_k = {}, - _k[Enums.FiltersDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant, - _k[Enums.FiltersDomainType.Database] = api_internal_contract_1.FilterDomainType.Database, - _k)); - return PresLayerToApiEnumMappings; - }()); - exports.PresLayerToApiEnumMappings = PresLayerToApiEnumMappings; - var ApiToPresLayerEnumMappings = (function () { - function ApiToPresLayerEnumMappings() { - } - ApiToPresLayerEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.FilterUpdateType.Add] = Enums.FilterUpdateType.ADD, - _a[api_internal_contract_1.FilterUpdateType.All] = Enums.FilterUpdateType.ALL, - _a[api_internal_contract_1.FilterUpdateType.Replace] = Enums.FilterUpdateType.REPLACE, - _a[api_internal_contract_1.FilterUpdateType.Remove] = Enums.FilterUpdateType.REMOVE, - _a)); - ApiToPresLayerEnumMappings.nullOption = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.FilterNullOption.AllValues] = Enums.FiltersQuantitativeIncludedValues.All, - _b[api_internal_contract_1.FilterNullOption.NonNullValues] = Enums.FiltersQuantitativeIncludedValues.NonNull, - _b[api_internal_contract_1.FilterNullOption.NullValues] = Enums.FiltersQuantitativeIncludedValues.Null, - _b)); - ApiToPresLayerEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_c = {}, - _c[api_internal_contract_1.FilterDomainType.Relevant] = Enums.FiltersDomainType.Relevant, - _c[api_internal_contract_1.FilterDomainType.Database] = Enums.FiltersDomainType.Database, - _c)); - return ApiToPresLayerEnumMappings; - }()); - exports.ApiToPresLayerEnumMappings = ApiToPresLayerEnumMappings; - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _a, _b, _c; - /* tslint:enable:typedef */ - //# sourceMappingURL=EnumMappings.js.map - -/***/ }, -/* 22 */ -/***/ function(module, exports) { - - "use strict"; - /* tslint:disable */ - // ----------------------------------------------------------------------------- - // - // This file is the copyrighted property of Tableau Software and is protected - // by registered patents and other applicable U.S. and international laws and - // regulations. - // - // Unlicensed use of the contents of this file is prohibited. Please refer to - // the NOTICES.txt file for further details. - // - // ----------------------------------------------------------------------------- - // WARNING: Computer generated file. Do not hand modify. - // DEPENDS ON: ['../typescript/js-api/api-core/node_modules/@tableau/preslayer-codegen-typescript/templates/enum-ts.template', u'../typescript/js-api/api-core/temp-pres-layer/all-enums.data'] - Object.defineProperty(exports, "__esModule", { value: true }); - // - var DataScaling; - (function (DataScaling) { - // - DataScaling["SCALING_NONE"] = "none"; - // - DataScaling["SCALING_STANDARDIZED"] = "standardized"; - // - DataScaling["SCALING_NORMALIZED"] = "normalized"; - })(DataScaling = exports.DataScaling || (exports.DataScaling = {})); - // - var ForecastModelType; - (function (ForecastModelType) { - // - ForecastModelType["ForecastModelTypeAutoSeason"] = "auto-season"; - // - ForecastModelType["ForecastModelTypeAuto"] = "auto"; - // - ForecastModelType["ForecastModelTypeCustom"] = "custom"; - })(ForecastModelType = exports.ForecastModelType || (exports.ForecastModelType = {})); - // - var ForecastRangeType; - (function (ForecastRangeType) { - // - ForecastRangeType["ForecastRangeTypeAuto"] = "auto"; - // - ForecastRangeType["ForecastRangeTypeNext"] = "next"; - // - ForecastRangeType["ForecastRangeTypeEndOf"] = "end-of"; - })(ForecastRangeType = exports.ForecastRangeType || (exports.ForecastRangeType = {})); - // - var ForecastStatus; - (function (ForecastStatus) { - // - ForecastStatus["FS_VALID"] = "fs-valid"; - // - ForecastStatus["FS_INVALID_DATETIME"] = "fs-invalid-datetime"; - // - ForecastStatus["FS_INVALID_RESPONSE"] = "fs-invalid-response"; - // - ForecastStatus["FS_NEED_MORE_DATA"] = "fs-need-more-data"; - // - ForecastStatus["FS_TIME_SERIES_TOO_SHORT"] = "fs-time-series-too-short"; - // - ForecastStatus["FS_TIME_SERIES_IRREGULAR"] = "fs-time-series-irregular"; - // - ForecastStatus["FS_NULL_DATETIME"] = "fs-null-datetime"; - // - ForecastStatus["FS_NULL_RESPONSE"] = "fs-null-response"; - // - ForecastStatus["FS_METADATA_INVALID"] = "fs-metadata-invalid"; - // - ForecastStatus["FS_NO_RESPONSE"] = "fs-no-response"; - // - ForecastStatus["FS_EXCESS_DATA"] = "fs-excess-data"; - // - ForecastStatus["FS_EXCESS_PARTITIONS"] = "fs-excess-partitions"; - // - ForecastStatus["FS_DIMENSION_INVALID"] = "fs-dimension-invalid"; - // - ForecastStatus["FS_TABLECALC_INVALID"] = "fs-tablecalc-invalid"; - // - ForecastStatus["FS_TIME_SERIES_TOO_IRREGULAR"] = "fs-time-series-too-irregular"; - // - ForecastStatus["FS_AGGREGATE_FILTER"] = "fs-aggregate-filter"; - // - ForecastStatus["FS_DISAGGREGATE_RESPONSE"] = "fs-disaggregate-response"; - // - ForecastStatus["FS_PERCENTAGE_INVALID"] = "fs-percentage-invalid"; - // - ForecastStatus["FS_TOTAL_INVALID"] = "fs-total-invalid"; - // - ForecastStatus["FS_EXCESS_DATETIME"] = "fs-excess-datetime"; - // - ForecastStatus["FS_DATE_AGG_INCOMPATIBLE"] = "fs-date-agg-incompatible"; - // - ForecastStatus["FS_TIME_SERIES_NOT_POSITIVE"] = "fs-time-series-not-positive"; - // - ForecastStatus["FS_REQUESTED_MODEL_INVALID"] = "fs-requested-model-invalid"; - // - ForecastStatus["FS_TOO_SHORT_FOR_SEASON"] = "fs-too-short-for-season"; - // - ForecastStatus["FS_REQUESTED_MODEL_UNSTABLE"] = "fs-requested-model-unstable"; - // - ForecastStatus["FS_UNDEFINED"] = "fs-undefined"; - })(ForecastStatus = exports.ForecastStatus || (exports.ForecastStatus = {})); - // - var StyleAttribute; - (function (StyleAttribute) { - // - StyleAttribute["saAlternateText"] = "saAlternateText"; - // - StyleAttribute["saAltMarkColor"] = "saAltMarkColor"; - // - StyleAttribute["saAspect"] = "saAspect"; - // - StyleAttribute["saAutoSubtitle"] = "saAutoSubtitle"; - // - StyleAttribute["saBackgroundColor"] = "saBackgroundColor"; - // - StyleAttribute["saBackgroundTransparency"] = "saBackgroundTransparency"; - // - StyleAttribute["saBandSize"] = "saBandSize"; - // - StyleAttribute["saBandColor"] = "saBandColor"; - // - StyleAttribute["saBandLevel"] = "saBandLevel"; - // - StyleAttribute["saBodyType"] = "saBodyType"; - // - StyleAttribute["saBorderColor"] = "saBorderColor"; - // - StyleAttribute["saBorderColorTop"] = "saBorderColorTop"; - // - StyleAttribute["saBorderColorRight"] = "saBorderColorRight"; - // - StyleAttribute["saBorderColorBottom"] = "saBorderColorBottom"; - // - StyleAttribute["saBorderColorLeft"] = "saBorderColorLeft"; - // - StyleAttribute["saBorderStyle"] = "saBorderStyle"; - // - StyleAttribute["saBorderStyleTop"] = "saBorderStyleTop"; - // - StyleAttribute["saBorderStyleRight"] = "saBorderStyleRight"; - // - StyleAttribute["saBorderStyleBottom"] = "saBorderStyleBottom"; - // - StyleAttribute["saBorderStyleLeft"] = "saBorderStyleLeft"; - // - StyleAttribute["saBorderWidth"] = "saBorderWidth"; - // - StyleAttribute["saBorderWidthTop"] = "saBorderWidthTop"; - // - StyleAttribute["saBorderWidthRight"] = "saBorderWidthRight"; - // - StyleAttribute["saBorderWidthBottom"] = "saBorderWidthBottom"; - // - StyleAttribute["saBorderWidthLeft"] = "saBorderWidthLeft"; - // - StyleAttribute["saBoxplotStyle"] = "saBoxplotStyle"; - // - StyleAttribute["saBreakOnSpecial"] = "saBreakOnSpecial"; - // - StyleAttribute["saCell"] = "saCell"; - // - StyleAttribute["saCellW"] = "saCellW"; - // - StyleAttribute["saCellH"] = "saCellH"; - // - StyleAttribute["saCellQ"] = "saCellQ"; - // - StyleAttribute["saCellQMark"] = "saCellQMark"; - // - StyleAttribute["saColor"] = "saColor"; - // - StyleAttribute["saColorMode"] = "saColorMode"; - // - StyleAttribute["saColLevels"] = "saColLevels"; - // - StyleAttribute["saColVertLevels"] = "saColVertLevels"; - // - StyleAttribute["saColHorizHeight"] = "saColHorizHeight"; - // - StyleAttribute["saColVertHeight"] = "saColVertHeight"; - // Deprecated - StyleAttribute["saColHeight"] = "saColHeight"; - // - StyleAttribute["saColWidth"] = "saColWidth"; - // - StyleAttribute["saContent"] = "saContent"; - // - StyleAttribute["saDisplayFieldLabels"] = "saDisplayFieldLabels"; - // - StyleAttribute["saDisplayHeader"] = "saDisplayHeader"; - // - StyleAttribute["saDisplayAlternateText"] = "saDisplayAlternateText"; - // - StyleAttribute["saDivLevel"] = "saDivLevel"; - // - StyleAttribute["saEnabled"] = "saEnabled"; - // - StyleAttribute["saFillAboveColor"] = "saFillAboveColor"; - // - StyleAttribute["saFillBelowColor"] = "saFillBelowColor"; - // - StyleAttribute["saFillColor"] = "saFillColor"; - // - StyleAttribute["saFogBGColor"] = "saFogBGColor"; - // - StyleAttribute["saFogDesaturationWithoutSelection"] = "saFogDesaturationWithoutSelection"; - // - StyleAttribute["saFogDesaturationWithSelection"] = "saFogDesaturationWithSelection"; - // - StyleAttribute["saFont"] = "saFont"; - // - StyleAttribute["saFontFamily"] = "saFontFamily"; - // - StyleAttribute["saFontSize"] = "saFontSize"; - // - StyleAttribute["saFontStyle"] = "saFontStyle"; - // - StyleAttribute["saFontWeight"] = "saFontWeight"; - // - StyleAttribute["saGeographicAreaType"] = "saGeographicAreaType"; - // - StyleAttribute["saHAlign"] = "saHAlign"; - // - StyleAttribute["saHaloColor"] = "saHaloColor"; - // - StyleAttribute["saHaloColorSelected"] = "saHaloColorSelected"; - // - StyleAttribute["saHasFill"] = "saHasFill"; - // - StyleAttribute["saHasHalo"] = "saHasHalo"; - // Deprecated - StyleAttribute["saHasLabel"] = "saHasLabel"; - // - StyleAttribute["saHasStroke"] = "saHasStroke"; - // - StyleAttribute["saHeight"] = "saHeight"; - // - StyleAttribute["saHeightHeader"] = "saHeightHeader"; - // - StyleAttribute["saHighlightLegend"] = "saHighlightLegend"; - // - StyleAttribute["saHnaxis"] = "saHnaxis"; - // - StyleAttribute["saHnlabel"] = "saHnlabel"; - // - StyleAttribute["saInTooltip"] = "saInTooltip"; - // - StyleAttribute["saLineEnd"] = "saLineEnd"; - // - StyleAttribute["saLineEndSize"] = "saLineEndSize"; - // - StyleAttribute["saLineInterpolation"] = "saLineInterpolation"; - // - StyleAttribute["saLineMarkerPosition"] = "saLineMarkerPosition"; - // - StyleAttribute["saLinePattern"] = "saLinePattern"; - // - StyleAttribute["saLinePatternOnly"] = "saLinePatternOnly"; - // - StyleAttribute["saLineVisibility"] = "saLineVisibility"; - // - StyleAttribute["saMap"] = "saMap"; - // - StyleAttribute["saMapStyle"] = "saMapStyle"; - // - StyleAttribute["saMargin"] = "saMargin"; - // - StyleAttribute["saMarginTop"] = "saMarginTop"; - // - StyleAttribute["saMarginRight"] = "saMarginRight"; - // - StyleAttribute["saMarginBottom"] = "saMarginBottom"; - // - StyleAttribute["saMarginLeft"] = "saMarginLeft"; - // - StyleAttribute["saMarkColor"] = "saMarkColor"; - // - StyleAttribute["saMarkTransparency"] = "saMarkTransparency"; - // - StyleAttribute["saMarkLabelsShow"] = "saMarkLabelsShow"; - // - StyleAttribute["saRunningOrderLabelsShow"] = "saRunningOrderLabelsShow"; - // - StyleAttribute["saMarkLabelsMode"] = "saMarkLabelsMode"; - // - StyleAttribute["saMarkLabelsCull"] = "saMarkLabelsCull"; - // - StyleAttribute["saMarkLabelsLineEndFirst"] = "saMarkLabelsLineEndFirst"; - // - StyleAttribute["saMarkLabelsLineEndLast"] = "saMarkLabelsLineEndLast"; - // - StyleAttribute["saMarkLabelsRangeMin"] = "saMarkLabelsRangeMin"; - // - StyleAttribute["saMarkLabelsRangeMax"] = "saMarkLabelsRangeMax"; - // - StyleAttribute["saMarkLabelsRangeScope"] = "saMarkLabelsRangeScope"; - // - StyleAttribute["saMarkLabelsRangeField"] = "saMarkLabelsRangeField"; - // - StyleAttribute["saMarkMarkersMode"] = "saMarkMarkersMode"; - // - StyleAttribute["saMaxHeight"] = "saMaxHeight"; - // - StyleAttribute["saMaxFontSize"] = "saMaxFontSize"; - // - StyleAttribute["saMaxStrokeWidth"] = "saMaxStrokeWidth"; - // - StyleAttribute["saMaxWidth"] = "saMaxWidth"; - // - StyleAttribute["saMidStrokeWidth"] = "saMidStrokeWidth"; - // - StyleAttribute["saMinHeight"] = "saMinHeight"; - // - StyleAttribute["saMinFontSize"] = "saMinFontSize"; - // - StyleAttribute["saMinLength"] = "saMinLength"; - // - StyleAttribute["saMinMapSize"] = "saMinMapSize"; - // - StyleAttribute["saMinSize"] = "saMinSize"; - // - StyleAttribute["saMinStrokeWidth"] = "saMinStrokeWidth"; - // - StyleAttribute["saMinWidth"] = "saMinWidth"; - // - StyleAttribute["saNonhighlightColor"] = "saNonhighlightColor"; - // - StyleAttribute["saOmitOnSpecial"] = "saOmitOnSpecial"; - // - StyleAttribute["saOpacity"] = "saOpacity"; - // - StyleAttribute["saOrientation"] = "saOrientation"; - // - StyleAttribute["saPadding"] = "saPadding"; - // - StyleAttribute["saPaddingTop"] = "saPaddingTop"; - // - StyleAttribute["saPaddingRight"] = "saPaddingRight"; - // - StyleAttribute["saPaddingBottom"] = "saPaddingBottom"; - // - StyleAttribute["saPaddingLeft"] = "saPaddingLeft"; - // - StyleAttribute["saPalette"] = "saPalette"; - // - StyleAttribute["saRenderFoldReversed"] = "saRenderFoldReversed"; - // - StyleAttribute["saReversePalette"] = "saReversePalette"; - // - StyleAttribute["saRounding"] = "saRounding"; - // - StyleAttribute["saRowHorizLevels"] = "saRowHorizLevels"; - // - StyleAttribute["saRowHorizWidth"] = "saRowHorizWidth"; - // - StyleAttribute["saRowLevels"] = "saRowLevels"; - // - StyleAttribute["saRowVertWidth"] = "saRowVertWidth"; - // - StyleAttribute["saSeparator"] = "saSeparator"; - // - StyleAttribute["saShape"] = "saShape"; - // Deprecated - StyleAttribute["saShowLabels"] = "saShowLabels"; - // - StyleAttribute["saSize"] = "saSize"; - // - StyleAttribute["saSizeBar"] = "saSizeBar"; - // - StyleAttribute["saSmartAutoAlignment"] = "saSmartAutoAlignment"; - // - StyleAttribute["saSpace"] = "saSpace"; - // - StyleAttribute["saStrokeColor"] = "saStrokeColor"; - // - StyleAttribute["saStrokeSize"] = "saStrokeSize"; - // - StyleAttribute["saSubtitle"] = "saSubtitle"; - // - StyleAttribute["saTextAlign"] = "saTextAlign"; - // - StyleAttribute["saTextAlignDefault"] = "saTextAlignDefault"; - // - StyleAttribute["saTextDecoration"] = "saTextDecoration"; - // - StyleAttribute["saTextIndent"] = "saTextIndent"; - // - StyleAttribute["saTextOrientation"] = "saTextOrientation"; - // - StyleAttribute["saTextFormat"] = "saTextFormat"; - // - StyleAttribute["saTickColor"] = "saTickColor"; - // - StyleAttribute["saTickLength"] = "saTickLength"; - // Deprecated - StyleAttribute["saTickSpacing"] = "saTickSpacing"; - // - StyleAttribute["saTitle"] = "saTitle"; - // - StyleAttribute["saTotalLabel"] = "saTotalLabel"; - // - StyleAttribute["saVAlign"] = "saVAlign"; - // - StyleAttribute["saVerticalAlign"] = "saVerticalAlign"; - // - StyleAttribute["saVerticalAlignDefault"] = "saVerticalAlignDefault"; - // - StyleAttribute["saVnaxis"] = "saVnaxis"; - // - StyleAttribute["saVnlabel"] = "saVnlabel"; - // - StyleAttribute["saWarnOnSpecial"] = "saWarnOnSpecial"; - // - StyleAttribute["saWashout"] = "saWashout"; - // - StyleAttribute["saWhiskerEnd"] = "saWhiskerEnd"; - // - StyleAttribute["saWhiskerStrokeColor"] = "saWhiskerStrokeColor"; - // - StyleAttribute["saWhiskerStrokeSize"] = "saWhiskerStrokeSize"; - // - StyleAttribute["saWidth"] = "saWidth"; - // - StyleAttribute["saWidthHeader"] = "saWidthHeader"; - // - StyleAttribute["saWrap"] = "saWrap"; - // - StyleAttribute["saZoom"] = "saZoom"; - // Special attributes used for matching - StyleAttribute["saNone"] = "saNone"; - // Special attributes used for matching - StyleAttribute["saAny"] = "saAny"; - })(StyleAttribute = exports.StyleAttribute || (exports.StyleAttribute = {})); - // lowest bit of enum value denotes two-tone styles; newly added styles should follow this pattern. - var BoxplotStyle; - (function (BoxplotStyle) { - // mask for checking if a style is two-tone - BoxplotStyle["BoxplotStyleTwoTone"] = "two-tone"; - // - BoxplotStyle["BoxplotStyleModern"] = "modern"; - // - BoxplotStyle["BoxplotStyleGlass"] = "glass"; - // - BoxplotStyle["BoxplotStyleClassic"] = "classic"; - // - BoxplotStyle["BoxplotStyleClassicTwoTone"] = "classic-two-tone"; - })(BoxplotStyle = exports.BoxplotStyle || (exports.BoxplotStyle = {})); - // used for boxplots and prediction band whiskers - var WhiskerEnd; - (function (WhiskerEnd) { - // - WhiskerEnd["WhiskerEndNone"] = "none"; - // - WhiskerEnd["WhiskerEndSmall"] = "small"; - // - WhiskerEnd["WhiskerEndLarge"] = "large"; - })(WhiskerEnd = exports.WhiskerEnd || (exports.WhiskerEnd = {})); - // - var StyleElement; - (function (StyleElement) { - // - StyleElement["elementAxis"] = "elementAxis"; - // - StyleElement["elementCell"] = "elementCell"; - // - StyleElement["elementDatalabel"] = "elementDatalabel"; - // - StyleElement["elementDropspot"] = "elementDropspot"; - // - StyleElement["elementHeader"] = "elementHeader"; - // - StyleElement["elementFieldLabel"] = "elementFieldLabel"; - // - StyleElement["elementFieldLabelDecoration"] = "elementFieldLabelDecoration"; - // - StyleElement["elementFieldLabelSpanner"] = "elementFieldLabelSpanner"; - // - StyleElement["elementLabel"] = "elementLabel"; - // - StyleElement["elementMark"] = "elementMark"; - // - StyleElement["elementPane"] = "elementPane"; - // - StyleElement["elementTable"] = "elementTable"; - // - StyleElement["elementWorksheet"] = "elementWorksheet"; - // - StyleElement["elementBasesheet"] = "elementBasesheet"; - // - StyleElement["elementDashboard"] = "elementDashboard"; - // - StyleElement["elementStoryboard"] = "elementStoryboard"; - // - StyleElement["elementCaption"] = "elementCaption"; - // - StyleElement["elementDropline"] = "elementDropline"; - // - StyleElement["elementRefline"] = "elementRefline"; - // - StyleElement["elementRefBand"] = "elementRefBand"; - // - StyleElement["elementRefBoxplot"] = "elementRefBoxplot"; - // - StyleElement["elementGridline"] = "elementGridline"; - // - StyleElement["elementZeroline"] = "elementZeroline"; - // - StyleElement["elementTrendline"] = "elementTrendline"; - // - StyleElement["elementTableDiv"] = "elementTableDiv"; - // - StyleElement["elementHeaderDiv"] = "elementHeaderDiv"; - // - StyleElement["elementMappedImage"] = "elementMappedImage"; - // - StyleElement["elementAction"] = "elementAction"; - // - StyleElement["elementTitle"] = "elementTitle"; - // - StyleElement["elementLegend"] = "elementLegend"; - // - StyleElement["elementLegendTitle"] = "elementLegendTitle"; - // - StyleElement["elementLegendTitleText"] = "elementLegendTitleText"; - // - StyleElement["elementAxisTitle"] = "elementAxisTitle"; - // - StyleElement["elementAnnotation"] = "elementAnnotation"; - // - StyleElement["elementDashTitle"] = "elementDashTitle"; - // - StyleElement["elementDashSubtitle"] = "elementDashSubtitle"; - // - StyleElement["elementDashText"] = "elementDashText"; - // - StyleElement["elementDashZone"] = "elementDashZone"; - // - StyleElement["elementDashContainer"] = "elementDashContainer"; - // - StyleElement["elementScrollbar"] = "elementScrollbar"; - // Static on/off map layers - StyleElement["elementMapLayer"] = "elementMapLayer"; - // Contains washout - StyleElement["elementMap"] = "elementMap"; - // Initially for UrbanMapping/Claritas data - StyleElement["elementMapDataLayer"] = "elementMapDataLayer"; - // - StyleElement["elementQuickFilter"] = "elementQuickFilter"; - // - StyleElement["elementQuickFilterTitle"] = "elementQuickFilterTitle"; - // - StyleElement["elementParameterCtrl"] = "elementParameterCtrl"; - // - StyleElement["elementParameterCtrlTitle"] = "elementParameterCtrlTitle"; - // - StyleElement["elementPageCardTitle"] = "elementPageCardTitle"; - // - StyleElement["elementStoryDescription"] = "elementStoryDescription"; - // - StyleElement["elementStoryPointCaption"] = "elementStoryPointCaption"; - // - StyleElement["elementStoryTitle"] = "elementStoryTitle"; - // - StyleElement["elementTooltip"] = "elementTooltip"; - // - StyleElement["elementAll"] = "elementAll"; - // - StyleElement["elementPageCardBody"] = "elementPageCardBody"; - // - StyleElement["elementDataHighlighter"] = "elementDataHighlighter"; - // - StyleElement["elementDataHighlighterTitle"] = "elementDataHighlighterTitle"; - // Special elements used for matching and organization - StyleElement["elementNone"] = "elementNone"; - // Special elements used for matching and organization - StyleElement["elementAny"] = "elementAny"; - // Special elements used for matching and organization - StyleElement["elementRoot"] = "elementRoot"; - })(StyleElement = exports.StyleElement || (exports.StyleElement = {})); - // Do not mess with these values. They are sometimes used as array indexes/bounds - var StyleDataClass; - (function (StyleDataClass) { - // - StyleDataClass["dcNormal"] = "dcNormal"; - // - StyleDataClass["dcTotal"] = "dcTotal"; - // - StyleDataClass["dcSubtotal"] = "dcSubtotal"; - // - StyleDataClass["dcCOUNT"] = "dcCOUNT"; - })(StyleDataClass = exports.StyleDataClass || (exports.StyleDataClass = {})); - // - var StyleFieldScope; - (function (StyleFieldScope) { - // - StyleFieldScope["fsNone"] = "fsNone"; - // - StyleFieldScope["fsRows"] = "fsRows"; - // - StyleFieldScope["fsCols"] = "fsCols"; - })(StyleFieldScope = exports.StyleFieldScope || (exports.StyleFieldScope = {})); - // - var StyleSwatch; - (function (StyleSwatch) { - // - StyleSwatch["ssUnspecified"] = "ssUnspecified"; - // - StyleSwatch["ssLight"] = "ssLight"; - // - StyleSwatch["ssDark"] = "ssDark"; - })(StyleSwatch = exports.StyleSwatch || (exports.StyleSwatch = {})); - // - var TableauFontStyle; - (function (TableauFontStyle) { - // - TableauFontStyle["NormalStyle"] = "font-style-normal"; - // - TableauFontStyle["Italic"] = "font-style-italic"; - })(TableauFontStyle = exports.TableauFontStyle || (exports.TableauFontStyle = {})); - // Unsupported for Betsy - var TextDecoration; - (function (TextDecoration) { - // - TextDecoration["NoDecoration"] = "text-decoration-none"; - // - TextDecoration["Underline"] = "text-decoration-underline"; - // not yet supported - TextDecoration["Overline"] = "text-decoration-overline"; - // - TextDecoration["Strikethrough"] = "text-decoration-strikethrough"; - })(TextDecoration = exports.TextDecoration || (exports.TextDecoration = {})); - // - var FontWeight; - (function (FontWeight) { - // - FontWeight["NormalWeight"] = "font-weight-normal"; - // - FontWeight["Bold"] = "font-weight-bold"; - })(FontWeight = exports.FontWeight || (exports.FontWeight = {})); - // - var TextOrient; - (function (TextOrient) { - // - TextOrient["TO_Auto"] = "text-orient-auto"; - // - TextOrient["TO_Horz"] = "text-orient-horizontal"; - // - TextOrient["TO_VertUp"] = "text-orient-vertical-up"; - // - TextOrient["TO_VertDown"] = "text-orient-vertical-down"; - })(TextOrient = exports.TextOrient || (exports.TextOrient = {})); - // - var TextAlign; - (function (TextAlign) { - // - TextAlign["TA_Start"] = "text-align-start"; - // - TextAlign["TA_Center"] = "text-align-center"; - // - TextAlign["TA_End"] = "text-align-end"; - })(TextAlign = exports.TextAlign || (exports.TextAlign = {})); - // - var TextWrapMode; - (function (TextWrapMode) { - // - TextWrapMode["TextWrapOff"] = "text-wrap-off"; - // - TextWrapMode["TextWrapTruncate"] = "text-wrap-truncate"; - // - TextWrapMode["TextWrapOn"] = "text-wrap-on"; - // - TextWrapMode["TextWrapAuto"] = "text-wrap-auto"; - })(TextWrapMode = exports.TextWrapMode || (exports.TextWrapMode = {})); - // - var TextWholeLineMode; - (function (TextWholeLineMode) { - // - TextWholeLineMode["TextWholeLineOff"] = "text-whole-line-off"; - // - TextWholeLineMode["TextWholeLineOn"] = "text-whole-line-on"; - // - TextWholeLineMode["TextWholeLineAuto"] = "text-whole-line-auto"; - })(TextWholeLineMode = exports.TextWholeLineMode || (exports.TextWholeLineMode = {})); - // - var TextBreakMode; - (function (TextBreakMode) { - // - TextBreakMode["TextBreakWhitespaceOnly"] = "text-break-ws-only"; - // - TextBreakMode["TextBreakAuto"] = "text-break-auto"; - })(TextBreakMode = exports.TextBreakMode || (exports.TextBreakMode = {})); - // type of aggregation - var AggType; - (function (AggType) { - // - AggType["AGG_SUM"] = "sum"; - // - AggType["AGG_AVG"] = "average"; - // - AggType["AGG_MIN"] = "min"; - // - AggType["AGG_MAX"] = "max"; - // - AggType["AGG_STDEV"] = "std-dev"; - // - AggType["AGG_STDEVP"] = "std-dev-p"; - // - AggType["AGG_VAR"] = "var"; - // - AggType["AGG_VARP"] = "var-p"; - // - AggType["AGG_COUNT"] = "count"; - // - AggType["AGG_COUNTD"] = "count-d"; - // - AggType["AGG_MEDIAN"] = "median"; - // - AggType["AGG_ATTR"] = "attr"; - // - AggType["AGG_NONE"] = "none"; - // - AggType["AGG_PERCENTILE"] = "percentile"; - // - AggType["AGG_YEAR"] = "year"; - // - AggType["AGG_QTR"] = "qtr"; - // - AggType["AGG_MONTH"] = "month"; - // - AggType["AGG_DAY"] = "day"; - // - AggType["AGG_HOUR"] = "hour"; - // - AggType["AGG_MINUTE"] = "minute"; - // - AggType["AGG_SECOND"] = "second"; - // - AggType["AGG_WEEK"] = "week"; - // - AggType["AGG_WEEKDAY"] = "weekday"; - // - AggType["AGG_MONTHYEAR"] = "month-year"; - // - AggType["AGG_MDY"] = "mdy"; - // - AggType["AGG_END"] = "end"; - // - AggType["TRUNC_YEAR"] = "trunc-year"; - // - AggType["TRUNC_QTR"] = "trunc-qtr"; - // - AggType["TRUNC_MONTH"] = "trunc-month"; - // - AggType["TRUNC_WEEK"] = "trunc-week"; - // - AggType["TRUNC_DAY"] = "trunc-day"; - // - AggType["TRUNC_HOUR"] = "trunc-hour"; - // - AggType["TRUNC_MINUTE"] = "trunc-minute"; - // - AggType["TRUNC_SECOND"] = "trunc-second"; - // - AggType["AGG_QUART1"] = "quart1"; - // - AggType["AGG_QUART3"] = "quart3"; - // - AggType["AGG_SKEWNESS"] = "skewness"; - // - AggType["AGG_KURTOSIS"] = "kurtosis"; - // - AggType["AGG_INOUT"] = "in-out"; - // - AggType["AGG_SUM_XSQR"] = "sum-xsqr"; - // - AggType["AGG_USER"] = "user"; - // - AggType["AGG_COLLECT"] = "collect"; - // - AggType["AGG_COVAR"] = "covar"; - // - AggType["AGG_COVARP"] = "covarp"; - // - AggType["AGG_CORR"] = "corr"; - })(AggType = exports.AggType || (exports.AggType = {})); - // DataValueFormatter::DataTypeEncodings has hardcoded values corresponding to following enum members. So any changes here should be done there too - var DataType; - (function (DataType) { - // - DataType["DT_INTEGER"] = "integer"; - // - DataType["DT_REAL"] = "real"; - // - DataType["DT_STRING"] = "cstring"; - // - DataType["DT_DATETIME"] = "datetime"; - // - DataType["DT_BOOLEAN"] = "boolean"; - // - DataType["DT_DATE"] = "date"; - // - DataType["DT_TUPLE"] = "tuple"; - // - DataType["DT_SPATIAL"] = "spatial"; - // - DataType["DT_UNKNOWN"] = "unknown"; - // - DataType["DT_BINARY"] = "binary"; - // - DataType["DT_TIME"] = "time"; - })(DataType = exports.DataType || (exports.DataType = {})); - // - var SortDirection; - (function (SortDirection) { - // ascending - SortDirection["ST_ASC"] = "asc"; - // descending - SortDirection["ST_DESC"] = "desc"; - })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); - // - var SortType; - (function (SortType) { - // Use the defined ordering - SortType["ST_NATURAL"] = "data-source-order"; - // Alphabetic/numeric ordering of data - SortType["ST_ALPHABETIC"] = "alpha"; - // Specify a secondary field - SortType["ST_COMPUTED"] = "field"; - // Manually defined ordering - SortType["ST_MANUAL"] = "manual"; - })(SortType = exports.SortType || (exports.SortType = {})); - // - var SortEnd; - (function (SortEnd) { - // - SortEnd["ST_TOP"] = "top"; - // - SortEnd["ST_BOTTOM"] = "bottom"; - })(SortEnd = exports.SortEnd || (exports.SortEnd = {})); - // - var ForecastColumnType; - (function (ForecastColumnType) { - // - ForecastColumnType["FORECAST_NONE"] = "none"; - // - ForecastColumnType["FORECAST_VALUE"] = "value"; - // - ForecastColumnType["FORECAST_INDICATOR"] = "indicator"; - // - ForecastColumnType["FORECAST_PRECISION"] = "precision"; - // - ForecastColumnType["FORECAST_QUALITY"] = "quality"; - // - ForecastColumnType["FORECAST_FIT_TREND"] = "fit_trend"; - // - ForecastColumnType["FORECAST_PRECISION_PERCENT"] = "precision_percent"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_UPPER"] = "prediction_upper"; - // - ForecastColumnType["FORECAST_PREDICTION_INTERVAL_LOWER"] = "prediction_lower"; - })(ForecastColumnType = exports.ForecastColumnType || (exports.ForecastColumnType = {})); - // - var MarkMarkersMode; - (function (MarkMarkersMode) { - // - MarkMarkersMode["MMM_Auto"] = "mmm-auto"; - // - MarkMarkersMode["MMM_All"] = "mmm_all"; - // - MarkMarkersMode["MMM_None"] = "mmm_none"; - // - MarkMarkersMode["MMM_Default"] = "mmm_default"; - })(MarkMarkersMode = exports.MarkMarkersMode || (exports.MarkMarkersMode = {})); - // - var PercentMode; - (function (PercentMode) { - // - PercentMode["PERCENT_CELL_IN_PANE"] = "cell-in-pane"; - // - PercentMode["PERCENT_ROW_IN_PANE"] = "row-in-pane"; - // - PercentMode["PERCENT_COLUMN_IN_PANE"] = "column-in-pane"; - // - PercentMode["PERCENT_PANE"] = "pane"; - // - PercentMode["PERCENT_ROW"] = "row"; - // - PercentMode["PERCENT_COLUMN"] = "column"; - // - PercentMode["PERCENT_TABLE"] = "table"; - })(PercentMode = exports.PercentMode || (exports.PercentMode = {})); - // - var SpecialValuesMode; - (function (SpecialValuesMode) { - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_AND_WARN"] = "hide-and-warn"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE"] = "hide"; - // - SpecialValuesMode["SPECIAL_VALUES_HIDE_BREAK_LINES"] = "hide-break-lines"; - // - SpecialValuesMode["SPECIAL_VALUES_SHOW"] = "show"; - })(SpecialValuesMode = exports.SpecialValuesMode || (exports.SpecialValuesMode = {})); - // - var LayoutType; - (function (LayoutType) { - // - LayoutType["LAYOUT_CARTESIAN"] = "cartesian"; - // - LayoutType["LAYOUT_DEFAULT"] = "default"; - })(LayoutType = exports.LayoutType || (exports.LayoutType = {})); - // - var ShelfType; - (function (ShelfType) { - // - ShelfType["ST_NONE"] = "none-shelf"; - // - ShelfType["ST_COLUMNS_SHELF"] = "columns-shelf"; - // - ShelfType["ST_ROWS_SHELF"] = "rows-shelf"; - // - ShelfType["ST_PAGES_SHELF"] = "pages-shelf"; - // - ShelfType["ST_FILTER_SHELF"] = "filter-shelf"; - // - ShelfType["ST_IMAGE_SHELF"] = "image-shelf"; - // - ShelfType["ST_MEASURES_SHELF"] = "measures-shelf"; - // - ShelfType["ST_SHOWME_SHELF"] = "show-me-shelf"; - // - ShelfType["ST_ENCODING_SHELF"] = "encoding-shelf"; - // - ShelfType["ST_CLUSTER_SHELF"] = "cluster-shelf"; - // - ShelfType["ST_GEOMETRY_SHELF"] = "geometry-shelf"; - // - ShelfType["ST_END"] = "end-shelf"; - // - ShelfType["ST_FINAL"] = "final-shelf"; - })(ShelfType = exports.ShelfType || (exports.ShelfType = {})); - // - var RestrictType; - (function (RestrictType) { - // - RestrictType["RT_INTERSECT"] = "rt-intersection"; - // - RestrictType["RT_UNION"] = "rt-union"; - })(RestrictType = exports.RestrictType || (exports.RestrictType = {})); - // - var TooltipMode; - (function (TooltipMode) { - // - TooltipMode["TM_NONE"] = "none"; - // - TooltipMode["TM_STICKY"] = "sticky"; - // - TooltipMode["TM_SMOOTH"] = "smooth"; - })(TooltipMode = exports.TooltipMode || (exports.TooltipMode = {})); - // - var ColumnGroups; - (function (ColumnGroups) { - // 0x01 - ColumnGroups["COLS_IN_OUTPUT"] = "cols-in-output"; - // 0x02 - ColumnGroups["COLS_IN_FILTER_SHELF"] = "cols-in-filter-shelf"; - // 0x04 - ColumnGroups["COLS_REF_BY_FILTERS"] = "cols-ref-by-filters"; - // 0x08 - ColumnGroups["COLS_REF_BY_OMEASURES"] = "cols-ref-by-omeasures"; - // 0x10 - ColumnGroups["COLS_REF_BY_JOIN_LOD"] = "cols-ref-by-join-lod"; - // 0x20 - ColumnGroups["COLS_HIDDEN"] = "cols-hidden"; - // 0x40 - ColumnGroups["COLS_REF_BY_SORTS"] = "cols-ref-by-sorts"; - // - ColumnGroups["COLS_REF_BY_FILTERS_OR_SORTS"] = "cols-ref-by-filters-or-sorts"; - // - ColumnGroups["COLS_ON_SHELVES"] = "cols-on-shelves"; - // - ColumnGroups["COLS_ALL"] = "cols-all"; - })(ColumnGroups = exports.ColumnGroups || (exports.ColumnGroups = {})); - // - var ButtonsOption; - (function (ButtonsOption) { - // - ButtonsOption["BO_HIDE"] = "buttons-hide"; - })(ButtonsOption = exports.ButtonsOption || (exports.ButtonsOption = {})); - // - var SelectionRelaxationOption; - (function (SelectionRelaxationOption) { - // - SelectionRelaxationOption["SRO_ALLOW"] = "selection-relaxation-allow"; - // - SelectionRelaxationOption["SRO_DISALLOW"] = "selection-relaxation-disallow"; - })(SelectionRelaxationOption = exports.SelectionRelaxationOption || (exports.SelectionRelaxationOption = {})); - // - var EncodingType; - (function (EncodingType) { - // a text encoding - EncodingType["ET_TEXT"] = "text-encoding"; - // a color encoding - EncodingType["ET_COLOR"] = "color-encoding"; - // a size encoding - EncodingType["ET_SIZE"] = "size-encoding"; - // a shape encoding - EncodingType["ET_SHAPE"] = "shape-encoding"; - // an image encoding - EncodingType["ET_IMAGE"] = "image-encoding"; - // a sort (path) encoding (currently only for line or polygon charts) - EncodingType["ET_SORT"] = "sort-encoding"; - // a wedge size (angle) encoding (currently only for pie charts) - EncodingType["ET_WEDGESIZE"] = "wedge-size-encoding"; - // a geometry encoding - EncodingType["ET_GEOMETRY"] = "geometry-encoding"; - // a level of detail encoding - EncodingType["ET_LOD"] = "level-of-detail-encoding"; - // encoding used for the data highlighter/legend mechanism - EncodingType["ET_HIGHLIGHT"] = "highlight-encoding"; - // a tooltip encoding - EncodingType["ET_TOOLTIP"] = "tooltip-encoding"; - // a temporary label placed above marks for the table calc dialog - EncodingType["ET_RUNNINGORDER"] = "runningorder-encoding"; - // the number of encodings, this is invalid input for an encoding presentation model - EncodingType["NUM_ENCODINGS"] = "num-encodings"; - // an invalid encoding - EncodingType["ET_INVALID"] = "invalid-encoding"; - })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); - // Enumeration of valid horizontal alignments. - var LabelHAlignment; - (function (LabelHAlignment) { - // - LabelHAlignment["LHA_Left"] = "h-align-left"; - // - LabelHAlignment["LHA_Center"] = "h-align-center"; - // - LabelHAlignment["LHA_Right"] = "h-align-right"; - // - LabelHAlignment["LHA_Automatic"] = "h-align-auto"; - })(LabelHAlignment = exports.LabelHAlignment || (exports.LabelHAlignment = {})); - // Enumeration of valid vertical alignments. - var LabelVAlignment; - (function (LabelVAlignment) { - // - LabelVAlignment["LVA_Bottom"] = "v-align-bottom"; - // - LabelVAlignment["LVA_Center"] = "v-align-center"; - // - LabelVAlignment["LVA_Top"] = "v-align-top"; - // - LabelVAlignment["LVA_Automatic"] = "v-align-auto"; - })(LabelVAlignment = exports.LabelVAlignment || (exports.LabelVAlignment = {})); - // Enumeration of valid label positions. - var LabelPosition; - (function (LabelPosition) { - // Position each text run relative to the center of the original bbox. Use the original bbox as the height and width of the text mark. Used for non-stacked OO text marks. - LabelPosition["CenterInOriginalBbox"] = "label-position-center-in-original-box"; - // Position each text run relative to the bottom left corner of the measured bbox. Use the measured bbox as the width and height of the label. Used for labels - LabelPosition["OriginAtLowerLeft"] = "label-position-origin-at-lower-left"; - // Position each text run relative to the center of the measured bbox. Use the measured bbox as the width and height of the text mark. Used for most text marks. - LabelPosition["OriginAtCenter"] = "label-position-origin-at-center"; - })(LabelPosition = exports.LabelPosition || (exports.LabelPosition = {})); - // Enumeration of ways to use color. Values can be or'ed together to make a mask for allowed options - var ColorMode; - (function (ColorMode) { - // Color user specified - ColorMode["CLRM_User"] = "clrm-user"; - // Color selected automatically - ColorMode["CLRM_Auto"] = "clrm-auto"; - // Color matches mark color - ColorMode["CLRM_Match"] = "clrm-match"; - // No color (transparent or not drawn) - ColorMode["CLRM_None"] = "clrm-none"; - })(ColorMode = exports.ColorMode || (exports.ColorMode = {})); - // - var MarkLabelsMode; - (function (MarkLabelsMode) { - // - MarkLabelsMode["MLM_All"] = "mlm-all"; - // - MarkLabelsMode["MLM_Selection"] = "mlm-selection"; - // - MarkLabelsMode["MLM_Highlight"] = "mlm-highlight"; - // - MarkLabelsMode["MLM_LineEnds"] = "mlm-line-ends"; - // min/max setting - MarkLabelsMode["MLM_Range"] = "mlm-range"; - // most recent (only relevant when date field is in play) - MarkLabelsMode["MLM_MostRecent"] = "mlm-most-recent"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting - MarkLabelsMode["MLM_MultipleValues"] = "mlm-multiple-values"; - // - MarkLabelsMode["MLM_Default"] = "mlm-default"; - })(MarkLabelsMode = exports.MarkLabelsMode || (exports.MarkLabelsMode = {})); - // - var MarkLabelsScope; - (function (MarkLabelsScope) { - // - MarkLabelsScope["MLS_Table"] = "mls-table"; - // - MarkLabelsScope["MLS_Pane"] = "mls-pane"; - // - MarkLabelsScope["MLS_Cell"] = "mls-cell"; - // - MarkLabelsScope["MLS_MultiMark"] = "mls-multimark"; - // ...this is " virtual " (runtime only, not saved, not shown as a user setting) - MarkLabelsScope["MLS_MultipleValues"] = "mls-multiple-values"; - // - MarkLabelsScope["MLS_Default"] = "mls-default"; - })(MarkLabelsScope = exports.MarkLabelsScope || (exports.MarkLabelsScope = {})); - // - var MarkLabelsVisibility; - (function (MarkLabelsVisibility) { - // - MarkLabelsVisibility["MLV_Hidden"] = "mlv-hidden"; - // - MarkLabelsVisibility["MLV_Visible"] = "mlv-visible"; - // - MarkLabelsVisibility["MLV_UseCurrent"] = "mlv-use-current"; - })(MarkLabelsVisibility = exports.MarkLabelsVisibility || (exports.MarkLabelsVisibility = {})); - // - var StackingMode; - (function (StackingMode) { - // - StackingMode["StackingOff"] = "off"; - // - StackingMode["StackingOn"] = "on"; - // - StackingMode["StackingAuto"] = "auto"; - })(StackingMode = exports.StackingMode || (exports.StackingMode = {})); - // - var MarkAlignment; - (function (MarkAlignment) { - // - MarkAlignment["MarkAlignmentLeft"] = "mark-alignment-left"; - // - MarkAlignment["MarkAlignmentRight"] = "mark-alignment-right"; - // - MarkAlignment["MarkAlignmentCenter"] = "mark-alignment-center"; - })(MarkAlignment = exports.MarkAlignment || (exports.MarkAlignment = {})); - // - var PaneLabelComposition; - (function (PaneLabelComposition) { - // - PaneLabelComposition["PLC_None"] = "pane-label-composition-none"; - // - PaneLabelComposition["PLC_Mixed"] = "pane-label-composition-mixed"; - // - PaneLabelComposition["PLC_All"] = "pane-label-composition-all"; - })(PaneLabelComposition = exports.PaneLabelComposition || (exports.PaneLabelComposition = {})); - // The user-specified mark type on the Marks Card - var PrimitiveType; - (function (PrimitiveType) { - // - PrimitiveType["PT_AUTOMATIC"] = "automatic"; - // - PrimitiveType["PT_TEXT"] = "text"; - // - PrimitiveType["PT_IMAGE"] = "image"; - // - PrimitiveType["PT_SHAPE"] = "shape"; - // - PrimitiveType["PT_RECTANGLE"] = "rectangle"; - // - PrimitiveType["PT_BAR"] = "bar"; - // - PrimitiveType["PT_GANTT"] = "gantt"; - // - PrimitiveType["PT_SQUARE"] = "square"; - // - PrimitiveType["PT_CIRCLE"] = "circle"; - // - PrimitiveType["PT_POLYLINE"] = "polyline"; - // line chart - PrimitiveType["PT_LINE"] = "line"; - // - PrimitiveType["PT_POLYGON"] = "polygon"; - // area chart - PrimitiveType["PT_AREA"] = "area"; - // - PrimitiveType["PT_PIE"] = "pie"; - // - PrimitiveType["PT_MULTIPOLYGON"] = "multipolygon"; - // Not an actual primitive type. This is just used to flag the UI that multiple types are in play. - PrimitiveType["PT_MULTIPLE"] = "multiple"; - // used for looping over all values - PrimitiveType["NUM_PRIMITIVES"] = "count"; - // used to flag an unset or invalid state - PrimitiveType["PT_INVALID"] = "invalid"; - })(PrimitiveType = exports.PrimitiveType || (exports.PrimitiveType = {})); - // Defines the way a given primitive behaves on a viz - for instance, a PT_CIRCLE is treated as a point, while a PT_POLYGON would be treated as an area. - var MarkType; - (function (MarkType) { - // - MarkType["MT_POINT"] = "point"; - // - MarkType["MT_LINE"] = "line"; - // - MarkType["MT_AREA"] = "area"; - // - MarkType["MT_INVALID"] = "invalid"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - // PaneAxis is used to describe which axis of a pane is the independent axis. - var PaneAxis; - (function (PaneAxis) { - // The independent axis is inferred from other properties of the pane. - PaneAxis["AXIS_AUTO"] = "auto"; - // - PaneAxis["AXIS_X"] = "x"; - // - PaneAxis["AXIS_Y"] = "y"; - })(PaneAxis = exports.PaneAxis || (exports.PaneAxis = {})); - // - var Rounding; - (function (Rounding) { - // - Rounding["Rounding_None"] = "none"; - // - Rounding["Rounding_Small"] = "small"; - // - Rounding["Rounding_Medium"] = "medium"; - // - Rounding["Rounding_Large"] = "large"; - })(Rounding = exports.Rounding || (exports.Rounding = {})); - // - var LineEnd; - (function (LineEnd) { - // - LineEnd["LineEnd_None"] = "none"; - // - LineEnd["LineEnd_Arrow"] = "arrow"; - // - LineEnd["LineEnd_OpenArrow"] = "open-arrow"; - // - LineEnd["LineEnd_Dot"] = "dot"; - })(LineEnd = exports.LineEnd || (exports.LineEnd = {})); - // - var LineEndSize; - (function (LineEndSize) { - // - LineEndSize["LineEndSize_Smallest"] = "smallest"; - // - LineEndSize["LineEndSize_Smaller"] = "smaller"; - // - LineEndSize["LineEndSize_Small"] = "small"; - // - LineEndSize["LineEndSize_Medium"] = "medium"; - // - LineEndSize["LineEndSize_Large"] = "large"; - // - LineEndSize["LineEndSize_Larger"] = "larger"; - // - LineEndSize["LineEndSize_Largest"] = "largest"; - })(LineEndSize = exports.LineEndSize || (exports.LineEndSize = {})); - // - var BodyType; - (function (BodyType) { - // - BodyType["BodyType_None"] = "none"; - // - BodyType["BodyType_Box"] = "box"; - // - BodyType["BodyType_Edge"] = "edge"; - })(BodyType = exports.BodyType || (exports.BodyType = {})); - // - var StyleTheme; - (function (StyleTheme) { - // - StyleTheme["themeClassic"] = "classic"; - // - StyleTheme["themeModern"] = "modern"; - // - StyleTheme["themeClean"] = "clean"; - // - StyleTheme["themeSmooth"] = "smooth"; - // - StyleTheme["themeCustom"] = "custom"; - })(StyleTheme = exports.StyleTheme || (exports.StyleTheme = {})); - // - var AxisFoldState; - (function (AxisFoldState) { - // - AxisFoldState["afNone"] = "none"; - // - AxisFoldState["afFolded"] = "folded"; - // - AxisFoldState["afSynchronized"] = "synchronized"; - })(AxisFoldState = exports.AxisFoldState || (exports.AxisFoldState = {})); - // - var LinePattern; - (function (LinePattern) { - // - LinePattern["LinePatternNone"] = "none"; - // - LinePattern["LinePatternSolid"] = "solid"; - // - LinePattern["LinePatternDashed"] = "dashed"; - // - LinePattern["LinePatternDotted"] = "dotted"; - })(LinePattern = exports.LinePattern || (exports.LinePattern = {})); - // - var LineVisibility; - (function (LineVisibility) { - // - LineVisibility["LineVisibilityAuto"] = "automatic"; - // - LineVisibility["LineVisibilityOn"] = "on"; - // - LineVisibility["LineVisibilityOff"] = "off"; - })(LineVisibility = exports.LineVisibility || (exports.LineVisibility = {})); - // - var StylesLinePattern; - (function (StylesLinePattern) { - // - StylesLinePattern["StylesLinePatternSolid"] = "solid"; - // - StylesLinePattern["StylesLinePatternDashed"] = "dashed"; - // - StylesLinePattern["StylesLinePatternDotted"] = "dotted"; - })(StylesLinePattern = exports.StylesLinePattern || (exports.StylesLinePattern = {})); - // - var LineCap; - (function (LineCap) { - // - LineCap["LineCapFlat"] = "flat"; - // - LineCap["LineCapSquare"] = "square"; - // - LineCap["LineCapRound"] = "round"; - // - LineCap["LineCapTriangle"] = "triangle"; - })(LineCap = exports.LineCap || (exports.LineCap = {})); - // - var LineJoin; - (function (LineJoin) { - // - LineJoin["BevelJoin"] = "bevel"; - // - LineJoin["MiterJoin"] = "miter"; - // - LineJoin["RoundJoin"] = "round"; - })(LineJoin = exports.LineJoin || (exports.LineJoin = {})); - // - var LineAlignment; - (function (LineAlignment) { - // - LineAlignment["AlignmentCenter"] = "center"; - // - LineAlignment["AlignmentInset"] = "inset"; - })(LineAlignment = exports.LineAlignment || (exports.LineAlignment = {})); - // - var FillMode; - (function (FillMode) { - // - FillMode["FillEvenOdd"] = "even-odd"; - // - FillMode["FillWinding"] = "winding"; - })(FillMode = exports.FillMode || (exports.FillMode = {})); - // - var BorderStyle; - (function (BorderStyle) { - // none - BorderStyle["BorderStyleNone"] = "bs-none"; - // hidden - BorderStyle["BorderStyleHidden"] = "bs-hidden"; - // dotted - BorderStyle["BorderStyleDotted"] = "bs-dotted"; - // dashed - BorderStyle["BorderStyleDashed"] = "bs-dashed"; - // solid - BorderStyle["BorderStyleSolid"] = "bs-solid"; - // double - BorderStyle["BorderStyleDouble"] = "bs-double"; - // groove - BorderStyle["BorderStyleGroove"] = "bs-groove"; - // ridge - BorderStyle["BorderStyleRidge"] = "bs-ridge"; - // inset - BorderStyle["BorderStyleInset"] = "bs-inset"; - // outset - BorderStyle["BorderStyleOutset"] = "bs-outset"; - // invalid - BorderStyle["BorderStyleInvalid"] = "bs-invalid"; - })(BorderStyle = exports.BorderStyle || (exports.BorderStyle = {})); - // - var ColorPaletteType; - (function (ColorPaletteType) { - // - ColorPaletteType["ColorPaletteRegular"] = "color-palette-regular"; - // - ColorPaletteType["ColorPaletteOrderedDiverging"] = "palette-ordered-diverging"; - // - ColorPaletteType["ColorPaletteOrderedLinear"] = "palette-ordered-linear"; - })(ColorPaletteType = exports.ColorPaletteType || (exports.ColorPaletteType = {})); - // - var PaletteFlags; - (function (PaletteFlags) { - // - PaletteFlags["PaletteFlagNone"] = "palette-flag-none"; - // - PaletteFlags["PaletteFlagCustom"] = "palette-flag-custom"; - // - PaletteFlags["PaletteFlagNotQuantitative"] = "palette-flag-not-quantitative"; - // - PaletteFlags["PaletteFlagNotCategorical"] = "palette-flag-not-categorical"; - // - PaletteFlags["PaletteFlagNotReferenceBand"] = "palette-flag-not-reference-band"; - // - PaletteFlags["PaletteFlagNotBoxplot"] = "palette-flag-not-boxplot"; - // - PaletteFlags["PaletteFlagNotFilledMapLight"] = "palette-flag-not-filled-map-light"; - // - PaletteFlags["PaletteFlagNotFilledMapDark"] = "palette-flag-not-filled-map-dark"; - // - PaletteFlags["PaletteFlagLegacy"] = "palette-flag-legacy"; - })(PaletteFlags = exports.PaletteFlags || (exports.PaletteFlags = {})); - // - var DefaultPaletteType; - (function (DefaultPaletteType) { - // - DefaultPaletteType["SmallNominal"] = "palette-default-small-nominal"; - // - DefaultPaletteType["LargeNominal"] = "palette-default-large-nominal"; - // - DefaultPaletteType["Ordinal"] = "palette-default-ordinal"; - // - DefaultPaletteType["QuantitativePositive"] = "palette-default-quant-pos"; - // - DefaultPaletteType["QuantitativeNegative"] = "palette-default-quant-neg"; - // - DefaultPaletteType["QuantitativeDiverging"] = "palette-default-quant-div"; - // - DefaultPaletteType["QuantitativePositiveLight"] = "palette-default-quant-pos-light"; - // - DefaultPaletteType["QuantitativeNegativeLight"] = "palette-default-quant-neg-light"; - // - DefaultPaletteType["QuantitativeDivergingLight"] = "palette-default-quant-div-light"; - // - DefaultPaletteType["QuantitativePositiveArea"] = "palette-default-quant-pos-area"; - // - DefaultPaletteType["QuantitativeNegativeArea"] = "palette-default-quant-neg-area"; - // - DefaultPaletteType["QuantitativeDivergingArea"] = "palette-default-quant-div-area"; - })(DefaultPaletteType = exports.DefaultPaletteType || (exports.DefaultPaletteType = {})); - // - var ShowBounds; - (function (ShowBounds) { - // - ShowBounds["Both"] = "show-both"; - // - ShowBounds["Upper"] = "show-upper"; - // - ShowBounds["Lower"] = "show-lower"; - })(ShowBounds = exports.ShowBounds || (exports.ShowBounds = {})); - // Sample vs. population standard deviation - var StDevType; - (function (StDevType) { - // - StDevType["Sample"] = "stdev-sample"; - // - StDevType["Population"] = "stdev-population"; - })(StDevType = exports.StDevType || (exports.StDevType = {})); - // - var ReferenceLineFormulaGroup; - (function (ReferenceLineFormulaGroup) { - // - ReferenceLineFormulaGroup["None"] = "none"; - // - ReferenceLineFormulaGroup["Line"] = "line"; - // - ReferenceLineFormulaGroup["Band"] = "band"; - // - ReferenceLineFormulaGroup["Distribution"] = "distribution"; - // - ReferenceLineFormulaGroup["Boxplot"] = "boxplot"; - })(ReferenceLineFormulaGroup = exports.ReferenceLineFormulaGroup || (exports.ReferenceLineFormulaGroup = {})); - // - var ReferenceLineScopeType; - (function (ReferenceLineScopeType) { - // - ReferenceLineScopeType["PerCell"] = "per-cell"; - // - ReferenceLineScopeType["PerPane"] = "per-pane"; - // - ReferenceLineScopeType["PerTable"] = "per-table"; - })(ReferenceLineScopeType = exports.ReferenceLineScopeType || (exports.ReferenceLineScopeType = {})); - // how should the line be labeled - var ReferenceLineLabelType; - (function (ReferenceLineLabelType) { - // no label - ReferenceLineLabelType["None"] = "none"; - // an automatically generated label - ReferenceLineLabelType["Automatic"] = "automatic"; - // - ReferenceLineLabelType["Value"] = "value"; - // - ReferenceLineLabelType["Computation"] = "computation"; - // a user defined label - ReferenceLineLabelType["Custom"] = "custom"; - })(ReferenceLineLabelType = exports.ReferenceLineLabelType || (exports.ReferenceLineLabelType = {})); - // how should the line be computed - var ReferenceLineFormulaType; - (function (ReferenceLineFormulaType) { - // a user specified constant value - ReferenceLineFormulaType["Constant"] = "constant"; - // - ReferenceLineFormulaType["Total"] = "total"; - // total of all values at the given scope <- is this correct? looks like comment from FormulaTotal - ReferenceLineFormulaType["Sum"] = "sum"; - // minimum value in the scope - ReferenceLineFormulaType["Min"] = "min"; - // maximum value in the scope - ReferenceLineFormulaType["Max"] = "max"; - // average value in the scope - ReferenceLineFormulaType["Average"] = "average"; - // median value in the scope - ReferenceLineFormulaType["Median"] = "median"; - // the n quantiles values in the scope - ReferenceLineFormulaType["Quantiles"] = "quantiles"; - // a given percentile in the scope - ReferenceLineFormulaType["Percentile"] = "percentile"; - // mean +- standard deviation - ReferenceLineFormulaType["StandardDeviation"] = "standard-deviation"; - // a given confidence interval around the mean - ReferenceLineFormulaType["ConfidenceInterval"] = "confidence-interval"; - // - ReferenceLineFormulaType["MedianConfidenceInterval"] = "median-confidence-interval"; - })(ReferenceLineFormulaType = exports.ReferenceLineFormulaType || (exports.ReferenceLineFormulaType = {})); - // Line or confidence interval or both - var ReferenceLineConfidenceIntervalState; - (function (ReferenceLineConfidenceIntervalState) { - // display line only - ReferenceLineConfidenceIntervalState["LineOnly"] = "line-only"; - // display the line and a confidence interval - ReferenceLineConfidenceIntervalState["LineAndConfidenceInterval"] = "line-and-interval"; - // display confidence interval only - ReferenceLineConfidenceIntervalState["ConfidenceIntervalOnly"] = "interval-only"; - })(ReferenceLineConfidenceIntervalState = exports.ReferenceLineConfidenceIntervalState || (exports.ReferenceLineConfidenceIntervalState = {})); - // type of distribution. i.e. Percentage, Percentile, Quantile, and Standard Deviation - var ReferenceLineDistributionType; - (function (ReferenceLineDistributionType) { - // distribution type percentage - ReferenceLineDistributionType["Percentages"] = "percentages"; - // distribution type percentile - ReferenceLineDistributionType["Percentiles"] = "percentiles"; - // distribution type quantile - ReferenceLineDistributionType["Quantiles"] = "quantiles"; - // distribution type standard deviation - ReferenceLineDistributionType["StandardDeviation"] = "standard-deviation"; - })(ReferenceLineDistributionType = exports.ReferenceLineDistributionType || (exports.ReferenceLineDistributionType = {})); - // the kind of LOD calc to use for a given reference line - var ReferenceLineLODCalcType; - (function (ReferenceLineLODCalcType) { - // Create a formula using a FIXED-like level-of-detail calculation, to which sheet filters apply, that will go onto a specific sheet - ReferenceLineLODCalcType["MeasureFormula"] = "measure-formula"; - // Create a boolean formula that can be used as a filter - ReferenceLineLODCalcType["BooleanFilter"] = "boolean-filter"; - })(ReferenceLineLODCalcType = exports.ReferenceLineLODCalcType || (exports.ReferenceLineLODCalcType = {})); - // - var BoxplotWhiskerType; - (function (BoxplotWhiskerType) { - // - BoxplotWhiskerType["Standard"] = "standard"; - // - BoxplotWhiskerType["Minmax"] = "minmax"; - })(BoxplotWhiskerType = exports.BoxplotWhiskerType || (exports.BoxplotWhiskerType = {})); - // categories of connection types displayed by the connection UI - var ConnectionTypeCategory; - (function (ConnectionTypeCategory) { - // standard database - ConnectionTypeCategory["CTC_Database"] = "database"; - // 'More Items ...' meta item - ConnectionTypeCategory["CTC_More"] = "more"; - // Other file types - ConnectionTypeCategory["CTC_Other"] = "other"; - // invalid connection category - ConnectionTypeCategory["CTC_Invalid"] = "invalid"; - })(ConnectionTypeCategory = exports.ConnectionTypeCategory || (exports.ConnectionTypeCategory = {})); - // a logical grouping of connection types displayed by the connection UI - var ConnectionTypeGroup; - (function (ConnectionTypeGroup) { - // in a file - ConnectionTypeGroup["CTG_File"] = "file"; - // on a server - ConnectionTypeGroup["CTG_Server"] = "server"; - // on a recent server - ConnectionTypeGroup["CTG_MruServer"] = "mru-server"; - // invalid group - ConnectionTypeGroup["CTG_Invalid"] = "invalid"; - })(ConnectionTypeGroup = exports.ConnectionTypeGroup || (exports.ConnectionTypeGroup = {})); - // The type of metadata a column contains - var CubeMetadataCategory; - (function (CubeMetadataCategory) { - // cube's name - CubeMetadataCategory["CMC_Name"] = "name"; - // cube's description - CubeMetadataCategory["CMC_Description"] = "description"; - // cube's last updated timestamp - CubeMetadataCategory["CMC_LastUpdated"] = "last-updated"; - // invalid - CubeMetadataCategory["CMC_Invalid"] = "invalid"; - })(CubeMetadataCategory = exports.CubeMetadataCategory || (exports.CubeMetadataCategory = {})); - // The type of widget to display to the user when they are specifying connection info - var ConnectionWidgetType; - (function (ConnectionWidgetType) { - // show the join area - ConnectionWidgetType["CWT_JoinArea"] = "join-area"; - // show the cube selection ui - ConnectionWidgetType["CWT_CubeSelection"] = "cube-selection"; - // show the google analytics ui - ConnectionWidgetType["CWT_GoogleAnalytics"] = "google-analytics"; - // show the tableau server ui - ConnectionWidgetType["CWT_TableauServer"] = "tableau-server"; - // do not show any connection widget - ConnectionWidgetType["CWT_NoWidget"] = "no-widget"; - // invalid - ConnectionWidgetType["CWT_Invalid"] = "invalid"; - })(ConnectionWidgetType = exports.ConnectionWidgetType || (exports.ConnectionWidgetType = {})); - // The type of google analytics basic info - var GoogleBasicInfoType; - (function (GoogleBasicInfoType) { - // google analytics account - GoogleBasicInfoType["GA_Account"] = "ga-account"; - // google analytics property - GoogleBasicInfoType["GA_Property"] = "ga-property"; - // google analytics view - GoogleBasicInfoType["GA_View"] = "ga-view"; - // invalid - GoogleBasicInfoType["GA_Invalid"] = "invalid"; - })(GoogleBasicInfoType = exports.GoogleBasicInfoType || (exports.GoogleBasicInfoType = {})); - // The way in which a piece of connection information is specified - var ConnectionSpecificationType; - (function (ConnectionSpecificationType) { - // Uses a combo box - ConnectionSpecificationType["CST_ComboBox"] = "combo-box"; - // Uses a line edit - ConnectionSpecificationType["CST_LineEdit"] = "line-edit"; - // Uses a line edit with a browse button next to it - ConnectionSpecificationType["CST_LineEditBrowse"] = "line-edit-browse"; - // invalid - ConnectionSpecificationType["CST_Invalid"] = "invalid"; - })(ConnectionSpecificationType = exports.ConnectionSpecificationType || (exports.ConnectionSpecificationType = {})); - // GA Date Range - var DateRange; - (function (DateRange) { - // - DateRange["DateRangeFirst"] = "date-range-first"; - // - DateRange["DateRangeLast30Days"] = "date-range-last30"; - // - DateRange["DateRangeToday"] = "date-range-today"; - // - DateRange["DateRangeYesterday"] = "date-range-yesterday"; - // - DateRange["DateRangeLastWeek"] = "date-range-last-week"; - // - DateRange["DateRangeLastMonth"] = "date-range-last-month"; - // - DateRange["DateRangeLastYear"] = "date-range-last-year"; - // - DateRange["DateRangeThisWeekToYesterday"] = "date-range-this-week-to-yesterday"; - // - DateRange["DateRangeThisMonthToYesterday"] = "date-range-this-month-to-yesterday"; - // - DateRange["DateRangeThisYearToYesterday"] = "date-range-this-year-to-yesterday"; - // - DateRange["DateRangeLastWeekToYesterday"] = "date-range-last-week-to-yesterday"; - // - DateRange["DateRangeLastMonthToYesterday"] = "date-range-last-month-to-yesterday"; - // - DateRange["DateRangeLastYearToYesterday"] = "date-range-last-year-to-yesterday"; - // - DateRange["DateRangeFixedRange"] = "date-range-fixed-range"; - // - DateRange["DateRangeFixedStart"] = "date-range-fixed-start"; - // - DateRange["DateRangeCount"] = "date-range-count"; - })(DateRange = exports.DateRange || (exports.DateRange = {})); - // Specifies the type of widget to show in ConnectServerWidget - var ConnectServerWidgetType; - (function (ConnectServerWidgetType) { - // invalid - ConnectServerWidgetType["CSWT_Invalid"] = "invalid"; - // microsoft access - ConnectServerWidgetType["CSWT_Access"] = "access"; - // generic odbc - ConnectServerWidgetType["CSWT_ODBC"] = "odbc"; - // cubes - ConnectServerWidgetType["CSWT_Cube"] = "cube"; - // relational data sources - ConnectServerWidgetType["CSWT_Relational"] = "relational"; - })(ConnectServerWidgetType = exports.ConnectServerWidgetType || (exports.ConnectServerWidgetType = {})); - // - var AuthenticationEnumsMode; - (function (AuthenticationEnumsMode) { - // no authentication widget - AuthenticationEnumsMode["AuthModeNone"] = "auth-mode-none"; - // username and password - AuthenticationEnumsMode["AuthModeBasic"] = "auth-mode-basic"; - // username and password can be blank - AuthenticationEnumsMode["AuthModeBasicNoValidateFields"] = "auth-mode-basic-no-validate-fields"; - // only username - AuthenticationEnumsMode["AuthModeBasicUserNameOnly"] = "auth-mode-basic-username-only"; - // aws access key and secret ID - AuthenticationEnumsMode["AuthModeBasicAWS"] = "auth-mode-basic-aws"; - // username, password, and a list of AuthOptions with radio buttons - AuthenticationEnumsMode["AuthModeRadio"] = "auth-mode-radio"; - // Like AuthModeRadio, but enable username/password even for integrated auth - AuthenticationEnumsMode["AuthModeRadioUnindented"] = "auth-mode-radio-unindented"; - // username, password, and a list of AuthOptions with a combobox - AuthenticationEnumsMode["AuthModeComboBox"] = "auth-mode-combobox"; - // Like AuthModeCombobox, but with option not requiring username/password - AuthenticationEnumsMode["AuthModeComboBoxIntegrated"] = "auth-mode-combobox-integrated"; - // driver, authentication, username, realm, etc - AuthenticationEnumsMode["AuthModeHive"] = "auth-mode-hive"; - // none, azure marketplace account, explicit - AuthenticationEnumsMode["AuthModeOData"] = "auth-mode-odata"; - // edition, authentication, sso domain, etc - AuthenticationEnumsMode["AuthModeSharePoint"] = "auth-mode-sharepoint"; - // username, password, client, & language - AuthenticationEnumsMode["AuthModeSAPBW"] = "auth-mode-sapbw"; - // Ability to switch between two different auth modes each in their own modal dialogs (basic and oauth) - AuthenticationEnumsMode["AuthModeSwitchModal"] = "auth-mode-switch-modal"; - })(AuthenticationEnumsMode = exports.AuthenticationEnumsMode || (exports.AuthenticationEnumsMode = {})); - // - var AuthenticationEnumsReconnectMode; - (function (AuthenticationEnumsReconnectMode) { - // Auth not needed for reconnect - AuthenticationEnumsReconnectMode["ReconnectModeNone"] = "reconnect-mode-none"; - // Username and password - AuthenticationEnumsReconnectMode["ReconnectModeBasic"] = "reconnect-mode-basic"; - // Access file - AuthenticationEnumsReconnectMode["ReconnectModeAccess"] = "reconnect-mode-access"; - // Microsoft Azure Data Market (OData) - AuthenticationEnumsReconnectMode["ReconnectModeDataMarket"] = "reconnect-mode-data-market"; - // Google OAuth - AuthenticationEnumsReconnectMode["ReconnectModeGoogleOAuth"] = "reconnect-mode-google-oauth"; - // SalesforceOAuth, with the option of username/password auth - AuthenticationEnumsReconnectMode["ReconnectModeSalesforceOAuth"] = "reconnect-mode-salesforce-oauth"; - // Web data connector - AuthenticationEnumsReconnectMode["ReconnectModeWebData"] = "reconnect-mode-web-data"; - })(AuthenticationEnumsReconnectMode = exports.AuthenticationEnumsReconnectMode || (exports.AuthenticationEnumsReconnectMode = {})); - // - var AuthenticationEnumsAuthOption; - (function (AuthenticationEnumsAuthOption) { - // FIRST - AuthenticationEnumsAuthOption["AuthExplicit"] = "auth-option-explicit"; - // - AuthenticationEnumsAuthOption["AuthExplicitUnindented"] = "auth-option-explicit-unindented"; - // - AuthenticationEnumsAuthOption["AuthUseWindows"] = "auth-option-use-windows"; - // - AuthenticationEnumsAuthOption["AuthUseWindowsPreferred"] = "auth-option-windows-preferred"; - // - AuthenticationEnumsAuthOption["AuthTeradata"] = "auth-option-teradata"; - // - AuthenticationEnumsAuthOption["AuthLDAP"] = "auth-option-ldap"; - // - AuthenticationEnumsAuthOption["AuthVirtualNode"] = "auth-option-virtual-node"; - // - AuthenticationEnumsAuthOption["AuthODataAccount"] = "auth-option-odata"; - // - AuthenticationEnumsAuthOption["AuthNone"] = "auth-option-none"; - // - AuthenticationEnumsAuthOption["AuthKerberos"] = "auth-option-kerberos"; - // Introduced for Kerberos with fallback, recognizing that the db may or may not be on Windows - AuthenticationEnumsAuthOption["AuthIntegrated"] = "auth-option-integrated"; - // - AuthenticationEnumsAuthOption["AuthUsername"] = "auth-option-username"; - // - AuthenticationEnumsAuthOption["AuthUsernameAndPassword"] = "auth-option-username-and-password"; - // - AuthenticationEnumsAuthOption["AuthSSL"] = "auth-option-ssl"; - // - AuthenticationEnumsAuthOption["AuthHDIEmulator"] = "auth-hdi-emulator"; - // - AuthenticationEnumsAuthOption["AuthHDIService"] = "auth-hdi-service"; - // - AuthenticationEnumsAuthOption["AuthHTTP"] = "auth-http"; - // - AuthenticationEnumsAuthOption["AuthHTTPS"] = "auth-https"; - // - AuthenticationEnumsAuthOption["AuthAccessNoSecurity"] = "auth-option-access-no"; - // - AuthenticationEnumsAuthOption["AuthAccessYesSecurity"] = "auth-option-access-yes"; - // - AuthenticationEnumsAuthOption["AuthOAuth"] = "auth-oauth"; - // - AuthenticationEnumsAuthOption["AuthForms"] = "auth-forms"; - // - AuthenticationEnumsAuthOption["AuthThirdPartySSO"] = "auth-third-party-SSO"; - // LAST - AuthenticationEnumsAuthOption["AuthInvalid"] = "auth-option-invalid"; - })(AuthenticationEnumsAuthOption = exports.AuthenticationEnumsAuthOption || (exports.AuthenticationEnumsAuthOption = {})); - // data source validation modes - var DataSourceParserValidationMode; - (function (DataSourceParserValidationMode) { - // - DataSourceParserValidationMode["WorkbookLoadValidation"] = "workbook-load-validation"; - // - DataSourceParserValidationMode["AutoValidation"] = "auto-validation"; - // - DataSourceParserValidationMode["ForceValidation"] = "force-validation"; - // - DataSourceParserValidationMode["PreventValidation"] = "prevent-validation"; - // - DataSourceParserValidationMode["PreventValidationAndThrow"] = "prevent-validation-and-throw"; - })(DataSourceParserValidationMode = exports.DataSourceParserValidationMode || (exports.DataSourceParserValidationMode = {})); - // Enum for DataGrid/MetadataGrid fields reordering - var FieldOrderType; - (function (FieldOrderType) { - // - FieldOrderType["DATASOURCE_ORDER"] = "datasource-order"; - // - FieldOrderType["ALPHA_PER_TABLE"] = "alpha-per-table"; - // - FieldOrderType["ALPHABETICAL_ORDER"] = "alphabetical-order"; - // - FieldOrderType["CUSTOM_ORDER"] = "custom-order"; - })(FieldOrderType = exports.FieldOrderType || (exports.FieldOrderType = {})); - // - var LineInterpolationMode; - (function (LineInterpolationMode) { - // - LineInterpolationMode["LIM_Linear"] = "lim-linear"; - // - LineInterpolationMode["LIM_Step"] = "lim-step"; - // - LineInterpolationMode["LIM_Jump"] = "lim-jump"; - })(LineInterpolationMode = exports.LineInterpolationMode || (exports.LineInterpolationMode = {})); - // - var LineMarkerPosition; - (function (LineMarkerPosition) { - // - LineMarkerPosition["LMP_Left"] = "lmp-left"; - // - LineMarkerPosition["LMP_Center"] = "lmp-center"; - // - LineMarkerPosition["LMP_Right"] = "lmp-right"; - })(LineMarkerPosition = exports.LineMarkerPosition || (exports.LineMarkerPosition = {})); - // Enumeration for the type of join connecting two tables - var SQLJoinType; - (function (SQLJoinType) { - // - SQLJoinType["SQL_InnerJoin"] = "sql-inner-join"; - // - SQLJoinType["SQL_LeftJoin"] = "sql-left-join"; - // - SQLJoinType["SQL_RightJoin"] = "sql-right-join"; - // - SQLJoinType["SQL_FullJoin"] = "sql-full-join"; - // - SQLJoinType["SQL_CrossJoin"] = "sql-cross-join"; - })(SQLJoinType = exports.SQLJoinType || (exports.SQLJoinType = {})); - // - var FolderRole; - (function (FolderRole) { - // - FolderRole["FOLDER_DIMENSIONS"] = "dimensions"; - // - FolderRole["FOLDER_MEASURES"] = "measure"; - // - FolderRole["FOLDER_GROUPS"] = "groups"; - // - FolderRole["FOLDER_PARAMETERS"] = "parameters"; - })(FolderRole = exports.FolderRole || (exports.FolderRole = {})); - // - var FieldTypeIconSet; - (function (FieldTypeIconSet) { - // - FieldTypeIconSet["FT_SET_ALL"] = "all"; - // - FieldTypeIconSet["FT_SET_CUBE_MEASURES"] = "cube-measures"; - // - FieldTypeIconSet["FT_SET_CUBE_DIMENSIONS"] = "cube-dimensions"; - })(FieldTypeIconSet = exports.FieldTypeIconSet || (exports.FieldTypeIconSet = {})); - // - var FieldPivotStrategy; - (function (FieldPivotStrategy) { - // - FieldPivotStrategy["PIVOT_ON_KEY"] = "pivot-on-key"; - // - FieldPivotStrategy["PIVOT_ON_ALIAS"] = "pivot-on-alias"; - })(FieldPivotStrategy = exports.FieldPivotStrategy || (exports.FieldPivotStrategy = {})); - // - var AliasType; - (function (AliasType) { - // - AliasType["ALIAS_NOTSET"] = "alias-not-set"; - // - AliasType["ALIAS_BEGIN"] = "alias-begin"; - // - AliasType["ALIAS_KEY"] = "alias-key"; - // - AliasType["ALIAS_KEY_NAME"] = "alias-key-name"; - // - AliasType["ALIAS_KEY_MEDNAME"] = "alias-key-medname"; - // - AliasType["ALIAS_KEY_LONGNAME"] = "alias-key-longname"; - // - AliasType["ALIAS_NAME"] = "alias-name"; - // - AliasType["ALIAS_NAME_KEY"] = "alias-name-key"; - // - AliasType["ALIAS_MEDNAME"] = "alias-medname"; - // - AliasType["ALIAS_MEDNAME_KEY"] = "alias-medname-key"; - // - AliasType["ALIAS_LONGNAME"] = "alias-longname"; - // - AliasType["ALIAS_LONGNAME_KEY"] = "alias-longname-key"; - // - AliasType["ALIAS_END"] = "alias-end"; - })(AliasType = exports.AliasType || (exports.AliasType = {})); - // - var AliasTypes; - (function (AliasTypes) { - // - AliasTypes["MASK_ALIAS_KEY"] = "mask-alias-key"; - // - AliasTypes["MASK_ALIAS_NAME"] = "mask-alias-name"; - // - AliasTypes["MASK_ALIAS_MEDNAME"] = "mask-alias-medname"; - // - AliasTypes["MASK_ALIAS_LONGNAME"] = "mask-alias-longname"; - })(AliasTypes = exports.AliasTypes || (exports.AliasTypes = {})); - // - var FieldRole; - (function (FieldRole) { - // - FieldRole["ROLE_DIMENSION"] = "dimension"; - // - FieldRole["ROLE_MEASURE"] = "measure"; - // - FieldRole["ROLE_UNKNOWN"] = "unknown"; - })(FieldRole = exports.FieldRole || (exports.FieldRole = {})); - // - var FieldType; - (function (FieldType) { - // - FieldType["TYPE_QUANTITATIVE"] = "quantitative"; - // - FieldType["TYPE_ORDINAL"] = "ordinal"; - // - FieldType["TYPE_NOMINAL"] = "nominal"; - // - FieldType["TYPE_UNKNOWN"] = "unknown"; - })(FieldType = exports.FieldType || (exports.FieldType = {})); - // - var DataSourceOrder; - (function (DataSourceOrder) { - // - DataSourceOrder["DSO_ALPHABETIC"] = "dso-alphabetic"; - // - DataSourceOrder["DSO_ORDINAL"] = "dso-ordinal"; - })(DataSourceOrder = exports.DataSourceOrder || (exports.DataSourceOrder = {})); - // Where the column comes from - var ColumnClass; - (function (ColumnClass) { - // A metadata column (O or Q Measures) - ColumnClass["COL_METADATA"] = "col-metadata"; - // A physical column on the database - ColumnClass["COL_DATABASE"] = "col-database"; - // A numberic bin (a special kind of calculated column) - ColumnClass["COL_NUMERICBIN"] = "col-numericbin"; - // A Categorical bin (group) - ColumnClass["COL_CATEGORICALBIN"] = "col-categoricalbin"; - // A column instance - ColumnClass["COL_INSTANCE"] = "col-instance"; - // A (raw) mdx calculated column - ColumnClass["COL_MDXCALC"] = "col-mdxcalc"; - // A user-defined calculated column, Tableau expression syntax - ColumnClass["COL_USERCALC"] = "col-usercalc"; - // A column that would have been COL_DATABASE, but the underlying database column does not exist - ColumnClass["COL_DANGLING"] = "col-dangling"; - // A column that contains local supplied data (e.g. Latitude) - ColumnClass["COL_LOCALDATA"] = "col-localdata"; - // A column that contains a visual model attribute (e.g. PaneIndex, Color, ...) - ColumnClass["COL_VISUALDATA"] = "col-visualdata"; - // A column that's a Group (a " Set " in UI terminology) - ColumnClass["COL_GROUP"] = "col-group"; - })(ColumnClass = exports.ColumnClass || (exports.ColumnClass = {})); - // - var VTAggType; - (function (VTAggType) { - // - VTAggType["VTAGG_SUM"] = "sum"; - // - VTAggType["VTAGG_AVG"] = "avg"; - // - VTAggType["VTAGG_MIN"] = "min"; - // - VTAggType["VTAGG_MAX"] = "max"; - // - VTAggType["VTAGG_SERVER"] = "server"; - // - VTAggType["VTAGG_NONE"] = "none"; - // - VTAggType["VTAGG_DEFAULT"] = "default"; - })(VTAggType = exports.VTAggType || (exports.VTAggType = {})); - // - var EntityType; - (function (EntityType) { - // - EntityType["NoEnumerationEntity"] = "no-enumeration-entity"; - // - EntityType["DatabaseEntity"] = "database-entity"; - // - EntityType["SchemaEntity"] = "schema-entity"; - // - EntityType["TableEntity"] = "table-entity"; - })(EntityType = exports.EntityType || (exports.EntityType = {})); - // - var PickEntitySearchType; - (function (PickEntitySearchType) { - // - PickEntitySearchType["PickEntitySearchType_StartsWith"] = "starts-with"; - // - PickEntitySearchType["PickEntitySearchType_Contains"] = "contains"; - // - PickEntitySearchType["PickEntitySearchType_ExactMatch"] = "exact-match"; - // - PickEntitySearchType["PickEntitySearchType_DEFAULT"] = "default"; - })(PickEntitySearchType = exports.PickEntitySearchType || (exports.PickEntitySearchType = {})); - // Parsing methods and structures. - var ExpressionOp; - (function (ExpressionOp) { - // - ExpressionOp["LogicalOr"] = "op-logical-or"; - // - ExpressionOp["LogicalAnd"] = "op-logical-and"; - // - ExpressionOp["LogicalNot"] = "op-logical-not"; - // - ExpressionOp["BitwiseXOr"] = "op-bitwise-xor"; - // - ExpressionOp["BitwiseOr"] = "op-bitwise-or"; - // - ExpressionOp["Equals"] = "op-equals"; - // - ExpressionOp["Greater"] = "op-greater"; - // - ExpressionOp["Less"] = "op-less"; - // - ExpressionOp["GEqual"] = "op-gequal"; - // - ExpressionOp["LEqual"] = "op-lequal"; - // - ExpressionOp["NEqual"] = "op-nequal"; - // - ExpressionOp["Plus"] = "op-plus"; - // - ExpressionOp["Minus"] = "op-minus"; - // - ExpressionOp["BitwiseAnd"] = "op-bitwise-and"; - // - ExpressionOp["Multiply"] = "op-multiply"; - // - ExpressionOp["Divide"] = "op-divide"; - // - ExpressionOp["Modulo"] = "op-modulo"; - // - ExpressionOp["Power"] = "op-power"; - // - ExpressionOp["Positive"] = "op-positive"; - // - ExpressionOp["Negative"] = "op-negative"; - // - ExpressionOp["BitwiseNot"] = "op-bitwise-not"; - // - ExpressionOp["Column"] = "op-column"; - // - ExpressionOp["String"] = "op-string"; - // - ExpressionOp["Number"] = "op-number"; - // - ExpressionOp["Date"] = "op-date"; - // - ExpressionOp["Boolean"] = "op-boolean"; - // - ExpressionOp["Funcall"] = "op-funcall"; - // - ExpressionOp["LParen"] = "op-lparen"; - // - ExpressionOp["RParen"] = "op-rparen"; - // - ExpressionOp["Comma"] = "op-comma"; - // - ExpressionOp["Ident"] = "op-ident"; - // - ExpressionOp["Null"] = "op-null"; - // - ExpressionOp["If"] = "op-if"; - // - ExpressionOp["Elseif"] = "op-elseif"; - // - ExpressionOp["Case"] = "op-case"; - // - ExpressionOp["When"] = "op-when"; - // - ExpressionOp["Then"] = "op-then"; - // - ExpressionOp["Else"] = "op-else"; - // - ExpressionOp["EndExpr"] = "op-endexpr"; - // - ExpressionOp["Whitespace"] = "op-whitespace"; - // - ExpressionOp["Comment"] = "op-comment"; - // - ExpressionOp["LBrace"] = "op-lbrace"; - // - ExpressionOp["RBrace"] = "op-rbrace"; - // - ExpressionOp["Colon"] = "op-colon"; - // - ExpressionOp["Bar"] = "op-bar"; - // - ExpressionOp["Txtype"] = "op-txtype"; - // - ExpressionOp["End"] = "op-end"; - // - ExpressionOp["RBrackets"] = "op-rbrackets"; - // used to represent invalid tokens - ExpressionOp["Invalid"] = "op-invalid"; - })(ExpressionOp = exports.ExpressionOp || (exports.ExpressionOp = {})); - // tri-state bool - var TriBool; - (function (TriBool) { - // - TriBool["TB_Invalid"] = "tribool-invalid"; - // - TriBool["TB_False"] = "tribool-false"; - // - TriBool["TB_True"] = "tribool-true"; - })(TriBool = exports.TriBool || (exports.TriBool = {})); - // table calc reference options set - var ReferenceOptionsSet; - (function (ReferenceOptionsSet) { - // - ReferenceOptionsSet["ROS_Relative"] = "reference-options-set-relative"; - // - ReferenceOptionsSet["ROS_Fixed"] = "reference-options-set-fixed"; - // - ReferenceOptionsSet["ROS_Parameter"] = "reference-options-set-parameter"; - // - ReferenceOptionsSet["ROS_None"] = "reference-options-set-none"; - })(ReferenceOptionsSet = exports.ReferenceOptionsSet || (exports.ReferenceOptionsSet = {})); - // widget state - var WidgetState; - (function (WidgetState) { - // - WidgetState["Hidden"] = "widget-state-hidden"; - // - WidgetState["Disabled"] = "widget-state-disabled"; - // - WidgetState["Enabled"] = "widget-state-enabled"; - })(WidgetState = exports.WidgetState || (exports.WidgetState = {})); - // rank type - var RankType; - (function (RankType) { - // - RankType["Competition"] = "rank-type-competition"; - // - RankType["ModifiedCompetition"] = "rank-type-modified-competition"; - // - RankType["Dense"] = "rank-type-dense"; - // - RankType["Unique"] = "rank-type-unique"; - })(RankType = exports.RankType || (exports.RankType = {})); - // - var TableCalcCommandType; - (function (TableCalcCommandType) { - // - TableCalcCommandType["TableCalcCommandClear"] = "clear"; - })(TableCalcCommandType = exports.TableCalcCommandType || (exports.TableCalcCommandType = {})); - // - var CalcNestingLevel; - (function (CalcNestingLevel) { - // - CalcNestingLevel["Primary"] = "primary"; - // used only for type != TC_CUSTOM - CalcNestingLevel["Secondary"] = "secondary"; - // used only for type == TC_CUSTOM - CalcNestingLevel["Nested"] = "nested"; - })(CalcNestingLevel = exports.CalcNestingLevel || (exports.CalcNestingLevel = {})); - // - var DecimalMode; - (function (DecimalMode) { - // - DecimalMode["DecimalModeAutomatic"] = "automatic"; - // - DecimalMode["DecimalModeManual"] = "manual"; - })(DecimalMode = exports.DecimalMode || (exports.DecimalMode = {})); - // - var TableCalcOrderingType; - (function (TableCalcOrderingType) { - // Advanced... - TableCalcOrderingType["OTField"] = "field"; - // Table (Across) - TableCalcOrderingType["OTRows"] = "rows"; - // Table (Down) - TableCalcOrderingType["OTColumns"] = "columns"; - // Table (Across then Down) - TableCalcOrderingType["OTTable"] = "table"; - // Table (Down then Across) - TableCalcOrderingType["OTTableColumnPrecedence"] = "table-column-precedence"; - // Pane Across - TableCalcOrderingType["OTRowInPane"] = "row-in-pane"; - // Pane (Down) - TableCalcOrderingType["OTColumnInPane"] = "column-in-pane"; - // Pane (Across then Down) - TableCalcOrderingType["OTPane"] = "pane"; - // Pane (Down then Across) - TableCalcOrderingType["OTPaneColumnPrecedence"] = "pane-column-precedence"; - // Cell - TableCalcOrderingType["OTCellInPane"] = "cell-in-pane"; - })(TableCalcOrderingType = exports.TableCalcOrderingType || (exports.TableCalcOrderingType = {})); - // - var TableCalcSortMode; - (function (TableCalcSortMode) { - // - TableCalcSortMode["SM_Automatic"] = "sort-mode-automatic"; - // - TableCalcSortMode["SM_Custom"] = "sort-mode-custom"; - })(TableCalcSortMode = exports.TableCalcSortMode || (exports.TableCalcSortMode = {})); - // - var TableCalcTableCalcType; - (function (TableCalcTableCalcType) { - // none (used to initialize variables) - TableCalcTableCalcType["TC_NONE"] = "none"; - // Running Total - TableCalcTableCalcType["TC_CUMULATIVE"] = "cumulative"; - // Moving Calculation - TableCalcTableCalcType["TC_WINDOW"] = "window"; - // Difference From - TableCalcTableCalcType["TC_DIFF"] = "diff"; - // Percent Difference From - TableCalcTableCalcType["TC_PCTDIFF"] = "pct-diff"; - // Percent From - TableCalcTableCalcType["TC_PCTVALUE"] = "pct-value"; - // Percent Of Total - TableCalcTableCalcType["TC_PCTTOTAL"] = "pct-total"; - // Rank - TableCalcTableCalcType["TC_RANK"] = "rank"; - // Percentile - TableCalcTableCalcType["TC_PCTRANK"] = "pct-rank"; - // Custom - TableCalcTableCalcType["TC_CUSTOM"] = "custom"; - })(TableCalcTableCalcType = exports.TableCalcTableCalcType || (exports.TableCalcTableCalcType = {})); - // - var QuickTableCalcCommandType; - (function (QuickTableCalcCommandType) { - // - QuickTableCalcCommandType["QuickTableCalcCommandRunTotal"] = "run-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandDifference"] = "difference"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctDiff"] = "pct-diff"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctTotal"] = "pct-total"; - // - QuickTableCalcCommandType["QuickTableCalcCommandRank"] = "rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandPctRank"] = "pct-rank"; - // - QuickTableCalcCommandType["QuickTableCalcCommandMovingAvg"] = "moving-avg"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtd"] = "ytd"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCgr"] = "cgr"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYOverY"] = "y-over-y"; - // - QuickTableCalcCommandType["QuickTableCalcCommandYtdGrowth"] = "ytd-growth"; - // - QuickTableCalcCommandType["QuickTableCalcCommandCustom"] = "custom"; - })(QuickTableCalcCommandType = exports.QuickTableCalcCommandType || (exports.QuickTableCalcCommandType = {})); - // - var TableCalcAddressCommandType; - (function (TableCalcAddressCommandType) { - // - TableCalcAddressCommandType["TableCalcAddressCommandRel"] = "rel"; - // - TableCalcAddressCommandType["TableCalcAddressCommandAbs"] = "abs"; - // - TableCalcAddressCommandType["TableCalcAddressCommandParam"] = "param"; - // - TableCalcAddressCommandType["TableCalcAddressCommandMore"] = "more"; - })(TableCalcAddressCommandType = exports.TableCalcAddressCommandType || (exports.TableCalcAddressCommandType = {})); - // relative addressing - var TableCalcRelativeAddress; - (function (TableCalcRelativeAddress) { - // - TableCalcRelativeAddress["RelAddrFirst"] = "relative-address-first"; - // - TableCalcRelativeAddress["RelAddrPrevious"] = "relative-address-previous"; - // - TableCalcRelativeAddress["RelAddrNext"] = "relative-address-next"; - // - TableCalcRelativeAddress["RelAddrLast"] = "relative-address-last"; - })(TableCalcRelativeAddress = exports.TableCalcRelativeAddress || (exports.TableCalcRelativeAddress = {})); - // - var CategoricalBinItemType; - (function (CategoricalBinItemType) { - // - CategoricalBinItemType["Unbinned"] = "unbinned"; - // - CategoricalBinItemType["BinMember"] = "categorical-bin-member"; - // - CategoricalBinItemType["Bin"] = "categorical-bin"; - })(CategoricalBinItemType = exports.CategoricalBinItemType || (exports.CategoricalBinItemType = {})); - // The class properties - var CredentialTypePropertiesFlag; - (function (CredentialTypePropertiesFlag) { - // - CredentialTypePropertiesFlag["None"] = "none"; - // - CredentialTypePropertiesFlag["GenericAuthClass"] = "generic-auth-class"; - // - CredentialTypePropertiesFlag["ProviderClass"] = "provider-class"; - // - CredentialTypePropertiesFlag["DataConnectionClass"] = "data-connection-class"; - })(CredentialTypePropertiesFlag = exports.CredentialTypePropertiesFlag || (exports.CredentialTypePropertiesFlag = {})); - // The connector type - var ConnectorType; - (function (ConnectorType) { - // - ConnectorType["Invalid"] = "invalid"; - // - ConnectorType["WebDataConnector"] = "web-data-connector"; - // - ConnectorType["CloudFileConnector"] = "cloud-file-connector"; - // - ConnectorType["LegacyConnector"] = "legacy-connector"; - })(ConnectorType = exports.ConnectorType || (exports.ConnectorType = {})); - // - var TablePillIcon; - (function (TablePillIcon) { - // - TablePillIcon["ListItem"] = "list-item"; - // - TablePillIcon["Sheet"] = "sheet"; - // - TablePillIcon["FoundTable"] = "found-table"; - // - TablePillIcon["NamedRange"] = "named-range"; - // - TablePillIcon["StoredProcedure"] = "stored-procedure"; - })(TablePillIcon = exports.TablePillIcon || (exports.TablePillIcon = {})); - // - var JoinValidationError; - (function (JoinValidationError) { - // - JoinValidationError["JVE_NoError"] = "no-error"; - // - JoinValidationError["JVE_EmptyClause"] = "empty-clause"; - // - JoinValidationError["JVE_TypeMismatch"] = "type-mismatch"; - // - JoinValidationError["JVE_InvalidField"] = "invalid-field"; - // - JoinValidationError["JVE_BadClause"] = "bad-clause"; - // - JoinValidationError["JVE_BadInputRelation"] = "bad-input-relation"; - // - JoinValidationError["JVE_RepeatedFieldReferences"] = "repeated-field-references"; - // - JoinValidationError["JVE_UnsupportedJoinType"] = "unsupported-join-type"; - // - JoinValidationError["JVE_InvalidCalculation"] = "invalid-calculation"; - // - JoinValidationError["JVE_NonSpatialType"] = "non-spatial-type"; - // - JoinValidationError["JVE_NonSpatialComparison"] = "non-spatial-comp"; - // - JoinValidationError["JVE_Unknown"] = "unknown"; - })(JoinValidationError = exports.JoinValidationError || (exports.JoinValidationError = {})); - // - var ConnectionTypeEnum; - (function (ConnectionTypeEnum) { - // -d-s is used to force the enum generator to generate DS with capital letters in .cs just like the .cpp - ConnectionTypeEnum["InvalidDS"] = "invalid-d-s"; - // - ConnectionTypeEnum["FileDS"] = "file-d-s"; - // - ConnectionTypeEnum["ServerDS"] = "server-d-s"; - // - ConnectionTypeEnum["InternetDS"] = "internet-d-s"; - // - ConnectionTypeEnum["TableauServerDS"] = "tableau-server-d-s"; - })(ConnectionTypeEnum = exports.ConnectionTypeEnum || (exports.ConnectionTypeEnum = {})); - // - var ConnectionErrorStage; - (function (ConnectionErrorStage) { - // - ConnectionErrorStage["Unknown"] = "unknown"; - // - ConnectionErrorStage["CreateProtocolFailed"] = "create-protocol-failed"; - // - ConnectionErrorStage["LoadMetadataFailed"] = "load-metadata-failed"; - })(ConnectionErrorStage = exports.ConnectionErrorStage || (exports.ConnectionErrorStage = {})); - // - var SetTickOriginResult; - (function (SetTickOriginResult) { - // - SetTickOriginResult["Success"] = "set-tick-origin-success-result"; - // - SetTickOriginResult["ParseFailure"] = "set-tick-origin-parse-failure-result"; - // - SetTickOriginResult["ValueFailure"] = "set-tick-origin-value-failure-result"; - })(SetTickOriginResult = exports.SetTickOriginResult || (exports.SetTickOriginResult = {})); - // - var SetTickSpacingResult; - (function (SetTickSpacingResult) { - // - SetTickSpacingResult["Success"] = "set-tick-spacing-success-result"; - // - SetTickSpacingResult["ParseFailure"] = "set-tick-spacing-parse-failure-result"; - // - SetTickSpacingResult["ValueFailure"] = "set-tick-spacing-value-failure-result"; - })(SetTickSpacingResult = exports.SetTickSpacingResult || (exports.SetTickSpacingResult = {})); - // The result of setting one end of an axis range - var SetAxisRangeResult; - (function (SetAxisRangeResult) { - // - SetAxisRangeResult["Success"] = "set-axis-range-success-result"; - // - SetAxisRangeResult["Failure"] = "set-axis-range-failure-result"; - })(SetAxisRangeResult = exports.SetAxisRangeResult || (exports.SetAxisRangeResult = {})); - // The type of an axis' extent - var AxisExtentType; - (function (AxisExtentType) { - // - AxisExtentType["Automatic"] = "axis-extent-automatic"; - // - AxisExtentType["Uniform"] = "axis-extent-uniform"; - // - AxisExtentType["Independent"] = "axis-extent-independent"; - // - AxisExtentType["Fixed"] = "axis-extent-fixed"; - })(AxisExtentType = exports.AxisExtentType || (exports.AxisExtentType = {})); - // Enumeration of units tick spacing can take - var TickSpacingUnits; - (function (TickSpacingUnits) { - // - TickSpacingUnits["NoUnits"] = "no-units"; - // - TickSpacingUnits["Years"] = "years"; - // - TickSpacingUnits["Quarters"] = "quarters"; - // - TickSpacingUnits["Months"] = "months"; - // - TickSpacingUnits["Weeks"] = "weeks"; - // - TickSpacingUnits["Days"] = "days"; - // - TickSpacingUnits["Hours"] = "hours"; - // - TickSpacingUnits["Minutes"] = "minutes"; - // - TickSpacingUnits["Seconds"] = "seconds"; - })(TickSpacingUnits = exports.TickSpacingUnits || (exports.TickSpacingUnits = {})); - // Enumeration of whether totals are included in or excluded from the color encoding - var TotalsInclusion; - (function (TotalsInclusion) { - // Totals included in color encoding - TotalsInclusion["IncludeTotals"] = "include-totals"; - // Totals excluded from color encoding - TotalsInclusion["ExcludeTotals"] = "exclude-totals"; - })(TotalsInclusion = exports.TotalsInclusion || (exports.TotalsInclusion = {})); - // How tick marks are being calculated - var TickMarkState; - (function (TickMarkState) { - // - TickMarkState["TicksAutomatic"] = "ticks-automatic"; - // - TickMarkState["TicksManual"] = "ticks-manual"; - // - TickMarkState["TicksNone"] = "ticks-None"; - })(TickMarkState = exports.TickMarkState || (exports.TickMarkState = {})); - // Setting for type of axis range - var AxisRangeType; - (function (AxisRangeType) { - // - AxisRangeType["AutomaticRange"] = "automatic-range"; - // - AxisRangeType["UniformRange"] = "uniform-range"; - // - AxisRangeType["IndependentRange"] = "independent-range"; - // - AxisRangeType["FixedRange"] = "fixed-range"; - // - AxisRangeType["FixedMin"] = "fixed-min"; - // - AxisRangeType["FixedMax"] = "fixed-max"; - // - AxisRangeType["FixedMinUniformMax"] = "fixed-min-uniform-max"; - // - AxisRangeType["FixedMinIndependentMax"] = "fixed-min-independent-max"; - // - AxisRangeType["FixedMaxUniformMin"] = "fixed-max-uniform-min"; - // - AxisRangeType["FixedMaxIndependentMin"] = "fixed-max-independent-min"; - // - AxisRangeType["FixedRangeOrdinal"] = "fixed-range-ordinal"; - })(AxisRangeType = exports.AxisRangeType || (exports.AxisRangeType = {})); - // represents type of widget on the toolbar of rich text editor - var RichTextEditorWidgetKey; - (function (RichTextEditorWidgetKey) { - // - RichTextEditorWidgetKey["None"] = "none"; - // - RichTextEditorWidgetKey["FontSize"] = "fontsize"; - // - RichTextEditorWidgetKey["FontName"] = "fontname"; - // - RichTextEditorWidgetKey["FontColor"] = "color"; - // - RichTextEditorWidgetKey["Bold"] = "bold"; - // - RichTextEditorWidgetKey["Italic"] = "italic"; - // - RichTextEditorWidgetKey["Underline"] = "underline"; - // - RichTextEditorWidgetKey["AlignLeft"] = "justifyleft"; - // - RichTextEditorWidgetKey["AlignCenter"] = "justifycenter"; - // - RichTextEditorWidgetKey["AlignRight"] = "justifyright"; - // - RichTextEditorWidgetKey["ClearFormatting"] = "clearformatting"; - // - RichTextEditorWidgetKey["TableauKeywords"] = "tableaukeywords"; - })(RichTextEditorWidgetKey = exports.RichTextEditorWidgetKey || (exports.RichTextEditorWidgetKey = {})); - // - var CellSizeChange; - (function (CellSizeChange) { - // - CellSizeChange["CSC_Taller"] = "taller"; - // - CellSizeChange["CSC_Shorter"] = "shorter"; - // - CellSizeChange["CSC_Wider"] = "wider"; - // - CellSizeChange["CSC_Narrower"] = "narrower"; - // - CellSizeChange["CSC_Bigger"] = "bigger"; - // - CellSizeChange["CSC_Smaller"] = "smaller"; - })(CellSizeChange = exports.CellSizeChange || (exports.CellSizeChange = {})); - // - var CellTypeEnum; - (function (CellTypeEnum) { - // - CellTypeEnum["CLT_Square"] = "square"; - // - CellTypeEnum["CLT_Text"] = "text"; - })(CellTypeEnum = exports.CellTypeEnum || (exports.CellTypeEnum = {})); - // represents type of formatting pres model - var TypeOfFormatItem; - (function (TypeOfFormatItem) { - // - TypeOfFormatItem["FT_FormatItem"] = "formatItem"; - // - TypeOfFormatItem["FT_FormatContainer"] = "formatContainer"; - // - TypeOfFormatItem["FT_FormatControl"] = "formatControl"; - })(TypeOfFormatItem = exports.TypeOfFormatItem || (exports.TypeOfFormatItem = {})); - // represents type of formatting container - var TypeOfFormatContainer; - (function (TypeOfFormatContainer) { - // - TypeOfFormatContainer["FT_FormatPane"] = "formatPane"; - // - TypeOfFormatContainer["FT_FormatSection"] = "formatSection"; - // - TypeOfFormatContainer["FT_CollapsibleSection"] = "collapsibleSection"; - // - TypeOfFormatContainer["FT_CompositeContainer"] = "compositeContainer"; - // - TypeOfFormatContainer["FT_UnitContainer"] = "unitContainer"; - // - TypeOfFormatContainer["FT_Tab"] = "tab"; - // - TypeOfFormatContainer["FT_TabGroup"] = "tabGroup"; - })(TypeOfFormatContainer = exports.TypeOfFormatContainer || (exports.TypeOfFormatContainer = {})); - // represents type of formatting control - var TypeOfFormatControl; - (function (TypeOfFormatControl) { - // - TypeOfFormatControl["FT_None"] = "none"; - // - TypeOfFormatControl["FT_NumericControl"] = "numeric-control"; - // - TypeOfFormatControl["FT_TextControl"] = "text-control"; - // - TypeOfFormatControl["FT_ColorControl"] = "color-control"; - // - TypeOfFormatControl["FT_SelectorControl"] = "selector-control"; - // - TypeOfFormatControl["FT_ToggleControl"] = "toggle-control"; - })(TypeOfFormatControl = exports.TypeOfFormatControl || (exports.TypeOfFormatControl = {})); - // represents type of formatting widget - var FormatWidgetKey; - (function (FormatWidgetKey) { - // - FormatWidgetKey["FWK_None"] = "none"; - // - FormatWidgetKey["FWK_FontFamily"] = "fontFamily"; - // - FormatWidgetKey["FWK_FontSize"] = "fontSize"; - // - FormatWidgetKey["FWK_ColorSwatch"] = "colorSwatch"; - // - FormatWidgetKey["FWK_Bold"] = "bold"; - // - FormatWidgetKey["FWK_Italics"] = "italics"; - // - FormatWidgetKey["FWK_Underline"] = "underline"; - // - FormatWidgetKey["FWK_LineVisibility"] = "lineVisibility"; - // - FormatWidgetKey["FWK_LinePattern"] = "linePattern"; - // - FormatWidgetKey["FWK_LineSize"] = "lineSize"; - // - FormatWidgetKey["FWK_NumberType"] = "numericType"; - // - FormatWidgetKey["FWK_DecimalPlaces"] = "decimalPlaces"; - // - FormatWidgetKey["FWK_ThousandsSeparator"] = "thousandsSeparator"; - // - FormatWidgetKey["FWK_NumericUnits"] = "numericUnits"; - })(FormatWidgetKey = exports.FormatWidgetKey || (exports.FormatWidgetKey = {})); - // represents identifier for each node in format pane - var FormatNodeIdentifier; - (function (FormatNodeIdentifier) { - // - FormatNodeIdentifier["Format_None_Key"] = "none"; - // - FormatNodeIdentifier["Format_Workbook_Key"] = "workbook"; - // - FormatNodeIdentifier["Format_Font_Key"] = "font"; - // - FormatNodeIdentifier["Format_Color_Key"] = "color"; - // - FormatNodeIdentifier["Format_Lines_Key"] = "lines"; - // - FormatNodeIdentifier["Format_FontAll_Key"] = "font-all"; - // - FormatNodeIdentifier["Format_FontAllControls_Key"] = "font-all-controls"; - // - FormatNodeIdentifier["Format_FontMore_Key"] = "font-more"; - // - FormatNodeIdentifier["Format_FontWorksheetTitles_Key"] = "worksheet-titles"; - // - FormatNodeIdentifier["Format_FontToolTip_Key"] = "font-tooltip"; - // - FormatNodeIdentifier["Format_FontWorksheet_Key"] = "font-worksheet"; - // - FormatNodeIdentifier["Format_FontDashTitles_Key"] = "dash-titles"; - // - FormatNodeIdentifier["Format_FontStoryTitles_Key"] = "story-titles"; - // - FormatNodeIdentifier["Format_FontTitlesControls_Key"] = "titles-controls"; - // - FormatNodeIdentifier["Format_FontTooltipControls_Key"] = "tooltip-controls"; - // - FormatNodeIdentifier["Format_FontWorksheetControls_Key"] = "worksheet-controls"; - // - FormatNodeIdentifier["Format_LineMore_Key"] = "line-more"; - // - FormatNodeIdentifier["Format_LineGrid_Key"] = "line-grid"; - // - FormatNodeIdentifier["Format_LineGridTabs_Key"] = "line-grid-tabs"; - // - FormatNodeIdentifier["Format_LineZero_Key"] = "line-zero"; - // - FormatNodeIdentifier["Format_LineZeroTabs_Key"] = "line-zero-tabs"; - // - FormatNodeIdentifier["Format_LineAxisTick_Key"] = "line-axis-tick"; - // - FormatNodeIdentifier["Format_LineAxisTickTabs_Key"] = "line-axis-tick-tabs"; - // - FormatNodeIdentifier["Format_LineAxisRuler_Key"] = "line-axis-ruler"; - // - FormatNodeIdentifier["Format_LineAxisRulerTabs_Key"] = "line-axis-ruler-tabs"; - // - FormatNodeIdentifier["Format_LineHeaderDivider_Key"] = "line-header-divider"; - // - FormatNodeIdentifier["Format_LineHeaderDividerTabs_Key"] = "line-header-divider-tabs"; - // - FormatNodeIdentifier["Format_LinePaneDivider_Key"] = "line-paneDivider"; - // - FormatNodeIdentifier["Format_LinePaneDividerTabs_Key"] = "line-paneDivider-tabs"; - // - FormatNodeIdentifier["Format_LineGridAll_Key"] = "line-grid-all"; - // - FormatNodeIdentifier["Format_LineGridRow_Key"] = "line-grid-row"; - // - FormatNodeIdentifier["Format_LineGridColumn_Key"] = "line-grid-column"; - // - FormatNodeIdentifier["Format_LineZeroAll_Key"] = "line-zero-all"; - // - FormatNodeIdentifier["Format_LineZeroRow_Key"] = "line-zero-row"; - // - FormatNodeIdentifier["Format_LineZeroColumn_Key"] = "line-zero-column"; - // - FormatNodeIdentifier["Format_LineAxisTickAll_Key"] = "line-axis-tick-all"; - // - FormatNodeIdentifier["Format_LineAxisTickRow_Key"] = "line-axis-tick-row"; - // - FormatNodeIdentifier["Format_LineAxisTickColumn_Key"] = "line-axis-tick-column"; - // - FormatNodeIdentifier["Format_LineAxisRulerAll_Key"] = "line-axis-ruler-all"; - // - FormatNodeIdentifier["Format_LineAxisRulerRow_Key"] = "line-axis-ruler-row"; - // - FormatNodeIdentifier["Format_LineAxisRulerColumn_Key"] = "line-axis-ruler-column"; - // - FormatNodeIdentifier["Format_LineReference_Key"] = "line-reference"; - // - FormatNodeIdentifier["Format_LineDrop_Key"] = "line-drop"; - // - FormatNodeIdentifier["Format_LineTrend_Key"] = "line-trend"; - // - FormatNodeIdentifier["Format_LineVisibility_Key"] = "line-visibility"; - // - FormatNodeIdentifier["Format_LinePattern_Key"] = "line-pattern"; - // - FormatNodeIdentifier["Format_LineWidth_Key"] = "line-width"; - // - FormatNodeIdentifier["Format_LineColor_Key"] = "line-color"; - // - FormatNodeIdentifier["Format_TickColor_Key"] = "tick-color"; - // - FormatNodeIdentifier["Format_BorderPattern_Key"] = "border-pattern"; - // - FormatNodeIdentifier["Format_BorderColor_Key"] = "border-color"; - // - FormatNodeIdentifier["Format_DividerColor_Key"] = "divider-color"; - // - FormatNodeIdentifier["Format_FontFamily_Key"] = "font-family-key"; - // - FormatNodeIdentifier["Format_FontSize_Key"] = "font-size-key"; - // - FormatNodeIdentifier["Format_Bold_Key"] = "bold-key"; - // - FormatNodeIdentifier["Format_Italics_Key"] = "italics-key"; - // - FormatNodeIdentifier["Format_Underline_Key"] = "underline-key"; - // - FormatNodeIdentifier["Format_FontColor_Key"] = "font-color-key"; - // - FormatNodeIdentifier["Format_Number_Container_Key"] = "number-container"; - // - FormatNodeIdentifier["Format_Number_Type_Key"] = "number-container-type"; - // - FormatNodeIdentifier["Format_Number_Units_Key"] = "number-container-units"; - // - FormatNodeIdentifier["Format_Number_Decimal_Key"] = "number-container-decimal"; - // - FormatNodeIdentifier["Format_Number_Thousands_Separator_Key"] = "number-container-thousands-separator"; - // - FormatNodeIdentifier["Format_FontPickerMinimal_Key"] = "font-picker-minimal"; - // - FormatNodeIdentifier["Format_FontPickerDefault_Key"] = "font-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerDefault_Key"] = "line-picker-default"; - // - FormatNodeIdentifier["Format_LinePickerNoVis_Key"] = "line-picker-no-visibility"; - // - FormatNodeIdentifier["Format_LineAxisTickPicker_Key"] = "line-axis-tick-picker"; - })(FormatNodeIdentifier = exports.FormatNodeIdentifier || (exports.FormatNodeIdentifier = {})); - // Format prepended to format strings to specify type - var FormatCode; - (function (FormatCode) { - // - FormatCode["AutoFormat"] = "auto-format"; - // - FormatCode["SystemLongDate"] = "system-long-date"; - // - FormatCode["SystemShortDate"] = "system-short-date"; - // - FormatCode["SystemNumber"] = "system-number"; - // - FormatCode["SystemCurrency"] = "system-currency"; - // - FormatCode["SystemTime"] = "system-time"; - // - FormatCode["Custom"] = "custom"; - // - FormatCode["CustomICU"] = "custom-icu"; - // - FormatCode["CustomNumber"] = "custom-number"; - // - FormatCode["CustomCurrency"] = "custom-currency"; - // - FormatCode["CustomScientific"] = "custom-scientific"; - // - FormatCode["CustomPercentage"] = "custom-percentage"; - })(FormatCode = exports.FormatCode || (exports.FormatCode = {})); - // Units specified in a format string - var UnitsFormatEnum; - (function (UnitsFormatEnum) { - // - UnitsFormatEnum["UnitsFmtNone"] = "units-none"; - // - UnitsFormatEnum["UnitsFmtThousands"] = "units-thousands"; - // - UnitsFormatEnum["UnitsFmtMillions"] = "units-millions"; - // - UnitsFormatEnum["UnitsFmtBillionsEnglish"] = "units-billions-english"; - // - UnitsFormatEnum["UnitsFmtBillionsStandard"] = "units-billions-standard"; - })(UnitsFormatEnum = exports.UnitsFormatEnum || (exports.UnitsFormatEnum = {})); - // represents the color swatch that will be used in the ColorControlPresModel - var ColorSwatchType; - (function (ColorSwatchType) { - // - ColorSwatchType["CST_Dark"] = "dark-swatch"; - // - ColorSwatchType["CST_Light"] = "light-swatch"; - })(ColorSwatchType = exports.ColorSwatchType || (exports.ColorSwatchType = {})); - // represents the type of a style picker, affecting the preview rendering and, possibly, the layout - var PickerType; - (function (PickerType) { - // - PickerType["PT_None"] = "none"; - // - PickerType["PT_Font"] = "font"; - // - PickerType["PT_Line"] = "line"; - // - PickerType["PT_Number"] = "number"; - })(PickerType = exports.PickerType || (exports.PickerType = {})); - // - var UpdateScope; - (function (UpdateScope) { - // - UpdateScope["US_Worksheet"] = "worksheet"; - // - UpdateScope["US_Dashboard"] = "dashboard"; - // - UpdateScope["US_QuickFilters"] = "quick-filters"; - // - UpdateScope["US_Story"] = "story"; - })(UpdateScope = exports.UpdateScope || (exports.UpdateScope = {})); - // - var ParameterCtrlTypesDisplayMode; - (function (ParameterCtrlTypesDisplayMode) { - // - ParameterCtrlTypesDisplayMode["MODE_TYPE_IN"] = "type_in"; - // - ParameterCtrlTypesDisplayMode["MODE_COMPACT_LIST"] = "compact"; - // - ParameterCtrlTypesDisplayMode["MODE_LIST"] = "list"; - // - ParameterCtrlTypesDisplayMode["MODE_SLIDER"] = "slider"; - // - ParameterCtrlTypesDisplayMode["MODE_DATETIME"] = "datetime"; - })(ParameterCtrlTypesDisplayMode = exports.ParameterCtrlTypesDisplayMode || (exports.ParameterCtrlTypesDisplayMode = {})); - // flags for display options - var ParameterCtrlTypesDisplayFlag; - (function (ParameterCtrlTypesDisplayFlag) { - // - ParameterCtrlTypesDisplayFlag["DISPLAY_CUSTOM_TITLE"] = "custom_title"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_SLIDER"] = "hide_slider_slider"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_READOUT"] = "hide_slider_readout"; - // - ParameterCtrlTypesDisplayFlag["DISPLAY_HIDE_SLIDER_BUTTONS"] = "hide_slider_buttons"; - })(ParameterCtrlTypesDisplayFlag = exports.ParameterCtrlTypesDisplayFlag || (exports.ParameterCtrlTypesDisplayFlag = {})); - // The follow supports 1024 custom palettes, each with 4m shapes. Encoding is palette << PaletteShift | shape. - var ShapeEncodeConstants; - (function (ShapeEncodeConstants) { - // Shift value for palette - ShapeEncodeConstants["EncodePaletteShift"] = "paletteShift"; - // Mask for getting palette from encoded value. (Then shift down) - ShapeEncodeConstants["EncodePaletteMask"] = "paletteMask"; - // Mask for getting shape from encoded value - ShapeEncodeConstants["EncodeShapeMask"] = "shapeMask"; - })(ShapeEncodeConstants = exports.ShapeEncodeConstants || (exports.ShapeEncodeConstants = {})); - // - var ShapeType; - (function (ShapeType) { - // - ShapeType["ShapeCircle"] = "circle"; - // - ShapeType["ShapeSquare"] = "square"; - // - ShapeType["ShapePlus"] = "plus"; - // - ShapeType["ShapeTimes"] = "times"; - // - ShapeType["ShapeAsterisk"] = "asterisk"; - // - ShapeType["ShapeDiamond"] = "diamond"; - // - ShapeType["ShapeTriangle"] = "triangle"; - // - ShapeType["ShapeDownTriangle"] = "down-triangle"; - // - ShapeType["ShapeLeftTriangle"] = "left-triangle"; - // - ShapeType["ShapeRightTriangle"] = "right-triangle"; - // - ShapeType["MaxAllShapes"] = "invalid"; - })(ShapeType = exports.ShapeType || (exports.ShapeType = {})); - // - var ShapePalette; - (function (ShapePalette) { - // built-in palette - ShapePalette["ShapePaletteFilled"] = "filled"; - // custom palettes - ShapePalette["ShapePaletteCustom1"] = "custom1"; - // - ShapePalette["ShapePaletteCustom2"] = "custom2"; - // - ShapePalette["ShapePaletteCustom3"] = "custom3"; - // - ShapePalette["ShapePaletteCustom4"] = "custom4"; - // - ShapePalette["ShapePaletteCustom5"] = "custom5"; - // - ShapePalette["ShapePaletteCustom6"] = "custom6"; - // - ShapePalette["ShapePaletteCustom7"] = "custom7"; - // - ShapePalette["ShapePaletteCustom8"] = "custom8"; - // - ShapePalette["ShapePaletteCustom9"] = "custom9"; - // - ShapePalette["ShapePaletteCustom10"] = "custom10"; - // - ShapePalette["ShapePaletteCustom11"] = "custom11"; - // and so on... - ShapePalette["ShapePaletteCustom12"] = "custom12"; - // - ShapePalette["ShapePaletteHidden"] = "hidden"; - })(ShapePalette = exports.ShapePalette || (exports.ShapePalette = {})); - // ShapeType and palette mapped into a single value. This enum depends on ShapeType and the implementation of ShapeManager::IntEncode. - var ShapeID; - (function (ShapeID) { - // - ShapeID["ShapeIDCircle"] = "shapeIDCircle"; - // - ShapeID["ShapeIDSquare"] = "shapeIDSquare"; - // - ShapeID["ShapeIDPlus"] = "shapeIDPlus"; - // - ShapeID["ShapeIDTimes"] = "shapeIDTimes"; - // - ShapeID["ShapeIDAsterisk"] = "shapeIDAsterisk"; - // - ShapeID["ShapeIDDiamond"] = "shapeIDDiamond"; - // - ShapeID["ShapeIDTriangle"] = "shapeIDTriangle"; - // - ShapeID["ShapeIDDownTriangle"] = "shapeIDDownTriangle"; - // - ShapeID["ShapeIDLeftTriangle"] = "shapeIDLeftTriangle"; - // - ShapeID["ShapeIDRightTriangle"] = "shapeIDRightTriangle"; - // - ShapeID["ShapeIDFilledCircle"] = "shapeIDFilledCircle"; - // - ShapeID["ShapeIDFilledSquare"] = "shapeIDFilledSquare"; - // - ShapeID["ShapeIDFilledPlus"] = "shapeIDFilledPlus"; - // - ShapeID["ShapeIDFilledTimes"] = "shapeIDFilledTimes"; - // - ShapeID["ShapeIDFilledStar"] = "shapeIDFilledStar"; - // - ShapeID["ShapeIDFilledDiamond"] = "shapeIDFilledDiamond"; - // - ShapeID["ShapeIDFilledTriangle"] = "shapeIDFilledTriangle"; - // - ShapeID["ShapeIDFilledDownTriangle"] = "shapeIDFilledDownTriangle"; - // - ShapeID["ShapeIDFilledLeftTriangle"] = "shapeIDFilledLeftTriangle"; - // - ShapeID["ShapeIDFilledRightTriangle"] = "shapeIDFilledRightTriangle"; - // 0+(ShapePaletteHidden< -1; - }); - // Create a mapping of which index in the data dictionary our columns are in - var columnIndices = columns.map(function (vizDataColumn) { - // The columnIndex is in the same position as the paneIndex - var paneIndex = vizDataColumn.paneIndices.indexOf(i); - var columnIndex = vizDataColumn.columnIndices[paneIndex]; - return columnIndex; - }); - // Get the data for the pane we are processing - var vizPane = vizData.paneColumnsData.paneColumnsList[i]; - if (vizPane.vizPaneColumns.length !== columns.length) { - throw new Error('Malformed data table'); - } - var headers = new Array(); - var rows = new Array(); - // Column 0 will be the tuple id column. We can use this as a counter for how many rows we have - var tupleIds = vizPane.vizPaneColumns[0].tupleIds; - var marks = new Array(); - for (var tupleIndex = 0; tupleIndex < tupleIds.length; tupleIndex++) { - // TODO Need to revaluate the place of this logic. If it turns out that we need a separate command - // call to get the marks info, then this logic should not be here but instead in a layer above somewhere - var mark = { - type: api_internal_contract_1.MarkType.Bar, - color: 'red', - tupleId: tupleIds[tupleIndex], - }; - marks.push(mark); - // We will have 1 less value in this row since there's the tupleId column - var cells = new Array(vizPane.vizPaneColumns.length - 1); - for (var j = 1 /* skip the first which is tuple ids */; j < vizPane.vizPaneColumns.length; j++) { - // Next, we need to figure out which column we are reading data for - var column = columns[columnIndices[j]]; - var vizPaneColumnData = vizPane.vizPaneColumns[j]; - // Define the header when we are processing the first row - if (tupleIndex === 0) { - var header = { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - isReferenced: true, - index: j - 1, - fieldCaption: column.fieldCaption - }; - headers.push(header); - } - var value = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.valueIndices[tupleIndex]); - var aliasValue = UnderlyingDataConverter_1.UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, vizPaneColumnData.aliasIndices[tupleIndex]) || ''; - var formattedValue = aliasValue; // TODO - Figure out how to use the formatStrings - var dataCell = { - value: value, - formattedValue: formattedValue, - aliasedValue: aliasValue - }; - // Add our cell to this row - cells[j - 1] = dataCell; - } - rows.push(cells); - } - var dataTable = { - dataTable: rows, - headers: headers, - marks: marks - }; - result.push(dataTable); - }; - // The data model for the VizDataPresModel is a little strange, so this parsing takes some time to figure out. - // There can be multiple panes of data, so we must go through them one at a time to create data tables - for (var i = 0; i < vizData.paneColumnsData.paneColumnsList.length; i++) { - _loop_1(i); - } - return result; - }; - return ActiveMarksDataConverter; - }()); - exports.ActiveMarksDataConverter = ActiveMarksDataConverter; - //# sourceMappingURL=ActiveMarksDataConverter.js.map - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Enums = __webpack_require__(22); - var EnumMappings_1 = __webpack_require__(21); - /** - * Contains static helper methods for converting from an underlying data pres model into the api representation. - * Most of the code is a direct port from ApiUnderlyingDataHandler.cs - * https://opengrok/source/xref/teams_near/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiUnderlyingDataHandler.cs - */ - var UnderlyingDataConverter = (function () { - function UnderlyingDataConverter() { - } - UnderlyingDataConverter.lookupValueFromDictionary = function (dataDictionary, dt, index) { - if (index < 0) { - // per cl 280396 / bugzid 81197 negative data value index means that it is special - dt = Enums.DataType.DT_STRING; - index = -index - 1; - } - var result = null; - var rawValue = UnderlyingDataConverter.getRawValue(dataDictionary, dt, index); - if (rawValue !== null) { - result = rawValue.toString(); - } - return result; - }; - /* tslint:disable-next-line:no-any */ - UnderlyingDataConverter.getRawValue = function (dataDictionary, dt, index) { - if (!dataDictionary.dataSegments) { - return null; - } - for (var _i = 0, _a = Object.keys(dataDictionary.dataSegments); _i < _a.length; _i++) { - var key = _a[_i]; - var dataSegment = dataDictionary.dataSegments[key]; - for (var _b = 0, _c = dataSegment.dataColumns; _b < _c.length; _b++) { - var dataColumn = _c[_b]; - if (!dataColumn || dataColumn.dataType !== dt) { - continue; - } - if (index < dataColumn.dataValues.length) { - return dataColumn.dataValues[index]; - } - index -= dataColumn.dataValues.length; - break; - } - } - return null; - }; - UnderlyingDataConverter.buildDataTable = function (dataDictionary, columns) { - var result = { - dataTable: UnderlyingDataConverter.buildTable(dataDictionary, columns), - headers: columns.map(function (c, i) { return UnderlyingDataConverter.buildColumnModel(c, i); }) - }; - return result; - }; - UnderlyingDataConverter.buildUnderlyingDataTable = function (isSummary, underlyingDataTable) { - var result = { - data: UnderlyingDataConverter.buildDataTable(underlyingDataTable.dataDictionary, underlyingDataTable.underlyingDataTableColumns), - isSummary: isSummary - }; - return result; - }; - UnderlyingDataConverter.buildActiveMarksTable = function (dataDictionary, vizData) { - throw new Error(); - }; - UnderlyingDataConverter.buildColumnModel = function (column, index) { - return { - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(column.dataType), - fieldName: column.fn, - fieldCaption: column.fieldCaption, - isReferenced: !!column.isReferenced, - index: index - }; - }; - UnderlyingDataConverter.buildTable = function (dataDictionary, columns) { - if (columns.length === 0) { - return new Array(); - } - var rowCount = columns[0].formatValIdxs.length; - var columnCount = columns.length; - var result = new Array(rowCount); - // Initialize all of our rows - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - result[rowIndex] = new Array(columnCount); - } - // Go through column-by-column and convert the values - for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) { - var column = columns[columnIndex]; - for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) { - var formattedValue = UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, Enums.DataType.DT_STRING, column.formatValIdxs[rowIndex]); - if (formattedValue === null) { - throw new Error('formattedValue was null'); - } - var value = { - value: UnderlyingDataConverter.lookupValueFromDictionary(dataDictionary, column.dataType, column.valueIndices[rowIndex]), - formattedValue: formattedValue, - aliasedValue: formattedValue - }; - result[rowIndex][columnIndex] = value; - } - } - return result; - }; - return UnderlyingDataConverter; - }()); - exports.UnderlyingDataConverter = UnderlyingDataConverter; - //# sourceMappingURL=UnderlyingDataConverter.js.map - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumMappings_1 = __webpack_require__(21); - /** - * Class containing helper methods for converting from ApiPresModels to their PresLayer equivalents - * - * @export - * @class ApiToPresLayerConverter - */ - var ApiToPresLayerConverter = (function () { - function ApiToPresLayerConverter() { - } - ApiToPresLayerConverter.convertSheetPath = function (apiSheetPath) { - if (!apiSheetPath) { - throw new Error('sheetPath not defined'); - } - var result = { - sheetName: apiSheetPath.sheetName, - isDashboard: apiSheetPath.isDashboard, - storyboard: apiSheetPath.storyboard || '', - flipboardZoneId: apiSheetPath.flipboardZoneID || 0, - storyPointId: apiSheetPath.storyPointID || 0, - }; - return result; - }; - ApiToPresLayerConverter.convertAddInLocator = function (apiAddInLocator) { - var result = { - addInInstanceId: apiAddInLocator.instanceId, - sheetPath: ApiToPresLayerConverter.convertSheetPath(apiAddInLocator.dashboardPath) - }; - return result; - }; - ApiToPresLayerConverter.convertVisualId = function (apiVisualid) { - var result = { - worksheet: apiVisualid.worksheet, - dashboard: apiVisualid.dashboard, - storyboard: apiVisualid.storyboard, - storyPointId: apiVisualid.storyPointID, - flipboardZoneId: apiVisualid.flipboardZoneID - }; - return result; - }; - ApiToPresLayerConverter.convertVisualIdToWorksheet = function (apiVisualId) { - return apiVisualId.worksheet; - }; - ApiToPresLayerConverter.convertVisualIdToDashboard = function (apiVisualId) { - return apiVisualId.dashboard || ''; - }; - ApiToPresLayerConverter.convertFilterValues = function (filterValues) { - if (filterValues.length === 0) { - // platform code expects an empty string for clearing filter values - return ['']; - } - return filterValues; - }; - ApiToPresLayerConverter.convertFilterType = function (filterUpdateType) { - return EnumMappings_1.ApiToPresLayerEnumMappings.filterUpdateType.convert(filterUpdateType); - }; - ApiToPresLayerConverter.ConvertNullOption = function (nullOption) { - return EnumMappings_1.ApiToPresLayerEnumMappings.nullOption.convert(nullOption); - }; - ApiToPresLayerConverter.ConvertFilterDomainType = function (filterDomainType) { - return EnumMappings_1.ApiToPresLayerEnumMappings.filterDomainType.convert(filterDomainType); - }; - return ApiToPresLayerConverter; - }()); - exports.ApiToPresLayerConverter = ApiToPresLayerConverter; - //# sourceMappingURL=ApiToPresLayerConverter.js.map - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var Enums_1 = __webpack_require__(22); - var EnumMappings_1 = __webpack_require__(21); - var PresLayerToApiConverter_1 = __webpack_require__(17); - var FiltersConverter = (function () { - function FiltersConverter() { - } - FiltersConverter.convertFiltersPresModel = function (filterPms) { - var filters = []; - filterPms.forEach(function (filterPm) { - switch (filterPm.filterType) { - case Enums_1.FilterType.FLTR_Categorical: { - filters.push(FiltersConverter.convertCategoricalFilterPresModel(filterPm)); - break; - } - case Enums_1.FilterType.FLTR_Quantitative: { - filters.push(FiltersConverter.convertQuantitativeFilterPresModel(filterPm)); - break; - } - case Enums_1.FilterType.FLTR_RelativeDate: { - filters.push(FiltersConverter.convertRelativeDateFilterPresModel(filterPm)); - break; - } - default: - return; - } - }); - return filters; - }; - FiltersConverter.convertCategoricalFilterPresModel = function (filterPm) { - var selectedValues = filterPm.categoricalFilterInfo.captionedFilterValueList.map(function (filterValue) { - return FiltersConverter.convertFilterValuePresModel(filterValue); - }); - var filter = { - values: selectedValues, - isExclude: filterPm.categoricalFilterInfo.exclude, - filterType: api_internal_contract_1.FilterType.Categorical, - fieldCaption: filterPm.fieldCaption, - fieldName: filterPm.fn, - visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel) - }; - return filter; - }; - FiltersConverter.convertQuantitativeFilterPresModel = function (filterPm) { - var minValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMin); - var maxValue = FiltersConverter.convertFilterValuePresModel(filterPm.quantitativeFilterInfo.captionedRangeMax); - var filter = { - filterType: api_internal_contract_1.FilterType.Range, - fieldCaption: filterPm.fieldCaption, - fieldName: filterPm.fn, - visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel), - min: minValue, - max: maxValue, - includeNullValues: FiltersConverter.convertIncludedNullValues(filterPm.quantitativeFilterInfo.included) - }; - return filter; - }; - FiltersConverter.convertRelativeDateFilterPresModel = function (filterPm) { - var anchorDateValue = FiltersConverter.convertFilterValuePresModel(filterPm.relativeDateFilterInfo.captionedAnchorDate); - var filter = { - filterType: api_internal_contract_1.FilterType.RelativeDate, - fieldCaption: filterPm.fieldCaption, - fieldName: filterPm.fn, - visualId: PresLayerToApiConverter_1.PresLayerToApiConverter.convertVisualId(filterPm.visualIdPresModel), - anchorDate: anchorDateValue, - periodType: EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(filterPm.relativeDateFilterInfo.datePeriodType), - rangeType: EnumMappings_1.PresLayerToApiEnumMappings.dateRangeType.convert(filterPm.relativeDateFilterInfo.dateRangeType), - rangeN: filterPm.relativeDateFilterInfo.rangeN - }; - return filter; - }; - FiltersConverter.convertCategoricalDomain = function (domainPm) { - var domainValues = domainPm.captionedFilterValueList.map(function (filterValue) { - return FiltersConverter.convertFilterValuePresModel(filterValue); - }); - return { values: domainValues }; - }; - FiltersConverter.convertQuantitativeDomain = function (domainPm) { - var minValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMin); - var maxValue = FiltersConverter.convertFilterValuePresModel(domainPm.captionedRangeMax); - return { - max: maxValue, - min: minValue - }; - }; - FiltersConverter.convertFilterValuePresModel = function (dvPM) { - /*tslint:disable-next-line:no-any */ - var value; - switch (dvPM.dataType) { - case Enums_1.DataType.DT_BOOLEAN: { - value = Boolean(dvPM.dataValueStr); - break; - } - case Enums_1.DataType.DT_DATE: { - value = new Date(dvPM.dataValueStr); - break; - } - case Enums_1.DataType.DT_DATETIME: { - value = new Date(dvPM.dataValueStr); - break; - } - case Enums_1.DataType.DT_INTEGER: { - value = Number.parseInt(dvPM.dataValueStr); - break; - } - case Enums_1.DataType.DT_REAL: { - value = Number.parseFloat(dvPM.dataValueStr); - break; - } - // default to string - default: { - value = dvPM.dataValueStr; - break; - } - } - return { - value: value, - // TODO: no easy way of getting back aliased value from platform, will need to investigate further - aliasedValue: '', - formattedValue: dvPM.dataValueDisplayString - }; - }; - FiltersConverter.convertIncludedNullValues = function (includeNull) { - return (includeNull === Enums_1.FiltersQuantitativeIncludedValues.InRangeOrNull || - includeNull === Enums_1.FiltersQuantitativeIncludedValues.All || - includeNull === Enums_1.FiltersQuantitativeIncludedValues.Null); - }; - return FiltersConverter; - }()); - exports.FiltersConverter = FiltersConverter; - //# sourceMappingURL=FiltersConverter.js.map - -/***/ }, -/* 28 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Simple registry class which creates a mapping based on two keys. - * - * @export - * @class MappingRegistry - * @template TInputEnumType - * @template TOutputEnumType - * @template TMappingStorageType - */ - var MappingRegistry = (function () { - function MappingRegistry() { - this._registry = {}; - } - MappingRegistry.prototype.has = function (inputType, outputType) { - var key = this.makeKey(inputType, outputType); - if (!this._registry.hasOwnProperty(key)) { - return false; - } - if (!this._registry[key]) { - return false; - } - return true; - }; - MappingRegistry.prototype.get = function (inputType, outputType) { - if (!this.has(inputType, outputType)) { - throw new Error('Missing requested mapping: ' + inputType + ' to ' + outputType); - } - var key = this.makeKey(inputType, outputType); - return this._registry[key]; - }; - MappingRegistry.prototype.addRegistration = function (inputType, outputType, storageItem) { - var key = this.makeKey(inputType, outputType); - // Add this item - this._registry[key] = storageItem; - }; - /** - * Combines the two keys into a unique string - * - * @private - * @param {TInputEnumType} inputType - * @param {TOutputEnumType} outputType - * @returns {string} - * @memberof MappingRegistry - */ - MappingRegistry.prototype.makeKey = function (inputType, outputType) { - var keyObj = { input: inputType, output: outputType }; - return JSON.stringify(keyObj); - }; - return MappingRegistry; - }()); - exports.MappingRegistry = MappingRegistry; - //# sourceMappingURL=MappingRegistry.js.map - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(4); - var EnumMappings_1 = __webpack_require__(21); - /** - * Contains logic for converting Parameter models into their equivalent Api versions - */ - var ParametersDataConverter = (function () { - function ParametersDataConverter() { - } - ParametersDataConverter.convertParameterList = function (parameters) { - return parameters.map(ParametersDataConverter.convertParameter); - }; - // Converts a single parameter. - // Rough port of https://opengrok/source/xref/dev_nessie/workgroup/vqlweb/scriptsharp/src/UI/Api/ApiParameterHandler.cs#95 - ParametersDataConverter.convertParameter = function (param) { - var currentValue = ParametersDataConverter.convertAliasedDataValue(param.valueAlias, param.formattedValue); - var allowableValuesType = EnumMappings_1.PresLayerToApiEnumMappings.parameterTypesDomainType.convert(param.parameterDomainType); - var result = { - name: param.fieldCaption, - fieldName: param.parameterName, - dataType: EnumMappings_1.PresLayerToApiEnumMappings.dataType.convert(param.dataType), - currentValue: currentValue, - allowableValuesType: allowableValuesType - }; - if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.List) { - var allowableValues = new Array(); - for (var i = 0; i < param.valuesAliases.length; i++) { - var adv = param.valuesAliases[i]; - var formattedValue = param.formattedValues[i]; - allowableValues.push(ParametersDataConverter.convertAliasedDataValue(adv, formattedValue)); - } - result.allowableValues = allowableValues; - } - else if (allowableValuesType === api_internal_contract_1.DomainRestrictionType.Range) { - result.minValue = ParametersDataConverter.makeDataValue(param.valueMin, param.formattedMin); - result.maxValue = ParametersDataConverter.makeDataValue(param.valueMax, param.formattedMax); - result.stepSize = ParametersDataConverter.convertNumber(result.dataType, param.valueInc); - result.dateStepPeriod = EnumMappings_1.PresLayerToApiEnumMappings.dateStepPeriod.convert(param.datePeriodType, false); - } - else { - // Nothing to do in the case that all values are allowed - } - return result; - }; - ParametersDataConverter.convertNumber = function (dataType, value) { - if (value) { - if (dataType === api_internal_contract_1.DataType.Int || dataType === api_internal_contract_1.DataType.Date || dataType === api_internal_contract_1.DataType.DateTime) { - return parseInt(value, 10); - } - else if (dataType === api_internal_contract_1.DataType.Float) { - return parseFloat(value); - } - } - return undefined; - }; - /*tslint:disable-next-line:no-any */ - ParametersDataConverter.makeDataValue = function (value, formattedValue, alias) { - var result = { - value: value, - formattedValue: formattedValue, - aliasedValue: alias || formattedValue - }; - return result; - }; - /*tslint:disable-next-line:no-any */ - ParametersDataConverter.convertAliasedDataValue = function (adv, formattedValue) { - // AliasedDataValues are serialized in kind of a strange way from the platform code. They are output - // as an array of 2 values. The first is the actual value, the second is the alias. See AliasedDataValueSerializer::ToSerializer - if (!adv || !(adv instanceof Array)) { - throw new Error('Invalid aliased data value'); - } - var value = adv[0]; - var alias = adv.length < 2 ? undefined : adv[1]; - return ParametersDataConverter.makeDataValue(value, formattedValue, alias); - }; - return ParametersDataConverter; - }()); - exports.ParametersDataConverter = ParametersDataConverter; - //# sourceMappingURL=ParametersDataConverter.js.map - -/***/ }, -/* 30 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implemenation of the PresentationLayer contract with a bit of extra information - * added to work with add-ins. Most work is delegated down to the interopObject which - * communicates directly with the c++ layer via QWebChannel - * - * @class AddInApiPresLayerImpl - * @implements {contract.PresentationLayer} - */ - var AddInApiPresLayerImpl = (function () { - function AddInApiPresLayerImpl(_interopObject) { - var _this = this; - this._interopObject = _interopObject; - this._notificationHandlers = {}; - if (_interopObject && _interopObject.OnNotification) { - _interopObject.OnNotification.connect(function (notification) { - _this.dispatchNotification(notification); - }); - } - } - Object.defineProperty(AddInApiPresLayerImpl.prototype, "AddInInstanceInfo", { - /** - * Gets the instance info for this particular add-in from the c++ code - * - * @readonly - * @type {AddInInstancePresModel} - * @memberof AddInApiPresLayerImpl - */ - get: function () { - return this._interopObject.addInInstanceInfo; - }, - enumerable: true, - configurable: true - }); - /** - * Invokes a command using the pres-layer interop - * - * @template T - The expected return type - * @param {string} commandNamespace - * @param {string} commandName - * @param {object} params - * @returns {Promise} - * @memberof AddInApiPresLayerImpl - */ - AddInApiPresLayerImpl.prototype.invokeCommand = function (commandNamespace, commandName, params) { - var _this = this; - return new Promise(function (resolve, reject) { - try { - commandNamespace = commandNamespace || 'tabdoc'; - _this._interopObject.ExecuteCommand(commandNamespace, commandName, params, function (response) { - if (!response.Success) { - var msg = 'ExecuteCommand failed, with result:' + JSON.stringify(response.Result); - reject(new Error(msg)); - } - else { - resolve(response.Result); - } - }); - } - catch (err) { - reject(err); - } - }); - }; - // This implementation will registration a single instance of a notification handler with the Native C++ object, - // and implement multi-dispatch to the web objects from h.ere - AddInApiPresLayerImpl.prototype.registerNotificationHandler = function (eventId, handler) { - var _this = this; - if (eventId in this._notificationHandlers) { - this._notificationHandlers[eventId].push(handler); - } - else { - this._notificationHandlers[eventId] = [handler]; - try { - this._interopObject.RegisterNotificationHandler(eventId); - } - catch (err) { - // console.log('RegisterNotificationHandler failed: ' + err); - } - } - return function () { return _this.removeNotificationHandler(eventId, handler); }; - }; - AddInApiPresLayerImpl.prototype.removeNotificationHandler = function (eventId, handler) { - var handlerList = this._notificationHandlers[eventId]; - if (!handlerList) { - return; - } - var foundIndex = handlerList.indexOf(handler); - if (foundIndex >= 0) { - handlerList.splice(foundIndex, 1); - } - if (handlerList.length === 0) { - delete this._notificationHandlers[eventId]; - } - }; - AddInApiPresLayerImpl.prototype.dispatchNotification = function (notification) { - // console.log('received notification: ' + JSON.stringify(notification)); - var eventId = notification.eventId; - var presModel = notification.presModel; - if (eventId in this._notificationHandlers) { - var handlers = this._notificationHandlers[eventId]; - for (var i = handlers.length - 1; i >= 0; i--) { - handlers[i](presModel); - } - } - }; - return AddInApiPresLayerImpl; - }()); - exports.AddInApiPresLayerImpl = AddInApiPresLayerImpl; - //# sourceMappingURL=AddInApiPresLayerImpl.js.map - -/***/ }, -/* 31 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the InternalApiDispatcher for desktop. Since this will run in the same - * frame as the ApiEventHandler, this class mostly just marshalls down to that implementation - * - * @export - * @class DesktopApiDispatcher - * @implements {InternalApiDispatcher} - */ - var DesktopApiDispatcher = (function () { - function DesktopApiDispatcher(_apiEventHandler) { - var _this = this; - this._apiEventHandler = _apiEventHandler; - this._notificationHandlers = []; - this._apiEventHandler.setEventHandler(function (notificationId, model) { - _this._notificationHandlers.forEach(function (handler) { return handler({ - notificationId: notificationId, - data: model - }); }); - }); - } - DesktopApiDispatcher.prototype.setVersionNumber = function (versionNumber) { - this._apiEventHandler.setVersionNumber(versionNumber); - }; - DesktopApiDispatcher.prototype.execute = function (verb, parameters) { - // Just pass this right through to the ApiEventHandler - return this._apiEventHandler.execute(verb, parameters); - }; - DesktopApiDispatcher.prototype.registerNotificationHandler = function (handler) { - this._notificationHandlers.push(handler); - }; - DesktopApiDispatcher.prototype.unregisterNotificationHandler = function (handler) { - this._notificationHandlers = this._notificationHandlers.filter(function (h) { return h !== handler; }); - }; - return DesktopApiDispatcher; - }()); - exports.DesktopApiDispatcher = DesktopApiDispatcher; - //# sourceMappingURL=DesktopApiDispatcher.js.map - -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - __webpack_require__(33); - var qwebchannel_1 = __webpack_require__(34); - /** - * Initializes the QWebChannel contract and returns the pres layer interop object - * - * @returns {Promise} - */ - function initializeWebChannelPresLayer() { - return new Promise(function (resolve, reject) { - try { - // tslint:disable-next-line - new qwebchannel_1.QWebChannel(qt.webChannelTransport, function (channel) { - // tslint:disable-next-line - var addInPresLayer = channel.objects['addInPresLayer']; - resolve(addInPresLayer); - }); - } - catch (e) { - reject(e); - } - }); - } - exports.initializeWebChannelPresLayer = initializeWebChannelPresLayer; - //# sourceMappingURL=QtWebChannelImpl.js.map - -/***/ }, -/* 33 */ -/***/ function(module, exports) { - - //# sourceMappingURL=QtTypes.js.map - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - /**************************************************************************** - ** - ** Copyright (C) 2015 The Qt Company Ltd. - ** Copyright (C) 2014 KlarÀlvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff - ** Contact: http://www.qt.io/licensing/ - ** - ** This file is part of the QtWebChannel module of the Qt Toolkit. - ** - ** $QT_BEGIN_LICENSE:LGPL21$ - ** Commercial License Usage - ** Licensees holding valid commercial Qt licenses may use this file in - ** accordance with the commercial license agreement provided with the - ** Software or, alternatively, in accordance with the terms contained in - ** a written agreement between you and The Qt Company. For licensing terms - ** and conditions see http://www.qt.io/terms-conditions. For further - ** information use the contact form at http://www.qt.io/contact-us. - ** - ** GNU Lesser General Public License Usage - ** Alternatively, this file may be used under the terms of the GNU Lesser - ** General Public License version 2.1 or version 3 as published by the Free - ** Software Foundation and appearing in the file LICENSE.LGPLv21 and - ** LICENSE.LGPLv3 included in the packaging of this file. Please review the - ** following information to ensure the GNU Lesser General Public License - ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and - ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. - ** - ** As a special exception, The Qt Company gives you certain additional - ** rights. These rights are described in The Qt Company LGPL Exception - ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. - ** - ** $QT_END_LICENSE$ - ** - ****************************************************************************/ - - "use strict"; - - var QWebChannelMessageTypes = { - signal: 1, - propertyUpdate: 2, - init: 3, - idle: 4, - debug: 5, - invokeMethod: 6, - connectToSignal: 7, - disconnectFromSignal: 8, - setProperty: 9, - response: 10, - }; - - var QWebChannel = function(transport, initCallback) - { - if (typeof transport !== "object" || typeof transport.send !== "function") { - console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." + - " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send)); - return; - } - - var channel = this; - this.transport = transport; - - this.send = function(data) - { - if (typeof(data) !== "string") { - data = JSON.stringify(data); - } - channel.transport.send(data); - } - - this.transport.onmessage = function(message) - { - var data = message.data; - if (typeof data === "string") { - data = JSON.parse(data); - } - switch (data.type) { - case QWebChannelMessageTypes.signal: - channel.handleSignal(data); - break; - case QWebChannelMessageTypes.response: - channel.handleResponse(data); - break; - case QWebChannelMessageTypes.propertyUpdate: - channel.handlePropertyUpdate(data); - break; - default: - console.error("invalid message received:", message.data); - break; - } - } - - this.execCallbacks = {}; - this.execId = 0; - this.exec = function(data, callback) - { - if (!callback) { - // if no callback is given, send directly - channel.send(data); - return; - } - if (channel.execId === Number.MAX_VALUE) { - // wrap - channel.execId = Number.MIN_VALUE; - } - if (data.hasOwnProperty("id")) { - console.error("Cannot exec message with property id: " + JSON.stringify(data)); - return; - } - data.id = channel.execId++; - channel.execCallbacks[data.id] = callback; - channel.send(data); - }; - - this.objects = {}; - - this.handleSignal = function(message) - { - var object = channel.objects[message.object]; - if (object) { - object.signalEmitted(message.signal, message.args); - } else { - console.warn("Unhandled signal: " + message.object + "::" + message.signal); - } - } - - this.handleResponse = function(message) - { - if (!message.hasOwnProperty("id")) { - console.error("Invalid response message received: ", JSON.stringify(message)); - return; - } - channel.execCallbacks[message.id](message.data); - delete channel.execCallbacks[message.id]; - } - - this.handlePropertyUpdate = function(message) - { - for (var i in message.data) { - var data = message.data[i]; - var object = channel.objects[data.object]; - if (object) { - object.propertyUpdate(data.signals, data.properties); - } else { - console.warn("Unhandled property update: " + data.object + "::" + data.signal); - } - } - channel.exec({type: QWebChannelMessageTypes.idle}); - } - - this.debug = function(message) - { - channel.send({type: QWebChannelMessageTypes.debug, data: message}); - }; - - channel.exec({type: QWebChannelMessageTypes.init}, function(data) { - for (var objectName in data) { - var object = new QObject(objectName, data[objectName], channel); - } - // now unwrap properties, which might reference other registered objects - for (var objectName in channel.objects) { - channel.objects[objectName].unwrapProperties(); - } - if (initCallback) { - initCallback(channel); - } - channel.exec({type: QWebChannelMessageTypes.idle}); - }); - }; - - function QObject(name, data, webChannel) - { - this.__id__ = name; - webChannel.objects[name] = this; - - // List of callbacks that get invoked upon signal emission - this.__objectSignals__ = {}; - - // Cache of all properties, updated when a notify signal is emitted - this.__propertyCache__ = {}; - - var object = this; - - // ---------------------------------------------------------------------- - - this.unwrapQObject = function(response) - { - if (response instanceof Array) { - // support list of objects - var ret = new Array(response.length); - for (var i = 0; i < response.length; ++i) { - ret[i] = object.unwrapQObject(response[i]); - } - return ret; - } - if (!response - || !response["__QObject*__"] - || response["id"] === undefined) { - return response; - } - - var objectId = response.id; - if (webChannel.objects[objectId]) - return webChannel.objects[objectId]; - - if (!response.data) { - console.error("Cannot unwrap unknown QObject " + objectId + " without data."); - return; - } - - var qObject = new QObject( objectId, response.data, webChannel ); - qObject.destroyed.connect(function() { - if (webChannel.objects[objectId] === qObject) { - delete webChannel.objects[objectId]; - // reset the now deleted QObject to an empty {} object - // just assigning {} though would not have the desired effect, but the - // below also ensures all external references will see the empty map - // NOTE: this detour is necessary to workaround QTBUG-40021 - var propertyNames = []; - for (var propertyName in qObject) { - propertyNames.push(propertyName); - } - for (var idx in propertyNames) { - delete qObject[propertyNames[idx]]; - } - } - }); - // here we are already initialized, and thus must directly unwrap the properties - qObject.unwrapProperties(); - return qObject; - } - - this.unwrapProperties = function() - { - for (var propertyIdx in object.__propertyCache__) { - object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]); - } - } - - function addSignal(signalData, isPropertyNotifySignal) - { - var signalName = signalData[0]; - var signalIndex = signalData[1]; - object[signalName] = { - connect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to connect to signal " + signalName); - return; - } - - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - object.__objectSignals__[signalIndex].push(callback); - - if (!isPropertyNotifySignal && signalName !== "destroyed") { - // only required for "pure" signals, handled separately for properties in propertyUpdate - // also note that we always get notified about the destroyed signal - webChannel.exec({ - type: QWebChannelMessageTypes.connectToSignal, - object: object.__id__, - signal: signalIndex - }); - } - }, - disconnect: function(callback) { - if (typeof(callback) !== "function") { - console.error("Bad callback given to disconnect from signal " + signalName); - return; - } - object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || []; - var idx = object.__objectSignals__[signalIndex].indexOf(callback); - if (idx === -1) { - console.error("Cannot find connection of signal " + signalName + " to " + callback.name); - return; - } - object.__objectSignals__[signalIndex].splice(idx, 1); - if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) { - // only required for "pure" signals, handled separately for properties in propertyUpdate - webChannel.exec({ - type: QWebChannelMessageTypes.disconnectFromSignal, - object: object.__id__, - signal: signalIndex - }); - } - } - }; - } - - /** - * Invokes all callbacks for the given signalname. Also works for property notify callbacks. - */ - function invokeSignalCallbacks(signalName, signalArgs) - { - var connections = object.__objectSignals__[signalName]; - if (connections) { - connections.forEach(function(callback) { - callback.apply(callback, signalArgs); - }); - } - } - - this.propertyUpdate = function(signals, propertyMap) - { - // update property cache - for (var propertyIndex in propertyMap) { - var propertyValue = propertyMap[propertyIndex]; - object.__propertyCache__[propertyIndex] = propertyValue; - } - - for (var signalName in signals) { - // Invoke all callbacks, as signalEmitted() does not. This ensures the - // property cache is updated before the callbacks are invoked. - invokeSignalCallbacks(signalName, signals[signalName]); - } - } - - this.signalEmitted = function(signalName, signalArgs) - { - invokeSignalCallbacks(signalName, signalArgs); - } - - function addMethod(methodData) - { - var methodName = methodData[0]; - var methodIdx = methodData[1]; - object[methodName] = function() { - var args = []; - var callback; - for (var i = 0; i < arguments.length; ++i) { - if (typeof arguments[i] === "function") - callback = arguments[i]; - else - args.push(arguments[i]); - } - - webChannel.exec({ - "type": QWebChannelMessageTypes.invokeMethod, - "object": object.__id__, - "method": methodIdx, - "args": args - }, function(response) { - if (response !== undefined) { - var result = object.unwrapQObject(response); - if (callback) { - (callback)(result); - } - } - }); - }; - } - - function bindGetterSetter(propertyInfo) - { - var propertyIndex = propertyInfo[0]; - var propertyName = propertyInfo[1]; - var notifySignalData = propertyInfo[2]; - // initialize property cache with current value - // NOTE: if this is an object, it is not directly unwrapped as it might - // reference other QObject that we do not know yet - object.__propertyCache__[propertyIndex] = propertyInfo[3]; - - if (notifySignalData) { - if (notifySignalData[0] === 1) { - // signal name is optimized away, reconstruct the actual name - notifySignalData[0] = propertyName + "Changed"; - } - addSignal(notifySignalData, true); - } - - Object.defineProperty(object, propertyName, { - get: function () { - var propertyValue = object.__propertyCache__[propertyIndex]; - if (propertyValue === undefined) { - // This shouldn't happen - console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__); - } - - return propertyValue; - }, - set: function(value) { - if (value === undefined) { - console.warn("Property setter for " + propertyName + " called with undefined value!"); - return; - } - object.__propertyCache__[propertyIndex] = value; - webChannel.exec({ - "type": QWebChannelMessageTypes.setProperty, - "object": object.__id__, - "property": propertyIndex, - "value": value - }); - } - }); - - } - - // ---------------------------------------------------------------------- - - data.methods.forEach(addMethod); - - data.properties.forEach(bindGetterSetter); - - data.signals.forEach(function(signal) { addSignal(signal, false); }); - - for (var name in data.enums) { - object[name] = data.enums[name]; - } - } - - //required for use with nodejs - if (true) { - module.exports = { - QWebChannel: QWebChannel - }; - } - - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlbGFyZC1kZXNrdG9wLWJvb3RzdHJhcC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIDUzMDdiNDdlZGQzYjZhZDg4ZDEyIiwid2VicGFjazovLy8uLi9saWIvTWFpbi5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0ZyZWxhcmREZXNrdG9wQm9vdHN0cmFwLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvQXBpQ29yZS5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL0FwaUV2ZW50SGFuZGxlci5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL0FwaUludGVybmFsQ29udHJhY3QuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvRW51bXMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvSW50ZXJuYWxBcGlEaXNwYXRjaGVyLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvUGFyYW1ldGVycy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL2ludGVyZmFjZS9WZXJicy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL2dlbi1zcmMvcHJlc2xheWVyL0NvbW1hbmRJZHMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5LmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvQ29tbWFuZFJlZ2lzdHJhdGlvbi5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL0V2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9BcGlVdGlscy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktdXRpbHMvbGliL0VudW1Db252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9QYXJhbS5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL0VudW1NYXBwaW5ncy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL0ZpbHRlcnNDb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9NYXBwaW5nUmVnaXN0cnkuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9QYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0FkZEluQXBpUHJlc0xheWVySW1wbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0Rlc2t0b3BBcGlEaXNwYXRjaGVyLmpzIiwid2VicGFjazovLy8uLi9saWIvUXRXZWJDaGFubmVsSW1wbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL3R5cGVzL1F0VHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL34vcXdlYmNoYW5uZWwvcXdlYmNoYW5uZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiTWFpblwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJNYWluXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uXG4gKiovIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2Rpc3QvXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCA1MzA3YjQ3ZWRkM2I2YWQ4OGQxMlxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEZyZWxhcmREZXNrdG9wQm9vdHN0cmFwXzEgPSByZXF1aXJlKFwiLi9GcmVsYXJkRGVza3RvcEJvb3RzdHJhcFwiKTtcbi8vIFRoaXMgTWFpbiBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhpcyBtb2R1bGUgaXMgbG9hZGVkLiBBdHRlbXB0IHRvIGRvIG91clxuLy8gYm9vdHN0cmFwcGluZyB3aXRoIHF0IGFuZCBsb2cgYW55IGVycm9ycyB3ZSBlbmNvdW50ZXJcbkZyZWxhcmREZXNrdG9wQm9vdHN0cmFwXzEuZG9Cb290c3RyYXAoKS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Rlc2t0b3AgYm9vdHN0cmFwcGluZyBmYWlsZWQ6ICcgKyBlKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWFpbi5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9NYWluLmpzXG4gKiogbW9kdWxlIGlkID0gMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBpX2NvcmVfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktY29yZVwiKTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsXzEgPSByZXF1aXJlKFwiLi9BZGRJbkFwaVByZXNMYXllckltcGxcIik7XG52YXIgRGVza3RvcEFwaURpc3BhdGNoZXJfMSA9IHJlcXVpcmUoXCIuL0Rlc2t0b3BBcGlEaXNwYXRjaGVyXCIpO1xudmFyIFF0V2ViQ2hhbm5lbEltcGxfMSA9IHJlcXVpcmUoXCIuL1F0V2ViQ2hhbm5lbEltcGxcIik7XG4vKipcbiAqIFdyYXBwZXIgZm9yIGFsbCB0aGUgYm9vdHN0cmFwcGluZyBsb2dpYy4gVGhpcyBjb2RlIGF0dGVtcHRzIHRvIGluaXRpYWxpemUgdGhlIHF0IHByZXMtbGF5ZXJcbiAqIGFzIHdlbGwgYXMgdGhlIGRlc2t0b3AgZGlzcGF0Y2hlci4gSXQgdGhlbiBhc3NpZ25zIGl0IHRvIHRoZSBnbG9iYWwgZGVza3RvcCBkaXNwYXRjaGVyIHRvXG4gKiBiZSBwaWNrZWQgdXAgYnkgdGhlIGFkZC1pbiBleHRlcm5hbCBBcGlcbiAqL1xuZnVuY3Rpb24gZG9Cb290c3RyYXAoKSB7XG4gICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBpbml0aWFsaXplIHRoZSB3ZWJjaGFubmVsIHByZXMtbGF5ZXJcbiAgICB2YXIgZGlzcGF0Y2hlclByb21pc2UgPSBRdFdlYkNoYW5uZWxJbXBsXzEuaW5pdGlhbGl6ZVdlYkNoYW5uZWxQcmVzTGF5ZXIoKS50aGVuKGZ1bmN0aW9uIChwcmVzbGF5ZXIpIHtcbiAgICAgICAgdmFyIHByZXNMYXllckFwaSA9IG5ldyBBZGRJbkFwaVByZXNMYXllckltcGxfMS5BZGRJbkFwaVByZXNMYXllckltcGwocHJlc2xheWVyKTtcbiAgICAgICAgaWYgKCFwcmVzTGF5ZXJBcGkuQWRkSW5JbnN0YW5jZUluZm8uYWRkSW5Mb2NhdG9yUHJlc01vZGVsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZEluSW5zdGFuY2VJbmZvIHVuZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGFwaUV2ZW50SGFuZGxlciBhbmQgdGhlIGRlc2t0b3BEaXNwYXRjaGVyIHdpdGggaXRcbiAgICAgICAgdmFyIGFwaUV2ZW50SGFuZGxlciA9IG5ldyBhcGlfY29yZV8xLkFwaUV2ZW50SGFuZGxlcihwcmVzTGF5ZXJBcGksIHByZXNMYXllckFwaS5BZGRJbkluc3RhbmNlSW5mby5hZGRJbkxvY2F0b3JQcmVzTW9kZWwpO1xuICAgICAgICB2YXIgZGVza3RvcERpc3BhdGNoZXIgPSBuZXcgRGVza3RvcEFwaURpc3BhdGNoZXJfMS5EZXNrdG9wQXBpRGlzcGF0Y2hlcihhcGlFdmVudEhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZGVza3RvcERpc3BhdGNoZXI7XG4gICAgfSk7XG4gICAgLy8gQXNzaWduIHRoZSBkZXNrdG9wIGRpc3BhdGNoZXIgZm9yIHRoZSBvdGhlciBwcm9qZWN0IHRvIGZpbmQgaXRcbiAgICBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5JbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuc2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKGRpc3BhdGNoZXJQcm9taXNlKTtcbiAgICByZXR1cm4gZGlzcGF0Y2hlclByb21pc2U7XG59XG5leHBvcnRzLmRvQm9vdHN0cmFwID0gZG9Cb290c3RyYXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcmVsYXJkRGVza3RvcEJvb3RzdHJhcC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9GcmVsYXJkRGVza3RvcEJvb3RzdHJhcC5qc1xuICoqIG1vZHVsZSBpZCA9IDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gX19leHBvcnQobSkge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0FwaUV2ZW50SGFuZGxlclwiKSk7XG52YXIgRXZlbnRzXzEgPSByZXF1aXJlKFwiLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzXCIpO1xuZXhwb3J0cy5Ob3RpZmljYXRpb25JZCA9IEV2ZW50c18xLk5vdGlmaWNhdGlvbklkO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXBpQ29yZS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9BcGlDb3JlLmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFBhcmFtc18xID0gcmVxdWlyZShcIi4uL2dlbi1zcmMvcHJlc2xheWVyL1BhcmFtc1wiKTtcbnZhciBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeV8xID0gcmVxdWlyZShcIi4vbWFwcGluZ3MvQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnlcIik7XG52YXIgRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5XzEgPSByZXF1aXJlKFwiLi9tYXBwaW5ncy9FdmVudE1hcHBpbmdSZWdpc3RyeUZhY3RvcnlcIik7XG52YXIgUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeV8xID0gcmVxdWlyZShcIi4vbWFwcGluZ3MvUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeVwiKTtcbi8qKlxuICogTWFpbiBjbGFzcyBmb3IgdGhlIGFwaS1jb3JlIHByb2plY3QuIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyBjb21hbW5kIGFuZCBtYXJzaGFsbGluZyBub3RpZmNhdGlvbnNcbiAqIGJldHdlZW4gdGhlIGludGVybmFsIEFwaSBhbmQgdGhlIHByZXMtbGF5ZXIgQXBpLiBBZnRlciBjb25zdHJ1Y3Rpb24sIFNldFZlcnNpb25OdW1iZXIgbXVzdCBiZSBjYWxsZWQgaW4gb3JkZXIgdG9cbiAqIHVzZSB0aGlzIGNsYXNzXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIEFwaUV2ZW50SGFuZGxlclxuICovXG52YXIgQXBpRXZlbnRIYW5kbGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEFwaUV2ZW50SGFuZGxlci5cbiAgICAgKiBAcGFyYW0ge1ByZXNlbnRhdGlvbkxheWVyfSBwcmVzTGF5ZXIgLSBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJlcy1sYXllciBBcGkgdG8gdXNlXG4gICAgICogQHBhcmFtIHtBZGRJbkxvY2F0b3JQcmVzTW9kZWx9IGFkZEluTG9jYXRvclByZXNNb2RlbCAtIGxvY2F0b3IgZm9yIHRoZSBhZGQtaW4gd2hpY2ggaXMgYmVpbmcgcmVmZXJlbmNlZFxuICAgICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBBcGlFdmVudEhhbmRsZXIocHJlc0xheWVyLCBhZGRJbkxvY2F0b3JQcmVzTW9kZWwpIHtcbiAgICAgICAgdGhpcy5fcHJlc0xheWVyID0gcHJlc0xheWVyO1xuICAgICAgICB0aGlzLl9wcmVzTGF5ZXJBZGRJbkxvY2F0b3IgPSBhZGRJbkxvY2F0b3JQcmVzTW9kZWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGludGVybmFsIEFwaSB2ZXJzaW9uIG51bWJlciB3aGljaCB0aGUgZXh0ZXJuYWwgbGlicmFyeSBpcyBleHBlY3RpbmcgdG8gdXNlLiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZVxuICAgICAqIGFueXRoaW5nIGVsc2UgaW4gb3JkZXIgdG8gcHJvcGVybHkgc2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBsYXllcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlcnNpb25OdW1iZXJ9IHZlcnNpb25OdW1iZXJcbiAgICAgKiBAbWVtYmVyb2YgQXBpRXZlbnRIYW5kbGVyXG4gICAgICovXG4gICAgQXBpRXZlbnRIYW5kbGVyLnByb3RvdHlwZS5zZXRWZXJzaW9uTnVtYmVyID0gZnVuY3Rpb24gKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbk51bWJlciA9IHZlcnNpb25OdW1iZXI7XG4gICAgICAgIC8vIEluaXRpYWxpemUgYWxsIG91ciByZWdpc3RyaWVzXG4gICAgICAgIHRoaXMuX2NvbW1hbmRSZWdpc3RyeSA9IENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5XzEuQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuY3JlYXRlQ29tbWFuZE1hcHBpbmdSZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICAgICAgdGhpcy5fYXBpVG9QcmVzTGF5ZXJSZWdpc3RyeSA9IFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnlfMS5QYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZUFwaVRvUHJlc0xheWVyUGFyYW1SZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICAgICAgdGhpcy5fcHJlc0xheWVyVG9BcGlSZWdpc3RyeSA9IFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnlfMS5QYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZVByZXNMYXllclRvQXBpUGFyYW1SZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICAgICAgdGhpcy5fZXZlbnRSZWdpc3RyeSA9IEV2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeV8xLkV2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5jcmVhdGVFdmVudE1hcHBpbmdSZWdpc3RyeSh2ZXJzaW9uTnVtYmVyKTtcbiAgICAgICAgLy8gQ29udmVydCBvdXIgYWRkSW5Mb2NhdG9yIHRvIHRoZSBBcGkgdmVyc2lvblxuICAgICAgICB0aGlzLl9hcGlBZGRJbkxvY2F0b3IgPSB0aGlzLl9wcmVzTGF5ZXJUb0FwaVJlZ2lzdHJ5XG4gICAgICAgICAgICAuZ2V0KFBhcmFtc18xLlBhcmFtZXRlcklkLkFkZEluTG9jYXRvciwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuQWRkSW5Mb2NhdG9yKSh0aGlzLl9wcmVzTGF5ZXJBZGRJbkxvY2F0b3IpO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gT2JqZWN0LmtleXModGhpcy5fZXZlbnRSZWdpc3RyeSk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgcGxFdmVudElkID0gX2FbX2ldO1xuICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZm9yIGFsbCBub3RpZmljYXRpb25zIHdlIGtub3cgYWJvdXQgYW5kIGJpbmQgdGhlIGV2ZW50IHR5cGUgdG8gdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICB0aGlzLl9wcmVzTGF5ZXIucmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyKHBsRXZlbnRJZCwgdGhpcy5vblByZXNMYXllck5vdGlmaWNhdGlvbi5iaW5kKHRoaXMsIHBsRXZlbnRJZCkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gdG8gYmUgbm90aWZpZWQgd2hlbiBBcGkgZXZlbnRzIGNvbWUgaW4uIE9ubHkgYSBzaW5nbGUgcmVnaXN0cmF0aW9uIGlzIHN1cHBvcnRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uSGFuZGxlcn0gZXZlbnRIYW5kbGVyXG4gICAgICogQG1lbWJlcm9mIEFwaUV2ZW50SGFuZGxlclxuICAgICAqL1xuICAgIEFwaUV2ZW50SGFuZGxlci5wcm90b3R5cGUuc2V0RXZlbnRIYW5kbGVyID0gZnVuY3Rpb24gKGV2ZW50SGFuZGxlcikge1xuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7XG4gICAgICAgIC8vIFRPRE8gLSBSZWdpc3RlciBmb3IgcHJlcyBsYXllciBldmVudHNcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSByZXF1ZXN0ZWQgQXBpIGNvbW1hbmQgYnkgY29udmVydGluZyB0aGUgcGFyYW1ldGVycywgcnVubmluZyB0aGUgY29tbWFuZCBhZ2FpbnN0IHRoZSBwcmVzLWxheWVyLFxuICAgICAqIHRoZW4gcHJvY2Vzc2luZyB0aGUgcmVzdWx0IGJhY2sgaW50byBhIGZvcm1hdCB0aGUgQXBpIGNhbiB1bmRlcnN0YW5kXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlcmJJZH0gdmVyYlxuICAgICAqIEBwYXJhbSB7RXhlY3V0ZVBhcmFtZXRlcnN9IHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxFeGVjdXRlUmVzcG9uc2U+fVxuICAgICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICAgKi9cbiAgICBBcGlFdmVudEhhbmRsZXIucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAodmVyYiwgcGFyYW1ldGVycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmFzc2VydEluaXRpYWxpemVkKCk7XG4gICAgICAgIHZhciBjb21tYW5kID0gdGhpcy5fY29tbWFuZFJlZ2lzdHJ5LmdldENvbW1hbmQodmVyYik7XG4gICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICAvLyBBdWdtZW50IHRoZSBjb21tYW5kIHdpdGggdGhlIGxvY2F0b3IgaWYgaXQncyBuZWVkZWRcbiAgICAgICAgaWYgKGNvbW1hbmQubmVlZHNBZGRJbkxvY2F0b3IpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuQWRkSW5Mb2NhdG9yXSA9IHRoaXMuX2FwaUFkZEluTG9jYXRvcjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29tbWFuZHNQYXJhbXMgPSBjb21tYW5kLmNyZWF0ZVBhcmFtcyhwYXJhbWV0ZXJzLCB0aGlzLl9hcGlUb1ByZXNMYXllclJlZ2lzdHJ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNMYXllci5pbnZva2VDb21tYW5kKGNvbW1hbmQubmFtZXNwYWNlLCBjb21tYW5kLmNvbW1hbmRJZCwgY29tbWFuZHNQYXJhbXMpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoY29tbWFuZFJlc3VsdCkge1xuICAgICAgICAgICAgdmFyIGNvbnZlcnRlZFJlc3VsdCA9IGNvbW1hbmQuUHJvY2Vzc1Jlc3VsdChjb21tYW5kUmVzdWx0LCBfdGhpcy5fcHJlc0xheWVyVG9BcGlSZWdpc3RyeSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdDogY29udmVydGVkUmVzdWx0XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgdG8gY2hlY2sgdGhhdCB0aGluZ3MgYXJlIGluaXRpYWxpemVkIGFzIGV4cGVjdGVkLiBUaHJvd3MgaWYgaW5pdGlhbGl6YXRpb24gbm90IGNvbXBsZXRlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBtZW1iZXJvZiBBcGlFdmVudEhhbmRsZXJcbiAgICAgKi9cbiAgICBBcGlFdmVudEhhbmRsZXIucHJvdG90eXBlLmFzc2VydEluaXRpYWxpemVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuX3ZlcnNpb25OdW1iZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmVyc2lvbk51bWJlciBub3QgeWV0IGNvbmZpZ3VyZWQuIENhbm5vdCB0YWtlIGFueSBhY3Rpb25zJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIGEgbmV3IGV2ZW50IG5vdGlmaWNhdGlvbiBjb21lcyBpbiBmcm9tIHRoZSBwcmVzZW50YXRpb24gbGF5ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudElkIFRoZSBwcmVzIGxheWVyIGV2ZW50IGlkXG4gICAgICogQHBhcmFtIHByZXNNb2RlbCBUaGUgcHJlcyBtb2RlbCB0aGF0IGlzIGluY2x1ZGVkIHdpdGggdGhlIGV2ZW50XG4gICAgICovXG4gICAgQXBpRXZlbnRIYW5kbGVyLnByb3RvdHlwZS5vblByZXNMYXllck5vdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChldmVudElkLCBwcmVzTW9kZWwpIHtcbiAgICAgICAgLy8gRmlyc3QgbG9vayB1cCB0aGlzIGV2ZW50SWQgaW4gb3VyIHJlZ2lzdHJ5IGFuZCBjb252ZXJ0IHRvIHByZXNNb2RlbFxuICAgICAgICB2YXIgZXZlbnRNYXBwaW5nID0gdGhpcy5fZXZlbnRSZWdpc3RyeVtldmVudElkXTtcbiAgICAgICAgdmFyIGFwaU1vZGVsID0gZXZlbnRNYXBwaW5nLmNvbnZlcnRlcihwcmVzTW9kZWwpO1xuICAgICAgICBpZiAodGhpcy5fZXZlbnRIYW5kbGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXIoZXZlbnRNYXBwaW5nLmFwaUlkLCBhcGlNb2RlbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBcGlFdmVudEhhbmRsZXI7XG59KCkpO1xuZXhwb3J0cy5BcGlFdmVudEhhbmRsZXIgPSBBcGlFdmVudEhhbmRsZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcGlFdmVudEhhbmRsZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvQXBpRXZlbnRIYW5kbGVyLmpzXG4gKiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL0VudW1zXCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXJcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL1BhcmFtZXRlcnNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL1ZlcmJzXCIpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwaUludGVybmFsQ29udHJhY3QuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvQXBpSW50ZXJuYWxDb250cmFjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFkZEluQ29udGV4dDtcbihmdW5jdGlvbiAoQWRkSW5Db250ZXh0KSB7XG4gICAgQWRkSW5Db250ZXh0W1wiRGVza3RvcFwiXSA9IFwiZGVza3RvcFwiO1xuICAgIEFkZEluQ29udGV4dFtcIlNlcnZlclwiXSA9IFwic2VydmVyXCI7XG4gICAgQWRkSW5Db250ZXh0W1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xufSkoQWRkSW5Db250ZXh0ID0gZXhwb3J0cy5BZGRJbkNvbnRleHQgfHwgKGV4cG9ydHMuQWRkSW5Db250ZXh0ID0ge30pKTtcbnZhciBBZGRJbk1vZGU7XG4oZnVuY3Rpb24gKEFkZEluTW9kZSkge1xuICAgIEFkZEluTW9kZVtcIkF1dGhvcmluZ1wiXSA9IFwiYXV0aG9yaW5nXCI7XG4gICAgQWRkSW5Nb2RlW1wiVmlld2luZ1wiXSA9IFwidmlld2luZ1wiO1xuICAgIEFkZEluTW9kZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEFkZEluTW9kZSA9IGV4cG9ydHMuQWRkSW5Nb2RlIHx8IChleHBvcnRzLkFkZEluTW9kZSA9IHt9KSk7XG52YXIgQ29sdW1uVHlwZTtcbihmdW5jdGlvbiAoQ29sdW1uVHlwZSkge1xuICAgIENvbHVtblR5cGVbXCJEaXNjcmV0ZVwiXSA9IFwiZGlzY3JldGVcIjtcbiAgICBDb2x1bW5UeXBlW1wiQ29udGludW91c1wiXSA9IFwiY29udGludW91c1wiO1xufSkoQ29sdW1uVHlwZSA9IGV4cG9ydHMuQ29sdW1uVHlwZSB8fCAoZXhwb3J0cy5Db2x1bW5UeXBlID0ge30pKTtcbnZhciBEYXNoYm9hcmRPYmplY3RUeXBlO1xuKGZ1bmN0aW9uIChEYXNoYm9hcmRPYmplY3RUeXBlKSB7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkJsYW5rXCJdID0gXCJibGFua1wiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXb3Jrc2hlZXRcIl0gPSBcIndvcmtzaGVldFwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJRdWlja0ZpbHRlclwiXSA9IFwicXVpY2stZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhcmFtZXRlckNvbnRyb2xcIl0gPSBcInBhcmFtZXRlci1jb250cm9sXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhZ2VGaWx0ZXJcIl0gPSBcInBhZ2UtZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkxlZ2VuZFwiXSA9IFwibGVnZW5kXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlRpdGxlXCJdID0gXCJ0aXRsZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJUZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkltYWdlXCJdID0gXCJpbWFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXZWJQYWdlXCJdID0gXCJ3ZWItcGFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJBZGRJblwiXSA9IFwiYWRkaW5cIjtcbn0pKERhc2hib2FyZE9iamVjdFR5cGUgPSBleHBvcnRzLkRhc2hib2FyZE9iamVjdFR5cGUgfHwgKGV4cG9ydHMuRGFzaGJvYXJkT2JqZWN0VHlwZSA9IHt9KSk7XG52YXIgRGF0YVR5cGU7XG4oZnVuY3Rpb24gKERhdGFUeXBlKSB7XG4gICAgRGF0YVR5cGVbXCJTdHJpbmdcIl0gPSBcInN0cmluZ1wiO1xuICAgIERhdGFUeXBlW1wiSW50XCJdID0gXCJpbnRcIjtcbiAgICBEYXRhVHlwZVtcIkZsb2F0XCJdID0gXCJmbG9hdFwiO1xuICAgIERhdGFUeXBlW1wiQm9vbFwiXSA9IFwiYm9vbFwiO1xuICAgIERhdGFUeXBlW1wiRGF0ZVwiXSA9IFwiZGF0ZVwiO1xuICAgIERhdGFUeXBlW1wiRGF0ZVRpbWVcIl0gPSBcImRhdGUtdGltZVwiO1xuICAgIERhdGFUeXBlW1wiU3BhdGlhbFwiXSA9IFwic3BhdGlhbFwiO1xufSkoRGF0YVR5cGUgPSBleHBvcnRzLkRhdGFUeXBlIHx8IChleHBvcnRzLkRhdGFUeXBlID0ge30pKTtcbnZhciBFbmNvZGVkRGF0YVR5cGU7XG4oZnVuY3Rpb24gKEVuY29kZWREYXRhVHlwZSkge1xuICAgIEVuY29kZWREYXRhVHlwZVtcIk51bWJlclwiXSA9IFwibnVtYmVyXCI7XG4gICAgRW5jb2RlZERhdGFUeXBlW1wiU3RyaW5nXCJdID0gXCJzdHJpbmdcIjtcbiAgICBFbmNvZGVkRGF0YVR5cGVbXCJEYXRlXCJdID0gXCJkYXRlXCI7XG4gICAgRW5jb2RlZERhdGFUeXBlW1wiQm9vbGVhblwiXSA9IFwiYm9vbGVhblwiO1xufSkoRW5jb2RlZERhdGFUeXBlID0gZXhwb3J0cy5FbmNvZGVkRGF0YVR5cGUgfHwgKGV4cG9ydHMuRW5jb2RlZERhdGFUeXBlID0ge30pKTtcbnZhciBFcnJvckNvZGU7XG4oZnVuY3Rpb24gKEVycm9yQ29kZSkge1xuICAgIEVycm9yQ29kZVtcIlNlcnZlckVycm9yXCJdID0gXCJzZXJ2ZXItZXJyb3JcIjtcbiAgICBFcnJvckNvZGVbXCJJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWVcIl0gPSBcImludmFsaWQtYWdncmVnYXRpb24tZmllbGQtbmFtZVwiO1xuICAgIEVycm9yQ29kZVtcIkludmFsaWRGaWx0ZXJGaWVsZE5hbWVcIl0gPSBcImludmFsaWQtZmlsdGVyLWZpZWxkbmFtZVwiO1xuICAgIEVycm9yQ29kZVtcIkludmFsaWRGaWx0ZXJGaWVsZFZhbHVlXCJdID0gXCJpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZVwiO1xufSkoRXJyb3JDb2RlID0gZXhwb3J0cy5FcnJvckNvZGUgfHwgKGV4cG9ydHMuRXJyb3JDb2RlID0ge30pKTtcbnZhciBGaWVsZEFnZ3JlZ2F0aW9uVHlwZTtcbihmdW5jdGlvbiAoRmllbGRBZ2dyZWdhdGlvblR5cGUpIHtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN1bVwiXSA9IFwic3VtXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJBdmdcIl0gPSBcImF2Z1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWluXCJdID0gXCJtaW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1heFwiXSA9IFwibWF4XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTdGRldlwiXSA9IFwic3RkZXZcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN0ZGV2cFwiXSA9IFwic3RkZXZwXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJWYXJcIl0gPSBcInZhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVmFycFwiXSA9IFwidmFycFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiQ291bnRcIl0gPSBcImNvdW50XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJDb3VudGRcIl0gPSBcImNvdW50ZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWVkaWFuXCJdID0gXCJtZWRpYW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkF0dHJcIl0gPSBcImF0dHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlllYXJcIl0gPSBcInllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF0clwiXSA9IFwicXRyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNb250aFwiXSA9IFwibW9udGhcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkRheVwiXSA9IFwiZGF5XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJIb3VyXCJdID0gXCJob3VyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNaW51dGVcIl0gPSBcIm1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiU2Vjb25kXCJdID0gXCJzZWNvbmRcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtcIl0gPSBcIndlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtkYXlcIl0gPSBcIndlZWtkYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1vbnRoWWVhclwiXSA9IFwibW9udGgteWVhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWR5XCJdID0gXCJtZHlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkVuZFwiXSA9IFwiZW5kXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1llYXJcIl0gPSBcInRydW5jLXllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jUXRyXCJdID0gXCJ0cnVuYy1xdHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jTW9udGhcIl0gPSBcInRydW5jLW1vbnRoXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1dlZWtcIl0gPSBcInRydW5jLXdlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jRGF5XCJdID0gXCJ0cnVuYy1kYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jSG91clwiXSA9IFwidHJ1bmMtaG91clwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNNaW51dGVcIl0gPSBcInRydW5jLW1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNTZWNvbmRcIl0gPSBcInRydW5jLXNlY29uZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiUXVhcnQxXCJdID0gXCJxdWFydDFcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF1YXJ0M1wiXSA9IFwicXVhcnQzXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTa2V3bmVzc1wiXSA9IFwic2tld25lc3NcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkt1cnRvc2lzXCJdID0gXCJrdXJ0b3Npc1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiSW5PdXRcIl0gPSBcImluLW91dFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVXNlclwiXSA9IFwidXNlclwiO1xufSkoRmllbGRBZ2dyZWdhdGlvblR5cGUgPSBleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlIHx8IChleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlID0ge30pKTtcbnZhciBGaWVsZFJvbGVUeXBlO1xuKGZ1bmN0aW9uIChGaWVsZFJvbGVUeXBlKSB7XG4gICAgRmllbGRSb2xlVHlwZVtcIkRpbWVuc2lvblwiXSA9IFwiZGltZW5zaW9uXCI7XG4gICAgRmllbGRSb2xlVHlwZVtcIk1lYXN1cmVcIl0gPSBcIm1lYXN1cmVcIjtcbiAgICBGaWVsZFJvbGVUeXBlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xufSkoRmllbGRSb2xlVHlwZSA9IGV4cG9ydHMuRmllbGRSb2xlVHlwZSB8fCAoZXhwb3J0cy5GaWVsZFJvbGVUeXBlID0ge30pKTtcbi8qKlxuICogIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXIuXG4gKi9cbnZhciBGaWx0ZXJVcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJVcGRhdGVUeXBlKSB7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFkZFwiXSA9IFwiYWRkXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFsbFwiXSA9IFwiYWxsXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIlJlcGxhY2VcIl0gPSBcInJlcGxhY2VcIjtcbiAgICBGaWx0ZXJVcGRhdGVUeXBlW1wiUmVtb3ZlXCJdID0gXCJyZW1vdmVcIjtcbn0pKEZpbHRlclVwZGF0ZVR5cGUgPSBleHBvcnRzLkZpbHRlclVwZGF0ZVR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyVXBkYXRlVHlwZSA9IHt9KSk7XG52YXIgU2hlZXRUeXBlO1xuKGZ1bmN0aW9uIChTaGVldFR5cGUpIHtcbiAgICBTaGVldFR5cGVbXCJEYXNoYm9hcmRcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIFNoZWV0VHlwZVtcIlN0b3J5XCJdID0gXCJzdG9yeVwiO1xuICAgIFNoZWV0VHlwZVtcIldvcmtzaGVldFwiXSA9IFwid29ya3NoZWV0XCI7XG4gICAgU2hlZXRUeXBlW1wiQWRkaW5cIl0gPSBcImFkZGluXCI7XG59KShTaGVldFR5cGUgPSBleHBvcnRzLlNoZWV0VHlwZSB8fCAoZXhwb3J0cy5TaGVldFR5cGUgPSB7fSkpO1xudmFyIERvbWFpblJlc3RyaWN0aW9uVHlwZTtcbihmdW5jdGlvbiAoRG9tYWluUmVzdHJpY3Rpb25UeXBlKSB7XG4gICAgRG9tYWluUmVzdHJpY3Rpb25UeXBlW1wiQWxsXCJdID0gXCJhbGxcIjtcbiAgICBEb21haW5SZXN0cmljdGlvblR5cGVbXCJMaXN0XCJdID0gXCJsaXN0XCI7XG4gICAgRG9tYWluUmVzdHJpY3Rpb25UeXBlW1wiUmFuZ2VcIl0gPSBcInJhbmdlXCI7XG59KShEb21haW5SZXN0cmljdGlvblR5cGUgPSBleHBvcnRzLkRvbWFpblJlc3RyaWN0aW9uVHlwZSB8fCAoZXhwb3J0cy5Eb21haW5SZXN0cmljdGlvblR5cGUgPSB7fSkpO1xudmFyIERhdGVTdGVwUGVyaW9kO1xuKGZ1bmN0aW9uIChEYXRlU3RlcFBlcmlvZCkge1xuICAgIERhdGVTdGVwUGVyaW9kW1wiWWVhcnNcIl0gPSBcInllYXJzXCI7XG4gICAgRGF0ZVN0ZXBQZXJpb2RbXCJRdWFydGVyc1wiXSA9IFwicXVhcnRlcnNcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIk1vbnRoc1wiXSA9IFwibW9udGhzXCI7XG4gICAgRGF0ZVN0ZXBQZXJpb2RbXCJXZWVrc1wiXSA9IFwid2Vla3NcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIkRheXNcIl0gPSBcImRheXNcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIkhvdXJzXCJdID0gXCJob3Vyc1wiO1xuICAgIERhdGVTdGVwUGVyaW9kW1wiTWludXRlc1wiXSA9IFwibWludXRlc1wiO1xuICAgIERhdGVTdGVwUGVyaW9kW1wiU2Vjb25kc1wiXSA9IFwic2Vjb25kc1wiO1xufSkoRGF0ZVN0ZXBQZXJpb2QgPSBleHBvcnRzLkRhdGVTdGVwUGVyaW9kIHx8IChleHBvcnRzLkRhdGVTdGVwUGVyaW9kID0ge30pKTtcbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nLlxuICovXG52YXIgRmlsdGVyTnVsbE9wdGlvbjtcbihmdW5jdGlvbiAoRmlsdGVyTnVsbE9wdGlvbikge1xuICAgIEZpbHRlck51bGxPcHRpb25bXCJOdWxsVmFsdWVzXCJdID0gXCJudWxsdmFsdWVzXCI7XG4gICAgRmlsdGVyTnVsbE9wdGlvbltcIk5vbk51bGxWYWx1ZXNcIl0gPSBcIm5vbm51bGx2YWx1ZXNcIjtcbiAgICBGaWx0ZXJOdWxsT3B0aW9uW1wiQWxsVmFsdWVzXCJdID0gXCJhbGx2YWx1ZXNcIjtcbn0pKEZpbHRlck51bGxPcHRpb24gPSBleHBvcnRzLkZpbHRlck51bGxPcHRpb24gfHwgKGV4cG9ydHMuRmlsdGVyTnVsbE9wdGlvbiA9IHt9KSk7XG4vKipcbiAqIFRoZSB0eXBlIG9mIGZpbHRlciBkb21haW5cbiAqL1xudmFyIEZpbHRlckRvbWFpblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlckRvbWFpblR5cGUpIHtcbiAgICBGaWx0ZXJEb21haW5UeXBlW1wiUmVsZXZhbnRcIl0gPSBcInJlbGV2YW50XCI7XG4gICAgRmlsdGVyRG9tYWluVHlwZVtcIkRhdGFiYXNlXCJdID0gXCJkYXRhYmFzZVwiO1xufSkoRmlsdGVyRG9tYWluVHlwZSA9IGV4cG9ydHMuRmlsdGVyRG9tYWluVHlwZSB8fCAoZXhwb3J0cy5GaWx0ZXJEb21haW5UeXBlID0ge30pKTtcbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgc2VsZWN0aW9uIHR5cGUgZm9yIHNlbGVjdCBtYXJrcyBhcGkuXG4gKi9cbnZhciBTZWxlY3Rpb25VcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChTZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgU2VsZWN0aW9uVXBkYXRlVHlwZVtcIlJlcGxhY2VcIl0gPSBcInNlbGVjdC1yZXBsYWNlXCI7XG4gICAgU2VsZWN0aW9uVXBkYXRlVHlwZVtcIkFkZFwiXSA9IFwic2VsZWN0LWFkZFwiO1xuICAgIFNlbGVjdGlvblVwZGF0ZVR5cGVbXCJSZW1vdmVcIl0gPSBcInNlbGVjdC1yZW1vdmVcIjtcbn0pKFNlbGVjdGlvblVwZGF0ZVR5cGUgPSBleHBvcnRzLlNlbGVjdGlvblVwZGF0ZVR5cGUgfHwgKGV4cG9ydHMuU2VsZWN0aW9uVXBkYXRlVHlwZSA9IHt9KSk7XG4vKipcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIGluY2x1ZGVkIHZhbHVlcyB0eXBlIGZvciByYW5nZSBzZWxlY3Rpb24uXG4gKi9cbnZhciBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcztcbihmdW5jdGlvbiAoUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMpIHtcbiAgICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIkluY2x1ZGVOdWxsXCJdID0gXCJpbmNsdWRlLW51bGxcIjtcbiAgICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIkluY2x1ZGVOb25OdWxsXCJdID0gXCJpbmNsdWRlLW5vbi1udWxsXCI7XG4gICAgUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXNbXCJJbmNsdWRlQWxsXCJdID0gXCJpbmNsdWRlLWFsbFwiO1xufSkoUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMgPSBleHBvcnRzLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIHx8IChleHBvcnRzLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzID0ge30pKTtcbi8qKlxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXG4gKi9cbnZhciBNYXJrVHlwZTtcbihmdW5jdGlvbiAoTWFya1R5cGUpIHtcbiAgICBNYXJrVHlwZVtcIkJhclwiXSA9IFwiYmFyXCI7XG4gICAgTWFya1R5cGVbXCJMaW5lXCJdID0gXCJsaW5lXCI7XG4gICAgTWFya1R5cGVbXCJBcmVhXCJdID0gXCJhcmVhXCI7XG4gICAgTWFya1R5cGVbXCJTcXVhcmVcIl0gPSBcInNxdWFyZVwiO1xuICAgIE1hcmtUeXBlW1wiQ2lyY2xlXCJdID0gXCJjaXJjbGVcIjtcbiAgICBNYXJrVHlwZVtcIlNoYXBlXCJdID0gXCJzaGFwZVwiO1xuICAgIE1hcmtUeXBlW1wiVGV4dFwiXSA9IFwidGV4dFwiO1xuICAgIE1hcmtUeXBlW1wiTWFwXCJdID0gXCJtYXBcIjtcbiAgICBNYXJrVHlwZVtcIlBpZVwiXSA9IFwicGllXCI7XG4gICAgTWFya1R5cGVbXCJHYW50dEJhclwiXSA9IFwiZ2FudHQtYmFyXCI7XG4gICAgTWFya1R5cGVbXCJQb2x5Z29uXCJdID0gXCJwb2x5Z29uXCI7XG59KShNYXJrVHlwZSA9IGV4cG9ydHMuTWFya1R5cGUgfHwgKGV4cG9ydHMuTWFya1R5cGUgPSB7fSkpO1xuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIGZpbHRlclxuICovXG52YXIgRmlsdGVyVHlwZTtcbihmdW5jdGlvbiAoRmlsdGVyVHlwZSkge1xuICAgIEZpbHRlclR5cGVbXCJDYXRlZ29yaWNhbFwiXSA9IFwiY2F0ZWdvcmljYWxcIjtcbiAgICBGaWx0ZXJUeXBlW1wiUmFuZ2VcIl0gPSBcInJhbmdlXCI7XG4gICAgRmlsdGVyVHlwZVtcIlJlbGF0aXZlRGF0ZVwiXSA9IFwicmVsYXRpdmVEYXRlXCI7XG4gICAgRmlsdGVyVHlwZVtcIkhpZXJhcmNoaWNhbFwiXSA9IFwiaGllcmFyY2hpY2FsXCI7XG59KShGaWx0ZXJUeXBlID0gZXhwb3J0cy5GaWx0ZXJUeXBlIHx8IChleHBvcnRzLkZpbHRlclR5cGUgPSB7fSkpO1xuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBEYXRlUmFuZ2VUeXBlIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXJcbiAqL1xudmFyIERhdGVSYW5nZVR5cGU7XG4oZnVuY3Rpb24gKERhdGVSYW5nZVR5cGUpIHtcbiAgICAvKipcbiAgICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIkxhc3RcIl0gPSBcImxhc3RcIjtcbiAgICAvKipcbiAgICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgTiBkYXlzLCB3ZWVrcywgbW9udGhzLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICAgKi9cbiAgICBEYXRlUmFuZ2VUeXBlW1wiTGFzdE5cIl0gPSBcImxhc3ROXCI7XG4gICAgLyoqXG4gICAgICogUmVmZXJzIHRvIHRoZSBuZXh0IGRheSwgd2VlaywgbW9udGgsIGV0Yy4gb2YgdGhlIGRhdGUgcGVyaW9kLlxuICAgICAqL1xuICAgIERhdGVSYW5nZVR5cGVbXCJOZXh0XCJdID0gXCJuZXh0XCI7XG4gICAgLyoqXG4gICAgICogUmVmZXJzIHRvIHRoZSBuZXh0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIk5leHROXCJdID0gXCJuZXh0TlwiO1xuICAgIC8qKlxuICAgICAqIFJlZmVycyB0byB0aGUgY3VycmVudCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICAgKi9cbiAgICBEYXRlUmFuZ2VUeXBlW1wiQ3VycmVudFwiXSA9IFwiY3VycmVudFwiO1xuICAgIC8qKlxuICAgICAqIFJlZmVycyB0byBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIlRvRGF0ZVwiXSA9IFwidG9EYXRlXCI7XG59KShEYXRlUmFuZ2VUeXBlID0gZXhwb3J0cy5EYXRlUmFuZ2VUeXBlIHx8IChleHBvcnRzLkRhdGVSYW5nZVR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW51bXMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL0VudW1zLmpzXG4gKiogbW9kdWxlIGlkID0gNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyO1xuKGZ1bmN0aW9uIChJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIpIHtcbiAgICBmdW5jdGlvbiBnZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXI7XG4gICAgfVxuICAgIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5nZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UgPSBnZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2U7XG4gICAgZnVuY3Rpb24gaGFzRGVza3RvcEFwaURpc3BhdGNoZXJQcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gISFJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk7XG4gICAgfVxuICAgIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5oYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UgPSBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2U7XG4gICAgZnVuY3Rpb24gc2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKGRpc3BhdGNoZXIpIHtcbiAgICAgICAgd2luZG93Ll9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcbiAgICB9XG4gICAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLnNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSA9IHNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZTtcbn0pKEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlciA9IGV4cG9ydHMuSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyIHx8IChleHBvcnRzLkludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlciA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbnRlcm5hbEFwaURpc3BhdGNoZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlci5qc1xuICoqIG1vZHVsZSBpZCA9IDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE5vdGlmaWNhdGlvbklkO1xuKGZ1bmN0aW9uIChOb3RpZmljYXRpb25JZCkge1xuICAgIE5vdGlmaWNhdGlvbklkW1wiU2VsZWN0ZWRNYXJrc0NoYW5nZWRcIl0gPSBcInNlbGVjdGVkLW1hcmtzLWNoYW5nZWRcIjtcbiAgICBOb3RpZmljYXRpb25JZFtcIlBhcmFtZXRlckNoYW5nZWRcIl0gPSBcInBhcmFtZXRlci1jaGFuZ2VkXCI7XG4gICAgTm90aWZpY2F0aW9uSWRbXCJGaWx0ZXJDaGFuZ2VkXCJdID0gXCJmaWx0ZXItY2hhbmdlZFwiO1xufSkoTm90aWZpY2F0aW9uSWQgPSBleHBvcnRzLk5vdGlmaWNhdGlvbklkIHx8IChleHBvcnRzLk5vdGlmaWNhdGlvbklkID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5vdGlmaWNhdGlvbnMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSA3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJhbWV0ZXJJZDtcbihmdW5jdGlvbiAoUGFyYW1ldGVySWQpIHtcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluTG9jYXRvclwiXSA9IFwiYWRkLWluLWxvY2F0b3JcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluQm9vdHN0cmFwSW5mb1wiXSA9IFwiYWRkLWluLWJvb3RzdHJhcC1pbmZvXCI7XG4gICAgUGFyYW1ldGVySWRbXCJBZGRJblNldHRpbmdzSW5mb1wiXSA9IFwiYWRkLWluLXNldHRpbmdzLWluZm9cIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbElkXCJdID0gXCJ2aXN1YWwtaWRcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0UGF0aFwiXSA9IFwic2hlZXQtcGF0aFwiO1xuICAgIFBhcmFtZXRlcklkW1wiSWdub3JlQWxpYXNlc1wiXSA9IFwiaWdub3JlLWFsaWFzZXNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIklnbm9yZVNlbGVjdGlvblwiXSA9IFwiaWdub3JlLXNlbGVjdGlvblwiO1xuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZUFsbENvbHVtbnNcIl0gPSBcImluY2x1ZGUtYWxsLWNvbHVtbnNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIk1heFJvd3NcIl0gPSBcIm1heC1yb3dzXCI7XG4gICAgUGFyYW1ldGVySWRbXCJVbmRlcmx5aW5nRGF0YVRhYmxlXCJdID0gXCJ1bmRlcmx5aW5nLWRhdGEtdGFibGVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlXCJdID0gXCJ1bmRlcmx5aW5nLXN1bW1hcnktZGF0YS10YWJsZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZURhdGFUYWJsZVwiXSA9IFwiZGF0YS1zb3VyY2UtZGF0YS10YWJsZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiU2V0dGluZ3NWYWx1ZXNcIl0gPSBcInNldHRpbmdzLXZhbHVlc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWREYXRhXCJdID0gXCJzZWxlY3RlZC1kYXRhXCI7XG4gICAgUGFyYW1ldGVySWRbXCJIaWdobGlnaHRlZERhdGFcIl0gPSBcImhpZ2hsaWdodGVkLWRhdGFcIjtcbiAgICAvLyBGaWx0ZXIgUGFyYW1zXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZE5hbWVcIl0gPSBcImZpZWxkLW5hbWVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclZhbHVlc1wiXSA9IFwiZmlsdGVyLXZhbHVlc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyVXBkYXRlVHlwZVwiXSA9IFwiZmlsdGVyLXVwZGF0ZS10eXBlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJJc0V4Y2x1ZGVNb2RlXCJdID0gXCJpcy1leGNsdWRlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJSYW5nZU1pblwiXSA9IFwiZmlsdGVyLXJhbmdlLW1pblwiO1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyUmFuZ2VNYXhcIl0gPSBcImZpbHRlci1yYW5nZS1tYXhcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclJhbmdlTnVsbE9wdGlvblwiXSA9IFwiZmlsdGVyLXJhbmdlLW51bGwtb3B0aW9uXCI7XG4gICAgUGFyYW1ldGVySWRbXCJXb3Jrc2hlZXRGaWx0ZXJzXCJdID0gXCJ3b3Jrc2hlZXQtZmlsdGVyc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGRJZFwiXSA9IFwiZmllbGQtaWRcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpblR5cGVcIl0gPSBcImRvbWFpbi10eXBlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbERvbWFpblwiXSA9IFwiY2F0ZWdvcmljYWwtZG9tYWluXCI7XG4gICAgUGFyYW1ldGVySWRbXCJRdWFudGl0YXRpdmVEb21haW5cIl0gPSBcInF1YW50aXRhdGl2ZS1kbWFpblwiO1xuICAgIFBhcmFtZXRlcklkW1wiV29ya3NoZWV0TmFtZVwiXSA9IFwid29ya3NoZWV0LW5hbWVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZE5hbWVcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVySW5mb1wiXSA9IFwicGFyYW1ldGVyLWluZm9cIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckluZm9zXCJdID0gXCJwYXJhbWV0ZXItaW5mb3NcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckNhcHRpb25cIl0gPSBcInBhcmVtZXRlci1jYXB0aW9uXCI7XG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJGaWVsZE5hbWVcIl0gPSBcInBhcmFtZXRlci1maWVsZC1uYW1lXCI7XG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJWYWx1ZVwiXSA9IFwicGFyYW1ldGVyLXZhbHVlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25cIl0gPSBcInNlbGVjdGlvblwiO1xuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uVXBkYXRlVHlwZVwiXSA9IFwic2VsZWN0aW9uVXBkYXRlVHlwZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiSGllclZhbFNlbGVjdGlvbk1vZGVsc1wiXSA9IFwiaGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25Nb2RlbHNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50UmFuZ2VTZWxlY3Rpb25Nb2RlbHNcIl0gPSBcInF1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRGltVmFsU2VsZWN0aW9uTW9kZWxzXCJdID0gXCJkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZUlkXCJdID0gXCJkYXRhLXNvdXJjZS1pZFwiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNjaGVtYVwiXSA9IFwiZGF0YS1zY2hlbWFcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VOYW1lXCJdID0gXCJkYXRhLXNvdXJjZS1uYW1lXCI7XG4gICAgUGFyYW1ldGVySWRbXCJDb2x1bW5zVG9JbmNsdWRlXCJdID0gXCJjb2x1bW5zLXRvLWluY2x1ZGVcIjtcbn0pKFBhcmFtZXRlcklkID0gZXhwb3J0cy5QYXJhbWV0ZXJJZCB8fCAoZXhwb3J0cy5QYXJhbWV0ZXJJZCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbWV0ZXJzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL2ludGVyZmFjZS9QYXJhbWV0ZXJzLmpzXG4gKiogbW9kdWxlIGlkID0gOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBEZWNsYXJlIHRoaXMga2V5IHR5cGUgYW5kIGV4cG9ydCB0aGUgTm90aWZpY2F0aW9uSWQgdG8gbWFrZSB0aGlzIGJlaGF2ZSBsaWtlIGEgc3RyaW5nIGVudW1cbnZhciBWZXJiSWQ7XG4oZnVuY3Rpb24gKFZlcmJJZCkge1xuICAgIFZlcmJJZFtcIkFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXJcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlclwiO1xuICAgIFZlcmJJZFtcIkFwcGx5UmFuZ2VGaWx0ZXJcIl0gPSBcInJhbmdlLWZpbHRlclwiO1xuICAgIFZlcmJJZFtcIkNsZWFyRmlsdGVyXCJdID0gXCJjbGVhci1maWx0ZXJcIjtcbiAgICBWZXJiSWRbXCJJbml0aWFsaXplQWRkSW5cIl0gPSBcImluaXRpYWxpemUtYWRkLWluXCI7XG4gICAgVmVyYklkW1wiR2V0RGF0YVN1bW1hcnlEYXRhXCJdID0gXCJnZXQtc3VtbWFyeS1kYXRhXCI7XG4gICAgVmVyYklkW1wiR2V0VW5kZXJseWluZ0RhdGFcIl0gPSBcImdldC11bmRlcmx5aW5nLWRhdGFcIjtcbiAgICBWZXJiSWRbXCJHZXREYXRhU291cmNlRGF0YVwiXSA9IFwiZ2V0LWRhdGFzb3VyY2UtZGF0YVwiO1xuICAgIFZlcmJJZFtcIlNhdmVBZGRJblNldHRpbmdzXCJdID0gXCJzYXZlLWFkZC1pbi1zZXR0aW5nc1wiO1xuICAgIFZlcmJJZFtcIkdldFNlbGVjdGVkTWFya3NcIl0gPSBcImdldC1zZWxlY3RlZC1tYXJrc1wiO1xuICAgIFZlcmJJZFtcIkdldEhpZ2hsaWdodGVkTWFya3NcIl0gPSBcImdldC1oaWdobGlnaHRlZC1tYXJrc1wiO1xuICAgIFZlcmJJZFtcIkdldFBhcmFtZXRlcnNGb3JTaGVldFwiXSA9IFwiZ2V0LXBhcmFtZXRlcnMtZm9yLXNoZWV0XCI7XG4gICAgVmVyYklkW1wiRmluZFBhcmFtZXRlclwiXSA9IFwiZmluZC1wYXJhbWV0ZXJcIjtcbiAgICBWZXJiSWRbXCJDaGFuZ2VQYXJhbWV0ZXJWYWx1ZVwiXSA9IFwiY2hhbmdlLXBhcmFtZXRlci12YWx1ZVwiO1xuICAgIFZlcmJJZFtcIkNsZWFyU2VsZWN0ZWRNYXJrc1wiXSA9IFwiY2xlYXItc2VsZWN0ZWQtbWFya3NcIjtcbiAgICBWZXJiSWRbXCJTZWxlY3RCeVZhbHVlXCJdID0gXCJzZWxlY3QtYnktdmFsdWVcIjtcbiAgICBWZXJiSWRbXCJHZXREYXRhU291cmNlc1wiXSA9IFwiZ2V0LWRhdGEtc291cmNlc1wiO1xuICAgIFZlcmJJZFtcIlJlZnJlc2hEYXRhU291cmNlXCJdID0gXCJyZWZyZXNoLWRhdGEtc291cmNlXCI7XG4gICAgVmVyYklkW1wiR2V0RmlsdGVyc1wiXSA9IFwiZ2V0LWZpbHRlcnNcIjtcbiAgICBWZXJiSWRbXCJHZXRDYXRlZ29yaWNhbERvbWFpblwiXSA9IFwiZ2V0LWNhdGVnb3JpY2FsLWRvbWFpblwiO1xuICAgIFZlcmJJZFtcIkdldFJhbmdlRG9tYWluXCJdID0gXCJnZXQtcmFuZ2UtZG9tYWluXCI7XG59KShWZXJiSWQgPSBleHBvcnRzLlZlcmJJZCB8fCAoZXhwb3J0cy5WZXJiSWQgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVyYnMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL1ZlcmJzLmpzXG4gKiogbW9kdWxlIGlkID0gOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvcGFyYW1zLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLXBhcmFtcy5kYXRhJ11cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJhbWV0ZXJJZDtcbihmdW5jdGlvbiAoUGFyYW1ldGVySWQpIHtcbiAgICAvLyBEUElfSW50ZWdlclJMRSwgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkludGVnZXJSTEVcIl0gPSBcImludFJsZVwiO1xuICAgIC8vIERQSV9VbnNpZ25lZEludGVnZXJSTEUsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiVW5zaWduZWRJbnRlZ2VyUkxFXCJdID0gXCJ1aW50UmxlXCI7XG4gICAgLy8gRFBJX0Zsb2F0UkxFLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdFJMRVwiXSA9IFwiZmxvYXRSbGVcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVySUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVySURcIl0gPSBcInBhcmFtVHlwZVwiO1xuICAgIC8vIERQSV9BbGxvd0N1c3RvbURhdGFiYXNlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd0N1c3RvbURhdGFiYXNlXCJdID0gXCJhbGxvd0N1c3RvbURhdGFiYXNlXCI7XG4gICAgLy8gRFBJX0FsbG93Q3VzdG9tU2NoZW1hLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd0N1c3RvbVNjaGVtYVwiXSA9IFwiYWxsb3dDdXN0b21TY2hlbWFcIjtcbiAgICAvLyBEUElfQWxsb3dDdXN0b21TUUwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93Q3VzdG9tU1FMXCJdID0gXCJhbGxvd0N1c3RvbVNxbFwiO1xuICAgIC8vIERQSV9BbGxvd0N1c3RvbVNRTFdpdGhvdXRTY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93Q3VzdG9tU1FMV2l0aG91dFNjaGVtYVwiXSA9IFwiYWxsb3dDdXN0b21TcWxXaXRob3V0U2NoZW1hXCI7XG4gICAgLy8gRFBJX0FsbG93UHJldmlld0RhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93UHJldmlld0RhdGFcIl0gPSBcImFsbG93UHJldmlld0RhdGFcIjtcbiAgICAvLyBEUElfQWxsb3dTdG9yZWRQcm9jLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd1N0b3JlZFByb2NcIl0gPSBcImFsbG93U3RvcmVkUHJvY2VkdXJlXCI7XG4gICAgLy8gRFBJX0FsbG93VW5pb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93VW5pb25cIl0gPSBcImFsbG93VW5pb25cIjtcbiAgICAvLyBEUElfQXJlVmFyaWFibGVzVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXJlVmFyaWFibGVzVmlzaWJsZVwiXSA9IFwiYXJlVmFyaWFibGVzVmlzaWJsZVwiO1xuICAgIC8vIERQSV9BdHRyTGVnYWN5Q29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXR0ckxlZ2FjeUNvbm5lY3Rpb25cIl0gPSBcIndpZGdldEF0dHJMZWdhY3lcIjtcbiAgICAvLyBEUElfQXR0clJlYWRVbmNvbW1pdHRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXR0clJlYWRVbmNvbW1pdHRlZFwiXSA9IFwid2lkZ2V0QXR0clJlYWRVbmNvbW1pdHRlZERhdGFcIjtcbiAgICAvLyBEUElfQXR0clJlcXVpcmVTU0wsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJSZXF1aXJlU1NMXCJdID0gXCJ3aWRnZXRBdHRyUmVxdWlyZVNzbFwiO1xuICAgIC8vIERQSV9BdHRyUmVxdWlyZUVuY3J5cHRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJSZXF1aXJlRW5jcnlwdGlvblwiXSA9IFwid2lkZ2V0QXR0clJlcXVpcmVFbmNyeXB0aW9uXCI7XG4gICAgLy8gRFBJX0Jvb2wsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkJvb2xcIl0gPSBcImJvb2xcIjtcbiAgICAvLyBEUElfQ2FuUGFydGl0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5QYXJ0aXRpb25cIl0gPSBcImNhblBhcnRpdGlvblwiO1xuICAgIC8vIERQSV9DYW5SZWNvbW1lbmREYXRhU291cmNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuUmVjb21tZW5kRGF0YVNvdXJjZXNcIl0gPSBcImNhblJlY29tbWVuZERhdGFzb3VyY2VzXCI7XG4gICAgLy8gRFBJX0NhblJlY29tbWVuZFRhYmxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuUmVjb21tZW5kVGFibGVzXCJdID0gXCJjYW5SZWNvbW1lbmRUYWJsZXNcIjtcbiAgICAvLyBEUElfQ2hlY2tQZXJtaXNzaW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2hlY2tQZXJtaXNzaW9uc1wiXSA9IFwiY2hlY2tQZXJtaXNzaW9uc1wiO1xuICAgIC8vIERQSV9EYXRhYmFzZU5hbWVPcHRpb25hbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YWJhc2VOYW1lT3B0aW9uYWxcIl0gPSBcImRhdGFiYXNlTmFtZU9wdGlvbmFsXCI7XG4gICAgLy8gRFBJX0RhdGFiYXNlV0hPcHRpb25hbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YWJhc2VXSE9wdGlvbmFsXCJdID0gXCJkYXRhYmFzZVdhcmVob3VzZU9wdGlvbmFsXCI7XG4gICAgLy8gRFBJX0RvVmFsaWRhdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRG9WYWxpZGF0aW9uXCJdID0gXCJkb1ZhbGlkYXRpb25cIjtcbiAgICAvLyBEUElfRG9uZUxvYWRpbmdBbGxTaGVldHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbmVMb2FkaW5nQWxsU2hlZXRzXCJdID0gXCJnb29nbGVTaGVldERvbmVMb2FkaW5nXCI7XG4gICAgLy8gRFBJX0dBQmFzaWNJdGVtc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkdBQmFzaWNJdGVtc0VuYWJsZWRcIl0gPSBcImdhQmFzaWNJdGVtc0VuYWJsZWRcIjtcbiAgICAvLyBEUElfR0FEaW1lbnNpb25NZWFzdXJlc0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkdBRGltZW5zaW9uTWVhc3VyZXNFbmFibGVkXCJdID0gXCJnYURpbWVuc2lvbnNNZWFzdXJlc0VuYWJsZWRcIjtcbiAgICAvLyBEUElfR0FGaWx0ZXJzRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiR0FGaWx0ZXJzRW5hYmxlZFwiXSA9IFwiZ2FGaWx0ZXJzRW5hYmxlZFwiO1xuICAgIC8vIERQSV9IYXNEYXRhYmFzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzRGF0YWJhc2VcIl0gPSBcImhhc0RhdGFiYXNlXCI7XG4gICAgLy8gRFBJX0hhc0RhdGFMb3NzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNEYXRhTG9zc1wiXSA9IFwiaGFzRGF0YUxvc3NcIjtcbiAgICAvLyBEUElfSGFzRmFzdE1ldGFkYXRhLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNGYXN0TWV0YWRhdGFcIl0gPSBcImhhc0Zhc3RNZXRhZGF0YVwiO1xuICAgIC8vIERQSV9IYXNOZXdseURpc2NvdmVyZWRTY2hlbWEsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc05ld2x5RGlzY292ZXJlZFNjaGVtYVwiXSA9IFwiaGFzTmV3bHlEaXNjb3ZlcmVkU2NoZW1hXCI7XG4gICAgLy8gRFBJX0hhc1Blcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNQZXJtaXNzaW9uc1wiXSA9IFwiaGFzUGVybWlzc2lvbnNcIjtcbiAgICAvLyBEUElfSGFzU2NoZW1hLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNTY2hlbWFcIl0gPSBcImhhc1NjaGVtYVwiO1xuICAgIC8vIERQSV9IYXNTY2hlbWFDb3VudCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzU2NoZW1hQ291bnRcIl0gPSBcImhhc1NjaGVtYUNvdW50XCI7XG4gICAgLy8gRFBJX0hhc1RhYmxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzVGFibGVzXCJdID0gXCJoYXNUYWJsZXNcIjtcbiAgICAvLyBEUElfSGFzVW5jb21taXR0ZWRDaGFuZ2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNVbmNvbW1pdHRlZENoYW5nZXNcIl0gPSBcImhhc1VuY29tbWl0dGVkQ2hhbmdlc1wiO1xuICAgIC8vIERQSV9IYXNXYXJlaG91c2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1dhcmVob3VzZVwiXSA9IFwiaGFzV2FyZWhvdXNlXCI7XG4gICAgLy8gRFBJX0hhc1dhcm5pbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1dhcm5pbmdcIl0gPSBcImhhc1dhcm5pbmdcIjtcbiAgICAvLyBEUElfSXNDYWxjdWxhdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0NhbGN1bGF0ZWRcIl0gPSBcImlzQ2FsY3VsYXRlZFwiO1xuICAgIC8vIERQSV9Jc0Nvbm5lY3RlZFRvRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb25uZWN0ZWRUb0RhdGFTb3VyY2VcIl0gPSBcImlzQ29ubmVjdGVkRGF0YXNvdXJjZVwiO1xuICAgIC8vIERQSV9Jc0Rpc2FibGVkRGF0YUNvbm5lY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRGlzYWJsZWREYXRhQ29ubmVjdGlvblwiXSA9IFwiaXNEaXNhYmxlZERhdGFDb25uZWN0aW9uXCI7XG4gICAgLy8gRFBJX0lzRWRpdGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRWRpdGFibGVcIl0gPSBcImlzRWRpdGFibGVcIjtcbiAgICAvLyBEUElfSXNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0VuYWJsZWRcIl0gPSBcImlzRW5hYmxlZFwiO1xuICAgIC8vIERQSV9Jc0ZpbmlzaGVkQ29ubmVjdGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGaW5pc2hlZENvbm5lY3RpbmdcIl0gPSBcImlzRmluaXNoZWRDb25uZWN0aW5nXCI7XG4gICAgLy8gRFBJX0lzSGlkZGVuLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0hpZGRlblwiXSA9IFwiaXNIaWRkZW5cIjtcbiAgICAvLyBEUElfSXNNdWx0aVRhYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc011bHRpVGFibGVcIl0gPSBcImlzTXVsdGlUYWJsZVwiO1xuICAgIC8vIERQSV9Jc05ld0N1c3RvbVNRTCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNOZXdDdXN0b21TUUxcIl0gPSBcImlzTmV3Q3VzdG9tU3FsXCI7XG4gICAgLy8gRFBJX0lzTmV3RGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNOZXdEYXRhU291cmNlXCJdID0gXCJpc05ld0RhdGFTcmNcIjtcbiAgICAvLyBEUElfSXNQdWJsaXNoZWRGZWRlcmF0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUHVibGlzaGVkRmVkZXJhdGVkXCJdID0gXCJpc1B1Ymxpc2hlZEZlZGVyYXRlZFwiO1xuICAgIC8vIERQSV9Jc1NhbXBsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU2FtcGxlZFwiXSA9IFwiaXNTYW1wbGVkXCI7XG4gICAgLy8gRFBJX0lzU2NoZW1hTWVtYmVyTmV3bHlEaXNjb3ZlcmVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NjaGVtYU1lbWJlck5ld2x5RGlzY292ZXJlZFwiXSA9IFwiaXNTY2hlbWFNZW1iZXJOZXdseURpc2NvdmVyZWRcIjtcbiAgICAvLyBEUElfSXNTbG93RmFzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTbG93RmFzdFwiXSA9IFwiaXNTbG93ZmFzdFwiO1xuICAgIC8vIERQSV9Jc1N1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTdXBwb3J0ZWRcIl0gPSBcImlzU3VwcG9ydGVkXCI7XG4gICAgLy8gRFBJX0lzVGFibGVTZWxlY3Rpb25WaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1RhYmxlU2VsZWN0aW9uVmlzaWJsZVwiXSA9IFwiaXNUYWJsZVNlbGVjdGlvblZpc2libGVcIjtcbiAgICAvLyBEUElfSXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZVwiXSA9IFwiaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZVwiO1xuICAgIC8vIERQSV9Jc1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlQ29ubmVjdGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VDb25uZWN0YWJsZVwiXSA9IFwiaXNUYWJsZWF1U2VydmVyRGF0YXNvdXJjZUNvbm5lY3RhYmxlXCI7XG4gICAgLy8gRFBJX0lzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEb3dubG9hZGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEb3dubG9hZGFibGVcIl0gPSBcImlzVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEb3dubG9hZGFibGVcIjtcbiAgICAvLyBEUElfSXNWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1Zpc2libGVcIl0gPSBcImlzVmlzaWJsZVwiO1xuICAgIC8vIERQSV9OZWVkRmxhdHRlbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTmVlZEZsYXR0ZW5cIl0gPSBcIm5lZWRGbGF0dGVuXCI7XG4gICAgLy8gRFBJX1NTTFJlcXVpcmVzQ2VydGlmaWNhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNTTFJlcXVpcmVzQ2VydGlmaWNhdGVcIl0gPSBcInNzbFJlcXVpcmVzQ2VydGlmaWNhdGVcIjtcbiAgICAvLyBEUElfU2NoZW1hT3B0aW9uYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNjaGVtYU9wdGlvbmFsXCJdID0gXCJzY2hlbWFPcHRpb25hbFwiO1xuICAgIC8vIERQSV9TZXJ2aWNlTmFtZU9wdGlvbmFsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2aWNlTmFtZU9wdGlvbmFsXCJdID0gXCJzZXJ2aWNlTmFtZU9wdGlvbmFsXCI7XG4gICAgLy8gRFBJX1Nob3VsZFdhcm5Gb3JDcm9zc1NjaGVtYUpvaW5zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRXYXJuRm9yQ3Jvc3NTY2hlbWFKb2luc1wiXSA9IFwic2hvdWxkV2FybkNyb3NzU2NoZW1hSm9pbnNcIjtcbiAgICAvLyBEUElfU2hvd0Jyb3dzZUJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0Jyb3dzZUJ1dHRvblwiXSA9IFwic2hvd0Jyb3dzZUJ1dHRvblwiO1xuICAgIC8vIERQSV9TaG93Q29ubmVjdGlvblByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0Nvbm5lY3Rpb25Qcm9tcHRcIl0gPSBcInNob3dDb25uZWN0aW9uUHJvbXB0XCI7XG4gICAgLy8gRFBJX1Nob3dEQkJyb3dzZUJ1dHRvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0RCQnJvd3NlQnV0dG9uXCJdID0gXCJzaG93RGJCcm93c2VCdXR0b25cIjtcbiAgICAvLyBEUElfU2hvd0RCTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0RCTmFtZVByb21wdFwiXSA9IFwic2hvd0RiUHJvbXB0XCI7XG4gICAgLy8gRFBJX1Nob3dEQldITmFtZVByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0RCV0hOYW1lUHJvbXB0XCJdID0gXCJzaG93RGJ3aFByb21wdFwiO1xuICAgIC8vIERQSV9TaG93SW1wb3J0U1NMQ2VydExhYmVsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93SW1wb3J0U1NMQ2VydExhYmVsXCJdID0gXCJzaG93SW1wb3J0U3NsY2VydExhYmVsXCI7XG4gICAgLy8gRFBJX1Nob3dQb3J0UHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93UG9ydFByb21wdFwiXSA9IFwic2hvd1BvcnRQcm9tcHRcIjtcbiAgICAvLyBEUElfU2hvd1NTTENoZWNrYm94LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93U1NMQ2hlY2tib3hcIl0gPSBcInNob3dTc2xDaGVja2JveFwiO1xuICAgIC8vIERQSV9TaG93RW5jcnlwdGlvbkNoZWNrYm94LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93RW5jcnlwdGlvbkNoZWNrYm94XCJdID0gXCJzaG93RW5jcnlwdGlvbkNoZWNrYm94XCI7XG4gICAgLy8gRFBJX1Nob3dTZXJ2ZXJOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93U2VydmVyTmFtZVByb21wdFwiXSA9IFwic2hvd1NlcnZlclByb21wdFwiO1xuICAgIC8vIERQSV9TaG93U2VydmljZU5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dTZXJ2aWNlTmFtZVByb21wdFwiXSA9IFwic2hvd1NlcnZpY2VQcm9tcHRcIjtcbiAgICAvLyBEUElfU2hvd1VuY29tbWl0dGVkRGF0YUNoZWNrYm94LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93VW5jb21taXR0ZWREYXRhQ2hlY2tib3hcIl0gPSBcInNob3dVbmNvbW1pdHRlZERhdGFDaGVja2JveFwiO1xuICAgIC8vIERQSV9TdXBwb3J0c0dlbmVyaWNBdXRoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXBwb3J0c0dlbmVyaWNBdXRoXCJdID0gXCJzdXBwb3J0c0dlbmVyaWNBdXRoXCI7XG4gICAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJGZXRjaEFzY2VuZGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlckZldGNoQXNjZW5kaW5nXCJdID0gXCJ0YWJsZWF1U2VydmVyRmV0Y2hBc2NlbmRpbmdcIjtcbiAgICAvLyBEUElfVXNlc1JhZGlvQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VzUmFkaW9CdXR0b25cIl0gPSBcInVzZXNSYWRpb0J1dHRvblwiO1xuICAgIC8vIERQSV9CaWdRdWVyeUxlZ2FjeVNRTENoZWNrU3RhdHVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJCaWdRdWVyeUxlZ2FjeVNRTENoZWNrU3RhdHVzXCJdID0gXCJkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVja1N0YXR1c1wiO1xuICAgIC8vIERQSV9IYXNCaWdRdWVyeUxlZ2FjeVNRTENoZWNrLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNCaWdRdWVyeUxlZ2FjeVNRTENoZWNrXCJdID0gXCJkYXRhc291cmNlQmlncXVlcnlMZWdhY3lTcWxDaGVja1wiO1xuICAgIC8vIERQSV9BdXRvRmV0Y2hMaW1pdCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJBdXRvRmV0Y2hMaW1pdFwiXSA9IFwiYXV0b0ZldGNoTGltaXRcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblR5cGUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblR5cGVcIl0gPSBcImNvbm5lY3Rpb25UeXBlXCI7XG4gICAgLy8gRFBJX0ljb25JZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJJY29uSWRcIl0gPSBcImljb25JZFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZENhdGFsb2dJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZENhdGFsb2dJbmRleFwiXSA9IFwic2VsZWN0ZWRDYXRhbG9nSW5kZXhcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRDdWJlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRDdWJlSW5kZXhcIl0gPSBcInNlbGVjdGVkQ3ViZUluZGV4XCI7XG4gICAgLy8gRFBJX1NlbGVjdGVkR0FBY2NvdW50SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRHQUFjY291bnRJbmRleFwiXSA9IFwic2VsZWN0ZWRHYUFjY291bnRJbmRleFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZEdBTWVhc3VyZVNldEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkR0FNZWFzdXJlU2V0SW5kZXhcIl0gPSBcInNlbGVjdGVkR2FNZWFzdXJlU2V0SW5kZXhcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRHQVByb3BlcnR5SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRHQVByb3BlcnR5SW5kZXhcIl0gPSBcInNlbGVjdGVkR2FQcm9wZXJ0eUluZGV4XCI7XG4gICAgLy8gRFBJX1NlbGVjdGVkR0FTZWdtZW50SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRHQVNlZ21lbnRJbmRleFwiXSA9IFwic2VsZWN0ZWRHYVNlZ21lbnRJbmRleFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZEdBVmlld0luZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkR0FWaWV3SW5kZXhcIl0gPSBcInNlbGVjdGVkR2FWaWV3SW5kZXhcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRHb29nbGVTaGVldEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkR29vZ2xlU2hlZXRJbmRleFwiXSA9IFwic2VsZWN0ZWRHb29nbGVTaGVldEluZGV4XCI7XG4gICAgLy8gRFBJX1NlbGVjdGVkT3B0aW9uSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRPcHRpb25JbmRleFwiXSA9IFwic2VsZWN0ZWRPcHRpb25JbmRleFwiO1xuICAgIC8vIERQSV9TbG93TWV0YWRhdGFDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJTbG93TWV0YWRhdGFDb3VudFwiXSA9IFwic2xvd01ldGFkYXRhQ291bnRcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckZldGNoU29ydEJ5LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlYXVTZXJ2ZXJGZXRjaFNvcnRCeVwiXSA9IFwidGFibGVhdVNlcnZlckZldGNoU29ydFwiO1xuICAgIC8vIERQSV9BY3R1YWxQYXJhbWV0ZXJPcmRpbmFsLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJBY3R1YWxQYXJhbWV0ZXJPcmRpbmFsXCJdID0gXCJhY3R1YWxQYXJhbWV0ZXJPcmRpbmFsXCI7XG4gICAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlclR5cGUsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdHVhbFBhcmFtZXRlclR5cGVcIl0gPSBcImFjdHVhbFBhcmFtZXRlclR5cGVcIjtcbiAgICAvLyBEUElfQ2hhclNldElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJDaGFyU2V0SURcIl0gPSBcImNoYXJzZXRJZFwiO1xuICAgIC8vIERQSV9EYXRhU291cmNlT3JkaW5hbCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZU9yZGluYWxcIl0gPSBcImRhdGFzb3VyY2VPcmRpbmFsXCI7XG4gICAgLy8gRFBJX0ZpbHRlckNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJDb3VudFwiXSA9IFwiZmlsdGVyQ291bnRcIjtcbiAgICAvLyBEUElfVmFyaWFibGVzQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlc0NvdW50XCJdID0gXCJ2YXJpYWJsZXNDb3VudFwiO1xuICAgIC8vIERQSV9BY3R1YWxQYXJhbWV0ZXJEaXNwbGF5TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBY3R1YWxQYXJhbWV0ZXJEaXNwbGF5TmFtZVwiXSA9IFwiYWN0dWFsUGFyYW1ldGVyRGlzcGxheU5hbWVcIjtcbiAgICAvLyBEUElfQWN0dWFsUGFyYW1ldGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBY3R1YWxQYXJhbWV0ZXJOYW1lXCJdID0gXCJhY3R1YWxQYXJhbWV0ZXJOYW1lXCI7XG4gICAgLy8gRFBJX0FjdHVhbFBhcmFtZXRlclZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdHVhbFBhcmFtZXRlclZhbHVlXCJdID0gXCJhY3R1YWxQYXJhbWV0ZXJWYWx1ZVwiO1xuICAgIC8vIERQSV9BdHRyQVBJVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyQVBJVmVyc2lvblwiXSA9IFwiYXR0ckFwaVZlcnNpb25cIjtcbiAgICAvLyBEUElfQXR0ckF1dGhUeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJBdXRoVHlwZVwiXSA9IFwid2lkZ2V0QXR0ckF1dGh0eXBlXCI7XG4gICAgLy8gRFBJX0F0dHJDb25uZWN0aW9uRGF0YSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyQ29ubmVjdGlvbkRhdGFcIl0gPSBcImF0dHJDb25uZWN0aW9uRGF0YVwiO1xuICAgIC8vIERQSV9BdHRyQ29ubmVjdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckNvbm5lY3Rpb25OYW1lXCJdID0gXCJhdHRyQ29ubmVjdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfQXR0ckNvbm5lY3Rpb25UeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJDb25uZWN0aW9uVHlwZVwiXSA9IFwid2lkZ2V0QXR0ckNvbm5lY3Rpb250eXBlXCI7XG4gICAgLy8gRFBJX0F0dHJDb25uZWN0aW9uVVJMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJDb25uZWN0aW9uVVJMXCJdID0gXCJhdHRyQ29ubmVjdGlvblVybFwiO1xuICAgIC8vIERQSV9BdHRyQ3ViZVNwZWNpZmljYXRpb25JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyQ3ViZVNwZWNpZmljYXRpb25JZFwiXSA9IFwid2lkZ2V0QXR0ckN1YmVTcGVjaWZpY2F0aW9uSWRcIjtcbiAgICAvLyBEUElfQXR0ckN1YmVTcGVjaWZpY2F0aW9uVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckN1YmVTcGVjaWZpY2F0aW9uVmFsdWVcIl0gPSBcIndpZGdldEF0dHJDdWJlU3BlY2lmaWNhdGlvblZhbHVlXCI7XG4gICAgLy8gRFBJX0F0dHJEU04sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckRTTlwiXSA9IFwid2lkZ2V0QXR0ckRzblwiO1xuICAgIC8vIERQSV9BdHRyRGF0YWJhc2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckRhdGFiYXNlXCJdID0gXCJ3aWRnZXRBdHRyRGJcIjtcbiAgICAvLyBEUElfQXR0ckRhdGFiYXNlV2FyZWhvdXNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJEYXRhYmFzZVdhcmVob3VzZVwiXSA9IFwid2lkZ2V0QXR0ckRid2hcIjtcbiAgICAvLyBEUElfQXR0ckRyaXZlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyRHJpdmVyXCJdID0gXCJ3aWRnZXRBdHRyRHJpdmVyXCI7XG4gICAgLy8gRFBJX0F0dHJGaWxlbmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyRmlsZW5hbWVcIl0gPSBcIndpZGdldEF0dHJGaWxlbmFtZVwiO1xuICAgIC8vIERQSV9BdHRySFRUUFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckhUVFBQYXRoXCJdID0gXCJ3aWRnZXRBdHRySHR0cFBhdGhcIjtcbiAgICAvLyBEUElfQXR0ckluY3JlbWVudGFsUmVmcmVzaEtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5XCJdID0gXCJhdHRySW5jcmVtZW50YWxSZWZyZXNoS2V5XCI7XG4gICAgLy8gRFBJX0F0dHJLZXJiZXJvc0hvc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0cktlcmJlcm9zSG9zdFwiXSA9IFwid2lkZ2V0QXR0cktlcmJlcm9zSG9zdFwiO1xuICAgIC8vIERQSV9BdHRyS2VyYmVyb3NSZWFsbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyS2VyYmVyb3NSZWFsbVwiXSA9IFwid2lkZ2V0QXR0cktlcmJlcm9zUmVhbG1cIjtcbiAgICAvLyBEUElfQXR0cktlcmJlcm9zU2VydmljZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyS2VyYmVyb3NTZXJ2aWNlXCJdID0gXCJ3aWRnZXRBdHRyS2VyYmVyb3NTZXJ2aWNlXCI7XG4gICAgLy8gRFBJX0F0dHJMYXN0UmVjb3JkVG9rZW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckxhc3RSZWNvcmRUb2tlblwiXSA9IFwiYXR0ckxhc3RSZWNvcmRUb2tlblwiO1xuICAgIC8vIERQSV9BdHRyTURXUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyTURXUGF0aFwiXSA9IFwid2lkZ2V0QXR0ck1kd1BhdGhcIjtcbiAgICAvLyBEUElfQXR0ck1EV1VzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJNRFdVc2VybmFtZVwiXSA9IFwid2lkZ2V0QXR0ck1kd1VzZXJuYW1lXCI7XG4gICAgLy8gRFBJX0F0dHJPREJDUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJPREJDUHJvbXB0XCJdID0gXCJ3aWRnZXRBdHRyT2RiY1Byb21wdFwiO1xuICAgIC8vIERQSV9BdHRyT0RCQ1N0cmluZ0V4dHJhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyT0RCQ1N0cmluZ0V4dHJhc1wiXSA9IFwid2lkZ2V0QXR0ck9kYmNTdHJpbmdFeHRyYXNcIjtcbiAgICAvLyBEUElfQXR0clBvcnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clBvcnRcIl0gPSBcIndpZGdldEF0dHJQb3J0XCI7XG4gICAgLy8gRFBJX0F0dHJTQVBDbGllbnQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clNBUENsaWVudFwiXSA9IFwid2lkZ2V0QXR0clNhcENsaWVudFwiO1xuICAgIC8vIERQSV9BdHRyU0FQTGFuZ3VhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clNBUExhbmd1YWdlXCJdID0gXCJ3aWRnZXRBdHRyU2FwTGFuZ3VhZ2VcIjtcbiAgICAvLyBEUElfQXR0ckVkaXRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0ckVkaXRpb25cIl0gPSBcIndpZGdldEF0dHJTc2xFZGl0aW9uXCI7XG4gICAgLy8gRFBJX0F0dHJTU09Eb21haW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clNTT0RvbWFpblwiXSA9IFwid2lkZ2V0QXR0clNzb0RvbWFpblwiO1xuICAgIC8vIERQSV9BdHRyU1NMQ2VydCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyU1NMQ2VydFwiXSA9IFwid2lkZ2V0QXR0clNzbENlcnRcIjtcbiAgICAvLyBEUElfQXR0clNjcmlwdFZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clNjcmlwdFZlcnNpb25cIl0gPSBcImF0dHJTY3JpcHRWZXJzaW9uXCI7XG4gICAgLy8gRFBJX0F0dHJTZXJ2ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXR0clNlcnZlclwiXSA9IFwid2lkZ2V0QXR0clNlcnZlclwiO1xuICAgIC8vIERQSV9BdHRyU2VydmljZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyU2VydmljZVwiXSA9IFwid2lkZ2V0QXR0clNlcnZpY2VcIjtcbiAgICAvLyBEUElfQXR0clVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJVc2VybmFtZVwiXSA9IFwid2lkZ2V0QXR0clVzZXJcIjtcbiAgICAvLyBEUElfQXV0aGVudGljYXRpb25Qcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXV0aGVudGljYXRpb25Qcm9tcHRcIl0gPSBcImF1dGhlbnRpY2F0aW9uUHJvbXB0XCI7XG4gICAgLy8gRFBJX0J1dHRvbkNsaWNrQWN0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJ1dHRvbkNsaWNrQWN0aW9uXCJdID0gXCJidXR0b25DbGlja0FjdGlvblwiO1xuICAgIC8vIERQSV9CdXR0b25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJ1dHRvbkNhcHRpb25cIl0gPSBcImJ1dHRvbkNhcHRpb25cIjtcbiAgICAvLyBEUElfQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0aW9uXCJdID0gXCJjYXB0aW9uXCI7XG4gICAgLy8gRFBJX0NhdGFsb2dMaXN0UHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGFsb2dMaXN0UHJvbXB0XCJdID0gXCJjYXRhbG9nTGlzdFByb21wdFwiO1xuICAgIC8vIERQSV9DYXRhbG9nTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDYXRhbG9nTmFtZVwiXSA9IFwiY2F0YWxvZ05hbWVcIjtcbiAgICAvLyBEUElfQ2F0YWxvZ1NlYXJjaFRlcm0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ2F0YWxvZ1NlYXJjaFRlcm1cIl0gPSBcImNhdGFsb2dTZWFyY2hUZXJtXCI7XG4gICAgLy8gRFBJX0NhdGVnb3J5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3J5XCJdID0gXCJpdGVtQ2F0ZWdvcnlcIjtcbiAgICAvLyBEUElfQ2xhc3NOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNsYXNzTmFtZVwiXSA9IFwiY2xhc3NOYW1lRm9yQ2xlYW5pbmdcIjtcbiAgICAvLyBEUElfQ2xvdWRGaWxlQ2xhc3NOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNsb3VkRmlsZUNsYXNzTmFtZVwiXSA9IFwiY2xvdWRGaWxlQ2xhc3NOYW1lXCI7XG4gICAgLy8gRFBJX0Nsb3VkRmlsZVN0b3JhZ2VQcm92aWRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDbG91ZEZpbGVTdG9yYWdlUHJvdmlkZXJcIl0gPSBcImNsb3VkRmlsZVN0b3JhZ2VQcm92aWRlclwiO1xuICAgIC8vIERQSV9Db25maWdOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZ05hbWVcIl0gPSBcImNvbm5lY3Rpb25Db25maWdOYW1lXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25DYXB0aW9uXCJdID0gXCJjb25uZWN0aW9uQ2FwdGlvblwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uRGVzY3JpcHRpb25MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uRGVzY3JpcHRpb25MYWJlbFwiXSA9IFwiY29ubmVjdGlvbkRlc2NyaXB0aW9uTGFiZWxcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbkNsYXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25DbGFzc1wiXSA9IFwiY29ubmVjdGlvbkNsYXNzTmFtZVwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uTmFtZVwiXSA9IFwiY29ubmVjdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbk9wdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbk9wdGlvbk5hbWVcIl0gPSBcImNvbm5lY3Rpb25PcHRpb25OYW1lXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZVwiXSA9IFwiY29ubmVjdGlvblNwZWNpZmljYXRpb25UaXRsZVwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uVHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25UeXBlTGFiZWxcIl0gPSBcImNvbm5lY3Rpb25UeXBlTGFiZWxcIjtcbiAgICAvLyBEUElfQ3ViZURlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkN1YmVEZXNjcmlwdGlvblwiXSA9IFwiY3ViZURlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX0N1YmVMYXN0VXBkYXRlZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlTGFzdFVwZGF0ZWRcIl0gPSBcImN1YmVMYXN0VXBkYXRlZFwiO1xuICAgIC8vIERQSV9DdWJlTGlzdFByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlTGlzdFByb21wdFwiXSA9IFwiY3ViZUxpc3RQcm9tcHRcIjtcbiAgICAvLyBEUElfQ3ViZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ3ViZU5hbWVcIl0gPSBcImN1YmVOYW1lXCI7XG4gICAgLy8gRFBJX0N1YmVTZWFyY2hUZXJtLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkN1YmVTZWFyY2hUZXJtXCJdID0gXCJjdWJlU2VhcmNoVGVybVwiO1xuICAgIC8vIERQSV9DdXJyZW50VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDdXJyZW50VGV4dFwiXSA9IFwiY3VycmVudFRleHRcIjtcbiAgICAvLyBEUElfQ3VzdG9tU3BsaXRTdHJpbmdTZXBhcmF0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ3VzdG9tU3BsaXRTdHJpbmdTZXBhcmF0b3JcIl0gPSBcImN1c3RvbVNwbGl0U3RyaW5nU2VwYXJhdG9yXCI7XG4gICAgLy8gRFBJX0RhdGFzb3VyY2VJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhc291cmNlSWRcIl0gPSBcImRhdGFzb3VyY2VJZFwiO1xuICAgIC8vIERQSV9EQk5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiREJOYW1lUHJvbXB0XCJdID0gXCJkYk5hbWVQcm9tcHRcIjtcbiAgICAvLyBEUElfREJXSE5hbWVQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiREJXSE5hbWVQcm9tcHRcIl0gPSBcImRiV2FyZWhvdXNlTmFtZVByb21wdFwiO1xuICAgIC8vIERQSV9EU0NsYXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRTQ2xhc3NcIl0gPSBcImRzQ2xhc3NcIjtcbiAgICAvLyBEUElfRGF0YWJhc2VOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFiYXNlTmFtZVwiXSA9IFwiZGF0YXNvdXJjZURhdGFiYXNlTmFtZVwiO1xuICAgIC8vIERQSV9EYXRhYmFzZU5vdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YWJhc2VOb3RlXCJdID0gXCJkYXRhYmFzZU5vdGVcIjtcbiAgICAvLyBEUElfRHJhZ0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYWdMYWJlbFwiXSA9IFwiZHJhZ0xhYmVsXCI7XG4gICAgLy8gRFBJX0VmZmVjdGl2ZURhdGVSYW5nZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFZmZlY3RpdmVEYXRlUmFuZ2VcIl0gPSBcImVmZmVjdGl2ZURhdGVSYW5nZVwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldENyZWF0ZWRUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0Q3JlYXRlZFRpbWVcIl0gPSBcImdvb2dsZVNoZWV0Q3JlYXRlZFRpbWVcIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVTaGVldElkXCJdID0gXCJnb29nbGVTaGVldElkXCI7XG4gICAgLy8gRFBJX0dvb2dsZVNoZWV0TGFzdE1vZGlmaWVkVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVTaGVldExhc3RNb2RpZmllZFRpbWVcIl0gPSBcImdvb2dsZVNoZWV0TGFzdE1vZGlmaWVkVGltZVwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldExhc3RNb2RpZnlpbmdVc2VyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXJcIl0gPSBcImdvb2dsZVNoZWV0TGFzdE1vZGlmeWluZ1VzZXJcIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRMYXN0Vmlld2VkQnlVc2VyVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lXCJdID0gXCJnb29nbGVTaGVldExhc3RWaWV3ZWRCeVVzZXJUaW1lXCI7XG4gICAgLy8gRFBJX0dvb2dsZVNoZWV0TWltZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRNaW1lVHlwZVwiXSA9IFwiZ29vZ2xlU2hlZXRNaW1lVHlwZVwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXROYW1lXCJdID0gXCJnb29nbGVTaGVldE5hbWVcIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRPd25lciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVTaGVldE93bmVyXCJdID0gXCJnb29nbGVTaGVldE93bmVyXCI7XG4gICAgLy8gRFBJX0dvb2dsZVNoZWV0VGh1bWJuYWlsTGluaywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVTaGVldFRodW1ibmFpbExpbmtcIl0gPSBcImdvb2dsZVNoZWV0VGh1bWJuYWlsTGlua1wiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldFRodW1ibmFpbElkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0VGh1bWJuYWlsSWRcIl0gPSBcImdvb2dsZVNoZWV0VGh1bWJuYWlsSWRcIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRUaHVtYm5haWxMb2NhbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRUaHVtYm5haWxMb2NhbFBhdGhcIl0gPSBcImdvb2dsZVNoZWV0VGh1bWJuYWlsTG9jYWxQYXRoXCI7XG4gICAgLy8gRFBJX0dvb2dsZVNoZWV0V2ViVmlld0xpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRXZWJWaWV3TGlua1wiXSA9IFwiZ29vZ2xlU2hlZXRXZWJWaWV3TGlua1wiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldHNMaXN0RXJyb3JNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2VcIl0gPSBcImdvb2dsZVNoZWV0c0xpc3RFcnJvck1lc3NhZ2VcIjtcbiAgICAvLyBEUElfSW5pdGlhbFNRTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJbml0aWFsU1FMXCJdID0gXCJpbml0aWFsU3FsXCI7XG4gICAgLy8gRFBJX0lTT0RhdGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSVNPRGF0ZVwiXSA9IFwiaXNvRGF0ZVwiO1xuICAgIC8vIERQSV9JU09FbmREYXRlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIklTT0VuZERhdGVcIl0gPSBcImlzb0VuZERhdGVcIjtcbiAgICAvLyBEUElfSVNPU3RhcnREYXRlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIklTT1N0YXJ0RGF0ZVwiXSA9IFwiaXNvU3RhcnREYXRlXCI7XG4gICAgLy8gRFBJX0lzb2xhdGlvbkxldmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIklzb2xhdGlvbkxldmVsXCJdID0gXCJkYXRhc291cmNlSXNvbGF0aW9uTGV2ZWxcIjtcbiAgICAvLyBEUElfSXRlbURlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkl0ZW1EZXNjcmlwdGlvblwiXSA9IFwiaXRlbURlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX0l0ZW1JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJdGVtSWRcIl0gPSBcIml0ZW1JZFwiO1xuICAgIC8vIERQSV9LZXJiZXJvc0hvc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiS2VyYmVyb3NIb3N0XCJdID0gXCJkYXRhc291cmNlS2VyYmVyb3NIb3N0XCI7XG4gICAgLy8gRFBJX0tlcmJlcm9zUmVhbG0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiS2VyYmVyb3NSZWFsbVwiXSA9IFwiZGF0YXNvdXJjZUtlcmJlcm9zUmVhbG1cIjtcbiAgICAvLyBEUElfS2VyYmVyb3NTZXJ2aWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIktlcmJlcm9zU2VydmljZVwiXSA9IFwiZGF0YXNvdXJjZUtlcmJlcm9zU2VydmljZVwiO1xuICAgIC8vIERQSV9OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5hbWVcIl0gPSBcIm5hbWVcIjtcbiAgICAvLyBEUElfT3B0aW9uSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT3B0aW9uSWRcIl0gPSBcIm9wdGlvbklkXCI7XG4gICAgLy8gRFBJX1BhcnRpdGlvbmluZ0J1dHRvbkxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcnRpdGlvbmluZ0J1dHRvbkxhYmVsXCJdID0gXCJwYXJ0aXRpb25pbmdCdXR0b25MYWJlbFwiO1xuICAgIC8vIERQSV9QYXJ0aXRpb25pbmdCdXR0b25Ub29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXBcIl0gPSBcInBhcnRpdGlvbmluZ0J1dHRvblRvb2x0aXBcIjtcbiAgICAvLyBEUElfUGFydGl0aW9uaW5nVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYXJ0aXRpb25pbmdUZXh0XCJdID0gXCJxdWVyeVBhcnRpdGlvbmluZ1RleHRcIjtcbiAgICAvLyBEUElfUGRmU3RhcnRQYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlBkZlN0YXJ0UGFnZVwiXSA9IFwicGRmU3RhcnRQYWdlXCI7XG4gICAgLy8gRFBJX1BkZkVuZFBhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGRmRW5kUGFnZVwiXSA9IFwicGRmRW5kUGFnZVwiO1xuICAgIC8vIERQSV9Qb3J0UHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlBvcnRQcm9tcHRcIl0gPSBcInBvcnRQcm9tcHRcIjtcbiAgICAvLyBEUElfUHJvbXB0VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQcm9tcHRUZXh0XCJdID0gXCJwcm9tcHRUZXh0XCI7XG4gICAgLy8gRFBJX1F1ZXJ5QmFuZGluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJRdWVyeUJhbmRpbmdcIl0gPSBcInF1ZXJ5QmFuZGluZ1wiO1xuICAgIC8vIERQSV9RdWVyeVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUXVlcnlUZXh0XCJdID0gXCJxdWVyeVRleHRcIjtcbiAgICAvLyBEUElfUmVjb21tZW5kYXRpb25VVUlELCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJlY29tbWVuZGF0aW9uVVVJRFwiXSA9IFwicmVjb21tZW5kYXRpb25VdWlkXCI7XG4gICAgLy8gRFBJX1NRTFF1ZXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNRTFF1ZXJ5XCJdID0gXCJzcWxRdWVyeVwiO1xuICAgIC8vIERQSV9TY2hlbWFDb21ib0ZhbGxiYWNrVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTY2hlbWFDb21ib0ZhbGxiYWNrVGV4dFwiXSA9IFwic2NoZW1hQ29tYm9GYWxsYmFja1RleHRcIjtcbiAgICAvLyBEUElfU2NoZW1hTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hTGFiZWxcIl0gPSBcInNjaGVtYUxhYmVsXCI7XG4gICAgLy8gRFBJX1NjaGVtYU1lbWJlckdsb2JhbE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hTWVtYmVyR2xvYmFsTmFtZVwiXSA9IFwic2NoZW1hTWVtYmVyR2xvYmFsTmFtZVwiO1xuICAgIC8vIERQSV9TY2hlbWFOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNjaGVtYU5hbWVcIl0gPSBcImRhdGFzb3VyY2VTY2hlbWFOYW1lXCI7XG4gICAgLy8gRFBJX1NjcmlwdFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2NyaXB0VGV4dFwiXSA9IFwic2NyaXB0VGV4dFwiO1xuICAgIC8vIERQSV9TZWNvbmRhcnlXaGl0ZUxpc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2Vjb25kYXJ5V2hpdGVMaXN0XCJdID0gXCJzZWNvbmRhcnlXaGl0ZUxpc3RcIjtcbiAgICAvLyBEUElfU2VydmVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlcnZlclwiXSA9IFwiZGF0YXNvdXJjZVNlcnZlclwiO1xuICAgIC8vIERQSV9TZXJ2ZXJOYW1lUHJvbXB0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlcnZlck5hbWVQcm9tcHRcIl0gPSBcInNlcnZlck5hbWVQcm9tcHRcIjtcbiAgICAvLyBEUElfU2VydmljZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2aWNlXCJdID0gXCJkYXRhc291cmNlU2VydmljZVwiO1xuICAgIC8vIERQSV9TZXJ2aWNlTmFtZVByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2aWNlTmFtZVByb21wdFwiXSA9IFwic2VydmljZVByb21wdFwiO1xuICAgIC8vIERQSV9TaGVldEZvcm1hdHRpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRGb3JtYXR0aW5nXCJdID0gXCJzaGVldEZvcm1hdHRpbmdcIjtcbiAgICAvLyBEUElfU2xvd01ldGFkYXRhU2VhcmNoVGVybSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTbG93TWV0YWRhdGFTZWFyY2hUZXJtXCJdID0gXCJzbG93TWV0YWRhdGFTZWFyY2hUZXJtXCI7XG4gICAgLy8gRFBJX1N0YW5kYXJkQ29ubmVjdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3RhbmRhcmRDb25uZWN0aW9uTmFtZVwiXSA9IFwiZGF0YXNvdXJjZVN0YW5kYXJkQ29ubmVjdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfU3RhbmRhcmRDb25uZWN0aW9uUGxhY2Vob2xkZXJUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN0YW5kYXJkQ29ubmVjdGlvblBsYWNlaG9sZGVyVGV4dFwiXSA9IFwic3RhbmRhcmRDb25uZWN0aW9uUGxhY2Vob2xkZXJUZXh0XCI7XG4gICAgLy8gRFBJX1N0b3JlZFByb2NlZHVyZVBhcmFtZXRlclRpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3JlZFByb2NlZHVyZVBhcmFtZXRlclRpdGxlXCJdID0gXCJzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJUaXRsZVwiO1xuICAgIC8vIERQSV9UYWJsZUFsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQWxpYXNcIl0gPSBcInRhYmxlQWxpYXNcIjtcbiAgICAvLyBEUElfUmlnaHRUYWJsZUFsaWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJpZ2h0VGFibGVBbGlhc1wiXSA9IFwicmlnaHRUYWJsZUFsaWFzXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUNhcHRpb25cIl0gPSBcInRhYmxlQ2FwdGlvblwiO1xuICAgIC8vIERQSV9UYWJsZUNvbGxlY3Rpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ29sbGVjdGlvbk5hbWVcIl0gPSBcInRhYmxlQ29sbGVjdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfVGFibGVQbGFjZWhvbGRlclRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVQbGFjZWhvbGRlclRleHRcIl0gPSBcInRhYmxlUGxhY2Vob2xkZXJUZXh0XCI7XG4gICAgLy8gRFBJX1RhYmxlUmFua2luZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVJhbmtpbmdcIl0gPSBcInRhYmxlUmFua2luZ1wiO1xuICAgIC8vIERQSV9UYWJsZVNvcnRLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVTb3J0S2V5XCJdID0gXCJ0YWJsZVNvcnRrZXlcIjtcbiAgICAvLyBEUElfVGFibGVUb29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVG9vbHRpcFwiXSA9IFwidGFibGVUb29sdGlwXCI7XG4gICAgLy8gRFBJX1RhYmxlVG9SZXBsYWNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVG9SZXBsYWNlXCJdID0gXCJ0YWJsZVRvUmVwbGFjZVwiO1xuICAgIC8vIERQSV9UYWJsZVdhcm5pbmdNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlV2FybmluZ01lc3NhZ2VcIl0gPSBcInRhYmxlV2FybmluZ01lc3NhZ2VcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VEZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uXCJdID0gXCJ0YWJsZWF1U2VydmVyRGF0YXNvdXJjZURlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTGFzdEV4dHJhY3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdFwiXSA9IFwidGFibGVhdVNlcnZlckRhdGFzb3VyY2VMYXN0RXh0cmFjdFwiO1xuICAgIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YXNvdXJjZU1vZGlmaWVkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWRcIl0gPSBcInRhYmxlYXVTZXJ2ZXJEYXRhc291cmNlTW9kaWZpZWRcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFzb3VyY2VPd25lciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyXCJdID0gXCJ0YWJsZWF1U2VydmVyRGF0YXNvdXJjZU93bmVyXCI7XG4gICAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJEYXRhc291cmNlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YXNvdXJjZVBhdGhcIl0gPSBcInRhYmxlYXVTZXJ2ZXJEYXRhc291cmNlUGF0aFwiO1xuICAgIC8vIERQSV9UYWJsZWF1U2VydmVyRmV0Y2hTZWFyY2hRdWVyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRmV0Y2hTZWFyY2hRdWVyeVwiXSA9IFwidGFibGVhdVNlcnZlckZldGNoU2VhcmNoUXVlcnlcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlck5hbWVcIl0gPSBcInRhYmxlYXVTZXJ2ZXJOYW1lXCI7XG4gICAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJQcm9qZWN0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyUHJvamVjdE5hbWVcIl0gPSBcInRhYmxlYXVTZXJ2ZXJQcm9qZWN0TmFtZVwiO1xuICAgIC8vIERQSV9UYWJsZWF1U2VydmVyVXNlcm5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlclVzZXJuYW1lXCJdID0gXCJ0YWJsZWF1U2VydmVyVXNlcm5hbWVcIjtcbiAgICAvLyBEUElfVHJhbnNwb3J0VHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc3BvcnRUeXBlXCJdID0gXCJ0cmFuc3BvcnRUeXBlXCI7XG4gICAgLy8gRFBJX1dhcmVob3VzZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV2FyZWhvdXNlTmFtZVwiXSA9IFwiZGF0YXNvdXJjZVdhcmVob3VzZU5hbWVcIjtcbiAgICAvLyBEUElfV29ya2dyb3VwV29ya2Jvb2tOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIldvcmtncm91cFdvcmtib29rTmFtZVwiXSA9IFwid29ya2dyb3VwV29ya2Jvb2tOYW1lXCI7XG4gICAgLy8gRFBJX0FuYWx5dGljc0l0ZW1Ub29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFuYWx5dGljc0l0ZW1Ub29sdGlwXCJdID0gXCJhbmFseXRpY3NJdGVtVG9vbHRpcFwiO1xuICAgIC8vIERQSV9EZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEZXNjcmlwdGlvblwiXSA9IFwiZGVzY3JpcHRpb25cIjtcbiAgICAvLyBEUElfRFNDbGFzc0NhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRFNDbGFzc0NhcHRpb25cIl0gPSBcImRzQ2xhc3NDYXB0aW9uXCI7XG4gICAgLy8gRFBJX0Zvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9ybXVsYVwiXSA9IFwiZm9ybXVsYVwiO1xuICAgIC8vIERQSV9NZXNzYWdlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNZXNzYWdlVGV4dFwiXSA9IFwibWVzc2FnZVRleHRcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhc291cmNlXCJdID0gXCJkYXRhc291cmNlXCI7XG4gICAgLy8gRFBJX0RhdGFzb3VyY2VTb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZVNvdXJjZVwiXSA9IFwiZGF0YXNvdXJjZVNvdXJjZVwiO1xuICAgIC8vIERQSV9EYXRhc291cmNlVGFyZ2V0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VUYXJnZXRcIl0gPSBcImRhdGFzb3VyY2VUYXJnZXRcIjtcbiAgICAvLyBEUElfRmlyc3REYXRhc291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpcnN0RGF0YXNvdXJjZVwiXSA9IFwiZmlyc3REYXRhc291cmNlXCI7XG4gICAgLy8gRFBJX05ld0RhdGFzb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTmV3RGF0YXNvdXJjZVwiXSA9IFwibmV3RGF0YXNvdXJjZVwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJzRGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJzRGF0YXNvdXJjZVwiXSA9IFwicGFyYW1ldGVyc0RhdGFzb3VyY2VcIjtcbiAgICAvLyBEUElfUHJpbWFyeURhdGFzb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUHJpbWFyeURhdGFzb3VyY2VcIl0gPSBcInByaW1hcnlEYXRhc291cmNlXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25EYXRhYmFzZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uRGF0YWJhc2VzXCJdID0gXCJjb25uZWN0aW9uRGF0YWJhc2VzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25TY2hlbWFzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblNjaGVtYXNcIl0gPSBcImNvbm5lY3Rpb25TY2hlbWFzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25XYXJlaG91c2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbldhcmVob3VzZXNcIl0gPSBcImNvbm5lY3Rpb25XYXJlaG91c2VzXCI7XG4gICAgLy8gRFBJX0RTQ2xhc3NlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRTQ2xhc3Nlc1wiXSA9IFwiZHNDbGFzc2VzXCI7XG4gICAgLy8gRFBJX1Bvc3NpYmxlQ2hvaWNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBvc3NpYmxlQ2hvaWNlc1wiXSA9IFwicG9zc2libGVDaG9pY2VzXCI7XG4gICAgLy8gRFBJX1N0YW5kYXJkQ29ubmVjdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTdGFuZGFyZENvbm5lY3Rpb25zXCJdID0gXCJzdGFuZGFyZENvbm5lY3Rpb25zXCI7XG4gICAgLy8gRFBJX1N0cmluZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTdHJpbmdzXCJdID0gXCJzdHJpbmdzXCI7XG4gICAgLy8gRFBJX1RhYmxlYXVTZXJ2ZXJQcm9qZWN0TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyUHJvamVjdE5hbWVzXCJdID0gXCJ0YWJsZWF1U2VydmVyUHJvamVjdE5hbWVzXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUNhcHRpb25zXCJdID0gXCJ0YWJsZUNhcHRpb25zXCI7XG4gICAgLy8gRFBJX0RhdGFWYWx1ZXMsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhVmFsdWVzXCJdID0gXCJkYXRhVmFsdWVzXCI7XG4gICAgLy8gRFBJX1F1ZXJ5QmFuZEVycm9ycywgaGF2aW5nIHR5cGUgb2JqZWN0W11cbiAgICBQYXJhbWV0ZXJJZFtcIlF1ZXJ5QmFuZEVycm9yc1wiXSA9IFwicXVlcnlCYW5kRXJyb3JzXCI7XG4gICAgLy8gRFBJX1F1ZXJ5QmFuZFBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gICAgUGFyYW1ldGVySWRbXCJRdWVyeUJhbmRQYXJhbWV0ZXJzXCJdID0gXCJxdWVyeUJhbmRQYXJhbWV0ZXJzXCI7XG4gICAgLy8gRFBJX0luaXRpYWxTUUxQYXJhbWV0ZXJzLCBoYXZpbmcgdHlwZSBvYmplY3RbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5pdGlhbFNRTFBhcmFtZXRlcnNcIl0gPSBcImluaXRpYWxTcWxQYXJhbWV0ZXJzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25BdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25BdHRyaWJ1dGVzXCJdID0gXCJjb25uZWN0aW9uQXR0cnNcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblByb3BzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25Qcm9wc1wiXSA9IFwiY29ubmVjdGlvblByb3BzXCI7XG4gICAgLy8gRFBJX0Rpc3BsYXlOYW1lTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3BsYXlOYW1lTWFwXCJdID0gXCJkaXNwbGF5TmFtZU1hcFwiO1xuICAgIC8vIERQSV9Mb29rdXBUYWJsZSwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJMb29rdXBUYWJsZVwiXSA9IFwibG9va3VwVGFibGVcIjtcbiAgICAvLyBEUElfT0F1dGhBdHRycywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJPQXV0aEF0dHJzXCJdID0gXCJvYXV0aEF0dHJzXCI7XG4gICAgLy8gRFBJX1N0cmluZ01hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJTdHJpbmdNYXBcIl0gPSBcInN0cmluZ01hcFwiO1xuICAgIC8vIERQSV9UYWJsZVJhbmtpbmdNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVSYW5raW5nTWFwXCJdID0gXCJ0YWJsZVJhbmtpbmdNYXBcIjtcbiAgICAvLyBEUElfV0RDQXR0cmlidXRlcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJXRENBdHRyaWJ1dGVzXCJdID0gXCJ3ZGNBdHRyc1wiO1xuICAgIC8vIERQSV9Db25uZWN0b3JBdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3RvckF0dHJpYnV0ZXNcIl0gPSBcImNvbm5lY3RvckF0dHJzXCI7XG4gICAgLy8gRFBJX1RhYmxlUmVsZXZhbmNlUGFyYW1zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlUmVsZXZhbmNlUGFyYW1zXCJdID0gXCJ0YWJsZVJlbGV2YW5jZVBhcmFtc1wiO1xuICAgIC8vIERQSV9BY3R1YWxQYXJhbWV0ZXJQYXJhbWV0ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWN0dWFsUGFyYW1ldGVyUGFyYW1ldGVyXCJdID0gXCJhY3R1YWxQYXJhbWV0ZXJQYXJhbWV0ZXJcIjtcbiAgICAvLyBEUElfRGF0YUNvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YUNvbHVtbk5hbWVcIl0gPSBcImRhdGFDb2x1bW5OYW1lXCI7XG4gICAgLy8gRFBJX0xIU0RhdGFDb2x1bW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxIU0RhdGFDb2x1bW5OYW1lXCJdID0gXCJsaHNEYXRhQ29sdW1uTmFtZVwiO1xuICAgIC8vIERQSV9SSFNEYXRhQ29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSSFNEYXRhQ29sdW1uTmFtZVwiXSA9IFwicmhzRGF0YUNvbHVtbk5hbWVcIjtcbiAgICAvLyBEUElfRnVsbEN1YmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZ1bGxDdWJlTmFtZVwiXSA9IFwiZnVsbEN1YmVOYW1lXCI7XG4gICAgLy8gRFBJX0Z1bGxWYXJpYWJsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRnVsbFZhcmlhYmxlTmFtZVwiXSA9IFwiZnVsbFZhcmlhYmxlTmFtZVwiO1xuICAgIC8vIERQSV9TZW1hbnRpY1JvbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2VtYW50aWNSb2xlXCJdID0gXCJzZW1hbnRpY1JvbGVcIjtcbiAgICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yZWRQcm9jZWR1cmVOYW1lXCJdID0gXCJzdG9yZWRQcm9jTmFtZVwiO1xuICAgIC8vIERQSV9UYWJsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVOYW1lXCJdID0gXCJ0YWJsZU5hbWVcIjtcbiAgICAvLyBEUElfQWRkZWRUYWJsZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQWRkZWRUYWJsZU5hbWVzXCJdID0gXCJhZGRlZFRhYmxlTmFtZXNcIjtcbiAgICAvLyBEUElfQ29hbGVzY2VHcm91cEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvYWxlc2NlR3JvdXBGaWVsZHNcIl0gPSBcImNvYWxlc2NlR3JvdXBGaWVsZHNcIjtcbiAgICAvLyBEUElfRmllbGROYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkTmFtZXNcIl0gPSBcImZpZWxkTmFtZXNcIjtcbiAgICAvLyBEUElfSm9pbkZpZWxkQWxpYXNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkpvaW5GaWVsZEFsaWFzZXNcIl0gPSBcImpvaW5GaWVsZF9hbGlhc2VzXCI7XG4gICAgLy8gRFBJX0pvaW5JbmZvRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiSm9pbkluZm9GaWVsZHNcIl0gPSBcImpvaW5JbmZvRmllbGRzXCI7XG4gICAgLy8gRFBJX1Bpdm90R3JvdXBGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJQaXZvdEdyb3VwRmllbGRzXCJdID0gXCJwaXZvdEdyb3VwRmllbGRzXCI7XG4gICAgLy8gRFBJX1JlbW92ZWRUYWJsZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVtb3ZlZFRhYmxlTmFtZXNcIl0gPSBcInJlbW92ZWRUYWJsZU5hbWVzXCI7XG4gICAgLy8gRFBJX1N0b3JlZFByb2NlZHVyZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yZWRQcm9jZWR1cmVzXCJdID0gXCJzdG9yZWRQcm9jZWR1cmVzXCI7XG4gICAgLy8gRFBJX1RhYmxlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZU5hbWVzXCJdID0gXCJ0YWJsZU5hbWVzXCI7XG4gICAgLy8gRFBJX0NvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29sdW1uTmFtZVwiXSA9IFwiY29sdW1uTmFtZVwiO1xuICAgIC8vIERQSV9GaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lXCJdID0gXCJmblwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldFRodW1ibmFpbEltYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2VcIl0gPSBcImdvb2dsZVNoZWV0VGh1bWJuYWlsSW1hZ2VcIjtcbiAgICAvLyBEUElfQXR0ck1EV1Bhc3N3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF0dHJNRFdQYXNzd29yZFwiXSA9IFwid2lkZ2V0QXR0ck1kd1Bhc3N3b3JkXCI7XG4gICAgLy8gRFBJX0F0dHJQYXNzd29yZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyUGFzc3dvcmRcIl0gPSBcIndpZGdldEF0dHJQYXNzd29yZFwiO1xuICAgIC8vIERQSV9EYXRhc291cmNlUGFzc3dvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZVBhc3N3b3JkXCJdID0gXCJkYXRhc291cmNlUGFzc3dvcmRcIjtcbiAgICAvLyBEUElfRmVkZXJhdGVkS2V5Y2hhaW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmVkZXJhdGVkS2V5Y2hhaW5cIl0gPSBcImZlZGVyYXRlZEtleWNoYWluXCI7XG4gICAgLy8gRFBJX0RhdGFQYXJhbWV0ZXJJRCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhUGFyYW1ldGVySURcIl0gPSBcImRhdGFQYXJhbVR5cGVcIjtcbiAgICAvLyBEUElfQ29ubmVjdFNlcnZlcldpZGdldFR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0U2VydmVyV2lkZ2V0VHlwZVwiXSA9IFwiY29ubmVjdFNlcnZlcldpZGdldFR5cGVcIjtcbiAgICAvLyBEUElfQXV0aGVudGljYXRpb25Nb2RlLCBoYXZpbmcgdHlwZSBNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJBdXRoZW50aWNhdGlvbk1vZGVcIl0gPSBcImF1dGhNb2RlXCI7XG4gICAgLy8gRFBJX1JlY29ubmVjdEF1dGhNb2RlLCBoYXZpbmcgdHlwZSBSZWNvbm5lY3RNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJSZWNvbm5lY3RBdXRoTW9kZVwiXSA9IFwicmVjb25uZWN0QXV0aE1vZGVcIjtcbiAgICAvLyBEUElfQ3VycmVudEF1dGhPcHRpb24sIGhhdmluZyB0eXBlIEF1dGhPcHRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIkN1cnJlbnRBdXRoT3B0aW9uXCJdID0gXCJjdXJyQXV0aE9wdGlvblwiO1xuICAgIC8vIERQSV9BdXRoT3B0aW9uTGlzdCwgaGF2aW5nIHR5cGUgQXV0aE9wdGlvbltdXG4gICAgUGFyYW1ldGVySWRbXCJBdXRoT3B0aW9uTGlzdFwiXSA9IFwiYXV0aE9wdGlvbnNcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZVwiXSA9IFwiY29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlXCI7XG4gICAgLy8gRFBJX0RhdGFUeXBlLCBoYXZpbmcgdHlwZSBEYXRhVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVR5cGVcIl0gPSBcImRhdGFUeXBlXCI7XG4gICAgLy8gRFBJX0xIU0RhdGFUeXBlLCBoYXZpbmcgdHlwZSBEYXRhVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiTEhTRGF0YVR5cGVcIl0gPSBcImxoc0RhdGFUeXBlXCI7XG4gICAgLy8gRFBJX1JIU0RhdGFUeXBlLCBoYXZpbmcgdHlwZSBEYXRhVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUkhTRGF0YVR5cGVcIl0gPSBcInJoc0RhdGFUeXBlXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRGaWVsZFJvbGUsIGhhdmluZyB0eXBlIEZpZWxkUm9sZVxuICAgIFBhcmFtZXRlcklkW1wiRGVmYXVsdEZpZWxkUm9sZVwiXSA9IFwiZGVmYXVsdEZpZWxkUm9sZVwiO1xuICAgIC8vIERQSV9GaWVsZFJvbGUsIGhhdmluZyB0eXBlIEZpZWxkUm9sZVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRSb2xlXCJdID0gXCJmaWVsZFJvbGVcIjtcbiAgICAvLyBEUElfRGVmYXVsdEZpZWxkVHlwZSwgaGF2aW5nIHR5cGUgRmllbGRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0RmllbGRUeXBlXCJdID0gXCJkZWZhdWx0RmllbGRUeXBlXCI7XG4gICAgLy8gRFBJX0ZpZWxkVHlwZSwgaGF2aW5nIHR5cGUgRmllbGRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFR5cGVcIl0gPSBcImZpZWxkVHlwZVwiO1xuICAgIC8vIERQSV9GaWVsZFR5cGVMaXN0LCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRUeXBlTGlzdFwiXSA9IFwiZmllbGRUeXBlTGlzdFwiO1xuICAgIC8vIERQSV9GaWVsZFR5cGVMaXN0RGV0YWlsLCBoYXZpbmcgdHlwZSBGaWVsZFR5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRUeXBlTGlzdERldGFpbFwiXSA9IFwiZmllbGRUeXBlTGlzdERldGFpbFwiO1xuICAgIC8vIERQSV9BZ2dUeXBlLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJBZ2dUeXBlXCJdID0gXCJhZ2dyZWdhdGlvblwiO1xuICAgIC8vIERQSV9EZWZhdWx0QWdnVHlwZSwgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGVmYXVsdEFnZ1R5cGVcIl0gPSBcImRlZmF1bHRBZ2dyZWdhdGlvblwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdEFnZywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RBZ2dcIl0gPSBcImZvcmVjYXN0U3VtbWFyaXplVG9cIjtcbiAgICAvLyBEUElfRm9yZWNhc3RBdXRvQWdnLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdEF1dG9BZ2dcIl0gPSBcImZvcmVjYXN0QXV0b1N1bW1hcml6ZVRvXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0QXV0b1JhbmdlVW5pdHMsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0QXV0b1JhbmdlVW5pdHNcIl0gPSBcImZvcmVjYXN0QXV0b1JhbmdlVW5pdHNcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RFbmRPZlJhbmdlVW5pdHMsIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0RW5kT2ZSYW5nZVVuaXRzXCJdID0gXCJmb3JlY2FzdEVuZE9mUmFuZ2VVbml0c1wiO1xuICAgIC8vIERQSV9Gb3JlY2FzdE5leHRSYW5nZVVuaXRzLCBoYXZpbmcgdHlwZSBBZ2dUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdE5leHRSYW5nZVVuaXRzXCJdID0gXCJmb3JlY2FzdE5leHRSYW5nZVVuaXRzXCI7XG4gICAgLy8gRFBJX1NvdXJjZUFnZywgaGF2aW5nIHR5cGUgQWdnVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU291cmNlQWdnXCJdID0gXCJzb3VyY2VBZ2dyZWdhdGlvblwiO1xuICAgIC8vIERQSV9UYXJnZXRBZ2csIGhhdmluZyB0eXBlIEFnZ1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlRhcmdldEFnZ1wiXSA9IFwidGFyZ2V0QWdncmVnYXRpb25cIjtcbiAgICAvLyBEUElfQWdncmVnYXRlQnlBZ2dUeXBlcywgaGF2aW5nIHR5cGUgQWdnVHlwZVtdXG4gICAgUGFyYW1ldGVySWRbXCJBZ2dyZWdhdGVCeUFnZ1R5cGVzXCJdID0gXCJhZ2dyZWdhdGVCeUFnZ1R5cGVzXCI7XG4gICAgLy8gRFBJX0FnZ3JlZ2F0aW9uVmFsdWVzLCBoYXZpbmcgdHlwZSBBZ2dUeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFnZ3JlZ2F0aW9uVmFsdWVzXCJdID0gXCJhZ2dyZWdhdGlvblZhbHVlc1wiO1xuICAgIC8vIERQSV9Tb3J0QWdnVmFsdWVzLCBoYXZpbmcgdHlwZSBBZ2dUeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRBZ2dWYWx1ZXNcIl0gPSBcInNvcnRBZ2dWYWx1ZXNcIjtcbiAgICAvLyBEUElfQ29sdW1uQ2xhc3MsIGhhdmluZyB0eXBlIENvbHVtbkNsYXNzXG4gICAgUGFyYW1ldGVySWRbXCJDb2x1bW5DbGFzc1wiXSA9IFwiY29sdW1uQ2xhc3NcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbldpZGdldFR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25XaWRnZXRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uV2lkZ2V0VHlwZVwiXSA9IFwiY29ubmVjdGlvbldpZGdldFR5cGVcIjtcbiAgICAvLyBEUElfVGFibGVQaWxsSWNvbiwgaGF2aW5nIHR5cGUgVGFibGVQaWxsSWNvblxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVQaWxsSWNvblwiXSA9IFwidGFibGVQaWxsSWNvblR5cGVcIjtcbiAgICAvLyBEUElfRW51bWVyYXRlZEVudGl0eVR5cGUsIGhhdmluZyB0eXBlIEVudGl0eVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkVudW1lcmF0ZWRFbnRpdHlUeXBlXCJdID0gXCJlbnVtZXJhdGVkRW50aXR5VHlwZVwiO1xuICAgIC8vIERQSV9QaWNrRW50aXR5U2VhcmNoVHlwZSwgaGF2aW5nIHR5cGUgUGlja0VudGl0eVNlYXJjaFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlBpY2tFbnRpdHlTZWFyY2hUeXBlXCJdID0gXCJlbnRpdHlTZWFyY2hUeXBlXCI7XG4gICAgLy8gRFBJX0V4cHJlc3Npb25PcCwgaGF2aW5nIHR5cGUgT3BcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25PcFwiXSA9IFwiZXhwcmVzc2lvbk9wXCI7XG4gICAgLy8gRFBJX0V4cHJlc3Npb25PcGVyYXRvckNhcHRpb24sIGhhdmluZyB0eXBlIEV4cHJlc3Npb25PcGVyYXRvckNhcHRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25PcGVyYXRvckNhcHRpb25cIl0gPSBcImV4cHJlc3Npb25PcGVyYXRvckNhcHRpb25cIjtcbiAgICAvLyBEUElfUmVsYXRpb25hbEV4cGVyZXNzaW9uT3BzLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uT3BlcmF0b3JDYXB0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlbGF0aW9uYWxFeHBlcmVzc2lvbk9wc1wiXSA9IFwicmVsYXRpb25hbEV4cHJlc3Npb25PcHNcIjtcbiAgICAvLyBEUElfSGllcmFyY2h5RXhwcmVzc2lvbk9wcywgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbk9wZXJhdG9yQ2FwdGlvblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlFeHByZXNzaW9uT3BzXCJdID0gXCJoaWVyYXJjaHlFeHByZXNzaW9uT3BzXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRTb3J0RGlyZWN0aW9uLCBoYXZpbmcgdHlwZSBTb3J0RGlyZWN0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0U29ydERpcmVjdGlvblwiXSA9IFwiZGVmU29ydE9yZGVyXCI7XG4gICAgLy8gRFBJX1NvcnREaXJlY3Rpb24sIGhhdmluZyB0eXBlIFNvcnREaXJlY3Rpb25cbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnREaXJlY3Rpb25cIl0gPSBcInNvcnRPcmRlclwiO1xuICAgIC8vIERQSV9Tb3J0RGlyZWN0aW9uVmFsdWVzLCBoYXZpbmcgdHlwZSBTb3J0RGlyZWN0aW9uW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnREaXJlY3Rpb25WYWx1ZXNcIl0gPSBcInNvcnREaXJlY3Rpb25WYWx1ZXNcIjtcbiAgICAvLyBEUElfQ3ViZU1ldGFkYXRhQ2F0ZWdvcnksIGhhdmluZyB0eXBlIEN1YmVNZXRhZGF0YUNhdGVnb3J5XG4gICAgUGFyYW1ldGVySWRbXCJDdWJlTWV0YWRhdGFDYXRlZ29yeVwiXSA9IFwiY3ViZU1ldGFkYXRhQ2F0ZWdvcnlcIjtcbiAgICAvLyBEUElfQ3ViZU1ldGFkYXRhQ2F0ZWdvcmllcywgaGF2aW5nIHR5cGUgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnlbXVxuICAgIFBhcmFtZXRlcklkW1wiQ3ViZU1ldGFkYXRhQ2F0ZWdvcmllc1wiXSA9IFwiY3ViZU1ldGFkYXRhQ2F0ZWdvcmllc1wiO1xuICAgIC8vIERQSV9Hb29nbGVCYXNpY0luZm9UeXBlLCBoYXZpbmcgdHlwZSBHb29nbGVCYXNpY0luZm9UeXBlXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVCYXNpY0luZm9UeXBlXCJdID0gXCJnb29nbGVCYXNpY0luZm9UeXBlXCI7XG4gICAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblR5cGUsIGhhdmluZyB0eXBlIERhdGVSYW5nZVxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZVwiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9UYWJsZUNhbGNUeXBlLCBoYXZpbmcgdHlwZSBUYWJsZUNhbGNUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUNhbGNUeXBlXCJdID0gXCJ0YWJsZUNhbGNUeXBlXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVWYWx1ZXMsIGhhdmluZyB0eXBlIFRhYmxlQ2FsY1R5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVDYWxjVHlwZVZhbHVlc1wiXSA9IFwidGFibGVDYWxjVHlwZVZhbHVlc1wiO1xuICAgIC8vIERQSV9SZWxhdGl2ZUFkZHJlc3MsIGhhdmluZyB0eXBlIFJlbGF0aXZlQWRkcmVzc1xuICAgIFBhcmFtZXRlcklkW1wiUmVsYXRpdmVBZGRyZXNzXCJdID0gXCJyZWxhdGl2ZUFkZHJlc3NcIjtcbiAgICAvLyBEUElfUmVsYXRpdmVWYWx1ZXMsIGhhdmluZyB0eXBlIFJlbGF0aXZlQWRkcmVzc1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZWxhdGl2ZVZhbHVlc1wiXSA9IFwicmVsYXRpdmVWYWx1ZXNcIjtcbiAgICAvLyBEUElfT3JkZXJpbmdUeXBlLCBoYXZpbmcgdHlwZSBPcmRlcmluZ1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIk9yZGVyaW5nVHlwZVwiXSA9IFwib3JkZXJpbmdUeXBlXCI7XG4gICAgLy8gRFBJX09yZGVyaW5nVHlwZVZhbHVlcywgaGF2aW5nIHR5cGUgT3JkZXJpbmdUeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIk9yZGVyaW5nVHlwZVZhbHVlc1wiXSA9IFwib3JkZXJpbmdUeXBlVmFsdWVzXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsQmluSXRlbVR5cGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQmluSXRlbVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsQmluSXRlbVR5cGVcIl0gPSBcImNhdGVnb3JpY2FsQmluSXRlbVR5cGVcIjtcbiAgICAvLyBEUElfQXV0aGVudGljYXRpb25JbmZvcywgaGF2aW5nIHR5cGUgQXV0aGVudGljYXRpb25TZXR0aW5nc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQXV0aGVudGljYXRpb25JbmZvc1wiXSA9IFwiYXV0aEluZm9cIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbldpZGdldFBhcmFtcywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblBhcmFtc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbldpZGdldFBhcmFtc1wiXSA9IFwid2lkZ2V0Q29ubmVjdGlvblBhcmFtc1wiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uU2V0dGluZ3MsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TZXR0aW5nc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblNldHRpbmdzXCJdID0gXCJjb25uZWN0aW9uU2V0dGluZ3NcIjtcbiAgICAvLyBEUElfUmVjb25uZWN0QXV0aGVudGljYXRpb25TZXR0aW5ncywgaGF2aW5nIHR5cGUgQXV0aGVudGljYXRpb25TZXR0aW5nc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVjb25uZWN0QXV0aGVudGljYXRpb25TZXR0aW5nc1wiXSA9IFwicmVjb25uZWN0QXV0aFNldHRpbmdzXCI7XG4gICAgLy8gRFBJX0N1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvbiwgaGF2aW5nIHR5cGUgQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25PcHRpb25cIl0gPSBcImN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvbk9wdGlvblwiO1xuICAgIC8vIERQSV9DdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25PcHRpb25zLCBoYXZpbmcgdHlwZSBDdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25PcHRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uc1wiXSA9IFwiY3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uT3B0aW9uc1wiO1xuICAgIC8vIERQSV9DdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIEN1YmVDb25uZWN0aW9uU3BlY2lmaWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ3ViZUNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uXCJdID0gXCJjdWJlQ29ubmVjdGlvblNwZWNpZmljYXRpb25cIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblNldHRpbmdzT3B0aW9uLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uU2V0dGluZ3NPcHRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25TZXR0aW5nc09wdGlvblwiXSA9IFwiY29ubmVjdGlvblNldHRpbmdzT3B0aW9uXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25TZXR0aW5nc09wdGlvbnMsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25TZXR0aW5nc09wdGlvblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uU2V0dGluZ3NPcHRpb25zXCJdID0gXCJjb25uZWN0aW9uU2V0dGluZ3NPcHRpb25zXCI7XG4gICAgLy8gRFBJX1N0cmluZ0NvbGxhdGlvbiwgaGF2aW5nIHR5cGUgU3RyaW5nQ29sbGF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdHJpbmdDb2xsYXRpb25cIl0gPSBcInN0cmluZ0NvbGxhdGlvblwiO1xuICAgIC8vIERQSV9EYXRhYmFzZUVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBEYXRhYmFzZUVudW1lcmF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhYmFzZUVudW1lcmF0aW9uXCJdID0gXCJkYXRhYmFzZUVudW1lcmF0aW9uXCI7XG4gICAgLy8gRFBJX1NjaGVtYUVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBTY2hlbWFFbnVtZXJhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hRW51bWVyYXRpb25cIl0gPSBcInNjaGVtYUVudW1lcmF0aW9uXCI7XG4gICAgLy8gRFBJX1N0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBTdGFuZGFyZENvbm5lY3Rpb25FbnVtZXJhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3RhbmRhcmRDb25uZWN0aW9uRW51bWVyYXRpb25cIl0gPSBcInN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uXCI7XG4gICAgLy8gRFBJX1N0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBTdG9yZWRQcm9jZWR1cmVFbnVtZXJhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3RvcmVkUHJvY2VkdXJlRW51bWVyYXRpb25cIl0gPSBcInN0b3JlZFByb2NlZHVyZUVudW1lcmF0aW9uXCI7XG4gICAgLy8gRFBJX1RhYmxlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFRhYmxlRW51bWVyYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlRW51bWVyYXRpb25cIl0gPSBcInRhYmxlRW51bWVyYXRpb25cIjtcbiAgICAvLyBEUElfV2FyZWhvdXNlRW51bWVyYXRpb24sIGhhdmluZyB0eXBlIFdhcmVob3VzZUVudW1lcmF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJXYXJlaG91c2VFbnVtZXJhdGlvblwiXSA9IFwid2FyZWhvdXNlRW51bWVyYXRpb25cIjtcbiAgICAvLyBEUElfU2xvd01ldGFkYXRhU2NoZW1hTGlzdCwgaGF2aW5nIHR5cGUgU2xvd01ldGFkYXRhU2NoZW1hTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2xvd01ldGFkYXRhU2NoZW1hTGlzdFwiXSA9IFwic2xvd01ldGFkYXRhU2NoZW1hTGlzdFwiO1xuICAgIC8vIERQSV9TbG93TWV0YWRhdGFUYWJsZUxpc3QsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVRhYmxlTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2xvd01ldGFkYXRhVGFibGVMaXN0XCJdID0gXCJzbG93TWV0YWRhdGFUYWJsZUxpc3RcIjtcbiAgICAvLyBEUElfQ3ViZUNhdGFsb2csIGhhdmluZyB0eXBlIEN1YmVDYXRhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlQ2F0YWxvZ1wiXSA9IFwiY3ViZUNhdGFsb2dcIjtcbiAgICAvLyBEUElfQ3ViZUNhdGFsb2dzLCBoYXZpbmcgdHlwZSBDdWJlQ2F0YWxvZ1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlQ2F0YWxvZ3NcIl0gPSBcImN1YmVDYXRhbG9nc1wiO1xuICAgIC8vIERQSV9DdWJlQ2F0YWxvZ0VudW1lcmF0aW9uLCBoYXZpbmcgdHlwZSBDdWJlQ2F0YWxvZ0VudW1lcmF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlQ2F0YWxvZ0VudW1lcmF0aW9uXCJdID0gXCJjdWJlQ2F0YWxvZ0VudW1lcmF0aW9uXCI7XG4gICAgLy8gRFBJX0N1YmUsIGhhdmluZyB0eXBlIEN1YmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkN1YmVcIl0gPSBcImN1YmVcIjtcbiAgICAvLyBEUElfQ3ViZXMsIGhhdmluZyB0eXBlIEN1YmVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ3ViZXNcIl0gPSBcImN1YmVzXCI7XG4gICAgLy8gRFBJX0N1YmVFbnVtZXJhdGlvbiwgaGF2aW5nIHR5cGUgQ3ViZUVudW1lcmF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdWJlRW51bWVyYXRpb25cIl0gPSBcImN1YmVFbnVtZXJhdGlvblwiO1xuICAgIC8vIERQSV9Hb29nbGVBbmFseXRpY3NCYXNpY0l0ZW0sIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtXCJdID0gXCJnb29nbGVBbmFseXRpY3NCYXNpY0l0ZW1cIjtcbiAgICAvLyBEUElfR0FNZWFzdXJlU2V0cywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkdBTWVhc3VyZVNldHNcIl0gPSBcImdhTWVhc3VyZVNldHNcIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzVmlld3MsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NWaWV3c1wiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzVmlld3NcIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUHJvcGVydGllcywgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzQmFzaWNJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZUFuYWx5dGljc1Byb3BlcnRpZXNcIl0gPSBcImdvb2dsZUFuYWx5dGljc1Byb3BlcnRpZXNcIjtcbiAgICAvLyBEUElfR29vZ2xlQmFzaWNJbmZvSXRlbXMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0Jhc2ljSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVCYXNpY0luZm9JdGVtc1wiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzQWNjb3VudHNcIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW0sIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbVwiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzQ29tcGxleEl0ZW1cIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzUG9zc2libGVEaW1lbnNpb25zLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NQb3NzaWJsZURpbWVuc2lvbnNcIl0gPSBcImdvb2dsZUFuYWx5dGljc1Bvc3NpYmxlRGltZW5zaW9uc1wiO1xuICAgIC8vIERQSV9Hb29nbGVBbmFseXRpY3NQb3NzaWJsZU1lYXN1cmVzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NQb3NzaWJsZU1lYXN1cmVzXCJdID0gXCJnb29nbGVBbmFseXRpY3NQb3NzaWJsZU1lYXN1cmVzXCI7XG4gICAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1Bvc3NpYmxlU2VnbWVudHMsIGhhdmluZyB0eXBlIEdvb2dsZUFuYWx5dGljc0NvbXBsZXhJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZUFuYWx5dGljc1Bvc3NpYmxlU2VnbWVudHNcIl0gPSBcImdvb2dsZUFuYWx5dGljc1Bvc3NpYmxlU2VnbWVudHNcIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzU2VsZWN0ZWREaW1lbnNpb25zLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NTZWxlY3RlZERpbWVuc2lvbnNcIl0gPSBcImdvb2dsZUFuYWx5dGljc1NlbGVjdGVkRGltZW5zaW9uc1wiO1xuICAgIC8vIERQSV9Hb29nbGVBbmFseXRpY3NTZWxlY3RlZE1lYXN1cmVzLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NDb21wbGV4SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NTZWxlY3RlZE1lYXN1cmVzXCJdID0gXCJnb29nbGVBbmFseXRpY3NTZWxlY3RlZE1lYXN1cmVzXCI7XG4gICAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvbiwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VPcHRpb25cIl0gPSBcImdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZU9wdGlvblwiO1xuICAgIC8vIERQSV9Hb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VPcHRpb25zLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VPcHRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uc1wiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlT3B0aW9uc1wiO1xuICAgIC8vIERQSV9Hb29nbGVBbmFseXRpY3NFbmREYXRlLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHb29nbGVBbmFseXRpY3NFbmREYXRlXCJdID0gXCJnb29nbGVBbmFseXRpY3NFbmREYXRlXCI7XG4gICAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1N0YXJ0RGF0ZSwgaGF2aW5nIHR5cGUgR29vZ2xlQW5hbHl0aWNzRGF0ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlQW5hbHl0aWNzU3RhcnREYXRlXCJdID0gXCJnb29nbGVBbmFseXRpY3NTdGFydERhdGVcIjtcbiAgICAvLyBEUElfR29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NEYXRlUmFuZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZVwiXSA9IFwiZ29vZ2xlQW5hbHl0aWNzRGF0ZVJhbmdlXCI7XG4gICAgLy8gRFBJX0dvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NRdWVyeVBhcnRpdGlvbmluZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlQW5hbHl0aWNzUXVlcnlQYXJ0aXRpb25pbmdcIl0gPSBcImdvb2dsZUFuYWx5dGljc1F1ZXJ5UGFydGl0aW9uaW5nXCI7XG4gICAgLy8gRFBJX0dBQ29ubmVjdGlvbkRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBHb29nbGVBbmFseXRpY3NDb25uZWN0aW9uRGVzY3JpcHRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkdBQ29ubmVjdGlvbkRlc2NyaXB0aW9uXCJdID0gXCJnYUNvbm5lY3Rpb25EZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldEl0ZW0sIGhhdmluZyB0eXBlIEdvb2dsZVNoZWV0SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRJdGVtXCJdID0gXCJnb29nbGVTaGVldEl0ZW1cIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRJdGVtcywgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkdvb2dsZVNoZWV0SXRlbXNcIl0gPSBcImdvb2dsZVNoZWV0SXRlbXNcIjtcbiAgICAvLyBEUElfR29vZ2xlU2hlZXRzTGlzdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgR29vZ2xlU2hlZXRzTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRzTGlzdFByZXNNb2RlbFwiXSA9IFwiZ29vZ2xlU2hlZXRzTGlzdFwiO1xuICAgIC8vIERQSV9Hb29nbGVTaGVldFBhbmVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEdvb2dsZVNoZWV0UGFuZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29vZ2xlU2hlZXRQYW5lUHJlc01vZGVsXCJdID0gXCJnb29nbGVTaGVldFBhbmVcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgVGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvblwiXSA9IFwidGFibGVhdVNlcnZlckNvbm5lY3Rpb25EZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9Jbml0aWFsU1FMUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBJbml0aWFsU1FMUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJJbml0aWFsU1FMUHJlc01vZGVsXCJdID0gXCJpbml0aWFsU3FsUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1F1ZXJ5QmFuZGluZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUXVlcnlCYW5kaW5nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJRdWVyeUJhbmRpbmdQcmVzTW9kZWxcIl0gPSBcInF1ZXJ5QmFuZGluZ1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9TbG93TWV0YWRhdGEsIGhhdmluZyB0eXBlIFNsb3dNZXRhZGF0YVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2xvd01ldGFkYXRhXCJdID0gXCJzbG93TWV0YWRhdGFcIjtcbiAgICAvLyBEUElfU2xvd01ldGFkYXRhU2NoZW1hU2VhcmNoUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTbG93TWV0YWRhdGFTZWFyY2hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNsb3dNZXRhZGF0YVNjaGVtYVNlYXJjaFByZXNNb2RlbFwiXSA9IFwic2xvd01ldGFkYXRhU2NoZW1hU2VhcmNoXCI7XG4gICAgLy8gRFBJX1Nsb3dNZXRhZGF0YVRhYmxlU2VhcmNoUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTbG93TWV0YWRhdGFTZWFyY2hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNsb3dNZXRhZGF0YVRhYmxlU2VhcmNoUHJlc01vZGVsXCJdID0gXCJzbG93TWV0YWRhdGFUYWJsZVNlYXJjaFwiO1xuICAgIC8vIERQSV9UYWJsZWF1U2VydmVyUHJvamVjdHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJQcm9qZWN0c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlclByb2plY3RzUHJlc01vZGVsXCJdID0gXCJ0YWJsZWF1U2VydmVyUHJvamVjdHNQcmVzbW9kZWxcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbFwiXSA9IFwidGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzbW9kZWxcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFTb3VyY2VQcmVzTW9kZWxzLCBoYXZpbmcgdHlwZSBUYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YVNvdXJjZVByZXNNb2RlbHNcIl0gPSBcInRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlUHJlc21vZGVsc1wiO1xuICAgIC8vIERQSV9UYWJsZWF1U2VydmVyRGF0YVNvdXJjZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJEYXRhU291cmNlc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVNlcnZlckRhdGFTb3VyY2VzUHJlc01vZGVsXCJdID0gXCJ0YWJsZWF1U2VydmVyRGF0YVNvdXJjZXNQcmVzbW9kZWxcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlckRhdGFQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlYXVTZXJ2ZXJEYXRhUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZWF1U2VydmVyRGF0YVByZXNNb2RlbFwiXSA9IFwidGFibGVhdVNlcnZlckRhdGFQcmVzbW9kZWxcIjtcbiAgICAvLyBEUElfU3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3JlZFByb2NlZHVyZVBhcmFtZXRlclByZXNNb2RlbFwiXSA9IFwic3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyXCI7XG4gICAgLy8gRFBJX1N0b3JlZFByb2NlZHVyZVBhcmFtZXRlcnNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFN0b3JlZFByb2NlZHVyZVBhcmFtZXRlclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzUHJlc01vZGVsXCJdID0gXCJzdG9yZWRQcm9jZWR1cmVQYXJhbWV0ZXJzXCI7XG4gICAgLy8gRFBJX0N1c3RvbVNRTEluZm8sIGhhdmluZyB0eXBlIEN1c3RvbVNRTEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbVNRTEluZm9cIl0gPSBcImN1c3RvbVNxbEluZm9cIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblRhYmxlSW5mbywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblRhYmxlSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblRhYmxlSW5mb1wiXSA9IFwiY29ubmVjdGlvblRhYmxlSW5mb1wiO1xuICAgIC8vIERQSV9UYWJsZUluZm9zLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVGFibGVJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlSW5mb3NcIl0gPSBcInRhYmxlSW5mb3NcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbkRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uRGVzY3JpcHRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25EZXNjcmlwdGlvblwiXSA9IFwiY29ubmVjdGlvbkRlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZSwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGVcIl0gPSBcImRhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZVwiO1xuICAgIC8vIERQSV9PQXV0aENyZWRlbnRpYWxUeXBlSW5mbywgaGF2aW5nIHR5cGUgT0F1dGhDcmVkZW50aWFsVHlwZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk9BdXRoQ3JlZGVudGlhbFR5cGVJbmZvXCJdID0gXCJvYXV0aENyZWRlbnRpYWxUeXBlSW5mb1wiO1xuICAgIC8vIERQSV9PQXV0aENyZWRlbnRpYWxUeXBlSW5mb3MsIGhhdmluZyB0eXBlIE9BdXRoQ3JlZGVudGlhbFR5cGVJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIk9BdXRoQ3JlZGVudGlhbFR5cGVJbmZvc1wiXSA9IFwib2F1dGhDcmVkZW50aWFsVHlwZUluZm9zXCI7XG4gICAgLy8gRFBJX09BdXRoU2V0dGluZ3MsIGhhdmluZyB0eXBlIE9BdXRoU2V0dGluZ3NQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk9BdXRoU2V0dGluZ3NcIl0gPSBcIm9hdXRoU2V0dGluZ3NcIjtcbiAgICAvLyBEUElfQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZywgaGF2aW5nIHR5cGUgQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ1xuICAgIFBhcmFtZXRlcklkW1wiQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ1wiXSA9IFwiY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ1wiO1xuICAgIC8vIERQSV9DcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFncywgaGF2aW5nIHR5cGUgQ3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnc1wiXSA9IFwiY3JlZGVudGlhbFR5cGVQcm9wZXJ0aWVzRmxhZ3NcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblR5cGVFbnVtLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZUVudW1cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25UeXBlRW51bVwiXSA9IFwiY29ubmVjdGlvblR5cGVFbnVtXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3RvclR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3RvclR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3RvclR5cGVcIl0gPSBcImNvbm5lY3RvclR5cGVcIjtcbiAgICAvLyBEUElfUGRmUGFnZVBpY2tlciwgaGF2aW5nIHR5cGUgUGRmUGFnZVBpY2tlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGRmUGFnZVBpY2tlclwiXSA9IFwicGRmUGFnZVBpY2tlclwiO1xuICAgIC8vIERQSV9BY3RpdmF0ZU5ldywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWN0aXZhdGVOZXdcIl0gPSBcImFjdGl2YXRlTmV3XCI7XG4gICAgLy8gRFBJX0FkZEFjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEFjdGlvbnNcIl0gPSBcImFkZEFjdGlvbnNcIjtcbiAgICAvLyBEUElfQWRkQXNGbG9hdGluZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkQXNGbG9hdGluZ1wiXSA9IFwiYWRkQXNGbG9hdGluZ1wiO1xuICAgIC8vIERQSV9BZGRDb2xvckRpY3Rpb25hcnksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZENvbG9yRGljdGlvbmFyeVwiXSA9IFwiYWRkQ29sb3JEaWN0aW9uYXJ5XCI7XG4gICAgLy8gRFBJX0FkZERyb3BsaW5lcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkRHJvcGxpbmVzXCJdID0gXCJhZGREcm9wbGluZXNcIjtcbiAgICAvLyBEUElfQWRkSGVhZGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkSGVhZGVyc1wiXSA9IFwiYWRkSGVhZGVyc1wiO1xuICAgIC8vIERQSV9BZGRIaWdobGlnaHRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEhpZ2hsaWdodGluZ1wiXSA9IFwiYWRkSGlnaGxpZ2h0aW5nXCI7XG4gICAgLy8gRFBJX0FkZEltYWdlRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkSW1hZ2VEaWN0aW9uYXJ5XCJdID0gXCJhZGRJbWFnZURpY3Rpb25hcnlcIjtcbiAgICAvLyBEUElfQWRkTWFya0xhYmVscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkTWFya0xhYmVsc1wiXSA9IFwiYWRkTWFya0xhYmVsc1wiO1xuICAgIC8vIERQSV9BZGRQYWdlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkUGFnZXNcIl0gPSBcImFkZFBhZ2VzXCI7XG4gICAgLy8gRFBJX0FkZFNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkU2VsZWN0aW9uXCJdID0gXCJhZGRTZWxlY3Rpb25cIjtcbiAgICAvLyBEUElfQWRkVG9Gb2xkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZFRvRm9sZGVyXCJdID0gXCJhZGRUb0ZvbGRlclwiO1xuICAgIC8vIERQSV9BZGRWaXpEYXRhLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBZGRWaXpEYXRhXCJdID0gXCJhZGRWaXpEYXRhXCI7XG4gICAgLy8gRFBJX0FsZXJ0Q29uZGl0aW9uTWV0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGVydENvbmRpdGlvbk1ldFwiXSA9IFwiYWxlcnRDb25kaXRpb25NZXRcIjtcbiAgICAvLyBEUElfQWxsRmllbGRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxGaWVsZHNcIl0gPSBcImFsbEZpZWxkc1wiO1xuICAgIC8vIERQSV9BbGxPbkVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxPbkVtcHR5XCJdID0gXCJhbGxPbkVtcHR5XCI7XG4gICAgLy8gRFBJX0FsbFBhZ2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxQYWdlc1wiXSA9IFwiaW5jbHVkZUFsbFBhZ2VzXCI7XG4gICAgLy8gRFBJX0FsbG93UHJldmlld1NpemVDaGFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93UHJldmlld1NpemVDaGFuZ2VcIl0gPSBcImFsbG93UHJldmlld1NpemVDaGFuZ2VcIjtcbiAgICAvLyBEUElfQWxsU2VsZWN0ZWRJc0VmZmVjdGl2ZWx5UmFuZ2VUeXBlQWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxTZWxlY3RlZElzRWZmZWN0aXZlbHlSYW5nZVR5cGVBbGxcIl0gPSBcImFsbFNlbGVjdGVkSXNFZmZlY3RpdmVseVJhbmdlVHlwZUFsbFwiO1xuICAgIC8vIERQSV9BbGxTdG9yeVBvaW50cywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWxsU3RvcnlQb2ludHNcIl0gPSBcImFsbFN0b3J5cG9pbnRzXCI7XG4gICAgLy8gRFBJX0FsbG93QWxsUmFuZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93QWxsUmFuZ2VcIl0gPSBcImFsbG93QWxsUmFuZ2VcIjtcbiAgICAvLyBEUElfQWxsb3dDcmVhdGluZ05ld1BhcmFtZXRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93Q3JlYXRpbmdOZXdQYXJhbWV0ZXJzXCJdID0gXCJhbGxvd0NyZWF0aW5nTmV3UGFyYW1ldGVyc1wiO1xuICAgIC8vIERQSV9BbGxvd0R1cGxpY2F0ZUZpZWxkRHJvcE9uRmlsdGVyU2hlbGYsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93RHVwbGljYXRlRmllbGREcm9wT25GaWx0ZXJTaGVsZlwiXSA9IFwiYWxsb3dEdXBsaWNhdGVGaWVsZERyb3BPbkZpbHRlclNoZWxmXCI7XG4gICAgLy8gRFBJX0FsbG93RmlsdGVyUHJlc2V0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd0ZpbHRlclByZXNldFwiXSA9IFwiYWxsb3dGaWx0ZXJQcmVzZXRcIjtcbiAgICAvLyBEUElfQWxsb3dIb3ZlckFjdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93SG92ZXJBY3Rpb25zXCJdID0gXCJhbGxvd0hvdmVyQWN0aW9uc1wiO1xuICAgIC8vIERQSV9BbGxvd0h5cGhlbmF0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd0h5cGhlbmF0aW9uXCJdID0gXCJhbGxvd0h5cGhlbmF0aW9uXCI7XG4gICAgLy8gRFBJX0FsbG93Sm9pbk9uQ2FsYywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWxsb3dKb2luT25DYWxjXCJdID0gXCJhbGxvd0pvaW5PbkNhbGNcIjtcbiAgICAvLyBEUElfQWxsb3dNYW51YWxSYW5nZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWxsb3dNYW51YWxSYW5nZVwiXSA9IFwiYWxsb3dNYW51YWxSYW5nZVwiO1xuICAgIC8vIERQSV9BbGxvd01hcHBpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93TWFwcGluZ1wiXSA9IFwiYWxsb3dNYXBwaW5nXCI7XG4gICAgLy8gRFBJX0FsbG93TXVsdGlTZWxlY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93TXVsdGlTZWxlY3RcIl0gPSBcImFsbG93TXVsdGlTZWxlY3RcIjtcbiAgICAvLyBEUElfQWxsb3dOdWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd051bGxcIl0gPSBcImFsbG93TnVsbFwiO1xuICAgIC8vIERQSV9BbGxvd1Bhblpvb20sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93UGFuWm9vbVwiXSA9IFwiYWxsb3dQYW5ab29tXCI7XG4gICAgLy8gRFBJX0FsbG93UGF0dGVybkJhc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBbGxvd1BhdHRlcm5CYXNlZFwiXSA9IFwiYWxsb3dQYXR0ZXJuQmFzZWRVbmlvblwiO1xuICAgIC8vIERQSV9BbGxvd1Byb21wdFRleHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93UHJvbXB0VGV4dFwiXSA9IFwiYWxsb3dQcm9tcHRUZXh0XCI7XG4gICAgLy8gRFBJX0FsbG93U2F2ZURhdGFTb3VyY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93U2F2ZURhdGFTb3VyY2VcIl0gPSBcImFsbG93U2F2ZURhdGFTb3VyY2VcIjtcbiAgICAvLyBEUElfQWxsb3dXaG9sZURhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93V2hvbGVEYXRlXCJdID0gXCJhbGxvd1dob2xlRGF0ZVwiO1xuICAgIC8vIERQSV9BbGxvd1dvcmssIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93V29ya1wiXSA9IFwiYWxsb3dXb3JrXCI7XG4gICAgLy8gRFBJX0FsbG93V3JhcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWxsb3dXcmFwXCJdID0gXCJhbGxvd1dyYXBcIjtcbiAgICAvLyBEUElfQXBwSXMzMkJpdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXBwSXMzMkJpdFwiXSA9IFwiYXBwSXMzMkJpdFwiO1xuICAgIC8vIERQSV9BcHBJczY0Qml0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBcHBJczY0Qml0XCJdID0gXCJhcHBJczY0Qml0XCI7XG4gICAgLy8gRFBJX0FwcElzQmV0YSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXBwSXNCZXRhXCJdID0gXCJhcHBJc0JldGFcIjtcbiAgICAvLyBEUElfQXBwSXNPRU0sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcElzT0VNXCJdID0gXCJhcHBJc09lbVwiO1xuICAgIC8vIERQSV9BcHBlbmRUZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcGVuZFRkZVwiXSA9IFwiYXBwZW5kVGRlXCI7XG4gICAgLy8gRFBJX0FwcGx5Q29sb3JzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBcHBseUNvbG9yc1wiXSA9IFwiYXBwbHlDb2xvcnNcIjtcbiAgICAvLyBEUElfQXBwbHlOZXdTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcGx5TmV3U2VsZWN0aW9uXCJdID0gXCJhcHBseU5ld1NlbGVjdGlvblwiO1xuICAgIC8vIERQSV9BcmVDb25maWRlbmNlQmFuZHNWYWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXJlQ29uZmlkZW5jZUJhbmRzVmFsaWRcIl0gPSBcImFyZUNvbmZpZGVuY2VCYW5kc1ZhbGlkXCI7XG4gICAgLy8gRFBJX0FyZURhdGFTb3VyY2VGaWx0ZXJzVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXJlRGF0YVNvdXJjZUZpbHRlcnNWaXNpYmxlXCJdID0gXCJhcmVEYXRhU291cmNlRmlsdGVyc1Zpc2libGVcIjtcbiAgICAvLyBEUElfQXJlRXh0cmFjdEZpbHRlcnNFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBcmVFeHRyYWN0RmlsdGVyc0VuYWJsZWRcIl0gPSBcImFyZUV4dHJhY3RGaWx0ZXJzRW5hYmxlZFwiO1xuICAgIC8vIERQSV9BcmVUb3RhbHNVc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBcmVUb3RhbHNVc2VkXCJdID0gXCJhcmVUb3RhbHNVc2VkXCI7XG4gICAgLy8gRFBJX0F0VGhlTGV2ZWxGaWVsZElzSW52YWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXRUaGVMZXZlbEZpZWxkSXNJbnZhbGlkXCJdID0gXCJhdFRoZUxldmVsRmllbGRJc0ludmFsaWRcIjtcbiAgICAvLyBEUElfQXV0b1VSTCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXV0b1VSTFwiXSA9IFwiYXV0b1VybFwiO1xuICAgIC8vIERQSV9BdXRvVXBkYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvVXBkYXRlXCJdID0gXCJhdXRvVXBkYXRlXCI7XG4gICAgLy8gRFBJX0JhY2tpbmdTaGVldElzRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJCYWNraW5nU2hlZXRJc0Rhc2hib2FyZFwiXSA9IFwiaXNCYWNraW5nU2hlZXREYXNoYm9hcmRcIjtcbiAgICAvLyBEUElfQmVnaW5EYXRhU291cmNlUHJlc01vZGVsVXBkYXRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJCZWdpbkRhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGVcIl0gPSBcImJlZ2luRGF0YVNvdXJjZVByZXNNb2RlbFVwZGF0ZVwiO1xuICAgIC8vIERQSV9BZ2dyZWdhdGVEcmlsbFVwLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBZ2dyZWdhdGVEcmlsbFVwXCJdID0gXCJib29sQWdncmVnYXRlRHJpbGxVcFwiO1xuICAgIC8vIERQSV9Cb3hwbG90TWFya0V4Y2x1c2lvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQm94cGxvdE1hcmtFeGNsdXNpb25cIl0gPSBcImJveHBsb3RNYXJrRXhjbHVzaW9uXCI7XG4gICAgLy8gRFBJX0JyZWFrUGFnZU9uUGFuZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQnJlYWtQYWdlT25QYW5lXCJdID0gXCJicmVha1BhZ2VPblBhbmVcIjtcbiAgICAvLyBEUElfQnJ1c2hMZWdlbmRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJCcnVzaExlZ2VuZHNcIl0gPSBcImJydXNoTGVnZW5kc1wiO1xuICAgIC8vIERQSV9DYWNoZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhY2hlUHJlc01vZGVsc1wiXSA9IFwiY2FjaGVQcmVzTW9kZWxzXCI7XG4gICAgLy8gRFBJX0NhbkFkZENvbm5lY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5BZGRDb25uZWN0aW9uc1wiXSA9IFwiY2FuQWRkQ29ubmVjdGlvbnNcIjtcbiAgICAvLyBEUElfU29ydFBpbGxDYW5CZURyYWdnZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRQaWxsQ2FuQmVEcmFnZ2VkXCJdID0gXCJzb3J0UGlsbENhbkJlRHJhZ2dlZFwiO1xuICAgIC8vIERQSV9DYW5BZGRUYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuQWRkVGFibGVcIl0gPSBcImNhbkFkZFRhYmxlXCI7XG4gICAgLy8gRFBJX0NhbkFuYWx5emVEYXRhLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5BbmFseXplRGF0YVwiXSA9IFwiY2FuQW5hbHl6ZURhdGFcIjtcbiAgICAvLyBEUElfQ2FuQ2hhbmdlRGF0YVR5cGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkNoYW5nZURhdGFUeXBlXCJdID0gXCJjYW5DaGFuZ2VEYXRhVHlwZVwiO1xuICAgIC8vIERQSV9DYW5DaGFuZ2VTZW1hbnRpY1JvbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkNoYW5nZVNlbWFudGljUm9sZVwiXSA9IFwiY2FuQ2hhbmdlU2VtYW50aWNSb2xlXCI7XG4gICAgLy8gRFBJX0NhbkRlcml2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuRGVyaXZlXCJdID0gXCJjYW5EZXJpdmVcIjtcbiAgICAvLyBEUElfQ2FuRHJvcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuRHJvcFwiXSA9IFwiY2FuRHJvcFwiO1xuICAgIC8vIERQSV9DYW5FZGl0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5FZGl0XCJdID0gXCJjYW5FZGl0XCI7XG4gICAgLy8gRFBJX0NhbkVkaXRMZWdlbmRDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuRWRpdExlZ2VuZENvbG9yXCJdID0gXCJjYW5FZGl0TGVnZW5kQ29sb3JcIjtcbiAgICAvLyBEUElfQ2FuRW5hYmxlQ2VudGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5FbmFibGVDZW50ZXJcIl0gPSBcImNhbkVuYWJsZUNlbnRlclwiO1xuICAgIC8vIERQSV9DYW5TaG93QWR2YW5jZWRTZXR0aW5ncywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuU2hvd0FkdmFuY2VkU2V0dGluZ3NcIl0gPSBcImNhblNob3dBZHZhbmNlZFNldHRpbmdzXCI7XG4gICAgLy8gRFBJX0NhbkVuYWJsZUZpbHRlclN0YXRlQnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5FbmFibGVGaWx0ZXJTdGF0ZUJ1dHRvblwiXSA9IFwiY2FuRW5hYmxlRmlsdGVyU3RhdGVCdXR0b25cIjtcbiAgICAvLyBEUElfQ2FuRmxvYXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkZsb2F0XCJdID0gXCJjYW5GbG9hdFwiO1xuICAgIC8vIERQSV9DYW5IYXZlVGl0bGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkhhdmVUaXRsZVwiXSA9IFwiY2FuSGF2ZVRpdGxlXCI7XG4gICAgLy8gRFBJX0Nhbklnbm9yZVVwZGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuSWdub3JlVXBkYXRlXCJdID0gXCJjYW5JZ25vcmVVcGRhdGVcIjtcbiAgICAvLyBEUElfQ2FuTmF2aWdhdGVCYWNrLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5OYXZpZ2F0ZUJhY2tcIl0gPSBcImNhbk5hdmlnYXRlQmFja1wiO1xuICAgIC8vIERQSV9DYW5OYXZpZ2F0ZUZvcndhcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbk5hdmlnYXRlRm9yd2FyZFwiXSA9IFwiY2FuTmF2aWdhdGVGb3J3YXJkXCI7XG4gICAgLy8gRFBJX0NhblNjcm9sbFgsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNjcm9sbFhcIl0gPSBcImNhblNjcm9sbFhcIjtcbiAgICAvLyBEUElfQ2FuU2Nyb2xsWSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuU2Nyb2xsWVwiXSA9IFwiY2FuU2Nyb2xsWVwiO1xuICAgIC8vIERQSV9DYW5TZXREb21haW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNldERvbWFpblwiXSA9IFwiY2FuU2V0RG9tYWluXCI7XG4gICAgLy8gRFBJX0NhblNldE1hcFVuaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNldE1hcFVuaXRcIl0gPSBcImNhblNldE1hcFVuaXRcIjtcbiAgICAvLyBEUElfQ2FuU2hvd0FwcGx5QnV0dG9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5TaG93QXBwbHlCdXR0b25cIl0gPSBcImNhblNob3dBcHBseUJ1dHRvblwiO1xuICAgIC8vIERQSV9DYW5TaG93RmlsdGVyU3RhdGVCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNob3dGaWx0ZXJTdGF0ZUJ1dHRvblwiXSA9IFwiY2FuU2hvd0ZpbHRlclN0YXRlQnV0dG9uXCI7XG4gICAgLy8gRFBJX0NhblNob3dNb3JlRmV3ZXJCdXR0b24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNob3dNb3JlRmV3ZXJCdXR0b25cIl0gPSBcImNhblNob3dNb3JlRmV3ZXJCdXR0b25cIjtcbiAgICAvLyBEUElfQ2FuU2hvd1N5bmNDbGllbnRPcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5TaG93U3luY0NsaWVudE9wdGlvbnNcIl0gPSBcImNhblNob3dTeW5jQ2xpZW50T3B0aW9uc1wiO1xuICAgIC8vIERQSV9DYW5Tb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5Tb3J0XCJdID0gXCJjYW5Tb3J0XCI7XG4gICAgLy8gRFBJX0NhblNvcnRPcmRpbmFsbHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhblNvcnRPcmRpbmFsbHlcIl0gPSBcImNhblNvcnRPcmRpbmFsXCI7XG4gICAgLy8gRFBJX0NhblRvZ2dsZUF1dG9tYXRpY0RyaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5Ub2dnbGVBdXRvbWF0aWNEcmlsbFwiXSA9IFwiY2FuVG9nZ2xlQXV0b21hdGljRHJpbGxcIjtcbiAgICAvLyBEUElfQ2FuVG9nZ2xlR2VvZ3JhcGhpY1NlYXJjaCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuVG9nZ2xlR2VvZ3JhcGhpY1NlYXJjaFwiXSA9IFwiY2FuVG9nZ2xlR2VvZ3JhcGhpY1NlYXJjaFwiO1xuICAgIC8vIERQSV9DYW5Ub2dnbGVNYXBTY2FsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuVG9nZ2xlTWFwU2NhbGVcIl0gPSBcImNhblRvZ2dsZU1hcFNjYWxlXCI7XG4gICAgLy8gRFBJX0NhblVzZUZ1bGxDb2xvclJhbmdlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5Vc2VGdWxsQ29sb3JSYW5nZVwiXSA9IFwiY2FuVXNlRnVsbENvbG9yUmFuZ2VcIjtcbiAgICAvLyBEUElfQ2FuQWRkVG9EcmlsbFBhdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkFkZFRvRHJpbGxQYXRoXCJdID0gXCJjYW5BZGRUb0RyaWxsUGF0aFwiO1xuICAgIC8vIERQSV9DZW50ZXJIb3Jpem9udGFsbHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNlbnRlckhvcml6b250YWxseVwiXSA9IFwiY2VudGVySG9yaXpvbnRhbGx5XCI7XG4gICAgLy8gRFBJX0NlbnRlclZlcnRpY2FsbHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNlbnRlclZlcnRpY2FsbHlcIl0gPSBcImNlbnRlclZlcnRpY2FsbHlcIjtcbiAgICAvLyBEUElfQ2hhbmdlQWxsRmllbGRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDaGFuZ2VBbGxGaWVsZHNcIl0gPSBcImNoYW5nZUFsbEZpZWxkc1wiO1xuICAgIC8vIERQSV9DaGFuZ2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDaGFuZ2VkXCJdID0gXCJjaGFuZ2VkXCI7XG4gICAgLy8gRFBJX0NsZWFyQnJ1c2hpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNsZWFyQnJ1c2hpbmdcIl0gPSBcImNsZWFyQnJ1c2hpbmdcIjtcbiAgICAvLyBEUElfQ2xlYXJTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDbGVhclNvcnRcIl0gPSBcImNsZWFyU29ydFwiO1xuICAgIC8vIERQSV9DbGVhclZpZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNsZWFyVmlld1wiXSA9IFwiY2xlYXJWaWV3XCI7XG4gICAgLy8gRFBJX0NvbGxhcHNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ29sbGFwc2VkXCJdID0gXCJjb2xsYXBzZWRcIjtcbiAgICAvLyBEUElfQ29uc29saWRhdGVJbkNvbW1pdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ29uc29saWRhdGVJbkNvbW1pdFwiXSA9IFwiY29uc29saWRhdGVJbkNvbW1pdFwiO1xuICAgIC8vIERQSV9DbHVzdGVyRW5hYmxlU2NhbGVkQ2hlY2tib3gsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNsdXN0ZXJFbmFibGVTY2FsZWRDaGVja2JveFwiXSA9IFwiY2x1c3RlckVuYWJsZVNjYWxlZENoZWNrYm94XCI7XG4gICAgLy8gRFBJX0NvbW1pdFBpbGxGaW5pc2hlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWl0UGlsbEZpbmlzaGVkXCJdID0gXCJjb21taXRQaWxsRmluaXNoZWRcIjtcbiAgICAvLyBEUElfQ29tcHJlc3NBcnJheXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbXByZXNzQXJyYXlzXCJdID0gXCJjb21wcmVzc0FycmF5c1wiO1xuICAgIC8vIERQSV9Db21wdXRlQ29tcG91bmRlZFJhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbXB1dGVDb21wb3VuZGVkUmF0ZVwiXSA9IFwiY29tcHV0ZUNvbXBvdW5kZWRSYXRlXCI7XG4gICAgLy8gRFBJX0NvbmZpZGVuY2VJbnRlcnZhbEFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZGVuY2VJbnRlcnZhbEFsbG93ZWRcIl0gPSBcImNvbmZpZGVuY2VJbnRlcnZhbEFsbG93ZWRcIjtcbiAgICAvLyBEUElfQ29uZmlnSXNEZXNrdG9wU3RhbmRhcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZ0lzRGVza3RvcFN0YW5kYXJkXCJdID0gXCJjb25maWdJc0Rlc2t0b3BTdGFuZGFyZFwiO1xuICAgIC8vIERQSV9Db25maWdJc0ludGVyYWN0b3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZ0lzSW50ZXJhY3RvclwiXSA9IFwiY29uZmlnSXNJbnRlcmFjdG9yXCI7XG4gICAgLy8gRFBJX0NvbmZpZ0lzUHVibGljLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDb25maWdJc1B1YmxpY1wiXSA9IFwiY29uZmlnSXNQdWJsaWNcIjtcbiAgICAvLyBEUElfQ29uZmlnSXNSZWFkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZ0lzUmVhZGVyXCJdID0gXCJjb25maWdJc1JlYWRlclwiO1xuICAgIC8vIERQSV9Db250YWluc1F1YW50LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDb250YWluc1F1YW50XCJdID0gXCJjb250YWluc1F1YW50XCI7XG4gICAgLy8gRFBJX0NvbnRhaW5zVmFsaWREYXRhc291cmNlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ29udGFpbnNWYWxpZERhdGFzb3VyY2VzXCJdID0gXCJjb250YWluc1ZhbGlkRGF0YXNvdXJjZXNcIjtcbiAgICAvLyBEUElfQ29udHJvbGxlck1pc3NpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbnRyb2xsZXJNaXNzaW5nXCJdID0gXCJjb250cm9sbGVyTWlzc2luZ1wiO1xuICAgIC8vIERQSV9DcmVhdGVFeHRyYWN0Rm9yUHVibGlzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ3JlYXRlRXh0cmFjdEZvclB1Ymxpc2hcIl0gPSBcImNyZWF0ZUV4dHJhY3RGb3JQdWJsaXNoXCI7XG4gICAgLy8gRFBJX0Nyb3NzVGFiLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDcm9zc1RhYlwiXSA9IFwiY3Jvc3NUYWJcIjtcbiAgICAvLyBEUElfQ3VsbExhYmVscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ3VsbExhYmVsc1wiXSA9IFwiY3VsbExhYmVsc1wiO1xuICAgIC8vIERQSV9DdXJyZW50Q3VzdFZpZXdJZEZsYWcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkN1cnJlbnRDdXN0Vmlld0lkRmxhZ1wiXSA9IFwiaXNDdXJyZW50Q3VzdFZpZXdJZFZhbGlkXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZEVuYWJsZVNuYXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZEVuYWJsZVNuYXBcIl0gPSBcImRhc2hib2FyZEVuYWJsZVNuYXBcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkU2hvd0dyaWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFNob3dHcmlkXCJdID0gXCJkYXNoYm9hcmRTaG93R3JpZFwiO1xuICAgIC8vIERQSV9EYXRhR3JpZFNvcnRPcmRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUdyaWRTb3J0T3JkZXJcIl0gPSBcImRhdGFncmlkU29ydE9yZGVyXCI7XG4gICAgLy8gRFBJX0RlbGV0ZUV4dHJhY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRlbGV0ZUV4dHJhY3RcIl0gPSBcImRlbGV0ZUV4dHJhY3RcIjtcbiAgICAvLyBEUElfRGVsZXRlT25seVNwZWNpZmllZFNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGVsZXRlT25seVNwZWNpZmllZFNlbGVjdGlvblwiXSA9IFwiZGVsZXRlT25seVNwZWNpZmllZFNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9EZWxldGVPcnBoYW5zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEZWxldGVPcnBoYW5zXCJdID0gXCJkZWxldGVPcnBoYW5zXCI7XG4gICAgLy8gRFBJX0Rpc2FibGVkRGF0YUNvbm5lY3Rpb25DbGFzc05hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEaXNhYmxlZERhdGFDb25uZWN0aW9uQ2xhc3NOYW1lc1wiXSA9IFwiZGlzYWJsZWREYXRhQ29ubmVjdGlvbkNsYXNzTmFtZXNcIjtcbiAgICAvLyBEUElfRGlzYWJsZVByZXNNb2RlbEhhbmRsZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc2FibGVQcmVzTW9kZWxIYW5kbGVyXCJdID0gXCJkaXNhYmxlUHJlc01vZGVsSGFuZGxlclwiO1xuICAgIC8vIERQSV9EaXNwbGF5RGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGlzcGxheURhdGVcIl0gPSBcImRpc3BsYXlEYXRlXCI7XG4gICAgLy8gRFBJX0Rpc3BsYXlUaW1lLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEaXNwbGF5VGltZVwiXSA9IFwiZGlzcGxheVRpbWVcIjtcbiAgICAvLyBEUElfRG9Ecm9wVUlBY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRvRHJvcFVJQWN0aW9uXCJdID0gXCJkb0Ryb3BVaUFjdGlvblwiO1xuICAgIC8vIERQSV9Eb01lcmdlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEb01lcmdlXCJdID0gXCJkb01lcmdlXCI7XG4gICAgLy8gRFBJX0RvUHJlRHJvcFVJQWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEb1ByZURyb3BVSUFjdGlvblwiXSA9IFwiZG9QcmVEcm9wVWlBY3Rpb25cIjtcbiAgICAvLyBEUElfRG9RdWVyeSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRG9RdWVyeVwiXSA9IFwiZG9RdWVyeVwiO1xuICAgIC8vIERQSV9EcmFnSG9yeiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhZ0hvcnpcIl0gPSBcImRyYWdIb3J6XCI7XG4gICAgLy8gRFBJX0RyaWxsRG93biwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRHJpbGxEb3duXCJdID0gXCJkcmlsbERvd25cIjtcbiAgICAvLyBEUElfRHJvcFRvWEF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkRyb3BUb1hBeGlzXCJdID0gXCJkcm9wVG9YQXhpc1wiO1xuICAgIC8vIERQSV9Ecm9wVG9ZQXhpcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRHJvcFRvWUF4aXNcIl0gPSBcImRyb3BUb1lBeGlzXCI7XG4gICAgLy8gRFBJX0Ryb3BVbm5hbWVkRmllbGRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJEcm9wVW5uYW1lZEZpZWxkc1wiXSA9IFwiZHJvcFVubmFtZWRGaWVsZHNcIjtcbiAgICAvLyBEUElfRWRpdEV4aXN0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFZGl0RXhpc3RpbmdcIl0gPSBcImVkaXRFeGlzdGluZ1wiO1xuICAgIC8vIERQSV9FZGl0aW5nQ29ubmVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdGluZ0Nvbm5lY3Rpb25cIl0gPSBcImVkaXRpbmdDb25uZWN0aW9uXCI7XG4gICAgLy8gRFBJX0VtYmVkQ3JlZGVudGlhbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVtYmVkQ3JlZGVudGlhbHNcIl0gPSBcImVtYmVkQ3JlZGVudGlhbHNcIjtcbiAgICAvLyBEUElfRW1iZWRPQXV0aENyZWRlbnRpYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVtYmVkT0F1dGhDcmVkZW50aWFsXCJdID0gXCJlbWJlZE9hdXRoQ3JlZGVudGlhbHNcIjtcbiAgICAvLyBEUElfRW1wdHlIaWdobGlnaHRGb2dBbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVtcHR5SGlnaGxpZ2h0Rm9nQWxsXCJdID0gXCJlbXB0eUhpZ2hsaWdodEZvZ0FsbFwiO1xuICAgIC8vIERQSV9FbmFibGVBbHBoYWJldGljU29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlQWxwaGFiZXRpY1NvcnRcIl0gPSBcImVuYWJsZUFscGhhYmV0aWNTb3J0XCI7XG4gICAgLy8gRFBJX0VuYWJsZUF1dG9tYXRpY0RyaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVBdXRvbWF0aWNEcmlsbFwiXSA9IFwiZW5hYmxlQXV0b21hdGljRHJpbGxcIjtcbiAgICAvLyBEUElfRW5hYmxlQ29uZmlkZW5jZUJhbmRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVDb25maWRlbmNlQmFuZHNcIl0gPSBcImVuYWJsZUNvbmZpZGVuY2VCYW5kc1wiO1xuICAgIC8vIERQSV9FbmFibGVEYXRhT3JkZXJTb3J0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVEYXRhT3JkZXJTb3J0XCJdID0gXCJlbmFibGVEYXRhT3JkZXJTb3J0XCI7XG4gICAgLy8gRFBJX0VuYWJsZUZpZWxkU29ydCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlRmllbGRTb3J0XCJdID0gXCJlbmFibGVGaWVsZFNvcnRcIjtcbiAgICAvLyBEUElfRW5hYmxlSW5zdGFudEFuYWx5dGljcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlSW5zdGFudEFuYWx5dGljc1wiXSA9IFwiZW5hYmxlSW5zdGFudEFuYWx5dGljc1wiO1xuICAgIC8vIERQSV9FbmFibGVMaW5lcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlTGluZXNcIl0gPSBcImVuYWJsZUxpbmVzXCI7XG4gICAgLy8gRFBJX0VuYWJsZU1hbnVhbFNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVuYWJsZU1hbnVhbFNvcnRcIl0gPSBcImVuYWJsZU1hbnVhbFNvcnRcIjtcbiAgICAvLyBEUElfRW5hYmxlTWFya3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVuYWJsZU1hcmtzXCJdID0gXCJlbmFibGVNYXJrc1wiO1xuICAgIC8vIERQSV9FbmFibGVNdWx0aXBsZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlTXVsdGlwbGVTZWxlY3Rpb25cIl0gPSBcImVuYWJsZU11bHRpcGxlU2VsZWN0aW9uXCI7XG4gICAgLy8gRFBJX0VuYWJsZVByZWZldGNoaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVQcmVmZXRjaGluZ1wiXSA9IFwiZW5hYmxlUHJlZmV0Y2hpbmdcIjtcbiAgICAvLyBEUElfRW5hYmxlVGFibGVDYWxjRGVuc2lmaWNhdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlVGFibGVDYWxjRGVuc2lmaWNhdGlvblwiXSA9IFwiZW5hYmxlVGFibGVDYWxjRGVuc2lmaWNhdGlvblwiO1xuICAgIC8vIERQSV9FbmFibGVUb29sdGlwcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlVG9vbHRpcHNcIl0gPSBcImVuYWJsZVRvb2x0aXBzXCI7XG4gICAgLy8gRFBJX0VuZERhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkVuZERhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGVcIl0gPSBcImVuZERhdGFTb3VyY2VQcmVzTW9kZWxVcGRhdGVcIjtcbiAgICAvLyBEUElfRXN0aW1hdGVOdWxscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRXN0aW1hdGVOdWxsc1wiXSA9IFwiZXN0aW1hdGVOdWxsc1wiO1xuICAgIC8vIERQSV9FeGNsdWRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFeGNsdWRlXCJdID0gXCJleGNsdWRlXCI7XG4gICAgLy8gRFBJX0V4Y2x1ZGVDb2xvciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRXhjbHVkZUNvbG9yXCJdID0gXCJleGNsdWRlQ29sb3JcIjtcbiAgICAvLyBEUElfRXhjbHVkZUN1YmVEZW5vcm0sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4Y2x1ZGVDdWJlRGVub3JtXCJdID0gXCJleGNsdWRlQ3ViZURlbm9ybVwiO1xuICAgIC8vIERQSV9FeGNsdWRlSW50ZXJjZXB0RW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRXhjbHVkZUludGVyY2VwdEVuYWJsZWRcIl0gPSBcImV4Y2x1ZGVJbnRlcmNlcHRFbmFibGVkXCI7XG4gICAgLy8gRFBJX0V4Y2x1ZGVMb2NhbEZ1bmN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRXhjbHVkZUxvY2FsRnVuY3Rpb25zXCJdID0gXCJleGNsdWRlTG9jYWxGdW5jdGlvbnNcIjtcbiAgICAvLyBEUElfRXhwb3J0RGFzaGJvYXJkSW1hZ2VGcm9tU2hlZXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cG9ydERhc2hib2FyZEltYWdlRnJvbVNoZWV0XCJdID0gXCJleHBvcnRJbWFnZVNoZWV0QXNEYXNoYm9hcmRcIjtcbiAgICAvLyBEUElfRXh0U3ZjQ29uZmlnSXNBdXRoRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRXh0U3ZjQ29uZmlnSXNBdXRoRW5hYmxlZFwiXSA9IFwiZXh0U3ZjQ29uZmlnSXNBdXRoRW5hYmxlZFwiO1xuICAgIC8vIERQSV9FeHRyYWN0RnVsbFJlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RGdWxsUmVmcmVzaFwiXSA9IFwiZXh0cmFjdEZ1bGxSZWZyZXNoXCI7XG4gICAgLy8gRFBJX0V4dHJhY3ROZWVkc1JlZnJlc2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3ROZWVkc1JlZnJlc2hcIl0gPSBcImV4dHJhY3ROZWVkc1JlZnJlc2hcIjtcbiAgICAvLyBEUElfRXh0cmFjdFBlbmRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RQZW5kaW5nXCJdID0gXCJleHRyYWN0UGVuZGluZ1wiO1xuICAgIC8vIERQSV9FeHRyYWN0U2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RTZWxlY3RlZFwiXSA9IFwiZXh0cmFjdFNlbGVjdGVkXCI7XG4gICAgLy8gRFBJX0ZlZGVyYXRhYmxlT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRmVkZXJhdGFibGVPbmx5XCJdID0gXCJmZWRlcmF0YWJsZU9ubHlcIjtcbiAgICAvLyBEUElfRmllbGRTb3J0T3JkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkU29ydE9yZGVyXCJdID0gXCJmaWVsZFNvcnRPcmRlclwiO1xuICAgIC8vIERQSV9GaWVsZFN1cHBvcnRzQ29udGFpbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkU3VwcG9ydHNDb250YWluc1wiXSA9IFwiZmllbGRTdXBwb3J0c0NvbnRhaW5zXCI7XG4gICAgLy8gRFBJX0ZpZWxkU3VwcG9ydHNFbmRzV2l0aCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRTdXBwb3J0c0VuZHNXaXRoXCJdID0gXCJmaWVsZFN1cHBvcnRzRW5kc1dpdGhcIjtcbiAgICAvLyBEUElfRmllbGRTdXBwb3J0c1N0YXJ0c1dpdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkU3VwcG9ydHNTdGFydHNXaXRoXCJdID0gXCJmaWVsZFN1cHBvcnRzU3RhcnRzV2l0aFwiO1xuICAgIC8vIERQSV9GaWxsQWJvdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGxBYm92ZVwiXSA9IFwiZmlsbEFib3ZlXCI7XG4gICAgLy8gRFBJX0ZpbGxCZWxvdywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRmlsbEJlbG93XCJdID0gXCJmaWxsQmVsb3dcIjtcbiAgICAvLyBEUElfRmlsbFdpdGhaZXJvZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGxXaXRoWmVyb2VzXCJdID0gXCJmaWxsWmVyb2VzXCI7XG4gICAgLy8gRFBJX0ZpbHRlcklzTmFtZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlcklzTmFtZWRcIl0gPSBcImZpbHRlcklzTmFtZWRcIjtcbiAgICAvLyBEUElfRm9jdXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvY3VzXCJdID0gXCJmb2N1c1wiO1xuICAgIC8vIERQSV9Gb3JJbnRlcm5hbFVzZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9ySW50ZXJuYWxVc2VcIl0gPSBcImludGVybmFsVXNlXCI7XG4gICAgLy8gRFBJX0ZvcmNlQnJvd3NlclJlbmRlcmluZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VCcm93c2VyUmVuZGVyaW5nXCJdID0gXCJmb3JjZUJyb3dzZXJSZW5kZXJpbmdcIjtcbiAgICAvLyBEUElfRm9yY2VDYWNoZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VDYWNoZVwiXSA9IFwiZm9yY2VDYWNoZVwiO1xuICAgIC8vIERQSV9Gb3JjZUNvbG9yRnJvbUFwcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VDb2xvckZyb21BcHBcIl0gPSBcImZvcmNlQ29sb3JGcm9tQXBwXCI7XG4gICAgLy8gRFBJX0ZvcmNlQ29ubmVjdGlvbkF0dGVtcHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmNlQ29ubmVjdGlvbkF0dGVtcHRcIl0gPSBcImZvcmNlQ29ubmVjdGlvbkF0dGVtcHRcIjtcbiAgICAvLyBEUElfRm9yY2VDb25zb2xpZGF0ZUluQ29tbWl0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJGb3JjZUNvbnNvbGlkYXRlSW5Db21taXRcIl0gPSBcImZvcmNlQ29uc29saWRhdGVJbkNvbW1pdFwiO1xuICAgIC8vIERQSV9Gb3JjZUV4dHJhY3RSZWZyZXNoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJGb3JjZUV4dHJhY3RSZWZyZXNoXCJdID0gXCJleHRyYWN0Rm9yY2VSZWZyZXNoXCI7XG4gICAgLy8gRFBJX0ZvcmNlSW50ZXJjZXB0WmVybywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VJbnRlcmNlcHRaZXJvXCJdID0gXCJmb3JjZUludGVyY2VwdFplcm9cIjtcbiAgICAvLyBEUElfRm9yY2VPbGRDb25uZWN0RXhwZXJpZW5jZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VPbGRDb25uZWN0RXhwZXJpZW5jZVwiXSA9IFwiZm9yY2VPbGRDb25uZWN0RXhwZXJpZW5jZVwiO1xuICAgIC8vIERQSV9Gb3JjZVRvZ2dsZUhpZ2hsaWdodFN0YXRlT24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmNlVG9nZ2xlSGlnaGxpZ2h0U3RhdGVPblwiXSA9IFwiZm9yY2VIaWdobGlnaHRPblwiO1xuICAgIC8vIERQSV9Gb3JjZVdob2xlRGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VXaG9sZURhdGVcIl0gPSBcImZvcmNlV2hvbGVEYXRlXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0U2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0U2VsZWN0ZWRcIl0gPSBcImZvcmVjYXN0U2VsZWN0ZWRcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RVc2VBdXRvQWdnLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdFVzZUF1dG9BZ2dcIl0gPSBcImZvcmVjYXN0VXNlQXV0b1N1bW1hcml6ZVwiO1xuICAgIC8vIERQSV9Gb3JKb2luLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJGb3JKb2luXCJdID0gXCJmb3JKb2luXCI7XG4gICAgLy8gRFBJX0Zvcm1hdERhdGFWYWx1ZUxvY2FsbHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdERhdGFWYWx1ZUxvY2FsbHlcIl0gPSBcImZvcm1hdERhdGFWYWx1ZUxvY2FsbHlcIjtcbiAgICAvLyBEUElfRm9ybWF0SWZDb2x1bW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdElmQ29sdW1uXCJdID0gXCJmb3JtYXRJZkNvbHVtblwiO1xuICAgIC8vIERQSV9Gb3JtYXRJZlBhcmFtZXRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0SWZQYXJhbWV0ZXJcIl0gPSBcImZvcm1hdElmUGFyYW1ldGVyXCI7XG4gICAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hJc0RhdGFMb2FkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkdlb2dyYXBoaWNTZWFyY2hJc0RhdGFMb2FkZWRcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hEYXRhTG9hZGVkXCI7XG4gICAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hMb2FkRGF0YUFzeW5jLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJHZW9ncmFwaGljU2VhcmNoTG9hZERhdGFBc3luY1wiXSA9IFwiZ2VvZ3JhcGhpY1NlYXJjaExvYWREYXRhQXN5bmNcIjtcbiAgICAvLyBEUElfR3JvdXBCeUFsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiR3JvdXBCeUFsbFwiXSA9IFwiZ3JvdXBCeUFsbFwiO1xuICAgIC8vIERQSV9IYXNBbGlhcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzQWxpYXNcIl0gPSBcImhhc0FsaWFzXCI7XG4gICAgLy8gRFBJX0hhc0FsbE1lbWJlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzQWxsTWVtYmVyXCJdID0gXCJoYXNBbGxNZW1iZXJcIjtcbiAgICAvLyBEUElfSGFzQXBwbHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc0FwcGx5XCJdID0gXCJoYXNBcHBseVwiO1xuICAgIC8vIERQSV9IYXNCYWNrZ3JvdW5kSW1hZ2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc0JhY2tncm91bmRJbWFnZVwiXSA9IFwiaGFzQmFja2dyb3VuZEltYWdlXCI7XG4gICAgLy8gRFBJX0hhc0JlZW5EaXNtaXNzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc0JlZW5EaXNtaXNzZWRcIl0gPSBcImhhc0JlZW5EaXNtaXNzZWRcIjtcbiAgICAvLyBEUElfSGFzQ2FwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzQ2FwdGlvblwiXSA9IFwiaGFzQ2FwdGlvblwiO1xuICAgIC8vIERQSV9IYXNDb25kaXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc0NvbmRpdGlvblwiXSA9IFwiaGFzQ29uZGl0aW9uXCI7XG4gICAgLy8gRFBJX0hhc0Nvbm5lY3RQZXJtaXNzaW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzQ29ubmVjdFBlcm1pc3Npb25zXCJdID0gXCJoYXNDb25uZWN0UGVybWlzc2lvbnNcIjtcbiAgICAvLyBEUElfSGFzRGFzaGJvYXJkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNEYXNoYm9hcmRcIl0gPSBcImhhc0Rhc2hib2FyZFwiO1xuICAgIC8vIERQSV9IYXNEb3dubG9hZFBlcm1pc3Npb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNEb3dubG9hZFBlcm1pc3Npb25zXCJdID0gXCJoYXNEb3dubG9hZFBlcm1pc3Npb25zXCI7XG4gICAgLy8gRFBJX0hhc0RyaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNEcmlsbFwiXSA9IFwiaGFzRHJpbGxcIjtcbiAgICAvLyBEUElfSGFzRXhjbHVkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzRXhjbHVkZVwiXSA9IFwiaGFzRXhjbHVkZVwiO1xuICAgIC8vIERQSV9IYXNGaWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNGaWxsXCJdID0gXCJoYXNGaWxsXCI7XG4gICAgLy8gRFBJX0hhc0xhYmVscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzTGFiZWxzXCJdID0gXCJoYXNMYWJlbHNcIjtcbiAgICAvLyBEUElfSGFzTGltaXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc0xpbWl0XCJdID0gXCJoYXNMaW1pdFwiO1xuICAgIC8vIERQSV9IYXNMaW5lLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNMaW5lXCJdID0gXCJoYXNMaW5lXCI7XG4gICAgLy8gRFBJX0hhc01vZGlmaWVkQXhlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzTW9kaWZpZWRBeGVzXCJdID0gXCJoYXNNb2RpZmllZEF4ZXNcIjtcbiAgICAvLyBEUElfSGFzTm9uUm9vdENhbGN1bGF0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzTm9uUm9vdENhbGN1bGF0aW9uc1wiXSA9IFwiaGFzTm9uUm9vdENhbGN1bGF0aW9uc1wiO1xuICAgIC8vIERQSV9IYXNQYXR0ZXJuLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNQYXR0ZXJuXCJdID0gXCJoYXNQYXR0ZXJuXCI7XG4gICAgLy8gRFBJX0hhc1B1Ymxpc2hHdWlkYW5jZVJlc3VsdHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1B1Ymxpc2hHdWlkYW5jZVJlc3VsdHNcIl0gPSBcImhhc1B1Ymxpc2hHdWlkYW5jZVJlc3VsdHNcIjtcbiAgICAvLyBEUElfSGFzU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNTZWxlY3Rpb25cIl0gPSBcImhhc1NlbGVjdGlvblwiO1xuICAgIC8vIERQSV9IYXNTZXJ2ZXJDcmVkZW50aWFscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzU2VydmVyQ3JlZGVudGlhbHNcIl0gPSBcImhhc1NlcnZlckNyZWRlbnRpYWxzXCI7XG4gICAgLy8gRFBJX0hhc1NwYWNlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNTcGFjZVwiXSA9IFwiaGFzU3BhY2VcIjtcbiAgICAvLyBEUElfSGFzU3RvcmVkUHJvY2VkdXJlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNTdG9yZWRQcm9jZWR1cmVcIl0gPSBcImhhc1N0b3JlZFByb2NlZHVyZVwiO1xuICAgIC8vIERQSV9IYXNTdHJpbmdDYWxjdWxhdGVkTWVhc3VyZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1N0cmluZ0NhbGN1bGF0ZWRNZWFzdXJlc1wiXSA9IFwiaGFzU3RyaW5nQ2FsY3VsYXRlZE1lYXN1cmVzXCI7XG4gICAgLy8gRFBJX0hhc1RhYmxlQ2FsY0RhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1RhYmxlQ2FsY0RhdGFcIl0gPSBcImhhc1RhYmxlQ2FsY0RhdGFcIjtcbiAgICAvLyBEUElfSGFzVGl0bGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1RpdGxlXCJdID0gXCJoYXNUaXRsZVwiO1xuICAgIC8vIERQSV9IYXNVc2VyU3BlY2lmaWNDb250ZW50LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNVc2VyU3BlY2lmaWNDb250ZW50XCJdID0gXCJoYXNVc2VyU3BlY2lmaWNDb250ZW50XCI7XG4gICAgLy8gRFBJX0hhc1Vuam9pbmVkVGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1Vuam9pbmVkVGFibGVcIl0gPSBcImhhc1Vuam9pbmVkVGFibGVcIjtcbiAgICAvLyBEUElfSGFzVmFyQXJncywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzVmFyQXJnc1wiXSA9IFwiaGFzVmFyQXJnc1wiO1xuICAgIC8vIERQSV9IYXNWaXNpdGVkV0RDUGFnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzVmlzaXRlZFdEQ1BhZ2VcIl0gPSBcImhhc1Zpc2l0ZWRXZGNQYWdlXCI7XG4gICAgLy8gRFBJX0lnbm9yZUFsaWFzZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklnbm9yZUFsaWFzZXNcIl0gPSBcImlnbm9yZUFsaWFzZXNcIjtcbiAgICAvLyBEUElfSWdub3JlRG9tYWluLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJZ25vcmVEb21haW5cIl0gPSBcImlnbm9yZURvbWFpblwiO1xuICAgIC8vIERQSV9JZ25vcmVTZWxlY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklnbm9yZVNlbGVjdGlvblwiXSA9IFwiaWdub3JlU2VsZWN0aW9uXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVBbGxDb2x1bW5zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlQWxsQ29sdW1uc1wiXSA9IFwiaW5jbHVkZUFsbENvbHVtbnNcIjtcbiAgICAvLyBEUElfSW5jbHVkZUNvbnRleHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVDb250ZXh0XCJdID0gXCJpbmNsdWRlQ29udGV4dFwiO1xuICAgIC8vIERQSV9JbmNsdWRlRGFzaGJvYXJkUHJlc01vZGVscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZURhc2hib2FyZFByZXNNb2RlbHNcIl0gPSBcImluY2x1ZGVEYXNoYm9hcmRQcmVzTW9kZWxzXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVJdGVtU2V0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlSXRlbVNldFwiXSA9IFwiaW5jbHVkZUl0ZW1TZXRcIjtcbiAgICAvLyBEUElfSW5jbHVkZUxvY2FsRmlsZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVMb2NhbEZpbGVzXCJdID0gXCJpbmNsdWRlTG9jYWxGaWxlc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlT3RoZXJTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZU90aGVyU2VsZWN0ZWRcIl0gPSBcImluY2x1ZGVPdGhlclNlbGVjdGVkXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVOdWxscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZU51bGxzXCJdID0gXCJpbmNsdWRlTnVsbHNcIjtcbiAgICAvLyBEUElfSW5jbHVkZVBhcmVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZVBhcmVudFwiXSA9IFwiaW5jbHVkZVBhcmVudFwiO1xuICAgIC8vIERQSV9JbmNsdWRlU2VsZWN0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZVNlbGVjdGlvbnNcIl0gPSBcImluY2x1ZGVTZWxlY3Rpb25zXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVTaWJsaW5ncywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZVNpYmxpbmdzXCJdID0gXCJpbmNsdWRlU2libGluZ3NcIjtcbiAgICAvLyBEUElfSW5jbHVkZVN0b3JpZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVTdG9yaWVzXCJdID0gXCJpbmNsdWRlU3Rvcmllc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlU3ViZm9sZGVycywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZVN1YmZvbGRlcnNcIl0gPSBcImluY2x1ZGVTdWJmb2xkZXJzXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVWb2xhdGlsZVByb3BzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlVm9sYXRpbGVQcm9wc1wiXSA9IFwiaW5jbHVkZVZvbGF0aWxlUHJvcHNcIjtcbiAgICAvLyBEUElfSW5jbHVkZXNUYWcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVzVGFnXCJdID0gXCJpbmNsdWRlc1RhZ1wiO1xuICAgIC8vIERQSV9JbnNlcnRBZnRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5zZXJ0QWZ0ZXJcIl0gPSBcImluc2VydEFmdGVyXCI7XG4gICAgLy8gRFBJX0luc2VydEF0RW5kLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbnNlcnRBdEVuZFwiXSA9IFwiaW5zZXJ0QXRFbmRcIjtcbiAgICAvLyBEUElfSW5zdGFudEFuYWx5dGljc0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluc3RhbnRBbmFseXRpY3NBbGxvd2VkXCJdID0gXCJpbnN0YW50QW5hbHl0aWNzQWxsb3dlZFwiO1xuICAgIC8vIERQSV9JbnRlZ2VyQ29vcmRpbmF0ZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkludGVnZXJDb29yZGluYXRlc1wiXSA9IFwiaW50Q29vcmRzXCI7XG4gICAgLy8gRFBJX0ludmFsaWRhdGVkTGF5b3V0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbnZhbGlkYXRlZExheW91dFwiXSA9IFwiaW52YWxpZGF0ZWRMYXlvdXRcIjtcbiAgICAvLyBEUElfSXNBY3RpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQWN0aXZlXCJdID0gXCJpc0FjdGl2ZVwiO1xuICAgIC8vIERQSV9Jc0FkZFRvRmlsdGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0FkZFRvRmlsdGVyXCJdID0gXCJpc0FkZFRvRmlsdGVyQnV0dG9uQ2hlY2tlZFwiO1xuICAgIC8vIERQSV9Jc0FsbEJ1dHRvblZpc2libGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQWxsQnV0dG9uVmlzaWJsZVwiXSA9IFwiaXNBbGxCdXR0b25WaXNpYmxlXCI7XG4gICAgLy8gRFBJX0lzQWxsb3dlZEluQ2FsY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQWxsb3dlZEluQ2FsY3NcIl0gPSBcImlzQWxsb3dlZEluQ2FsY3NcIjtcbiAgICAvLyBEUElfSXNBcHBNYXBTb3VyY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQXBwTWFwU291cmNlXCJdID0gXCJpc0FwcE1hcFNvdXJjZVwiO1xuICAgIC8vIERQSV9Jc0FyY2hpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQXJjaGl2ZVwiXSA9IFwiaXNBcmNoaXZlXCI7XG4gICAgLy8gRFBJX0lzQXV0aG9yaW5nTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNBdXRob3JpbmdNb2RlXCJdID0gXCJpc0F1dGhvcmluZ01vZGVcIjtcbiAgICAvLyBEUElfSXNBdXRvLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0F1dG9cIl0gPSBcImlzQXV0b1wiO1xuICAgIC8vIERQSV9Jc0F1dG9DbGVhciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNBdXRvQ2xlYXJcIl0gPSBcImlzQXV0b0NsZWFyXCI7XG4gICAgLy8gRFBJX0lzQXV0b0NvbHVtbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNBdXRvQ29sdW1uXCJdID0gXCJpc0F1dG9Db2x1bW5cIjtcbiAgICAvLyBEUElfSXNBdXRvSGlkZGVuLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0F1dG9IaWRkZW5cIl0gPSBcImlzQXV0b0hpZGRlblwiO1xuICAgIC8vIERQSV9Jc0F1dG9TZWxlY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQXV0b1NlbGVjdFwiXSA9IFwiaXNBdXRvU2VsZWN0XCI7XG4gICAgLy8gRFBJX0lzQm9sZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNCb2xkXCJdID0gXCJpc0JvbGRcIjtcbiAgICAvLyBEUElfSXNCb3JkZXJWaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0JvcmRlclZpc2libGVcIl0gPSBcImlzQm9yZGVyVmlzaWJsZVwiO1xuICAgIC8vIERQSV9Jc0JveHBsb3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQm94cGxvdFwiXSA9IFwiaXNCb3hwbG90XCI7XG4gICAgLy8gRFBJX0lzQ2FwYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDYXBhYmxlXCJdID0gXCJpc0NhcGFibGVcIjtcbiAgICAvLyBEUElfSXNDYXB0dXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDYXB0dXJlZFwiXSA9IFwiaXNDYXB0dXJlZFwiO1xuICAgIC8vIERQSV9Jc0NlbnRlcmVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0NlbnRlcmVkXCJdID0gXCJpc0NlbnRlcmVkXCI7XG4gICAgLy8gRFBJX0lzQ2hlY2tlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDaGVja2VkXCJdID0gXCJpc0NoZWNrZWRcIjtcbiAgICAvLyBEUElfSXNDb2xvckRpdmVyZ2luZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb2xvckRpdmVyZ2luZ1wiXSA9IFwiaXNDb2xvckRpdmVyZ2luZ1wiO1xuICAgIC8vIERQSV9Jc0NvbG9yU3RlcHBlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb2xvclN0ZXBwZWRcIl0gPSBcImlzQ29sb3JTdGVwcGVkXCI7XG4gICAgLy8gRFBJX0lzQ29tYmluZWRGaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb21iaW5lZEZpZWxkXCJdID0gXCJpc0NvbWJpbmVkRmllbGRcIjtcbiAgICAvLyBEUElfSXNDb25uZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQ29ubmVjdGVkXCJdID0gXCJpc0Nvbm5lY3RlZFwiO1xuICAgIC8vIERQSV9Jc0NvbnRleHRNZW51QWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb250ZXh0TWVudUFsbG93ZWRcIl0gPSBcImlzQ29udGV4dE1lbnVBbGxvd2VkXCI7XG4gICAgLy8gRFBJX0lzQ29udGludW91cywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDb250aW51b3VzXCJdID0gXCJpc0NvbnRpbnVvdXNcIjtcbiAgICAvLyBEUElfSXNDb3B5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0NvcHlcIl0gPSBcImlzQ29weVwiO1xuICAgIC8vIERQSV9Jc0N1c3RvbVBhbGV0dGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQ3VzdG9tUGFsZXR0ZVwiXSA9IFwiaXNDdXN0b21QYWxldHRlXCI7XG4gICAgLy8gRFBJX0lzQ3VzdG9tU1FMLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0N1c3RvbVNRTFwiXSA9IFwiaXNDdXN0b21TcWxcIjtcbiAgICAvLyBEUElfSXNDdXN0b21WYWx1ZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQ3VzdG9tVmFsdWVFbmFibGVkXCJdID0gXCJpc0N1c3RvbVZhbHVlRW5hYmxlZFwiO1xuICAgIC8vIERQSV9Jc0RhdGFBbGVydENvbmRpdGlvbk1ldCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEYXRhQWxlcnRDb25kaXRpb25NZXRcIl0gPSBcImlzRGF0YUFsZXJ0Q29uZGl0aW9uTWV0XCI7XG4gICAgLy8gRFBJX0lzRGF0YUFsZXJ0RGlhbG9nVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEYXRhQWxlcnREaWFsb2dWaXNpYmxlXCJdID0gXCJpc0RhdGFBbGVydERpYWxvZ1Zpc2libGVcIjtcbiAgICAvLyBEUElfSXNEYXRhQmluLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0RhdGFCaW5cIl0gPSBcImlzRGF0YUJpblwiO1xuICAgIC8vIERQSV9Jc0RhdGFHcmlkVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEYXRhR3JpZFZpc2libGVcIl0gPSBcImlzRGF0YUdyaWRWaXNpYmxlXCI7XG4gICAgLy8gRFBJX0lzRGF0YWJhc2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRGF0YWJhc2VcIl0gPSBcImlzRGF0YWJhc2VcIjtcbiAgICAvLyBEUElfSXNEYXRhYmFzZUZpbHRlckluY2x1c2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEYXRhYmFzZUZpbHRlckluY2x1c2l2ZVwiXSA9IFwiaXNEYkZpbHRlckluY2x1c2l2ZVwiO1xuICAgIC8vIERQSV9Jc1dlYkRhdGFUYWJWaWV3U3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1dlYkRhdGFUYWJWaWV3U3VwcG9ydGVkXCJdID0gXCJpc1dlYkRhdGFUYWJWaWV3U3VwcG9ydGVkXCI7XG4gICAgLy8gRFBJX0lzUHVibGlzaGVkRGF0YXNvdXJjZVJlcGxhY2VtZW50LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1B1Ymxpc2hlZERhdGFzb3VyY2VSZXBsYWNlbWVudFwiXSA9IFwiaXNQdWJsaXNoZWREYXRhc291cmNlUmVwbGFjZW1lbnRcIjtcbiAgICAvLyBEUElfSXNEZWFkRHJvcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEZWFkRHJvcFwiXSA9IFwiaXNEZWFkRHJvcFwiO1xuICAgIC8vIERQSV9Jc0RlZmF1bHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRGVmYXVsdFwiXSA9IFwiaXNEZWZhdWx0XCI7XG4gICAgLy8gRFBJX0lzRGVsZXRlQ2FsY0NvbmZpcm0sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRGVsZXRlQ2FsY0NvbmZpcm1cIl0gPSBcImlzRGVsZXRlQ2FsY0NvbmZpcm1lZFwiO1xuICAgIC8vIERQSV9Jc0RpbWVuc2lvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEaW1lbnNpb25cIl0gPSBcImlzRGltZW5zaW9uXCI7XG4gICAgLy8gRFBJX0lzRGl2aWRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEaXZpZGVyXCJdID0gXCJpc0RpdmlkZXJcIjtcbiAgICAvLyBEUElfSXNEcm9wZG93bkVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRHJvcGRvd25FbmFibGVkXCJdID0gXCJpc0Ryb3Bkb3duRW5hYmxlZFwiO1xuICAgIC8vIERQSV9Jc0VkaXRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRWRpdGluZ1wiXSA9IFwiaXNFZGl0aW5nXCI7XG4gICAgLy8gRFBJX0lzRW1iZWRkZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRW1iZWRkZWRcIl0gPSBcImlzRW1iZWRkZWRcIjtcbiAgICAvLyBEUElfSXNFbXB0eSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNFbXB0eVwiXSA9IFwiaXNFbXB0eVwiO1xuICAgIC8vIERQSV9Jc0FkZEluRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNBZGRJbkVuYWJsZWRcIl0gPSBcImlzQWRkSW5FbmFibGVkXCI7XG4gICAgLy8gRFBJX0lzSW5EcmlsbFBhdGgsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW5EcmlsbFBhdGhcIl0gPSBcImlzSW5EcmlsbFBhdGhcIjtcbiAgICAvLyBEUElfQWRkSW5KU0RlYnVnZ2luZ0VuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluSlNEZWJ1Z2dpbmdFbmFibGVkXCJdID0gXCJhZGRJbkpzRGVidWdnaW5FbmFibGVkXCI7XG4gICAgLy8gRFBJX0FkZEluUGF1c2VCZWZvcmVMb2FkaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJblBhdXNlQmVmb3JlTG9hZGluZ1wiXSA9IFwiYWRkSW5QYXVzZUJlZm9yZUxvYWRpbmdcIjtcbiAgICAvLyBEUElfSXNEU0hpZXJhcmNoaWNhbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEU0hpZXJhcmNoaWNhbFwiXSA9IFwiaXNEc0hpZXJhcmNoaWNhbFwiO1xuICAgIC8vIERQSV9Jc0VuZFB0TW92ZWFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRW5kUHRNb3ZlYWJsZVwiXSA9IFwiaXNFbmRwb2ludE1vdmFibGVcIjtcbiAgICAvLyBEUElfSXNFeGNsdWRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0V4Y2x1ZGVcIl0gPSBcImlzRXhjbHVkZUJ1dHRvbkNoZWNrZWRcIjtcbiAgICAvLyBEUElfSXNFeGlzdGluZ0Nvbm5lY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRXhpc3RpbmdDb25uZWN0aW9uXCJdID0gXCJpc0V4aXN0aW5nQ29ubmVjdGlvblwiO1xuICAgIC8vIERQSV9Jc0V4aXN0aW5nT2JqZWN0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0V4aXN0aW5nT2JqZWN0XCJdID0gXCJpc0V4aXN0aW5nT2JqZWN0XCI7XG4gICAgLy8gRFBJX0lzRXh0cmFjdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNFeHRyYWN0XCJdID0gXCJpc0V4dHJhY3RcIjtcbiAgICAvLyBEUElfSXNFeHRyYWN0T25seUNvbm5lY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRXh0cmFjdE9ubHlDb25uZWN0aW9uXCJdID0gXCJpc0V4dHJhY3RPbmx5Q29ubmVjdGlvblwiO1xuICAgIC8vIERQSV9Jc0V4dHJhY3RTZWxlY3Rpb25WaXNpYmxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0V4dHJhY3RTZWxlY3Rpb25WaXNpYmxlXCJdID0gXCJpc0V4dHJhY3RTZWxlY3Rpb25WaXNpYmxlXCI7XG4gICAgLy8gRFBJX0lzRmVkZXJhdGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRmVkZXJhdGFibGVcIl0gPSBcImlzRmVkZXJhdGFibGVcIjtcbiAgICAvLyBEUElfSXNGaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGaWVsZFwiXSA9IFwiaXNGaWVsZFwiO1xuICAgIC8vIERQSV9Jc0ZpZWxkUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0ZpZWxkUGFyYW1ldGVyXCJdID0gXCJpc0ZpZWxkUGFyYW1ldGVyXCI7XG4gICAgLy8gRFBJX0lzRmlsdGVyQWN0aW9uRmllbGQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRmlsdGVyQWN0aW9uRmllbGRcIl0gPSBcImlzRmlsdGVyQWN0aW9uRmllbGRcIjtcbiAgICAvLyBEUElfSXNGaXJzdENsYXNzQ29ubmVjdG9yLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0ZpcnN0Q2xhc3NDb25uZWN0b3JcIl0gPSBcImlzRmlyc3RDbGFzc0Nvbm5lY3RvclwiO1xuICAgIC8vIERQSV9Jc0Zsb2F0aW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0Zsb2F0aW5nXCJdID0gXCJpc0Zsb2F0aW5nXCI7XG4gICAgLy8gRFBJX0lzRm9sZGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0ZvbGRlZFwiXSA9IFwiaXNGb2xkZWRcIjtcbiAgICAvLyBEUElfSXNGb3JJbnB1dCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGb3JJbnB1dFwiXSA9IFwiaXNGb3JJbnB1dFwiO1xuICAgIC8vIERQSV9Jc0ZvcmVjYXN0RW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGb3JlY2FzdEVuYWJsZWRcIl0gPSBcImlzRm9yZWNhc3RFbmFibGVkXCI7XG4gICAgLy8gRFBJX0lzRm9yY2VEaXJ0eSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGb3JjZURpcnR5XCJdID0gXCJpc0ZvcmNlRGlydHlcIjtcbiAgICAvLyBEUElfSXNGdWxsU2NhbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNGdWxsU2NhblwiXSA9IFwiaXNGdWxsU2NhblwiO1xuICAgIC8vIERQSV9Jc0Z1bGxTdHlsaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0Z1bGxTdHlsaW5nXCJdID0gXCJpc0Z1bGxTdHlsaW5nXCI7XG4gICAgLy8gRFBJX0lzR2VuZXJhdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0dlbmVyYXRlZFwiXSA9IFwiaXNHZW5lcmF0ZWRcIjtcbiAgICAvLyBEUElfSXNHbG9iYWxOYW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNHbG9iYWxOYW1lc1wiXSA9IFwiaXNHbG9iYWxOYW1lc1wiO1xuICAgIC8vIERQSV9Jc0dyYXllZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNHcmF5ZWRcIl0gPSBcImlzR3JheWVkXCI7XG4gICAgLy8gRFBJX0lzR3JheXNjYWxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0dyYXlzY2FsZVwiXSA9IFwiaXNHcmF5c2NhbGVcIjtcbiAgICAvLyBEUElfSXNHcm91cCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNHcm91cFwiXSA9IFwiaXNHcm91cFwiO1xuICAgIC8vIERQSV9Jc0hpZGVhYmxlRmllbGQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSGlkZWFibGVGaWVsZFwiXSA9IFwiaXNIaWRlYWJsZUZpZWxkXCI7XG4gICAgLy8gRFBJX0lzSGllcmFyY2h5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0hpZXJhcmNoeVwiXSA9IFwiaXNIaWVyYXJjaHlcIjtcbiAgICAvLyBEUElfSXNIaWVyYXJjaHlTaW5nbGVTZWxlY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSGllcmFyY2h5U2luZ2xlU2VsZWN0XCJdID0gXCJpc0hpZXJhcmNoeVNpbmdsZVNlbGVjdFwiO1xuICAgIC8vIERQSV9Jc0hpZ2hsaWdodEFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSGlnaGxpZ2h0QWxsb3dlZFwiXSA9IFwiaXNIaWdobGlnaHRBbGxvd2VkXCI7XG4gICAgLy8gRFBJX0lzSGlnaGxpZ2h0RW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNIaWdobGlnaHRFbmFibGVkXCJdID0gXCJpc0hpZ2hsaWdodEVuYWJsZWRcIjtcbiAgICAvLyBEUElfSXNIaWdobGlnaHRGaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNIaWdobGlnaHRGaWVsZFwiXSA9IFwiaXNIaWdobGlnaHRGaWVsZFwiO1xuICAgIC8vIERQSV9Jc0hvcml6b250YWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSG9yaXpvbnRhbFwiXSA9IFwiaXNIb3Jpem9udGFsXCI7XG4gICAgLy8gRFBJX0lzSW1hZ2VFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0ltYWdlRW5hYmxlZFwiXSA9IFwiaXNJbWFnZUVuYWJsZWRcIjtcbiAgICAvLyBEUElfSXNJbkRlZmF1bHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW5EZWZhdWx0XCJdID0gXCJpc0luRGVmYXVsdFwiO1xuICAgIC8vIERQSV9Jc0luUHJpbWFyeURhdGFTb3VyY2UsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW5QcmltYXJ5RGF0YVNvdXJjZVwiXSA9IFwiaXNJblByaW1hcnlEYXRhU291cmNlXCI7XG4gICAgLy8gRFBJX0lzSW5uZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW5uZXJcIl0gPSBcImlzSW5uZXJcIjtcbiAgICAvLyBEUElfSXNJbml0aWFsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0luaXRpYWxcIl0gPSBcImlzSW5pdGlhbFwiO1xuICAgIC8vIERQSV9Jc0luc3RhbmNlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0luc3RhbmNlXCJdID0gXCJpc0luc3RhbmNlXCI7XG4gICAgLy8gRFBJX0lzSW52YWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNJbnZhbGlkXCJdID0gXCJpc0ludmFsaWRcIjtcbiAgICAvLyBEUElfSXNJbnZhbGlkQ2FsY09uREcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW52YWxpZENhbGNPbkRHXCJdID0gXCJpc0ludmFsaWREZ0NhbGNcIjtcbiAgICAvLyBEUElfSXNJdGFsaWNzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0l0YWxpY3NcIl0gPSBcImlzSXRhbGljc1wiO1xuICAgIC8vIERQSV9Jc0pvaW5BcmVhVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNKb2luQXJlYVZpc2libGVcIl0gPSBcImlzSm9pbkFyZWFWaXNpYmxlXCI7XG4gICAgLy8gRFBJX0lzTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0xhYmVsc1wiXSA9IFwiaXNMYWJlbHNcIjtcbiAgICAvLyBEUElfSXNMYXllcmVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0xheWVyZWRcIl0gPSBcImlzTGF5ZXJlZFwiO1xuICAgIC8vIERQSV9Jc0xlZnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTGVmdFwiXSA9IFwiaXNMZWZ0XCI7XG4gICAgLy8gRFBJX0lzTGVnYWN5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0xlZ2FjeVwiXSA9IFwiaXNMZWdhY3lcIjtcbiAgICAvLyBEUElfSXNMZXZlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNMZXZlbFwiXSA9IFwiaXNMZXZlbFwiO1xuICAgIC8vIERQSV9Jc0xldmVsT3JMZXZlbElkZW50aXR5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0xldmVsT3JMZXZlbElkZW50aXR5XCJdID0gXCJpc0xldmVsT3JMZXZlbElkZW50aXR5XCI7XG4gICAgLy8gRFBJX0lzTGljZW5zZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTGljZW5zZWRcIl0gPSBcImlzTGljZW5zZWRcIjtcbiAgICAvLyBEUElfSXNMaW5rLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0xpbmtcIl0gPSBcImlzTGlua1wiO1xuICAgIC8vIERQSV9Jc01hcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNNYXBcIl0gPSBcImlzTWFwXCI7XG4gICAgLy8gRFBJX0lzTWVhc3VyZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNNZWFzdXJlXCJdID0gXCJpc01lYXN1cmVcIjtcbiAgICAvLyBEUElfSXNNZXJnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNNZXJnZVwiXSA9IFwiaXNNZXJnZVwiO1xuICAgIC8vIERQSV9Jc01lc3NhZ2VTb3VyY2VSZW1vdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTWVzc2FnZVNvdXJjZVJlbW90ZVwiXSA9IFwiaXNNZXNzYWdlU291cmNlUmVtb3RlXCI7XG4gICAgLy8gRFBJX0lzTWlzc2luZ0Zyb21FeHRyYWN0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc01pc3NpbmdGcm9tRXh0cmFjdFwiXSA9IFwiaXNNaXNzaW5nRnJvbUV4dHJhY3RcIjtcbiAgICAvLyBEUElfSXNNb2JpbGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTW9iaWxlXCJdID0gXCJpc01vYmlsZVwiO1xuICAgIC8vIERQSV9Jc01vZGlmaWVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc01vZGlmaWVkXCJdID0gXCJpc01vZGlmaWVkXCI7XG4gICAgLy8gRFBJX0lzTmV3LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc05ld1wiXSA9IFwiaXNOZXdcIjtcbiAgICAvLyBEUElfSXNOZXdDbG91ZEZpbGVEYXRhU291cmNlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc05ld0Nsb3VkRmlsZURhdGFTb3VyY2VcIl0gPSBcImlzTmV3Q2xvdWRGaWxlRGF0YVNvdXJjZVwiO1xuICAgIC8vIERQSV9Jc05ld1pvbmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTmV3Wm9uZVwiXSA9IFwiaXNOZXdab25lXCI7XG4gICAgLy8gRFBJX0lzTm9uZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNOb25lXCJdID0gXCJpc05vbmVcIjtcbiAgICAvLyBEUElfSXNPZmZsaW5lTW9kZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNPZmZsaW5lTW9kZVwiXSA9IFwiaXNPZmZsaW5lTW9kZVwiO1xuICAgIC8vIERQSV9Jc1ByZUFxbEJpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNQcmVBcWxCaW5cIl0gPSBcImlzUHJlQXFsQmluXCI7XG4gICAgLy8gRFBJX0lzT01lYXN1cmVzQW5kUmVsYXRpb25hbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNPTWVhc3VyZXNBbmRSZWxhdGlvbmFsXCJdID0gXCJpc09tZWFzdXJlc0FuZFJlbGF0aW9uYWxcIjtcbiAgICAvLyBEUElfSXNPcGFxdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzT3BhcXVlXCJdID0gXCJpc09wYXF1ZVwiO1xuICAgIC8vIERQSV9Jc09ycGhhbmVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc09ycGhhbmVkXCJdID0gXCJpc09ycGhhbmVkXCI7XG4gICAgLy8gRFBJX0lzT3ZlcmxheSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNPdmVybGF5XCJdID0gXCJpc092ZXJsYXlcIjtcbiAgICAvLyBEUElfSXNPdmVycmlkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNPdmVycmlkZVwiXSA9IFwiaXNPdmVycmlkZVwiO1xuICAgIC8vIERQSV9Jc1BhZ2VMb2FkaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1BhZ2VMb2FkaW5nXCJdID0gXCJpc1BhZ2VMb2FkaW5nXCI7XG4gICAgLy8gRFBJX0lzUGFyYW1ldGVyU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUGFyYW1ldGVyU2VsZWN0ZWRcIl0gPSBcImlzUGFyYW1ldGVyU2VsZWN0ZWRcIjtcbiAgICAvLyBEUElfSXNQYXJhbWV0ZXJTZWxlY3RlZE9uRnJvbSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNQYXJhbWV0ZXJTZWxlY3RlZE9uRnJvbVwiXSA9IFwiaXNQYXJhbWV0ZXJTZWxlY3RlZE9uRnJvbVwiO1xuICAgIC8vIERQSV9Jc1BhcmFtZXRlclNlbGVjdGVkT25UbywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNQYXJhbWV0ZXJTZWxlY3RlZE9uVG9cIl0gPSBcImlzUGFyYW1ldGVyU2VsZWN0ZWRPblRvXCI7XG4gICAgLy8gRFBJX0lzUGF0dGVybkJhc2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1BhdHRlcm5CYXNlZFwiXSA9IFwiaXNQYXR0ZXJuQmFzZWRcIjtcbiAgICAvLyBEUElfSXNQaW5uZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUGlubmVkXCJdID0gXCJpc1Bpbm5lZFwiO1xuICAgIC8vIERQSV9Jc1ByZXNlbnRhdGlvbk1vZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUHJlc2VudGF0aW9uTW9kZVwiXSA9IFwiaXNQcmVzZW50YXRpb25Nb2RlRG9jXCI7XG4gICAgLy8gRFBJX0lzUHVibGlzaEFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUHVibGlzaEFsbG93ZWRcIl0gPSBcImlzUHVibGlzaEFsbG93ZWRcIjtcbiAgICAvLyBEUElfSXNNdXN0RG93bmdyYWRlVG9QdWJsaXNoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc011c3REb3duZ3JhZGVUb1B1Ymxpc2hcIl0gPSBcImlzRG93bmdyYWRlVG9QdWJsaXNoUmVxdWlyZWRcIjtcbiAgICAvLyBEUElfSXNQdWJsaXNoZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUHVibGlzaGVkXCJdID0gXCJpc1B1Ymxpc2hlZFwiO1xuICAgIC8vIERQSV9Jc1F1aWNrVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1F1aWNrVGFibGVDYWxjXCJdID0gXCJpc1F1aWNrVGFibGVDYWxjXCI7XG4gICAgLy8gRFBJX0lzUmFkaW9PbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSYWRpb09uXCJdID0gXCJpc1JhZGlvT25cIjtcbiAgICAvLyBEUElfSXNSZWNvbm5lY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUmVjb25uZWN0XCJdID0gXCJpc1JlY29ubmVjdFwiO1xuICAgIC8vIERQSV9Jc1JlY3Vyc2l2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSZWN1cnNpdmVcIl0gPSBcImlzUmVjdXJzaXZlXCI7XG4gICAgLy8gRFBJX0lzUmVmZXJlbmNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSZWZlcmVuY2VkXCJdID0gXCJpc1JlZmVyZW5jZWRcIjtcbiAgICAvLyBEUElfSXNSZW1vdmFsQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSZW1vdmFsQWxsb3dlZFwiXSA9IFwiaXNSb3dSZW1vdmFsQWxsb3dlZFwiO1xuICAgIC8vIERQSV9Jc1JlbmRlckNhcGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUmVuZGVyQ2FwYWJsZVwiXSA9IFwiaXNSZW5kZXJDYXBhYmxlXCI7XG4gICAgLy8gRFBJX0lzUmVxdWlyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUmVxdWlyZWRcIl0gPSBcImlzUmVxdWlyZWRcIjtcbiAgICAvLyBEUElfSXNSZXZlcnNlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSZXZlcnNlZFwiXSA9IFwiaXNSZXZlcnNlZFwiO1xuICAgIC8vIERQSV9Jc1JpZ2h0RHJhZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNSaWdodERyYWdcIl0gPSBcImlzUmlnaHREcmFnXCI7XG4gICAgLy8gRFBJX0lzUm93TGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1Jvd0xhYmVsc1wiXSA9IFwiaXNSb3dMYWJlbHNcIjtcbiAgICAvLyBEUElfSXNQZXJjZW50YWdlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1BlcmNlbnRhZ2VcIl0gPSBcImlzUGVyY2VudGFnZVwiO1xuICAgIC8vIERQSV9Jc1NhbGVzZm9yY2VJbkNvbm5lY3Rpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU2FsZXNmb3JjZUluQ29ubmVjdGlvblwiXSA9IFwiaXNTYWxlc2ZvcmNlSW5Db25uZWN0aW9uXCI7XG4gICAgLy8gRFBJX0lzU2NhbGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NjYWxlZFwiXSA9IFwiaXNTY2FsZWRcIjtcbiAgICAvLyBEUElfSXNTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTZWxlY3RlZFwiXSA9IFwiaXNTZWxlY3RlZFwiO1xuICAgIC8vIERQSV9Jc1NlbGVjdGVkSXRlbSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTZWxlY3RlZEl0ZW1cIl0gPSBcImlzU2VsZWN0ZWRJdGVtXCI7XG4gICAgLy8gRFBJX0lzU2VsZWN0aW9uRGlzYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU2VsZWN0aW9uRGlzYWJsZWRcIl0gPSBcImlzU2VsZWN0aW9uRGlzYWJsZWRcIjtcbiAgICAvLyBEUElfSXNTaGlmdERyYWcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU2hpZnREcmFnXCJdID0gXCJpc1NoaWZ0RHJhZ1wiO1xuICAgIC8vIERQSV9Jc1NpbmdsZUxhYmVsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NpbmdsZUxhYmVsXCJdID0gXCJpc1NpbmdsZUxhYmVsXCI7XG4gICAgLy8gRFBJX0lzU2luZ2xlU2VsZWN0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NpbmdsZVNlbGVjdFwiXSA9IFwiaXNTaW5nbGVTZWxlY3RcIjtcbiAgICAvLyBEUElfSXNTaW5nbGVTZWxlY3RNb2RlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NpbmdsZVNlbGVjdE1vZGVcIl0gPSBcImlzU2luZ2xlU2VsZWN0TW9kZVwiO1xuICAgIC8vIERQSV9Jc1NpbmdsZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTaW5nbGVTZWxlY3Rpb25cIl0gPSBcImlzU2luZ2xlU2VsZWN0aW9uXCI7XG4gICAgLy8gRFBJX0lzU29ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NvcnRlZFwiXSA9IFwiaXNTb3J0ZWRcIjtcbiAgICAvLyBEUElfSXNTb3J0UGlsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTb3J0UGlsbFwiXSA9IFwiaXNTb3J0UGlsbFwiO1xuICAgIC8vIERQSV9Jc1NwZWNpYWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU3BlY2lhbFwiXSA9IFwiaXNTcGVjaWFsXCI7XG4gICAgLy8gRFBJX0lzU3BsYXNoU2NyZWVuLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NwbGFzaFNjcmVlblwiXSA9IFwiaXNTcGxhc2hTY3JlZW5cIjtcbiAgICAvLyBEUElfSXNTdG9yeUVtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1N0b3J5RW1wdHlcIl0gPSBcImlzU3RvcnlFbXB0eVwiO1xuICAgIC8vIERQSV9Jc1N0cmlrZVRocm91Z2gsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU3RyaWtlVGhyb3VnaFwiXSA9IFwiaXNTdHJpa2VUaHJvdWdoXCI7XG4gICAgLy8gRFBJX0lzVGFibGVDYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1RhYmxlQ2FsY1wiXSA9IFwiaXNUYWJsZUNhbGNcIjtcbiAgICAvLyBEUElfSXNUYWJsZUNsZWFuaW5nU3VidGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVGFibGVDbGVhbmluZ1N1YnRhYmxlXCJdID0gXCJpc1RhYmxlQ2xlYW5pbmdTdWJ0YWJsZVwiO1xuICAgIC8vIERQSV9Jc1RhYmxlRmlsdGVySW5jbHVzaXZlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1RhYmxlRmlsdGVySW5jbHVzaXZlXCJdID0gXCJpc1RhYmxlRmlsdGVySW5jbHVzaXZlXCI7XG4gICAgLy8gRFBJX0lzVGFibGVSYW5rZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVGFibGVSYW5rZWRcIl0gPSBcImlzVGFibGVSYW5rZWRcIjtcbiAgICAvLyBEUElfSXNUZW1wb3JhcnksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVGVtcG9yYXJ5XCJdID0gXCJpc1RlbXBvcmFyeVwiO1xuICAgIC8vIERQSV9Jc1RpdGxlVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNUaXRsZVZpc2libGVcIl0gPSBcImlzVGl0bGVWaXNpYmxlXCI7XG4gICAgLy8gRFBJX0lzVG9wTGV2ZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVG9wTGV2ZWxcIl0gPSBcImlzVG9wTGV2ZWxcIjtcbiAgICAvLyBEUElfSXNUd29WYWx1ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVHdvVmFsdWVkXCJdID0gXCJpc1R3b1ZhbHVlZFwiO1xuICAgIC8vIERQSV9Jc1R5cGVJbkZpbmlzaGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1R5cGVJbkZpbmlzaGVkXCJdID0gXCJpc1R5cGVpbkZpbmlzaGVkXCI7XG4gICAgLy8gRFBJX0lzVHlwZUluUGlsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNUeXBlSW5QaWxsXCJdID0gXCJpc1R5cGVJblBpbGxcIjtcbiAgICAvLyBEUElfSXNVUkxBY3Rpb25GaWVsZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNVUkxBY3Rpb25GaWVsZFwiXSA9IFwiaXNVcmxBY3Rpb25GaWVsZFwiO1xuICAgIC8vIERQSV9Jc1VuZGVybGluZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVW5kZXJsaW5lZFwiXSA9IFwiaXNVbmRlcmxpbmVkXCI7XG4gICAgLy8gRFBJX0lzVW5pb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVW5pb25cIl0gPSBcImlzVW5pb25cIjtcbiAgICAvLyBEUElfSXNVbmlvblJlcGxhY2VtZW50LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1VuaW9uUmVwbGFjZW1lbnRcIl0gPSBcImlzVW5pb25SZXBsYWNlbWVudFwiO1xuICAgIC8vIERQSV9Jc1VubmFtZWRDYWxjLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1VubmFtZWRDYWxjXCJdID0gXCJpc1VubmFtZWRcIjtcbiAgICAvLyBEUElfSXNVc2VyRGVmaW5lZEF0dHJpYnV0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNVc2VyRGVmaW5lZEF0dHJpYnV0ZVwiXSA9IFwiaXNVc2VyRGVmaW5lZEF0dHJpYnV0ZVwiO1xuICAgIC8vIERQSV9Jc1VzZXJFZGl0YWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNVc2VyRWRpdGFibGVcIl0gPSBcImlzVXNlckVkaXRhYmxlXCI7XG4gICAgLy8gRFBJX0lzVXNlclByb21wdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1VzZXJQcm9tcHRlZFwiXSA9IFwiaXNVc2VyUHJvbXB0ZWRcIjtcbiAgICAvLyBEUElfSXNVc2VyUmVzcG9uZGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1VzZXJSZXNwb25kZWRcIl0gPSBcImlzVXNlclJlc3BvbmRlZFwiO1xuICAgIC8vIERQSV9Jc1ZhbGlkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1ZhbGlkXCJdID0gXCJpc1ZhbGlkXCI7XG4gICAgLy8gRFBJX0lzVmFsaWRXRENQYWdlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1ZhbGlkV0RDUGFnZVwiXSA9IFwiaXNWYWxpZFdkY1BhZ2VcIjtcbiAgICAvLyBEUElfSXNWYXJ5aW5nQXR0cmlidXRlRGltZW5zaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1ZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25cIl0gPSBcImlzVmFyeWluZ0F0dHJpYnV0ZURpbWVuc2lvblwiO1xuICAgIC8vIERQSV9Jc1ZlcnRpY2FsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1ZlcnRpY2FsXCJdID0gXCJpc1ZlcnRpY2FsXCI7XG4gICAgLy8gRFBJX0lzVmlld01vZGlmaWVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1ZpZXdNb2RpZmllZFwiXSA9IFwiaXNWaWV3TW9kaWZpZWRcIjtcbiAgICAvLyBEUElfSXNWaXN1YWxseUNhdGVnb3JpY2FsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1Zpc3VhbGx5Q2F0ZWdvcmljYWxcIl0gPSBcImlzVmlzdWFsbHlDYXRcIjtcbiAgICAvLyBEUElfSXNWaXpJblRvb2x0aXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVml6SW5Ub29sdGlwXCJdID0gXCJpc1ZpekluVG9vbHRpcFwiO1xuICAgIC8vIERQSV9Jc1dlYiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNXZWJcIl0gPSBcImlzV2ViXCI7XG4gICAgLy8gRFBJX0lzV2hpdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzV2hpdGVcIl0gPSBcImlzV2hpdGVcIjtcbiAgICAvLyBEUElfSXNXb3JsZE5ldywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNXb3JsZE5ld1wiXSA9IFwiaXNXb3JsZE5ld1wiO1xuICAgIC8vIERQSV9Jc1hBeGlzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1hBeGlzXCJdID0gXCJpc1hBeGlzXCI7XG4gICAgLy8gRFBJX0tlZXBBc3BlY3RSYXRpbywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiS2VlcEFzcGVjdFJhdGlvXCJdID0gXCJrZWVwQXNwZWN0UmF0aW9cIjtcbiAgICAvLyBEUElfTGFiZWxMaW5lRW5kRmlyc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkxhYmVsTGluZUVuZEZpcnN0XCJdID0gXCJsYWJlbExpbmVFbmRGaXJzdFwiO1xuICAgIC8vIERQSV9MYWJlbExpbmVFbmRMYXN0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJMYWJlbExpbmVFbmRMYXN0XCJdID0gXCJsYWJlbExpbmVFbmRMYXN0XCI7XG4gICAgLy8gRFBJX0xhYmVsTWFya01heCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTGFiZWxNYXJrTWF4XCJdID0gXCJsYWJlbE1hcmtNYXhcIjtcbiAgICAvLyBEUElfTGFiZWxNYXJrTWluLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJMYWJlbE1hcmtNaW5cIl0gPSBcImxhYmVsTWFya01pblwiO1xuICAgIC8vIERQSV9Mb2NrQXNwZWN0UmF0aW8sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkxvY2tBc3BlY3RSYXRpb1wiXSA9IFwibG9ja0FzcGVjdFJhdGlvXCI7XG4gICAgLy8gRFBJX0xvb3BQbGF5YmFjaywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTG9vcFBsYXliYWNrXCJdID0gXCJsb29wUGxheWJhY2tcIjtcbiAgICAvLyBEUElfTG9zc3lJbWFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkxvc3N5SW1hZ2VzXCJdID0gXCJsb3NzeUltYWdlc1wiO1xuICAgIC8vIERQSV9NYWtlR2xvYmFsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJNYWtlR2xvYmFsXCJdID0gXCJpc01ha2VHbG9iYWxcIjtcbiAgICAvLyBEUElfTWFudWFsU29ydE9ubHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk1hbnVhbFNvcnRPbmx5XCJdID0gXCJtYW51YWxTb3J0T25seVwiO1xuICAgIC8vIERQSV9NYXBCb3hEZWZhdWx0U3R5bGVTZWxlY3RlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTWFwQm94RGVmYXVsdFN0eWxlU2VsZWN0ZWRcIl0gPSBcIm1hcGJveERlZmF1bHRTdHlsZVNlbGVjdGVkXCI7XG4gICAgLy8gRFBJX01hcEJveFVSTFBhcnNlU3VjY2Vzc2Z1bCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTWFwQm94VVJMUGFyc2VTdWNjZXNzZnVsXCJdID0gXCJtYXBib3hVcmxQYXJzZVN1Y2Nlc3NmdWxcIjtcbiAgICAvLyBEUElfTWFwQ2xpZW50UmVxdWVzdHNNYXBUaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTWFwQ2xpZW50UmVxdWVzdHNNYXBUaWxlc1wiXSA9IFwiY2xpZW50UmVxdWVzdHNNYXBUaWxlc1wiO1xuICAgIC8vIERQSV9NYXBIYXNWYWxpZExheWVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJNYXBIYXNWYWxpZExheWVyXCJdID0gXCJtYXBIYXNWYWxpZExheWVyXCI7XG4gICAgLy8gRFBJX01hcFNob3dBdHRyaWJ1dGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTWFwU2hvd0F0dHJpYnV0aW9uXCJdID0gXCJzaG93QXR0cmlidXRpb25cIjtcbiAgICAvLyBEUElfTWFya0xhYmVsc1Zpc2liaWxpdHlDaGFuZ2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrTGFiZWxzVmlzaWJpbGl0eUNoYW5nZWRcIl0gPSBcIm1hcmtMYWJlbHNWaXNpYmlsaXR5Q2hhbmdlZFwiO1xuICAgIC8vIERQSV9NZW1iZXJzTG9hZGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJNZW1iZXJzTG9hZGVkXCJdID0gXCJtZW1iZXJzTG9hZGVkXCI7XG4gICAgLy8gRFBJX01pbmltaXplTmFtZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbmltaXplTmFtZXNcIl0gPSBcInVzZU1pbk5hbWVzXCI7XG4gICAgLy8gRFBJX01vdmVSZWZlcmVjZUxpbmVVcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTW92ZVJlZmVyZWNlTGluZVVwXCJdID0gXCJtb3ZlUmVmZXJlbmNlTGluZVVwXCI7XG4gICAgLy8gRFBJX011bHRpRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk11bHRpRGF0YVNvdXJjZXNcIl0gPSBcIm11bHRpRGF0YVNvdXJjZXNcIjtcbiAgICAvLyBEUElfTmF2QXJyb3dzVmlzaWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTmF2QXJyb3dzVmlzaWJsZVwiXSA9IFwibmF2QXJyb3dzVmlzaWJsZVwiO1xuICAgIC8vIERQSV9PRU1IYXNTcGxhc2hTY3JlZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk9FTUhhc1NwbGFzaFNjcmVlblwiXSA9IFwib2VtSGFzU3BsYXNoU2NyZWVuXCI7XG4gICAgLy8gRFBJX09uZVdheUJydXNoaW5nLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJPbmVXYXlCcnVzaGluZ1wiXSA9IFwib25lV2F5QnJ1c2hpbmdcIjtcbiAgICAvLyBEUElfT25seUFnZ3JlZ2F0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiT25seUFnZ3JlZ2F0aW9uc1wiXSA9IFwib25seUFnZ3JlZ2F0aW9uc1wiO1xuICAgIC8vIERQSV9PdmVycmlkZUFsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk92ZXJyaWRlQWxsb3dlZFwiXSA9IFwib3ZlcnJpZGVBbGxvd2VkXCI7XG4gICAgLy8gRFBJX092ZXJyaWRlU3RhY2tEdW1wZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk92ZXJyaWRlU3RhY2tEdW1wZXJcIl0gPSBcIm92ZXJyaWRlU3RhY2tEdW1wZXJcIjtcbiAgICAvLyBEUElfUGFnZUF1dG9Db2xvckxpbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlQXV0b0NvbG9yTGluZXNcIl0gPSBcImF1dG9Db2xvckxpbmVzXCI7XG4gICAgLy8gRFBJX1BhZ2VBdXRvQ29sb3JNYXJrcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZUF1dG9Db2xvck1hcmtzXCJdID0gXCJhdXRvQ29sb3JNYXJrc1wiO1xuICAgIC8vIERQSV9QYWdlSGlzdG9yeUZhZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VIaXN0b3J5RmFkZVwiXSA9IFwiaGlzdG9yeUZhZGVcIjtcbiAgICAvLyBEUElfUGVyY2VudGFnZUJhbmRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJQZXJjZW50YWdlQmFuZHNcIl0gPSBcInBlcmNlbnRhZ2VCYW5kc1wiO1xuICAgIC8vIERQSV9QZXJjZW50aWxlc0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlBlcmNlbnRpbGVzQWxsb3dlZFwiXSA9IFwicGVyY2VudGlsZXNBbGxvd2VkXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hXaXRoUmVtb3RlUXVlcnlBZ2VudCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaFdpdGhSZW1vdGVRdWVyeUFnZW50XCJdID0gXCJwdWJsaXNoV2l0aFJlbW90ZVF1ZXJ5QWdlbnRcIjtcbiAgICAvLyBEUElfUHJldmlvdXNTaGVldCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUHJldmlvdXNTaGVldFwiXSA9IFwicHJldmlvdXNTaGVldFwiO1xuICAgIC8vIERQSV9Qcm9tcHREZWxldGVTaGVldHNXaXRoVml6SW5Ub29sdGlwLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJQcm9tcHREZWxldGVTaGVldHNXaXRoVml6SW5Ub29sdGlwXCJdID0gXCJwcm9tcHREZWxldGVTaGVldHNXaXRoVml6SW5Ub29sdGlwXCI7XG4gICAgLy8gRFBJX1F1YW50aWxlc0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50aWxlc0FsbG93ZWRcIl0gPSBcInF1YW50aWxlc0FsbG93ZWRcIjtcbiAgICAvLyBEUElfUmFkaWFsRGlzdGFuY2VIaXRUZXN0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJSYWRpYWxEaXN0YW5jZUhpdFRlc3RcIl0gPSBcInJhZGlhbERpc3RhbmNlSGl0VGVzdFwiO1xuICAgIC8vIERQSV9SZWZMaW5lU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZkxpbmVTZWxlY3RlZFwiXSA9IFwicmVmTGluZVNlbGVjdGVkXCI7XG4gICAgLy8gRFBJX1JlbW92ZWRTaGVldHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlJlbW92ZWRTaGVldHNcIl0gPSBcInJlbW92ZWRTaGVldHNcIjtcbiAgICAvLyBEUElfUmVuZGVySW1hZ2VzQXNVcmxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJSZW5kZXJJbWFnZXNBc1VybHNcIl0gPSBcImltYWdlc0FzVXJsc1wiO1xuICAgIC8vIERQSV9SZW5kZXJPblRvcCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVuZGVyT25Ub3BcIl0gPSBcInJlbmRlck9uVG9wXCI7XG4gICAgLy8gRFBJX1JlcGVhdEhlYWRlcnNMZWdlbmRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJSZXBlYXRIZWFkZXJzTGVnZW5kc1wiXSA9IFwicmVwZWF0SGVhZGVyc0xlZ2VuZHNcIjtcbiAgICAvLyBEUElfUmVwbGFjZUFjdGl2ZUNvbmZpZywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVwbGFjZUFjdGl2ZUNvbmZpZ1wiXSA9IFwicmVwbGFjZUFjdGl2ZUNvbmZpZ1wiO1xuICAgIC8vIERQSV9SZXBsYWNlRGF0YXNvdXJjZUFmdGVyUHVibGlzaCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVwbGFjZURhdGFzb3VyY2VBZnRlclB1Ymxpc2hcIl0gPSBcInJlcGxhY2VEYXRhc291cmNlQWZ0ZXJQdWJsaXNoXCI7XG4gICAgLy8gRFBJX1JlcGxhY2VEYXRhc291cmNlRmFpbGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJSZXBsYWNlRGF0YXNvdXJjZUZhaWxlZFwiXSA9IFwicmVwbGFjZURhdGFzb3VyY2VGYWlsZWRcIjtcbiAgICAvLyBEUElfUmVwbGFjZVRkZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVwbGFjZVRkZVwiXSA9IFwicmVwbGFjZVRkZVwiO1xuICAgIC8vIERQSV9SZXF1aXJlU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJSZXF1aXJlU2VsZWN0aW9uXCJdID0gXCJyZXF1aXJlU2VsZWN0aW9uXCI7XG4gICAgLy8gRFBJX1JlcXVpcmVzREJWYXJpYWJsZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlJlcXVpcmVzREJWYXJpYWJsZXNcIl0gPSBcInJlcXVpcmVzRGJWYXJpYWJsZXNcIjtcbiAgICAvLyBEUElfUmVxdWlyZXNGaWVsZExpc3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlJlcXVpcmVzRmllbGRMaXN0XCJdID0gXCJyZXF1aXJlc0ZpZWxkTGlzdFwiO1xuICAgIC8vIERQSV9SZXN0YXJ0RXZlcnlGaWVsZElzSW52YWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVzdGFydEV2ZXJ5RmllbGRJc0ludmFsaWRcIl0gPSBcInJlc3RhcnRFdmVyeUZpZWxkSXNJbnZhbGlkXCI7XG4gICAgLy8gRFBJX1JpZ2h0SnVzdGlmeSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmlnaHRKdXN0aWZ5XCJdID0gXCJyaWdodEp1c3RpZnlcIjtcbiAgICAvLyBEUElfU2F2ZUVuYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNhdmVFbmFibGVkXCJdID0gXCJzYXZlRW5hYmxlZFwiO1xuICAgIC8vIERQSV9TYXZlUGFzc3dvcmRBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTYXZlUGFzc3dvcmRBbGxvd2VkXCJdID0gXCJzYXZlUGFzc3dvcmRBbGxvd2VkXCI7XG4gICAgLy8gRFBJX1Njb3BlSXNvbGF0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTY29wZUlzb2xhdGlvblwiXSA9IFwic2NvcGVJc29sYXRpb25cIjtcbiAgICAvLyBEUElfU2VsZWN0aW9uUmVxdWlyZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGlvblJlcXVpcmVkXCJdID0gXCJzZWxlY3Rpb25SZXF1aXJlZFwiO1xuICAgIC8vIERQSV9TZW5kTm90aWZpY2F0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2VuZE5vdGlmaWNhdGlvbnNcIl0gPSBcInNlbmROb3RpZmljYXRpb25zXCI7XG4gICAgLy8gRFBJX1NldEFjdGl2ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2V0QWN0aXZlXCJdID0gXCJzZXRBY3RpdmVcIjtcbiAgICAvLyBEUElfU2V0RGVmYXVsdFNvcnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNldERlZmF1bHRTb3J0XCJdID0gXCJzZXREZWZhdWx0XCI7XG4gICAgLy8gRFBJX1NoZWV0SXNEYXNoYm9hcmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0SXNEYXNoYm9hcmRcIl0gPSBcImlzRGFzaGJvYXJkXCI7XG4gICAgLy8gRFBJX1NoZWV0SXNTdG9yeWJvYXJkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldElzU3Rvcnlib2FyZFwiXSA9IFwiaXNTdG9yeVwiO1xuICAgIC8vIERQSV9TaG91bGRBbHdheXNEaXNwbGF5QWxpYXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZEFsd2F5c0Rpc3BsYXlBbGlhc1wiXSA9IFwic2hvdWxkQWx3YXlzRGlzcGxheUFsaWFzXCI7XG4gICAgLy8gRFBJX1Nob3VsZEF1dG9DYXB0dXJlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRBdXRvQ2FwdHVyZVwiXSA9IFwic2hvdWxkQXV0b0NhcHR1cmVcIjtcbiAgICAvLyBEUElfU2hvdWxkQXV0b1JldmVydCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvdWxkQXV0b1JldmVydFwiXSA9IFwic2hvdWxkQXV0b1JldmVydFwiO1xuICAgIC8vIERQSV9TaG91bGRDaGFuZ2VVSU1vZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZENoYW5nZVVJTW9kZVwiXSA9IFwic2hvdWxkQ2hhbmdlVWlNb2RlXCI7XG4gICAgLy8gRFBJX1Nob3VsZERpc3BsYXksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZERpc3BsYXlcIl0gPSBcInNob3VsZERpc3BsYXlcIjtcbiAgICAvLyBEUElfU2hvdWxkRHJpbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZERyaWxsXCJdID0gXCJzaG91bGREcmlsbFwiO1xuICAgIC8vIERQSV9TaG91bGRGb3JjZUNvbm5lY3Rpb25BdHRlbXB0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRGb3JjZUNvbm5lY3Rpb25BdHRlbXB0XCJdID0gXCJzaG91bGRGb3JjZUNvbm5lY3Rpb25BdHRlbXB0XCI7XG4gICAgLy8gRFBJX1Nob3VsZFJlZnJlc2hEUywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvdWxkUmVmcmVzaERTXCJdID0gXCJzaG91bGRSZWZyZXNoRHNcIjtcbiAgICAvLyBEUElfU2hvdWxkU2NhbGVNYXJrc0luQXhpc1VuaXRzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRTY2FsZU1hcmtzSW5BeGlzVW5pdHNcIl0gPSBcInNob3VsZFNjYWxlTWFya3NJbkF4aXNVbml0c1wiO1xuICAgIC8vIERQSV9TaG91bGRTZWVkQ3JlZGVudGlhbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZFNlZWRDcmVkZW50aWFsc1wiXSA9IFwic2hvdWxkU2VlZENyZWRlbnRpYWxzXCI7XG4gICAgLy8gRFBJX1Nob3VsZFNob3dEYXRhU291cmNlQ29ubmVjdGlvbkVycm9yLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRTaG93RGF0YVNvdXJjZUNvbm5lY3Rpb25FcnJvclwiXSA9IFwic2hvdWxkU2hvd0RhdGFTb3VyY2VDb25uZWN0aW9uRXJyb3JcIjtcbiAgICAvLyBEUElfU2hvdWxkU2hvd0Rpc3RhbmNlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRTaG93RGlzdGFuY2VcIl0gPSBcInNob3VsZFNob3dEaXN0YW5jZVwiO1xuICAgIC8vIERQSV9TaG91bGRTaG93SGlkZGVuRmllbGQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZFNob3dIaWRkZW5GaWVsZFwiXSA9IFwic2hvdWxkU2hvd0hpZGRlbkZpZWxkXCI7XG4gICAgLy8gRFBJX1Nob3VsZFNob3dNYXBTY2FsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvdWxkU2hvd01hcFNjYWxlXCJdID0gXCJzaG91bGRTaG93TWFwU2NhbGVcIjtcbiAgICAvLyBEUElfU2hvdWxkVVJMRXNjYXBlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRVUkxFc2NhcGVcIl0gPSBcInNob3VsZFVybEVzY2FwZVwiO1xuICAgIC8vIERQSV9TaG91bGRVcGRhdGVEb21haW5JbmZvLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRVcGRhdGVEb21haW5JbmZvXCJdID0gXCJzaG91bGRVcGRhdGVEb21JbmZvXCI7XG4gICAgLy8gRFBJX1Nob3dBZGRUb0ZpbHRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0FkZFRvRmlsdGVyXCJdID0gXCJzaG93QWRkVG9GaWx0ZXJCdXR0b25cIjtcbiAgICAvLyBEUElfU2hvd0FsaWFzZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dBbGlhc2VzXCJdID0gXCJzaG93QWxpYXNlc1wiO1xuICAgIC8vIERQSV9TaG93QWxsUGFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dBbGxQYWdlc1wiXSA9IFwic2hvd0FsbFBhZ2VzXCI7XG4gICAgLy8gRFBJX1Nob3dBcHBseSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0FwcGx5XCJdID0gXCJzaG93QXBwbHlCdXR0b25cIjtcbiAgICAvLyBEUElfU2hvd0FwcGx5QW5kQ2FuY2VsQnV0dG9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0FwcGx5QW5kQ2FuY2VsQnV0dG9uc1wiXSA9IFwic2hvd0FwcGx5QW5kQ2FuY2VsQnV0dG9uc1wiO1xuICAgIC8vIERQSV9TaG93QXV0aGVudGljYXRpb25PcHRpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93QXV0aGVudGljYXRpb25PcHRpb25zXCJdID0gXCJzaG93QXV0aGVudGljYXRpb25PcHRpb25zXCI7XG4gICAgLy8gRFBJX1Nob3dBdXRoZW50aWNhdGlvblNldHRpbmcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dBdXRoZW50aWNhdGlvblNldHRpbmdcIl0gPSBcInNob3dBdXRoZW50aWNhdGlvblNldHRpbmdcIjtcbiAgICAvLyBEUElfU2hvd0F1dG8sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dBdXRvXCJdID0gXCJzaG93QXV0b1wiO1xuICAgIC8vIERQSV9TaG93Qm9sZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0JvbGRcIl0gPSBcInNob3dCb2xkT3B0aW9uXCI7XG4gICAgLy8gRFBJX1Nob3dCdXR0b25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93QnV0dG9uc1wiXSA9IFwic2hvd0J1dHRvbnNcIjtcbiAgICAvLyBEUElfU2hvd0NhcHRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dDYXB0aW9uXCJdID0gXCJzaG93Q2FwdGlvblwiO1xuICAgIC8vIERQSV9TaG93Q29sb3JMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dDb2xvckxlZ2VuZFwiXSA9IFwic2hvd0NvbG9yTGVnZW5kXCI7XG4gICAgLy8gRFBJX1Nob3dEYXRhR3JpZElubGluZVJlbmFtZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0RhdGFHcmlkSW5saW5lUmVuYW1lXCJdID0gXCJzaG93RGF0YUdyaWRJbmxpbmVSZW5hbWVcIjtcbiAgICAvLyBEUElfU2hvd0RldGFpbE1lc3NhZ2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93RGV0YWlsTWVzc2FnZXNcIl0gPSBcInNob3dEZXRhaWxNZXNzYWdlc1wiO1xuICAgIC8vIERQSV9TaG93RGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0RhdGVcIl0gPSBcInNob3dEYXRlXCI7XG4gICAgLy8gRFBJX1Nob3dEcmFnTGFiZWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dEcmFnTGFiZWxcIl0gPSBcInNob3dEcmFnTGFiZWxcIjtcbiAgICAvLyBEUElfU2hvd0Ryb3BNZWFzdXJlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0Ryb3BNZWFzdXJlc1wiXSA9IFwic2hvd0Ryb3BNZWFzdXJlc1wiO1xuICAgIC8vIERQSV9TaG93RW1iZWRBbGwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dFbWJlZEFsbFwiXSA9IFwic2hvd0VtYmVkQWxsXCI7XG4gICAgLy8gRFBJX1Nob3dFbnRpcmVJbWFnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0VudGlyZUltYWdlXCJdID0gXCJzaG93RW50aXJlSW1hZ2VcIjtcbiAgICAvLyBEUElfU2hvd0V4Y2x1ZGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dFeGNsdWRlXCJdID0gXCJzaG93RXhjbHVkZUJ1dHRvblwiO1xuICAgIC8vIERQSV9TaG93RmxvYXRpbmdab29tVG9vbGJhciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0Zsb2F0aW5nWm9vbVRvb2xiYXJcIl0gPSBcInNob3dGbG9hdGluZ1pvb21Ub29sYmFyXCI7XG4gICAgLy8gRFBJX1Nob3dGb3JtYXR0ZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dGb3JtYXR0ZXJcIl0gPSBcInNob3dGb3JtYXR0ZXJcIjtcbiAgICAvLyBEUElfU2hvd0Z1bGxTY2hlZHVsZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dGdWxsU2NoZWR1bGVzXCJdID0gXCJzaG93RnVsbFNjaGVkdWxlc1wiO1xuICAgIC8vIERQSV9TaG93R2VvZ3JhcGhpY1NlYXJjaCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0dlb2dyYXBoaWNTZWFyY2hcIl0gPSBcInNob3dHZW9ncmFwaGljU2VhcmNoXCI7XG4gICAgLy8gRFBJX1Nob3dIaWRkZW5GaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dIaWRkZW5GaWVsZHNcIl0gPSBcInNob3dIaWRkZW5GaWVsZHNcIjtcbiAgICAvLyBEUElfU2hvd0hpc3RvcnlDb250cm9scywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0hpc3RvcnlDb250cm9sc1wiXSA9IFwic2hvd0hpc3RvcnlDb250cm9sc1wiO1xuICAgIC8vIERQSV9TaG93SW5jbHVkZUxvY2FsRmlsZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dJbmNsdWRlTG9jYWxGaWxlc1wiXSA9IFwic2hvd0luY2x1ZGVMb2NhbEZpbGVzXCI7XG4gICAgLy8gRFBJX1Nob3dJbmNsdWRlT3RoZXJPcHRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dJbmNsdWRlT3RoZXJPcHRpb25cIl0gPSBcInNob3dJbmNsdWRlT3RoZXJPcHRpb25cIjtcbiAgICAvLyBEUElfU2hvd0luY2x1ZGVTZWxlY3Rpb25zLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93SW5jbHVkZVNlbGVjdGlvbnNcIl0gPSBcInNob3dJbmNsdWRlU2VsZWN0aW9uc1wiO1xuICAgIC8vIERQSV9TaG93SW5jclNjaGVkdWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0luY3JTY2hlZHVsZXNcIl0gPSBcInNob3dJbmNyU2NoZWR1bGVzXCI7XG4gICAgLy8gRFBJX1Nob3dJbm5lck1vc3RMZXZlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0lubmVyTW9zdExldmVsXCJdID0gXCJzaG93SW5uZXJtb3N0TGV2ZWxcIjtcbiAgICAvLyBEUElfU2hvd0l0YWxpY3MsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dJdGFsaWNzXCJdID0gXCJzaG93SXRhbGljc09wdGlvblwiO1xuICAgIC8vIERQSV9TaG93TGVnZW5kLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TGVnZW5kXCJdID0gXCJzaG93TGVnZW5kXCI7XG4gICAgLy8gRFBJX1Nob3dMb2NrZWRQZXJtaXNzaW9uc0ljb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dMb2NrZWRQZXJtaXNzaW9uc0ljb25cIl0gPSBcInNob3dMb2NrZWRQZXJtaXNzaW9uc0ljb25cIjtcbiAgICAvLyBEUElfU2hvd01hbmFnZURhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TWFuYWdlRGF0YXNvdXJjZXNcIl0gPSBcInNob3dNYW5hZ2VEYXRhc291cmNlc1wiO1xuICAgIC8vIERQSV9TaG93TWFwTGVnZW5kLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TWFwTGVnZW5kXCJdID0gXCJzaG93TWFwTGVnZW5kXCI7XG4gICAgLy8gRFBJX1Nob3dNYXBTY2FsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd01hcFNjYWxlXCJdID0gXCJzaG93TWFwU2NhbGVcIjtcbiAgICAvLyBEUElfU2hvd01hcHBlZEZpbHRlckNvbHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dNYXBwZWRGaWx0ZXJDb2xzXCJdID0gXCJzaG93TWFwcGVkRmlsdGVyQ29sdW1uc1wiO1xuICAgIC8vIERQSV9TaG93TmFtZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd05hbWVcIl0gPSBcInNob3dOYW1lXCI7XG4gICAgLy8gRFBJX1Nob3dOb25lLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93Tm9uZVwiXSA9IFwic2hvd05vbmVcIjtcbiAgICAvLyBEUElfU2hvd1BhZ2VQbGF5YmFjaywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1BhZ2VQbGF5YmFja1wiXSA9IFwic2hvd1BhZ2VQbGF5YmFja1wiO1xuICAgIC8vIERQSV9TaG93UGFnZVJlYWRvdXQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dQYWdlUmVhZG91dFwiXSA9IFwic2hvd1BhZ2VSZWFkb3V0XCI7XG4gICAgLy8gRFBJX1Nob3dQYWdlU2xpZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93UGFnZVNsaWRlclwiXSA9IFwic2hvd1BhZ2VTbGlkZXJcIjtcbiAgICAvLyBEUElfU2hvd1BhcmVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1BhcmVudFwiXSA9IFwic2hvd1BhcmVudFwiO1xuICAgIC8vIERQSV9TaG93UGVyY2VudGFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dQZXJjZW50YWdlc1wiXSA9IFwic2hvd1BlcmNlbnRhZ2VzXCI7XG4gICAgLy8gRFBJX1Nob3dQcmVkaWN0aW9uSW50ZXJ2YWxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93UHJlZGljdGlvbkludGVydmFsc1wiXSA9IFwic2hvd1ByZWRpY3Rpb25JbnRlcnZhbHNcIjtcbiAgICAvLyBEUElfU2hvd1B1Ymxpc2hlZERhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93UHVibGlzaGVkRGF0YXNvdXJjZXNcIl0gPSBcInNob3dQdWJsaXNoZWREYXRhc291cmNlc1wiO1xuICAgIC8vIERQSV9TaG93UmVsRGF0ZVBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1JlbERhdGVQaWNrZXJcIl0gPSBcInNob3dSZWxEYXRlUGlja2VyXCI7XG4gICAgLy8gRFBJX1Nob3dSZXBsYWNlRGF0YXNvdXJjZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1JlcGxhY2VEYXRhc291cmNlXCJdID0gXCJzaG93UmVwbGFjZURhdGFzb3VyY2VcIjtcbiAgICAvLyBEUElfU2hvd1NlcGFyYXRvciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1NlcGFyYXRvclwiXSA9IFwic2hvd1NlcGFyYXRvclwiO1xuICAgIC8vIERQSV9TaG93U2hhcGVMZWdlbmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dTaGFwZUxlZ2VuZFwiXSA9IFwic2hvd1NoYXBlTGVnZW5kXCI7XG4gICAgLy8gRFBJX1Nob3dTaXplTGVnZW5kLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93U2l6ZUxlZ2VuZFwiXSA9IFwic2hvd1NpemVMZWdlbmRcIjtcbiAgICAvLyBEUElfU2hvd1NoZWxmLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93U2hlbGZcIl0gPSBcInNob3dTaGVsZlwiO1xuICAgIC8vIERQSV9TaG93U3RydWN0dXJlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93U3RydWN0dXJlXCJdID0gXCJzaG93U3RydWN0dXJlXCI7XG4gICAgLy8gRFBJX1Nob3dTeW5jQ2xpZW50T3B0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1N5bmNDbGllbnRPcHRpb25zXCJdID0gXCJzaG93U3luY0NsaWVudE9wdGlvbnNcIjtcbiAgICAvLyBEUElfU2hvd1RhYnNBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93VGFic0FsbG93ZWRcIl0gPSBcInNob3dUYWJzQWxsb3dlZFwiO1xuICAgIC8vIERQSV9TaG93VGltZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1RpbWVcIl0gPSBcInNob3dUaW1lXCI7XG4gICAgLy8gRFBJX1Nob3dUaXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1RpdGxlXCJdID0gXCJzaG93VGl0bGVcIjtcbiAgICAvLyBEUElfU2hvd1RyYW5zU2xpZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93VHJhbnNTbGlkZXJcIl0gPSBcInNob3dUcmFuc3BhcmVuY3lTbGlkZXJcIjtcbiAgICAvLyBEUElfU2hvd1VuZGVybGluZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1VuZGVybGluZVwiXSA9IFwic2hvd1VuZGVybGluZU9wdGlvblwiO1xuICAgIC8vIERQSV9TaG93VXNlclRodW1ibmFpbE9wdGlvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dVc2VyVGh1bWJuYWlsT3B0aW9uc1wiXSA9IFwic2hvd1VzZXJUaHVtYm5haWxPcHRpb25zXCI7XG4gICAgLy8gRFBJX1Nob3dWaWV3LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93Vmlld1wiXSA9IFwic2hvd1ZpZXdcIjtcbiAgICAvLyBEUElfU2hvd1ZpZXdzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93Vmlld3NcIl0gPSBcInNob3dWaWV3c1wiO1xuICAgIC8vIERQSV9TaG93aW5nUGFnZUxvYWRFcnJvciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd2luZ1BhZ2VMb2FkRXJyb3JcIl0gPSBcInNob3dpbmdQYWdlTG9hZEVycm9yXCI7XG4gICAgLy8gRFBJX1N1cHJlc3NBbGlhc2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXByZXNzQWxpYXNlc1wiXSA9IFwic3VzcHJlc3NBbGlhc2VzXCI7XG4gICAgLy8gRFBJX1N1cHJlc3NUaG91c2FuZHNTZXBhcmF0b3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN1cHJlc3NUaG91c2FuZHNTZXBhcmF0b3JcIl0gPSBcInN1cHJlc3NUaG91c2FuZHNTZXBhcmF0b3JcIjtcbiAgICAvLyBEUElfU2luZ2xlU2VsZWN0T25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2luZ2xlU2VsZWN0T25seVwiXSA9IFwic2luZ2xlU2VsZWN0T25seVwiO1xuICAgIC8vIERQSV9Ta2lwSWZBY3RpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNraXBJZkFjdGl2ZVwiXSA9IFwic2tpcElmQWN0aXZlXCI7XG4gICAgLy8gRFBJX1NraXBSZWZyZXNoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTa2lwUmVmcmVzaFwiXSA9IFwic2tpcFJlZnJlc2hcIjtcbiAgICAvLyBEUElfU2tpcFZhbGlkYXRpb24sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNraXBWYWxpZGF0aW9uXCJdID0gXCJza2lwVmFsaWRhdGlvblwiO1xuICAgIC8vIERQSV9Ta2lwcGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTa2lwcGVkXCJdID0gXCJza2lwcGVkXCI7XG4gICAgLy8gRFBJX1NvcnRGaWVsZElzSW52YWxpZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU29ydEZpZWxkSXNJbnZhbGlkXCJdID0gXCJzb3J0RmllbGRJc0ludmFsaWRcIjtcbiAgICAvLyBEUElfU29ydE1vZGVJc0F1dG8sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRNb2RlSXNBdXRvXCJdID0gXCJzb3J0TW9kZUlzQXV0b1wiO1xuICAgIC8vIERQSV9TcGxpdE9uRWRnZVNuYXAsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNwbGl0T25FZGdlU25hcFwiXSA9IFwic3BsaXRPbkVkZ2VTbmFwXCI7XG4gICAgLy8gRFBJX1N0YW5kYXJkRGV2aWF0aW9uQWxsb3dlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU3RhbmRhcmREZXZpYXRpb25BbGxvd2VkXCJdID0gXCJzdGFuZGFyZERldmlhdGlvbkFsbG93ZWRcIjtcbiAgICAvLyBEUElfU3RhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN0YXRlXCJdID0gXCJzdGF0ZVwiO1xuICAgIC8vIERQSV9TdG9yZWRQcm9jRGlzYWJsZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3JlZFByb2NEaXNhYmxlZFwiXSA9IFwic3RvcmVkUHJvY0Rpc2FibGVkXCI7XG4gICAgLy8gRFBJX1N0b3JlZFByb2NzRHJvcGFibGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3JlZFByb2NzRHJvcGFibGVcIl0gPSBcInN0b3JlZFByb2NzRHJvcGFibGVcIjtcbiAgICAvLyBEUElfU3RvcnlJc0VtcHR5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeUlzRW1wdHlcIl0gPSBcInN0b3J5SXNFbXB0eVwiO1xuICAgIC8vIERQSV9TdG9yeVBvaW50SXNFbXB0eSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU3RvcnlQb2ludElzRW1wdHlcIl0gPSBcInN0b3J5UG9pbnRJc0VtcHR5XCI7XG4gICAgLy8gRFBJX1N1Y2Nlc3NmdWxTYXZlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdWNjZXNzZnVsU2F2ZVwiXSA9IFwic3VjY2Vzc2Z1bFNhdmVcIjtcbiAgICAvLyBEUElfU3VwcG9ydFhBeGlzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXBwb3J0WEF4aXNcIl0gPSBcInN1cHBvcnRYQXhpc1wiO1xuICAgIC8vIERQSV9TdXBwb3J0WUF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN1cHBvcnRZQXhpc1wiXSA9IFwic3VwcG9ydFlBeGlzXCI7XG4gICAgLy8gRFBJX1N1cHBvcnRzQ2VudGVyQWxpZ25tZW50LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXBwb3J0c0NlbnRlckFsaWdubWVudFwiXSA9IFwic3VwcG9ydHNDZW50ZXJBbGlnbm1lbnRcIjtcbiAgICAvLyBEUElfU3VwcG9ydHNEQkZpbHRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN1cHBvcnRzREJGaWx0ZXJzXCJdID0gXCJzdXBwb3J0c0RhdGFiYXNlRmlsdGVyc1wiO1xuICAgIC8vIERQSV9TdXBwb3J0c011bHRpcGxlVmFsdWVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXBwb3J0c011bHRpcGxlVmFsdWVzXCJdID0gXCJzdXBwb3J0c011bHRpcGxlVmFsdWVzXCI7XG4gICAgLy8gRFBJX1N1cHBvcnRzUmlnaHRBbGlnbm1lbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN1cHBvcnRzUmlnaHRBbGlnbm1lbnRcIl0gPSBcInN1cHBvcnRzUmlnaHRBbGlnbm1lbnRcIjtcbiAgICAvLyBEUElfU3VwcG9ydHNUYWJsZUZpbHRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN1cHBvcnRzVGFibGVGaWx0ZXJzXCJdID0gXCJzdXBwb3J0c1RhYmxlRmlsdGVyc1wiO1xuICAgIC8vIERQSV9TeW1tZXRyaWMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlN5bW1ldHJpY1wiXSA9IFwic3ltbWV0cmljXCI7XG4gICAgLy8gRFBJX1N5bmNBdXRvbWF0aWNEcmlsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU3luY0F1dG9tYXRpY0RyaWxsXCJdID0gXCJzeW5jQXV0b21hdGljRHJpbGxcIjtcbiAgICAvLyBEUElfVGFic0FsbG93ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYnNBbGxvd2VkXCJdID0gXCJ0YWJzQWxsb3dlZFwiO1xuICAgIC8vIERQSV9UZXh0RHJvcGRvd25TdGF0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVGV4dERyb3Bkb3duU3RhdGVcIl0gPSBcInRvZ2dsZVN0YXRlXCI7XG4gICAgLy8gRFBJX1RpdGxlSW5saW5lLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJUaXRsZUlubGluZVwiXSA9IFwidGl0bGVJbmxpbmVcIjtcbiAgICAvLyBEUElfVG9nZ2xlSGlnaGxpZ2h0U3RhdGVDaGFuZ2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJUb2dnbGVIaWdobGlnaHRTdGF0ZUNoYW5nZWRcIl0gPSBcInRvZ2dsZUhpZ2hsaWdodFwiO1xuICAgIC8vIERQSV9UcmFuc2Zvcm1lZDgwRm9ybWF0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc2Zvcm1lZDgwRm9ybWF0XCJdID0gXCJvbGRGb3JtYXRcIjtcbiAgICAvLyBEUElfVHJlbmRMaW5lU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZVNlbGVjdGVkXCJdID0gXCJ0cmVuZExpbmVTZWxlY3RlZFwiO1xuICAgIC8vIERQSV9UcnVuY0RhdGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlRydW5jRGF0ZVwiXSA9IFwidHJ1bmNEYXRlXCI7XG4gICAgLy8gRFBJX1R1cGxlU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlR1cGxlU2VsZWN0ZWRcIl0gPSBcInR1cGxlU2VsZWN0ZWRcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uRGlkUGFnZUxvYWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbkRpZFBhZ2VMb2FkXCJdID0gXCJ1aUF1dG9tYXRpb25EaWRQYWdlTG9hZFwiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25Jc0NoZWNrZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbklzQ2hlY2tlZFwiXSA9IFwidWlBdXRvbWF0aW9uSXNDaGVja2VkXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbklzRW5hYmxlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uSXNFbmFibGVkXCJdID0gXCJ1aUF1dG9tYXRpb25Jc0VuYWJsZWRcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uSXNFdmVudFByb2Nlc3NlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uSXNFdmVudFByb2Nlc3NlZFwiXSA9IFwidWlBdXRvbWF0aW9uSXNFdmVudFByb2Nlc3NlZFwiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25Jc0ZvY3VzZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbklzRm9jdXNlZFwiXSA9IFwidWlBdXRvbWF0aW9uSXNGb2N1c2VkXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbklzRm91bmQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbklzRm91bmRcIl0gPSBcInVpQXV0b21hdGlvbklzRm91bmRcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uSXNSZWFkb25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uSXNSZWFkb25seVwiXSA9IFwidWlBdXRvbWF0aW9uSXNSZWFkb25seVwiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25Jc1NlbGVjdGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25Jc1NlbGVjdGVkXCJdID0gXCJ1aUF1dG9tYXRpb25Jc1NlbGVjdGVkXCI7XG4gICAgLy8gRFBJX1VwZGF0ZUFsbFBhbmVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVcGRhdGVBbGxQYW5lc1wiXSA9IFwidXBkYXRlQWxsUGFuZXNcIjtcbiAgICAvLyBEUElfVXBkYXRlRFNDYXB0aW9uT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXBkYXRlRFNDYXB0aW9uT25seVwiXSA9IFwidXBkYXRlRHNDYXB0aW9uT25seVwiO1xuICAgIC8vIERQSV9VcGRhdGVNb2RlbEZyb21QYXJhbXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZU1vZGVsRnJvbVBhcmFtc1wiXSA9IFwidXBkYXRlTW9kZWxGcm9tUGFyYW1zXCI7XG4gICAgLy8gRFBJX1VwZGF0ZVNoZWx2ZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZVNoZWx2ZXNcIl0gPSBcInVwZGF0ZVNoZWx2ZXNcIjtcbiAgICAvLyBEUElfVXBkYXRlc1VzZUNvbnRleHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZXNVc2VDb250ZXh0XCJdID0gXCJ1cGRhdGVzVXNlQ29udGV4dFwiO1xuICAgIC8vIERQSV9VcGdyYWRlRG9jdW1lbnRWZXJzaW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVcGdyYWRlRG9jdW1lbnRWZXJzaW9uXCJdID0gXCJ1cGdyYWRlRG9jdW1lbnRWZXJzaW9uXCI7XG4gICAgLy8gRFBJX1VzZUFsaWFzZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZUFsaWFzZXNcIl0gPSBcInVzZUFsaWFzZXNcIjtcbiAgICAvLyBEUElfVXNlQmxhbmtGb3JOdWxsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VCbGFua0Zvck51bGxcIl0gPSBcInVzZUJsYW5rRm9yTnVsbFwiO1xuICAgIC8vIERQSV9Vc2VDYWxjdWxhdGlvbkVkaXRvciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlQ2FsY3VsYXRpb25FZGl0b3JcIl0gPSBcInVzZUNhbGN1bGF0aW9uRWRpdG9yXCI7XG4gICAgLy8gRFBJX1VzZUNlbnRlclZhbHVlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VDZW50ZXJWYWx1ZVwiXSA9IFwidXNlQ2VudGVyVmFsdWVcIjtcbiAgICAvLyBEUElfVXNlQ29sb3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZUNvbG9yXCJdID0gXCJ1c2VDb2xvclwiO1xuICAgIC8vIERQSV9Vc2VDdXN0b21NYXJrU2l6ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlQ3VzdG9tTWFya1NpemVcIl0gPSBcInVzZUN1c3RvbU1hcmtTaXplXCI7XG4gICAgLy8gRFBJX1VzZURhcmtJY29ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlRGFya0ljb25zXCJdID0gXCJ1c2VEYXJrSWNvbnNcIjtcbiAgICAvLyBEUElfVXNlRGF0YVN0b3JlTWluZmllZE5hbWVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VEYXRhU3RvcmVNaW5maWVkTmFtZXNcIl0gPSBcInVzZURhdGFzdG9yZU1pbk5hbWVzXCI7XG4gICAgLy8gRFBJX1VzZUluaXRpYWxEb21haW5UeXBlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VJbml0aWFsRG9tYWluVHlwZVwiXSA9IFwidXNlSW5pdGlhbERvbWFpblR5cGVcIjtcbiAgICAvLyBEUElfVXNlRW5kVmFsdWUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZUVuZFZhbHVlXCJdID0gXCJ1c2VFbmRWYWx1ZVwiO1xuICAgIC8vIERQSV9Vc2VGb3JPdmVybGF5SGl0VGVzdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlRm9yT3ZlcmxheUhpdFRlc3RcIl0gPSBcInVzZUZvck92ZXJsYXlIaXRUZXN0XCI7XG4gICAgLy8gRFBJX1VzZUZ1bGxDb2xvclJhbmdlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VGdWxsQ29sb3JSYW5nZVwiXSA9IFwidXNlRnVsbENvbG9yUmFuZ2VcIjtcbiAgICAvLyBEUElfVXNlRnVsbERvbWFpbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlRnVsbERvbWFpblwiXSA9IFwidXNlRnVsbERvbWFpblwiO1xuICAgIC8vIERQSV9Vc2VJbmxpbmVJbWFnZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZUlubGluZUltYWdlc1wiXSA9IFwidXNlSW5saW5lSW1hZ2VzXCI7XG4gICAgLy8gRFBJX1VzZU1lYXN1cmVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VNZWFzdXJlc1wiXSA9IFwidXNlTWVhc3VyZXNcIjtcbiAgICAvLyBEUElfVXNlTmV3UXVpY2tGaWx0ZXJzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VOZXdRdWlja0ZpbHRlcnNcIl0gPSBcInVzZU5ld1F1aWNrRmlsdGVyc1wiO1xuICAgIC8vIERQSV9Vc2VOb3RpZmljYXRpb25SZXR1cm4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZU5vdGlmaWNhdGlvblJldHVyblwiXSA9IFwidXNlTm90aWZpY2F0aW9uUmV0dXJuXCI7XG4gICAgLy8gRFBJX1VzZVBhcmFtZXRlcnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZVBhcmFtZXRlcnNcIl0gPSBcInVzZVBhcmFtZXRlcnNcIjtcbiAgICAvLyBEUElfVXNlU2VsZWN0b3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZVNlbGVjdG9yXCJdID0gXCJ1c2VTZWxlY3RvclwiO1xuICAgIC8vIERQSV9Vc2VTaWduaWZpY2FudERpZ2l0cywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlU2lnbmlmaWNhbnREaWdpdHNcIl0gPSBcInVzZVNpZ25pZmljYW50RGlnaXRzXCI7XG4gICAgLy8gRFBJX1VzZVNwZWNpYWxTdHJpbmdzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VTcGVjaWFsU3RyaW5nc1wiXSA9IFwidXNlU3BlY2lhbFN0cmluZ3NcIjtcbiAgICAvLyBEUElfVXNlU3RhcnRWYWx1ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlU3RhcnRWYWx1ZVwiXSA9IFwidXNlU3RhcnRWYWx1ZVwiO1xuICAgIC8vIERQSV9Vc2VUYWJzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VUYWJzXCJdID0gXCJ1c2VUYWJzXCI7XG4gICAgLy8gRFBJX1VzZVRhYmxldEFzRGVmYXVsdFByZXZpZXcsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZVRhYmxldEFzRGVmYXVsdFByZXZpZXdcIl0gPSBcInVzZVRhYmxldEFzRGVmYXVsdFByZXZpZXdcIjtcbiAgICAvLyBEUElfVXNlVGFyZ2V0UHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZVRhcmdldFB0XCJdID0gXCJ1c2VUYXJnZXRQb2ludFwiO1xuICAgIC8vIERQSV9Vc2VVU0xvY2FsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlVVNMb2NhbGVcIl0gPSBcInVzZVVzTG9jYWxlXCI7XG4gICAgLy8gRFBJX1VzZVlBeGlzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJVc2VZQXhpc1wiXSA9IFwidXNlWUF4aXNcIjtcbiAgICAvLyBEUElfVmFsaWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbGlkXCJdID0gXCJ2YWxpZFwiO1xuICAgIC8vIERQSV9WaXpEYXRhVjgyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJWaXpEYXRhVjgyXCJdID0gXCJ2aXpEYXRhODJcIjtcbiAgICAvLyBEUElfV01TQ29ubmVjdGlvblN1Y2Nlc3NmdWwsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIldNU0Nvbm5lY3Rpb25TdWNjZXNzZnVsXCJdID0gXCJ3bXNDb25uZWN0aW9uU3VjY2Vzc2Z1bFwiO1xuICAgIC8vIERQSV9XTVNTaG91bGRVc2VUaWxlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiV01TU2hvdWxkVXNlVGlsZXNcIl0gPSBcIndtc1Nob3VsZFVzZVRpbGVzXCI7XG4gICAgLy8gRFBJX1dhbnREb21haW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIldhbnREb21haW5cIl0gPSBcIndhbnREb21haW5cIjtcbiAgICAvLyBEUElfV29ya2Jvb2tNb2RpZmllZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiV29ya2Jvb2tNb2RpZmllZFwiXSA9IFwid29ya2Jvb2tNb2RpZmllZFwiO1xuICAgIC8vIERQSV9ab29tSW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlpvb21JblwiXSA9IFwiem9vbUluXCI7XG4gICAgLy8gRFBJX1Nob3dNYXJrTGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TWFya0xhYmVsc1wiXSA9IFwic2hvd01hcmtMYWJlbHNcIjtcbiAgICAvLyBEUElfSGFzRHVwbGljYXRlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzRHVwbGljYXRlc1wiXSA9IFwiaGFzRHVwbGljYXRlc1wiO1xuICAgIC8vIERQSV9IYXNVc2VyRGVmaW5lZEluY3JlbWVudCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzVXNlckRlZmluZWRJbmNyZW1lbnRcIl0gPSBcImhhc1VzZXJEZWZpbmVkSW5jcmVtZW50XCI7XG4gICAgLy8gRFBJX0hhc1VzZXJEZWZpbmVkTWF4LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNVc2VyRGVmaW5lZE1heFwiXSA9IFwiaGFzVXNlckRlZmluZWRNYXhcIjtcbiAgICAvLyBEUElfSGFzVXNlckRlZmluZWRNaW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkhhc1VzZXJEZWZpbmVkTWluXCJdID0gXCJoYXNVc2VyRGVmaW5lZE1pblwiO1xuICAgIC8vIERQSV9Jc0R1cGxpY2F0ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNEdXBsaWNhdGVcIl0gPSBcImlzRHVwbGljYXRlXCI7XG4gICAgLy8gRFBJX0lzRWRpdGluZ1ZhbHVlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0VkaXRpbmdWYWx1ZVwiXSA9IFwiaXNFZGl0aW5nVmFsdWVcIjtcbiAgICAvLyBEUElfU2hvdWxkUmVzdHJpY3REYXRhVHlwZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvdWxkUmVzdHJpY3REYXRhVHlwZVwiXSA9IFwicmVzdHJpY3REYXRhVHlwZVwiO1xuICAgIC8vIERQSV9FbmFibGVJbmNsdWRlWmVybywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlSW5jbHVkZVplcm9cIl0gPSBcImVuYWJsZUluY2x1ZGVaZXJvXCI7XG4gICAgLy8gRFBJX0VuYWJsZVN5bmNEdWFsQXhlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlU3luY0R1YWxBeGVzXCJdID0gXCJlbmFibGVTeW5jaHJvbml6ZUR1YWxBeGVzXCI7XG4gICAgLy8gRFBJX0VuYWJsZVNob3dUaW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlU2hvd1RpbWVzXCJdID0gXCJlbmFibGVTaG93VGltZXNcIjtcbiAgICAvLyBEUElfRW5hYmxlVGlja01hcmtzVGFiLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVUaWNrTWFya3NUYWJcIl0gPSBcImVuYWJsZVRpY2tNYXJrc1RhYlwiO1xuICAgIC8vIERQSV9Jc1RlbXBvcmFsLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1RlbXBvcmFsXCJdID0gXCJpc1RlbXBvcmFsXCI7XG4gICAgLy8gRFBJX1Nob3VsZEluY2x1ZGVaZXJvLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG91bGRJbmNsdWRlWmVyb1wiXSA9IFwic2hvdWxkSW5jbHVkZVplcm9cIjtcbiAgICAvLyBEUElfU2hvdWxkUmV2ZXJzZUF4aXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZFJldmVyc2VBeGlzXCJdID0gXCJzaG91bGRSZXZlcnNlQXhpc1wiO1xuICAgIC8vIERQSV9TaG91bGRTaG93VGltZXMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3VsZFNob3dUaW1lc1wiXSA9IFwic2hvdWxkU2hvd1RpbWVzXCI7XG4gICAgLy8gRFBJX1VzZUF1dG9tYXRpY0F4aXNTdWJ0aXRsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlQXV0b21hdGljQXhpc1N1YnRpdGxlXCJdID0gXCJ1c2VBdXRvbWF0aWNTdWJ0aXRsZVwiO1xuICAgIC8vIERQSV9Vc2VBdXRvbWF0aWNBeGlzVGl0bGUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZUF1dG9tYXRpY0F4aXNUaXRsZVwiXSA9IFwidXNlQXV0b21hdGljVGl0bGVcIjtcbiAgICAvLyBEUElfQWxsU2VsZWN0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbFNlbGVjdGVkXCJdID0gXCJhbGxTZWxlY3RlZFwiO1xuICAgIC8vIERQSV9BdXRvQ29tbWl0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvQ29tbWl0XCJdID0gXCJhdXRvQ29tbWl0XCI7XG4gICAgLy8gRFBJX0NhY2hlT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FjaGVPbmx5XCJdID0gXCJjYWNoZU9ubHlcIjtcbiAgICAvLyBEUElfSW5jbHVkZURhdGEsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVEYXRhXCJdID0gXCJpbmNsdWRlRGF0YVwiO1xuICAgIC8vIERQSV9Jc1BhdHRlcm5FeGNsdXNpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUGF0dGVybkV4Y2x1c2l2ZVwiXSA9IFwiaXNQYXR0ZXJuRXhjbHVzaXZlXCI7XG4gICAgLy8gRFBJX0lzU2VhcmNoYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTZWFyY2hhYmxlXCJdID0gXCJpc1NlYXJjaGFibGVcIjtcbiAgICAvLyBEUElfSXNTZWxlY3Rpb25FeGNsdXNpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzU2VsZWN0aW9uRXhjbHVzaXZlXCJdID0gXCJpc1NlbGVjdGlvbkV4Y2x1c2l2ZVwiO1xuICAgIC8vIERQSV9SZXNldE5ld0ZpbHRlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVzZXROZXdGaWx0ZXJcIl0gPSBcInJlc2V0TmV3RmlsdGVyXCI7XG4gICAgLy8gRFBJX1VzZUFsbFdoZW5NYW51YWxFbXB0eSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlQWxsV2hlbk1hbnVhbEVtcHR5XCJdID0gXCJ1c2VBbGxXaGVuTWFudWFsRW1wdHlcIjtcbiAgICAvLyBEUElfVXNlQWxsV2hlblBhdHRlcm5FbXB0eSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlQWxsV2hlblBhdHRlcm5FbXB0eVwiXSA9IFwidXNlQWxsV2hlblBhdHRlcm5FbXB0eVwiO1xuICAgIC8vIERQSV9Hcm91cEJ5RHJpbGxEb3duLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJHcm91cEJ5RHJpbGxEb3duXCJdID0gXCJncm91cEJ5RHJpbGxEb3duXCI7XG4gICAgLy8gRFBJX0dyb3VwQnlUYWJsZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiR3JvdXBCeVRhYmxlXCJdID0gXCJncm91cEJ5VGFibGVcIjtcbiAgICAvLyBEUElfSW5jbHVkZUdyb3VwcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZUdyb3Vwc1wiXSA9IFwiaW5jbHVkZUdyb3Vwc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlUGVuZGluZ1N0YXRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlUGVuZGluZ1N0YXRlXCJdID0gXCJpbmNsdWRlUGVuZGluZ1N0YXRlXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVGaWVsZE1lbnVzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlRmllbGRNZW51c1wiXSA9IFwiaW5jbHVkZUZpZWxkTWVudXNcIjtcbiAgICAvLyBEUElfSW5jbHVkZUZvcm1hdHRlZFZhbHVlcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZUZvcm1hdHRlZFZhbHVlc1wiXSA9IFwiaW5jbHVkZUZvcm1hdHRlZFZhbHVlc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlQ29sdW1uSW5zdGFuY2VzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlQ29sdW1uSW5zdGFuY2VzXCJdID0gXCJpbmNsdWRlQ29sdW1uSW5zdGFuY2VzXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVBZEhvY0NhbGNzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJbmNsdWRlQWRIb2NDYWxjc1wiXSA9IFwiaW5jbHVkZUFkaG9jQ2FsY3NcIjtcbiAgICAvLyBEUElfSW5jbHVkZUhpZGRlbkludmFsaWRGaWVsZHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVIaWRkZW5JbnZhbGlkRmllbGRzXCJdID0gXCJpbmNsdWRlSGlkZGVuSW52YWxpZEZpZWxkc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlTm9uRXh0cmFjdGVkQ29sdW1ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZU5vbkV4dHJhY3RlZENvbHVtbnNcIl0gPSBcImluY2x1ZGVOb25FeHRyYWN0ZWRDb2x1bW5zXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVDYWxjdWxhdGVkRmllbGRGb3JtdWxhcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZUNhbGN1bGF0ZWRGaWVsZEZvcm11bGFzXCJdID0gXCJpbmNsdWRlQ2FsY3VsYXRlZEZpZWxkRm9ybXVsYXNcIjtcbiAgICAvLyBEUElfU2V0RGF0YVByZXZpZXdDdXN0b21GaWVsZE9yZGVyLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTZXREYXRhUHJldmlld0N1c3RvbUZpZWxkT3JkZXJcIl0gPSBcInNldERhdGFQcmV2aWV3Q3VzdG9tRmllbGRPcmRlclwiO1xuICAgIC8vIERQSV9DdXN0b21TcGxpdEFsbG93U3BsaXRGcm9tUmlnaHQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbVNwbGl0QWxsb3dTcGxpdEZyb21SaWdodFwiXSA9IFwiY3VzdG9tU3BsaXRBbGxvd1NwbGl0RnJvbVJpZ2h0XCI7XG4gICAgLy8gRFBJX0lzQ2hhbmdlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNDaGFuZ2VkXCJdID0gXCJpc0NoYW5nZWRcIjtcbiAgICAvLyBEUElfU2hvd0ZvbnRDb2xvclBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0ZvbnRDb2xvclBpY2tlclwiXSA9IFwic2hvd0ZvbnRDb2xvclBpY2tlclwiO1xuICAgIC8vIERQSV9TaG93Rm9udEZhbWlseVBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0ZvbnRGYW1pbHlQaWNrZXJcIl0gPSBcInNob3dGb250RmFtaWx5UGlja2VyXCI7XG4gICAgLy8gRFBJX1Nob3dGb250U2l6ZVBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0ZvbnRTaXplUGlja2VyXCJdID0gXCJzaG93Rm9udFNpemVQaWNrZXJcIjtcbiAgICAvLyBEUElfU2hvd0ZvbnRTdHlsZUJ1dHRvbnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dGb250U3R5bGVCdXR0b25zXCJdID0gXCJzaG93Rm9udFN0eWxlQnV0dG9uc1wiO1xuICAgIC8vIERQSV9TaG93TGluZUZvckFsbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0xpbmVGb3JBbGxcIl0gPSBcInNob3dMaW5lRm9yQWxsXCI7XG4gICAgLy8gRFBJX1Nob3dMaW5lRm9yQ29sdW1uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TGluZUZvckNvbHVtblwiXSA9IFwic2hvd0xpbmVGb3JDb2x1bW5cIjtcbiAgICAvLyBEUElfU2hvd0xpbmVGb3JSb3csIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dMaW5lRm9yUm93XCJdID0gXCJzaG93TGluZUZvclJvd1wiO1xuICAgIC8vIERQSV9TaG93TGluZVBhdHRlcm5QaWNrZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dMaW5lUGF0dGVyblBpY2tlclwiXSA9IFwic2hvd0xpbmVQYXR0ZXJuUGlja2VyXCI7XG4gICAgLy8gRFBJX1Nob3dMaW5lVHJhbnNwYXJlbmN5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTaG93TGluZVRyYW5zcGFyZW5jeVwiXSA9IFwic2hvd0xpbmVUcmFuc3BhcmVuY3lcIjtcbiAgICAvLyBEUElfU2hvd0xpbmVXaWR0aFBpY2tlciwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0xpbmVXaWR0aFBpY2tlclwiXSA9IFwic2hvd0xpbmVXaWR0aFBpY2tlclwiO1xuICAgIC8vIERQSV9DYW5CZUF1dG8sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbkJlQXV0b1wiXSA9IFwiY2FuQmVBdXRvXCI7XG4gICAgLy8gRFBJX0NhbkJlTm9uZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FuQmVOb25lXCJdID0gXCJjYW5CZU5vbmVcIjtcbiAgICAvLyBEUElfQ2FuTWF0Y2hNYXJrQ29sb3IsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbk1hdGNoTWFya0NvbG9yXCJdID0gXCJjYW5NYXRjaE1hcmtDb2xvclwiO1xuICAgIC8vIERQSV9IYXNPcGFjaXR5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNPcGFjaXR5XCJdID0gXCJoYXNPcGFjaXR5XCI7XG4gICAgLy8gRFBJX0luY2x1ZGVBbGxIaWRkZW4sIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVBbGxIaWRkZW5cIl0gPSBcImluY2x1ZGVBbGxIaWRkZW5cIjtcbiAgICAvLyBEUElfSW5jbHVkZUN1cnJlbnQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVDdXJyZW50XCJdID0gXCJpbmNsdWRlQ3VycmVudFwiO1xuICAgIC8vIERQSV9Jc0luY2x1ZGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0luY2x1ZGVkXCJdID0gXCJpc0luY2x1ZGVkXCI7XG4gICAgLy8gRFBJX0lzUmVsYXRpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzUmVsYXRpdmVcIl0gPSBcImlzUmVsYXRpdmVcIjtcbiAgICAvLyBEUElfSXNTZWNvbmRhcnlBbGxvd2VkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1NlY29uZGFyeUFsbG93ZWRcIl0gPSBcImlzU2Vjb25kYXJ5QWxsb3dlZFwiO1xuICAgIC8vIERQSV9OdWxsSWZJbmNvbXBsZXRlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJOdWxsSWZJbmNvbXBsZXRlXCJdID0gXCJudWxsSWZJbmNvbXBsZXRlXCI7XG4gICAgLy8gRFBJX0lzQ2FsY0Fzc2lzdGFuY2VFbmFibGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0NhbGNBc3Npc3RhbmNlRW5hYmxlZFwiXSA9IFwiaXNDYWxjQXNzaXN0YW5jZUVuYWJsZWRcIjtcbiAgICAvLyBEUElfVXNlU2Vjb25kYXJ5Q2FsYywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlU2Vjb25kYXJ5Q2FsY1wiXSA9IFwidXNlU2Vjb25kYXJ5Q2FsY1wiO1xuICAgIC8vIERQSV9DYW5Mb2FkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDYW5Mb2FkXCJdID0gXCJjYW5Mb2FkXCI7XG4gICAgLy8gRFBJX0Rlc2NyaXB0aW9uT25seSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiRGVzY3JpcHRpb25Pbmx5XCJdID0gXCJkZXNjcmlwdGlvbk9ubHlcIjtcbiAgICAvLyBEUElfQXJlQWxpYXNlc1N1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQXJlQWxpYXNlc1N1cHBvcnRlZFwiXSA9IFwiYXJlQWxpYXNlc1N1cHBvcnRlZFwiO1xuICAgIC8vIERQSV9BcmVSZWZDb2x1bW5zU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJBcmVSZWZDb2x1bW5zU3VwcG9ydGVkXCJdID0gXCJhcmVSZWZDb2x1bW5zU3VwcG9ydGVkXCI7XG4gICAgLy8gRFBJX0lzQWdncmVnYXRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNBZ2dyZWdhdGVkXCJdID0gXCJpc0FnZ3JlZ2F0ZWRcIjtcbiAgICAvLyBEUElfSXNFeHBvcnRTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRXhwb3J0U3VwcG9ydGVkXCJdID0gXCJpc0V4cG9ydFN1cHBvcnRlZFwiO1xuICAgIC8vIERQSV9Jc01lYXN1cmVOYW1lcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNNZWFzdXJlTmFtZXNcIl0gPSBcImlzTWVhc3VyZU5hbWVzXCI7XG4gICAgLy8gRFBJX0lzU3VtbWFyeVN1cHBvcnRlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNTdW1tYXJ5U3VwcG9ydGVkXCJdID0gXCJpc1N1bW1hcnlTdXBwb3J0ZWRcIjtcbiAgICAvLyBEUElfSXNUb3BOU3VwcG9ydGVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1RvcE5TdXBwb3J0ZWRcIl0gPSBcImlzVG9wTlN1cHBvcnRlZFwiO1xuICAgIC8vIERQSV9Jc1VuZGVybHlpbmdTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzVW5kZXJseWluZ1N1cHBvcnRlZFwiXSA9IFwiaXNVbmRlcmx5aW5nU3VwcG9ydGVkXCI7XG4gICAgLy8gRFBJX09ubHlFeHBvcnRTdW1tYXJ5LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJPbmx5RXhwb3J0U3VtbWFyeVwiXSA9IFwib25seUV4cG9ydFN1bW1hcnlcIjtcbiAgICAvLyBEUElfU2hvd0FsbEZpZWxkcywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd0FsbEZpZWxkc1wiXSA9IFwic2hvd0FsbEZpZWxkc1wiO1xuICAgIC8vIERQSV9Vc2VUYWJsZVB0cnMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZVRhYmxlUHRyc1wiXSA9IFwidXNlVGFibGVQdHJzXCI7XG4gICAgLy8gRFBJX09ubHlGZXRjaFN1bW1hcnksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIk9ubHlGZXRjaFN1bW1hcnlcIl0gPSBcIm9ubHlGZXRjaFN1bW1hcnlcIjtcbiAgICAvLyBEUElfSXNEZXZpY2VMYXlvdXRDdXN0b21pemVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0RldmljZUxheW91dEN1c3RvbWl6ZWRcIl0gPSBcImlzRGV2aWNlTGF5b3V0Q3VzdG9taXplZFwiO1xuICAgIC8vIERQSV9Jc0RldmljZVNpemVDdXN0b21pemVkLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0RldmljZVNpemVDdXN0b21pemVkXCJdID0gXCJpc0RldmljZVNpemVDdXN0b21pemVkXCI7XG4gICAgLy8gRFBJX0lzRGV2aWNlU3VwcG9ydGVkQnlNb2JpbGVBcHAsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzRGV2aWNlU3VwcG9ydGVkQnlNb2JpbGVBcHBcIl0gPSBcImlzRGV2aWNlU3VwcG9ydGVkQnlNb2JpbGVBcHBcIjtcbiAgICAvLyBEUElfSXNQb3J0cmFpdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNQb3J0cmFpdFwiXSA9IFwiaXNQb3J0cmFpdFwiO1xuICAgIC8vIERQSV9Jc1BvcnRyYWl0QnlEZWZhdWx0LCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc1BvcnRyYWl0QnlEZWZhdWx0XCJdID0gXCJpc1BvcnRyYWl0QnlEZWZhdWx0XCI7XG4gICAgLy8gRFBJX0lzVXNlckN1c3RvbUZvcm1hdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNVc2VyQ3VzdG9tRm9ybWF0XCJdID0gXCJpc1VzZXJDdXN0b21Gb3JtYXRcIjtcbiAgICAvLyBEUElfU2hvdWxkRGlzcGxheVJlYnVpbGRFeHRyYWN0TWVzc2FnZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvdWxkRGlzcGxheVJlYnVpbGRFeHRyYWN0TWVzc2FnZVwiXSA9IFwic2hvdWxkRGlzcGxheVJlYnVpbGRFeHRyYWN0TWVzc2FnZVwiO1xuICAgIC8vIERQSV9TdXBwb3J0c0N1c3RvbVN0YXJ0T2ZXZWVrLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJTdXBwb3J0c0N1c3RvbVN0YXJ0T2ZXZWVrXCJdID0gXCJzdXBwb3J0c0N1c3RvbVN0YXJ0T2ZXZWVrXCI7XG4gICAgLy8gRFBJX05lZWRzQ29ubmVjdFByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTmVlZHNDb25uZWN0UHJvbXB0XCJdID0gXCJuZWVkc0Nvbm5lY3RQcm9tcHRcIjtcbiAgICAvLyBEUElfTmVlZHNDbG9zZURhdGFTb3VyY2VFcnJvclByb21wdCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiTmVlZHNDbG9zZURhdGFTb3VyY2VFcnJvclByb21wdFwiXSA9IFwibmVlZHNDbG9zZURzRXJyb3JQcm9tcHRcIjtcbiAgICAvLyBEUElfQ2xlYXJDdXJyZW50U2VsZWN0aW9uLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJDbGVhckN1cnJlbnRTZWxlY3Rpb25cIl0gPSBcImNsZWFyQ3VycmVudFNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9IYXNDb250YWlucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzQ29udGFpbnNcIl0gPSBcImhhc0NvbnRhaW5zXCI7XG4gICAgLy8gRFBJX0hhc0VuZHNXaXRoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNFbmRzV2l0aFwiXSA9IFwiaGFzRW5kc1dpdGhcIjtcbiAgICAvLyBEUElfSGFzUmVwbGFjZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSGFzUmVwbGFjZVNlbGVjdGlvblwiXSA9IFwiaGFzUmVwbGFjZVNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9IYXNTdGFydHNXaXRoLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJIYXNTdGFydHNXaXRoXCJdID0gXCJoYXNTdGFydHNXaXRoXCI7XG4gICAgLy8gRFBJX0lzTGVhZlNlbGVjdGlvbk9ubHksIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTGVhZlNlbGVjdGlvbk9ubHlcIl0gPSBcImlzTGVhZlNlbGVjdGlvbk9ubHlcIjtcbiAgICAvLyBEUElfUmVwbGFjZVNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiUmVwbGFjZVNlbGVjdGlvblwiXSA9IFwicmVwbGFjZVNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9Jc0NvbG9yUGFsZXR0ZUN1c3RvbWl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzQ29sb3JQYWxldHRlQ3VzdG9taXplZFwiXSA9IFwiaXNDb2xvclBhbGV0dGVDdXN0b21pemVkXCI7XG4gICAgLy8gRFBJX1JldmVyc2VQYWxldHRlT3JkZXIsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlJldmVyc2VQYWxldHRlT3JkZXJcIl0gPSBcInJldmVyc2VQYWxldHRlT3JkZXJcIjtcbiAgICAvLyBEUElfVHJpZWRUb0Nvbm5lY3QsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlRyaWVkVG9Db25uZWN0XCJdID0gXCJ0cmllZFRvQ29ubmVjdFwiO1xuICAgIC8vIERQSV9TY2FsZU1hcmtzSW5BeGlzVW5pdHMsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNjYWxlTWFya3NJbkF4aXNVbml0c1wiXSA9IFwic2NhbGVNYXJrc0luQXhpc1VuaXRzXCI7XG4gICAgLy8gRFBJX1Nob3dNYXJrU2l6aW5nT3B0aW9ucywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd01hcmtTaXppbmdPcHRpb25zXCJdID0gXCJzaG93TWFya1NpemluZ09wdGlvbnNcIjtcbiAgICAvLyBEUElfVXNlU2l6ZUZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlU2l6ZUZpZWxkQ2FwdGlvblwiXSA9IFwidXNlU2l6ZUZpZWxkQ2FwdGlvblwiO1xuICAgIC8vIERQSV9Jc0xpY2Vuc2VkQW5kUmVnaXN0ZXJlZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNMaWNlbnNlZEFuZFJlZ2lzdGVyZWRcIl0gPSBcImlzTGljZW5zZWRBbmRSZWdpc3RlcmVkXCI7XG4gICAgLy8gRFBJX1NldE5ld0RhdGFzb3VyY2VBY3RpdmUsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlNldE5ld0RhdGFzb3VyY2VBY3RpdmVcIl0gPSBcInNldE5ld0RhdGFzb3VyY2VBY3RpdmVcIjtcbiAgICAvLyBEUElfQWxsb3dDdXN0b21MYWJlbCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQWxsb3dDdXN0b21MYWJlbFwiXSA9IFwiYWxsb3dDdXN0b21MYWJlbFwiO1xuICAgIC8vIERQSV9Jc01vc3RSZWNlbnRNb2RlVmFsaWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzTW9zdFJlY2VudE1vZGVWYWxpZFwiXSA9IFwiaXNNb3N0UmVjZW50TW9kZVZhbGlkXCI7XG4gICAgLy8gRFBJX011c3RTaG93TGFiZWxzLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJNdXN0U2hvd0xhYmVsc1wiXSA9IFwibXVzdFNob3dMYWJlbHNcIjtcbiAgICAvLyBEUElfU2hvd1J1bm5pbmdPcmRlckxhYmVscywgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd1J1bm5pbmdPcmRlckxhYmVsc1wiXSA9IFwic2hvd1J1bm5pbmdPcmRlckxhYmVsc1wiO1xuICAgIC8vIERQSV9Jc0Ryb3BwZWRGaWxlLCBoYXZpbmcgdHlwZSBib29sXG4gICAgUGFyYW1ldGVySWRbXCJJc0Ryb3BwZWRGaWxlXCJdID0gXCJpc0Ryb3BwZWRGaWxlXCI7XG4gICAgLy8gRFBJX0lzSW5pdGlhbGl6ZWQsIGhhdmluZyB0eXBlIGJvb2xcbiAgICBQYXJhbWV0ZXJJZFtcIklzSW5pdGlhbGl6ZWRcIl0gPSBcImlzSW5pdGlhbGl6ZWRcIjtcbiAgICAvLyBEUElfSW5jbHVkZURhc2hib2FyZCwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZURhc2hib2FyZFwiXSA9IFwiaW5jbHVkZURhc2hib2FyZFwiO1xuICAgIC8vIERQSV9DaGlsZHJlbkNhblJlc2l6ZSwgaGF2aW5nIHR5cGUgYm9vbFxuICAgIFBhcmFtZXRlcklkW1wiQ2hpbGRyZW5DYW5SZXNpemVcIl0gPSBcImNoaWxkcmVuQ2FuUmVzaXplXCI7XG4gICAgLy8gRFBJX0Jvb2xNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgYm9vbClcbiAgICBQYXJhbWV0ZXJJZFtcIkJvb2xNYXBcIl0gPSBcImJvb2xNYXBcIjtcbiAgICAvLyBEUElfQ2hlY2tlZE1lbnVJdGVtcywgaGF2aW5nIHR5cGUgYm9vbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDaGVja2VkTWVudUl0ZW1zXCJdID0gXCJjaGVja2VkTWVudUl0ZW1zXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVkU2hlZXRWYWx1ZXMsIGhhdmluZyB0eXBlIGJvb2xbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZWRTaGVldFZhbHVlc1wiXSA9IFwiaW5jbHVkZWRTaGVldFZhbHVlc1wiO1xuICAgIC8vIERQSV9Tb3J0T3JkZXJWZWN0b3IsIGhhdmluZyB0eXBlIGJvb2xbXVxuICAgIFBhcmFtZXRlcklkW1wiU29ydE9yZGVyVmVjdG9yXCJdID0gXCJzb3J0T3JkZXJWZWN0b3JcIjtcbiAgICAvLyBEUElfQWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25OYW1lXCJdID0gXCJhY3Rpb25OYW1lXCI7XG4gICAgLy8gRFBJX0FjdGlvblNvdXJjZVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uU291cmNlVGV4dFwiXSA9IFwiYWN0aW9uU291cmNlVGV4dFwiO1xuICAgIC8vIERQSV9BY3Rpb25UeXBlQXNTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uVHlwZUFzU3RyaW5nXCJdID0gXCJhY3Rpb25UeXBlQXNTdHJpbmdcIjtcbiAgICAvLyBEUElfQWN0aXZlVGFiLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGl2ZVRhYlwiXSA9IFwiYWN0aXZlX3RhYlwiO1xuICAgIC8vIERQSV9BZGRJbkZlYXR1cmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluRmVhdHVyZU5hbWVcIl0gPSBcImFkZEluRmVhdHVyZU5hbWVcIjtcbiAgICAvLyBEUElfQWRkSW5JZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbklkXCJdID0gXCJhZGRJbklkXCI7XG4gICAgLy8gRFBJX0FkZEluc3RhbmNlSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWRkSW5zdGFuY2VJZFwiXSA9IFwiYWRkSW5JbnN0YW5jZUlkXCI7XG4gICAgLy8gRFBJX0FkZEluTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbk5hbWVcIl0gPSBcImFkZEluTmFtZVwiO1xuICAgIC8vIERQSV9BZGRJbkxvY2FsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbkxvY2FsZVwiXSA9IFwiYWRkSW5Mb2NhbGVcIjtcbiAgICAvLyBEUElfQWRkSW5MYW5ndWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbkxhbmd1YWdlXCJdID0gXCJhZGRJbkxhbmd1YWdlXCI7XG4gICAgLy8gRFBJX0FQSVZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQVBJVmVyc2lvblwiXSA9IFwiYXBpVmVyc2lvblwiO1xuICAgIC8vIERQSV9BbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBbGlhc1wiXSA9IFwiYWxpYXNcIjtcbiAgICAvLyBEUElfQW5jaG9yRGF0ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBbmNob3JEYXRlXCJdID0gXCJhbmNob3JEYXRlXCI7XG4gICAgLy8gRFBJX0Fubm90YXRpb25SZXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQW5ub3RhdGlvblJlc1wiXSA9IFwiYW5ub3RhdGlvblJlc1wiO1xuICAgIC8vIERQSV9SZWFkSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVhZElkXCJdID0gXCJyZWFkSWRcIjtcbiAgICAvLyBEUElfQW5ub3RhdGlvblRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQW5ub3RhdGlvblRleHRcIl0gPSBcImFubm90YXRpb25UZXh0XCI7XG4gICAgLy8gRFBJX0FyY2hpdmVEaXJlY3RvcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXJjaGl2ZURpcmVjdG9yeVwiXSA9IFwiYXJjaGl2ZURpcmVjdG9yeVwiO1xuICAgIC8vIERQSV9BcmNoaXZlRnVsbFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXJjaGl2ZUZ1bGxQYXRoXCJdID0gXCJhcmNoaXZlRnVsbFBhdGhcIjtcbiAgICAvLyBEUElfQXRUaGVMZXZlbEludmFsaWRGaWVsZENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXRUaGVMZXZlbEludmFsaWRGaWVsZENhcHRpb25cIl0gPSBcImF0VGhlTGV2ZWxJbnZhbGlkRmllbGRDYXB0aW9uXCI7XG4gICAgLy8gRFBJX0F1dG9Db21wbGV0ZVN1YnN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvQ29tcGxldGVTdWJzdHJpbmdcIl0gPSBcImFjU3Vic3RyaW5nXCI7XG4gICAgLy8gRFBJX0F1dG9zYXZlRmlsZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9zYXZlRmlsZUlkXCJdID0gXCJhdXRvc2F2ZUZpbGVJZFwiO1xuICAgIC8vIERQSV9BdXRvc2F2ZVRpbWVySW50ZXJ2YWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXV0b3NhdmVUaW1lckludGVydmFsXCJdID0gXCJhdXRvc2F2ZVRpbWVySW50ZXJ2YWxcIjtcbiAgICAvLyBEUElfQmFzZUNvbHVtbkNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQmFzZUNvbHVtbkNhcHRpb25cIl0gPSBcImJhc2VDb2x1bW5DYXB0aW9uXCI7XG4gICAgLy8gRFBJX0NsZWFyQnV0dG9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDbGVhckJ1dHRvblRleHRcIl0gPSBcImNsZWFyQnV0dG9uVGV4dFwiO1xuICAgIC8vIERQSV9Db2xvclBhbGV0dGVJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclBhbGV0dGVJZFwiXSA9IFwiY29sb3JQYWxldHRlSWRcIjtcbiAgICAvLyBEUElfQ29sb3JQYWxldHRlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclBhbGV0dGVOYW1lXCJdID0gXCJjb2xvclBhbGV0dGVOYW1lXCI7XG4gICAgLy8gRFBJX0NvbG9yU3dhdGNoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yU3dhdGNoXCJdID0gXCJjb2xvclN3YXRjaFwiO1xuICAgIC8vIERQSV9Db21tYW5kTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb21tYW5kTmFtZVwiXSA9IFwiY29tbWFuZE5hbWVcIjtcbiAgICAvLyBEUElfQ29uZmlkZW5jZUxldmVsVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29uZmlkZW5jZUxldmVsVmFsdWVcIl0gPSBcImNvbmZpZGVuY2VMZXZlbFZhbHVlXCI7XG4gICAgLy8gRFBJX0NvdW50RGlzdGluY3RTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ291bnREaXN0aW5jdFN0clwiXSA9IFwiY291bnREaXN0aW5jdFN0clwiO1xuICAgIC8vIERQSV9Dcm9zc1RhYkZpbGVwYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNyb3NzVGFiRmlsZXBhdGhcIl0gPSBcImNyb3NzVGFiRmlsZXBhdGhcIjtcbiAgICAvLyBEUElfQ1NTTWFyZ2luLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNTU01hcmdpblwiXSA9IFwiY3NzTWFyZ2luXCI7XG4gICAgLy8gRFBJX0NTU1doaXRlc3BhY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ1NTV2hpdGVzcGFjZVwiXSA9IFwiY3NzV2hpdGVzcGFjZVwiO1xuICAgIC8vIERQSV9EQlBhc3N3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRCUGFzc3dvcmRcIl0gPSBcImRiUGFzc3dvcmRcIjtcbiAgICAvLyBEUElfREJVc2VybmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEQlVzZXJuYW1lXCJdID0gXCJkYlVzZXJuYW1lXCI7XG4gICAgLy8gRFBJX0RhdGFBbGVydENvbmRpdGlvblRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YUFsZXJ0Q29uZGl0aW9uVGV4dFwiXSA9IFwiZGF0YUFsZXJ0Q29uZGl0aW9uVGV4dFwiO1xuICAgIC8vIERQSV9EYXRhQWxlcnRNZWFzdXJlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhQWxlcnRNZWFzdXJlVGV4dFwiXSA9IFwiZGF0YUFsZXJ0TWVhc3VyZVRleHRcIjtcbiAgICAvLyBEUElfRGF0YUFsZXJ0U3BlY1NlcmlhbGl6ZWRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydFNwZWNTZXJpYWxpemVkVGV4dFwiXSA9IFwiZGF0YUFsZXJ0U3BlY1NlcmlhbGl6ZWRUZXh0XCI7XG4gICAgLy8gRFBJX0RhdGFBbGVydERlZmF1bHRTdWJqZWN0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydERlZmF1bHRTdWJqZWN0XCJdID0gXCJkYXRhQWxlcnREZWZhdWx0U3ViamVjdFwiO1xuICAgIC8vIERQSV9EYXRhQWxlcnRUaHJlc2hvbGRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydFRocmVzaG9sZFRleHRcIl0gPSBcImRhdGFBbGVydFRocmVzaG9sZFRleHRcIjtcbiAgICAvLyBEUElfRGF0YUdyaWRTb3J0Q29sdW1uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhR3JpZFNvcnRDb2x1bW5OYW1lXCJdID0gXCJkYXRhZ3JpZFNvcnRDb2x1bW5OYW1lXCI7XG4gICAgLy8gRFBJX0RhdGFTZXJ2ZXJDb25uZWN0aW9uRXJyb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvclwiXSA9IFwiZGF0YVNlcnZlckNvbm5lY3Rpb25FcnJvclwiO1xuICAgIC8vIERQSV9EYXRhYmFzZUZpbHRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhYmFzZUZpbHRlclwiXSA9IFwiZGF0YWJhc2VGaWx0ZXJcIjtcbiAgICAvLyBEUElfRGF0YWJhc2VGaWx0ZXJQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YWJhc2VGaWx0ZXJQcm9tcHRcIl0gPSBcImRhdGFiYXNlRmlsdGVyUHJvbXB0XCI7XG4gICAgLy8gRFBJX0RhdGFzb3VyY2VSYW5raW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VSYW5raW5nXCJdID0gXCJkYXRhc291cmNlUmFua2luZ1wiO1xuICAgIC8vIERQSV9EYXRhc291cmNlVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VVcmxcIl0gPSBcImRhdGFzb3VyY2VVcmxcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZVVzZXJuYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VVc2VybmFtZVwiXSA9IFwiZGF0YXNvdXJjZVVzZXJuYW1lXCI7XG4gICAgLy8gRFBJX0RhdGVGb3JtYXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0ZUZvcm1hdFwiXSA9IFwiZGF0ZUZvcm1hdFwiO1xuICAgIC8vIERQSV9EYXRlUGFydCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRlUGFydFwiXSA9IFwiZGF0ZVBhcnRcIjtcbiAgICAvLyBEUElfRGF0ZVBhcnRBYmJyZXYsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0ZVBhcnRBYmJyZXZcIl0gPSBcImRhdGVQYXJ0QWJicmV2XCI7XG4gICAgLy8gRFBJX0RlZmF1bHRIaWVyYXJjaHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRlZmF1bHRIaWVyYXJjaHlOYW1lXCJdID0gXCJkZWZhdWx0SGllcmFyY2h5TmFtZVwiO1xuICAgIC8vIERQSV9EZWZhdWx0TWVudUl0ZW1LZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGVmYXVsdE1lbnVJdGVtS2V5XCJdID0gXCJkZWZhdWx0TWVudUl0ZW1LZXlcIjtcbiAgICAvLyBEUElfRGVsaW1pdGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRlbGltaXRlclwiXSA9IFwiZGVsaW1pdGVyXCI7XG4gICAgLy8gRFBJX0RldmljZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGV2aWNlTmFtZVwiXSA9IFwiZGV2aWNlTmFtZVwiO1xuICAgIC8vIERQSV9EZXZpY2VUeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZVR5cGVcIl0gPSBcImRldmljZVR5cGVcIjtcbiAgICAvLyBEUElfRGlzcGxheVBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGlzcGxheVBhdGhcIl0gPSBcImRpc3BsYXlQYXRoXCI7XG4gICAgLy8gRFBJX0Rpc3RyaWJ1dGlvblZhbHVlU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3RyaWJ1dGlvblZhbHVlU3RyaW5nXCJdID0gXCJkaXN0cmlidXRpb25WYWx1ZVN0cmluZ1wiO1xuICAgIC8vIERQSV9EcmlsbFBhdGhOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRyaWxsUGF0aE5hbWVcIl0gPSBcImRyaWxsUGF0aE5hbWVcIjtcbiAgICAvLyBEUElfRW1iZWRkZWRUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFbWJlZGRlZFRpdGxlXCJdID0gXCJlbWJlZGRlZFRpdGxlXCI7XG4gICAgLy8gRFBJX0VudGVyVmFsdWVUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkVudGVyVmFsdWVUZXh0XCJdID0gXCJlbnRlclZhbHVlVGV4dFwiO1xuICAgIC8vIERQSV9Fc2NhcGVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXNjYXBlU3RyaW5nXCJdID0gXCJlc2NhcGVTdHJpbmdcIjtcbiAgICAvLyBEUElfRXh0U3ZjQ29uZmlnSG9zdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFeHRTdmNDb25maWdIb3N0XCJdID0gXCJleHRTdmNDb25maWdIb3N0XCI7XG4gICAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1Bhc3N3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dFN2Y0NvbmZpZ1Bhc3N3b3JkXCJdID0gXCJleHRTdmNDb25maWdQYXNzd29yZFwiO1xuICAgIC8vIERQSV9FeHRTdmNDb25maWdQb3J0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dFN2Y0NvbmZpZ1BvcnRcIl0gPSBcImV4dFN2Y0NvbmZpZ1BvcnRcIjtcbiAgICAvLyBEUElfRXh0U3ZjQ29uZmlnQ29ubmVjdFRpbWVvdXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXh0U3ZjQ29uZmlnQ29ubmVjdFRpbWVvdXRcIl0gPSBcImV4dFN2Y0Nvbm5lY3RUaW1lb3V0XCI7XG4gICAgLy8gRFBJX0V4dFN2Y0NvbmZpZ1ByZXZIb3N0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dFN2Y0NvbmZpZ1ByZXZIb3N0XCJdID0gXCJleHRTdmNDb25maWdQcmV2SG9zdFwiO1xuICAgIC8vIERQSV9FeHRTdmNDb25maWdVc2VybmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFeHRTdmNDb25maWdVc2VybmFtZVwiXSA9IFwiZXh0U3ZjQ29uZmlnVXNlcm5hbWVcIjtcbiAgICAvLyBEUElfRXh0cmFjdFVwZGF0ZVRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdFVwZGF0ZVRpbWVcIl0gPSBcImV4dHJhY3RVcGRhdGVUaW1lXCI7XG4gICAgLy8gRFBJX0ZpZWxkRm9sZGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZEZvbGRlck5hbWVcIl0gPSBcImZpZWxkRm9sZGVyTmFtZVwiO1xuICAgIC8vIERQSV9GaWVsZE5hbWVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lU3RyaW5nXCJdID0gXCJmaWVsZE5hbWVcIjtcbiAgICAvLyBEUElfRmlsdGVyU2VhcmNoRG9tYWluLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaERvbWFpblwiXSA9IFwiZmlsdGVyU2VhcmNoRG9tYWluXCI7XG4gICAgLy8gRFBJX0ZpbHRlclNwZWMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyU3BlY1wiXSA9IFwiZmlsdGVyU3BlY1wiO1xuICAgIC8vIERQSV9GaXJzdFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpcnN0VmFsdWVcIl0gPSBcImZpcnN0VmFsdWVcIjtcbiAgICAvLyBEUElfRm9sZGVyTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb2xkZXJOYW1lXCJdID0gXCJmb2xkZXJOYW1lXCI7XG4gICAgLy8gRFBJX0ZvbnROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvbnROYW1lXCJdID0gXCJmb250TmFtZVwiO1xuICAgIC8vIERQSV9Gb3JtYXRTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0U3RyaW5nXCJdID0gXCJmb3JtYXRTdHJpbmdcIjtcbiAgICAvLyBEUElfRm9ybWF0dGVkRGlzcGxheVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXR0ZWREaXNwbGF5U3RyaW5nXCJdID0gXCJmb3JtYXR0ZWREaXNwbGF5U3RyaW5nXCI7XG4gICAgLy8gRFBJX0Zvcm1hdHRlZEluY3JlbWVudFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdHRlZEluY3JlbWVudFZhbHVlXCJdID0gXCJmb3JtYXR0ZWRJbmNyZW1lbnRcIjtcbiAgICAvLyBEUElfRm9ybWF0dGVkTWF4VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0dGVkTWF4VmFsdWVcIl0gPSBcImZvcm1hdHRlZE1heFwiO1xuICAgIC8vIERQSV9Gb3JtYXR0ZWRNaW5WYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXR0ZWRNaW5WYWx1ZVwiXSA9IFwiZm9ybWF0dGVkTWluXCI7XG4gICAgLy8gRFBJX0Zvcm1hdHRlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdHRlZFZhbHVlXCJdID0gXCJmb3JtYXR0ZWRWYWx1ZVwiO1xuICAgIC8vIERQSV9Gb3JtYXR0ZWRDZW50ZXJWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXR0ZWRDZW50ZXJWYWx1ZVwiXSA9IFwiZm9ybWF0dGVkQ2VudGVyXCI7XG4gICAgLy8gRFBJX0Zvcm1hdHRlZEVuZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdHRlZEVuZFZhbHVlXCJdID0gXCJmb3JtYXR0ZWRFbmRcIjtcbiAgICAvLyBEUElfRm9ybWF0dGVkU3RhcnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXR0ZWRTdGFydFZhbHVlXCJdID0gXCJmb3JtYXR0ZWRTdGFydFwiO1xuICAgIC8vIERQSV9QYWlyZWRGb3JtYXR0ZWRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYWlyZWRGb3JtYXR0ZWRWYWx1ZVwiXSA9IFwicGFpcmVkRm9ybWF0dGVkVmFsdWVcIjtcbiAgICAvLyBEUElfRnJhbWVBdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZyYW1lQXR0cmlidXRlc1wiXSA9IFwiZnJhbWVBdHRyXCI7XG4gICAgLy8gRFBJX0dVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR1VJRFwiXSA9IFwiZ3VpZFwiO1xuICAgIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlRGlzcGxheU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZURpc3BsYXlOYW1lXCJdID0gXCJnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlRGlzcGxheU5hbWVcIjtcbiAgICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVBhcmVudE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR2VvZ3JhcGhpY1NlYXJjaENhbmRpZGF0ZVBhcmVudE5hbWVcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVQYXJlbnROYW1lXCI7XG4gICAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVUeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVUeXBlXCJdID0gXCJnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlVHlwZVwiO1xuICAgIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoTG9jYWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdlb2dyYXBoaWNTZWFyY2hMb2NhbGVcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hMb2NhbGVcIjtcbiAgICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaFF1ZXJ5U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkdlb2dyYXBoaWNTZWFyY2hRdWVyeVN0cmluZ1wiXSA9IFwiZ2VvZ3JhcGhpY1NlYXJjaFNlYXJjaFN0cmluZ1wiO1xuICAgIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoVUlMb2NhbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR2VvZ3JhcGhpY1NlYXJjaFVJTG9jYWxlXCJdID0gXCJnZW9ncmFwaGljU2VhcmNoVWlsb2NhbGVcIjtcbiAgICAvLyBEUElfSWNvblJlcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJY29uUmVzXCJdID0gXCJpY29uUmVzXCI7XG4gICAgLy8gRFBJX0ltYWdlSGFzaCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZUhhc2hcIl0gPSBcImltYWdlSGFzaFwiO1xuICAgIC8vIERQSV9JbWFnZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VOYW1lXCJdID0gXCJpbWFnZU5hbWVcIjtcbiAgICAvLyBEUElfSW1hZ2VSZXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VSZXNcIl0gPSBcImltYWdlUmVzXCI7XG4gICAgLy8gRFBJX0luY2x1ZGVzU2libGluZ3NQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZXNTaWJsaW5nc1Byb21wdFwiXSA9IFwiaW5jbHVkZXNTaWJsaW5nc1Byb21wdFwiO1xuICAgIC8vIERQSV9JbmNsdWRlc1N1YmZvbGRlcnNQcm9tcHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZXNTdWJmb2xkZXJzUHJvbXB0XCJdID0gXCJpbmNsdWRlc1N1YmZvbGRlcnNQcm9tcHRcIjtcbiAgICAvLyBEUElfSW5jcmVtZW50YWxTY2hlZHVsZUlEcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJbmNyZW1lbnRhbFNjaGVkdWxlSURzXCJdID0gXCJpbmNyZW1lbnRhbFNjaGVkdWxlSWRzXCI7XG4gICAgLy8gRFBJX0ludmFyaWFudEtleXdvcmQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW52YXJpYW50S2V5d29yZFwiXSA9IFwiaW52YXJpYW50S2V5d29yZFwiO1xuICAgIC8vIERQSV9Kb2luT3BlcmF0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSm9pbk9wZXJhdG9yXCJdID0gXCJqb2luT3BlcmF0b3JcIjtcbiAgICAvLyBEUElfSm9pbkV4cHJlc3Npb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSm9pbkV4cHJlc3Npb25cIl0gPSBcImpvaW5FeHByZXNzaW9uXCI7XG4gICAgLy8gRFBJX0tleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJLZXlcIl0gPSBcImtleUlkXCI7XG4gICAgLy8gRFBJX0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxhYmVsXCJdID0gXCJsYWJlbFwiO1xuICAgIC8vIERQSV9QYWlyZWRMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYWlyZWRMYWJlbFwiXSA9IFwicGFpcmVkTGFiZWxcIjtcbiAgICAvLyBEUElfTGF5b3V0SUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTGF5b3V0SURcIl0gPSBcImxheW91dElkXCI7XG4gICAgLy8gRFBJX0xlZnRKb2luRXhwcmVzc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJMZWZ0Sm9pbkV4cHJlc3Npb25cIl0gPSBcImxlZnRKb2luRXhwcmVzc2lvblwiO1xuICAgIC8vIERQSV9MaW1pdENvdW50RXhwcmVzc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJMaW1pdENvdW50RXhwcmVzc2lvblwiXSA9IFwibGltaXRDb3VudEV4cHJlc3Npb25cIjtcbiAgICAvLyBEUElfTGlua1RhcmdldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJMaW5rVGFyZ2V0XCJdID0gXCJsaW5rVGFyZ2V0XCI7XG4gICAgLy8gRFBJX0xvY2FsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJMb2NhbGVcIl0gPSBcImxvY2FsZVwiO1xuICAgIC8vIERQSV9Mb2NhbGl6ZWRLZXl3b3JkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxvY2FsaXplZEtleXdvcmRcIl0gPSBcImxvY2FsaXplZEtleXdvcmRcIjtcbiAgICAvLyBEUElfTWFwQm94R0xTdHlsZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEJveEdMU3R5bGVJZFwiXSA9IFwibWFwYm94R2xTdHlsZUlkXCI7XG4gICAgLy8gRFBJX01hcEJveFN0eWxlVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEJveFN0eWxlVXJsXCJdID0gXCJtYXBib3hTdHlsZVVybFwiO1xuICAgIC8vIERQSV9NYXBCb3hVc2VybmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hVc2VybmFtZVwiXSA9IFwibWFwYm94VXNlcm5hbWVcIjtcbiAgICAvLyBEUElfTWFwU2NhbGVSZWFkb3V0U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNjYWxlUmVhZG91dFN0cmluZ1wiXSA9IFwibWFwU2NhbGVSZWFkb3V0U3RyaW5nXCI7XG4gICAgLy8gRFBJX01hcFNjYWxlVG9vbHRpcFN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBTY2FsZVRvb2x0aXBTdHJpbmdcIl0gPSBcIm1hcFNjYWxlVG9vbHRpcFN0cmluZ1wiO1xuICAgIC8vIERQSV9NYXBTb3VyY2VOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNvdXJjZU5hbWVcIl0gPSBcIm1hcFNvdXJjZU5hbWVcIjtcbiAgICAvLyBEUElfTWF4TGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWF4TGFiZWxcIl0gPSBcIm1heExhYmVsXCI7XG4gICAgLy8gRFBJX01pbkxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbkxhYmVsXCJdID0gXCJtaW5MYWJlbFwiO1xuICAgIC8vIERQSV9Nb2RlbERlc2NyaXB0aW9uUGFyYWdyYXBoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGhcIl0gPSBcIm1vZGVsRGVzY3JpcHRpb25QYXJhZ3JhcGhcIjtcbiAgICAvLyBEUElfTmFtZVRlbXBsYXRlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5hbWVUZW1wbGF0ZVwiXSA9IFwibmFtZVRlbXBsYXRlXCI7XG4gICAgLy8gRFBJX05ld0RyaWxsUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJOZXdEcmlsbFBhdGhcIl0gPSBcIm5ld0RyaWxsUGF0aFwiO1xuICAgIC8vIERQSV9OZXdGaWVsZEZvbGRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTmV3RmllbGRGb2xkZXJOYW1lXCJdID0gXCJuZXdGaWVsZEZvbGRlck5hbWVcIjtcbiAgICAvLyBEUElfTmV3VGFibGVBbGlhcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJOZXdUYWJsZUFsaWFzXCJdID0gXCJuZXdUYWJsZUFsaWFzXCI7XG4gICAgLy8gRFBJX05vbkZvcm1hdHRlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5vbkZvcm1hdHRlZFZhbHVlXCJdID0gXCJ1bmZvcm1hdHRlZFZhbHVlXCI7XG4gICAgLy8gRFBJX09BdXRoVXNlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT0F1dGhVc2VyTmFtZVwiXSA9IFwib2F1dGhVc2VybmFtZVwiO1xuICAgIC8vIERQSV9PYmplY3ROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk9iamVjdE5hbWVcIl0gPSBcIm9iamVjdE5hbWVcIjtcbiAgICAvLyBEUElfT2JqZWN0T3ZlcnJpZGVNZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk9iamVjdE92ZXJyaWRlTWVzc2FnZVwiXSA9IFwib2JqZWN0T3ZlcnJpZGVNZXNzYWdlXCI7XG4gICAgLy8gRFBJX09sZFRhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT2xkVGFibGVBbGlhc1wiXSA9IFwib2xkVGFibGVBbGlhc1wiO1xuICAgIC8vIERQSV9PcGVyYXRpbmdTeXN0ZW0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT3BlcmF0aW5nU3lzdGVtXCJdID0gXCJvcGVyYXRpbmdTeXN0ZW1cIjtcbiAgICAvLyBEUElfT3JpZ2luYWxGaWxlUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJPcmlnaW5hbEZpbGVQYXRoXCJdID0gXCJvcmlnaW5hbEZpbGVQYXRoXCI7XG4gICAgLy8gRFBJX09yaWdpbmFsRmlsZVZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT3JpZ2luYWxGaWxlVmVyc2lvblwiXSA9IFwib3JpZ2luYWxGaWxlVmVyc2lvblwiO1xuICAgIC8vIERQSV9QYW5lRGVzY3JpcHRvcktleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lRGVzY3JpcHRvcktleVwiXSA9IFwicGFuZURlc2NyS2V5XCI7XG4gICAgLy8gRFBJX1BhcmVudE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFyZW50TmFtZVwiXSA9IFwicGFyZW50TmFtZVwiO1xuICAgIC8vIERQSV9QYXJlbnRUYWJsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYXJlbnRUYWJsZVwiXSA9IFwicGFyZW50VGFibGVcIjtcbiAgICAvLyBEUElfUGF0dGVybkZpbHRlclN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYXR0ZXJuRmlsdGVyU3RyaW5nXCJdID0gXCJwYXR0ZXJuRmlsdGVyU3RyaW5nXCI7XG4gICAgLy8gRFBJX1BlbmRpbmdDYWxjTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZW5kaW5nQ2FsY05hbWVcIl0gPSBcInBlbmRpbmdDYWxjTmFtZVwiO1xuICAgIC8vIERQSV9QZXJjZW50aWxlc1N0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZXJjZW50aWxlc1N0cmluZ1wiXSA9IFwicGVyY2VudGlsZXNTdHJpbmdcIjtcbiAgICAvLyBEUElfUHJvamVjdE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUHJvamVjdE5hbWVcIl0gPSBcInByb2plY3ROYW1lXCI7XG4gICAgLy8gRFBJX1Byb3BlcnR5TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQcm9wZXJ0eU5hbWVcIl0gPSBcInByb3BlcnR5TmFtZVwiO1xuICAgIC8vIERQSV9RdWlja0ZpbHRlclRpdGxlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJRdWlja0ZpbHRlclRpdGxlQ2FwdGlvblwiXSA9IFwicXVpY2tGaWx0ZXJUaXRsZUNhcHRpb25cIjtcbiAgICAvLyBEUElfUmFuZ2VEaWZmU3RyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmdlRGlmZlN0clwiXSA9IFwiZGlmZlZhbHVlXCI7XG4gICAgLy8gRFBJX1JhbmdlTWF4U3RyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmdlTWF4U3RyXCJdID0gXCJtYXhWYWx1ZVwiO1xuICAgIC8vIERQSV9SYW5nZU1pblN0ciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSYW5nZU1pblN0clwiXSA9IFwibWluVmFsdWVcIjtcbiAgICAvLyBEUElfUmVjb3ZlcmVkRmlsZVBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVjb3ZlcmVkRmlsZVBhdGhcIl0gPSBcInJlY292ZXJlZEZpbGVQYXRoXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVTcGVjaWZpY2F0aW9uSWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlTGluZVNwZWNpZmljYXRpb25JZFwiXSA9IFwicmVmZXJlbmNlTGluZUlkXCI7XG4gICAgLy8gRFBJX1JlcGxhY2VGaWVsZFByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSZXBsYWNlRmllbGRQcm9tcHRcIl0gPSBcInJlcGxhY2VGaWVsZFByb21wdFwiO1xuICAgIC8vIERQSV9SaWdodEpvaW5FeHByZXNzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJpZ2h0Sm9pbkV4cHJlc3Npb25cIl0gPSBcInJpZ2h0Sm9pbkV4cHJlc3Npb25cIjtcbiAgICAvLyBEUElfUm9vdFBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUm9vdFBhdGhcIl0gPSBcInJvb3RQYXRoXCI7XG4gICAgLy8gRFBJX1J1bnRpbWVGaW5hbERhdGFzdG9yZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSdW50aW1lRmluYWxEYXRhc3RvcmVcIl0gPSBcInJ1bnRpbWVGaW5hbERhdGFzdG9yZVwiO1xuICAgIC8vIERQSV9SdW50aW1lSW5pdGlhbERhdGFzdG9yZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSdW50aW1lSW5pdGlhbERhdGFzdG9yZVwiXSA9IFwicnVudGltZUluaXRpYWxEYXRhc3RvcmVcIjtcbiAgICAvLyBEUElfUnVudGltZVZUTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSdW50aW1lVlRMXCJdID0gXCJydW50aW1lVnRsXCI7XG4gICAgLy8gRFBJX1NhbXBsZURhdGFTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2FtcGxlRGF0YVN0cmluZ1wiXSA9IFwic2FtcGxlRGF0YVwiO1xuICAgIC8vIERQSV9TY2hlZHVsZUlEcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTY2hlZHVsZUlEc1wiXSA9IFwic2NoZWR1bGVJZHNcIjtcbiAgICAvLyBEUElfU2NoZW1hRmllbGRJY29uUmVzb3VyY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hRmllbGRJY29uUmVzb3VyY2VcIl0gPSBcImZpZWxkSWNvblJlc1wiO1xuICAgIC8vIERQSV9TY3JlZW5OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNjcmVlbk5hbWVcIl0gPSBcInNjcmVlbk5hbWVcIjtcbiAgICAvLyBEUElfU2NyaXB0Q29tbWFuZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTY3JpcHRDb21tYW5kXCJdID0gXCJjb21tYW5kXCI7XG4gICAgLy8gRFBJX1NlY29uZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlY29uZFZhbHVlXCJdID0gXCJzZWNvbmRWYWx1ZVwiO1xuICAgIC8vIERQSV9TZWxlY3RlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkVmFsdWVcIl0gPSBcInNlbGVjdGVkVmFsdWVcIjtcbiAgICAvLyBEUElfU2hhcGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNoYXBlTmFtZVwiXSA9IFwic2hhcGVOYW1lXCI7XG4gICAgLy8gRFBJX1NoZWV0SWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRJZFwiXSA9IFwic2hlZXRJZFwiO1xuICAgIC8vIERQSV9TaG93RGF0YVRhYmxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dEYXRhVGFibGVcIl0gPSBcInNob3dEYXRhVGFibGVcIjtcbiAgICAvLyBEUElfU2ltcGxlQ29tbWFuZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTaW1wbGVDb21tYW5kXCJdID0gXCJzaW1wbGVDb21tYW5kXCI7XG4gICAgLy8gRFBJX1NvcnRNb2RlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTb3J0TW9kZUNhcHRpb25cIl0gPSBcInNvcnRNb2RlQ2FwdGlvblwiO1xuICAgIC8vIERQSV9Tb3VyY2VOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNvdXJjZU5hbWVcIl0gPSBcInNvdXJjZU5hbWVcIjtcbiAgICAvLyBEUElfU291cmNlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTb3VyY2VUZXh0XCJdID0gXCJzb3VyY2VUZXh0XCI7XG4gICAgLy8gRFBJX1NwZWNpYWxWYWx1ZVRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3BlY2lhbFZhbHVlVGV4dFwiXSA9IFwic3BlY2lhbFZhbHVlVGV4dFwiO1xuICAgIC8vIERQSV9TdGF0aWNJbWFnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdGF0aWNJbWFnZVwiXSA9IFwic3RhdGljSW1hZ2VcIjtcbiAgICAvLyBEUElfU3RvcnlQb2ludEJhc2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3RvcnlQb2ludEJhc2VcIl0gPSBcInN0b3J5UG9pbnRCYXNlXCI7XG4gICAgLy8gRFBJX1N0b3J5UG9pbnRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UG9pbnRDYXB0aW9uXCJdID0gXCJzdG9yeVBvaW50Q2FwdGlvblwiO1xuICAgIC8vIERQSV9TdG9yeWJvYXJkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5Ym9hcmRcIl0gPSBcInN0b3J5Ym9hcmRcIjtcbiAgICAvLyBEUElfU3R5bGVkTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3R5bGVkTGFiZWxcIl0gPSBcInN0eWxlZExhYmVsXCI7XG4gICAgLy8gRFBJX1N1bW1hcnlDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN1bW1hcnlDYXB0aW9uXCJdID0gXCJzdW1tYXJ5Q2FwdGlvblwiO1xuICAgIC8vIERQSV9TdW1tYXJ5RmllbGQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3VtbWFyeUZpZWxkXCJdID0gXCJzdW1tYXJ5RmllbGRcIjtcbiAgICAvLyBEUElfVGFibGVhdVZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdVZlcnNpb25cIl0gPSBcInRhYmxlYXVWZXJzaW9uXCI7XG4gICAgLy8gRFBJX1RhYmxlRmlsdGVyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlRmlsdGVyXCJdID0gXCJ0YWJsZUZpbHRlclwiO1xuICAgIC8vIERQSV9UYWJsZUZpbHRlclByb21wdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUZpbHRlclByb21wdFwiXSA9IFwidGFibGVGaWx0ZXJQcm9tcHRcIjtcbiAgICAvLyBEUElfVGFnc0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhZ3NMYWJlbFwiXSA9IFwidGFnc0xhYmVsXCI7XG4gICAgLy8gRFBJX1RhcmdldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYXJnZXRcIl0gPSBcInRhcmdldFwiO1xuICAgIC8vIERQSV9UaHVtYm5haWxHcm91cCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUaHVtYm5haWxHcm91cFwiXSA9IFwidGh1bWJuYWlsR3JvdXBcIjtcbiAgICAvLyBEUElfVGh1bWJuYWlsVXNlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUaHVtYm5haWxVc2VyXCJdID0gXCJ0aHVtYm5haWxVc2VyXCI7XG4gICAgLy8gRFBJX1RpbWVGb3JtYXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGltZUZvcm1hdFwiXSA9IFwidGltZUZvcm1hdFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVFcnJvclN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUcmVuZExpbmVFcnJvclN0cmluZ1wiXSA9IFwidHJlbmRMaW5lRXJyb3JTdHJpbmdcIjtcbiAgICAvLyBEUElfVHJlbmRMaW5lTW9kZWxGb3JtdWxhLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZU1vZGVsRm9ybXVsYVwiXSA9IFwidHJlbmRMaW5lTW9kZWxGb3JtdWxhXCI7XG4gICAgLy8gRFBJX1VSTFN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJVUkxTdHJpbmdcIl0gPSBcInVybFN0cmluZ1wiO1xuICAgIC8vIERQSV9VUkxUZXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVSTFRlc3RcIl0gPSBcInVybFRlc3RcIjtcbiAgICAvLyBEUElfVmFsaWRhdGlvbk1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVmFsaWRhdGlvbk1lc3NhZ2VcIl0gPSBcInZhbGlkYXRpb25NZXNzYWdlXCI7XG4gICAgLy8gRFBJX1ZhbHVlU3RyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlU3RyXCJdID0gXCJ2YWx1ZVN0cmluZ1wiO1xuICAgIC8vIERQSV9WZXJpZmllZE5vbkZvcm1hdHRlZFZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZlcmlmaWVkTm9uRm9ybWF0dGVkVmFsdWVcIl0gPSBcInZlcmlmaWVkVW5mb3JtYXR0ZWRWYWx1ZVwiO1xuICAgIC8vIERQSV9Xb3JrYm9va0Z1bGxQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIldvcmtib29rRnVsbFBhdGhcIl0gPSBcIndvcmtib29rRnVsbFBhdGhcIjtcbiAgICAvLyBEUElfV2luZG93VGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV2luZG93VGl0bGVcIl0gPSBcIndpbmRvd1RpdGxlXCI7XG4gICAgLy8gRFBJX1pvbmVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVOYW1lXCJdID0gXCJ6b25lTmFtZVwiO1xuICAgIC8vIERQSV9ab25lUGFyYW0sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiWm9uZVBhcmFtXCJdID0gXCJ6b25lUGFyYW1cIjtcbiAgICAvLyBEUElfRGF0YUFsZXJ0RXJyb3JUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydEVycm9yVGV4dFwiXSA9IFwiZGF0YUFsZXJ0RXJyb3JUZXh0XCI7XG4gICAgLy8gRFBJX0V4dHJhY3RUZW1wRGlyZWN0b3J5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RUZW1wRGlyZWN0b3J5XCJdID0gXCJleHRyYWN0VGVtcERpclwiO1xuICAgIC8vIERQSV9EU1N1YkNsYXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRTU3ViQ2xhc3NcIl0gPSBcImRzU3ViQ2xhc3NcIjtcbiAgICAvLyBEUElfRGJnQ29tbWFuZExpbmUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGJnQ29tbWFuZExpbmVcIl0gPSBcImRlYnVnQ29tbWFuZExpbmVcIjtcbiAgICAvLyBEUElfRGJnTG9nUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYmdMb2dQYXRoXCJdID0gXCJkZWJ1Z0xvZ1BhdGhcIjtcbiAgICAvLyBEUElfRGJnT1NWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRiZ09TVmVyc2lvblwiXSA9IFwiZGVidWdPc1ZlcnNpb25cIjtcbiAgICAvLyBEUElfRGJnVXNlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGJnVXNlck5hbWVcIl0gPSBcImRlYnVnVXNlcm5hbWVcIjtcbiAgICAvLyBEUElfRXJyb3JNc2csIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JNc2dcIl0gPSBcImVycm9yTWVzc2FnZVwiO1xuICAgIC8vIERQSV9FcnJvclN0YWNrVHJhY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JTdGFja1RyYWNlXCJdID0gXCJlcnJvclN0YWNrVHJhY2VcIjtcbiAgICAvLyBEUElfRXJyb3JTdHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JTdHJcIl0gPSBcImVycm9yU3RyaW5nXCI7XG4gICAgLy8gRFBJX0V2ZW50TWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFdmVudE1lc3NhZ2VcIl0gPSBcImV2ZW50TWVzc2FnZVwiO1xuICAgIC8vIERQSV9FdmVudFRpbWVzdGFtcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFdmVudFRpbWVzdGFtcFwiXSA9IFwiZXZlbnRUaW1lc3RhbXBcIjtcbiAgICAvLyBEUElfRXh0cmFjdERlbHRhUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0RGVsdGFQYXRoXCJdID0gXCJleHRyYWN0RGVsdGFQYXRoXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RQYXRoXCJdID0gXCJleHRyYWN0UGF0aFwiO1xuICAgIC8vIERQSV9FeHRyYWN0U3VnZ2VzdGVkUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0U3VnZ2VzdGVkUGF0aFwiXSA9IFwic3VnZ2VzdGVkRXh0cmFjdFBhdGhcIjtcbiAgICAvLyBEUElfRXh0cmFjdFRhc2tTdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RUYXNrU3VtbWFyeVwiXSA9IFwiZXh0cmFjdFRhc2tTdW1tYXJ5XCI7XG4gICAgLy8gRFBJX0ZhY3RvcnNTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmFjdG9yc1N0cmluZ1wiXSA9IFwiZmFjdG9yc1N0clwiO1xuICAgIC8vIERQSV9Gb3JtYXR0ZWRGYW1pbHlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdHRlZEZhbWlseU5hbWVcIl0gPSBcImZvcm1hdHRlZEZhbWlseU5hbWVcIjtcbiAgICAvLyBEUElfRnVuY3Rpb25TaWduYXR1cmUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRnVuY3Rpb25TaWduYXR1cmVcIl0gPSBcImZ1bmNTaWdcIjtcbiAgICAvLyBEUElfRnVuY3Rpb25Ub29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZ1bmN0aW9uVG9vbHRpcFwiXSA9IFwiZnVuY1Rvb2x0aXBcIjtcbiAgICAvLyBEUElfSGVscENvbnRlbnRzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkhlbHBDb250ZW50c1wiXSA9IFwiaGVscENvbnRlbnRzXCI7XG4gICAgLy8gRFBJX01hcEF0dHJpYnV0aW9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBBdHRyaWJ1dGlvblRleHRcIl0gPSBcIm1hcEF0dHJpYnV0aW9uVGV4dFwiO1xuICAgIC8vIERQSV9NYXBBdHRyaWJ1dGlvblRleHRTaXplLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEF0dHJpYnV0aW9uVGV4dFNpemVcIl0gPSBcIm1hcEF0dHJpYnV0aW9uVGV4dFNpemVcIjtcbiAgICAvLyBEUElfTWFwQXR0cmlidXRpb25VcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwQXR0cmlidXRpb25VcmxcIl0gPSBcIm1hcEF0dHJpYnV0aW9uVXJsXCI7XG4gICAgLy8gRFBJX01hcEJveEVycm9yTWVzc2FnZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hFcnJvck1lc3NhZ2VcIl0gPSBcIm1hcGJveEVycm9yTWVzc2FnZVwiO1xuICAgIC8vIERQSV9NYXBCb3hPbGRTdHlsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwQm94T2xkU3R5bGVOYW1lXCJdID0gXCJtYXBib3hPbGRTdHlsZU5hbWVcIjtcbiAgICAvLyBEUElfTWFwQm94U2VsZWN0ZWRTdHlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hTZWxlY3RlZFN0eWxlXCJdID0gXCJtYXBib3hTZWxlY3RlZFN0eWxlXCI7XG4gICAgLy8gRFBJX01hcEJveFN0eWxlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hTdHlsZU5hbWVcIl0gPSBcIm1hcGJveFN0eWxlTmFtZVwiO1xuICAgIC8vIERQSV9NYXBMYXllclJlcXVlc3QsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwTGF5ZXJSZXF1ZXN0XCJdID0gXCJtYXBMYXllclJlcXVlc3RcIjtcbiAgICAvLyBEUElfTWFwU2VydmVyS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNlcnZlcktleVwiXSA9IFwibWFwU2VydmVyS2V5XCI7XG4gICAgLy8gRFBJX01hcFRpbGVTZXJ2ZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwVGlsZVNlcnZlclwiXSA9IFwibWFwVGlsZVNlcnZlclwiO1xuICAgIC8vIERQSV9NYXBUaWxlVXJsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFRpbGVVcmxcIl0gPSBcIm1hcFRpbGVVcmxcIjtcbiAgICAvLyBEUElfUGVyY2VudGFnZXNTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudGFnZXNTdHJpbmdcIl0gPSBcInBlcmNlbnRhZ2VzU3RyXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hFcnJvck1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaEVycm9yTWVzc2FnZVwiXSA9IFwicHVibGlzaEVycm9yTWVzc2FnZVwiO1xuICAgIC8vIERQSV9UZGVQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRkZVBhdGhcIl0gPSBcInRkZVBhdGhcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uQ29tcG9uZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25Db21wb25lbnROYW1lXCJdID0gXCJ1aUF1dG9tYXRpb25Db21wb25lbnROYW1lXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbkVuZFRpbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uRW5kVGltZVwiXSA9IFwidWlBdXRvbWF0aW9uRW5kVGltZVwiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25OYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbk5hbWVcIl0gPSBcInVpQXV0b21hdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uU3RhcnRUaW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvblN0YXJ0VGltZVwiXSA9IFwidWlBdXRvbWF0aW9uU3RhcnRUaW1lXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvblZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvblZhbHVlXCJdID0gXCJ1aUF1dG9tYXRpb25WYWx1ZVwiO1xuICAgIC8vIERQSV9XTVNDb25uZWN0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJXTVNDb25uZWN0aW9uTmFtZVwiXSA9IFwid21zQ29ubmVjdGlvbk5hbWVcIjtcbiAgICAvLyBEUElfV01TT2xkQ29ubmVjdGlvbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV01TT2xkQ29ubmVjdGlvbk5hbWVcIl0gPSBcIndtc09sZENvbm5lY3Rpb25OYW1lXCI7XG4gICAgLy8gRFBJX1dNU1NlcnZlclVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJXTVNTZXJ2ZXJVcmxcIl0gPSBcIndtc1NlcnZlclVybFwiO1xuICAgIC8vIERQSV9BYm91dEJ1aWxkVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBYm91dEJ1aWxkVmVyc2lvblwiXSA9IFwiYWJvdXRCdWlsZFZlcnNpb25cIjtcbiAgICAvLyBEUElfQWN0aW9uRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGlvbkZpZWxkc1wiXSA9IFwiYWN0aW9uRmllbGRzXCI7XG4gICAgLy8gRFBJX0FkZFZhcmlhYmxlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWRkVmFyaWFibGVMYWJlbFwiXSA9IFwiYWRkVmFyaWFibGVMYWJlbFwiO1xuICAgIC8vIERQSV9BZGRWYXJpYWJsZVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQWRkVmFyaWFibGVUb29sdGlwXCJdID0gXCJhZGRWYXJpYWJsZVRvb2x0aXBcIjtcbiAgICAvLyBEUElfQWxsb3dlZERhdGFTb3VyY2VzQnlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFsbG93ZWREYXRhU291cmNlc0J5TmFtZVwiXSA9IFwiYWxsb3dlZERhdGFTb3VyY2VzQnlOYW1lXCI7XG4gICAgLy8gRFBJX0FwcEFib3V0VmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBcHBBYm91dFZlcnNpb25cIl0gPSBcImFwcEFib3V0VmVyc2lvblwiO1xuICAgIC8vIERQSV9BcHBCdWlsZEJyYW5jaE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXBwQnVpbGRCcmFuY2hOYW1lXCJdID0gXCJhcHBCdWlsZEJyYW5jaE5hbWVcIjtcbiAgICAvLyBEUElfQXBwQnVpbGRWZXJzaW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcEJ1aWxkVmVyc2lvblwiXSA9IFwiYXBwQnVpbGRWZXJzaW9uXCI7XG4gICAgLy8gRFBJX0FwcEV4dGVybmFsVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBcHBFeHRlcm5hbFZlcnNpb25cIl0gPSBcImFwcEV4dGVybmFsVmVyc2lvblwiO1xuICAgIC8vIERQSV9BcHBOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcE5hbWVcIl0gPSBcImFwcE5hbWVcIjtcbiAgICAvLyBEUElfQXBwUHJvZHVjdFZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXBwUHJvZHVjdFZlcnNpb25cIl0gPSBcImFwcFByb2R1Y3RWZXJzaW9uXCI7XG4gICAgLy8gRFBJX09yaWdpbmFsVmVyc2lvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJPcmlnaW5hbFZlcnNpb25cIl0gPSBcIm9yaWdpbmFsVmVyc2lvblwiO1xuICAgIC8vIERQSV9BdFRoZUxldmVsU3BlY2lhbENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXRUaGVMZXZlbFNwZWNpYWxDYXB0aW9uXCJdID0gXCJhdFRoZUxldmVsU3BlY2lhbENhcHRpb25cIjtcbiAgICAvLyBEUElfQXV0b0NvbXBsZXRlQ2FsYywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvQ29tcGxldGVDYWxjXCJdID0gXCJhY0NhbGNcIjtcbiAgICAvLyBEUElfQ1NWUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDU1ZQYXRoXCJdID0gXCJjc3ZQYXRoXCI7XG4gICAgLy8gRFBJX0NvbW1hbmROYW1lc3BhY2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZE5hbWVzcGFjZVwiXSA9IFwiY29tbWFuZE5hbWVzcGFjZVwiO1xuICAgIC8vIERQSV9Db25kaXRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29uZGl0aW9uXCJdID0gXCJjb25kaXRpb25cIjtcbiAgICAvLyBEUElfQ29uZGl0aW9uU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb25kaXRpb25TdW1tYXJ5XCJdID0gXCJjb25kaXRpb25TdW1tYXJ5XCI7XG4gICAgLy8gRFBJX0NvbmZpcm1hdGlvbk1zZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb25maXJtYXRpb25Nc2dcIl0gPSBcImNvbmZpcm1hdGlvbk1zZ1wiO1xuICAgIC8vIERQSV9EYXNoYm9hcmRUeXBlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRUeXBlVGV4dFwiXSA9IFwiZGFzaGJvYXJkVHlwZVwiO1xuICAgIC8vIERQSV9EYXRhc2VydmVyUHVibGljQWRkcmVzcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhc2VydmVyUHVibGljQWRkcmVzc1wiXSA9IFwiZGF0YXNlcnZlclB1YmxpY0FkZHJlc3NcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZUZpbGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VGaWxlTmFtZVwiXSA9IFwiZGF0YXNvdXJjZUZpbGVOYW1lXCI7XG4gICAgLy8gRFBJX0RlY2ltYWxNYXJrLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRlY2ltYWxNYXJrXCJdID0gXCJkZWNpbWFsTWFya1wiO1xuICAgIC8vIERQSV9EZWxldGVWYXJpYWJsZVRvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGVsZXRlVmFyaWFibGVUb29sdGlwXCJdID0gXCJkZWxldGVWYXJpYWJsZVRvb2x0aXBcIjtcbiAgICAvLyBEUElfRGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGlhbG9nVGl0bGVcIl0gPSBcImRpYWxvZ1RpdGxlXCI7XG4gICAgLy8gRFBJX0Rpc3BsYXlWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEaXNwbGF5VmFsdWVcIl0gPSBcImRpc3BsYXlWYWx1ZVwiO1xuICAgIC8vIERQSV9Ub29sdGlwVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVG9vbHRpcFZhbHVlXCJdID0gXCJ0b29sdGlwVmFsdWVcIjtcbiAgICAvLyBEUElfRHN0UGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEc3RQYXRoXCJdID0gXCJkc3RQYXRoXCI7XG4gICAgLy8gRFBJX0VkaXRXaWRnZXRIZWFkZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRWRpdFdpZGdldEhlYWRlclwiXSA9IFwiZWRpdFdpZGdldEhlYWRlclwiO1xuICAgIC8vIERQSV9FZGl0V2lkZ2V0SW5zdHJ1Y3Rpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRWRpdFdpZGdldEluc3RydWN0aW9uXCJdID0gXCJlZGl0V2lkZ2V0SW5zdHJ1Y3Rpb25cIjtcbiAgICAvLyBEUElfRW5kU2VsZWN0aW9uQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFbmRTZWxlY3Rpb25DYXB0aW9uXCJdID0gXCJlbmRTZWxlY3Rpb25DYXB0aW9uXCI7XG4gICAgLy8gRFBJX0Vycm9yRGlhbG9nVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JEaWFsb2dUaXRsZVwiXSA9IFwiZXJyb3JEaWFsb2dUaXRsZVwiO1xuICAgIC8vIERQSV9FcnJvckhlbHBMaW5rLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkVycm9ySGVscExpbmtcIl0gPSBcImVycm9ySGVscExpbmtcIjtcbiAgICAvLyBEUElfRXJyb3JTaG9ydE1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JTaG9ydE1lc3NhZ2VcIl0gPSBcImVycm9yU2hvcnRNZXNzYWdlXCI7XG4gICAgLy8gRFBJX0ZpbHRlclNlYXJjaFF1ZXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaFF1ZXJ5XCJdID0gXCJmaWx0ZXJTZWFyY2hRdWVyeVwiO1xuICAgIC8vIERQSV9Gcm9tTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRnJvbUxhYmVsXCJdID0gXCJmcm9tTGFiZWxcIjtcbiAgICAvLyBEUElfRnVuY3Rpb25IZWxwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZ1bmN0aW9uSGVscFwiXSA9IFwiZnVuY3Rpb25IZWxwXCI7XG4gICAgLy8gRFBJX0luc3RydWN0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJbnN0cnVjdGlvbnNcIl0gPSBcImluc3RydWN0aW9uc1wiO1xuICAgIC8vIERQSV9MYXJnZVVuaXREaXNwbGF5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxhcmdlVW5pdERpc3BsYXlcIl0gPSBcImxhcmdlVW5pdERpc3BsYXlcIjtcbiAgICAvLyBEUElfTGltaXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTGltaXRcIl0gPSBcImxpbWl0XCI7XG4gICAgLy8gRFBJX0xpc3RWaWV3TmFtZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxpc3RWaWV3TmFtZUxhYmVsXCJdID0gXCJsaXN0Vmlld05hbWVMYWJlbFwiO1xuICAgIC8vIERQSV9MaXN0Vmlld1ZhbHVlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTGlzdFZpZXdWYWx1ZUxhYmVsXCJdID0gXCJsaXN0Vmlld1ZhbHVlTGFiZWxcIjtcbiAgICAvLyBEUElfTWFwU2NhbGVSZWFkb3V0VW5pdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBTY2FsZVJlYWRvdXRVbml0XCJdID0gXCJtYXBTY2FsZVJlYWRvdXRVbml0XCI7XG4gICAgLy8gRFBJX01lYXN1cmVEaW1lbnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWVhc3VyZURpbWVuc2lvblwiXSA9IFwibWVhc3VyZXNEaW1lbnNpb25cIjtcbiAgICAvLyBEUElfTWltZVR5cGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWltZVR5cGVcIl0gPSBcIm1pbWVUeXBlXCI7XG4gICAgLy8gRFBJX01pbmltaXplZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWluaW1pemVkTmFtZVwiXSA9IFwibWluTmFtZVwiO1xuICAgIC8vIERQSV9Ob3RpZmljYXRpb25Nc2csIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTm90aWZpY2F0aW9uTXNnXCJdID0gXCJub3RpZmljYXRpb25Nc2dcIjtcbiAgICAvLyBEUElfT3BlcmF0aW9uTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJPcGVyYXRpb25OYW1lXCJdID0gXCJvcGVyYXRpb25OYW1lXCI7XG4gICAgLy8gRFBJX1BhZ2VUaXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlVGl0bGVcIl0gPSBcInBhZ2VUaXRsZVwiO1xuICAgIC8vIERQSV9QYXR0ZXJuU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYXR0ZXJuU3VtbWFyeVwiXSA9IFwicGF0dGVyblN1bW1hcnlcIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlTGluZUlkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVJZFwiXSA9IFwicmVmTGluZUlkXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVQYWlyZWRJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VMaW5lUGFpcmVkSWRcIl0gPSBcInJlZkxpbmVQYWlyZWRJZFwiO1xuICAgIC8vIERQSV9SZXBsYWNlVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSZXBsYWNlVGV4dFwiXSA9IFwicmVwbGFjZVRleHRcIjtcbiAgICAvLyBEUElfUmVxdWlyZWRWYXJpYWJsZU1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVxdWlyZWRWYXJpYWJsZU1lc3NhZ2VcIl0gPSBcInJlcXVpcmVkVmFyaWFibGVNZXNzYWdlXCI7XG4gICAgLy8gRFBJX1Jlc3RhcnRFdmVyeVNwZWNpYWxDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc3RhcnRFdmVyeVNwZWNpYWxDYXB0aW9uXCJdID0gXCJyZXN0YXJ0RXZlcnlTcGVjaWFsQ2FwdGlvblwiO1xuICAgIC8vIERQSV9Sb290LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJvb3RcIl0gPSBcInJvb3RcIjtcbiAgICAvLyBEUElfU2VsZWN0aW9uU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25TdW1tYXJ5XCJdID0gXCJzZWxlY3Rpb25TdW1tYXJ5XCI7XG4gICAgLy8gRFBJX1Nlc3Npb25BdHRyaWJ1dGVLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2Vzc2lvbkF0dHJpYnV0ZUtleVwiXSA9IFwic2Vzc2lvbkF0dHJpYnV0ZUtleVwiO1xuICAgIC8vIERQSV9TZXNzaW9uQXR0cmlidXRlVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2Vzc2lvbkF0dHJpYnV0ZVZhbHVlXCJdID0gXCJzZXNzaW9uQXR0cmlidXRlVmFsdWVcIjtcbiAgICAvLyBEUElfU2hlZXRBdHRyaWJ1dGVLZXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRBdHRyaWJ1dGVLZXlcIl0gPSBcImJhc2VTaGVldEF0dHJpYnV0ZUtleVwiO1xuICAgIC8vIERQSV9TaGVldEF0dHJpYnV0ZVZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0QXR0cmlidXRlVmFsdWVcIl0gPSBcImJhc2VTaGVldEF0dHJpYnV0ZVZhbHVlXCI7XG4gICAgLy8gRFBJX1NtYWxsVW5pdERpc3BsYXksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU21hbGxVbml0RGlzcGxheVwiXSA9IFwic21hbGxVbml0RGlzcGxheVwiO1xuICAgIC8vIERQSV9Tb3VyY2VDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNvdXJjZUNhcHRpb25cIl0gPSBcInNvdXJjZUNhcHRpb25cIjtcbiAgICAvLyBEUElfU3JjUGF0aCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTcmNQYXRoXCJdID0gXCJzcmNQYXRoXCI7XG4gICAgLy8gRFBJX1N0YXJ0U2VsZWN0aW9uQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdGFydFNlbGVjdGlvbkNhcHRpb25cIl0gPSBcInN0YXJ0U2VsZWN0aW9uQ2FwdGlvblwiO1xuICAgIC8vIERQSV9TdWJ0aXRsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdWJ0aXRsZVwiXSA9IFwic3VidGl0bGVcIjtcbiAgICAvLyBEUElfVGFibGVhdVNlcnZlclNpdGVOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlYXVTZXJ2ZXJTaXRlTmFtZVwiXSA9IFwidGFibGVhdVNlcnZlclNpdGVOYW1lXCI7XG4gICAgLy8gRFBJX1RhcmdldENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0Q2FwdGlvblwiXSA9IFwidGFyZ2V0Q2FwdGlvblwiO1xuICAgIC8vIERQSV9UaHVtYm5haWxQYXRoLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRodW1ibmFpbFBhdGhcIl0gPSBcInRodW1ibmFpbFBhdGhcIjtcbiAgICAvLyBEUElfVG9MYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUb0xhYmVsXCJdID0gXCJ0b0xhYmVsXCI7XG4gICAgLy8gRFBJX1VSTEFkZHJlc3MsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVVJMQWRkcmVzc1wiXSA9IFwidXJsQWRkcmVzc1wiO1xuICAgIC8vIERQSV9WYWx1ZXNUYWJsZUhlYWRlciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJWYWx1ZXNUYWJsZUhlYWRlclwiXSA9IFwidmFsdWVzVGFibGVIZWFkZXJcIjtcbiAgICAvLyBEUElfVmFsdWVzVGFibGVIZWFkZXIyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlc1RhYmxlSGVhZGVyMlwiXSA9IFwidmFsdWVzVGFibGVIZWFkZXIyXCI7XG4gICAgLy8gRFBJX1ZhcmlhYmxlRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVmFyaWFibGVEZXNjcmlwdGlvblwiXSA9IFwidmFyaWFibGVEZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9WYXJpYWJsZURpc3BsYXlOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlRGlzcGxheU5hbWVcIl0gPSBcInZhcmlhYmxlRGlzcGxheU5hbWVcIjtcbiAgICAvLyBEUElfVmFyaWFibGVHVUlELCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlR1VJRFwiXSA9IFwidmFyaWFibGVHdWlkXCI7XG4gICAgLy8gRFBJX1ZlcmJvc2VOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZlcmJvc2VOYW1lXCJdID0gXCJ2ZXJib3NlTmFtZVwiO1xuICAgIC8vIERQSV9WaWV3SWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVmlld0lkXCJdID0gXCJ2aWV3SWRcIjtcbiAgICAvLyBEUElfV2FybmluZzEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV2FybmluZzFcIl0gPSBcIndhcm5pbmcxXCI7XG4gICAgLy8gRFBJX1dhcm5pbmcyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIldhcm5pbmcyXCJdID0gXCJ3YXJuaW5nMlwiO1xuICAgIC8vIERQSV9SZWZyZXNoVG9rZW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVmcmVzaFRva2VuXCJdID0gXCJyZWZyZXNoX3Rva2VuXCI7XG4gICAgLy8gRFBJX1Rva2VuVHlwZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUb2tlblR5cGVcIl0gPSBcInRva2VuX3R5cGVcIjtcbiAgICAvLyBEUElfWFNSRlRva2VuLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlhTUkZUb2tlblwiXSA9IFwieHNyZl90b2tlblwiO1xuICAgIC8vIERQSV9BeGlzU3VidGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQXhpc1N1YnRpdGxlXCJdID0gXCJheGlzU3VidGl0bGVcIjtcbiAgICAvLyBEUElfQXhpc1RpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNUaXRsZVwiXSA9IFwiYXhpc1RpdGxlXCI7XG4gICAgLy8gRFBJX1RpY2tNYXJrT3JpZ2luRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRpY2tNYXJrT3JpZ2luRGF0YVZhbHVlXCJdID0gXCJ0aWNrTWFya09yaWdpbkRhdGFWYWx1ZVwiO1xuICAgIC8vIERQSV9UaWNrTWFya09yaWdpbkRhdGFWYWx1ZU5vVGltZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUaWNrTWFya09yaWdpbkRhdGFWYWx1ZU5vVGltZVwiXSA9IFwidGlja01hcmtPcmlnaW5EYXRhVmFsdWVOb1RpbWVcIjtcbiAgICAvLyBEUElfVGlja01hcmtTcGFjaW5nRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRpY2tNYXJrU3BhY2luZ0RhdGFWYWx1ZVwiXSA9IFwidGlja01hcmtTcGFjaW5nRGF0YVZhbHVlXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RBY3Rpb25Mb2NhbGl6ZWQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdEFjdGlvbkxvY2FsaXplZFwiXSA9IFwiZXh0cmFjdEFjdGlvbkxvY2FsaXplZFwiO1xuICAgIC8vIERQSV9FeHRyYWN0U291cmNlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RTb3VyY2VcIl0gPSBcImV4dHJhY3RTb3VyY2VcIjtcbiAgICAvLyBEUElfRmlsZUNvbnRlbnRzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGVDb250ZW50c1wiXSA9IFwiZmlsZUNvbnRlbnRzXCI7XG4gICAgLy8gRFBJX1NhdmVJbWFnZVBhdGgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2F2ZUltYWdlUGF0aFwiXSA9IFwic2F2ZUltYWdlUGF0aFwiO1xuICAgIC8vIERQSV9XaWRnZXRVSUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV2lkZ2V0VUlEXCJdID0gXCJ3aWRnZXRVbmlxdWVJZFwiO1xuICAgIC8vIERQSV9EYXRlUHJvcGVydGllc0Rpc3BsYXlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHRcIl0gPSBcImRhdGVQcm9wZXJ0aWVzRGlzcGxheVRleHRcIjtcbiAgICAvLyBEUElfRGF0ZVByb3BlcnRpZXNIZWxwZXJUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVQcm9wZXJ0aWVzSGVscGVyVGV4dFwiXSA9IFwiZGF0ZVByb3BlcnRpZXNIZWxwZXJUZXh0XCI7XG4gICAgLy8gRFBJX0V2ZW50TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFdmVudE5hbWVcIl0gPSBcImV2ZW50TmFtZVwiO1xuICAgIC8vIERQSV9FeGNlcHRpb25UeXBlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4Y2VwdGlvblR5cGVcIl0gPSBcImV4Y2VwdGlvblR5cGVcIjtcbiAgICAvLyBEUElfU2VhcmNoUGxhY2Vob2xkZXIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2VhcmNoUGxhY2Vob2xkZXJcIl0gPSBcInNlYXJjaFBsYWNlaG9sZGVyXCI7XG4gICAgLy8gRFBJX1RhcmdldFZlcnNpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0VmVyc2lvblwiXSA9IFwidGFyZ2V0VmVyc2lvblwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVEaXNwbGF5U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFWYWx1ZURpc3BsYXlTdHJpbmdcIl0gPSBcImRhdGFWYWx1ZURpc3BsYXlTdHJpbmdcIjtcbiAgICAvLyBEUElfRG9tYWluU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpblN0cmluZ1wiXSA9IFwiZG9tYWluU3RyaW5nXCI7XG4gICAgLy8gRFBJX1Jhd0RhdGFWYWx1ZVN0cmluZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSYXdEYXRhVmFsdWVTdHJpbmdcIl0gPSBcInJhd0RhdGFWYWx1ZVN0cmluZ1wiO1xuICAgIC8vIERQSV9SaWNoVGV4dERpYWxvZ1RpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0RGlhbG9nVGl0bGVcIl0gPSBcInJpY2hUZXh0RGlhbG9nVGl0bGVcIjtcbiAgICAvLyBEUElfUmljaFRleHRDb250ZW50LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0Q29udGVudFwiXSA9IFwicmljaFRleHRDb250ZW50XCI7XG4gICAgLy8gRFBJX01hcmtTaXplQXNTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFya1NpemVBc1N0cmluZ1wiXSA9IFwibWFya1NpemVBc1N0cmluZ1wiO1xuICAgIC8vIERQSV9Vbml0c0xhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVuaXRzTGFiZWxcIl0gPSBcInVuaXRzTGFiZWxcIjtcbiAgICAvLyBEUElfRW1haWxBZGRyZXNzLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkVtYWlsQWRkcmVzc1wiXSA9IFwiZW1haWxBZGRyZXNzXCI7XG4gICAgLy8gRFBJX0ZpcnN0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaXJzdE5hbWVcIl0gPSBcImZpcnN0TmFtZVwiO1xuICAgIC8vIERQSV9MYXN0TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJMYXN0TmFtZVwiXSA9IFwibGFzdE5hbWVcIjtcbiAgICAvLyBEUElfU3VtbWFyeUNhcmRBdmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3VtbWFyeUNhcmRBdmdcIl0gPSBcInN1bW1hcnlDYXJkQXZnXCI7XG4gICAgLy8gRFBJX1N1bW1hcnlDYXJkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZENhcHRpb25cIl0gPSBcInN1bW1hcnlDYXJkQ2FwdGlvblwiO1xuICAgIC8vIERQSV9TdW1tYXJ5Q2FyZENvdW50LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN1bW1hcnlDYXJkQ291bnRcIl0gPSBcInN1bW1hcnlDYXJkQ291bnRcIjtcbiAgICAvLyBEUElfU3VtbWFyeUNhcmRLdXJ0b3NpcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZEt1cnRvc2lzXCJdID0gXCJzdW1tYXJ5Q2FyZEt1cnRvc2lzXCI7XG4gICAgLy8gRFBJX1N1bW1hcnlDYXJkTWF4LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN1bW1hcnlDYXJkTWF4XCJdID0gXCJzdW1tYXJ5Q2FyZE1heFwiO1xuICAgIC8vIERQSV9TdW1tYXJ5Q2FyZE1lZGlhbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZE1lZGlhblwiXSA9IFwic3VtbWFyeUNhcmRNZWRpYW5cIjtcbiAgICAvLyBEUElfU3VtbWFyeUNhcmRNaW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3VtbWFyeUNhcmRNaW5cIl0gPSBcInN1bW1hcnlDYXJkTWluXCI7XG4gICAgLy8gRFBJX1N1bW1hcnlDYXJkUXVhcnQxLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlN1bW1hcnlDYXJkUXVhcnQxXCJdID0gXCJzdW1tYXJ5Q2FyZFF1YXJ0MVwiO1xuICAgIC8vIERQSV9TdW1tYXJ5Q2FyZFF1YXJ0MywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZFF1YXJ0M1wiXSA9IFwic3VtbWFyeUNhcmRRdWFydDNcIjtcbiAgICAvLyBEUElfU3VtbWFyeUNhcmRTa2V3bmVzcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZFNrZXduZXNzXCJdID0gXCJzdW1tYXJ5Q2FyZFNrZXduZXNzXCI7XG4gICAgLy8gRFBJX1N1bW1hcnlDYXJkU3RkZXYsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3VtbWFyeUNhcmRTdGRldlwiXSA9IFwic3VtbWFyeUNhcmRTdGRldlwiO1xuICAgIC8vIERQSV9TdW1tYXJ5Q2FyZFN1bSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZFN1bVwiXSA9IFwic3VtbWFyeUNhcmRTdW1cIjtcbiAgICAvLyBEUElfVmFsdWVDbGFzc0F0dHIsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVmFsdWVDbGFzc0F0dHJcIl0gPSBcInZhbHVlQ2xhc3NBdHRyXCI7XG4gICAgLy8gRFBJX1RyZW5kTGluZURpYWxvZ1RpdGxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZURpYWxvZ1RpdGxlXCJdID0gXCJ0cmVuZExpbmVEaWFsb2dUaXRsZVwiO1xuICAgIC8vIERQSV9MaW5lYXJGaXRUeXBlTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTGluZWFyRml0VHlwZUxhYmVsXCJdID0gXCJsaW5lYXJGaXRUeXBlTGFiZWxcIjtcbiAgICAvLyBEUElfTG9nRml0VHlwZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxvZ0ZpdFR5cGVMYWJlbFwiXSA9IFwibG9nRml0VHlwZUxhYmVsXCI7XG4gICAgLy8gRFBJX0V4cEZpdFR5cGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFeHBGaXRUeXBlTGFiZWxcIl0gPSBcImV4cEZpdFR5cGVMYWJlbFwiO1xuICAgIC8vIERQSV9Qb3dlckZpdFR5cGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQb3dlckZpdFR5cGVMYWJlbFwiXSA9IFwicG93ZXJGaXRUeXBlTGFiZWxcIjtcbiAgICAvLyBEUElfUG9seW5vbWlhbEZpdFR5cGVMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQb2x5bm9taWFsRml0VHlwZUxhYmVsXCJdID0gXCJwb2x5bm9taWFsRml0VHlwZUxhYmVsXCI7XG4gICAgLy8gRFBJX0V4Y2x1ZGVDb2xvckxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4Y2x1ZGVDb2xvckxhYmVsXCJdID0gXCJleGNsdWRlQ29sb3JMYWJlbFwiO1xuICAgIC8vIERQSV9FbmFibGVDb25maWRlbmNlQmFuZHNMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVDb25maWRlbmNlQmFuZHNMYWJlbFwiXSA9IFwiZW5hYmxlQ29uZmlkZW5jZUJhbmRzTGFiZWxcIjtcbiAgICAvLyBEUElfRm9yY2VJbnRlcmNlcHRaZXJvTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9yY2VJbnRlcmNlcHRaZXJvTGFiZWxcIl0gPSBcImZvcmNlSW50ZXJjZXB0WmVybyBsYWJlbFwiO1xuICAgIC8vIERQSV9FbmFibGVJbnN0YW50QW5hbHl0aWNzTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRW5hYmxlSW5zdGFudEFuYWx5dGljc0xhYmVsXCJdID0gXCJlbmFibGVJbnN0YW50QW5hbHl0aWNzTGFiZWxcIjtcbiAgICAvLyBEUElfRW5hYmxlVG9vbHRpcHNMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFbmFibGVUb29sdGlwc0xhYmVsXCJdID0gXCJlbmFibGVUb29sdGlwTGFiZWxcIjtcbiAgICAvLyBEUElfQXV0aGVudGljYXRpb25TdW1tYXJ5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dGhlbnRpY2F0aW9uU3VtbWFyeVwiXSA9IFwiYXV0aGVudGljYXRpb25TdW1tYXJ5XCI7XG4gICAgLy8gRFBJX0J0bkNhbmNlbFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQnRuQ2FuY2VsVGV4dFwiXSA9IFwiYnRuQ2FuY2VsVGV4dFwiO1xuICAgIC8vIERQSV9CdG5Pa1RleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQnRuT2tUZXh0XCJdID0gXCJidG5Pa1RleHRcIjtcbiAgICAvLyBEUElfQnV0dG9uVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJCdXR0b25UZXh0XCJdID0gXCJidXR0b25UZXh0XCI7XG4gICAgLy8gRFBJX0NhbGN1bGF0aW9uQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDYWxjdWxhdGlvbkNhcHRpb25cIl0gPSBcImNhbGN1bGF0aW9uQ2FwdGlvblwiO1xuICAgIC8vIERQSV9DYWxjdWxhdGlvbkRlcGVuZGVuY2llcywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDYWxjdWxhdGlvbkRlcGVuZGVuY2llc1wiXSA9IFwiY2FsY3VsYXRpb25EZXBlbmRlbmNpZXNcIjtcbiAgICAvLyBEUElfQ2FsY3VsYXRpb25Gb3JtdWxhLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGN1bGF0aW9uRm9ybXVsYVwiXSA9IFwiY2FsY3VsYXRpb25Gb3JtdWxhXCI7XG4gICAgLy8gRFBJX0NoZWNrUHVibGlzaE1lc3NhZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ2hlY2tQdWJsaXNoTWVzc2FnZVwiXSA9IFwiY2hlY2tQdWJsaXNoU3VtbWFyeVwiO1xuICAgIC8vIERQSV9DbHVzdGVyTW9kZWxUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNsdXN0ZXJNb2RlbFRleHRcIl0gPSBcImNsdXN0ZXJNb2RlbFRleHRcIjtcbiAgICAvLyBEUElfQ2x1c3RlclN1bW1hcnlTY2FsZWRUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNsdXN0ZXJTdW1tYXJ5U2NhbGVkVGV4dFwiXSA9IFwiY2x1c3RlclN1bW1hcnlTY2FsZWRUZXh0XCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJTdW1tYXJ5VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDbHVzdGVyU3VtbWFyeVRleHRcIl0gPSBcImNsdXN0ZXJTdW1tYXJ5VGV4dFwiO1xuICAgIC8vIERQSV9Db2x1bW5DYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbkNhcHRpb25cIl0gPSBcImNvbHVtbkNhcHRpb25cIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZUNhcHRpb25cIl0gPSBcImRhdGFzb3VyY2VDYXB0aW9uXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRlZmF1bHRDYXB0aW9uXCJdID0gXCJkZWZhdWx0Q2FwdGlvblwiO1xuICAgIC8vIERQSV9EaXNwbGF5U3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3BsYXlTdHJpbmdcIl0gPSBcImRpc3BsYXlUZXh0XCI7XG4gICAgLy8gRFBJX0RyYWdEZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEcmFnRGVzY3JpcHRpb25cIl0gPSBcImRyYWdEZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9FeGNlcHRpb25NZXNzYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkV4Y2VwdGlvbk1lc3NhZ2VcIl0gPSBcImV4Y2VwdGlvbk1lc3NhZ2VcIjtcbiAgICAvLyBEUElfRXhwbGFuYXRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRXhwbGFuYXRpb25cIl0gPSBcImV4cGxhbmF0aW9uXCI7XG4gICAgLy8gRFBJX0ZpZWxkQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZENhcHRpb25cIl0gPSBcImZpZWxkQ2FwdGlvblwiO1xuICAgIC8vIERQSV9GaWVsZFN1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGRTdW1tYXJ5XCJdID0gXCJmaWVsZFN1bW1hcnlcIjtcbiAgICAvLyBEUElfRmllbGRTdW1tYXJ5TGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGRTdW1tYXJ5TGFiZWxcIl0gPSBcImZpZWxkU3VtbWFyeUxhYmVsXCI7XG4gICAgLy8gRFBJX0ZpbHRlckRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckRlc2NyaXB0aW9uXCJdID0gXCJmaWx0ZXJEZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9GaWx0ZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlck5hbWVcIl0gPSBcImZpbHRlck5hbWVcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RNb2RlbFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RNb2RlbFRleHRcIl0gPSBcImZvcmVjYXN0TW9kZWxUZXh0XCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0U3VtbWFyeVBjdFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RTdW1tYXJ5UGN0VGV4dFwiXSA9IFwiZm9yZWNhc3RTdW1tYXJ5UGN0VGV4dFwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdFN1bW1hcnlUZXh0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0U3VtbWFyeVRleHRcIl0gPSBcImZvcmVjYXN0U3VtbWFyeVRleHRcIjtcbiAgICAvLyBEUElfSGFzQWN0aXZlRXh0cmFjdFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSGFzQWN0aXZlRXh0cmFjdFRleHRcIl0gPSBcImhhc0FjdGl2ZUV4dHJhY3RUZXh0XCI7XG4gICAgLy8gRFBJX0h0bWxDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIdG1sQ29sb3JcIl0gPSBcImh0bWxDb2xvclwiO1xuICAgIC8vIERQSV9JbmNsdWRlTG9jYWxGaWxlc0NoZWNrZWRXYXJuaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmdcIl0gPSBcImluY2x1ZGVMb2NhbEZpbGVzQ2hlY2tlZFdhcm5pbmdcIjtcbiAgICAvLyBEUElfSW5jbHVkZUxvY2FsRmlsZXNXYXJuaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVMb2NhbEZpbGVzV2FybmluZ1wiXSA9IFwiaW5jbHVkZUxvY2FsRmlsZXNXYXJuaW5nXCI7XG4gICAgLy8gRFBJX0ludmFsaWRGaWVsZENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW52YWxpZEZpZWxkQ2FwdGlvblwiXSA9IFwiaW52YWxpZEZpZWxkQ2FwdGlvblwiO1xuICAgIC8vIERQSV9MaW1pdFN1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTGltaXRTdW1tYXJ5XCJdID0gXCJsaW1pdFN1bW1hcnlcIjtcbiAgICAvLyBEUElfTG9hZGVkRXhpc3RpbmdPYmplY3RXYXJuaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxvYWRlZEV4aXN0aW5nT2JqZWN0V2FybmluZ1wiXSA9IFwibG9hZGVkRXhpc3RpbmdPYmplY3RXYXJuaW5nXCI7XG4gICAgLy8gRFBJX01hbmFnZURhdGFzb3VyY2VzU3VtbWFyeSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYW5hZ2VEYXRhc291cmNlc1N1bW1hcnlcIl0gPSBcIm1hbmFnZURhdGFzb3VyY2VzU3VtbWFyeVwiO1xuICAgIC8vIERQSV9Nb2RhbERpYWxvZywgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNb2RhbERpYWxvZ1wiXSA9IFwibW9kYWxEaWFsb2dcIjtcbiAgICAvLyBEUElfTmV3RGF0YXNvdXJjZUNhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTmV3RGF0YXNvdXJjZUNhcHRpb25cIl0gPSBcIm5ld0RhdGFzb3VyY2VDYXB0aW9uXCI7XG4gICAgLy8gRFBJX1Blcm1pc3Npb25zQnV0dG9uTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGVybWlzc2lvbnNCdXR0b25MYWJlbFwiXSA9IFwicGVybWlzc2lvbnNCdXR0b25MYWJlbFwiO1xuICAgIC8vIERQSV9QZXJtaXNzaW9uc0VkaXRvclJvbGVJZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZXJtaXNzaW9uc0VkaXRvclJvbGVJZFwiXSA9IFwicGVybWlzc2lvbnNFZGl0b3JSb2xlSWRcIjtcbiAgICAvLyBEUElfUGVybWlzc2lvbnNMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZXJtaXNzaW9uc0xhYmVsXCJdID0gXCJwZXJtaXNzaW9uc0xhYmVsXCI7XG4gICAgLy8gRFBJX1BlcnNwZWN0aXZlQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZXJzcGVjdGl2ZUNhcHRpb25cIl0gPSBcInBlcnNwZWN0aXZlQ2FwdGlvblwiO1xuICAgIC8vIERQSV9QdWJsaXNoQnV0dG9uTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaEJ1dHRvbkxhYmVsXCJdID0gXCJwdWJsaXNoQnV0dG9uTGFiZWxcIjtcbiAgICAvLyBEUElfUHVibGlzaENob2ljZUxhYmVsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hDaG9pY2VMYWJlbFwiXSA9IFwicHVibGlzaENob2ljZUxhYmVsXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hPYmplY3RWaWV3c1N1bW1hcnksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeVwiXSA9IFwicHVibGlzaE9iamVjdFZpZXdzU3VtbWFyeVwiO1xuICAgIC8vIERQSV9RdWFsaWZpZWRGaWVsZENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUXVhbGlmaWVkRmllbGRDYXB0aW9uXCJdID0gXCJxdWFsaWZpZWRGaWVsZENhcHRpb25cIjtcbiAgICAvLyBEUElfUmVsYXRpb25zaGlwVG9vbHRpcFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVsYXRpb25zaGlwVG9vbHRpcFRleHRcIl0gPSBcInJlbGF0aW9uc2hpcFRvb2x0aXBUZXh0XCI7XG4gICAgLy8gRFBJX1Jlc2V0T2JqZWN0QXR0cmlidXRlc1dhcm5pbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZ1wiXSA9IFwicmVzZXRPYmplY3RBdHRyaWJ1dGVzV2FybmluZ1wiO1xuICAgIC8vIERQSV9Sb3dDb3VudENhcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUm93Q291bnRDYXB0aW9uXCJdID0gXCJyb3dDb3VudENhcHRpb25cIjtcbiAgICAvLyBEUElfU2VydmVyQ2FwdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2ZXJDYXB0aW9uXCJdID0gXCJzZXJ2ZXJDYXB0aW9uXCI7XG4gICAgLy8gRFBJX1NpemVNb2RlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTaXplTW9kZU5hbWVcIl0gPSBcInNpemVNb2RlTmFtZVwiO1xuICAgIC8vIERQSV9TdW1tYXJ5VGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5VGV4dFwiXSA9IFwic3VtbWFyeVRleHRcIjtcbiAgICAvLyBEUElfU3luY0NsaWVudFVzZUV4dHJhY3RMYWJlbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsXCJdID0gXCJzeW5jQ2xpZW50VXNlRXh0cmFjdExhYmVsXCI7XG4gICAgLy8gRFBJX1RleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGV4dFwiXSA9IFwidGV4dFwiO1xuICAgIC8vIERQSV9UZXh0RHJvcGRvd25Db250cm9sTGFiZWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGV4dERyb3Bkb3duQ29udHJvbExhYmVsXCJdID0gXCJjb250cm9sTGFiZWxcIjtcbiAgICAvLyBEUElfVGh1bWJuYWlsVXNlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGh1bWJuYWlsVXNlck5hbWVcIl0gPSBcInRodW1ibmFpbFVzZXJOYW1lXCI7XG4gICAgLy8gRFBJX1RpdGxlU3RyaW5nLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRpdGxlU3RyaW5nXCJdID0gXCJ0aXRsZVN0cmluZ1wiO1xuICAgIC8vIERQSV9Ub29sdGlwVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUb29sdGlwVGV4dFwiXSA9IFwidG9vbHRpcFRleHRcIjtcbiAgICAvLyBEUElfVXBkYXRlZENhbGNDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZWRDYWxjQ2FwdGlvblwiXSA9IFwidXBkYXRlZENhbGN1bGF0aW9uQ2FwdGlvblwiO1xuICAgIC8vIERQSV9VcGRhdGVkQ2FsY0Zvcm11bGEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVXBkYXRlZENhbGNGb3JtdWxhXCJdID0gXCJ1cGRhdGVkQ2FsY3VsYXRpb25Gb3JtdWxhXCI7XG4gICAgLy8gRFBJX1VzZXJDYXB0aW9uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVzZXJDYXB0aW9uXCJdID0gXCJ1c2VyQ2FwdGlvblwiO1xuICAgIC8vIERQSV9XYXJuaW5nVG9vbHRpcFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV2FybmluZ1Rvb2x0aXBUZXh0XCJdID0gXCJ3YXJuaW5nVG9vbHRpcFRleHRcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZUZpbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZUZpbGVcIl0gPSBcImRhdGFzb3VyY2VGaWxlXCI7XG4gICAgLy8gRFBJX0ZpbGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmlsZVwiXSA9IFwiZmlsZVwiO1xuICAgIC8vIERQSV9GaWxlTmFtZUJhc2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmlsZU5hbWVCYXNlXCJdID0gXCJmaWxlbmFtZUJhc2VcIjtcbiAgICAvLyBEUElfTmV3RmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJOZXdGaWxlXCJdID0gXCJuZXdGaWxlXCI7XG4gICAgLy8gRFBJX09yaWdpbmFsRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJPcmlnaW5hbEZpbGVcIl0gPSBcIm9yaWdpbmFsRmlsZVwiO1xuICAgIC8vIERQSV9PdXRwdXRGaWxlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk91dHB1dEZpbGVcIl0gPSBcIm91dHB1dEZpbGVcIjtcbiAgICAvLyBEUElfU2FtcGxlRmlsZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2FtcGxlRmlsZU5hbWVcIl0gPSBcInNhbXBsZUZpbGVuYW1lXCI7XG4gICAgLy8gRFBJX1dvcmtib29rRmlsZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJXb3JrYm9va0ZpbGVcIl0gPSBcIndvcmtib29rRmlsZVwiO1xuICAgIC8vIERQSV9JbWFnZUtleSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZUtleVwiXSA9IFwiaW1hZ2VLZXlcIjtcbiAgICAvLyBEUElfT3ZlcmxheUltYWdlS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk92ZXJsYXlJbWFnZUtleVwiXSA9IFwib3ZlcmxheUltYWdlS2V5XCI7XG4gICAgLy8gRFBJX1RlbXBGaWxlS2V5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRlbXBGaWxlS2V5XCJdID0gXCJ0ZW1wZmlsZUtleVwiO1xuICAgIC8vIERQSV9DYXB0dXJlZFNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNhcHR1cmVkU2hlZXRcIl0gPSBcImNhcHR1cmVkU2hlZXRcIjtcbiAgICAvLyBEUElfQ3VycmVudFNoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkN1cnJlbnRTaGVldFwiXSA9IFwiY3VycmVudFNoZWV0XCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIC8vIERQSV9FbnN1cmVTaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJFbnN1cmVTaGVldFwiXSA9IFwiZW5zdXJlU2hlZXROYW1lXCI7XG4gICAgLy8gRFBJX05ld1NoZWV0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5ld1NoZWV0XCJdID0gXCJuZXdTaGVldFwiO1xuICAgIC8vIERQSV9TaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldFwiXSA9IFwic2hlZXRcIjtcbiAgICAvLyBEUElfU2hlZXROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0TmFtZVwiXSA9IFwic2hlZXROYW1lXCI7XG4gICAgLy8gRFBJX1NvdXJjZURhc2hib2FyZCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTb3VyY2VEYXNoYm9hcmRcIl0gPSBcInNvdXJjZURhc2hib2FyZFwiO1xuICAgIC8vIERQSV9Tb3VyY2VTaGVldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTb3VyY2VTaGVldFwiXSA9IFwic291cmNlU2hlZXRcIjtcbiAgICAvLyBEUElfVGFyZ2V0U2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0U2hlZXRcIl0gPSBcInRhcmdldFNoZWV0XCI7XG4gICAgLy8gRFBJX1dvcmtib29rTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJXb3JrYm9va05hbWVcIl0gPSBcIndvcmtib29rTmFtZVwiO1xuICAgIC8vIERQSV9Xb3Jrc2hlZXQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiV29ya3NoZWV0XCJdID0gXCJ3b3Jrc2hlZXRcIjtcbiAgICAvLyBEUElfQmFzZVZpZXdUaHVtYkxpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQmFzZVZpZXdUaHVtYkxpbmtcIl0gPSBcImJhc2VWaWV3VGh1bWJMaW5rXCI7XG4gICAgLy8gRFBJX0Jsb2dMaW5rLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJsb2dMaW5rXCJdID0gXCJibG9nTGlua1wiO1xuICAgIC8vIERQSV9DYWNoZVVybCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDYWNoZVVybFwiXSA9IFwiY2FjaGVVcmxcIjtcbiAgICAvLyBEUElfRG93bmxvYWRMaW5rLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRvd25sb2FkTGlua1wiXSA9IFwiZG93bmxvYWRMaW5rXCI7XG4gICAgLy8gRFBJX1JlcG9zaXRvcnlVcmwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVwb3NpdG9yeVVybFwiXSA9IFwicmVwb3NpdG9yeVVybFwiO1xuICAgIC8vIERQSV9TaGFyZUxpbmssIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU2hhcmVMaW5rXCJdID0gXCJzaGFyZUxpbmtcIjtcbiAgICAvLyBEUElfVVJMLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlVSTFwiXSA9IFwidXJsXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJNb2RlbEh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3Rlck1vZGVsSHRtbFwiXSA9IFwiY2x1c3Rlck1vZGVsSHRtbFwiO1xuICAgIC8vIERQSV9DbHVzdGVyU3VtbWFyeUh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3RlclN1bW1hcnlIdG1sXCJdID0gXCJjbHVzdGVyU3VtbWFyeUh0bWxcIjtcbiAgICAvLyBEUElfQ2x1c3RlclN1bW1hcnlTY2FsZWRIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNsdXN0ZXJTdW1tYXJ5U2NhbGVkSHRtbFwiXSA9IFwiY2x1c3RlclN1bW1hcnlTY2FsZWRIdG1sXCI7XG4gICAgLy8gRFBJX0ZpZWxkRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGREZXNjcmlwdGlvblwiXSA9IFwiZmllbGREZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdE1vZGVsSHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdE1vZGVsSHRtbFwiXSA9IFwiZm9yZWNhc3RNb2RlbEh0bWxcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RTdW1tYXJ5SHRtbCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdFN1bW1hcnlIdG1sXCJdID0gXCJmb3JlY2FzdFN1bW1hcnlIdG1sXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0U3VtbWFyeVBjdEh0bWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RTdW1tYXJ5UGN0SHRtbFwiXSA9IFwiZm9yZWNhc3RTdW1tYXJ5UGN0SHRtbFwiO1xuICAgIC8vIERQSV9IdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkh0bWxcIl0gPSBcImh0bWxcIjtcbiAgICAvLyBEUElfSHRtbFNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIdG1sU2VsZWN0aW9uXCJdID0gXCJodG1sU2VsZWN0aW9uXCI7XG4gICAgLy8gRFBJX0h0bWxUb29sdGlwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkh0bWxUb29sdGlwXCJdID0gXCJodG1sVG9vbHRpcFwiO1xuICAgIC8vIERQSV9IdG1sVG9vbHRpcE1vZGlmaWVkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkh0bWxUb29sdGlwTW9kaWZpZWRcIl0gPSBcImh0bWxUb29sdGlwTW9kaWZpZWRcIjtcbiAgICAvLyBEUElfVGl0bGVIdG1sLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRpdGxlSHRtbFwiXSA9IFwidGl0bGVIdG1sXCI7XG4gICAgLy8gRFBJX0NhY2hlVXJsSW5mb0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ2FjaGVVcmxJbmZvSnNvblwiXSA9IFwiY2FjaGVVcmxJbmZvSnNvblwiO1xuICAgIC8vIERQSV9GaWx0ZXJTZWFyY2hKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaEpzb25cIl0gPSBcImZpbHRlclNlYXJjaEpzb25cIjtcbiAgICAvLyBEUElfRmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uXCJdID0gXCJmaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uXCI7XG4gICAgLy8gRFBJX0ZpbHRlclNob3dDaGlsZHJlbkpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyU2hvd0NoaWxkcmVuSnNvblwiXSA9IFwiZmlsdGVyU2hvd0NoaWxkcmVuSnNvblwiO1xuICAgIC8vIERQSV9GaWx0ZXJzSnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJzSnNvblwiXSA9IFwiZmlsdGVyc0pzb25cIjtcbiAgICAvLyBEUElfRnJhbWVKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZyYW1lSnNvblwiXSA9IFwiZnJhbWVKc29uXCI7XG4gICAgLy8gRFBJX0dlb21ldHJ5SnNvbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJHZW9tZXRyeUpzb25cIl0gPSBcImdlb21ldHJ5SnNvblwiO1xuICAgIC8vIERQSV9HZXRGaWx0ZXJJdGVtc0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR2V0RmlsdGVySXRlbXNKc29uXCJdID0gXCJnZXRGaWx0ZXJJdGVtc0pzb25cIjtcbiAgICAvLyBEUElfS2VlcE9ubHlSZXNwb25zZUpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiS2VlcE9ubHlSZXNwb25zZUpzb25cIl0gPSBcImtlZXBPbmx5UmVzcG9uc2VKc29uXCI7XG4gICAgLy8gRFBJX01lbnVDb21tYW5kc0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWVudUNvbW1hbmRzSnNvblwiXSA9IFwibWVudUNvbW1hbmRzSnNvblwiO1xuICAgIC8vIERQSV9Nb2RpZmllZFNoZWV0c0pzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTW9kaWZpZWRTaGVldHNKc29uXCJdID0gXCJtb2RpZmllZFNoZWV0c0pzb25cIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyQ3RybEpzb24sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyQ3RybEpzb25cIl0gPSBcInBhcmFtZXRlckN0cmxKc29uXCI7XG4gICAgLy8gRFBJX1ZpZXdKc29uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZpZXdKc29uXCJdID0gXCJ2aWV3SnNvblwiO1xuICAgIC8vIERQSV9DdXN0b21pemVkVmlld1hNTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDdXN0b21pemVkVmlld1hNTFwiXSA9IFwiY3VzdG9taXplZFZpZXdYbWxcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZURlbHRhWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VEZWx0YVhNTFwiXSA9IFwiZGF0YXNvdXJjZURlbHRhWG1sXCI7XG4gICAgLy8gRFBJX0RhdGFzb3VyY2VYTUwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZVhNTFwiXSA9IFwiZGF0YXNvdXJjZVhtbFwiO1xuICAgIC8vIERQSV9LZXljaGFpblhNTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJLZXljaGFpblhNTFwiXSA9IFwia2V5Y2hhaW5YbWxcIjtcbiAgICAvLyBEUElfUGVybWlzc2lvbnNNb2RlbFhNTCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQZXJtaXNzaW9uc01vZGVsWE1MXCJdID0gXCJwZXJtaXNzaW9uc01vZGVsWG1sXCI7XG4gICAgLy8gRFBJX1NoYXJlZFZpZXdzWE1MLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNoYXJlZFZpZXdzWE1MXCJdID0gXCJzaGFyZWRWaWV3c1htbFwiO1xuICAgIC8vIERQSV9UYXJnZXRVUkwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0VVJMXCJdID0gXCJ0YXJnZXRVcmxcIjtcbiAgICAvLyBEUElfQW5jaG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFuY2hvclwiXSA9IFwiYW5jaG9yXCI7XG4gICAgLy8gRFBJX0NlbnRlclZhbHVlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNlbnRlclZhbHVlXCJdID0gXCJjZW50ZXJWYWx1ZVwiO1xuICAgIC8vIERQSV9Db21wdXRlZEJpblNpemUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29tcHV0ZWRCaW5TaXplXCJdID0gXCJjb21wdXRlZEJpblNpemVcIjtcbiAgICAvLyBEUElfQ29uc3RhbnRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJDb25zdGFudFZhbHVlXCJdID0gXCJjb25zdGFudFZhbHVlXCI7XG4gICAgLy8gRFBJX1BhaXJlZENvbnN0YW50VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFpcmVkQ29uc3RhbnRWYWx1ZVwiXSA9IFwicGFpcmVkQ29uc3RhbnRWYWx1ZVwiO1xuICAgIC8vIERQSV9Db3VudERpc3RpbmN0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvdW50RGlzdGluY3RcIl0gPSBcImNvdW50RGlzdGluY3RcIjtcbiAgICAvLyBEUElfRGF0YU1heCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhTWF4XCJdID0gXCJkYXRhTWF4XCI7XG4gICAgLy8gRFBJX0RhdGFNaW4sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YU1pblwiXSA9IFwiZGF0YU1pblwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVTdHJpbmcsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVZhbHVlU3RyaW5nXCJdID0gXCJkYXRhVmFsdWVTdHJcIjtcbiAgICAvLyBEUElfRW5kVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRW5kVmFsdWVcIl0gPSBcImVuZFZhbHVlXCI7XG4gICAgLy8gRFBJX1JhbmdlTWF4LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmdlTWF4XCJdID0gXCJyYW5nZU1heFwiO1xuICAgIC8vIERQSV9SYW5nZU1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSYW5nZU1pblwiXSA9IFwicmFuZ2VNaW5cIjtcbiAgICAvLyBEUElfUmFuZ2VTdGVwU2l6ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSYW5nZVN0ZXBTaXplXCJdID0gXCJyYW5nZVN0ZXBTaXplXCI7XG4gICAgLy8gRFBJX1N0YXJ0VmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3RhcnRWYWx1ZVwiXSA9IFwic3RhcnRWYWx1ZVwiO1xuICAgIC8vIERQSV9UYXJnZXRWYWx1ZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJUYXJnZXRWYWx1ZVwiXSA9IFwidGFyZ2V0VmFsdWVcIjtcbiAgICAvLyBEUElfVmFsdWVJbmMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVmFsdWVJbmNcIl0gPSBcInZhbHVlSW5jXCI7XG4gICAgLy8gRFBJX1ZhbHVlTWF4LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlTWF4XCJdID0gXCJ2YWx1ZU1heFwiO1xuICAgIC8vIERQSV9WYWx1ZU1pbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJWYWx1ZU1pblwiXSA9IFwidmFsdWVNaW5cIjtcbiAgICAvLyBEUElfUXVhbnRpbGVzVmFsdWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRpbGVzVmFsdWVcIl0gPSBcInF1YW50aWxlc1ZhbHVlXCI7XG4gICAgLy8gRFBJX1VzZXJJbnB1dEJpblNpemUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVXNlcklucHV0QmluU2l6ZVwiXSA9IFwidXNlckJpblNpemVcIjtcbiAgICAvLyBEUElfQWRkZWREYXRhU291cmNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFkZGVkRGF0YVNvdXJjZXNcIl0gPSBcImFkZGVkRGF0YVNvdXJjZU5hbWVzXCI7XG4gICAgLy8gRFBJX0FkZHJlc3NpbmdDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFkZHJlc3NpbmdDYXB0aW9uc1wiXSA9IFwiYWRkcmVzc2luZ0NhcHRpb25zXCI7XG4gICAgLy8gRFBJX0FnZ3JlZ2F0aW9uQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJBZ2dyZWdhdGlvbkNhcHRpb25zXCJdID0gXCJhZ2dyZWdhdGlvbkNhcHRpb25zXCI7XG4gICAgLy8gRFBJX0F0VGhlTGV2ZWxDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkF0VGhlTGV2ZWxDYXB0aW9uc1wiXSA9IFwiYXRUaGVMZXZlbENhcHRpb25zXCI7XG4gICAgLy8gRFBJX0F1dGhlbnRpY2F0aW9uU2V0dGluZ0xhYmVscywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkF1dGhlbnRpY2F0aW9uU2V0dGluZ0xhYmVsc1wiXSA9IFwiYXV0aGVudGljYXRpb25TZXR0aW5nTGFiZWxzXCI7XG4gICAgLy8gRFBJX0F1dG9zYXZlRmlsZUlkc1ZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9zYXZlRmlsZUlkc1ZlY3RvclwiXSA9IFwiYXV0b3NhdmVGaWxlSWRzVmVjdG9yXCI7XG4gICAgLy8gRFBJX0NoYW5nZWRUdXBsZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDaGFuZ2VkVHVwbGVzXCJdID0gXCJjaGFuZ2VkVHVwbGVzXCI7XG4gICAgLy8gRFBJX0NoYXJzZXRzQXZhaWxhYmxlLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQ2hhcnNldHNBdmFpbGFibGVcIl0gPSBcImNoYXJzZXRzQXZhaWxhYmxlXCI7XG4gICAgLy8gRFBJX0NoYXJzZXREaXNwbGF5TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDaGFyc2V0RGlzcGxheU5hbWVzXCJdID0gXCJjaGFyc2V0RGlzcGxheU5hbWVzXCI7XG4gICAgLy8gRFBJX0NvbG9yRmFjdG9ycywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yRmFjdG9yc1wiXSA9IFwiY29sb3JGYWN0b3JzXCI7XG4gICAgLy8gRFBJX0NvbHVtbkZ1bGxOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbkZ1bGxOYW1lc1wiXSA9IFwiY29sdW1uRnVsbE5hbWVzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25OYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25OYW1lc1wiXSA9IFwiY29ubmVjdGlvbk5hbWVzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25DYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25DYXB0aW9uc1wiXSA9IFwiY29ubmVjdGlvbkNhcHRpb25zXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25CaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbkJpZ1F1ZXJ5TGVnYWN5U1FMQ2hlY2tCb3hcIl0gPSBcImNvbm5lY3Rpb25CaWdxdWVyeUxlZ2FjeVNxbENoZWNrYm94XCI7XG4gICAgLy8gRFBJX0N1c3RvbUZpZWxkT3JkZXIsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDdXN0b21GaWVsZE9yZGVyXCJdID0gXCJjdXN0b21GaWVsZE9yZGVyXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VDbGFzc2VzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZUNsYXNzZXNcIl0gPSBcImRhdGFTb3VyY2VDbGFzc2VzXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VOYW1lc1wiXSA9IFwiZGF0YVNvdXJjZU5hbWVzXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VOYW1lczIsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlTmFtZXMyXCJdID0gXCJkYXRhU291cmNlTmFtZXMyXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VzV2l0aEVtcHR5UmVsYXRpb24sIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlc1dpdGhFbXB0eVJlbGF0aW9uXCJdID0gXCJkYXRhU291cmNlc1dpdGhFbXB0eVJlbGF0aW9uXCI7XG4gICAgLy8gRFBJX0RhdGVGb3JtYXRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0ZUZvcm1hdHNcIl0gPSBcImRhdGVGb3JtYXRzXCI7XG4gICAgLy8gRFBJX0RheU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF5TmFtZXNcIl0gPSBcImRheU5hbWVzXCI7XG4gICAgLy8gRFBJX0RyaWxsUGF0aFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRyaWxsUGF0aFZlY3RvclwiXSA9IFwiZHJpbGxwYXRoVmVjdG9yXCI7XG4gICAgLy8gRFBJX0Vycm9yRGV0YWlscywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkVycm9yRGV0YWlsc1wiXSA9IFwiZXJyb3JEZXRhaWxzXCI7XG4gICAgLy8gRFBJX0V4Y2VwdGlvbk1lc3NhZ2VQYXJhbXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJFeGNlcHRpb25NZXNzYWdlUGFyYW1zXCJdID0gXCJleGNlcHRpb25NZXNzYWdlUGFyYW1zXCI7XG4gICAgLy8gRFBJX0V4Y2x1ZGVkU2hlZXRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRXhjbHVkZWRTaGVldHNcIl0gPSBcImV4Y2x1ZGVTaGVldHNcIjtcbiAgICAvLyBEUElfRmllbGREaXNwbGF5TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZERpc3BsYXlOYW1lc1wiXSA9IFwiZmllbGREaXNwbGF5TmFtZXNcIjtcbiAgICAvLyBEUElfRmllbGRGb2xkZXJWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZEZvbGRlclZlY3RvclwiXSA9IFwiZmllbGRGb2xkZXJWZWN0b3JcIjtcbiAgICAvLyBEUElfRmlsZUlkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGVJZHNcIl0gPSBcImZpbGVJZHNcIjtcbiAgICAvLyBEUElfRmlsZVBhdGhzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsZVBhdGhzXCJdID0gXCJmaWxlUGF0aHNcIjtcbiAgICAvLyBEUElfRmlsZU5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsZU5hbWVzXCJdID0gXCJmaWxlTmFtZXNcIjtcbiAgICAvLyBEUElfRmlsdGVyQWRkLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyQWRkXCJdID0gXCJmaWx0ZXJBZGRcIjtcbiAgICAvLyBEUElfRmlsdGVyQWxpYXNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckFsaWFzZXNcIl0gPSBcImZpbHRlclZhbHVlc1wiO1xuICAgIC8vIERQSV9GaWx0ZXJSZW1vdmUsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJSZW1vdmVcIl0gPSBcImZpbHRlclJlbW92ZVwiO1xuICAgIC8vIERQSV9GaXhlZENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRml4ZWRDYXB0aW9uc1wiXSA9IFwiZml4ZWRDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9Gb250RmFtaWxpZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGb250RmFtaWxpZXNcIl0gPSBcImZvbnRGYW1pbGllc1wiO1xuICAgIC8vIERQSV9Gb3JtYXRTdHJpbmdzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0U3RyaW5nc1wiXSA9IFwiZm9ybWF0U3RyaW5nc1wiO1xuICAgIC8vIERQSV9Gb3JtYXR0ZWRWYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXR0ZWRWYWx1ZXNcIl0gPSBcImZvcm1hdHRlZFZhbHVlc1wiO1xuICAgIC8vIERQSV9Gb3VuZFR1cGxlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZvdW5kVHVwbGVzXCJdID0gXCJmb3VuZFR1cGxlc1wiO1xuICAgIC8vIERQSV9GdWxsU2NoZWR1bGVzTGFiZWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRnVsbFNjaGVkdWxlc0xhYmVsc1wiXSA9IFwiZnVsbFNjaGVkdWxlc0xhYmVsc1wiO1xuICAgIC8vIERQSV9JbWFnZVJlc291cmNlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlUmVzb3VyY2VMaXN0XCJdID0gXCJpbWFnZVJlc291cmNlc1wiO1xuICAgIC8vIERQSV9JbmNsdWRlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVMaXN0XCJdID0gXCJpbmNsdWRlTGlzdFwiO1xuICAgIC8vIERQSV9JbmNyU2NoZWR1bGVzTGFiZWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5jclNjaGVkdWxlc0xhYmVsc1wiXSA9IFwiaW5jclNjaGVkdWxlc0xhYmVsc1wiO1xuICAgIC8vIERQSV9JbnZhbGlkRGF0ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJJbnZhbGlkRGF0ZXNcIl0gPSBcImludmFsaWREYXRlc1wiO1xuICAgIC8vIERQSV9JbnZhbGlkVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiSW52YWxpZFZhbHVlc1wiXSA9IFwiaW52YWxpZFZhbHVlc1wiO1xuICAgIC8vIERQSV9JdGVtVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiSXRlbVZhbHVlc1wiXSA9IFwiaXRlbVZhbHVlc1wiO1xuICAgIC8vIERQSV9Kb2luRWRpdGFibGVQcm9wcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkpvaW5FZGl0YWJsZVByb3BzXCJdID0gXCJqb2luRWRpdGFibGVQcm9wc1wiO1xuICAgIC8vIERQSV9Kb2luRmllbGRDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkpvaW5GaWVsZENhcHRpb25zXCJdID0gXCJqb2luRmllbGRDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9Mb2NhbGVPcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTG9jYWxlT3B0aW9uc1wiXSA9IFwibG9jYWxlT3B0aW9uc1wiO1xuICAgIC8vIERQSV9Mb2NhbGVEaXNwbGF5TmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJMb2NhbGVEaXNwbGF5TmFtZXNcIl0gPSBcImxvY2FsZURpc3BsYXlOYW1lc1wiO1xuICAgIC8vIERQSV9NYXBCb3hTdHlsZU1hcHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hTdHlsZU1hcHNcIl0gPSBcIm1hcGJveFN0eWxlTWFwc1wiO1xuICAgIC8vIERQSV9NYXBDb25uZWN0aW9uRXJyb3JEZXRhaWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTWFwQ29ubmVjdGlvbkVycm9yRGV0YWlsc1wiXSA9IFwibWFwQ29ubmVjdGlvbkVycm9yRGV0YWlsc1wiO1xuICAgIC8vIERQSV9TaGVldE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXROYW1lc1wiXSA9IFwic2hlZXROYW1lc1wiO1xuICAgIC8vIERQSV9NYXBTb3VyY2VOYW1lcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNvdXJjZU5hbWVzXCJdID0gXCJtYXBTb3VyY2VOYW1lc1wiO1xuICAgIC8vIERQSV9NYXJrR2VvbWV0cmllcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtHZW9tZXRyaWVzXCJdID0gXCJtYXJrR2VvbWV0cmllc1wiO1xuICAgIC8vIERQSV9NZW51SXRlbXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJNZW51SXRlbXNcIl0gPSBcIm1lbnVJdGVtc1wiO1xuICAgIC8vIERQSV9Nb2RlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIk1vZGVzXCJdID0gXCJtb2Rlc1wiO1xuICAgIC8vIERQSV9Nb250aE5hbWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTW9udGhOYW1lc1wiXSA9IFwibW9udGhOYW1lc1wiO1xuICAgIC8vIERQSV9OdW1iZXJGb3JtYXRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTnVtYmVyRm9ybWF0c1wiXSA9IFwibnVtYmVyRm9ybWF0c1wiO1xuICAgIC8vIERQSV9PYmplY3RUZXh0SURzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiT2JqZWN0VGV4dElEc1wiXSA9IFwib2JqZWN0VGV4dElkc1wiO1xuICAgIC8vIERQSV9PbGRFeHRyYWN0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIk9sZEV4dHJhY3RzXCJdID0gXCJvbGRFeHRyYWN0c1wiO1xuICAgIC8vIERQSV9PcmRlcmluZ1R5cGVDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIk9yZGVyaW5nVHlwZUNhcHRpb25zXCJdID0gXCJvcmRlcmluZ1R5cGVDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9QYWdlTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlTmFtZXNcIl0gPSBcInBhZ2VOYW1lc1wiO1xuICAgIC8vIERQSV9QYW5lRGVzY3JpcHRvcktleXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lRGVzY3JpcHRvcktleXNcIl0gPSBcInBhbmVEZXNjcmlwdG9yS2V5c1wiO1xuICAgIC8vIERQSV9QYXJhbUNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1DYXB0aW9uc1wiXSA9IFwicGFyYW1DYXB0aW9uc1wiO1xuICAgIC8vIERQSV9QcmVjYW5uZWREYXRhVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUHJlY2FubmVkRGF0YVZhbHVlc1wiXSA9IFwicHJlY2FubmVkRGF0YVZhbHVlc1wiO1xuICAgIC8vIERQSV9QdWJsaXNoQ2hvaWNlTGFiZWxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaENob2ljZUxhYmVsc1wiXSA9IFwicHVibGlzaENob2ljZUxhYmVsc1wiO1xuICAgIC8vIERQSV9SYW5rVHlwZUNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmFua1R5cGVDYXB0aW9uc1wiXSA9IFwicmFua1R5cGVDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9SZWNlbnRUYWdzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVjZW50VGFnc1wiXSA9IFwicmVjZW50VGFnc1wiO1xuICAgIC8vIERQSV9SZWxhdGl2ZUNhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVsYXRpdmVDYXB0aW9uc1wiXSA9IFwicmVsYXRpdmVDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9SZW1vdmVkRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZW1vdmVkRGF0YVNvdXJjZXNcIl0gPSBcInJlbW92ZWREYXRhU291cmNlTmFtZXNcIjtcbiAgICAvLyBEUElfUmVwcmVzZW50YXRpdmVUdXBsZSwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlcHJlc2VudGF0aXZlVHVwbGVcIl0gPSBcInJlcHJlc2VudGF0aXZlVHVwbGVcIjtcbiAgICAvLyBEUElfUmVzdGFydEV2ZXJ5Q2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZXN0YXJ0RXZlcnlDYXB0aW9uc1wiXSA9IFwicmVzdGFydEV2ZXJ5Q2FwdGlvbnNcIjtcbiAgICAvLyBEUElfU2NoZW1hTWVtYmVyR2xvYmFsTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTY2hlbWFNZW1iZXJHbG9iYWxOYW1lc1wiXSA9IFwic2NoZW1hTWVtYmVyR2xvYmFsTmFtZXNcIjtcbiAgICAvLyBEUElfU2VsZWN0VmFsdWVzTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdFZhbHVlc0xpc3RcIl0gPSBcInNlbGVjdFZhbHVlc1wiO1xuICAgIC8vIERQSV9TZWxlY3Rpb25WYWx1ZUxpc3QsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25WYWx1ZUxpc3RcIl0gPSBcInNlbGVjdGlvblZhbHVlTGlzdFwiO1xuICAgIC8vIERQSV9Tb3J0QWdnQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTb3J0QWdnQ2FwdGlvbnNcIl0gPSBcInNvcnRBZ2dDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9Tb3J0RGlyZWN0aW9uQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTb3J0RGlyZWN0aW9uQ2FwdGlvbnNcIl0gPSBcInNvcnREaXJlY3Rpb25DYXB0aW9uc1wiO1xuICAgIC8vIERQSV9Tb3J0RmllbGRDYXB0aW9ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRGaWVsZENhcHRpb25zXCJdID0gXCJzb3J0RmllbGRDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9Tb3J0RmllbGROYW1lVmVjdG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU29ydEZpZWxkTmFtZVZlY3RvclwiXSA9IFwic29ydEZpZWxkbmFtZVZlY3RvclwiO1xuICAgIC8vIERQSV9TdXBwb3J0ZWRKb2luT3BlcmF0b3JzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU3VwcG9ydGVkSm9pbk9wZXJhdG9yc1wiXSA9IFwic3VwcG9ydGVkSm9pbk9wZXJhdG9yc1wiO1xuICAgIC8vIERQSV9UYWJsZUNhbGNUeXBlQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUNhbGNUeXBlQ2FwdGlvbnNcIl0gPSBcInRhYmxlQ2FsY1R5cGVDYXB0aW9uc1wiO1xuICAgIC8vIERQSV9UYWdzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiVGFnc1wiXSA9IFwidGFnc1wiO1xuICAgIC8vIERQSV9UZXJtVmVjLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiVGVybVZlY1wiXSA9IFwidGVybVZlY3RvclwiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25MaXN0LCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uTGlzdFwiXSA9IFwidWlBdXRvbWF0aW9uTGlzdFwiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VMaW5lVmFsaWRDdXN0b21MYWJlbFRhZ3MsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VMaW5lVmFsaWRDdXN0b21MYWJlbFRhZ3NcIl0gPSBcInZhbGlkUmVmZXJlbmNlTGluZUN1c3RvbUxhYmVsVGFnc1wiO1xuICAgIC8vIERQSV9Mb2NhbGl6ZWRLZXl3b3JkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkxvY2FsaXplZEtleXdvcmRzXCJdID0gXCJsb2NhbGl6ZWRLZXl3b3Jkc1wiO1xuICAgIC8vIERQSV9BdmFpbGFibGVDYWxlbmRhcnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJBdmFpbGFibGVDYWxlbmRhcnNcIl0gPSBcImF2YWlsYWJsZUNhbGVuZGFyc1wiO1xuICAgIC8vIERQSV9TaGVldHNUb0JlRGVsZXRlZE9ySGlkZGVuLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRzVG9CZURlbGV0ZWRPckhpZGRlblwiXSA9IFwic2hlZXRzVG9CZURlbGV0ZWRPckhpZGRlblwiO1xuICAgIC8vIERQSV9BZGRTaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJBZGRTaGVldHNcIl0gPSBcImFkZFNoZWV0c1wiO1xuICAgIC8vIERQSV9OYW1lc09mU3Vic2hlZXRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTmFtZXNPZlN1YnNoZWV0c1wiXSA9IFwibmFtZXNPZlN1YnNoZWV0c1wiO1xuICAgIC8vIERQSV9SZW1vdmVTaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZW1vdmVTaGVldHNcIl0gPSBcInJlbW92ZVNoZWV0c1wiO1xuICAgIC8vIERQSV9TY3JvbGxPZmZzZXRTaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTY3JvbGxPZmZzZXRTaGVldHNcIl0gPSBcInNjcm9sbE9mZnNldFNoZWV0c1wiO1xuICAgIC8vIERQSV9TaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldHNcIl0gPSBcInNoZWV0c1wiO1xuICAgIC8vIERQSV9Tb3VyY2VXb3Jrc2hlZXRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU291cmNlV29ya3NoZWV0c1wiXSA9IFwic291cmNlV29ya3NoZWV0c1wiO1xuICAgIC8vIERQSV9UYXJnZXRFeGNsdWRlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRhcmdldEV4Y2x1ZGVzXCJdID0gXCJ0YXJnZXRFeGNsdWRlXCI7XG4gICAgLy8gRFBJX1RhcmdldFdvcmtzaGVldHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJUYXJnZXRXb3Jrc2hlZXRzXCJdID0gXCJ0YXJnZXRXb3Jrc2hlZXRzXCI7XG4gICAgLy8gRFBJX1RpbGVVUkxzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiVGlsZVVSTHNcIl0gPSBcInRpbGVVcmxzXCI7XG4gICAgLy8gRFBJX0RldGFpbHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJEZXRhaWxzXCJdID0gXCJkZXRhaWxzXCI7XG4gICAgLy8gRFBJX0ZpZWxkQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZENhcHRpb25zXCJdID0gXCJmaWVsZENhcHRpb25zXCI7XG4gICAgLy8gRFBJX0hpZ2hsaWdodENhcHRpb25zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiSGlnaGxpZ2h0Q2FwdGlvbnNcIl0gPSBcImhpZ2hsaWdodENhcHRpb25zXCI7XG4gICAgLy8gRFBJX0xldmVsQ2FwdGlvbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJMZXZlbENhcHRpb25zXCJdID0gXCJsZXZlbENhcHRpb25zXCI7XG4gICAgLy8gRFBJX0xldmVsTGVhZlZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkxldmVsTGVhZlZhbHVlc1wiXSA9IFwibGV2ZWxMZWFmVmFsdWVzXCI7XG4gICAgLy8gRFBJX1N1YnN0aXR1dGlvblZhcmlhYmxlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlN1YnN0aXR1dGlvblZhcmlhYmxlc1wiXSA9IFwic3Vic3RpdHV0aW9uVmFyaWFibGVzXCI7XG4gICAgLy8gRFBJX1N1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU3Vic3RpdHV0aW9uVmFyaWFibGVWYWx1ZXNcIl0gPSBcInN1YnN0aXR1dGlvblZhcmlhYmxlVmFsdWVzXCI7XG4gICAgLy8gRFBJX0h0bWxUb29sdGlwcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkh0bWxUb29sdGlwc1wiXSA9IFwiaHRtbFRvb2x0aXBzXCI7XG4gICAgLy8gRFBJX0ludmFsaWRGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJJbnZhbGlkRmllbGRzXCJdID0gXCJpbnZhbGlkRmllbGRzXCI7XG4gICAgLy8gRFBJX05hbWVzT2ZDb2x1bW5zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiTmFtZXNPZkNvbHVtbnNcIl0gPSBcIm5hbWVzT2ZDb2x1bW5zXCI7XG4gICAgLy8gRFBJX05hbWVzT2ZGaWVsZHMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJOYW1lc09mRmllbGRzXCJdID0gXCJuYW1lc09mRmllbGRzXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZWREYXRhc291cmNlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZWREYXRhc291cmNlc1wiXSA9IFwicmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0XCI7XG4gICAgLy8gRFBJX0NTU0F0dHJzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkNTU0F0dHJzXCJdID0gXCJjc3NBdHRyc1wiO1xuICAgIC8vIERQSV9EYXRhU291cmNlTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VNYXBcIl0gPSBcImRhdGFTb3VyY2VNYXBcIjtcbiAgICAvLyBEUElfRXZlbnRQYXJhbWV0ZXJzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkV2ZW50UGFyYW1ldGVyc1wiXSA9IFwiZXZlbnRQYXJhbWV0ZXJzXCI7XG4gICAgLy8gRFBJX0V4Y2VwdGlvbkF0dHJzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkV4Y2VwdGlvbkF0dHJzXCJdID0gXCJleGNlcHRpb25BdHRyc1wiO1xuICAgIC8vIERQSV9JbnZhbGlkU2hlZXRNZXNzYWdlLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkludmFsaWRTaGVldE1lc3NhZ2VcIl0gPSBcImludmFsaWRTaGVldE1lc3NhZ2VzXCI7XG4gICAgLy8gRFBJX01hcEJveERlZmF1bHRTdHlsZSwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJNYXBCb3hEZWZhdWx0U3R5bGVcIl0gPSBcIm1hcGJveERlZmF1bHRTdHlsZXNcIjtcbiAgICAvLyBEUElfUGFuZUZvcm1hdHRpbmdzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIlBhbmVGb3JtYXR0aW5nc1wiXSA9IFwicGFuZUZvcm1hdHRpbmdzXCI7XG4gICAgLy8gRFBJX1NvdXJjZU5hbWVXaXRoQ2FwdGlvbiwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJTb3VyY2VOYW1lV2l0aENhcHRpb25cIl0gPSBcInNvdXJjZU5hbWVXaXRoQ2FwdGlvblwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uQ29sb3JNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbkNvbG9yTWFwXCJdID0gXCJjb25uZWN0aW9uQ29sb3JNYXBcIjtcbiAgICAvLyBEUElfVGFyZ2V0TmFtZVdpdGhDYXB0aW9uLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIlRhcmdldE5hbWVXaXRoQ2FwdGlvblwiXSA9IFwidGFyZ2V0TmFtZVdpdGhDYXB0aW9uXCI7XG4gICAgLy8gRFBJX1ZpZXdJZHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2Ygc3RyaW5nKVxuICAgIFBhcmFtZXRlcklkW1wiVmlld0lkc1wiXSA9IFwidmlld0lkc1wiO1xuICAgIC8vIERQSV9BZGRJblNldHRpbmdzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluU2V0dGluZ3NcIl0gPSBcImFkZEluU2V0dGluZ3NcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZUljb25zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VJY29uc1wiXSA9IFwiZGF0YXNvdXJjZUljb25zXCI7XG4gICAgLy8gRFBJX0Zvcm1hdHRlZFRleHQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0dGVkVGV4dFwiXSA9IFwiZm9ybWF0dGVkVGV4dFwiO1xuICAgIC8vIERQSV9JY29uVG9vbHRpcCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJJY29uVG9vbHRpcFwiXSA9IFwiaWNvblRvb2x0aXBcIjtcbiAgICAvLyBEUElfVGl0bGUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVGl0bGVcIl0gPSBcInRpdGxlXCI7XG4gICAgLy8gRFBJX1Rvb2x0aXAsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiVG9vbHRpcFwiXSA9IFwidG9vbHRpcFwiO1xuICAgIC8vIERQSV9ab25lVGV4dCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJab25lVGV4dFwiXSA9IFwiem9uZVRleHRcIjtcbiAgICAvLyBEUElfQWxpZ25tZW50RmxhZ3MsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQWxpZ25tZW50RmxhZ3NcIl0gPSBcImFsaWdubWVudEZsYWdzXCI7XG4gICAgLy8gRFBJX0FscGhhTGV2ZWwsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQWxwaGFMZXZlbFwiXSA9IFwiYWxwaGFMZXZlbFwiO1xuICAgIC8vIERQSV9Bbm92YURGLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkFub3ZhREZcIl0gPSBcImFub3ZhRGZcIjtcbiAgICAvLyBEUElfQXRUaGVMZXZlbEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkF0VGhlTGV2ZWxJbmRleFwiXSA9IFwiYXRUaGVMZXZlbEluZGV4XCI7XG4gICAgLy8gRFBJX0F1dG9tYXRpY0RyaWxsSWR4SW5WZWN0b3IsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQXV0b21hdGljRHJpbGxJZHhJblZlY3RvclwiXSA9IFwiYXV0b21hdGljRHJpbGxJZHhWZWN0b3JcIjtcbiAgICAvLyBEUElfQXV0b1NpemUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQXV0b1NpemVcIl0gPSBcImF1dG9tYXRpY1NpemVcIjtcbiAgICAvLyBEUElfQmFzZUNvb3JkLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkJhc2VDb29yZFwiXSA9IFwiYmFzZUNvb3JkXCI7XG4gICAgLy8gRFBJX0NhbGNFZGl0b3JDdXJzb3JQb3NQb3N0RHJvcCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDYWxjRWRpdG9yQ3Vyc29yUG9zUG9zdERyb3BcIl0gPSBcImNhbGNFZGl0b3JDdXJzb3JQb3NQb3N0RHJvcFwiO1xuICAgIC8vIERQSV9DYWxjRWRpdG9yRHJvcFBvcywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDYWxjRWRpdG9yRHJvcFBvc1wiXSA9IFwiY2FsY0VkaXRvckRyb3BQb3NcIjtcbiAgICAvLyBEUElfQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25FbmRQb3MsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25FbmRQb3NcIl0gPSBcImNhbGNFZGl0b3JUZXh0U2VsZWN0aW9uRW5kUG9zXCI7XG4gICAgLy8gRFBJX0NhbGNFZGl0b3JUZXh0U2VsZWN0aW9uU3RhcnRQb3MsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvc1wiXSA9IFwiY2FsY0VkaXRvclRleHRTZWxlY3Rpb25TdGFydFBvc1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEJpbklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsQmluSWRcIl0gPSBcImNhdGVnb3JpY2FsQmluSWRcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaW5kQ29udHJvbGxlcklkLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRmluZENvbnRyb2xsZXJJZFwiXSA9IFwiY2F0ZWdvcmljYWxGaW5kQ29udHJvbGxlcklkXCI7XG4gICAgLy8gRFBJX0NsYXVzZVRvTW9kaWZ5SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ2xhdXNlVG9Nb2RpZnlJbmRleFwiXSA9IFwiY2xhdXNlVG9Nb2RpZnlJbmRleFwiO1xuICAgIC8vIERQSV9DbGllbnRSZW5kZXJQaXhlbExpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNsaWVudFJlbmRlclBpeGVsTGltaXRcIl0gPSBcImNsaWVudFJlbmRlclBpeGVsTGltaXRcIjtcbiAgICAvLyBEUElfQ29sQ291bnQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ29sQ291bnRcIl0gPSBcImNvbENvdW50XCI7XG4gICAgLy8gRFBJX0NvbFdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbFdpZHRoXCJdID0gXCJjb2xXaWR0aFwiO1xuICAgIC8vIERQSV9Db2x1bW5MZXZlbHMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ29sdW1uTGV2ZWxzXCJdID0gXCJjb2x1bW5MZXZlbHNcIjtcbiAgICAvLyBEUElfQ29sdW1uTnVtYmVyLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbk51bWJlclwiXSA9IFwiY29sdW1uTnVtYmVyXCI7XG4gICAgLy8gRFBJX0NvbHVtbldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbldpZHRoXCJdID0gXCJjb2x1bW5XaWR0aFwiO1xuICAgIC8vIERQSV9Db250ZW50SGVpZ2h0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbnRlbnRIZWlnaHRcIl0gPSBcImNvbnRlbnRIXCI7XG4gICAgLy8gRFBJX0NvbnRlbnRXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDb250ZW50V2lkdGhcIl0gPSBcImNvbnRlbnRXXCI7XG4gICAgLy8gRFBJX0NvbnRlbnRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbnRlbnRYXCJdID0gXCJjb250ZW50WFwiO1xuICAgIC8vIERQSV9Db250ZW50WSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDb250ZW50WVwiXSA9IFwiY29udGVudFlcIjtcbiAgICAvLyBEUElfQ29vcmRpbmF0ZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDb29yZGluYXRlXCJdID0gXCJjb29yZFwiO1xuICAgIC8vIERQSV9DdXJEYXRlQWdnLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkN1ckRhdGVBZ2dcIl0gPSBcImN1ckRhdGVBZ2dcIjtcbiAgICAvLyBEUElfQ3VycmVudEN1c3RWaWV3SWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ3VycmVudEN1c3RWaWV3SWRcIl0gPSBcImN1cnJlbnRDdXN0b21WaWV3SWRcIjtcbiAgICAvLyBEUElfQ3VzdG9tU3BsaXRDaGFyYWN0ZXJDb3VudFNlcGFyYXRvciwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJDdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yXCJdID0gXCJjdXN0b21TcGxpdENoYXJhY3RlckNvdW50U2VwYXJhdG9yXCI7XG4gICAgLy8gRFBJX0N1c3RvbVNwbGl0RGVzaXJlZFNwbGl0Q291bnQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiQ3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudFwiXSA9IFwiY3VzdG9tU3BsaXREZXNpcmVkU3BsaXRDb3VudFwiO1xuICAgIC8vIERQSV9EYXNoYm9hcmRHcmlkU2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRHcmlkU2l6ZVwiXSA9IFwiZGFzaGJvYXJkR3JpZFNpemVcIjtcbiAgICAvLyBEUElfRGF0YUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFJbmRleFwiXSA9IFwiZGF0YUluZGV4XCI7XG4gICAgLy8gRFBJX0RlY2ltYWxQbGFjZXMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRGVjaW1hbFBsYWNlc1wiXSA9IFwiZGVjaW1hbFBsYWNlc1wiO1xuICAgIC8vIERQSV9EZWx0YVRpbWUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRGVsdGFUaW1lXCJdID0gXCJkZWx0YVRpbWVcIjtcbiAgICAvLyBEUElfRGVzdFBpeCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJEZXN0UGl4XCJdID0gXCJkZXN0UGl4XCI7XG4gICAgLy8gRFBJX0RldmljZUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZUluZGV4XCJdID0gXCJkZXZpY2VJbmRleFwiO1xuICAgIC8vIERQSV9EdXJhdGlvbiwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJEdXJhdGlvblwiXSA9IFwiZHVyYXRpb25cIjtcbiAgICAvLyBEUElfRW5kUHRYLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkVuZFB0WFwiXSA9IFwiZW5kWFwiO1xuICAgIC8vIERQSV9FbmRQdFksIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRW5kUHRZXCJdID0gXCJlbmRZXCI7XG4gICAgLy8gRFBJX0Vycm9yTGVuLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkVycm9yTGVuXCJdID0gXCJsZW5ndGhPZkNhbGNPZkVycm9yXCI7XG4gICAgLy8gRFBJX0Vycm9yUG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkVycm9yUG9zXCJdID0gXCJzdGFydFBvc2l0aW9uRm9yRXJyb3JcIjtcbiAgICAvLyBEUElfRXhjZXB0aW9uRXJyb3JNZXNzYWdlSWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRXhjZXB0aW9uRXJyb3JNZXNzYWdlSWRcIl0gPSBcImV4Y2VwdGlvbkVycm9yTWVzc2FnZUlkXCI7XG4gICAgLy8gRFBJX0V4dGVudHNILCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dGVudHNIXCJdID0gXCJleHRlbnRzSGVpZ2h0XCI7XG4gICAgLy8gRFBJX0V4dGVudHNXLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dGVudHNXXCJdID0gXCJleHRlbnRzV2lkdGhcIjtcbiAgICAvLyBEUElfRXh0ZW50c1gsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRXh0ZW50c1hcIl0gPSBcImV4dGVudHNYXCI7XG4gICAgLy8gRFBJX0V4dGVudHNZLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dGVudHNZXCJdID0gXCJleHRlbnRzWVwiO1xuICAgIC8vIERQSV9GaWVsZEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkSW5kZXhcIl0gPSBcImZpZWxkSW5kZXhcIjtcbiAgICAvLyBEUElfRmllbGROYW1lSWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lSWRcIl0gPSBcImZpZWxkTmFtZUlkXCI7XG4gICAgLy8gRFBJX0ZpcnN0RGF5T2ZXZWVrLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkZpcnN0RGF5T2ZXZWVrXCJdID0gXCJmaXJzdERheU9mV2Vla1wiO1xuICAgIC8vIERQSV9GaXJzdFZhbHVlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRmlyc3RWYWx1ZUluZGV4XCJdID0gXCJmaXJzdFZhbHVlSW5kZXhcIjtcbiAgICAvLyBEUElfRml4ZWRTaXplUHJlc2V0SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiRml4ZWRTaXplUHJlc2V0SW5kZXhcIl0gPSBcImZpeGVkU2l6ZVByZXNldEluZGV4XCI7XG4gICAgLy8gRFBJX0ZvY3VzSXRlbUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkZvY3VzSXRlbUluZGV4XCJdID0gXCJmb2N1c0l0ZW1JbmRleFwiO1xuICAgIC8vIERQSV9Gb250U2l6ZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJGb250U2l6ZVwiXSA9IFwiZm9udFNpemVcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RJbnRSYW5nZUVuZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdEludFJhbmdlRW5kXCJdID0gXCJmb3JlY2FzdEludFJhbmdlRW5kXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0SW50UmFuZ2VTdGFydCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdEludFJhbmdlU3RhcnRcIl0gPSBcImZvcmVjYXN0SW50UmFuZ2VTdGFydFwiO1xuICAgIC8vIERQSV9GdW5jdGlvbkhlbHBJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJGdW5jdGlvbkhlbHBJbmRleFwiXSA9IFwiZnVuY3Rpb25IZWxwSW5kZXhcIjtcbiAgICAvLyBEUElfR2VvZ3JhcGhpY1NlYXJjaE1heFJlc3VsdHMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiR2VvZ3JhcGhpY1NlYXJjaE1heFJlc3VsdHNcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hNYXhSZXN1bHRzXCI7XG4gICAgLy8gRFBJX0hlaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJIZWlnaHRcIl0gPSBcImhcIjtcbiAgICAvLyBEUElfSGllcmFyY2h5TGV2ZWwsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TGV2ZWxcIl0gPSBcImhpZXJhcmNoeUxldmVsXCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeUxldmVsTG9hZGVkLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkhpZXJhcmNoeUxldmVsTG9hZGVkXCJdID0gXCJoaWVyYXJjaHlMZXZlbExvYWRlZFwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlMZXZlbE1pbmltdW0sIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TGV2ZWxNaW5pbXVtXCJdID0gXCJoaWVyYXJjaHlMZXZlbE1pbmltdW1cIjtcbiAgICAvLyBEUElfSGllcmFyY2h5TG9hZExpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkhpZXJhcmNoeUxvYWRMaW1pdFwiXSA9IFwiaGllcmFyY2h5TG9hZExpbWl0XCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdENvbnRyb2xsZXJJZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlTZWxlY3RDb250cm9sbGVySWRcIl0gPSBcImhpZXJhcmNoeVNlbGVjdENvbnRyb2xsZXJJZFwiO1xuICAgIC8vIERQSV9Ib3J6VGV4dENlbGwsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiSG9yelRleHRDZWxsXCJdID0gXCJob3J6VGV4dENlbGxcIjtcbiAgICAvLyBEUElfSW1hZ2VJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZUluZGV4XCJdID0gXCJpbWFnZUluZGV4XCI7XG4gICAgLy8gRFBJX0ltYWdlU2l6ZUxpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlU2l6ZUxpbWl0XCJdID0gXCJpbWFnZVNpemVMaW1pdFwiO1xuICAgIC8vIERQSV9UcmFuc3BhcmVudExpbmVNYXJrc0xpbWl0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zcGFyZW50TGluZU1hcmtzTGltaXRcIl0gPSBcInRyYW5zcGFyZW50TGluZU1hcmtzTGltaXRcIjtcbiAgICAvLyBEUElfSW5kZW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGVudFwiXSA9IFwiaW5kZW50XCI7XG4gICAgLy8gRFBJX0luZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4XCJdID0gXCJpZHhcIjtcbiAgICAvLyBEUElfSW5kZXhGcm9tLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4RnJvbVwiXSA9IFwiaW5kZXhGcm9tXCI7XG4gICAgLy8gRFBJX0luZGV4T2Zmc2V0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4T2Zmc2V0XCJdID0gXCJpbmRleE9mZnNldFwiO1xuICAgIC8vIERQSV9JbmRleFRvLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4VG9cIl0gPSBcImluZGV4VG9cIjtcbiAgICAvLyBEUElfSW5saW5lQ29ubmVjdGlvblJlbmFtZVJvdywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJJbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93XCJdID0gXCJpbmxpbmVDb25uZWN0aW9uUmVuYW1lUm93XCI7XG4gICAgLy8gRFBJX0luc2VydFBvcywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJJbnNlcnRQb3NcIl0gPSBcImluc2VydFBvc1wiO1xuICAgIC8vIERQSV9Jc0hhc0RhdGFTdXBwb3J0ZWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiSXNIYXNEYXRhU3VwcG9ydGVkXCJdID0gXCJpc0hhc0RhdGFTdXBwb3J0ZWRcIjtcbiAgICAvLyBEUElfTGVmdE1hcmdpbiwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJMZWZ0TWFyZ2luXCJdID0gXCJsZWZ0TWFyZ2luXCI7XG4gICAgLy8gRFBJX0xlZnRSaWdodEJvcmRlcldpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZnRSaWdodEJvcmRlcldpZHRoXCJdID0gXCJsZWZ0UmlnaHRCb3JkZXJXaWR0aFwiO1xuICAgIC8vIERQSV9Mb3dlckJvdW5kLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkxvd2VyQm91bmRcIl0gPSBcImxvd2VyQm91bmRcIjtcbiAgICAvLyBEUElfTWFwUmVxdWVzdFBpeGVscywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXBSZXF1ZXN0UGl4ZWxzXCJdID0gXCJtYXBSZXF1ZXN0UGl4ZWxzXCI7XG4gICAgLy8gRFBJX01hcFNjYWxlRm9udFNpemVQaXhlbHMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWFwU2NhbGVGb250U2l6ZVBpeGVsc1wiXSA9IFwibWFwU2NhbGVGb250U2l6ZVBpeGVsc1wiO1xuICAgIC8vIERQSV9NYXBTY2FsZVJlYWRvdXROdW1iZXIsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWFwU2NhbGVSZWFkb3V0TnVtYmVyXCJdID0gXCJtYXBTY2FsZVJlYWRvdXROdW1iZXJcIjtcbiAgICAvLyBEUElfTWFwU2NhbGVXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXBTY2FsZVdpZHRoXCJdID0gXCJtYXBTY2FsZVdpZHRoXCI7XG4gICAgLy8gRFBJX01hcFRpbGVTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFRpbGVTaXplXCJdID0gXCJtYXBUaWxlU2l6ZVwiO1xuICAgIC8vIERQSV9NYXJnaW4sIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWFyZ2luXCJdID0gXCJtYXJnaW5cIjtcbiAgICAvLyBEUElfTWFyZ2luQm90dG9tLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmdpbkJvdHRvbVwiXSA9IFwibWFyZ2luQm90dG9tXCI7XG4gICAgLy8gRFBJX01hcmdpbkxlZnQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWFyZ2luTGVmdFwiXSA9IFwibWFyZ2luTGVmdFwiO1xuICAgIC8vIERQSV9NYXJnaW5SaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXJnaW5SaWdodFwiXSA9IFwibWFyZ2luUmlnaHRcIjtcbiAgICAvLyBEUElfTWFyZ2luVG9wLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmdpblRvcFwiXSA9IFwibWFyZ2luVG9wXCI7XG4gICAgLy8gRFBJX01heENlbGwsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4Q2VsbFwiXSA9IFwibWF4Q2VsbFwiO1xuICAgIC8vIERQSV9NYXhJdGVtU3BhbiwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXhJdGVtU3BhblwiXSA9IFwibWF4SXRlbVNwYW5cIjtcbiAgICAvLyBEUElfTWF4UG9seW5vbWlhbERlZ3JlZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXhQb2x5bm9taWFsRGVncmVlXCJdID0gXCJtYXhEZWdyZWVcIjtcbiAgICAvLyBEUElfTWF4UG9zaXRpb24sIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4UG9zaXRpb25cIl0gPSBcIm1heFBvc2l0aW9uXCI7XG4gICAgLy8gRFBJX01heFNpemUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4U2l6ZVwiXSA9IFwibWF4U2l6ZVwiO1xuICAgIC8vIERQSV9NaW5DZWxsLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbkNlbGxcIl0gPSBcIm1pbkNlbGxcIjtcbiAgICAvLyBEUElfTWluUG9seW5vbWlhbERlZ3JlZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJNaW5Qb2x5bm9taWFsRGVncmVlXCJdID0gXCJtaW5EZWdyZWVcIjtcbiAgICAvLyBEUElfTWluUG9zaXRpb24sIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWluUG9zaXRpb25cIl0gPSBcIm1pblBvc2l0aW9uXCI7XG4gICAgLy8gRFBJX01pblNpemUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTWluU2l6ZVwiXSA9IFwibWluU2l6ZVwiO1xuICAgIC8vIERQSV9Nb2RlbERGLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1vZGVsREZcIl0gPSBcIm1vZGVsRGZcIjtcbiAgICAvLyBEUElfTmV3SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTmV3SW5kZXhcIl0gPSBcIm5ld0luZGV4XCI7XG4gICAgLy8gRFBJX051bURhdGFTb3VyY2VzVXNpbmdTZXJ2ZXIsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlclwiXSA9IFwibnVtRGF0YVNvdXJjZXNVc2luZ1NlcnZlclwiO1xuICAgIC8vIERQSV9OdW1GaWx0ZXJlZE9icywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJOdW1GaWx0ZXJlZE9ic1wiXSA9IFwiZmlsdGVyZWRPYnNlcnZhdGlvbnNcIjtcbiAgICAvLyBEUElfTnVtTW9kZWxlZE9icywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJOdW1Nb2RlbGVkT2JzXCJdID0gXCJtb2RlbGVkT2JzZXJ2YXRpb25zXCI7XG4gICAgLy8gRFBJX051bU5vdENsdXN0ZXJlZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJOdW1Ob3RDbHVzdGVyZWRcIl0gPSBcIm51bU5vdENsdXN0ZXJlZFwiO1xuICAgIC8vIERQSV9OdW1OdW1lcmljRmllbGRzLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk51bU51bWVyaWNGaWVsZHNcIl0gPSBcIm51bU51bWVyaWNGaWVsZHNcIjtcbiAgICAvLyBEUElfTnVtT3V0bGllcnMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTnVtT3V0bGllcnNcIl0gPSBcIm51bU91dGxpZXJzXCI7XG4gICAgLy8gRFBJX051bVJvd3MsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiTnVtUm93c1wiXSA9IFwibnVtUm93c1wiO1xuICAgIC8vIERQSV9OdW1TZWxlY3RlZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJOdW1TZWxlY3RlZFwiXSA9IFwibnVtU2VsZWN0ZWRcIjtcbiAgICAvLyBEUElfT2Zmc2V0WCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJPZmZzZXRYXCJdID0gXCJvZmZzZXRYXCI7XG4gICAgLy8gRFBJX09mZnNldFksIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiT2Zmc2V0WVwiXSA9IFwib2Zmc2V0WVwiO1xuICAgIC8vIERQSV9QYWRkaW5nLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZGRpbmdcIl0gPSBcInBhZGRpbmdcIjtcbiAgICAvLyBEUElfUGFkZGluZ0JvdHRvbSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJQYWRkaW5nQm90dG9tXCJdID0gXCJwYWRkaW5nQm90dG9tXCI7XG4gICAgLy8gRFBJX1BhZGRpbmdMZWZ0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZGRpbmdMZWZ0XCJdID0gXCJwYWRkaW5nTGVmdFwiO1xuICAgIC8vIERQSV9QYWRkaW5nUmlnaHQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUGFkZGluZ1JpZ2h0XCJdID0gXCJwYWRkaW5nUmlnaHRcIjtcbiAgICAvLyBEUElfUGFkZGluZ1RvcCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJQYWRkaW5nVG9wXCJdID0gXCJwYWRkaW5nVG9wXCI7XG4gICAgLy8gRFBJX1BhZ2VMb2FkUGVyY2VudGFnZSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJQYWdlTG9hZFBlcmNlbnRhZ2VcIl0gPSBcInBhZ2VMb2FkUGVyY2VudGFnZVwiO1xuICAgIC8vIERQSV9QYWxldHRlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUGFsZXR0ZUluZGV4XCJdID0gXCJwYWxldHRlSW5kZXhcIjtcbiAgICAvLyBEUElfUGFuZVNwZWNpZmljYXRpb25JZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJQYW5lU3BlY2lmaWNhdGlvbklkXCJdID0gXCJwYW5lU3BlY1wiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJDdHJsSW5jcmVtZW50c1BlclRpY2ssIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyQ3RybEluY3JlbWVudHNQZXJUaWNrXCJdID0gXCJwYXJhbWV0ZXJDb250cm9sSW5jcmVtZW50TXVsdGlwbGllclwiO1xuICAgIC8vIERQSV9Qb2x5bm9taWFsRGVncmVlLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBvbHlub21pYWxEZWdyZWVcIl0gPSBcImRlZ3JlZVwiO1xuICAgIC8vIERQSV9Qb3J0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBvcnRcIl0gPSBcImRhdGFzb3VyY2VQb3J0XCI7XG4gICAgLy8gRFBJX1Bvc2l0aW9uLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBvc2l0aW9uXCJdID0gXCJwb3NpdGlvblwiO1xuICAgIC8vIERQSV9QYXJlbnRQcm9qZWN0SWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUGFyZW50UHJvamVjdElkXCJdID0gXCJwYXJlbnRQcm9qZWN0SWRcIjtcbiAgICAvLyBEUElfUHVibGlzaFJlc3VsdFN0cmluZ0lkLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hSZXN1bHRTdHJpbmdJZFwiXSA9IFwicHVibGlzaFJlc3VsdFN0cmluZ0lkXCI7XG4gICAgLy8gRFBJX1JhZGl1cywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSYWRpdXNcIl0gPSBcInJhZGl1c1wiO1xuICAgIC8vIERQSV9SZWFkb3V0T2Zmc2V0LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlYWRvdXRPZmZzZXRcIl0gPSBcInJlYWRvdXRPZmZzZXRcIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlSW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlSW5kZXhcIl0gPSBcInJlZmVyZW5jZUluZGV4XCI7XG4gICAgLy8gRFBJX1JlZ2lvbkhlaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSZWdpb25IZWlnaHRcIl0gPSBcInJlZ2lvbkhlaWdodFwiO1xuICAgIC8vIERQSV9SZWdpb25XaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSZWdpb25XaWR0aFwiXSA9IFwicmVnaW9uV2lkdGhcIjtcbiAgICAvLyBEUElfUmVtb3ZlZERhdGFzb3VyY2VDb3VudCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSZW1vdmVkRGF0YXNvdXJjZUNvdW50XCJdID0gXCJyZW1vdmVkRGF0YXNvdXJjZUNvdW50XCI7XG4gICAgLy8gRFBJX1JlbW92ZWRTaGVldENvdW50LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlbW92ZWRTaGVldENvdW50XCJdID0gXCJyZW1vdmVkU2hlZXRDb3VudFwiO1xuICAgIC8vIERQSV9SZXNpZHVhbERGLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc2lkdWFsREZcIl0gPSBcInJlc2lkdWFsRGZcIjtcbiAgICAvLyBEUElfUmVzaXplQ29sdW1uLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc2l6ZUNvbHVtblwiXSA9IFwicmVzaXplQ29sdW1uXCI7XG4gICAgLy8gRFBJX1Jlc3RhcnRFdmVyeUluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc3RhcnRFdmVyeUluZGV4XCJdID0gXCJyZXN0YXJ0RXZlcnlJbmRleFwiO1xuICAgIC8vIERQSV9SaWdodE1hcmdpbiwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSaWdodE1hcmdpblwiXSA9IFwicmlnaHRNYXJnaW5cIjtcbiAgICAvLyBEUElfUm93Q291bnQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiUm93Q291bnRcIl0gPSBcInJvd0NvdW50XCI7XG4gICAgLy8gRFBJX1Jvd0hlaWdodCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSb3dIZWlnaHRcIl0gPSBcInJvd0hlaWdodFwiO1xuICAgIC8vIERQSV9Sb3dJbm5lckxldmVscywgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSb3dJbm5lckxldmVsc1wiXSA9IFwicm93SW5uZXJMZXZlbHNcIjtcbiAgICAvLyBEUElfUm93TGV2ZWxzLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJvd0xldmVsc1wiXSA9IFwicm93TGV2ZWxzXCI7XG4gICAgLy8gRFBJX1Jvd051bWJlciwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSb3dOdW1iZXJcIl0gPSBcInJvd051bWJlclwiO1xuICAgIC8vIERQSV9Sb3dXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJSb3dXaWR0aFwiXSA9IFwicm93V2lkdGhcIjtcbiAgICAvLyBEUElfU2Vjb25kVmFsdWVJbmRleCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJTZWNvbmRWYWx1ZUluZGV4XCJdID0gXCJzZWNvbmRWYWx1ZUluZGV4XCI7XG4gICAgLy8gRFBJX1NlY29uZHNBZ28sIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2Vjb25kc0Fnb1wiXSA9IFwic2Vjb25kc0Fnb1wiO1xuICAgIC8vIERQSV9TZWxlY3Rpb25FbmQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uRW5kXCJdID0gXCJzZWxlY3Rpb25FbmRcIjtcbiAgICAvLyBEUElfU2VsZWN0aW9uU3RhcnQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uU3RhcnRcIl0gPSBcInNlbGVjdGlvblN0YXJ0XCI7XG4gICAgLy8gRFBJX1NoYXBlUGFsZXR0ZUlELCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNoYXBlUGFsZXR0ZUlEXCJdID0gXCJzaGFwZVBhbGV0dGVJZFwiO1xuICAgIC8vIERQSV9TaGVldEluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0SW5kZXhcIl0gPSBcInNoZWV0SW5kZXhcIjtcbiAgICAvLyBEUElfU2hlbGZQb3NpdGlvbkluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmUG9zaXRpb25JbmRleFwiXSA9IFwic2hlbGZQb3NJbmRleFwiO1xuICAgIC8vIERQSV9TaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNpemVcIl0gPSBcInNpemVcIjtcbiAgICAvLyBEUElfU2l6ZURpZmZlcmVuY2UsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZURpZmZlcmVuY2VcIl0gPSBcInNpemVEZWx0YVwiO1xuICAgIC8vIERQSV9TbmFwRGlzdGFuY2UsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU25hcERpc3RhbmNlXCJdID0gXCJzbmFwRGlzdGFuY2VcIjtcbiAgICAvLyBEUElfU25hcExvY2F0aW9uLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNuYXBMb2NhdGlvblwiXSA9IFwic25hcExvY2F0aW9uXCI7XG4gICAgLy8gRFBJX1NvbHZlT3JkZXIsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU29sdmVPcmRlclwiXSA9IFwic29sdmVPcmRlclwiO1xuICAgIC8vIERQSV9TcGFjZUJldHdlZW5Qb2ludHMsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU3BhY2VCZXR3ZWVuUG9pbnRzXCJdID0gXCJzcGFjZUJldHdlZW5Qb2ludHNcIjtcbiAgICAvLyBEUElfU3RlcFNpemUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU3RlcFNpemVcIl0gPSBcInN0ZXBTaXplXCI7XG4gICAgLy8gRFBJX1N0ZXBzLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlN0ZXBzXCJdID0gXCJzdGVwc1wiO1xuICAgIC8vIERQSV9TdG9yeVBvaW50SW5kZXgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiU3RvcnlQb2ludEluZGV4XCJdID0gXCJjdXJyZW50U3Rvcnlwb2ludEluZGV4XCI7XG4gICAgLy8gRFBJX1N0eWxlTGVuLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlN0eWxlTGVuXCJdID0gXCJ0b2tlbkxlbmd0aEZvclN0eWxlXCI7XG4gICAgLy8gRFBJX1N0eWxlUG9zLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlN0eWxlUG9zXCJdID0gXCJ0b2tlblBvc2l0aW9uRm9yU3R5bGVcIjtcbiAgICAvLyBEUElfU3dhdGNoQXJlYVdpZHRoLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlN3YXRjaEFyZWFXaWR0aFwiXSA9IFwic3dhdGNoV2lkdGhcIjtcbiAgICAvLyBEUElfVGFyZ2V0QmluSWQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0QmluSWRcIl0gPSBcInRhcmdldEJpbklkXCI7XG4gICAgLy8gRFBJX1RhcmdldFB0WCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJUYXJnZXRQdFhcIl0gPSBcInRhcmdldFhcIjtcbiAgICAvLyBEUElfVGFyZ2V0UHRZLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRhcmdldFB0WVwiXSA9IFwidGFyZ2V0WVwiO1xuICAgIC8vIERQSV9UaWxlRmFjdG9yLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRpbGVGYWN0b3JcIl0gPSBcInRpbGVGYWN0b3JcIjtcbiAgICAvLyBEUElfVGl0bGVIZWlnaHQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiVGl0bGVIZWlnaHRcIl0gPSBcInRpdGxlSGVpZ2h0XCI7XG4gICAgLy8gRFBJX1RpdGxlV2lkdGgsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiVGl0bGVXaWR0aFwiXSA9IFwidGl0bGVXaWR0aFwiO1xuICAgIC8vIERQSV9Ub3BCb3R0b21Cb3JkZXJXaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJUb3BCb3R0b21Cb3JkZXJXaWR0aFwiXSA9IFwidG9wQm90dG9tQm9yZGVyV2lkdGhcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uTGluZVNpemUsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uTGluZVNpemVcIl0gPSBcInVpQXV0b21hdGlvbkxpbmVTaXplXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvblBhZ2VTaXplLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvblBhZ2VTaXplXCJdID0gXCJ1aUF1dG9tYXRpb25QYWdlU2l6ZVwiO1xuICAgIC8vIERQSV9VSUQsIGhhdmluZyB0eXBlIGludFxuICAgIFBhcmFtZXRlcklkW1wiVUlEXCJdID0gXCJ1aWRcIjtcbiAgICAvLyBEUElfVXBwZXJCb3VuZCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJVcHBlckJvdW5kXCJdID0gXCJ1cHBlckJvdW5kXCI7XG4gICAgLy8gRFBJX1ZlcnRUZXh0Q2VsbCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJWZXJ0VGV4dENlbGxcIl0gPSBcInZlcnRUZXh0Q2VsbFwiO1xuICAgIC8vIERQSV9XaWR0aCwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJXaWR0aFwiXSA9IFwid1wiO1xuICAgIC8vIERQSV9YLCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlhcIl0gPSBcInhcIjtcbiAgICAvLyBEUElfWSwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJZXCJdID0gXCJ5XCI7XG4gICAgLy8gRFBJX1pPcmRlciwgaGF2aW5nIHR5cGUgaW50XG4gICAgUGFyYW1ldGVySWRbXCJaT3JkZXJcIl0gPSBcInpPcmRlclwiO1xuICAgIC8vIERQSV9ab25lSWNvbkluZGV4LCBoYXZpbmcgdHlwZSBpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVJY29uSW5kZXhcIl0gPSBcInpvbmVJY29uSW5kZXhcIjtcbiAgICAvLyBEUElfQWxpYXNJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiQWxpYXNJbmRpY2VzXCJdID0gXCJhbGlhc0luZGljZXNcIjtcbiAgICAvLyBEUElfQW5vdmFERlZlYywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkFub3ZhREZWZWNcIl0gPSBcImFub3ZhRGZWZWN0b3JcIjtcbiAgICAvLyBEUElfQ29sdW1uSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbkluZGljZXNcIl0gPSBcImNvbHVtbkluZGljZXNcIjtcbiAgICAvLyBEUElfRHJpbGxGaWVsZEluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJEcmlsbEZpZWxkSW5kaWNlc1wiXSA9IFwiZHJpbGxGaWVsZEluZGljZXNcIjtcbiAgICAvLyBEUElfRmlsdGVyTWF4SW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlck1heEluZGljZXNcIl0gPSBcImZpbHRlck1heEluZGljZXNcIjtcbiAgICAvLyBEUElfRmlsdGVyTWluSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlck1pbkluZGljZXNcIl0gPSBcImZpbHRlck1pbkluZGljZXNcIjtcbiAgICAvLyBEUElfRmlsdGVyVmFsdWVzSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclZhbHVlc0luZGljZXNcIl0gPSBcImZpbHRlclZhbHVlSW5kaWNlc1wiO1xuICAgIC8vIERQSV9Gb3JtYXRTdHJpbmdJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0U3RyaW5nSW5kaWNlc1wiXSA9IFwiZm9ybWF0c3RySW5kaWNlc1wiO1xuICAgIC8vIERQSV9Gb3JtYXR0ZWRWYWxJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0dGVkVmFsSW5kaWNlc1wiXSA9IFwiZm9ybWF0VmFsSWR4c1wiO1xuICAgIC8vIERQSV9QYWxldHRlSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhbGV0dGVJbmRpY2VzXCJdID0gXCJwYWxldHRlc0luZGljZXNcIjtcbiAgICAvLyBEUElfUGFuZUluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lSW5kaWNlc1wiXSA9IFwicGFuZUluZGljZXNcIjtcbiAgICAvLyBEUElfUG9pbnRzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiUG9pbnRzXCJdID0gXCJwb2ludHNcIjtcbiAgICAvLyBEUElfUXVpY2tGaWx0ZXJTZXR0aW5ncywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlF1aWNrRmlsdGVyU2V0dGluZ3NcIl0gPSBcInF1aWNrRmlsdGVyU2V0dGluZ3NcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRJbmRpY2VzLCBoYXZpbmcgdHlwZSBpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWRJbmRpY2VzXCJdID0gXCJzZWxlY3RlZEluZGljZXNcIjtcbiAgICAvLyBEUElfU2hlbGZQb3NpdGlvbkluZGljZXMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJTaGVsZlBvc2l0aW9uSW5kaWNlc1wiXSA9IFwic2hlbGZQb3NJbmRpY2VzXCI7XG4gICAgLy8gRFBJX1RpbGVCb3gsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJUaWxlQm94XCJdID0gXCJ0aWxlQm94XCI7XG4gICAgLy8gRFBJX1RyYWlsT3ZlcnJpZGUsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJUcmFpbE92ZXJyaWRlXCJdID0gXCJ0cmFpbE92ZXJyaWRlXCI7XG4gICAgLy8gRFBJX1VJRHMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJVSURzXCJdID0gXCJ1aWRzXCI7XG4gICAgLy8gRFBJX1ZhbHVlSW5kaWNlcywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlSW5kaWNlc1wiXSA9IFwidmFsdWVJbmRpY2VzXCI7XG4gICAgLy8gRFBJX1hDZWxsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlhDZWxsT2Zmc2V0c1wiXSA9IFwieENlbGxPZmZzZXRzXCI7XG4gICAgLy8gRFBJX1hQaXhlbE9mZnNldHMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJYUGl4ZWxPZmZzZXRzXCJdID0gXCJ4UGl4ZWxPZmZzZXRzXCI7XG4gICAgLy8gRFBJX1lDZWxsT2Zmc2V0cywgaGF2aW5nIHR5cGUgaW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIllDZWxsT2Zmc2V0c1wiXSA9IFwieUNlbGxPZmZzZXRzXCI7XG4gICAgLy8gRFBJX1lQaXhlbE9mZnNldHMsIGhhdmluZyB0eXBlIGludFtdXG4gICAgUGFyYW1ldGVySWRbXCJZUGl4ZWxPZmZzZXRzXCJdID0gXCJ5UGl4ZWxPZmZzZXRzXCI7XG4gICAgLy8gRFBJX0ludE1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBpbnQpXG4gICAgUGFyYW1ldGVySWRbXCJJbnRNYXBcIl0gPSBcImludE1hcFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZEF1dGhTZXR0aW5nSW5kaWNlcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBpbnQpXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZEF1dGhTZXR0aW5nSW5kaWNlc1wiXSA9IFwic2VsZWN0ZWRBdXRoU2V0dGluZ0luZGljZXNcIjtcbiAgICAvLyBEUElfQWN0aXZlU3RvcnlQb2ludElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJBY3RpdmVTdG9yeVBvaW50SURcIl0gPSBcImFjdGl2ZVN0b3J5UG9pbnRJZFwiO1xuICAgIC8vIERQSV9BY3RpdmVab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGl2ZVpvbmVJRFwiXSA9IFwiYWN0aXZlWm9uZUlkXCI7XG4gICAgLy8gRFBJX0FjdHVhbFNpemUsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdHVhbFNpemVcIl0gPSBcImFjdHVhbFNpemVcIjtcbiAgICAvLyBEUElfQWRkSW5EZWJ1Z1BvcnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluRGVidWdQb3J0XCJdID0gXCJhZGRJbkRlYnVnUG9ydFwiO1xuICAgIC8vIERQSV9BZ2dyZWdhdGlvbkluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJBZ2dyZWdhdGlvbkluZGV4XCJdID0gXCJhZ2dyZWdhdGlvbkluZGV4XCI7XG4gICAgLy8gRFBJX0Fubm90YXRpb25JRCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiQW5ub3RhdGlvbklEXCJdID0gXCJhbm5vdGF0aW9uSWRcIjtcbiAgICAvLyBEUElfQXNzaWduZWRBbGlhc0NvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJBc3NpZ25lZEFsaWFzQ291bnRcIl0gPSBcImFzc2lnbmVkQWxpYXNDb3VudFwiO1xuICAgIC8vIERQSV9DYXBhYmlsaXR5SWQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNhcGFiaWxpdHlJZFwiXSA9IFwiY2FwYWJpbGl0eUlkXCI7XG4gICAgLy8gRFBJX0NhcmV0SW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNhcmV0SW5kZXhcIl0gPSBcImNhcmV0SW5kZXhcIjtcbiAgICAvLyBEUElfQ2VsbElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJDZWxsSURcIl0gPSBcImNlbGxJZFwiO1xuICAgIC8vIERQSV9Db2x1bW5JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiQ29sdW1uSW5kZXhcIl0gPSBcImNvbHVtbkluZGV4XCI7XG4gICAgLy8gRFBJX0NvbW1hbmRJRCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZElEXCJdID0gXCJpZFwiO1xuICAgIC8vIERQSV9Db21tYW5kSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRJbmRleFwiXSA9IFwiaW5kZXhcIjtcbiAgICAvLyBEUElfQ29udHJvbGxlcklkLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJDb250cm9sbGVySWRcIl0gPSBcImNvbnRyb2xsZXJJZFwiO1xuICAgIC8vIERQSV9Db3VudCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiQ291bnRcIl0gPSBcImNvdW50XCI7XG4gICAgLy8gRFBJX1VSb3dDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVVJvd0NvdW50XCJdID0gXCJ1Um93Q291bnRcIjtcbiAgICAvLyBEUElfVUNvbHVtbkNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJVQ29sdW1uQ291bnRcIl0gPSBcInVDb2x1bW5Db3VudFwiO1xuICAgIC8vIERQSV9DdXJyZW50UGFnZSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiQ3VycmVudFBhZ2VcIl0gPSBcImN1cnJlbnRQYWdlXCI7XG4gICAgLy8gRFBJX0RhdGVQZXJpb2RzQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVQZXJpb2RzQ291bnRcIl0gPSBcImRhdGVQZXJpb2RzQ291bnRcIjtcbiAgICAvLyBEUElfRGVjaW1hbHMsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkRlY2ltYWxzXCJdID0gXCJkZWNpbWFsc1wiO1xuICAgIC8vIERQSV9EZWZhdWx0SGVpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0SGVpZ2h0XCJdID0gXCJkZWZhdWx0SGVpZ2h0XCI7XG4gICAgLy8gRFBJX0RlZmF1bHRJdGVtLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0SXRlbVwiXSA9IFwiZGVmYXVsdEl0ZW1cIjtcbiAgICAvLyBEUElfRGVmYXVsdFdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0V2lkdGhcIl0gPSBcImRlZmF1bHRXaWR0aFwiO1xuICAgIC8vIERQSV9EZXB0aCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRGVwdGhcIl0gPSBcImRlcHRoXCI7XG4gICAgLy8gRFBJX0RldGFpbElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJEZXRhaWxJRFwiXSA9IFwiZGV0YWlsSWRcIjtcbiAgICAvLyBEUElfRHJpbGxMZXZlbCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRHJpbGxMZXZlbFwiXSA9IFwiZHJpbGxMZXZlbFwiO1xuICAgIC8vIERQSV9EdXBsaWNhdGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRHVwbGljYXRlSW5kZXhcIl0gPSBcImR1cGxpY2F0ZUluZGV4XCI7XG4gICAgLy8gRFBJX0VuZEluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJFbmRJbmRleFwiXSA9IFwiZW5kSW5kZXhcIjtcbiAgICAvLyBEUElfRmllbGRJY29uSWR4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZEljb25JZHhcIl0gPSBcImZpZWxkSWNvbklkeFwiO1xuICAgIC8vIERQSV9GaWx0ZXJMZXZlbCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyTGV2ZWxcIl0gPSBcImZpbHRlckxldmVsXCI7XG4gICAgLy8gRFBJX0ZpbHRlclRpbGVTaXplLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJUaWxlU2l6ZVwiXSA9IFwiZmlsdGVyVGlsZVNpemVcIjtcbiAgICAvLyBEUElfRmlzY2FsWWVhclN0YXJ0LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJGaXNjYWxZZWFyU3RhcnRcIl0gPSBcImZpc2NhbFllYXJTdGFydFwiO1xuICAgIC8vIERQSV9GaXRQYWdlc0Fjcm9zcywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRml0UGFnZXNBY3Jvc3NcIl0gPSBcInBhZ2VGaXRIb3Jpem9udGFsXCI7XG4gICAgLy8gRFBJX0ZpdFBhZ2VzRG93biwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRml0UGFnZXNEb3duXCJdID0gXCJwYWdlRml0VmVydGljYWxcIjtcbiAgICAvLyBEUElfRml4ZWRJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRml4ZWRJbmRleFwiXSA9IFwiZml4ZWRJbmRleFwiO1xuICAgIC8vIERQSV9GbGlwYm9hcmRab25lSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkZsaXBib2FyZFpvbmVJRFwiXSA9IFwiZmxpcGJvYXJkWm9uZUlkXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0QXV0b1JhbmdlU2l6ZSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RBdXRvUmFuZ2VTaXplXCJdID0gXCJmb3JlY2FzdEF1dG9SYW5nZVNpemVcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RFbmRPZlJhbmdlLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdEVuZE9mUmFuZ2VcIl0gPSBcImZvcmVjYXN0RW5kT2ZSYW5nZVwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdElnbm9yZUxhc3QsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0SWdub3JlTGFzdFwiXSA9IFwiZm9yZWNhc3RJZ25vcmVMYXN0XCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0TmV4dFJhbmdlU2l6ZSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3ROZXh0UmFuZ2VTaXplXCJdID0gXCJmb3JlY2FzdE5leHRSYW5nZVNpemVcIjtcbiAgICAvLyBEUElfR3JvdXBGbGFncywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiR3JvdXBGbGFnc1wiXSA9IFwiZ3JvdXBGbGFnXCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeUxldmVscywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TGV2ZWxzXCJdID0gXCJoaWVyYXJjaHlMZXZlbHNcIjtcbiAgICAvLyBEUElfSGllcmFyY2h5TWVtYmVySWQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkhpZXJhcmNoeU1lbWJlcklkXCJdID0gXCJoaWVyYXJjaHlNZW1iZXJJZFwiO1xuICAgIC8vIERQSV9IaXRUZXN0RmxhZ3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkhpdFRlc3RGbGFnc1wiXSA9IFwiaGl0VGVzdEZsYWdzXCI7XG4gICAgLy8gRFBJX0ltYWdlSGVpZ2h0LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZUhlaWdodFwiXSA9IFwiaW1hZ2VIZWlnaHRcIjtcbiAgICAvLyBEUElfSW1hZ2VXaWR0aCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VXaWR0aFwiXSA9IFwiaW1hZ2VXaWR0aFwiO1xuICAgIC8vIERQSV9JdGVtSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkl0ZW1JbmRleFwiXSA9IFwiaXRlbUluZGV4XCI7XG4gICAgLy8gRFBJX0l0ZW1JbmRleDEsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIkl0ZW1JbmRleDFcIl0gPSBcIml0ZW1JbmRleDFcIjtcbiAgICAvLyBEUElfTGluZUhlaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTGluZUhlaWdodFwiXSA9IFwibGluZUhlaWdodFwiO1xuICAgIC8vIERQSV9NYXBJbnRlcm1lZGlhdGVMZXZlbHMsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEludGVybWVkaWF0ZUxldmVsc1wiXSA9IFwibWFwSW50ZXJtZWRpYXRlTGV2ZWxzXCI7XG4gICAgLy8gRFBJX01hcFdvcmxkUmVwZWF0cywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTWFwV29ybGRSZXBlYXRzXCJdID0gXCJtYXBXb3JsZFJlcGVhdHNcIjtcbiAgICAvLyBEUElfTWF4QWxwaGEsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1heEFscGhhXCJdID0gXCJtYXhBbHBoYVwiO1xuICAgIC8vIERQSV9NYXhIZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1heEhlaWdodFwiXSA9IFwibWF4SGVpZ2h0XCI7XG4gICAgLy8gRFBJX01heE51bWJlcldlYkxpc3RJdGVtcywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4TnVtYmVyV2ViTGlzdEl0ZW1zXCJdID0gXCJtYXhOdW1iZXJXZWJMaXN0SXRlbXNcIjtcbiAgICAvLyBEUElfTWF4UHJldk9yTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4UHJldk9yTmV4dFZhbHVlc1wiXSA9IFwibWF4UHJldk9yTmV4dFZhbHVlc1wiO1xuICAgIC8vIERQSV9NYXhSb3dzLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXhSb3dzXCJdID0gXCJtYXhSb3dzXCI7XG4gICAgLy8gRFBJX01heFRyYW5zcGFyZW5jeSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTWF4VHJhbnNwYXJlbmN5XCJdID0gXCJjb2xvck1heFRyYW5zcGFyZW5jeVZhbHVlXCI7XG4gICAgLy8gRFBJX01heFdpZHRoLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJNYXhXaWR0aFwiXSA9IFwibWF4V2lkdGhcIjtcbiAgICAvLyBEUElfTWluQ29sdW1ucywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTWluQ29sdW1uc1wiXSA9IFwibWluQ29sdW1uc1wiO1xuICAgIC8vIERQSV9NaW5IZWlnaHQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbkhlaWdodFwiXSA9IFwibWluSGVpZ2h0XCI7XG4gICAgLy8gRFBJX01pblByZXZPck5leHRWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1pblByZXZPck5leHRWYWx1ZXNcIl0gPSBcIm1pblByZXZPck5leHRWYWx1ZXNcIjtcbiAgICAvLyBEUElfTWluVHJhbnNwYXJlbmN5LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJNaW5UcmFuc3BhcmVuY3lcIl0gPSBcImNvbG9yTWluVHJhbnNwYXJlbmN5VmFsdWVcIjtcbiAgICAvLyBEUElfTWluV2lkdGgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbldpZHRoXCJdID0gXCJtaW5XaWR0aFwiO1xuICAgIC8vIERQSV9OZXN0ZWRDYWxjc0luZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJOZXN0ZWRDYWxjc0luZGV4XCJdID0gXCJuZXN0ZWRDYWxjc0luZGV4XCI7XG4gICAgLy8gRFBJX05leHRWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIk5leHRWYWx1ZXNcIl0gPSBcIm5leHRWYWx1ZXNcIjtcbiAgICAvLyBEUElfTm9kZUxldmVsLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJOb2RlTGV2ZWxcIl0gPSBcIm5vZGVMZXZlbFwiO1xuICAgIC8vIERQSV9OdW1IaWdobGlnaHRlZCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTnVtSGlnaGxpZ2h0ZWRcIl0gPSBcIm51bUhpZ2hsaWdodGVkXCI7XG4gICAgLy8gRFBJX051bWJlck9mTmV4dFZhbHVlcywgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiTnVtYmVyT2ZOZXh0VmFsdWVzXCJdID0gXCJudW1iZXJPZk5leHRWYWx1ZXNcIjtcbiAgICAvLyBEUElfTnVtYmVyT2ZQcmV2VmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJOdW1iZXJPZlByZXZWYWx1ZXNcIl0gPSBcIm51bWJlck9mUHJldlZhbHVlc1wiO1xuICAgIC8vIERQSV9PYmplY3RJRCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiT2JqZWN0SURcIl0gPSBcIm9iamVjdElkXCI7XG4gICAgLy8gRFBJX09yZGVyaW5nVHlwZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJPcmRlcmluZ1R5cGVJbmRleFwiXSA9IFwib3JkZXJpbmdUeXBlSW5kZXhcIjtcbiAgICAvLyBEUElfUGFnZUNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJQYWdlQ291bnRcIl0gPSBcInBhZ2VDb3VudFwiO1xuICAgIC8vIERQSV9QYWdlRmFkZUVuZCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZUZhZGVFbmRcIl0gPSBcImZhZGVFbmRcIjtcbiAgICAvLyBEUElfUGFnZUZhZGVTdGFydCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZUZhZGVTdGFydFwiXSA9IFwiZmFkZVN0YXJ0XCI7XG4gICAgLy8gRFBJX1BhZ2VJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZUluZGV4XCJdID0gXCJwYWdlSW5kZXhcIjtcbiAgICAvLyBEUElfUGFnZU51bWJlciwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZU51bWJlclwiXSA9IFwicGFnZU51bWJlclwiO1xuICAgIC8vIERQSV9QYWdlU2NhbGVQZXJjZW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJQYWdlU2NhbGVQZXJjZW50XCJdID0gXCJwYWdlU2NhbGVQZXJjZW50XCI7XG4gICAgLy8gRFBJX1BhZ2VUcmFpbExlbmd0aCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFnZVRyYWlsTGVuZ3RoXCJdID0gXCJoaXN0b3J5TGVuZ3RoXCI7XG4gICAgLy8gRFBJX1BhbGV0dGVGbGFnc1ZhbCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUGFsZXR0ZUZsYWdzVmFsXCJdID0gXCJwYWxldHRlRmxhZ3NWYWxcIjtcbiAgICAvLyBEUElfUGFuZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJQYW5lSW5kZXhcIl0gPSBcInBhbmVJbmRleFwiO1xuICAgIC8vIERQSV9QYXJhbUN0cmxEaXNwbGF5RmxhZ3MsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtQ3RybERpc3BsYXlGbGFnc1wiXSA9IFwicGFyYW1EaXNwbGF5RmxhZ3NcIjtcbiAgICAvLyBEUElfUGFyZW50Wm9uZUlELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJQYXJlbnRab25lSURcIl0gPSBcInBhcmVudFpvbmVJZFwiO1xuICAgIC8vIERQSV9QZXJjZW50aWxlUGFyYW0sIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBlcmNlbnRpbGVQYXJhbVwiXSA9IFwicGVyY2VudGlsZVBhcmFtXCI7XG4gICAgLy8gRFBJX1ByZXZWYWx1ZXMsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlByZXZWYWx1ZXNcIl0gPSBcInByZXZWYWx1ZXNcIjtcbiAgICAvLyBEUElfUVJHQkNvbG9yLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJRUkdCQ29sb3JcIl0gPSBcInFyZ2JDb2xvclwiO1xuICAgIC8vIERQSV9SYW5nZU4sIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmdlTlwiXSA9IFwicmFuZ2VOXCI7XG4gICAgLy8gRFBJX1JhbmtUeXBlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmtUeXBlSW5kZXhcIl0gPSBcInJhbmtUeXBlSW5kZXhcIjtcbiAgICAvLyBEUElfUmVuZGVyQ29tcGxleGl0eSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiUmVuZGVyQ29tcGxleGl0eVwiXSA9IFwicmVuZGVyQ29tcGxleGl0eUxpbWl0XCI7XG4gICAgLy8gRFBJX1Jvd0luZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJSb3dJbmRleFwiXSA9IFwicm93SW5kZXhcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRBdXRoU2V0dGluZ0luZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZEF1dGhTZXR0aW5nSW5kZXhcIl0gPSBcInNlbGVjdGVkQXV0aFNldHRpbmdJbmRleFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZEZ1bGxTY2hlZHVsZUluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZEZ1bGxTY2hlZHVsZUluZGV4XCJdID0gXCJzZWxlY3RlZEZ1bGxTY2hlZHVsZUluZGV4XCI7XG4gICAgLy8gRFBJX1NlbGVjdGVkSW5jclNjaGVkdWxlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkSW5jclNjaGVkdWxlSW5kZXhcIl0gPSBcInNlbGVjdGVkSW5jclNjaGVkdWxlSW5kZXhcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRQdWJsaXNoQ2hvaWNlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkUHVibGlzaENob2ljZUluZGV4XCJdID0gXCJzZWxlY3RlZFB1Ymxpc2hDaG9pY2VJbmRleFwiO1xuICAgIC8vIERQSV9TZWxlY3RlZE1lbWJlckNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZE1lbWJlckNvdW50XCJdID0gXCJzZWxlY3RlZE1lbWJlckNvdW50XCI7XG4gICAgLy8gRFBJX1NoYXBlSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNoYXBlSURcIl0gPSBcInNoYXBlSWRcIjtcbiAgICAvLyBEUElfU2hlZXRVc2VDb3VudCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRVc2VDb3VudFwiXSA9IFwidXNlQ291bnRcIjtcbiAgICAvLyBEUElfU2hlbGZJdGVtSUQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmSXRlbUlEXCJdID0gXCJzaGVsZkl0ZW1JZFwiO1xuICAgIC8vIERQSV9TaWdGaWdzLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTaWdGaWdzXCJdID0gXCJzaWdGaWdzXCI7XG4gICAgLy8gRFBJX1NvcnRBZ2dJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiU29ydEFnZ0luZGV4XCJdID0gXCJzb3J0QWdnSW5kdlZhbHVlc1wiO1xuICAgIC8vIERQSV9Tb3J0Q29sdW1uSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRDb2x1bW5JbmRleFwiXSA9IFwic29ydENvbHVtbkluZGV4XCI7XG4gICAgLy8gRFBJX1NvcnREaXJlY3Rpb25JbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiU29ydERpcmVjdGlvbkluZGV4XCJdID0gXCJzb3J0RGlyZWN0aW9uSW5kZXhcIjtcbiAgICAvLyBEUElfU29ydEZpZWxkSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRGaWVsZEluZGV4XCJdID0gXCJzb3J0RmllbGRJbmRleFwiO1xuICAgIC8vIERQSV9TdGFydEluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTdGFydEluZGV4XCJdID0gXCJzdGFydEluZGV4XCI7XG4gICAgLy8gRFBJX1N0YXJ0T2ZXZWVrLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTdGFydE9mV2Vla1wiXSA9IFwic3RhcnRPZldlZWtcIjtcbiAgICAvLyBEUElfU3RvcnlQb2ludElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeVBvaW50SURcIl0gPSBcInN0b3J5UG9pbnRJZFwiO1xuICAgIC8vIERQSV9UYWJsZUNhbGNUeXBlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ2FsY1R5cGVJbmRleFwiXSA9IFwidGFibGVDYWxjVHlwZUluZGV4XCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVzVXNlZCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVDYWxjVHlwZXNVc2VkXCJdID0gXCJ0YWJsZUNhbGNUeXBlc1VzZWRcIjtcbiAgICAvLyBEUElfVGVtcGxhdGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVGVtcGxhdGVJbmRleFwiXSA9IFwidGVtcGxhdGVJbmRleFwiO1xuICAgIC8vIERQSV9UaWxlQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRpbGVDb3VudFwiXSA9IFwidGlsZUNvdW50XCI7XG4gICAgLy8gRFBJX1RpbWVvdXRTZWNvbmRzLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJUaW1lb3V0U2Vjb25kc1wiXSA9IFwidGltZW91dFNlY29uZHNcIjtcbiAgICAvLyBEUElfVG9wTiwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVG9wTlwiXSA9IFwidG9wTlwiO1xuICAgIC8vIERQSV9Ub3RhbE51bWJlck9mSXRlbXNJblNldCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVG90YWxOdW1iZXJPZkl0ZW1zSW5TZXRcIl0gPSBcInRvdGFsTnVtYmVyT2ZJdGVtc0luU2V0XCI7XG4gICAgLy8gRFBJX1RvdGFsTWVtYmVyQ291bnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlRvdGFsTWVtYmVyQ291bnRcIl0gPSBcInRvdGFsTWVtYmVyQ291bnRcIjtcbiAgICAvLyBEUElfVHJhbnNwYXJlbmN5LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc3BhcmVuY3lcIl0gPSBcImNvbG9yVHJhbnNwYXJlbmN5VmFsdWVcIjtcbiAgICAvLyBEUElfVHVwbGVJRCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVHVwbGVJRFwiXSA9IFwidHVwbGVJZFwiO1xuICAgIC8vIERQSV9VSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlVJbmRleFwiXSA9IFwidWluZGV4XCI7XG4gICAgLy8gRFBJX1VuZG9Qb3NpdGlvbiwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVW5kb1Bvc2l0aW9uXCJdID0gXCJ1bmRvUG9zaXRpb25cIjtcbiAgICAvLyBEUElfVW5zaWduZWRXaWR0aCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVW5zaWduZWRXaWR0aFwiXSA9IFwidXdcIjtcbiAgICAvLyBEUElfVW5zaWduZWRXaWR0aEJvdHRvbSwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVW5zaWduZWRXaWR0aEJvdHRvbVwiXSA9IFwidXdiXCI7XG4gICAgLy8gRFBJX1Vuc2lnbmVkV2lkdGhMZWZ0LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJVbnNpZ25lZFdpZHRoTGVmdFwiXSA9IFwidXdsXCI7XG4gICAgLy8gRFBJX1Vuc2lnbmVkV2lkdGhSaWdodCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVW5zaWduZWRXaWR0aFJpZ2h0XCJdID0gXCJ1d3JcIjtcbiAgICAvLyBEUElfVW5zaWduZWRXaWR0aFRvcCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiVW5zaWduZWRXaWR0aFRvcFwiXSA9IFwidXd0XCI7XG4gICAgLy8gRFBJX1ZhbHVlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlSW5kZXhcIl0gPSBcInZhbHVlSW5kZXhcIjtcbiAgICAvLyBEUElfVmFsdWVJbnQsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlSW50XCJdID0gXCJ2YWx1ZUludFwiO1xuICAgIC8vIERQSV9Xb3JsZE9mZnNldCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiV29ybGRPZmZzZXRcIl0gPSBcIndvcmxkT2Zmc2V0XCI7XG4gICAgLy8gRFBJX1hEdXBsaWNhdGVJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiWER1cGxpY2F0ZUluZGV4XCJdID0gXCJ4RHVwbGljYXRlSW5kZXhcIjtcbiAgICAvLyBEUElfWEluZGV4LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJYSW5kZXhcIl0gPSBcInhJbmRleFwiO1xuICAgIC8vIERQSV9ZRHVwbGljYXRlSW5kZXgsIGhhdmluZyB0eXBlIHVpbnRcbiAgICBQYXJhbWV0ZXJJZFtcIllEdXBsaWNhdGVJbmRleFwiXSA9IFwieUR1cGxpY2F0ZUluZGV4XCI7XG4gICAgLy8gRFBJX1lJbmRleCwgaGF2aW5nIHR5cGUgdWludFxuICAgIFBhcmFtZXRlcklkW1wiWUluZGV4XCJdID0gXCJ5SW5kZXhcIjtcbiAgICAvLyBEUElfWm9uZUlELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJab25lSURcIl0gPSBcInpvbmVJZFwiO1xuICAgIC8vIERQSV9ab25lWk9yZGVyLCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJab25lWk9yZGVyXCJdID0gXCJ6b25lWk9yZGVyXCI7XG4gICAgLy8gRFBJX0NvbXBvbmVudElELCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJDb21wb25lbnRJRFwiXSA9IFwiY29tcG9uZW50SWRcIjtcbiAgICAvLyBEUElfTm9uVGhyZWFkUG9vbFVzZUNvdW50LCBoYXZpbmcgdHlwZSB1aW50XG4gICAgUGFyYW1ldGVySWRbXCJOb25UaHJlYWRQb29sVXNlQ291bnRcIl0gPSBcIm5vblRocmVhZFBvb2xVc2VDb3VudFwiO1xuICAgIC8vIERQSV9BZGRyZXNzaW5nSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gICAgUGFyYW1ldGVySWRbXCJBZGRyZXNzaW5nSW5kaWNlc1wiXSA9IFwiYWRkcmVzc2luZ0luZGljZXNcIjtcbiAgICAvLyBEUElfQWRkcmVzc2luZ0ludmFsaWRJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkFkZHJlc3NpbmdJbnZhbGlkSW5kaWNlc1wiXSA9IFwiYWRkcmVzc2luZ0ludmFsaWRJbmRpY2VzXCI7XG4gICAgLy8gRFBJX0NoaWxkWm9uZUlkcywgaGF2aW5nIHR5cGUgdWludFtdXG4gICAgUGFyYW1ldGVySWRbXCJDaGlsZFpvbmVJZHNcIl0gPSBcImNoaWxkWm9uZUlkc1wiO1xuICAgIC8vIERQSV9Db2xvckxpc3QsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29sb3JMaXN0XCJdID0gXCJjb2xvckxpc3RcIjtcbiAgICAvLyBEUElfRHVwbGljYXRlSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gICAgUGFyYW1ldGVySWRbXCJEdXBsaWNhdGVJbmRpY2VzXCJdID0gXCJkdXBsaWNhdGVJbmRpY2VzXCI7XG4gICAgLy8gRFBJX0ZpbHRlckFkZEluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyQWRkSW5kaWNlc1wiXSA9IFwiZmlsdGVyQWRkSW5kaWNlc1wiO1xuICAgIC8vIERQSV9GaWx0ZXJJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckluZGljZXNcIl0gPSBcImZpbHRlckluZGljZXNcIjtcbiAgICAvLyBEUElfRmlsdGVyTGV2ZWxBZGQsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyTGV2ZWxBZGRcIl0gPSBcImZpbHRlckxldmVsQWRkXCI7XG4gICAgLy8gRFBJX0ZpbHRlckxldmVsUmVtb3ZlLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckxldmVsUmVtb3ZlXCJdID0gXCJmaWx0ZXJMZXZlbFJlbW92ZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJMZXZlbHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyTGV2ZWxzXCJdID0gXCJmaWx0ZXJMZXZlbHNcIjtcbiAgICAvLyBEUElfRmlsdGVyUmVtb3ZlSW5kaWNlcywgaGF2aW5nIHR5cGUgdWludFtdXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJSZW1vdmVJbmRpY2VzXCJdID0gXCJmaWx0ZXJSZW1vdmVJbmRpY2VzXCI7XG4gICAgLy8gRFBJX0ZpeGVkVmFsdWVzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpeGVkVmFsdWVzXCJdID0gXCJmaXhlZFZhbHVlc1wiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlNZW1iZXJJZExpc3QsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TWVtYmVySWRMaXN0XCJdID0gXCJoaWVyYXJjaHlNZW1iZXJJZExpc3RcIjtcbiAgICAvLyBEUElfSW52YWxpZEluZGljZXMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiSW52YWxpZEluZGljZXNcIl0gPSBcImludmFsaWRJbmRpY2VzXCI7XG4gICAgLy8gRFBJX0l0ZW1JbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIkl0ZW1JbmRpY2VzXCJdID0gXCJpdGVtSW5kaWNlc1wiO1xuICAgIC8vIERQSV9MaW5lVHVwbGVJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiTGluZVR1cGxlSURzXCJdID0gXCJsaW5lVHVwbGVJZHNcIjtcbiAgICAvLyBEUElfT2JqZWN0SURzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIk9iamVjdElEc1wiXSA9IFwib2JqZWN0SWRzXCI7XG4gICAgLy8gRFBJX1BhZ2VJbmRpY2VzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VJbmRpY2VzXCJdID0gXCJwYWdlSW5kaWNlc1wiO1xuICAgIC8vIERQSV9RUkdCLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlFSR0JcIl0gPSBcInFyZ2JMaXN0XCI7XG4gICAgLy8gRFBJX1FSR0JDb2xvcnMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiUVJHQkNvbG9yc1wiXSA9IFwicXJnYkNvbG9yc1wiO1xuICAgIC8vIERQSV9SZWZMaW5lSUQsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVmTGluZUlEXCJdID0gXCJyZWZsaW5lSWRcIjtcbiAgICAvLyBEUElfU2hhcGVJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hhcGVJRHNcIl0gPSBcInNoYXBlSWRzXCI7XG4gICAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmU2VsZWN0aW9uXCJdID0gXCJzaGVsZlNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9TdG9yeVBvaW50SURzLCBoYXZpbmcgdHlwZSB1aW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UG9pbnRJRHNcIl0gPSBcInN0b3J5UG9pbnRJZHNcIjtcbiAgICAvLyBEUElfVHVwbGVJRHMsIGhhdmluZyB0eXBlIHVpbnRbXVxuICAgIFBhcmFtZXRlcklkW1wiVHVwbGVJRHNcIl0gPSBcInR1cGxlSWRzXCI7XG4gICAgLy8gRFBJX1dpZHRocywgaGF2aW5nIHR5cGUgdWludFtdXG4gICAgUGFyYW1ldGVySWRbXCJXaWR0aHNcIl0gPSBcIndpZHRoc1wiO1xuICAgIC8vIERQSV9VaW50TWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHVpbnQzMl90KVxuICAgIFBhcmFtZXRlcklkW1wiVWludE1hcFwiXSA9IFwidWludE1hcFwiO1xuICAgIC8vIERQSV9BbHBoYSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIkFscGhhXCJdID0gXCJhbHBoYVwiO1xuICAgIC8vIERQSV9BbmdsZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIkFuZ2xlXCJdID0gXCJhbmdsZVwiO1xuICAgIC8vIERQSV9CcmVha1BvaW50VmFsdWUsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJCcmVha1BvaW50VmFsdWVcIl0gPSBcImJyZWFrUG9pbnRWYWx1ZVwiO1xuICAgIC8vIERQSV9EZXZpY2VQaXhlbFJhdGlvLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiRGV2aWNlUGl4ZWxSYXRpb1wiXSA9IFwiZGV2aWNlUGl4ZWxSYXRpb1wiO1xuICAgIC8vIERQSV9EaXN0YW5jZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3RhbmNlXCJdID0gXCJkaXN0YW5jZVwiO1xuICAgIC8vIERQSV9GbG9hdFgsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdFhcIl0gPSBcImZsb2F0WFwiO1xuICAgIC8vIERQSV9GbG9hdFksIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdFlcIl0gPSBcImZsb2F0WVwiO1xuICAgIC8vIERQSV9Gb2dEZXNhdHVyYXRpb24sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJGb2dEZXNhdHVyYXRpb25cIl0gPSBcImZvZ0Rlc2F0dXJhdGlvblwiO1xuICAgIC8vIERQSV9NYXJrU2NhbGUsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJNYXJrU2NhbGVcIl0gPSBcIm1hcmtTY2FsZVwiO1xuICAgIC8vIERQSV9NYXJrU2l6ZUluUGl4ZWxVbml0cywgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtTaXplSW5QaXhlbFVuaXRzXCJdID0gXCJtYXJrU2l6ZUluUGl4ZWxVbml0c1wiO1xuICAgIC8vIERQSV9Qb2ludFNpemUsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJQb2ludFNpemVcIl0gPSBcInBvaW50U2l6ZVwiO1xuICAgIC8vIERQSV9TdHJva2VXaWR0aCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIlN0cm9rZVdpZHRoXCJdID0gXCJzdHJva2VXaWR0aFwiO1xuICAgIC8vIERQSV9UZXh0UmVnaW9uT3JpZW50YXRpb24sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJUZXh0UmVnaW9uT3JpZW50YXRpb25cIl0gPSBcIm9yaWVudGF0aW9uXCI7XG4gICAgLy8gRFBJX1RyYW5zZm9ybUFuZ2xlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiVHJhbnNmb3JtQW5nbGVcIl0gPSBcInRyYW5zZm9ybUFuZ2xlXCI7XG4gICAgLy8gRFBJX1pvb21MZXZlbCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIlpvb21MZXZlbFwiXSA9IFwiem9vbUxldmVsXCI7XG4gICAgLy8gRFBJX09sZFpvb21MZXZlbCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk9sZFpvb21MZXZlbFwiXSA9IFwib2xkWm9vbUxldmVsXCI7XG4gICAgLy8gRFBJX05ld1pvb21MZXZlbCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk5ld1pvb21MZXZlbFwiXSA9IFwibmV3Wm9vbUxldmVsXCI7XG4gICAgLy8gRFBJX0FzcGVjdFJhdGlvLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiQXNwZWN0UmF0aW9cIl0gPSBcImFzcGVjdFJhdGlvXCI7XG4gICAgLy8gRFBJX0JvdHRvbVByaW50TWFyZ2luLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiQm90dG9tUHJpbnRNYXJnaW5cIl0gPSBcImJvdHRvbVByaW50TWFyZ2luXCI7XG4gICAgLy8gRFBJX0VhcnRoUmFkaXVzLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiRWFydGhSYWRpdXNcIl0gPSBcImVhcnRoUmFkaXVzXCI7XG4gICAgLy8gRFBJX0Zsb2F0SGVpZ2h0LCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiRmxvYXRIZWlnaHRcIl0gPSBcImZsb2F0SGVpZ2h0XCI7XG4gICAgLy8gRFBJX0Zsb2F0TGVmdCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIkZsb2F0TGVmdFwiXSA9IFwiZmxvYXRMZWZ0XCI7XG4gICAgLy8gRFBJX0Zsb2F0UmFkaXVzLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiRmxvYXRSYWRpdXNcIl0gPSBcImZsb2F0UmFkaXVzXCI7XG4gICAgLy8gRFBJX0Zsb2F0VG9wLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiRmxvYXRUb3BcIl0gPSBcImZsb2F0VG9wXCI7XG4gICAgLy8gRFBJX0Zsb2F0V2lkdGgsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdFdpZHRoXCJdID0gXCJmbG9hdFdpZHRoXCI7XG4gICAgLy8gRFBJX0xlZnRQcmludE1hcmdpbiwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZnRQcmludE1hcmdpblwiXSA9IFwibGVmdFByaW50TWFyZ2luXCI7XG4gICAgLy8gRFBJX01hcENlbnRlckxhdGl0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiTWFwQ2VudGVyTGF0aXR1ZGVcIl0gPSBcIm1hcENlbnRlckxhdGl0dWRlXCI7XG4gICAgLy8gRFBJX01hcENlbnRlckxvbmdpdHVkZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcENlbnRlckxvbmdpdHVkZVwiXSA9IFwibWFwQ2VudGVyTG9uZ2l0dWRlXCI7XG4gICAgLy8gRFBJX01hcERpc3BsYXlTY2FsZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcERpc3BsYXlTY2FsZVwiXSA9IFwibWFwRGlzcGxheVNjYWxlXCI7XG4gICAgLy8gRFBJX01hcE1heFN0cmV0Y2gsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJNYXBNYXhTdHJldGNoXCJdID0gXCJtYXBNYXhTdHJldGNoXCI7XG4gICAgLy8gRFBJX01hcE1heFpvb20sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJNYXBNYXhab29tXCJdID0gXCJtYXBNYXhab29tXCI7XG4gICAgLy8gRFBJX01hcE1pblNocmluaywgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcE1pblNocmlua1wiXSA9IFwibWFwTWluU2hyaW5rXCI7XG4gICAgLy8gRFBJX01hcE1pblpvb20sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJNYXBNaW5ab29tXCJdID0gXCJtYXBNaW5ab29tXCI7XG4gICAgLy8gRFBJX01hcFJlcXVlc3Rab29tLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiTWFwUmVxdWVzdFpvb21cIl0gPSBcIm1hcFJlcXVlc3Rab29tXCI7XG4gICAgLy8gRFBJX01hcFdhc2hvdXQsIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJNYXBXYXNob3V0XCJdID0gXCJtYXBXYXNob3V0XCI7XG4gICAgLy8gRFBJX01heExhdGl0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiTWF4TGF0aXR1ZGVcIl0gPSBcIm1heExhdGl0dWRlXCI7XG4gICAgLy8gRFBJX01heExvbmdpdHVkZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1heExvbmdpdHVkZVwiXSA9IFwibWF4TG9uZ2l0dWRlXCI7XG4gICAgLy8gRFBJX01pbkxhdGl0dWRlLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiTWluTGF0aXR1ZGVcIl0gPSBcIm1pbkxhdGl0dWRlXCI7XG4gICAgLy8gRFBJX01pbkxvbmdpdHVkZSwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIk1pbkxvbmdpdHVkZVwiXSA9IFwibWluTG9uZ2l0dWRlXCI7XG4gICAgLy8gRFBJX1JpZ2h0UHJpbnRNYXJnaW4sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJSaWdodFByaW50TWFyZ2luXCJdID0gXCJyaWdodFByaW50TWFyZ2luXCI7XG4gICAgLy8gRFBJX1RvcFByaW50TWFyZ2luLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiVG9wUHJpbnRNYXJnaW5cIl0gPSBcInRvcFByaW50TWFyZ2luXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbk1heGltdW0sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25NYXhpbXVtXCJdID0gXCJ1aUF1dG9tYXRpb25NYXhpbXVtXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbk1pbmltdW0sIGhhdmluZyB0eXBlIGZsb2F0XG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25NaW5pbXVtXCJdID0gXCJ1aUF1dG9tYXRpb25NaW5pbXVtXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbk9mZnNldCwgaGF2aW5nIHR5cGUgZmxvYXRcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvbk9mZnNldFwiXSA9IFwidWlBdXRvbWF0aW9uT2Zmc2V0XCI7XG4gICAgLy8gRFBJX1VuaXREaXZpc29yLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiVW5pdERpdmlzb3JcIl0gPSBcInVuaXREaXZpc29yXCI7XG4gICAgLy8gRFBJX1VuaXRUcmFuc2l0aW9uLCBoYXZpbmcgdHlwZSBmbG9hdFxuICAgIFBhcmFtZXRlcklkW1wiVW5pdFRyYW5zaXRpb25cIl0gPSBcInVuaXRUcmFuc2l0aW9uXCI7XG4gICAgLy8gRFBJX0F1dG9tYXRpY0RyaWxsSWR4LCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvbWF0aWNEcmlsbElkeFwiXSA9IFwiYXV0b21hdGljRHJpbGxJZHhcIjtcbiAgICAvLyBEUElfRGVzdGluYXRpb25Cb3gsIGhhdmluZyB0eXBlIGZsb2F0W11cbiAgICBQYXJhbWV0ZXJJZFtcIkRlc3RpbmF0aW9uQm94XCJdID0gXCJkZXN0Qm94XCI7XG4gICAgLy8gRFBJX0xvd2VyRW5kLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJMb3dlckVuZFwiXSA9IFwibG93ZXJFbmRcIjtcbiAgICAvLyBEUElfT3Bwb3NpdGVBeGlzLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJPcHBvc2l0ZUF4aXNcIl0gPSBcIm9wcG9zaXRlQXhpc1wiO1xuICAgIC8vIERQSV9Qb2ludHNGLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJQb2ludHNGXCJdID0gXCJwb2ludHNGXCI7XG4gICAgLy8gRFBJX1NvdXJjZUJveCwgaGF2aW5nIHR5cGUgZmxvYXRbXVxuICAgIFBhcmFtZXRlcklkW1wiU291cmNlQm94XCJdID0gXCJzb3VyY2VCb3hcIjtcbiAgICAvLyBEUElfVHJhbnNmb3JtT2Zmc2V0LCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc2Zvcm1PZmZzZXRcIl0gPSBcInRyYW5zZm9ybU9mZnNldFwiO1xuICAgIC8vIERQSV9UcmFuc2Zvcm1TY2FsZSwgaGF2aW5nIHR5cGUgZmxvYXRbXVxuICAgIFBhcmFtZXRlcklkW1wiVHJhbnNmb3JtU2NhbGVcIl0gPSBcInRyYW5zZm9ybVNjYWxlXCI7XG4gICAgLy8gRFBJX1VwcGVyRW5kLCBoYXZpbmcgdHlwZSBmbG9hdFtdXG4gICAgUGFyYW1ldGVySWRbXCJVcHBlckVuZFwiXSA9IFwidXBwZXJFbmRcIjtcbiAgICAvLyBEUElfRmxvYXRNYXAsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgZmxvYXQpXG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdE1hcFwiXSA9IFwiZmxvYXRNYXBcIjtcbiAgICAvLyBEUElfQkdTUywgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJCR1NTXCJdID0gXCJiZXR3ZWVuR3JvdXBTdW1PZlNxdWFyZXNcIjtcbiAgICAvLyBEUElfQ29uZmlkZW5jZUxldmVsLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZGVuY2VMZXZlbFwiXSA9IFwiY29uZmlkZW5jZUxldmVsXCI7XG4gICAgLy8gRFBJX0NvbmZpZGVuY2VQZXJjZW50YWdlLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZGVuY2VQZXJjZW50YWdlXCJdID0gXCJjb25maWRlbmNlUGVyY2VudGFnZVwiO1xuICAgIC8vIERQSV9Eb3VibGVMZWZ0LCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRvdWJsZUxlZnRcIl0gPSBcImRvdWJsZUxlZnRcIjtcbiAgICAvLyBEUElfRG91YmxlVG9wLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRvdWJsZVRvcFwiXSA9IFwiZG91YmxlVG9wXCI7XG4gICAgLy8gRFBJX0RvdWJsZVZhbHVlLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRvdWJsZVZhbHVlXCJdID0gXCJkb3VibGVWYWx1ZVwiO1xuICAgIC8vIERQSV9Eb3VibGVYLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRvdWJsZVhcIl0gPSBcImRvdWJsZVhcIjtcbiAgICAvLyBEUElfRG91YmxlWSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJEb3VibGVZXCJdID0gXCJkb3VibGVZXCI7XG4gICAgLy8gRFBJX0ZTdGF0aXN0aWMsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiRlN0YXRpc3RpY1wiXSA9IFwiZlN0YXRpc3RpY1wiO1xuICAgIC8vIERQSV9GaWx0ZXJSYW5nZU1heCwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJSYW5nZU1heFwiXSA9IFwiZmlsdGVyUmFuZ2VNYXhcIjtcbiAgICAvLyBEUElfRmlsdGVyUmFuZ2VNaW4sIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyUmFuZ2VNaW5cIl0gPSBcImZpbHRlclJhbmdlTWluXCI7XG4gICAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVTY29yZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlU2NvcmVcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVTY29yZVwiO1xuICAgIC8vIERQSV9IZWlnaHRELCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkhlaWdodERcIl0gPSBcImhlaWdodFwiO1xuICAgIC8vIERQSV9JbmZsZWN0aW9uRnJhY3Rpb24sIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiSW5mbGVjdGlvbkZyYWN0aW9uXCJdID0gXCJpbmZsZWN0aW9uRnJhY3Rpb25cIjtcbiAgICAvLyBEUElfSW5mbGVjdGlvblZhbHVlLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkluZmxlY3Rpb25WYWx1ZVwiXSA9IFwiaW5mbGVjdGlvblZhbHVlXCI7XG4gICAgLy8gRFBJX01TRSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJNU0VcIl0gPSBcIm1lYW5TcXVhcmVkRXJyb3JcIjtcbiAgICAvLyBEUElfTVNNLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIk1TTVwiXSA9IFwibWVhblNxdWFyZWRNb2RlbFwiO1xuICAgIC8vIERQSV9NYXBTY2FsZU1hcmdpbk9mRXJyb3IsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiTWFwU2NhbGVNYXJnaW5PZkVycm9yXCJdID0gXCJtYXBTY2FsZU1hcmdpbk9mRXJyb3JcIjtcbiAgICAvLyBEUElfTWFya1NpemUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiTWFya1NpemVcIl0gPSBcIm1hcmtTaXplXCI7XG4gICAgLy8gRFBJX01heE1hcmtTaXplLCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIk1heE1hcmtTaXplXCJdID0gXCJtYXhNYXJrU2l6ZVwiO1xuICAgIC8vIERQSV9NaW5NYXJrU2l6ZSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJNaW5NYXJrU2l6ZVwiXSA9IFwibWluTWFya1NpemVcIjtcbiAgICAvLyBEUElfTm90Y2hQb3NpdGlvbiwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJOb3RjaFBvc2l0aW9uXCJdID0gXCJub3RjaFBvc2l0aW9uXCI7XG4gICAgLy8gRFBJX05vdGNoVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiTm90Y2hWYWx1ZVwiXSA9IFwibm90Y2hWYWx1ZVwiO1xuICAgIC8vIERQSV9QVmFsdWUsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiUFZhbHVlXCJdID0gXCJwVmFsdWVcIjtcbiAgICAvLyBEUElfUGVyY2VudERpbWVuc2lvbnMsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudERpbWVuc2lvbnNcIl0gPSBcInBlcmNlbnREaW1lbnNpb25zXCI7XG4gICAgLy8gRFBJX1BlcmNlbnRHcm91cHMsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudEdyb3Vwc1wiXSA9IFwicGVyY2VudEdyb3Vwc1wiO1xuICAgIC8vIERQSV9QZXJjZW50TWVhc3VyZXMsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudE1lYXN1cmVzXCJdID0gXCJwZXJjZW50TWVhc3VyZXNcIjtcbiAgICAvLyBEUElfUlNxdWFyZWQsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiUlNxdWFyZWRcIl0gPSBcInJTcXVhcmVkXCI7XG4gICAgLy8gRFBJX1NTRSwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJTU0VcIl0gPSBcInN1bVNxdWFyZWRFcnJvclwiO1xuICAgIC8vIERQSV9TU00sIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiU1NNXCJdID0gXCJzdW1TcXVhcmVkTW9kZWxcIjtcbiAgICAvLyBEUElfU3RhbmRhcmRFcnJvciwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJTdGFuZGFyZEVycm9yXCJdID0gXCJzdGFuZGFyZEVycm9yXCI7XG4gICAgLy8gRFBJX1RTUywgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJUU1NcIl0gPSBcInRvdGFsU3VtT2ZTcXVhcmVzXCI7XG4gICAgLy8gRFBJX1dHU1MsIGhhdmluZyB0eXBlIGRvdWJsZVxuICAgIFBhcmFtZXRlcklkW1wiV0dTU1wiXSA9IFwid2l0aGluR3JvdXBTdW1PZlNxdWFyZXNcIjtcbiAgICAvLyBEUElfV2lkdGhELCBoYXZpbmcgdHlwZSBkb3VibGVcbiAgICBQYXJhbWV0ZXJJZFtcIldpZHRoRFwiXSA9IFwid2lkdGhcIjtcbiAgICAvLyBEUElfWm9vbUZhY3RvciwgaGF2aW5nIHR5cGUgZG91YmxlXG4gICAgUGFyYW1ldGVySWRbXCJab29tRmFjdG9yXCJdID0gXCJ6b29tRmFjdG9yXCI7XG4gICAgLy8gRFBJX0NvZWZmaWNpZW50UFZhbHVlVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29lZmZpY2llbnRQVmFsdWVWZWNcIl0gPSBcImNvZWZmaWNpZW50UFZhbHVlVmVjdG9yXCI7XG4gICAgLy8gRFBJX0NvZWZmaWNpZW50U3RkRXJyVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29lZmZpY2llbnRTdGRFcnJWZWNcIl0gPSBcImNvZWZmaWNpZW50U3RkRXJyb3JWZWN0b3JcIjtcbiAgICAvLyBEUElfQ29lZmZpY2llbnRUVmFsdWVWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gICAgUGFyYW1ldGVySWRbXCJDb2VmZmljaWVudFRWYWx1ZVZlY1wiXSA9IFwiY29lZmZpY2llbnRUVmFsdWVWZWN0b3JcIjtcbiAgICAvLyBEUElfQ29lZmZpY2llbnRWZWMsIGhhdmluZyB0eXBlIGRvdWJsZVtdXG4gICAgUGFyYW1ldGVySWRbXCJDb2VmZmljaWVudFZlY1wiXSA9IFwiY29lZmZpY2llbnRWZWN0b3JcIjtcbiAgICAvLyBEUElfRlN0YXRpc3RpY1ZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZTdGF0aXN0aWNWZWNcIl0gPSBcInRyZW5kTGluZUZTdGF0aXN0aWNWZWN0b3JcIjtcbiAgICAvLyBEUElfRmFjdG9ycywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZhY3RvcnNcIl0gPSBcImZhY3RvcnNcIjtcbiAgICAvLyBEUElfTVNFVmVjLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiTVNFVmVjXCJdID0gXCJtZWFuU3F1YXJlZEVycm9yVmVjdG9yXCI7XG4gICAgLy8gRFBJX01lYW5zLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiTWVhbnNcIl0gPSBcIm1lYW5zXCI7XG4gICAgLy8gRFBJX1BWYWx1ZVZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBWYWx1ZVZlY1wiXSA9IFwicFZhbHVlVmVjdG9yXCI7XG4gICAgLy8gRFBJX1BlcmNlbnRhZ2VzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudGFnZXNcIl0gPSBcInBlcmNlbnRhZ2VzXCI7XG4gICAgLy8gRFBJX1BlcmNlbnRpbGVzLCBoYXZpbmcgdHlwZSBkb3VibGVbXVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudGlsZXNcIl0gPSBcInBlcmNlbnRpbGVzXCI7XG4gICAgLy8gRFBJX1NTRVZlYywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNTRVZlY1wiXSA9IFwic3VtU3F1YXJlZEVycm9yVmVjdG9yXCI7XG4gICAgLy8gRFBJX1N0RGV2cywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlN0RGV2c1wiXSA9IFwic3RkZXZcIjtcbiAgICAvLyBEUElfVW5zY2FsZWRNZWFucywgaGF2aW5nIHR5cGUgZG91YmxlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlVuc2NhbGVkTWVhbnNcIl0gPSBcInVuc2NhbGVkTWVhbnNcIjtcbiAgICAvLyBEUElfRGVsdGFUaW1lTXMsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkRlbHRhVGltZU1zXCJdID0gXCJkZWx0YVRpbWVNc1wiO1xuICAgIC8vIERQSV9FeHRyYWN0SGlzdG9yeVJvd0NvdW50LCBoYXZpbmcgdHlwZSBsb25nXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0SGlzdG9yeVJvd0NvdW50XCJdID0gXCJleHRyYWN0Um93Q291bnRcIjtcbiAgICAvLyBEUElfRXh0cmFjdEhpc3RvcnlSb3dzUmVtb3ZlZCwgaGF2aW5nIHR5cGUgbG9uZ1xuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdEhpc3RvcnlSb3dzUmVtb3ZlZFwiXSA9IFwiZXh0cmFjdFJvd3NSZW1vdmVkXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RzU2l6ZSwgaGF2aW5nIHR5cGUgbG9uZ1xuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdHNTaXplXCJdID0gXCJleHRyYWN0c1NpemVcIjtcbiAgICAvLyBEUElfT2xkRXh0cmFjdFNpemUsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk9sZEV4dHJhY3RTaXplXCJdID0gXCJvbGRFeHRyYWN0U2l6ZVwiO1xuICAgIC8vIERQSV9Sb3dzSW5zZXJ0ZWQsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJvd3NJbnNlcnRlZFwiXSA9IFwicm93c0luc2VydGVkXCI7XG4gICAgLy8gRFBJX1NhbXBsZVNpemUsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNhbXBsZVNpemVcIl0gPSBcInNhbXBsZVNpemVcIjtcbiAgICAvLyBEUElfU2FtcGxlU3BhY2UsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNhbXBsZVNwYWNlXCJdID0gXCJzYW1wbGVTcGFjZVwiO1xuICAgIC8vIERQSV9UaHJlYWRQb29sVXNlQ291bnQsIGhhdmluZyB0eXBlIGxvbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRocmVhZFBvb2xVc2VDb3VudFwiXSA9IFwidGhyZWFkUG9vbFVzZUNvdW50XCI7XG4gICAgLy8gRFBJX0FjdGlvbklkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGlvbklkXCJdID0gXCJhY3Rpb25JZFwiO1xuICAgIC8vIERQSV9BeGlzQ29sdW1uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNDb2x1bW5cIl0gPSBcImF4aXNDb2x1bW5cIjtcbiAgICAvLyBEUElfQmFzZUNvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQmFzZUNvbHVtbk5hbWVcIl0gPSBcImJhc2VDb2x1bW5OYW1lXCI7XG4gICAgLy8gRFBJX0JyZWFrUG9pbnRGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQnJlYWtQb2ludEZpZWxkTmFtZVwiXSA9IFwiYnJlYWtQb2ludEZpZWxkTmFtZVwiO1xuICAgIC8vIERQSV9QYWlyZWRGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFpcmVkRmllbGROYW1lXCJdID0gXCJwYWlyZWRGblwiO1xuICAgIC8vIERQSV9GaWVsZE5hbWVBbGxvd0VtcHR5LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkTmFtZUFsbG93RW1wdHlcIl0gPSBcImZpZWxkTmFtZUFsbG93RW1wdHlcIjtcbiAgICAvLyBEUElfRmllbGROYW1lRGlzQWdnLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkTmFtZURpc0FnZ1wiXSA9IFwiZm5EaXNhZ2dcIjtcbiAgICAvLyBEUElfRmllbGROYW1lTG9jYWwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lTG9jYWxcIl0gPSBcImZpZWxkTmFtZUxvY2FsXCI7XG4gICAgLy8gRFBJX0ZpZWxkTmFtZVByZXYsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lUHJldlwiXSA9IFwiZm5QcmV2XCI7XG4gICAgLy8gRFBJX0ZpZWxkTmFtZVNvdXJjZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZE5hbWVTb3VyY2VcIl0gPSBcImZuU291cmNlXCI7XG4gICAgLy8gRFBJX0ZpZWxkTmFtZVRhcmdldCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZE5hbWVUYXJnZXRcIl0gPSBcImZuVGFyZ2V0XCI7XG4gICAgLy8gRFBJX0ZpZWxkTmFtZVgsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lWFwiXSA9IFwiZm5YXCI7XG4gICAgLy8gRFBJX0ZpZWxkTmFtZVksIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGROYW1lWVwiXSA9IFwiZm5ZXCI7XG4gICAgLy8gRFBJX0ZpZWxkVG9Tb3J0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkVG9Tb3J0XCJdID0gXCJmaWVsZFRvU29ydFwiO1xuICAgIC8vIERQSV9HbG9iYWxGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiR2xvYmFsRmllbGROYW1lXCJdID0gXCJnbG9iYWxGaWVsZE5hbWVcIjtcbiAgICAvLyBEUElfSGllcmFyY2h5TmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlOYW1lXCJdID0gXCJoaWVyYXJjaHlOYW1lXCI7XG4gICAgLy8gRFBJX0ludmFsaWRBZ2dGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiSW52YWxpZEFnZ0ZpZWxkTmFtZVwiXSA9IFwiaW52YWxpZEFnZ0ZpZWxkTmFtZVwiO1xuICAgIC8vIERQSV9JbnZhbGlkRmllbGROYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkludmFsaWRGaWVsZE5hbWVcIl0gPSBcImludmFsaWRGaWVsZE5hbWVcIjtcbiAgICAvLyBEUElfTGltaXRQYXJhbWV0ZXJOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkxpbWl0UGFyYW1ldGVyTmFtZVwiXSA9IFwibGltaXRQYXJhbWV0ZXJOYW1lXCI7XG4gICAgLy8gRFBJX0xvY2FsQmFzZUNvbHVtbk5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTG9jYWxCYXNlQ29sdW1uTmFtZVwiXSA9IFwibG9jYWxCYXNlQ29sdW1uTmFtZVwiO1xuICAgIC8vIERQSV9NZWFzdXJlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNZWFzdXJlTmFtZVwiXSA9IFwibWVhc3VyZU5hbWVcIjtcbiAgICAvLyBEUElfTmVzdGVkQ2FsY0ZpZWxkLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5lc3RlZENhbGNGaWVsZFwiXSA9IFwibmVzdGVkQ2FsY0ZuXCI7XG4gICAgLy8gRFBJX1BhcmFtZXRlck5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyTmFtZVwiXSA9IFwicGFyYW1ldGVyTmFtZVwiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VQYXJhbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VQYXJhbVwiXSA9IFwicmVmZXJlbmNlUGFyYW1cIjtcbiAgICAvLyBEUElfUmVwbGFjZW1lbnRGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUmVwbGFjZW1lbnRGaWVsZE5hbWVcIl0gPSBcInJlcGxhY2VtZW50RmllbGROYW1lXCI7XG4gICAgLy8gRFBJX1JIU1RhYmxlQWxpYXMsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUkhTVGFibGVBbGlhc1wiXSA9IFwicmhzVGFibGVBbGlhc1wiO1xuICAgIC8vIERQSV9Tb3J0TWVhc3VyZU5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU29ydE1lYXN1cmVOYW1lXCJdID0gXCJzb3J0TWVhc3VyZU5hbWVcIjtcbiAgICAvLyBEUElfVW5pcXVlTmFtZSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJVbmlxdWVOYW1lXCJdID0gXCJ1bmlxdWVOYW1lXCI7XG4gICAgLy8gRFBJX1ZhbHVlQ29sdW1uLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlQ29sdW1uXCJdID0gXCJ2YWx1ZUNvbHVtblwiO1xuICAgIC8vIERQSV9QYWlyZWRWYWx1ZUNvbHVtbiwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQYWlyZWRWYWx1ZUNvbHVtblwiXSA9IFwicGFpcmVkVmFsdWVDb2x1bW5cIjtcbiAgICAvLyBEUElfQWN0aW9uSWRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uSWRzXCJdID0gXCJhY3Rpb25JZHNcIjtcbiAgICAvLyBEUElfQWRkcmVzc2luZ1ZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFkZHJlc3NpbmdWYWx1ZXNcIl0gPSBcImFkZHJlc3NpbmdWYWx1ZXNcIjtcbiAgICAvLyBEUElfQWxsQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFsbENvbHVtbnNcIl0gPSBcImFsbENvbHVtbnNcIjtcbiAgICAvLyBEUElfQXRUaGVMZXZlbFZhbHVlcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkF0VGhlTGV2ZWxWYWx1ZXNcIl0gPSBcImF0VGhlTGV2ZWxWYWx1ZXNcIjtcbiAgICAvLyBEUElfQXV0b21hdGljRHJpbGxGaWVsZE5hbWUsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvbWF0aWNEcmlsbEZpZWxkTmFtZVwiXSA9IFwiYXV0b21hdGljRHJpbGxGaWVsZE5hbWVcIjtcbiAgICAvLyBEUElfQmxlbmRpbmdGaWVsZENhbmRpZGF0ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJCbGVuZGluZ0ZpZWxkQ2FuZGlkYXRlc1wiXSA9IFwiYmxlbmRpbmdGaWVsZENhbmRpZGF0ZXNcIjtcbiAgICAvLyBEUElfQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbnNcIl0gPSBcImNvbHVtbnNcIjtcbiAgICAvLyBEUElfQ3VycmVudEJsZW5kaW5nRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQ3VycmVudEJsZW5kaW5nRmllbGRzXCJdID0gXCJjdXJyZW50QmxlbmRpbmdGaWVsZHNcIjtcbiAgICAvLyBEUElfRGltZW5zaW9uc1RvU29ydCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRpbWVuc2lvbnNUb1NvcnRcIl0gPSBcImRpbWVuc2lvbnNUb1NvcnRcIjtcbiAgICAvLyBEUElfRHJpbGxGaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRyaWxsRmllbGRWZWN0b3JcIl0gPSBcImRyaWxsRmllbGRWZWN0b3JcIjtcbiAgICAvLyBEUElfRW5jb2RpbmdGaWVsZFZlY3RvciwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkVuY29kaW5nRmllbGRWZWN0b3JcIl0gPSBcImVuY29kaW5nRmllbGRWZWN0b3JcIjtcbiAgICAvLyBEUElfRmllbGRWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFZlY3RvclwiXSA9IFwiZmllbGRWZWN0b3JcIjtcbiAgICAvLyBEUElfRmlsdGVyRmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyRmllbGRzXCJdID0gXCJmaWx0ZXJGaWVsZHNcIjtcbiAgICAvLyBEUElfTE9ERmllbGRWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJMT0RGaWVsZFZlY3RvclwiXSA9IFwibG9kRmllbGRWZWN0b3JcIjtcbiAgICAvLyBEUElfTGVnZW5kQ29sdW1ucywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2VuZENvbHVtbnNcIl0gPSBcImxlZ2VuZENvbHVtbnNcIjtcbiAgICAvLyBEUElfTGVnZW5kTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJMZWdlbmROYW1lc1wiXSA9IFwibGVnZW5kTmFtZXNcIjtcbiAgICAvLyBEUElfTm9kZUNvbHVtbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJOb2RlQ29sdW1uc1wiXSA9IFwibm9kZUNvbHVtbnNcIjtcbiAgICAvLyBEUElfUGFnZUZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VGaWVsZHNcIl0gPSBcInBhZ2VGaWVsZHNcIjtcbiAgICAvLyBEUElfUGFyYW1WYWx1ZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbVZhbHVlc1wiXSA9IFwicGFyYW1WYWx1ZXNcIjtcbiAgICAvLyBEUElfUmVmTGluZUZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZkxpbmVGaWVsZHNcIl0gPSBcInJlZmxpbmVGaWVsZHNcIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlZENvbHVtbnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VkQ29sdW1uc1wiXSA9IFwicmVmZXJlbmNlZENvbHVtbnNcIjtcbiAgICAvLyBEUElfUmVsYXRlZEZpZWxkTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZWxhdGVkRmllbGROYW1lc1wiXSA9IFwicmVsYXRlZEZpZWxkTmFtZXNcIjtcbiAgICAvLyBEUElfUmVtb3ZlQWN0aW9uUmVzdWx0cywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlbW92ZUFjdGlvblJlc3VsdHNcIl0gPSBcInJlbW92ZUFjdGlvblJlc3VsdHNcIjtcbiAgICAvLyBEUElfUmVzcG9uc2VWZWN0b3IsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJSZXNwb25zZVZlY3RvclwiXSA9IFwicmVzcG9uc2VWZWN0b3JcIjtcbiAgICAvLyBEUElfUmVzdGFydEV2ZXJ5VmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVzdGFydEV2ZXJ5VmFsdWVzXCJdID0gXCJyZXN0YXJ0RXZlcnlWYWx1ZXNcIjtcbiAgICAvLyBEUElfUmVzdWx0RmllbGRzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVzdWx0RmllbGRzXCJdID0gXCJyZXN1bHRGaWVsZHNcIjtcbiAgICAvLyBEUElfU29ydEZpZWxkVmFsdWVzLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiU29ydEZpZWxkVmFsdWVzXCJdID0gXCJzb3J0RmllbGRWYWx1ZXNcIjtcbiAgICAvLyBEUElfWEZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIlhGaWVsZHNcIl0gPSBcInhGaWVsZHNcIjtcbiAgICAvLyBEUElfWUZpZWxkcywgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIllGaWVsZHNcIl0gPSBcInlGaWVsZHNcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbkZ1bGxOYW1lLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25GdWxsTmFtZVwiXSA9IFwiY29ubmVjdGlvbkZ1bGxOYW1lXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25GdWxsTmFtZXMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uRnVsbE5hbWVzXCJdID0gXCJjb25uZWN0aW9uRnVsbE5hbWVzXCI7XG4gICAgLy8gRFBJX0JvdW5kRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkJvdW5kRGF0YVZhbHVlXCJdID0gXCJib3VuZERhdGFWYWx1ZVwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVZhbHVlXCJdID0gXCJkYXRhVmFsdWVcIjtcbiAgICAvLyBEUElfRGF0YVZhbHVlSW5jcmVtZW50LCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFWYWx1ZUluY3JlbWVudFwiXSA9IFwiZGF0YVZhbHVlSW5jcmVtZW50XCI7XG4gICAgLy8gRFBJX0RhdGFWYWx1ZUxvd2VyWCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJEYXRhVmFsdWVMb3dlclhcIl0gPSBcImRhdGFWYWx1ZUxvd2VyWFwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVMb3dlclksIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVZhbHVlTG93ZXJZXCJdID0gXCJkYXRhVmFsdWVMb3dlcllcIjtcbiAgICAvLyBEUElfRGF0YVZhbHVlVXBwZXJYLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFWYWx1ZVVwcGVyWFwiXSA9IFwiZGF0YVZhbHVlVXBwZXJYXCI7XG4gICAgLy8gRFBJX0RhdGFWYWx1ZVVwcGVyWSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJEYXRhVmFsdWVVcHBlcllcIl0gPSBcImRhdGFWYWx1ZVVwcGVyWVwiO1xuICAgIC8vIERQSV9EZWZhdWx0RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkRlZmF1bHREYXRhVmFsdWVcIl0gPSBcImRlZmF1bHREYXRhVmFsdWVcIjtcbiAgICAvLyBEUElfTWF4RGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIk1heERhdGFWYWx1ZVwiXSA9IFwibWF4RGF0YVZhbHVlXCI7XG4gICAgLy8gRFBJX01pbkRhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJNaW5EYXRhVmFsdWVcIl0gPSBcIm1pbkRhdGFWYWx1ZVwiO1xuICAgIC8vIERQSV9WYWxpZGF0ZWREYXRhVmFsdWUsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiVmFsaWRhdGVkRGF0YVZhbHVlXCJdID0gXCJ2YWxpZGF0ZWREYXRhVmFsdWVcIjtcbiAgICAvLyBEUElfQmluU2l6ZSwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJCaW5TaXplXCJdID0gXCJiaW5TaXplXCI7XG4gICAgLy8gRFBJX0xpbWl0Q291bnQsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiTGltaXRDb3VudFwiXSA9IFwibGltaXRDb3VudFwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVMaXN0LCBoYXZpbmcgdHlwZSBvYmplY3RbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVZhbHVlTGlzdFwiXSA9IFwiZGF0YVZhbHVlTGlzdFwiO1xuICAgIC8vIERQSV9GaWVsZENhcHRpb25QYWlyLCBoYXZpbmcgdHlwZSBGaWVsZENhcHRpb25QYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZENhcHRpb25QYWlyXCJdID0gXCJmaWVsZENhcHRpb25QYWlyXCI7XG4gICAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXJzLCBoYXZpbmcgdHlwZSBGaWVsZENhcHRpb25QYWlyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkQ2FwdGlvblBhaXJzXCJdID0gXCJmaWVsZENhcHRpb25QYWlyc1wiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJDYXB0aW9uUGFpcnMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyQ2FwdGlvblBhaXJzXCJdID0gXCJwYXJhbWV0ZXJDYXB0aW9uUGFpcnNcIjtcbiAgICAvLyBEUElfVmFyeWluZ0F0dHJpYnV0ZURpbWVuc2lvbnMsIGhhdmluZyB0eXBlIEZpZWxkQ2FwdGlvblBhaXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVmFyeWluZ0F0dHJpYnV0ZURpbWVuc2lvbnNcIl0gPSBcInZhcnlpbmdBdHRyaWJ1dGVEaW1lbnNpb25zXCI7XG4gICAgLy8gRFBJX0ZpZWxkQ2FwdGlvblBhaXJTdGF0ZSwgaGF2aW5nIHR5cGUgRmllbGRDYXB0aW9uUGFpclN0YXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZENhcHRpb25QYWlyU3RhdGVcIl0gPSBcImZpZWxkQ2FwdGlvblBhaXJTdGF0ZVwiO1xuICAgIC8vIERQSV9GaWVsZENhcHRpb25QYWlyU3RhdGVzLCBoYXZpbmcgdHlwZSBGaWVsZENhcHRpb25QYWlyU3RhdGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRDYXB0aW9uUGFpclN0YXRlc1wiXSA9IFwiZmllbGRDYXB0aW9uUGFpclN0YXRlc1wiO1xuICAgIC8vIERQSV9EYXRhc291cmNlQ2FwdGlvblBhaXIsIGhhdmluZyB0eXBlIERhdGFzb3VyY2VDYXB0aW9uUGFpclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YXNvdXJjZUNhcHRpb25QYWlyXCJdID0gXCJkYXRhc291cmNlQ2FwdGlvblBhaXJcIjtcbiAgICAvLyBEUElfRGF0YXNvdXJjZUNhcHRpb25QYWlycywgaGF2aW5nIHR5cGUgRGF0YXNvdXJjZUNhcHRpb25QYWlyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFzb3VyY2VDYXB0aW9uUGFpcnNcIl0gPSBcImRhdGFzb3VyY2VDYXB0aW9uUGFpcnNcIjtcbiAgICAvLyBEUElfU2hlZXROYW1lSW5mb1BhaXIsIGhhdmluZyB0eXBlIFNoZWV0TmFtZUluZm9QYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldE5hbWVJbmZvUGFpclwiXSA9IFwic2hlZXROYW1lSW5mb1BhaXJcIjtcbiAgICAvLyBEUElfU2hlZXROYW1lSW5mb1BhaXJzLCBoYXZpbmcgdHlwZSBTaGVldE5hbWVJbmZvUGFpclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldE5hbWVJbmZvUGFpcnNcIl0gPSBcInNoZWV0TmFtZUluZm9QYWlyc1wiO1xuICAgIC8vIERQSV9CR0FjdGl2ZUNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJHQWN0aXZlQ29sb3JcIl0gPSBcImJnQWN0aXZlQ29sb3JcIjtcbiAgICAvLyBEUElfQkdDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJCR0NvbG9yXCJdID0gXCJiZ0NvbG9yXCI7XG4gICAgLy8gRFBJX0JHUmVzdENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJHUmVzdENvbG9yXCJdID0gXCJiZ1Jlc3RDb2xvclwiO1xuICAgIC8vIERQSV9Cb3JkZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJCb3JkZXJDb2xvclwiXSA9IFwiYm9yZGVyQ29sb3JcIjtcbiAgICAvLyBEUElfQm9yZGVyQ29sb3JCb3R0b20sIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyQ29sb3JCb3R0b21cIl0gPSBcImJvcmRlckNvbG9yQm90dG9tXCI7XG4gICAgLy8gRFBJX0JvcmRlckNvbG9yTGVmdCwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJCb3JkZXJDb2xvckxlZnRcIl0gPSBcImJvcmRlckNvbG9yTGVmdFwiO1xuICAgIC8vIERQSV9Cb3JkZXJDb2xvclJpZ2h0LCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkJvcmRlckNvbG9yUmlnaHRcIl0gPSBcImJvcmRlckNvbG9yUmlnaHRcIjtcbiAgICAvLyBEUElfQm9yZGVyQ29sb3JUb3AsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyQ29sb3JUb3BcIl0gPSBcImJvcmRlckNvbG9yVG9wXCI7XG4gICAgLy8gRFBJX0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yXCJdID0gXCJjb2xvclwiO1xuICAgIC8vIERQSV9Db2xvcjEsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiQ29sb3IxXCJdID0gXCJjb2xvcjFcIjtcbiAgICAvLyBEUElfQ29sb3IyLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yMlwiXSA9IFwiY29sb3IyXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0Q29sb3JcIl0gPSBcImRlZmF1bHRDb2xvclwiO1xuICAgIC8vIERQSV9EaXN0YW5jZUZvbnRDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJEaXN0YW5jZUZvbnRDb2xvclwiXSA9IFwiZGlzdGFuY2VGb250Q29sb3JcIjtcbiAgICAvLyBEUElfRmlsbENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGxDb2xvclwiXSA9IFwiZmlsbENvbG9yXCI7XG4gICAgLy8gRFBJX0ZvZ0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZvZ0NvbG9yXCJdID0gXCJmb2dDb2xvclwiO1xuICAgIC8vIERQSV9IZWFkZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIZWFkZXJDb2xvclwiXSA9IFwiaGVhZGVyQ29sb3JcIjtcbiAgICAvLyBEUElfSGlnaGxpZ2h0QkdDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIaWdobGlnaHRCR0NvbG9yXCJdID0gXCJoaWdobGlnaHRCZ0NvbG9yXCI7XG4gICAgLy8gRFBJX0hpZ2hsaWdodFRleHRDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJIaWdobGlnaHRUZXh0Q29sb3JcIl0gPSBcImhpZ2hsaWdodFRleHRDb2xvclwiO1xuICAgIC8vIERQSV9Ib3ZlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkhvdmVyQ29sb3JcIl0gPSBcImhvdmVyQ29sb3JcIjtcbiAgICAvLyBEUElfTWFwQXR0cmlidXRpb25GaWxsLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEF0dHJpYnV0aW9uRmlsbFwiXSA9IFwibWFwQXR0cmlidXRpb25GaWxsXCI7XG4gICAgLy8gRFBJX01hcEF0dHJpYnV0aW9uVGV4dENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEF0dHJpYnV0aW9uVGV4dENvbG9yXCJdID0gXCJtYXBBdHRyaWJ1dGlvblRleHRDb2xvclwiO1xuICAgIC8vIERQSV9NYXBQYW5lQmFja2dyb3VuZEZpbGwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwUGFuZUJhY2tncm91bmRGaWxsXCJdID0gXCJtYXBQYW5lQmFja2dyb3VuZEZpbGxcIjtcbiAgICAvLyBEUElfTWFwU2NhbGVCb3JkZXJDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJNYXBTY2FsZUJvcmRlckNvbG9yXCJdID0gXCJtYXBTY2FsZUJvcmRlckNvbG9yXCI7XG4gICAgLy8gRFBJX01hcFNjYWxlQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwU2NhbGVDb2xvclwiXSA9IFwibWFwU2NhbGVDb2xvclwiO1xuICAgIC8vIERQSV9NYXBXYWl0VGlsZUZpbGwsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTWFwV2FpdFRpbGVGaWxsXCJdID0gXCJtYXBXYWl0VGlsZUZpbGxcIjtcbiAgICAvLyBEUElfTWFya0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtDb2xvclwiXSA9IFwibWFya0NvbG9yXCI7XG4gICAgLy8gRFBJX05hdkFycm93RGlzYWJsZWRDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJOYXZBcnJvd0Rpc2FibGVkQ29sb3JcIl0gPSBcIm5hdkFycm93RGlzYWJsZWRDb2xvclwiO1xuICAgIC8vIERQSV9OYXZBcnJvd0hvdmVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTmF2QXJyb3dIb3ZlckNvbG9yXCJdID0gXCJuYXZBcnJvd0hvdmVyQ29sb3JcIjtcbiAgICAvLyBEUElfTmF2QXJyb3dJZGxlQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiTmF2QXJyb3dJZGxlQ29sb3JcIl0gPSBcIm5hdkFycm93SWRsZUNvbG9yXCI7XG4gICAgLy8gRFBJX05hdkFycm93UHJlc3NlZENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIk5hdkFycm93UHJlc3NlZENvbG9yXCJdID0gXCJuYXZBcnJvd1ByZXNzZWRDb2xvclwiO1xuICAgIC8vIERQSV9QYW5lQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiUGFuZUNvbG9yXCJdID0gXCJwYW5lQ29sb3JcIjtcbiAgICAvLyBEUElfUHJlc3NDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJQcmVzc0NvbG9yXCJdID0gXCJwcmVzc0NvbG9yXCI7XG4gICAgLy8gRFBJX1Jlc2l6ZUJvcmRlckNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc2l6ZUJvcmRlckNvbG9yXCJdID0gXCJyZXNpemVCb3JkZXJDb2xvclwiO1xuICAgIC8vIERQSV9TZWxlY3RCR0NvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdEJHQ29sb3JcIl0gPSBcInNlbGVjdEJnQ29sb3JcIjtcbiAgICAvLyBEUElfU2VsZWN0aW9uVGV4dENvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGlvblRleHRDb2xvclwiXSA9IFwic2VsZWN0aW9uVGV4dENvbG9yXCI7XG4gICAgLy8gRFBJX1N3YXRjaEJhY2tncm91bmRDb2xvciwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJTd2F0Y2hCYWNrZ3JvdW5kQ29sb3JcIl0gPSBcInN3YXRjaEJnQ29sb3JcIjtcbiAgICAvLyBEUElfU3dhdGNoQm9yZGVyQ29sb3IsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiU3dhdGNoQm9yZGVyQ29sb3JcIl0gPSBcInN3YXRjaEJvcmRlckNvbG9yXCI7XG4gICAgLy8gRFBJX1RhYkNvbG9yLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYkNvbG9yXCJdID0gXCJ0YWJDb2xvclwiO1xuICAgIC8vIERQSV9Db2xvcnMsIGhhdmluZyB0eXBlIHN0cmluZ1tdXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvcnNcIl0gPSBcImNvbG9yc1wiO1xuICAgIC8vIERQSV9Db2xvck1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBzdHJpbmcpXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvck1hcFwiXSA9IFwiY29sb3JNYXBcIjtcbiAgICAvLyBEUElfUGl4bWFwLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIlBpeG1hcFwiXSA9IFwicGl4bWFwXCI7XG4gICAgLy8gRFBJX0ltYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlXCJdID0gXCJpbWFnZVwiO1xuICAgIC8vIERQSV9PdmVybGF5SW1hZ2UsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiT3ZlcmxheUltYWdlXCJdID0gXCJvdmVybGF5SW1hZ2VcIjtcbiAgICAvLyBEUElfSWNvbkltYWdlLCBoYXZpbmcgdHlwZSBzdHJpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkljb25JbWFnZVwiXSA9IFwiaWNvbkltYWdlXCI7XG4gICAgLy8gRFBJX0ltYWdlTGlzdCwgaGF2aW5nIHR5cGUgc3RyaW5nW11cbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlTGlzdFwiXSA9IFwiaW1hZ2VMaXN0XCI7XG4gICAgLy8gRFBJX0ltYWdlTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIHN0cmluZylcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlTWFwXCJdID0gXCJpbWFnZU1hcFwiO1xuICAgIC8vIERQSV9VVUlELCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIlVVSURcIl0gPSBcInV1aWRcIjtcbiAgICAvLyBEUElfTmFub3NlY29uZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiTmFub3NlY29uZHNcIl0gPSBcIm5hbm9zZWNvbmRzXCI7XG4gICAgLy8gRFBJX01pY3Jvc2Vjb25kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJNaWNyb3NlY29uZHNcIl0gPSBcIm1pY3Jvc2Vjb25kc1wiO1xuICAgIC8vIERQSV9NaWxsaXNlY29uZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiTWlsbGlzZWNvbmRzXCJdID0gXCJtaWxsaXNlY29uZHNcIjtcbiAgICAvLyBEUElfVGltZW91dFMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiVGltZW91dFNcIl0gPSBcInRpbWVvdXRTXCI7XG4gICAgLy8gRFBJX01pbnV0ZXMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiTWludXRlc1wiXSA9IFwibWludXRlc1wiO1xuICAgIC8vIERQSV9Ib3VycywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJIb3Vyc1wiXSA9IFwiaG91cnNcIjtcbiAgICAvLyBEUElfQ2FyZFR5cGUsIGhhdmluZyB0eXBlIENhcmRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJDYXJkVHlwZVwiXSA9IFwiY2FyZFR5cGVcIjtcbiAgICAvLyBEUElfRG9jUGFyYW1ldGVySUQsIGhhdmluZyB0eXBlIHN0cmluZ1xuICAgIFBhcmFtZXRlcklkW1wiRG9jUGFyYW1ldGVySURcIl0gPSBcInR5cGVcIjtcbiAgICAvLyBEUElfQXJndW1lbnRQYXJhbSwgaGF2aW5nIHR5cGUgc3RyaW5nXG4gICAgUGFyYW1ldGVySWRbXCJBcmd1bWVudFBhcmFtXCJdID0gXCJhcmd1bWVudFBhcmFtXCI7XG4gICAgLy8gRFBJX0FyZ3VtZW50UGFyYW1zLCBoYXZpbmcgdHlwZSBzdHJpbmdbXVxuICAgIFBhcmFtZXRlcklkW1wiQXJndW1lbnRQYXJhbXNcIl0gPSBcImFyZ3VtZW50UGFyYW1zXCI7XG4gICAgLy8gRFBJX0FjdGlvblR5cGUsIGhhdmluZyB0eXBlIEFjdGlvblR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGlvblR5cGVcIl0gPSBcImFjdGlvblR5cGVcIjtcbiAgICAvLyBEUElfQW5ub3RhdGVFbnVtLCBoYXZpbmcgdHlwZSBBbm5vdGF0ZUVudW1cbiAgICBQYXJhbWV0ZXJJZFtcIkFubm90YXRlRW51bVwiXSA9IFwiYW5ub3RhdGVFbnVtXCI7XG4gICAgLy8gRFBJX0pvaW5UeXBlLCBoYXZpbmcgdHlwZSBTUUxKb2luVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiSm9pblR5cGVcIl0gPSBcImpvaW5UeXBlXCI7XG4gICAgLy8gRFBJX1N1cHBvcnRlZEpvaW5UeXBlcywgaGF2aW5nIHR5cGUgU1FMSm9pblR5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiU3VwcG9ydGVkSm9pblR5cGVzXCJdID0gXCJzdXBwb3J0ZWRKb2luVHlwZXNcIjtcbiAgICAvLyBEUElfUm91bmRpbmcsIGhhdmluZyB0eXBlIFJvdW5kaW5nXG4gICAgUGFyYW1ldGVySWRbXCJSb3VuZGluZ1wiXSA9IFwicm91bmRpbmdFbnVtXCI7XG4gICAgLy8gRFBJX0JvZHlUeXBlLCBoYXZpbmcgdHlwZSBCb2R5VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQm9keVR5cGVcIl0gPSBcImJvZHlUeXBlXCI7XG4gICAgLy8gRFBJX0xpbmVFbmQsIGhhdmluZyB0eXBlIExpbmVFbmRcbiAgICBQYXJhbWV0ZXJJZFtcIkxpbmVFbmRcIl0gPSBcImxpbmVFbmRFbnVtXCI7XG4gICAgLy8gRFBJX0xpbmVFbmRTaXplLCBoYXZpbmcgdHlwZSBMaW5lRW5kU2l6ZVxuICAgIFBhcmFtZXRlcklkW1wiTGluZUVuZFNpemVcIl0gPSBcImxpbmVFbmRTaXplRW51bVwiO1xuICAgIC8vIERQSV9CcnVzaFNwZWNpYWxGaWVsZHMsIGhhdmluZyB0eXBlIEJydXNoU3BlY2lhbEZpZWxkc1xuICAgIFBhcmFtZXRlcklkW1wiQnJ1c2hTcGVjaWFsRmllbGRzXCJdID0gXCJzcGVjaWFsRmllbGRzXCI7XG4gICAgLy8gRFBJX0NlbGxTaXplQ2hhbmdlLCBoYXZpbmcgdHlwZSBDZWxsU2l6ZUNoYW5nZVxuICAgIFBhcmFtZXRlcklkW1wiQ2VsbFNpemVDaGFuZ2VcIl0gPSBcImNlbGxTaXplQ2hhbmdlXCI7XG4gICAgLy8gRFBJX0NlbGxUeXBlLCBoYXZpbmcgdHlwZSBDZWxsVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQ2VsbFR5cGVcIl0gPSBcImNlbGxUeXBlXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25BdHRlbXB0UmVzdWx0LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQXR0ZW1wdFJlc3VsdFxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHRcIl0gPSBcImNvbm5lY3Rpb25BdHRlbXB0UmVzdWx0XCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25FcnJvclN0YWdlLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uRXJyb3JTdGFnZVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbkVycm9yU3RhZ2VcIl0gPSBcImNvbm5lY3Rpb25FcnJvclN0YWdlXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25FcnJvclR5cGUsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25FcnJvclR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25FcnJvclR5cGVcIl0gPSBcImNvbm5lY3Rpb25FcnJvclR5cGVcIjtcbiAgICAvLyBEUElfRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHQsIGhhdmluZyB0eXBlIERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0XG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdFwiXSA9IFwiZHNDb25uZWN0aW9uUmVzdWx0XCI7XG4gICAgLy8gRFBJX0Ryb3BXaGVuLCBoYXZpbmcgdHlwZSBEcm9wV2hlblxuICAgIFBhcmFtZXRlcklkW1wiRHJvcFdoZW5cIl0gPSBcImRyb3BXaGVuXCI7XG4gICAgLy8gRFBJX0Ryb3BUeXBlLCBoYXZpbmcgdHlwZSBEcm9wRmllbGRSZXN1bHRcbiAgICBQYXJhbWV0ZXJJZFtcIkRyb3BUeXBlXCJdID0gXCJkcm9wVHlwZVwiO1xuICAgIC8vIERQSV9FbmNvZGluZ1R5cGUsIGhhdmluZyB0eXBlIEVuY29kaW5nVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRW5jb2RpbmdUeXBlXCJdID0gXCJlbmNvZGluZ1R5cGVcIjtcbiAgICAvLyBEUElfRHJvcGRvd25FbmNvZGluZ1R5cGUsIGhhdmluZyB0eXBlIEVuY29kaW5nVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRHJvcGRvd25FbmNvZGluZ1R5cGVcIl0gPSBcImRyb3Bkb3duRW5jb2RpbmdUeXBlXCI7XG4gICAgLy8gRFBJX0VuY29kaW5nVHlwZXMsIGhhdmluZyB0eXBlIEVuY29kaW5nVHlwZVtdXG4gICAgUGFyYW1ldGVySWRbXCJFbmNvZGluZ1R5cGVzXCJdID0gXCJlbmNvZGluZ1R5cGVzXCI7XG4gICAgLy8gRFBJX0ZpZWxkT3JkZXJUeXBlLCBoYXZpbmcgdHlwZSBGaWVsZE9yZGVyVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRPcmRlclR5cGVcIl0gPSBcImZpZWxkT3JkZXJUeXBlXCI7XG4gICAgLy8gRFBJX0ZpbHRlckljb25UeXBlLCBoYXZpbmcgdHlwZSBGaWx0ZXJJY29uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVySWNvblR5cGVcIl0gPSBcImZpbHRlckljb25UeXBlXCI7XG4gICAgLy8gRFBJX0ZpbHRlckljb25UeXBlcywgaGF2aW5nIHR5cGUgRmlsdGVySWNvblR5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVySWNvblR5cGVzXCJdID0gXCJmaWx0ZXJJY29uVHlwZXNcIjtcbiAgICAvLyBEUElfRmxvYXRpbmdUb29sYmFyVmlzLCBoYXZpbmcgdHlwZSBGbG9hdGluZ1Rvb2xiYXJWaXNpYmlsaXR5XG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdGluZ1Rvb2xiYXJWaXNcIl0gPSBcInRvb2xiYXJWaXNpYmlsaXR5XCI7XG4gICAgLy8gRFBJX0ZvbGRlclJvbGUsIGhhdmluZyB0eXBlIEZvbGRlclJvbGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvbGRlclJvbGVcIl0gPSBcImZvbGRlclJvbGVcIjtcbiAgICAvLyBEUElfTGVnZW5kVHlwZSwgaGF2aW5nIHR5cGUgRW51bVxuICAgIFBhcmFtZXRlcklkW1wiTGVnZW5kVHlwZVwiXSA9IFwibGVnZW5kVHlwZVwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdE1vZGVsVHlwZSwgaGF2aW5nIHR5cGUgRm9yZWNhc3RNb2RlbFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0TW9kZWxUeXBlXCJdID0gXCJmb3JlY2FzdE1vZGVsVHlwZVwiO1xuICAgIC8vIERQSV9Gb3JlY2FzdFRyZW5kVHlwZSwgaGF2aW5nIHR5cGUgRm9yZWNhc3RDb21wb25lbnRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdFRyZW5kVHlwZVwiXSA9IFwiZm9yZWNhc3RUcmVuZFR5cGVcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RTZWFzb25UeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdENvbXBvbmVudFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0U2Vhc29uVHlwZVwiXSA9IFwiZm9yZWNhc3RTZWFzb25UeXBlXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0UmFuZ2VUeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdFJhbmdlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RSYW5nZVR5cGVcIl0gPSBcImZvcmVjYXN0UmFuZ2VUeXBlXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0U3RhdHVzLCBoYXZpbmcgdHlwZSBGb3JlY2FzdFN0YXR1c1xuICAgIFBhcmFtZXRlcklkW1wiRm9yZWNhc3RTdGF0dXNcIl0gPSBcImZvcmVjYXN0U3RhdHVzXCI7XG4gICAgLy8gRFBJX1NoZWV0Rm9yZWNhc3RTdGF0dXMsIGhhdmluZyB0eXBlIEZvcmVjYXN0U3RhdHVzXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldEZvcmVjYXN0U3RhdHVzXCJdID0gXCJzaGVldEZvcmVjYXN0U3RhdHVzXCI7XG4gICAgLy8gRFBJX1BERm9yZWNhc3RTdGF0dXNMaXN0LCBoYXZpbmcgdHlwZSBGb3JlY2FzdFN0YXR1c1tdXG4gICAgUGFyYW1ldGVySWRbXCJQREZvcmVjYXN0U3RhdHVzTGlzdFwiXSA9IFwicGFuZURlc2NyaXB0b3JGb3JlY2FzdFN0YXR1c0xpc3RcIjtcbiAgICAvLyBEUElfRm9yZWNhc3RDb2x1bW5UeXBlLCBoYXZpbmcgdHlwZSBGb3JlY2FzdENvbHVtblR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0Q29sdW1uVHlwZVwiXSA9IFwiZm9yZWNhc3RDb2x1bW5UeXBlXCI7XG4gICAgLy8gRFBJX0RhdGFTY2FsaW5nLCBoYXZpbmcgdHlwZSBEYXRhU2NhbGluZ1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNjYWxpbmdcIl0gPSBcImRhdGFTY2FsaW5nXCI7XG4gICAgLy8gRFBJX0dldEZpbHRlckl0ZW1zSnNvblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRKc29uUmVzcG9uc2VFbnVtXG4gICAgUGFyYW1ldGVySWRbXCJHZXRGaWx0ZXJJdGVtc0pzb25SZXNwb25zZVwiXSA9IFwiZ2V0RmlsdGVySXRlbXNKc29uUmVzcG9uc2VcIjtcbiAgICAvLyBEUElfRmlsdGVyU2VhcmNoSnNvblJlc3BvbnNlLCBoYXZpbmcgdHlwZSBHZXRKc29uUmVzcG9uc2VFbnVtXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJTZWFyY2hKc29uUmVzcG9uc2VcIl0gPSBcImZpbHRlclNlYXJjaEpzb25SZXNwb25zZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJTZWFyY2hXaXRoSW5kZXhKc29uUmVzcG9uc2UsIGhhdmluZyB0eXBlIEdldEpzb25SZXNwb25zZUVudW1cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaFdpdGhJbmRleEpzb25SZXNwb25zZVwiXSA9IFwiZmlsdGVyU2VhcmNoV2l0aEluZGV4SnNvblJlc3BvbnNlXCI7XG4gICAgLy8gRFBJX0ZpbHRlclNob3dDaGlsZHJlbkpzb25SZXNwb25zZSwgaGF2aW5nIHR5cGUgR2V0SnNvblJlc3BvbnNlRW51bVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyU2hvd0NoaWxkcmVuSnNvblJlc3BvbnNlXCJdID0gXCJmaWx0ZXJTaG93Q2hpbGRyZW5Kc29uUmVzcG9uc2VcIjtcbiAgICAvLyBEUElfSEFsaWdubWVudCwgaGF2aW5nIHR5cGUgTGFiZWxIQWxpZ25tZW50XG4gICAgUGFyYW1ldGVySWRbXCJIQWxpZ25tZW50XCJdID0gXCJob3Jpem9udGFsTGFiZWxBbGlnbm1lbnRcIjtcbiAgICAvLyBEUElfSm9pblZhbGlkYXRpb25FcnJvciwgaGF2aW5nIHR5cGUgSm9pblZhbGlkYXRpb25FcnJvclxuICAgIFBhcmFtZXRlcklkW1wiSm9pblZhbGlkYXRpb25FcnJvclwiXSA9IFwiam9pblZhbGlkYXRpb25FcnJvclwiO1xuICAgIC8vIERQSV9OYW1lQ29uZmxpY3RSZXNvbHV0aW9uLCBoYXZpbmcgdHlwZSBOYW1lQ29uZmxpY3RSZXNvbHV0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJOYW1lQ29uZmxpY3RSZXNvbHV0aW9uXCJdID0gXCJuYW1lQ29uZmxpY3RSZXNvbHV0aW9uXCI7XG4gICAgLy8gRFBJX0xhYmVsRGlyLCBoYXZpbmcgdHlwZSBUZXh0T3JpZW50XG4gICAgUGFyYW1ldGVySWRbXCJMYWJlbERpclwiXSA9IFwibGFiZWxEaXJlY3Rpb25cIjtcbiAgICAvLyBEUElfTGFiZWxBbGlnbiwgaGF2aW5nIHR5cGUgVGV4dEFsaWduXG4gICAgUGFyYW1ldGVySWRbXCJMYWJlbEFsaWduXCJdID0gXCJsYWJlbEFsaWdubWVudFwiO1xuICAgIC8vIERQSV9MYWJlbFdyYXAsIGhhdmluZyB0eXBlIFRleHRXcmFwTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiTGFiZWxXcmFwXCJdID0gXCJsYWJlbFdyYXBcIjtcbiAgICAvLyBEUElfV3JhcE1vZGUsIGhhdmluZyB0eXBlIFRleHRXcmFwTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiV3JhcE1vZGVcIl0gPSBcIndyYXBNb2RlXCI7XG4gICAgLy8gRFBJX01hcmtFbnVtLCBoYXZpbmcgdHlwZSBNYXJrRW51bVxuICAgIFBhcmFtZXRlcklkW1wiTWFya0VudW1cIl0gPSBcIm1hcmtFbnVtXCI7XG4gICAgLy8gRFBJX1BlcmNlbnRNb2RlLCBoYXZpbmcgdHlwZSBQZXJjZW50TW9kZVxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudE1vZGVcIl0gPSBcInBlcmNlbnRhZ2VNb2RlXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZU9wdGlvbnNTZXQsIGhhdmluZyB0eXBlIFJlZmVyZW5jZU9wdGlvbnNTZXRcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZU9wdGlvbnNTZXRcIl0gPSBcInJlZmVyZW5jZU9wdGlvbnNTZXRcIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlT3B0aW9uc1NldHMsIGhhdmluZyB0eXBlIFJlZmVyZW5jZU9wdGlvbnNTZXRbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlT3B0aW9uc1NldHNcIl0gPSBcInJlZmVyZW5jZU9wdGlvbnNTZXRzXCI7XG4gICAgLy8gRFBJX1JhbmtUeXBlLCBoYXZpbmcgdHlwZSBSYW5rVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUmFua1R5cGVcIl0gPSBcInJhbmtUeXBlXCI7XG4gICAgLy8gRFBJX1JhbmtUeXBlVmFsdWVzLCBoYXZpbmcgdHlwZSBSYW5rVHlwZVtdXG4gICAgUGFyYW1ldGVySWRbXCJSYW5rVHlwZVZhbHVlc1wiXSA9IFwicmFua1R5cGVWYWx1ZXNcIjtcbiAgICAvLyBEUElfU3BlY2lhbFZhbHVlc01vZGUsIGhhdmluZyB0eXBlIFNwZWNpYWxWYWx1ZXNNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJTcGVjaWFsVmFsdWVzTW9kZVwiXSA9IFwic3BlY2lhbFZhbHVlc01vZGVcIjtcbiAgICAvLyBEUElfVkFsaWdubWVudCwgaGF2aW5nIHR5cGUgTGFiZWxWQWxpZ25tZW50XG4gICAgUGFyYW1ldGVySWRbXCJWQWxpZ25tZW50XCJdID0gXCJ2ZXJ0aWNhbExhYmVsQWxpZ25tZW50XCI7XG4gICAgLy8gRFBJX0NvbG9yTW9kZSwgaGF2aW5nIHR5cGUgQ29sb3JNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvck1vZGVcIl0gPSBcImNvbG9yTW9kZVwiO1xuICAgIC8vIERQSV9NYXJrTGFiZWxzTW9kZSwgaGF2aW5nIHR5cGUgTWFya0xhYmVsc01vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtMYWJlbHNNb2RlXCJdID0gXCJtYXJrTGFiZWxzTW9kZVwiO1xuICAgIC8vIERQSV9NYXJrTGFiZWxzU2NvcGUsIGhhdmluZyB0eXBlIE1hcmtMYWJlbHNTY29wZVxuICAgIFBhcmFtZXRlcklkW1wiTWFya0xhYmVsc1Njb3BlXCJdID0gXCJtYXJrTGFiZWxzU2NvcGVcIjtcbiAgICAvLyBEUElfTWFya0xhYmVsc1Zpc2liaWxpdHksIGhhdmluZyB0eXBlIE1hcmtMYWJlbHNWaXNpYmlsaXR5XG4gICAgUGFyYW1ldGVySWRbXCJNYXJrTGFiZWxzVmlzaWJpbGl0eVwiXSA9IFwibWFya0xhYmVsc1Zpc2liaWxpdHlcIjtcbiAgICAvLyBEUElfUHJpbWl0aXZlVHlwZSwgaGF2aW5nIHR5cGUgUHJpbWl0aXZlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUHJpbWl0aXZlVHlwZVwiXSA9IFwicHJpbWl0aXZlVHlwZVwiO1xuICAgIC8vIERQSV9BY3R1YWxQcmltaXRpdmVUeXBlLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJBY3R1YWxQcmltaXRpdmVUeXBlXCJdID0gXCJhY3R1YWxQcmltaXRpdmVUeXBlXCI7XG4gICAgLy8gRFBJX1ByaW1pdGl2ZVR5cGVzLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlByaW1pdGl2ZVR5cGVzXCJdID0gXCJwcmltaXRpdmVUeXBlc1wiO1xuICAgIC8vIERQSV9TaGFwZVR5cGUsIGhhdmluZyB0eXBlIFNoYXBlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2hhcGVUeXBlXCJdID0gXCJzaGFwZVR5cGVcIjtcbiAgICAvLyBEUElfU29ydFR5cGUsIGhhdmluZyB0eXBlIFNvcnRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJTb3J0VHlwZVwiXSA9IFwic29ydEJ5XCI7XG4gICAgLy8gRFBJX1NvcnRFbmQsIGhhdmluZyB0eXBlIFNvcnRFbmRcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRFbmRcIl0gPSBcInNvcnRFbmRcIjtcbiAgICAvLyBEUElfU3RhY2tpbmdNb2RlLCBoYXZpbmcgdHlwZSBTdGFja2luZ01vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIlN0YWNraW5nTW9kZVwiXSA9IFwic3RhY2tpbmdNb2RlXCI7XG4gICAgLy8gRFBJX1N0eWxlVGhlbWUsIGhhdmluZyB0eXBlIFN0eWxlVGhlbWVcbiAgICBQYXJhbWV0ZXJJZFtcIlN0eWxlVGhlbWVcIl0gPSBcInN0eWxlVGhlbWVcIjtcbiAgICAvLyBEUElfVHJlbmRMaW5lRml0VHlwZSwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lRml0VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiVHJlbmRMaW5lRml0VHlwZVwiXSA9IFwiZml0VHlwZVwiO1xuICAgIC8vIERQSV9VcGRhdGVTY29wZSwgaGF2aW5nIHR5cGUgVXBkYXRlU2NvcGVcbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZVNjb3BlXCJdID0gXCJ1cGRhdGVTY29wZVwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJDdHJsRGlzcGxheU1vZGUsIGhhdmluZyB0eXBlIERpc3BsYXlNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJDdHJsRGlzcGxheU1vZGVcIl0gPSBcInBhcmFtRGlzcGxheU1vZGVcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyQ3RybERpc3BsYXlGbGFnLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJDdHJsRGlzcGxheUZsYWdcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ1wiXSA9IFwicGFyYW1EaXNwbGF5RmxhZ1wiO1xuICAgIC8vIERQSV9JbmNsdWRlZCwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXNcbiAgICBQYXJhbWV0ZXJJZFtcIkluY2x1ZGVkXCJdID0gXCJpbmNsdWRlZFwiO1xuICAgIC8vIERQSV9Db21tYW5kc1R5cGUsIGhhdmluZyB0eXBlIENvbW1hbmRzVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZHNUeXBlXCJdID0gXCJjb21tYW5kc1R5cGVcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyRG9tYWluVHlwZSwgaGF2aW5nIHR5cGUgRG9tYWluVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyRG9tYWluVHlwZVwiXSA9IFwicGFyYW1ldGVyRG9tYWluVHlwZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJEb21haW5UeXBlLCBoYXZpbmcgdHlwZSBEb21haW5UeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJEb21haW5UeXBlXCJdID0gXCJmaWx0ZXJEb21haW5UeXBlXCI7XG4gICAgLy8gRFBJX0ZpbHRlckRvbWFpbnMsIGhhdmluZyB0eXBlIERvbWFpblR5cGVbXVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyRG9tYWluc1wiXSA9IFwiZmlsdGVyRG9tYWluc1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclR5cGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJUeXBlXCJdID0gXCJjYXRlZ29yaWNhbEZpbHRlclR5cGVcIjtcbiAgICAvLyBEUElfRGF0ZVBlcmlvZFR5cGUsIGhhdmluZyB0eXBlIERhdGVQZXJpb2RUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJEYXRlUGVyaW9kVHlwZVwiXSA9IFwiZGF0ZVBlcmlvZFR5cGVcIjtcbiAgICAvLyBEUElfRmlsdGVyUGF0dGVyblR5cGUsIGhhdmluZyB0eXBlIFBhdHRlcm5UeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJQYXR0ZXJuVHlwZVwiXSA9IFwiZmlsdGVyUGF0dGVyblR5cGVcIjtcbiAgICAvLyBEUElfRmlsdGVyQ29uZGl0aW9uVHlwZSwgaGF2aW5nIHR5cGUgQ29uZGl0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyQ29uZGl0aW9uVHlwZVwiXSA9IFwiZmlsdGVyQ29uZGl0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJzUHJlc2V0VHlwZSwgaGF2aW5nIHR5cGUgUHJlc2V0VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyc1ByZXNldFR5cGVcIl0gPSBcImZpbHRlcnNQcmVzZXRUeXBlXCI7XG4gICAgLy8gRFBJX0ZpbHRlcnNSYW5nZVR5cGUsIGhhdmluZyB0eXBlIFJhbmdlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyc1JhbmdlVHlwZVwiXSA9IFwiZmlsdGVyc1JhbmdlVHlwZVwiO1xuICAgIC8vIERQSV9EYXRlUmFuZ2VUeXBlLCBoYXZpbmcgdHlwZSBSZWxhdGl2ZURhdGVSYW5nZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVSYW5nZVR5cGVcIl0gPSBcImRhdGVSYW5nZVR5cGVcIjtcbiAgICAvLyBEUElfUGFnZUZsYWcsIGhhdmluZyB0eXBlIFBhZ2VOYXZGbGFnc1xuICAgIFBhcmFtZXRlcklkW1wiUGFnZUZsYWdcIl0gPSBcInBhZ2VGbGFnXCI7XG4gICAgLy8gRFBJX01hcmtzVG9UcmFpbCwgaGF2aW5nIHR5cGUgTWFya3NUb1RyYWlsXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrc1RvVHJhaWxcIl0gPSBcIm1hcmtzVG9UcmFpbFwiO1xuICAgIC8vIERQSV9UcmFpbFR5cGUsIGhhdmluZyB0eXBlIFRyYWlsVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiVHJhaWxUeXBlXCJdID0gXCJ0cmFpbFR5cGVcIjtcbiAgICAvLyBEUElfQ2hhbmdlUGFnZURpcmVjdGlvbiwgaGF2aW5nIHR5cGUgQ2hhbmdlUGFnZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNoYW5nZVBhZ2VEaXJlY3Rpb25cIl0gPSBcImNoYW5nZVRvXCI7XG4gICAgLy8gRFBJX0FuaW1hdGlvbkNvbnRyb2wsIGhhdmluZyB0eXBlIFBhZ2VBbmltYXRpb25Db250cm9sXG4gICAgUGFyYW1ldGVySWRbXCJBbmltYXRpb25Db250cm9sXCJdID0gXCJhbmltYXRpb25Db250cm9sXCI7XG4gICAgLy8gRFBJX0xpbmVQYXR0ZXJuLCBoYXZpbmcgdHlwZSBMaW5lUGF0dGVyblxuICAgIFBhcmFtZXRlcklkW1wiTGluZVBhdHRlcm5cIl0gPSBcImxpbmVQYXR0ZXJuXCI7XG4gICAgLy8gRFBJX0xpbmVDYXAsIGhhdmluZyB0eXBlIExpbmVDYXBcbiAgICBQYXJhbWV0ZXJJZFtcIkxpbmVDYXBcIl0gPSBcImxpbmVDYXBcIjtcbiAgICAvLyBEUElfTGluZUpvaW4sIGhhdmluZyB0eXBlIExpbmVKb2luXG4gICAgUGFyYW1ldGVySWRbXCJMaW5lSm9pblwiXSA9IFwibGluZUpvaW5cIjtcbiAgICAvLyBEUElfTGluZUFsaWdubWVudCwgaGF2aW5nIHR5cGUgTGluZUFsaWdubWVudFxuICAgIFBhcmFtZXRlcklkW1wiTGluZUFsaWdubWVudFwiXSA9IFwibGluZUFsaWdubWVudFwiO1xuICAgIC8vIERQSV9GaWxsTW9kZSwgaGF2aW5nIHR5cGUgRmlsbE1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGxNb2RlXCJdID0gXCJmaWxsTW9kZVwiO1xuICAgIC8vIERQSV9DdXJzb3JTaGFwZSwgaGF2aW5nIHR5cGUgQ3Vyc29yU2hhcGVcbiAgICBQYXJhbWV0ZXJJZFtcIkN1cnNvclNoYXBlXCJdID0gXCJjdXJzb3JTaGFwZVwiO1xuICAgIC8vIERQSV9TaG93TWVDb21tYW5kVHlwZSwgaGF2aW5nIHR5cGUgU2hvd01lQ29tbWFuZFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dNZUNvbW1hbmRUeXBlXCJdID0gXCJzaG93TWVDb21tYW5kVHlwZVwiO1xuICAgIC8vIERQSV9TaGVsZkljb25UeXBlLCBoYXZpbmcgdHlwZSBTaGVsZkljb25UeXBlXG4gICAgUGFyYW1ldGVySWRbXCJTaGVsZkljb25UeXBlXCJdID0gXCJzaGVsZkljb25UeXBlXCI7XG4gICAgLy8gRFBJX1NoZWxmSWNvblR5cGVzLCBoYXZpbmcgdHlwZSBTaGVsZkljb25UeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmSWNvblR5cGVzXCJdID0gXCJzaGVsZkljb25UeXBlc1wiO1xuICAgIC8vIERQSV9JdGVtRHJhd1N0eWxlLCBoYXZpbmcgdHlwZSBJdGVtRHJhd1N0eWxlXG4gICAgUGFyYW1ldGVySWRbXCJJdGVtRHJhd1N0eWxlXCJdID0gXCJpdGVtRHJhd1N0eWxlXCI7XG4gICAgLy8gRFBJX1NjYWxlTW9kZSwgaGF2aW5nIHR5cGUgU2NhbGVNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJTY2FsZU1vZGVcIl0gPSBcInBhZ2VTY2FsZU1vZGVcIjtcbiAgICAvLyBEUElfUGFnZU9yaWVudGF0aW9uT3B0aW9uLCBoYXZpbmcgdHlwZSBQYWdlT3JpZW50YXRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VPcmllbnRhdGlvbk9wdGlvblwiXSA9IFwicGFnZU9yaWVudGF0aW9uT3B0aW9uXCI7XG4gICAgLy8gRFBJX1BhZ2VTaXplT3B0aW9uLCBoYXZpbmcgdHlwZSBQYWdlU2l6ZU9wdGlvblxuICAgIFBhcmFtZXRlcklkW1wiUGFnZVNpemVPcHRpb25cIl0gPSBcInBhZ2VTaXplT3B0aW9uXCI7XG4gICAgLy8gRFBJX1NvcnRSZWdpb25UeXBlLCBoYXZpbmcgdHlwZSBTb3J0UmVnaW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU29ydFJlZ2lvblR5cGVcIl0gPSBcInNvcnRSZWdpb25cIjtcbiAgICAvLyBEUElfTGVnZW5kSXRlbUxheW91dCwgaGF2aW5nIHR5cGUgTGVnZW5kSXRlbUxheW91dFxuICAgIFBhcmFtZXRlcklkW1wiTGVnZW5kSXRlbUxheW91dFwiXSA9IFwibGVnZW5kTGF5b3V0XCI7XG4gICAgLy8gRFBJX0xlZ2VuZEl0ZW1PcmRlciwgaGF2aW5nIHR5cGUgTGVnZW5kSXRlbU9yZGVyXG4gICAgUGFyYW1ldGVySWRbXCJMZWdlbmRJdGVtT3JkZXJcIl0gPSBcImxlZ2VuZE9yZGVyXCI7XG4gICAgLy8gRFBJX1ZpekltYWdlUmVnaW9uLCBoYXZpbmcgdHlwZSBWaXpJbWFnZVJlZ2lvblxuICAgIFBhcmFtZXRlcklkW1wiVml6SW1hZ2VSZWdpb25cIl0gPSBcInJcIjtcbiAgICAvLyBEUElfTGVnYWN5TWVudU5hbWUsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVOYW1lXG4gICAgUGFyYW1ldGVySWRbXCJMZWdhY3lNZW51TmFtZVwiXSA9IFwibGVnYWN5TWVudU5hbWVcIjtcbiAgICAvLyBEUElfTGVnYWN5TWVudVN0YXRlLCBoYXZpbmcgdHlwZSBMZWdhY3lNZW51U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2FjeU1lbnVTdGF0ZVwiXSA9IFwibGVnYWN5TWVudVN0YXRlXCI7XG4gICAgLy8gRFBJX0xlZ2FjeU1lbnVTdGF0ZUxpc3QsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVTdGF0ZVtdXG4gICAgUGFyYW1ldGVySWRbXCJMZWdhY3lNZW51U3RhdGVMaXN0XCJdID0gXCJsZWdhY3lNZW51U3RhdGVzXCI7XG4gICAgLy8gRFBJX0RpbWVuc2lvblR5cGUsIGhhdmluZyB0eXBlIERpbWVuc2lvblR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRpbWVuc2lvblR5cGVcIl0gPSBcImRpbWVuc2lvblR5cGVcIjtcbiAgICAvLyBEUElfTGF5b3V0VHlwZSwgaGF2aW5nIHR5cGUgTGF5b3V0VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiTGF5b3V0VHlwZVwiXSA9IFwibGF5b3V0VHlwZVwiO1xuICAgIC8vIERQSV9TaGVsZlR5cGUsIGhhdmluZyB0eXBlIFNoZWxmVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZUeXBlXCJdID0gXCJzaGVsZlR5cGVcIjtcbiAgICAvLyBEUElfTGFzdFNlbGVjdGlvblNoZWxmLCBoYXZpbmcgdHlwZSBTaGVsZlR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkxhc3RTZWxlY3Rpb25TaGVsZlwiXSA9IFwibGFzdFNoZWxmXCI7XG4gICAgLy8gRFBJX1NjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlLCBoYXZpbmcgdHlwZSBTY2hlbWFWaWV3ZXJEYXRhU291cmNlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGVcIl0gPSBcInNjaGVtYURhdGFzb3VyY2VUeXBlXCI7XG4gICAgLy8gRFBJX1NjaGVtYUl0ZW1UeXBlLCBoYXZpbmcgdHlwZSBTY2hlbWFJdGVtVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hSXRlbVR5cGVcIl0gPSBcInNjaGVtYUl0ZW1UeXBlXCI7XG4gICAgLy8gRFBJX0hTTVNlbGVjdGlvbk1vZGUsIGhhdmluZyB0eXBlIFNlbGVjdGlvbk1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkhTTVNlbGVjdGlvbk1vZGVcIl0gPSBcImhzbVNlbGVjdGlvbk1vZGVcIjtcbiAgICAvLyBEUElfSFNNRGVmYXVsdE1lbWJlclR5cGUsIGhhdmluZyB0eXBlIERlZmF1bHRNZW1iZXJUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJIU01EZWZhdWx0TWVtYmVyVHlwZVwiXSA9IFwiaHNtRGVmYXVsdE1lbWJlclR5cGVcIjtcbiAgICAvLyBEUElfSFNNTm90aWZpY2F0aW9uVHlwZSwgaGF2aW5nIHR5cGUgTm90aWZpY2F0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiSFNNTm90aWZpY2F0aW9uVHlwZVwiXSA9IFwiaHNtTm90aWZpY2F0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9IU01TZWxlY3Rpb25SZXF1ZXN0VHlwZSwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUmVxdWVzdFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkhTTVNlbGVjdGlvblJlcXVlc3RUeXBlXCJdID0gXCJoc21TZWxlY3Rpb25SZXF1ZXN0VHlwZVwiO1xuICAgIC8vIERQSV9IU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZSwgaGF2aW5nIHR5cGUgTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkhTTU1lbWJlclNlbGVjdFJlcXVlc3RUeXBlXCJdID0gXCJoc21NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVwiO1xuICAgIC8vIERQSV9QaXZvdFN0cmF0ZWd5LCBoYXZpbmcgdHlwZSBGaWVsZFBpdm90U3RyYXRlZ3lcbiAgICBQYXJhbWV0ZXJJZFtcIlBpdm90U3RyYXRlZ3lcIl0gPSBcInBpdm90U3RyYXRlZ3lcIjtcbiAgICAvLyBEUElfQWxpYXNUeXBlLCBoYXZpbmcgdHlwZSBBbGlhc1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkFsaWFzVHlwZVwiXSA9IFwiYWxpYXNUeXBlXCI7XG4gICAgLy8gRFBJX0RTT0RpbWVuc2lvblNvcnRPcmRlciwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZU9yZGVyXG4gICAgUGFyYW1ldGVySWRbXCJEU09EaW1lbnNpb25Tb3J0T3JkZXJcIl0gPSBcImRzb0RpbWVuc2lvblNvcnRPcmRlclwiO1xuICAgIC8vIERQSV9EU09NZWFzdXJlU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlT3JkZXJcbiAgICBQYXJhbWV0ZXJJZFtcIkRTT01lYXN1cmVTb3J0T3JkZXJcIl0gPSBcImRzb01lYXN1cmVTb3J0T3JkZXJcIjtcbiAgICAvLyBEUElfRFNPU29ydE9yZGVyLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlT3JkZXJcbiAgICBQYXJhbWV0ZXJJZFtcIkRTT1NvcnRPcmRlclwiXSA9IFwiZHNvU29ydE9yZGVyXCI7XG4gICAgLy8gRFBJX1ZUQWdnVHlwZSwgaGF2aW5nIHR5cGUgVlRBZ2dUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJWVEFnZ1R5cGVcIl0gPSBcInZ0QWdncmVnYXRpb25cIjtcbiAgICAvLyBEUElfRmllbGRUeXBlSWNvblNldCwgaGF2aW5nIHR5cGUgRmllbGRUeXBlSWNvblNldFxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRUeXBlSWNvblNldFwiXSA9IFwiZmllbGRJY29uU2V0XCI7XG4gICAgLy8gRFBJX1Zpc3VhbFBhcnQsIGhhdmluZyB0eXBlIFZpc3VhbFBhcnRcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbFBhcnRcIl0gPSBcInZpc3VhbFBhcnRcIjtcbiAgICAvLyBEUElfRGVmYXVsdE1hcFRvb2xFbnVtLCBoYXZpbmcgdHlwZSBNYXBUb29sU2VsZWN0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0TWFwVG9vbEVudW1cIl0gPSBcImRlZmF1bHRNYXBUb29sRW51bVwiO1xuICAgIC8vIERQSV9EZWZhdWx0TWFwVW5pdEVudW0sIGhhdmluZyB0eXBlIE1hcFVuaXRTZWxlY3Rpb25FbnVtXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0TWFwVW5pdEVudW1cIl0gPSBcImRlZmF1bHRNYXBVbml0RW51bVwiO1xuICAgIC8vIERQSV9TY2VuZU1vZGVsRGV0YWlsLCBoYXZpbmcgdHlwZSBEZXRhaWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjZW5lTW9kZWxEZXRhaWxcIl0gPSBcInNjZW5lTW9kZWxEZXRhaWxFbnVtXCI7XG4gICAgLy8gRFBJX1NjZW5lTW9kZWxIaXRUeXBlLCBoYXZpbmcgdHlwZSBIaXRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJTY2VuZU1vZGVsSGl0VHlwZVwiXSA9IFwic2NlbmVNb2RlbEhpdFR5cGVcIjtcbiAgICAvLyBEUElfSGl0VGVzdFN0eWxlLCBoYXZpbmcgdHlwZSBIaXRUZXN0U3R5bGVcbiAgICBQYXJhbWV0ZXJJZFtcIkhpdFRlc3RTdHlsZVwiXSA9IFwiaGl0VGVzdFN0eWxlXCI7XG4gICAgLy8gRFBJX01hcmtTdGF0ZSwgaGF2aW5nIHR5cGUgTWFya1N0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrU3RhdGVcIl0gPSBcIm1hcmtTdGF0ZVwiO1xuICAgIC8vIERQSV9TaGVldFR5cGUsIGhhdmluZyB0eXBlIFNoZWV0VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRUeXBlXCJdID0gXCJzaGVldFR5cGVcIjtcbiAgICAvLyBEUElfRHJhZ1NvdXJjZSwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3BUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJEcmFnU291cmNlXCJdID0gXCJkcmFnU291cmNlXCI7XG4gICAgLy8gRFBJX0Ryb3BUYXJnZXQsIGhhdmluZyB0eXBlIERyYWdEcm9wVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRHJvcFRhcmdldFwiXSA9IFwiZHJvcFRhcmdldFwiO1xuICAgIC8vIERQSV9TaGVsZkRyb3BBY3Rpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcEFjdGlvblxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZEcm9wQWN0aW9uXCJdID0gXCJzaGVsZkRyb3BBY3Rpb25cIjtcbiAgICAvLyBEUElfU2hlbGZEcm9wQ29udGV4dCwgaGF2aW5nIHR5cGUgU2hlbGZEcm9wQ29udGV4dFxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZEcm9wQ29udGV4dFwiXSA9IFwic2hlbGZEcm9wQ29udGV4dFwiO1xuICAgIC8vIERQSV9GaWx0ZXJTZWxlY3Rpb25UcmFja2luZywgaGF2aW5nIHR5cGUgU2VsZWN0aW9uVHJhY2tpbmdcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlbGVjdGlvblRyYWNraW5nXCJdID0gXCJmaWx0ZXJTZWxlY3Rpb25UcmFja2luZ1wiO1xuICAgIC8vIERQSV9GaWx0ZXJVcGRhdGVUeXBlLCBoYXZpbmcgdHlwZSBGaWx0ZXJVcGRhdGVUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJVcGRhdGVUeXBlXCJdID0gXCJmaWx0ZXJVcGRhdGVUeXBlXCI7XG4gICAgLy8gRFBJX0ZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGUsIGhhdmluZyB0eXBlIEZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGVcIl0gPSBcImZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGVcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyRXJyb3IsIGhhdmluZyB0eXBlIFBhcmFtZXRlckVycm9yXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJFcnJvclwiXSA9IFwicGFyYW1ldGVyRXJyb3JcIjtcbiAgICAvLyBEUElfU2VsZWN0aW9uVHlwZSwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uVHlwZVwiXSA9IFwic2VsZWN0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9TZWxlY3Rpb25VcGRhdGVUeXBlLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25VcGRhdGVUeXBlXCJdID0gXCJzZWxlY3Rpb25VcGRhdGVUeXBlXCI7XG4gICAgLy8gRFBJX1NlbGVjdE9wdGlvbnMsIGhhdmluZyB0eXBlIFNlbGVjdE9wdGlvbnNcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdE9wdGlvbnNcIl0gPSBcInNlbGVjdE9wdGlvbnNcIjtcbiAgICAvLyBEUElfV2hpdGVzcGFjZVNlbGVjdGlvbkJlaGF2aW9yLCBoYXZpbmcgdHlwZSBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3JcbiAgICBQYXJhbWV0ZXJJZFtcIldoaXRlc3BhY2VTZWxlY3Rpb25CZWhhdmlvclwiXSA9IFwid2hpdGVzcGFjZVNlbGVjdGlvbkJlaGF2aW9yXCI7XG4gICAgLy8gRFBJX0F4aXNPcmllbnRhdGlvbiwgaGF2aW5nIHR5cGUgT3JpZW50YXRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNPcmllbnRhdGlvblwiXSA9IFwiYXhpc09yaWVudGF0aW9uXCI7XG4gICAgLy8gRFBJX0RlY2ltYWxNb2RlLCBoYXZpbmcgdHlwZSBEZWNpbWFsTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiRGVjaW1hbE1vZGVcIl0gPSBcImRlY2ltYWxNb2RlXCI7XG4gICAgLy8gRFBJX0FjdGl2YXRpb25NZXRob2QsIGhhdmluZyB0eXBlIEFjdGl2YXRpb25NZXRob2RcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGl2YXRpb25NZXRob2RcIl0gPSBcImFjdGl2YXRpb25cIjtcbiAgICAvLyBEUElfU291cmNlVHlwZSwgaGF2aW5nIHR5cGUgU291cmNlVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiU291cmNlVHlwZVwiXSA9IFwic291cmNlVHlwZVwiO1xuICAgIC8vIERQSV9PbkNsZWFyLCBoYXZpbmcgdHlwZSBPbkNsZWFyXG4gICAgUGFyYW1ldGVySWRbXCJPbkNsZWFyXCJdID0gXCJvbkNsZWFyXCI7XG4gICAgLy8gRFBJX01lcmdlT3JTcGxpdCwgaGF2aW5nIHR5cGUgTWVyZ2VPclNwbGl0XG4gICAgUGFyYW1ldGVySWRbXCJNZXJnZU9yU3BsaXRcIl0gPSBcIm1lcmdlT3JTcGxpdFwiO1xuICAgIC8vIERQSV9GaWx0ZXJNb2RlLCBoYXZpbmcgdHlwZSBGaWx0ZXJNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJNb2RlXCJdID0gXCJmaWx0ZXJNb2RlXCI7XG4gICAgLy8gRFBJX0ZpbHRlclR5cGUsIGhhdmluZyB0eXBlIEZpbHRlclR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclR5cGVcIl0gPSBcImZpbHRlclR5cGVcIjtcbiAgICAvLyBEUElfWm9uZVR5cGUsIGhhdmluZyB0eXBlIFpvbmVUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJab25lVHlwZVwiXSA9IFwiem9uZVR5cGVcIjtcbiAgICAvLyBEUElfWm9uZUxheW91dFR5cGUsIGhhdmluZyB0eXBlIFpvbmVMYXlvdXRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJab25lTGF5b3V0VHlwZVwiXSA9IFwiem9uZUxheW91dFR5cGVcIjtcbiAgICAvLyBEUElfUXVpY2tUYWJsZUNhbGNUeXBlLCBoYXZpbmcgdHlwZSBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJRdWlja1RhYmxlQ2FsY1R5cGVcIl0gPSBcInF1aWNrVGFibGVDYWxjVHlwZVwiO1xuICAgIC8vIERQSV9UYWJsZUNhbGNDb21tYW5kVHlwZSwgaGF2aW5nIHR5cGUgVGFibGVDYWxjQ29tbWFuZFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ2FsY0NvbW1hbmRUeXBlXCJdID0gXCJ0YWJsZUNhbGNDb21tYW5kVHlwZVwiO1xuICAgIC8vIERQSV9UYWJsZUNhbGNBZGRyZXNzVHlwZSwgaGF2aW5nIHR5cGUgVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZUNhbGNBZGRyZXNzVHlwZVwiXSA9IFwidGFibGVDYWxjQWRkcmVzc1R5cGVcIjtcbiAgICAvLyBEUElfTWFya0xheW91dFByaW1pdGl2ZSwgaGF2aW5nIHR5cGUgUHJpbWl0aXZlXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrTGF5b3V0UHJpbWl0aXZlXCJdID0gXCJtYXJrTGF5b3V0UHJpbWl0aXZlXCI7XG4gICAgLy8gRFBJX01hcmtMYXlvdXRWaXpUeXBlLCBoYXZpbmcgdHlwZSBWaXpUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrTGF5b3V0Vml6VHlwZVwiXSA9IFwibWFya0xheW91dFZpelR5cGVcIjtcbiAgICAvLyBEUElfTWFya0FsaWdubWVudCwgaGF2aW5nIHR5cGUgTWFya0FsaWdubWVudFxuICAgIFBhcmFtZXRlcklkW1wiTWFya0FsaWdubWVudFwiXSA9IFwibWFya0FsaWdubWVudFwiO1xuICAgIC8vIERQSV9Nb2RpZnlab25lWk9yZGVyVHlwZSwgaGF2aW5nIHR5cGUgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJNb2RpZnlab25lWk9yZGVyVHlwZVwiXSA9IFwibW9kaWZ5Wm9uZVpPcmRlclR5cGVcIjtcbiAgICAvLyBEUElfVGV4dFJlZ2lvbkhBbGlnbiwgaGF2aW5nIHR5cGUgVGV4dFJlZ2lvbkhBbGlnblxuICAgIFBhcmFtZXRlcklkW1wiVGV4dFJlZ2lvbkhBbGlnblwiXSA9IFwiaGFsaWduXCI7XG4gICAgLy8gRFBJX1RleHRSZWdpb25WQWxpZ24sIGhhdmluZyB0eXBlIFRleHRSZWdpb25WQWxpZ25cbiAgICBQYXJhbWV0ZXJJZFtcIlRleHRSZWdpb25WQWxpZ25cIl0gPSBcInZhbGlnblwiO1xuICAgIC8vIERQSV9QYXRoRWxlbWVudCwgaGF2aW5nIHR5cGUgUGF0aEVsZW1lbnRcbiAgICBQYXJhbWV0ZXJJZFtcIlBhdGhFbGVtZW50XCJdID0gXCJwYXRoRWxlbWVudFwiO1xuICAgIC8vIERQSV9QYXRoRWxlbWVudHMsIGhhdmluZyB0eXBlIFBhdGhFbGVtZW50W11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhdGhFbGVtZW50c1wiXSA9IFwicGF0aEVsZW1lbnRzXCI7XG4gICAgLy8gRFBJX1JlbmRlck1vZGUsIGhhdmluZyB0eXBlIFJlbmRlck1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIlJlbmRlck1vZGVcIl0gPSBcInJlbmRlck1vZGVcIjtcbiAgICAvLyBEUElfRm9udFN0eWxlLCBoYXZpbmcgdHlwZSBUYWJsZWF1Rm9udFN0eWxlXG4gICAgUGFyYW1ldGVySWRbXCJGb250U3R5bGVcIl0gPSBcImZvbnRTdHlsZVwiO1xuICAgIC8vIERQSV9Gb250V2VpZ2h0LCBoYXZpbmcgdHlwZSBGb250V2VpZ2h0XG4gICAgUGFyYW1ldGVySWRbXCJGb250V2VpZ2h0XCJdID0gXCJmb250V2VpZ2h0XCI7XG4gICAgLy8gRFBJX1RleHREZWNvcmF0aW9uLCBoYXZpbmcgdHlwZSBUZXh0RGVjb3JhdGlvblxuICAgIFBhcmFtZXRlcklkW1wiVGV4dERlY29yYXRpb25cIl0gPSBcInRleHREZWNvcmF0aW9uXCI7XG4gICAgLy8gRFBJX0JvcmRlclN0eWxlLCBoYXZpbmcgdHlwZSBCb3JkZXJTdHlsZVxuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyU3R5bGVcIl0gPSBcImJvcmRlclN0eWxlXCI7XG4gICAgLy8gRFBJX0JvcmRlclN0eWxlVG9wLCBoYXZpbmcgdHlwZSBCb3JkZXJTdHlsZVxuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyU3R5bGVUb3BcIl0gPSBcImJvcmRlclN0eWxlVG9wXCI7XG4gICAgLy8gRFBJX0JvcmRlclN0eWxlUmlnaHQsIGhhdmluZyB0eXBlIEJvcmRlclN0eWxlXG4gICAgUGFyYW1ldGVySWRbXCJCb3JkZXJTdHlsZVJpZ2h0XCJdID0gXCJib3JkZXJTdHlsZVJpZ2h0XCI7XG4gICAgLy8gRFBJX0JvcmRlclN0eWxlQm90dG9tLCBoYXZpbmcgdHlwZSBCb3JkZXJTdHlsZVxuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyU3R5bGVCb3R0b21cIl0gPSBcImJvcmRlclN0eWxlQm90dG9tXCI7XG4gICAgLy8gRFBJX0JvcmRlclN0eWxlTGVmdCwgaGF2aW5nIHR5cGUgQm9yZGVyU3R5bGVcbiAgICBQYXJhbWV0ZXJJZFtcIkJvcmRlclN0eWxlTGVmdFwiXSA9IFwiYm9yZGVyU3R5bGVMZWZ0XCI7XG4gICAgLy8gRFBJX0Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHksIGhhdmluZyB0eXBlIEZsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlcbiAgICBQYXJhbWV0ZXJJZFtcIkZsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlcIl0gPSBcImZsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlcIjtcbiAgICAvLyBEUElfR2VvU2VhcmNoVmlzaWJpbGl0eSwgaGF2aW5nIHR5cGUgR2VvU2VhcmNoVmlzaWJpbGl0eVxuICAgIFBhcmFtZXRlcklkW1wiR2VvU2VhcmNoVmlzaWJpbGl0eVwiXSA9IFwiZ2VvZ3JhcGhpY1NlYXJjaFZpc2liaWxpdHlcIjtcbiAgICAvLyBEUElfTWFwU2NhbGVWaXNpYmlsaXR5LCBoYXZpbmcgdHlwZSBNYXBTY2FsZVZpc2liaWxpdHlcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNjYWxlVmlzaWJpbGl0eVwiXSA9IFwibWFwU2NhbGVWaXNpYmlsaXR5XCI7XG4gICAgLy8gRFBJX1Zpek5hdmlnYXRpb25TZXR0aW5nLCBoYXZpbmcgdHlwZSBWaXpOYXZpZ2F0aW9uU2V0dGluZ1xuICAgIFBhcmFtZXRlcklkW1wiVml6TmF2aWdhdGlvblNldHRpbmdcIl0gPSBcInZpek5hdmlnYXRpb25TZXR0aW5nXCI7XG4gICAgLy8gRFBJX0F1dG9EcmlsbFZpc2liaWxpdHksIGhhdmluZyB0eXBlIEF1dG9EcmlsbFZpc2liaWxpdHlcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9EcmlsbFZpc2liaWxpdHlcIl0gPSBcImF1dG9EcmlsbFZpc2liaWxpdHlcIjtcbiAgICAvLyBEUElfQ2xpZW50VUlNZXRyaWNUeXBlLCBoYXZpbmcgdHlwZSBDbGllbnRVSU1ldHJpY1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNsaWVudFVJTWV0cmljVHlwZVwiXSA9IFwiY2xpZW50VWlNZXRyaWNUeXBlXCI7XG4gICAgLy8gRFBJX1NoZWV0U2Nyb2xsRGlyZWN0aW9uLCBoYXZpbmcgdHlwZSBTaGVldFNjcm9sbERpcmVjdGlvblxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRTY3JvbGxEaXJlY3Rpb25cIl0gPSBcInNoZWV0U2Nyb2xsRGlyZWN0aW9uXCI7XG4gICAgLy8gRFBJX1NpemVNb2RlLCBoYXZpbmcgdHlwZSBTaXplTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZU1vZGVcIl0gPSBcInNpemVNb2RlXCI7XG4gICAgLy8gRFBJX1BlcnNwZWN0aXZlQWdncmVnYXRlLCBoYXZpbmcgdHlwZSBQZXJzcGVjdGl2ZUFnZ3JlZ2F0ZVxuICAgIFBhcmFtZXRlcklkW1wiUGVyc3BlY3RpdmVBZ2dyZWdhdGVcIl0gPSBcInBlcnNwZWN0aXZlQWdncmVnYXRpb25cIjtcbiAgICAvLyBEUElfU3R5bGVBdHRyaWJ1dGUsIGhhdmluZyB0eXBlIFN0eWxlQXR0cmlidXRlXG4gICAgUGFyYW1ldGVySWRbXCJTdHlsZUF0dHJpYnV0ZVwiXSA9IFwic3R5bGVBdHRyaWJ1dGVcIjtcbiAgICAvLyBEUElfU3R5bGVBdHRyaWJ1dGVzLCBoYXZpbmcgdHlwZSBTdHlsZUF0dHJpYnV0ZVtdXG4gICAgUGFyYW1ldGVySWRbXCJTdHlsZUF0dHJpYnV0ZXNcIl0gPSBcInN0eWxlQXR0cmlidXRlc1wiO1xuICAgIC8vIERQSV9TdHlsZUVsZW1lbnQsIGhhdmluZyB0eXBlIFN0eWxlRWxlbWVudFxuICAgIFBhcmFtZXRlcklkW1wiU3R5bGVFbGVtZW50XCJdID0gXCJzdHlsZUVsZW1lbnRcIjtcbiAgICAvLyBEUElfU3R5bGVEYXRhQ2xhc3MsIGhhdmluZyB0eXBlIFN0eWxlRGF0YUNsYXNzXG4gICAgUGFyYW1ldGVySWRbXCJTdHlsZURhdGFDbGFzc1wiXSA9IFwic3R5bGVDbGFzc1wiO1xuICAgIC8vIERQSV9TdHlsZUZpZWxkU2NvcGUsIGhhdmluZyB0eXBlIFN0eWxlRmllbGRTY29wZVxuICAgIFBhcmFtZXRlcklkW1wiU3R5bGVGaWVsZFNjb3BlXCJdID0gXCJzdHlsZVNjb3BlXCI7XG4gICAgLy8gRFBJX0Zvcm1hdENvbnRyb2xUeXBlLCBoYXZpbmcgdHlwZSBGb3JtYXRDb250cm9sVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0Q29udHJvbFR5cGVcIl0gPSBcImZvcm1hdFR5cGVcIjtcbiAgICAvLyBEUElfTGluZUludGVycG9sYXRpb25Nb2RlLCBoYXZpbmcgdHlwZSBMaW5lSW50ZXJwb2xhdGlvbk1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkxpbmVJbnRlcnBvbGF0aW9uTW9kZVwiXSA9IFwibGluZUludGVycG9sYXRpb25Nb2RlXCI7XG4gICAgLy8gRFBJX0xpbmVNYXJrZXJQb3NpdGlvbiwgaGF2aW5nIHR5cGUgTGluZU1hcmtlclBvc2l0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJMaW5lTWFya2VyUG9zaXRpb25cIl0gPSBcImxpbmVNYXJrZXJQb3NpdGlvblwiO1xuICAgIC8vIERQSV9NYXJrZXJzTW9kZSwgaGF2aW5nIHR5cGUgTWFya01hcmtlcnNNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrZXJzTW9kZVwiXSA9IFwibWFya2Vyc01vZGVcIjtcbiAgICAvLyBEUElfQXBwQ29uZmlnRW51bSwgaGF2aW5nIHR5cGUgQXBwQ29uZmlnRW51bVxuICAgIFBhcmFtZXRlcklkW1wiQXBwQ29uZmlnRW51bVwiXSA9IFwiYXBwQ29uZmlnRW51bVwiO1xuICAgIC8vIERQSV9Db2xvclBhbGV0dGVUeXBlLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclBhbGV0dGVUeXBlXCJdID0gXCJjb2xvclBhbGV0dGVUeXBlXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RUeXBlLCBoYXZpbmcgdHlwZSBFeHRyYWN0VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdFR5cGVcIl0gPSBcImV4dHJhY3RUeXBlXCI7XG4gICAgLy8gRFBJX0FjdGl2aXR5RGlzcG9zaXRpb24sIGhhdmluZyB0eXBlIEFjdGl2aXR5RGlzcG9zaXRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGl2aXR5RGlzcG9zaXRpb25cIl0gPSBcImFjdGl2aXR5RGlzcG9zaXRpb25cIjtcbiAgICAvLyBEUElfQWN0aXZpdHlSZXN1bHQsIGhhdmluZyB0eXBlIEFjdGl2aXR5UmVzdWx0XG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpdml0eVJlc3VsdFwiXSA9IFwiYWN0aXZpdHlSZXN1bHRcIjtcbiAgICAvLyBEUElfVG9vbHRpcE1vZGUsIGhhdmluZyB0eXBlIFRvb2x0aXBNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJUb29sdGlwTW9kZVwiXSA9IFwidG9vbHRpcE1vZGVcIjtcbiAgICAvLyBEUElfUnVudGltZU91dHB1dCwgaGF2aW5nIHR5cGUgUnVudGltZU91dHB1dFxuICAgIFBhcmFtZXRlcklkW1wiUnVudGltZU91dHB1dFwiXSA9IFwicnVudGltZU91dHB1dFwiO1xuICAgIC8vIERQSV9BbmFseXRpY3NPYmplY3RUeXBlLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NPYmplY3RUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJBbmFseXRpY3NPYmplY3RUeXBlXCJdID0gXCJhbmFseXRpY3NPYmplY3RUeXBlXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvblN0YXR1cywgaGF2aW5nIHR5cGUgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c1xuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uU3RhdHVzXCJdID0gXCJ1aUF1dG9tYXRpb25TdGF0dXNcIjtcbiAgICAvLyBEUElfVGFibGVWaWV3RGF0YVR5cGUsIGhhdmluZyB0eXBlIFRhYmxlVmlld0RhdGFUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVZpZXdEYXRhVHlwZVwiXSA9IFwidGFibGVWaWV3ZXJEYXRhVHlwZVwiO1xuICAgIC8vIERQSV9Vbml0c0Zvcm1hdCwgaGF2aW5nIHR5cGUgVW5pdHNGb3JtYXRFbnVtXG4gICAgUGFyYW1ldGVySWRbXCJVbml0c0Zvcm1hdFwiXSA9IFwidW5pdHNGb3JtYXRcIjtcbiAgICAvLyBEUElfRmlsdGVyTGltaXRUeXBlLCBoYXZpbmcgdHlwZSBMaW1pdFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckxpbWl0VHlwZVwiXSA9IFwiZmlsdGVyTGltaXRUeXBlXCI7XG4gICAgLy8gRFBJX0Rpc3RyaWJ1dGlvblNlbGVjdGVkVHlwZSwgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGlzdHJpYnV0aW9uU2VsZWN0ZWRUeXBlXCJdID0gXCJkaXN0cmlidXRpb25TZWxlY3RlZFR5cGVcIjtcbiAgICAvLyBEUElfRGlzdHJpYnV0aW9uVHlwZSwgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGlzdHJpYnV0aW9uVHlwZVwiXSA9IFwiZGlzdHJpYnV0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9UcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZSwgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlXCJdID0gXCJ0cmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9UcmFuc2xhdGVkRGlzdHJpYnV0aW9uVHlwZXMsIGhhdmluZyB0eXBlIFRyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zbGF0ZWREaXN0cmlidXRpb25UeXBlc1wiXSA9IFwidHJhbnNsYXRlZERpc3RyaWJ1dGlvblR5cGVzXCI7XG4gICAgLy8gRFBJX1JlZkxpbmVGb3JtdWxhR3JvdXAsIGhhdmluZyB0eXBlIEZvcm11bGFHcm91cFxuICAgIFBhcmFtZXRlcklkW1wiUmVmTGluZUZvcm11bGFHcm91cFwiXSA9IFwicmVmbGluZUZvcm11bGFHcm91cFwiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VMaW5lU2NvcGVUeXBlLCBoYXZpbmcgdHlwZSBTY29wZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVTY29wZVR5cGVcIl0gPSBcInJlZmVyZW5jZUxpbmVTY29wZVR5cGVcIjtcbiAgICAvLyBEUElfU3REZXZUeXBlLCBoYXZpbmcgdHlwZSBTdERldlR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlN0RGV2VHlwZVwiXSA9IFwic3RkZXZUeXBlXCI7XG4gICAgLy8gRFBJX1Nob3dCb3VuZHMsIGhhdmluZyB0eXBlIFNob3dCb3VuZHNcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dCb3VuZHNcIl0gPSBcInNob3dCb3VuZHNcIjtcbiAgICAvLyBEUElfQm94cGxvdFdoaXNrZXJUeXBlLCBoYXZpbmcgdHlwZSBCb3hwbG90V2hpc2tlclR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkJveHBsb3RXaGlza2VyVHlwZVwiXSA9IFwiYm94cGxvdFdoaXNrZXJUeXBlXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVMYWJlbFR5cGUsIGhhdmluZyB0eXBlIExhYmVsVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlTGluZUxhYmVsVHlwZVwiXSA9IFwicmVmZXJlbmNlTGluZUxhYmVsVHlwZVwiO1xuICAgIC8vIERQSV9QYWlyZWRSZWZlcmVuY2VMaW5lTGFiZWxUeXBlLCBoYXZpbmcgdHlwZSBMYWJlbFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlBhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGVcIl0gPSBcInBhaXJlZFJlZmVyZW5jZUxpbmVMYWJlbFR5cGVcIjtcbiAgICAvLyBEUElfQ29uZmlkZW5jZUludGVydmFsU2VsZWN0ZWRTdGF0ZSwgaGF2aW5nIHR5cGUgQ29uZmlkZW5jZUludGVydmFsU3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbmZpZGVuY2VJbnRlcnZhbFNlbGVjdGVkU3RhdGVcIl0gPSBcImNvbmZpZGVuY2VJbnRlcnZhbFNlbGVjdGVkU3RhdGVcIjtcbiAgICAvLyBEUElfQ29uZmlkZW5jZUludGVydmFsU3RhdGUsIGhhdmluZyB0eXBlIENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVwiXSA9IFwiY29uZmlkZW5jZUludGVydmFsU3RhdGVcIjtcbiAgICAvLyBEUElfVHJhbnNsYXRlZExhYmVsVHlwZSwgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZExhYmVsVHlwZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVHJhbnNsYXRlZExhYmVsVHlwZVwiXSA9IFwidHJhbnNsYXRlZExhYmVsVHlwZVwiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VMaW5lVmFsaWRMYWJlbFR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkTGFiZWxUeXBlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVWYWxpZExhYmVsVHlwZXNcIl0gPSBcInZhbGlkUmVmZXJlbmNlTGluZUxhYmVsVHlwZXNcIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlLCBoYXZpbmcgdHlwZSBGb3JtdWxhVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlXCJdID0gXCJyZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVcIjtcbiAgICAvLyBEUElfUGFpcmVkUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlLCBoYXZpbmcgdHlwZSBGb3JtdWxhVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiUGFpcmVkUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlXCJdID0gXCJwYWlyZWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVcIjtcbiAgICAvLyBEUElfVHJhbnNsYXRlZEZvcm11bGFUeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkRm9ybXVsYVR5cGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zbGF0ZWRGb3JtdWxhVHlwZVwiXSA9IFwidHJhbnNsYXRlZEZvcm11bGFUeXBlXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZEZvcm11bGFUeXBlcywgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZEZvcm11bGFUeXBlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVWYWxpZEZvcm11bGFUeXBlc1wiXSA9IFwidmFsaWRSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVzXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVWYWxpZFBhaXJlZEZvcm11bGFUeXBlcywgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZEZvcm11bGFUeXBlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVWYWxpZFBhaXJlZEZvcm11bGFUeXBlc1wiXSA9IFwidmFsaWRSZWZlcmVuY2VMaW5lUGFpcmVkRm9ybXVsYVR5cGVzXCI7XG4gICAgLy8gRFBJX1RyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZSwgaGF2aW5nIHR5cGUgVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc2xhdGVkQ29uZmlkZW5jZUludGVydmFsU3RhdGVcIl0gPSBcInRyYW5zbGF0ZWRDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVwiO1xuICAgIC8vIERQSV9UcmFuc2xhdGVkQ29uZmlkZW5jZUludGVydmFsU3RhdGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkQ29uZmlkZW5jZUludGVydmFsU3RhdGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlc1wiXSA9IFwidHJhbnNsYXRlZENvbmZpZGVuY2VJbnRlcnZhbFN0YXRlc1wiO1xuICAgIC8vIERQSV9UcmFuc2xhdGVkU3REZXZUeXBlLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkU3REZXZUeXBlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUcmFuc2xhdGVkU3REZXZUeXBlXCJdID0gXCJ0cmFuc2xhdGVkU3RkZXZUeXBlXCI7XG4gICAgLy8gRFBJX1RyYW5zbGF0ZWRTdERldlR5cGVzLCBoYXZpbmcgdHlwZSBUcmFuc2xhdGVkU3REZXZUeXBlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zbGF0ZWRTdERldlR5cGVzXCJdID0gXCJ0cmFuc2xhdGVkU3RkZXZUeXBlc1wiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGUsIGhhdmluZyB0eXBlIExPRENhbGNUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGVcIl0gPSBcInJlZmVyZW5jZUxpbmVMb2RDYWxjVHlwZVwiO1xuICAgIC8vIERQSV9WYWx1ZURvbWFpblR5cGUsIGhhdmluZyB0eXBlIFZhbHVlRG9tYWluVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiVmFsdWVEb21haW5UeXBlXCJdID0gXCJ2YWx1ZURvbWFpblR5cGVcIjtcbiAgICAvLyBEUElfVmFsdWVEb21haW5UeXBlcywgaGF2aW5nIHR5cGUgVmFsdWVEb21haW5UeXBlW11cbiAgICBQYXJhbWV0ZXJJZFtcIlZhbHVlRG9tYWluVHlwZXNcIl0gPSBcInZhbHVlRG9tYWluVHlwZXNcIjtcbiAgICAvLyBEUElfT3BlcmF0aW9uVHlwZSwgaGF2aW5nIHR5cGUgT3BlcmF0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiT3BlcmF0aW9uVHlwZVwiXSA9IFwib3BlcmF0aW9uVHlwZVwiO1xuICAgIC8vIERQSV9PcGVyYXRpb25UeXBlcywgaGF2aW5nIHR5cGUgT3BlcmF0aW9uVHlwZVtdXG4gICAgUGFyYW1ldGVySWRbXCJPcGVyYXRpb25UeXBlc1wiXSA9IFwib3BlcmF0aW9uVHlwZXNcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblR5cGVDYXRlZ29yeSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblR5cGVDYXRlZ29yeVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvblR5cGVDYXRlZ29yeVwiXSA9IFwiY29ubmVjdGlvblR5cGVDYXRlZ29yeVwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uVHlwZUdyb3VwLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZUdyb3VwXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uVHlwZUdyb3VwXCJdID0gXCJjb25uZWN0aW9uVHlwZUdyb3VwXCI7XG4gICAgLy8gRFBJX0NvbW1hbmRSZWRpcmVjdFR5cGUsIGhhdmluZyB0eXBlIENvbW1hbmRSZWRpcmVjdFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRSZWRpcmVjdFR5cGVcIl0gPSBcImNvbW1hbmRSZWRpcmVjdFR5cGVcIjtcbiAgICAvLyBEUElfQ3VzdG9tU3BsaXRNb2RlLCBoYXZpbmcgdHlwZSBTcGxpdE1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbVNwbGl0TW9kZVwiXSA9IFwiY3VzdG9tU3BsaXRNb2RlXCI7XG4gICAgLy8gRFBJX0N1c3RvbVNwbGl0U2VwYXJhdG9yVHlwZSwgaGF2aW5nIHR5cGUgU2VwYXJhdG9yVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQ3VzdG9tU3BsaXRTZXBhcmF0b3JUeXBlXCJdID0gXCJjdXN0b21TcGxpdFNlcGFyYXRvclR5cGVcIjtcbiAgICAvLyBEUElfTGV2ZWxTZWxlY3Rpb25TdGF0ZSwgaGF2aW5nIHR5cGUgTGV2ZWxTZWxlY3Rpb25TdGF0ZVxuICAgIFBhcmFtZXRlcklkW1wiTGV2ZWxTZWxlY3Rpb25TdGF0ZVwiXSA9IFwibGV2ZWxTZWxlY3Rpb25TdGF0ZVwiO1xuICAgIC8vIERQSV9MZXZlbFNlbGVjdGlvblN0YXRlcywgaGF2aW5nIHR5cGUgTGV2ZWxTZWxlY3Rpb25TdGF0ZVtdXG4gICAgUGFyYW1ldGVySWRbXCJMZXZlbFNlbGVjdGlvblN0YXRlc1wiXSA9IFwibGV2ZWxTZWxlY3Rpb25TdGF0ZXNcIjtcbiAgICAvLyBEUElfU291cmNlRGVzdEljb24sIGhhdmluZyB0eXBlIFNvdXJjZURlc3RJY29uXG4gICAgUGFyYW1ldGVySWRbXCJTb3VyY2VEZXN0SWNvblwiXSA9IFwic291cmNlRGVzdEljb25cIjtcbiAgICAvLyBEUElfTGVnZW5kTGF5b3V0LCBoYXZpbmcgdHlwZSBMZWdlbmRMYXlvdXRcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2VuZExheW91dFwiXSA9IFwicGFnZUxlZ2VuZExheW91dFwiO1xuICAgIC8vIERQSV9JbWFnZXNFZGl0UmVzdWx0Q29kZSwgaGF2aW5nIHR5cGUgSW1hZ2VzRWRpdFJlc3VsdENvZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlc0VkaXRSZXN1bHRDb2RlXCJdID0gXCJpbWFnZXNFZGl0UmVzdWx0Q29kZVwiO1xuICAgIC8vIERQSV9DYWxjdWxhdGlvbkNvbnRleHQsIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uQ29udGV4dFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VsYXRpb25Db250ZXh0XCJdID0gXCJjYWxjdWxhdGlvbkNvbnRleHRcIjtcbiAgICAvLyBEUElfV29ya2dyb3VwUHVibGlzaEVycm9yVHlwZSwgaGF2aW5nIHR5cGUgV29ya2dyb3VwUHVibGlzaEVycm9yVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiV29ya2dyb3VwUHVibGlzaEVycm9yVHlwZVwiXSA9IFwid29ya2dyb3VwUHVibGlzaEVycm9yVHlwZVwiO1xuICAgIC8vIERQSV9Jc1BhcmFtZXRlciwgaGF2aW5nIHR5cGUgVHJpQm9vbFxuICAgIFBhcmFtZXRlcklkW1wiSXNQYXJhbWV0ZXJcIl0gPSBcImlzUGFyYW1ldGVyXCI7XG4gICAgLy8gRFBJX0FkZHJlc3NpbmdTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZHJlc3NpbmdTdGF0ZVwiXSA9IFwiYWRkcmVzc2luZ1N0YXRlXCI7XG4gICAgLy8gRFBJX0FsbFBhZ2VzU3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJBbGxQYWdlc1N0YXRlXCJdID0gXCJhbGxQYWdlc1N0YXRlXCI7XG4gICAgLy8gRFBJX0F0VGhlTGV2ZWxTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIkF0VGhlTGV2ZWxTdGF0ZVwiXSA9IFwiYXRUaGVMZXZlbFN0YXRlXCI7XG4gICAgLy8gRFBJX0NvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICAgIFBhcmFtZXRlcklkW1wiQ29tcHV0ZUNvbXBvdW5kZWRSYXRlU3RhdGVcIl0gPSBcImNvbXB1dGVDb21wb3VuZGVkUmF0ZVN0YXRlXCI7XG4gICAgLy8gRFBJX0N1c3RvbU51bGxJZkluY29tcGxldGVTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbU51bGxJZkluY29tcGxldGVTdGF0ZVwiXSA9IFwiY3VzdG9tTnVsbElmSW5jb21wbGV0ZVN0YXRlXCI7XG4gICAgLy8gRFBJX05lc3RlZENhbGNzU3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJOZXN0ZWRDYWxjc1N0YXRlXCJdID0gXCJuZXN0ZWRDYWxjc1N0YXRlXCI7XG4gICAgLy8gRFBJX1JhbmtUeXBlU3RhdGUsIGhhdmluZyB0eXBlIFdpZGdldFN0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJSYW5rVHlwZVN0YXRlXCJdID0gXCJyYW5rVHlwZVN0YXRlXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZU9wdGlvbnNTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZU9wdGlvbnNTdGF0ZVwiXSA9IFwicmVmZXJlbmNlT3B0aW9uc1N0YXRlXCI7XG4gICAgLy8gRFBJX1Jlc3RhcnRFdmVyeVN0YXRlLCBoYXZpbmcgdHlwZSBXaWRnZXRTdGF0ZVxuICAgIFBhcmFtZXRlcklkW1wiUmVzdGFydEV2ZXJ5U3RhdGVcIl0gPSBcInJlc3RhcnRFdmVyeVN0YXRlXCI7XG4gICAgLy8gRFBJX1NvcnRBZ2dTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRBZ2dTdGF0ZVwiXSA9IFwic29ydEFnZ1N0YXRlXCI7XG4gICAgLy8gRFBJX1NvcnRTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRTdGF0ZVwiXSA9IFwic29ydFN0YXRlXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsY1R5cGVTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ2FsY1R5cGVTdGF0ZVwiXSA9IFwidGFibGVDYWxjVHlwZVN0YXRlXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsY0Fzc2lzdGFuY2VXaWRnZXRTdGF0ZSwgaGF2aW5nIHR5cGUgV2lkZ2V0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ2FsY0Fzc2lzdGFuY2VXaWRnZXRTdGF0ZVwiXSA9IFwidGFibGVDYWxjQXNzaXN0YW5jZVdpZGdldFN0YXRlXCI7XG4gICAgLy8gRFBJX0NhbGNOZXN0aW5nTGV2ZWwsIGhhdmluZyB0eXBlIENhbGNOZXN0aW5nTGV2ZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGNOZXN0aW5nTGV2ZWxcIl0gPSBcImNhbGNOZXN0aW5nTGV2ZWxcIjtcbiAgICAvLyBEUElfRGF0YVByb3ZpZGVyVHlwZSwgaGF2aW5nIHR5cGUgRGF0YVByb3ZpZGVyVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVByb3ZpZGVyVHlwZVwiXSA9IFwiZGF0YVByb3ZpZGVyVHlwZVwiO1xuICAgIC8vIERQSV9IZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbiwgaGF2aW5nIHR5cGUgSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIkhldXJpc3RpY0NvbW1hbmRSZWludGVycHJldGF0aW9uXCJdID0gXCJoZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvblwiO1xuICAgIC8vIERQSV9FeHRyYWN0UmVmcmVzaFN0YXR1cywgaGF2aW5nIHR5cGUgRXh0cmFjdFJlZnJlc2hTdGF0dXNcbiAgICBQYXJhbWV0ZXJJZFtcIkV4dHJhY3RSZWZyZXNoU3RhdHVzXCJdID0gXCJleHRyYWN0UmVmcmVzaFN0YXR1c1wiO1xuICAgIC8vIERQSV9SaWNoVGV4dEVkaXRvcldpZGdldEtleSwgaGF2aW5nIHR5cGUgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5XCJdID0gXCJyaWNoVGV4dEVkaXRvcldpZGdldEtleVwiO1xuICAgIC8vIERQSV9SaWNoVGV4dFdpZGdldEtleXMsIGhhdmluZyB0eXBlIFJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5W11cbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0V2lkZ2V0S2V5c1wiXSA9IFwicmljaFRleHRXaWRnZXRLZXlzXCI7XG4gICAgLy8gRFBJX1R5cGVPZkZvcm1hdEl0ZW0sIGhhdmluZyB0eXBlIFR5cGVPZkZvcm1hdEl0ZW1cbiAgICBQYXJhbWV0ZXJJZFtcIlR5cGVPZkZvcm1hdEl0ZW1cIl0gPSBcInR5cGVPZkZvcm1hdEl0ZW1cIjtcbiAgICAvLyBEUElfVHlwZU9mRm9ybWF0Q29udGFpbmVyLCBoYXZpbmcgdHlwZSBUeXBlT2ZGb3JtYXRDb250YWluZXJcbiAgICBQYXJhbWV0ZXJJZFtcIlR5cGVPZkZvcm1hdENvbnRhaW5lclwiXSA9IFwidHlwZU9mRm9ybWF0Q29udGFpbmVyXCI7XG4gICAgLy8gRFBJX1R5cGVPZkZvcm1hdENvbnRyb2wsIGhhdmluZyB0eXBlIFR5cGVPZkZvcm1hdENvbnRyb2xcbiAgICBQYXJhbWV0ZXJJZFtcIlR5cGVPZkZvcm1hdENvbnRyb2xcIl0gPSBcInR5cGVPZkZvcm1hdENvbnRyb2xcIjtcbiAgICAvLyBEUElfRm9ybWF0V2lkZ2V0S2V5LCBoYXZpbmcgdHlwZSBGb3JtYXRXaWRnZXRLZXlcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdFdpZGdldEtleVwiXSA9IFwiZm9ybWF0V2lkZ2V0S2V5XCI7XG4gICAgLy8gRFBJX0NvbG9yU3dhdGNoVHlwZSwgaGF2aW5nIHR5cGUgQ29sb3JTd2F0Y2hUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclN3YXRjaFR5cGVcIl0gPSBcImZvcm1hdENvbG9yU3dhdGNoVHlwZVwiO1xuICAgIC8vIERQSV9QaWNrZXJUeXBlLCBoYXZpbmcgdHlwZSBQaWNrZXJUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJQaWNrZXJUeXBlXCJdID0gXCJwaWNrZXJUeXBlXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5UmVmcmVzaFR5cGUsIGhhdmluZyB0eXBlIFJlZnJlc2hUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0SGlzdG9yeVJlZnJlc2hUeXBlXCJdID0gXCJleHRyYWN0SGlzdG9yeVJlZnJlc2hUeXBlRW51bVwiO1xuICAgIC8vIERQSV9BeGlzRm9sZFN0YXRlLCBoYXZpbmcgdHlwZSBBeGlzRm9sZFN0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJBeGlzRm9sZFN0YXRlXCJdID0gXCJheGlzRm9sZFN0YXRlXCI7XG4gICAgLy8gRFBJX1RpY2tNYXJrU3BhY2luZ1VuaXRzLCBoYXZpbmcgdHlwZSBUaWNrU3BhY2luZ1VuaXRzXG4gICAgUGFyYW1ldGVySWRbXCJUaWNrTWFya1NwYWNpbmdVbml0c1wiXSA9IFwidGlja1NwYWNpbmdVbml0c1wiO1xuICAgIC8vIERQSV9UaWNrTWFya1N0YXRlLCBoYXZpbmcgdHlwZSBUaWNrTWFya1N0YXRlXG4gICAgUGFyYW1ldGVySWRbXCJUaWNrTWFya1N0YXRlXCJdID0gXCJ0aWNrTWFya1N0YXRlXCI7XG4gICAgLy8gRFBJX0F4aXNSYW5nZVR5cGUsIGhhdmluZyB0eXBlIEF4aXNSYW5nZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNSYW5nZVR5cGVcIl0gPSBcImF4aXNSYW5nZVR5cGVcIjtcbiAgICAvLyBEUElfU2NhbGVUeXBlLCBoYXZpbmcgdHlwZSBTY2FsZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlNjYWxlVHlwZVwiXSA9IFwic2NhbGVUeXBlXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZERldmljZUxheW91dCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkRGV2aWNlTGF5b3V0XG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmREZXZpY2VMYXlvdXRcIl0gPSBcImRhc2hib2FyZERldmljZUxheW91dFwiO1xuICAgIC8vIERQSV9BY3RpdmF0ZURldmljZUxheW91dCwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkRGV2aWNlTGF5b3V0XG4gICAgUGFyYW1ldGVySWRbXCJBY3RpdmF0ZURldmljZUxheW91dFwiXSA9IFwiYWN0aXZhdGVEZXZpY2VMYXlvdXRcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkRGV2aWNlTGF5b3V0cywgaGF2aW5nIHR5cGUgRGFzaGJvYXJkRGV2aWNlTGF5b3V0W11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZERldmljZUxheW91dHNcIl0gPSBcImRhc2hib2FyZERldmljZUxheW91dHNcIjtcbiAgICAvLyBEUElfRGV2aWNlU291cmNlLCBoYXZpbmcgdHlwZSBEZXZpY2VTb3VyY2VcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZVNvdXJjZVwiXSA9IFwiZGV2aWNlU291cmNlXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZFNpemluZ0RpbWVuc2lvbiwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25cIl0gPSBcImRhc2hib2FyZFNpemluZ0RpbWVuc2lvblwiO1xuICAgIC8vIERQSV9HcmlkT3ZlcmxheU1vZGUsIGhhdmluZyB0eXBlIEdyaWRPdmVybGF5TW9kZVxuICAgIFBhcmFtZXRlcklkW1wiR3JpZE92ZXJsYXlNb2RlXCJdID0gXCJncmlkT3ZlcmxheU1vZGVcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkU2l6aW5nTW9kZSwgaGF2aW5nIHR5cGUgRGFzaGJvYXJkU2l6aW5nTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiRGFzaGJvYXJkU2l6aW5nTW9kZVwiXSA9IFwiZGFzaGJvYXJkU2l6aW5nTW9kZVwiO1xuICAgIC8vIERQSV9GbGlwYm9hcmROYXZUeXBlLCBoYXZpbmcgdHlwZSBGbGlwYm9hcmROYXZUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGbGlwYm9hcmROYXZUeXBlXCJdID0gXCJmbGlwYm9hcmROYXZUeXBlXCI7XG4gICAgLy8gRFBJX0ZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZSwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VcIl0gPSBcImZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZVwiO1xuICAgIC8vIERQSV9TdGFydE9mV2Vla0VudW0sIGhhdmluZyB0eXBlIFNPV1ZhbHVlXG4gICAgUGFyYW1ldGVySWRbXCJTdGFydE9mV2Vla0VudW1cIl0gPSBcInN0YXJ0T2ZXZWVrRW51bVwiO1xuICAgIC8vIERQSV9TdGFydE9mRmlzY2FsWWVhciwgaGF2aW5nIHR5cGUgRllTVmFsdWVzXG4gICAgUGFyYW1ldGVySWRbXCJTdGFydE9mRmlzY2FsWWVhclwiXSA9IFwic3RhcnRPZkZpc2NhbFllYXJcIjtcbiAgICAvLyBEUElfVG90YWxzSW5jbHVzaW9uVmFsdWUsIGhhdmluZyB0eXBlIFRvdGFsc0luY2x1c2lvblxuICAgIFBhcmFtZXRlcklkW1wiVG90YWxzSW5jbHVzaW9uVmFsdWVcIl0gPSBcInRvdGFsc0luY2x1c2lvblZhbHVlXCI7XG4gICAgLy8gRFBJX0Zvcm1hdENvZGUsIGhhdmluZyB0eXBlIEZvcm1hdENvZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdENvZGVcIl0gPSBcImZvcm1hdENvZGVcIjtcbiAgICAvLyBEUElfRmluZFR5cGUsIGhhdmluZyB0eXBlIEZpbmRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGaW5kVHlwZVwiXSA9IFwiZmluZFR5cGVcIjtcbiAgICAvLyBEUElfUGVyc3BlY3RpdmVUeXBlLCBoYXZpbmcgdHlwZSBQZXJzcGVjdGl2ZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlBlcnNwZWN0aXZlVHlwZVwiXSA9IFwicGVyc3BlY3RpdmVUeXBlXCI7XG4gICAgLy8gRFBJX0dlb21ldHJ5VHlwZSwgaGF2aW5nIHR5cGUgR2VvbWV0cnlUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJHZW9tZXRyeVR5cGVcIl0gPSBcImdlb21ldHJ5VHlwZVwiO1xuICAgIC8vIERQSV9QYW5lTGFiZWxDb21wb3NpdGlvbiwgaGF2aW5nIHR5cGUgUGFuZUxhYmVsQ29tcG9zaXRpb25cbiAgICBQYXJhbWV0ZXJJZFtcIlBhbmVMYWJlbENvbXBvc2l0aW9uXCJdID0gXCJwYW5lTGFiZWxDb21wb3NpdGlvblwiO1xuICAgIC8vIERQSV9XYXJuaW5nVHlwZSwgaGF2aW5nIHR5cGUgV2FybmluZ1R5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIldhcm5pbmdUeXBlXCJdID0gXCJ3YXJuaW5nVHlwZVwiO1xuICAgIC8vIERQSV9VSU1vZGUsIGhhdmluZyB0eXBlIFdvcmtib29rVUlNb2RlXG4gICAgUGFyYW1ldGVySWRbXCJVSU1vZGVcIl0gPSBcInVpTW9kZVwiO1xuICAgIC8vIERQSV9NZW51SXRlbUlkLCBoYXZpbmcgdHlwZSBUb3BMZXZlbE1lbnVJdGVtXG4gICAgUGFyYW1ldGVySWRbXCJNZW51SXRlbUlkXCJdID0gXCJtZW51SXRlbUlkXCI7XG4gICAgLy8gRFBJX0NvbW1hbmRSZXR1cm4sIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZFJldHVyblwiXSA9IFwiY29tbWFuZFJldHVyblwiO1xuICAgIC8vIERQSV9MZWdhY3lQcmVzTW9kZWwsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiTGVnYWN5UHJlc01vZGVsXCJdID0gXCJsZWdhY3lQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUHJlc2VudGF0aW9uTW9kZWwsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiUHJlc2VudGF0aW9uTW9kZWxcIl0gPSBcInByZXNNb2RlbEhvbGRlclwiO1xuICAgIC8vIERQSV9FdmVudCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJFdmVudFwiXSA9IFwiZXZlbnRDb250YWluZXJcIjtcbiAgICAvLyBEUElfTGluZVN0eWxlLCBoYXZpbmcgdHlwZSBBcnJheVxuICAgIFBhcmFtZXRlcklkW1wiTGluZVN0eWxlXCJdID0gXCJsaW5lU3R5bGVcIjtcbiAgICAvLyBEUElfU3Ryb2tlU3R5bGUsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJTdHJva2VTdHlsZVwiXSA9IFwic3Ryb2tlU3R5bGVcIjtcbiAgICAvLyBEUElfU2NoZW1hLCBoYXZpbmcgdHlwZSBBcnJheVxuICAgIFBhcmFtZXRlcklkW1wiU2NoZW1hXCJdID0gXCJzY2hlbWFcIjtcbiAgICAvLyBEUElfU3RhcnRUdXBsZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgICBQYXJhbWV0ZXJJZFtcIlN0YXJ0VHVwbGVcIl0gPSBcInN0YXJ0VHVwbGVcIjtcbiAgICAvLyBEUElfRW5kVHVwbGUsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJFbmRUdXBsZVwiXSA9IFwiZW5kVHVwbGVcIjtcbiAgICAvLyBEUElfVHVwbGUsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJUdXBsZVwiXSA9IFwidHVwbGVcIjtcbiAgICAvLyBEUElfVHVwbGVzLCBoYXZpbmcgdHlwZSBBcnJheVtdXG4gICAgUGFyYW1ldGVySWRbXCJUdXBsZXNcIl0gPSBcInR1cGxlc1wiO1xuICAgIC8vIERQSV9DdXN0b21Eb21haW5UdXBsZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbURvbWFpblR1cGxlc1wiXSA9IFwiY3VzdG9tRG9tYWluVHVwbGVzXCI7XG4gICAgLy8gRFBJX1VwZGF0ZWRUdXBsZXMsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgICBQYXJhbWV0ZXJJZFtcIlVwZGF0ZWRUdXBsZXNcIl0gPSBcInVwZGF0ZWRUdXBsZXNcIjtcbiAgICAvLyBEUElfVGFibGUsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVwiXSA9IFwidGFibGVcIjtcbiAgICAvLyBEUElfQWxpYXNlZFZhbHVlLCBoYXZpbmcgdHlwZSBBcnJheVxuICAgIFBhcmFtZXRlcklkW1wiQWxpYXNlZFZhbHVlXCJdID0gXCJ2YWx1ZUFsaWFzXCI7XG4gICAgLy8gRFBJX0ZpcnN0QWxpYXNlZFZhbHVlLCBoYXZpbmcgdHlwZSBBcnJheVxuICAgIFBhcmFtZXRlcklkW1wiRmlyc3RBbGlhc2VkVmFsdWVcIl0gPSBcImZpcnN0QWxpc2VkVmFsdWVcIjtcbiAgICAvLyBEUElfTWF4aW11bVJhbmdlLCBoYXZpbmcgdHlwZSBBcnJheVxuICAgIFBhcmFtZXRlcklkW1wiTWF4aW11bVJhbmdlXCJdID0gXCJtYXhpbXVtUmFuZ2VWYWx1ZVwiO1xuICAgIC8vIERQSV9NaW5pbXVtUmFuZ2UsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJNaW5pbXVtUmFuZ2VcIl0gPSBcIm1pbmltdW1SYW5nZVZhbHVlXCI7XG4gICAgLy8gRFBJX1NlY29uZEFsaWFzZWRWYWx1ZSwgaGF2aW5nIHR5cGUgQXJyYXlcbiAgICBQYXJhbWV0ZXJJZFtcIlNlY29uZEFsaWFzZWRWYWx1ZVwiXSA9IFwic2Vjb25kQWxpc2VkVmFsdWVcIjtcbiAgICAvLyBEUElfQWxpYXNlZFNlbGVjdGlvbkxpc3QsIGhhdmluZyB0eXBlIEFycmF5W11cbiAgICBQYXJhbWV0ZXJJZFtcIkFsaWFzZWRTZWxlY3Rpb25MaXN0XCJdID0gXCJhbGlhc2VkU2VsZWN0aW9uTGlzdFwiO1xuICAgIC8vIERQSV9BbGlhc2VkVmFsdWVzLCBoYXZpbmcgdHlwZSBBcnJheVtdXG4gICAgUGFyYW1ldGVySWRbXCJBbGlhc2VkVmFsdWVzXCJdID0gXCJ2YWx1ZXNBbGlhc2VzXCI7XG4gICAgLy8gRFBJX1ZlcmJvc2VBbGlhc2VkUmFuZ2VNYXgsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJWZXJib3NlQWxpYXNlZFJhbmdlTWF4XCJdID0gXCJ2ZXJib3NlQWxpYXNlZFJhbmdlTWF4XCI7XG4gICAgLy8gRFBJX1ZlcmJvc2VBbGlhc2VkVmFsdWUsIGhhdmluZyB0eXBlIEFycmF5XG4gICAgUGFyYW1ldGVySWRbXCJWZXJib3NlQWxpYXNlZFZhbHVlXCJdID0gXCJ2ZXJib3NlQWxpYXNlZFZhbHVlXCI7XG4gICAgLy8gRFBJX011bHRpQnVja2V0LCBoYXZpbmcgdHlwZSBNdWx0aUJ1Y2tldFxuICAgIFBhcmFtZXRlcklkW1wiTXVsdGlCdWNrZXRcIl0gPSBcInhWYWx1ZXNcIjtcbiAgICAvLyBEUElfUGFnZU5hbWUsIGhhdmluZyB0eXBlIFBhZ2VOYW1lXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlTmFtZVwiXSA9IFwicGFnZU5hbWVcIjtcbiAgICAvLyBEUElfU2VsZWN0b3IsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0b3JcIl0gPSBcInNlbGVjdG9yXCI7XG4gICAgLy8gRFBJX1BhbmVJZCwgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJQYW5lSWRcIl0gPSBcInBhbmVJZFwiO1xuICAgIC8vIERQSV9QYW5lSWRzLCBoYXZpbmcgdHlwZSBQYW5lSWRbXVxuICAgIFBhcmFtZXRlcklkW1wiUGFuZUlkc1wiXSA9IFwicGFuZUlkc1wiO1xuICAgIC8vIERQSV9JbWFnZVJlZ2lvbkluZm8sIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VSZWdpb25JbmZvXCJdID0gXCJ2aXpSZWdpb25SZWN0XCI7XG4gICAgLy8gRFBJX0ltYWdlUmVnaW9uSW5mb0xpc3QsIGhhdmluZyB0eXBlIG9iamVjdFtdXG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZVJlZ2lvbkluZm9MaXN0XCJdID0gXCJ2aXpSZWdpb25SZWN0TGlzdFwiO1xuICAgIC8vIERQSV9WaXN1YWxJRCwgaGF2aW5nIHR5cGUgVmlzdWFsSURcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbElEXCJdID0gXCJ2aXN1YWxJZFwiO1xuICAgIC8vIERQSV9WaXN1YWxJRFBNLCBoYXZpbmcgdHlwZSBWaXN1YWxJRFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVmlzdWFsSURQTVwiXSA9IFwidmlzdWFsSWRQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfSW52YWxpZFNoZWV0cywgaGF2aW5nIHR5cGUgVmlzdWFsSURQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSW52YWxpZFNoZWV0c1wiXSA9IFwiaW52YWxpZFNoZWV0c1wiO1xuICAgIC8vIERQSV9WaXN1YWxJRFBNcywgaGF2aW5nIHR5cGUgVmlzdWFsSURQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVmlzdWFsSURQTXNcIl0gPSBcInZpc3VhbElkc1wiO1xuICAgIC8vIERQSV9TaGVldFBhdGhQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldFBhdGhQTVwiXSA9IFwic2hlZXRQYXRoXCI7XG4gICAgLy8gRFBJX0NhcHR1cmVkU2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0dXJlZFNoZWV0UE1cIl0gPSBcImNhcHR1cmVkU2hlZXRQbVwiO1xuICAgIC8vIERQSV9DdXJyZW50U2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdXJyZW50U2hlZXRQTVwiXSA9IFwiY3VycmVudFNoZWV0UG1cIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkUE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGFzaGJvYXJkUE1cIl0gPSBcImRhc2hib2FyZFBtXCI7XG4gICAgLy8gRFBJX05ld1NoZWV0UE0sIGhhdmluZyB0eXBlIFNoZWV0UGF0aFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTmV3U2hlZXRQTVwiXSA9IFwibmV3U2hlZXRQbVwiO1xuICAgIC8vIERQSV9TaGVldE5hbWVQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldE5hbWVQTVwiXSA9IFwic2hlZXROYW1lUG1cIjtcbiAgICAvLyBEUElfU2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldFBNXCJdID0gXCJzaGVldFBtXCI7XG4gICAgLy8gRFBJX1NvdXJjZURhc2hib2FyZFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNvdXJjZURhc2hib2FyZFBNXCJdID0gXCJzb3VyY2VEYXNoYm9hcmRQbVwiO1xuICAgIC8vIERQSV9Tb3VyY2VTaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNvdXJjZVNoZWV0UE1cIl0gPSBcInNvdXJjZVNoZWV0UG1cIjtcbiAgICAvLyBEUElfVGFyZ2V0U2hlZXRQTSwgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYXJnZXRTaGVldFBNXCJdID0gXCJ0YXJnZXRTaGVldFBtXCI7XG4gICAgLy8gRFBJX1dvcmtzaGVldFBNLCBoYXZpbmcgdHlwZSBTaGVldFBhdGhQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIldvcmtzaGVldFBNXCJdID0gXCJ3b3Jrc2hlZXRQbVwiO1xuICAgIC8vIERQSV9Nb2RpZmllZFNoZWV0cywgaGF2aW5nIHR5cGUgU2hlZXRQYXRoUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIk1vZGlmaWVkU2hlZXRzXCJdID0gXCJtb2RpZmllZFNoZWV0c1wiO1xuICAgIC8vIERQSV9EYXRhQ29sdW1uLCBoYXZpbmcgdHlwZSBEYXRhQ29sdW1uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhQ29sdW1uXCJdID0gXCJkYXRhQ29sdW1uXCI7XG4gICAgLy8gRFBJX0RhdGFDb2x1bW5zLCBoYXZpbmcgdHlwZSBEYXRhQ29sdW1uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFDb2x1bW5zXCJdID0gXCJkYXRhQ29sdW1uc1wiO1xuICAgIC8vIERQSV9BZGRyZXNzZXMsIGhhdmluZyB0eXBlIERhdGFDb2x1bW5QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQWRkcmVzc2VzXCJdID0gXCJhZGRyZXNzZXNcIjtcbiAgICAvLyBEUElfRW5jb2RpbmdDb2x1bW5zLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFDb2x1bW5QcmVzTW9kZWwpXG4gICAgUGFyYW1ldGVySWRbXCJFbmNvZGluZ0NvbHVtbnNcIl0gPSBcImVuY29kaW5nQ29sdW1uc1wiO1xuICAgIC8vIERQSV9UZXh0UnVuQ29sdW1ucywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBEYXRhQ29sdW1uUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiVGV4dFJ1bkNvbHVtbnNcIl0gPSBcInRleHRSdW5Db2x1bW5zXCI7XG4gICAgLy8gRFBJX1RleHRTdHlsZUNvbHVtbnMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgRGF0YUNvbHVtblByZXNNb2RlbClcbiAgICBQYXJhbWV0ZXJJZFtcIlRleHRTdHlsZUNvbHVtbnNcIl0gPSBcInRleHRTdHlsZUNvbHVtbnNcIjtcbiAgICAvLyBEUElfTmFtZWREYXRhQ29sdW1uLCBoYXZpbmcgdHlwZSBOYW1lZERhdGFDb2x1bW5QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk5hbWVkRGF0YUNvbHVtblwiXSA9IFwibmFtZWREYXRhQ29sdW1uXCI7XG4gICAgLy8gRFBJX05hbWVkRGF0YUNvbHVtbnMsIGhhdmluZyB0eXBlIE5hbWVkRGF0YUNvbHVtblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJOYW1lZERhdGFDb2x1bW5zXCJdID0gXCJuYW1lZERhdGFDb2x1bW5zXCI7XG4gICAgLy8gRFBJX0RhdGFUYWJsZSwgaGF2aW5nIHR5cGUgRGF0YVRhYmxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhVGFibGVcIl0gPSBcImRhdGFUYWJsZVwiO1xuICAgIC8vIERQSV9BY3Rpb25TcGVjaWZpY2F0aW9uLCBoYXZpbmcgdHlwZSBOb25lXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25TcGVjaWZpY2F0aW9uXCJdID0gXCJhY3Rpb25TcGVjXCI7XG4gICAgLy8gRFBJX0NvbHVtbiwgaGF2aW5nIHR5cGUgQ29sdW1uXG4gICAgUGFyYW1ldGVySWRbXCJDb2x1bW5cIl0gPSBcImNvbHVtbkNvbnRleHRcIjtcbiAgICAvLyBEUElfU2V0RnVuY3Rpb24sIGhhdmluZyB0eXBlIFNldEZ1bmN0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJTZXRGdW5jdGlvblwiXSA9IFwic2V0RnVuY3Rpb25cIjtcbiAgICAvLyBEUElfU2V0RnVuY3Rpb25zLCBoYXZpbmcgdHlwZSBTZXRGdW5jdGlvbnNcbiAgICBQYXJhbWV0ZXJJZFtcIlNldEZ1bmN0aW9uc1wiXSA9IFwic2V0RnVuY3Rpb25zXCI7XG4gICAgLy8gRFBJX1Zpc3VhbFByb2ZpbGVTaG93TWUsIGhhdmluZyB0eXBlIFZpc3VhbFByb2ZpbGVTaG93TWVcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbFByb2ZpbGVTaG93TWVcIl0gPSBcInZwc21cIjtcbiAgICAvLyBEUElfRGF0YVNvdXJjZVB0ciwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZVB0clwiXSA9IFwiZGF0YXNvdXJjZVB0clwiO1xuICAgIC8vIERQSV9Xb3JrZ3JvdXBDb25uZWN0aW9uLCBoYXZpbmcgdHlwZSBXb3JrZ3JvdXBDb25uZWN0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJXb3JrZ3JvdXBDb25uZWN0aW9uXCJdID0gXCJ3b3JrZ3JvdXBDb25uZWN0aW9uXCI7XG4gICAgLy8gRFBJX0F1dGhlbnRpY2F0b3IsIGhhdmluZyB0eXBlIEF1dGhlbnRpY2F0b3JSYXdQdHJcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dGhlbnRpY2F0b3JcIl0gPSBcImF1dGhlbnRpY2F0b3JcIjtcbiAgICAvLyBEUElfVXBncmFkZUF0dHIsIGhhdmluZyB0eXBlIFVwZ3JhZGVBdHRyXG4gICAgUGFyYW1ldGVySWRbXCJVcGdyYWRlQXR0clwiXSA9IFwidXBncmFkZUF0dHJcIjtcbiAgICAvLyBEUElfRXh0cmFjdEF0dHIsIGhhdmluZyB0eXBlIEV4dHJhY3RBdHRyXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0QXR0clwiXSA9IFwiZXh0cmFjdEF0dHJcIjtcbiAgICAvLyBEUElfUmVmcmVzaEF0dHIsIGhhdmluZyB0eXBlIFJlZnJlc2hBdHRyXG4gICAgUGFyYW1ldGVySWRbXCJSZWZyZXNoQXR0clwiXSA9IFwicmVmcmVzaEF0dHJcIjtcbiAgICAvLyBEUElfQ29udGV4dFNwZWNpZmljYXRpb24sIGhhdmluZyB0eXBlIENvbnRleHRTcGVjaWZpY2F0aW9uXG4gICAgUGFyYW1ldGVySWRbXCJDb250ZXh0U3BlY2lmaWNhdGlvblwiXSA9IFwiY29udGV4dFNwZWNpZmljYXRpb25cIjtcbiAgICAvLyBEUElfU2NoZW1hVmlld2VyU2VsZWN0b3IsIGhhdmluZyB0eXBlIFNjaGVtYVZpZXdlclNlbGVjdG9yUHRyXG4gICAgUGFyYW1ldGVySWRbXCJTY2hlbWFWaWV3ZXJTZWxlY3RvclwiXSA9IFwic2NoZW1hVmlld2VyU2VsZWN0b3JcIjtcbiAgICAvLyBEUElfQnVja2V0cywgaGF2aW5nIHR5cGUgQnVja2V0c1xuICAgIFBhcmFtZXRlcklkW1wiQnVja2V0c1wiXSA9IFwiYnVja2V0c1wiO1xuICAgIC8vIERQSV9MZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgTXVsdGlCdWNrZXRzXG4gICAgUGFyYW1ldGVySWRbXCJMZWdlbmRJdGVtc1wiXSA9IFwibGVnZW5kSXRlbXNcIjtcbiAgICAvLyBEUElfTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgTXVsdGlCdWNrZXRcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2VuZEl0ZW1cIl0gPSBcImxlZ2VuZEl0ZW1cIjtcbiAgICAvLyBEUElfU291cmNlSXRlbSwgaGF2aW5nIHR5cGUgTXVsdGlCdWNrZXRcbiAgICBQYXJhbWV0ZXJJZFtcIlNvdXJjZUl0ZW1cIl0gPSBcInNvdXJjZUl0ZW1cIjtcbiAgICAvLyBEUElfRGVzdEl0ZW0sIGhhdmluZyB0eXBlIE11bHRpQnVja2V0XG4gICAgUGFyYW1ldGVySWRbXCJEZXN0SXRlbVwiXSA9IFwiZGVzdEl0ZW1cIjtcbiAgICAvLyBEUElfSVF1aWNrU29ydFN0YXRlLCBoYXZpbmcgdHlwZSBJUXVpY2tTb3J0U3RhdGVcbiAgICBQYXJhbWV0ZXJJZFtcIklRdWlja1NvcnRTdGF0ZVwiXSA9IFwicXVpY2tTb3J0U3RhdGVcIjtcbiAgICAvLyBEUElfQXBwQnVpbGREYXRlLCBoYXZpbmcgdHlwZSBEYXRlVGltZVxuICAgIFBhcmFtZXRlcklkW1wiQXBwQnVpbGREYXRlXCJdID0gXCJhcHBCdWlsZERhdGVcIjtcbiAgICAvLyBEUElfRm9yZWNhc3REYXRlUmFuZ2VFbmQsIGhhdmluZyB0eXBlIERhdGVUaW1lXG4gICAgUGFyYW1ldGVySWRbXCJGb3JlY2FzdERhdGVSYW5nZUVuZFwiXSA9IFwiZm9yZWNhc3REYXRlUmFuZ2VFbmRcIjtcbiAgICAvLyBEUElfRm9yZWNhc3REYXRlUmFuZ2VTdGFydCwgaGF2aW5nIHR5cGUgRGF0ZVRpbWVcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0RGF0ZVJhbmdlU3RhcnRcIl0gPSBcImZvcmVjYXN0RGF0ZVJhbmdlU3RhcnRcIjtcbiAgICAvLyBEUElfTGFzdE1vZGlmaWVkLCBoYXZpbmcgdHlwZSBEYXRlVGltZVxuICAgIFBhcmFtZXRlcklkW1wiTGFzdE1vZGlmaWVkXCJdID0gXCJsYXN0TW9kaWZpZWRcIjtcbiAgICAvLyBEUElfU2VhcmNoRG9tYWluUHRyLCBoYXZpbmcgdHlwZSBNdWx0aURvbWFpblxuICAgIFBhcmFtZXRlcklkW1wiU2VhcmNoRG9tYWluUHRyXCJdID0gXCJzZWFyY2hEb21haW5QdHJcIjtcbiAgICAvLyBEUElfUmVzdWx0c0RvbWFpblB0ciwgaGF2aW5nIHR5cGUgTXVsdGlEb21haW5cbiAgICBQYXJhbWV0ZXJJZFtcIlJlc3VsdHNEb21haW5QdHJcIl0gPSBcInJlc3VsdHNEb21haW5QdHJcIjtcbiAgICAvLyBEUElfQWN0aW9ucywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25zXCJdID0gXCJhY3Rpb25zXCI7XG4gICAgLy8gRFBJX1NSQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiU1JDb21tYW5kc1wiXSA9IFwic2VsZWN0aW9uUmVsYXhhdGlvbkNvbW1hbmRzXCI7XG4gICAgLy8gRFBJX0NvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRzXCJdID0gXCJjb21tYW5kc1wiO1xuICAgIC8vIERQSV9EYXRhVHlwZUNvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFUeXBlQ29tbWFuZHNcIl0gPSBcImRhdGF0eXBlQ29tbWFuZHNcIjtcbiAgICAvLyBEUElfTXVsdGlTZWxlY3RDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJNdWx0aVNlbGVjdENvbW1hbmRzXCJdID0gXCJtdWx0aXNlbGVjdENvbW1hbmRzXCI7XG4gICAgLy8gRFBJX05vblZpekNvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIk5vblZpekNvbW1hbmRzXCJdID0gXCJub25WaXpDb21tYW5kc1wiO1xuICAgIC8vIERQSV9RdWlja0ZpbHRlckNvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIlF1aWNrRmlsdGVyQ29tbWFuZHNcIl0gPSBcInF1aWNrRmlsdGVyQ29tbWFuZHNcIjtcbiAgICAvLyBEUElfU2hvd01lQ29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiU2hvd01lQ29tbWFuZHNcIl0gPSBcInNob3dNZUNvbW1hbmRzXCI7XG4gICAgLy8gRFBJX1NvcnRJbmRpY2F0b3JNZW51LCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRJbmRpY2F0b3JNZW51XCJdID0gXCJzb3J0SW5kaWNhdG9yTWVudVwiO1xuICAgIC8vIERQSV9TdGFuZGFyZENvbW1hbmRzLCBoYXZpbmcgdHlwZSBvYmplY3RcbiAgICBQYXJhbWV0ZXJJZFtcIlN0YW5kYXJkQ29tbWFuZHNcIl0gPSBcInN0YW5kYXJkQ29tbWFuZHNcIjtcbiAgICAvLyBEUElfVml6Q29tbWFuZHMsIGhhdmluZyB0eXBlIG9iamVjdFxuICAgIFBhcmFtZXRlcklkW1wiVml6Q29tbWFuZHNcIl0gPSBcInZpekNvbW1hbmRzXCI7XG4gICAgLy8gRFBJX1pvbmVDaHJvbWVDb21tYW5kcywgaGF2aW5nIHR5cGUgb2JqZWN0XG4gICAgUGFyYW1ldGVySWRbXCJab25lQ2hyb21lQ29tbWFuZHNcIl0gPSBcInpvbmVDaHJvbWVDb21tYW5kc1wiO1xuICAgIC8vIERQSV9Db21tYW5kSXRlbSwgaGF2aW5nIHR5cGUgQ29tbWFuZHNJdGVtXG4gICAgUGFyYW1ldGVySWRbXCJDb21tYW5kSXRlbVwiXSA9IFwiY29tbWFuZEl0ZW1cIjtcbiAgICAvLyBEUElfQ29tbWFuZEl0ZW1zLCBoYXZpbmcgdHlwZSBDb21tYW5kc0l0ZW1bXVxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZEl0ZW1zXCJdID0gXCJjb21tYW5kSXRlbXNcIjtcbiAgICAvLyBEUElfQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRcIl0gPSBcInNpbXBsZUNvbW1hbmRNb2RlbFwiO1xuICAgIC8vIERQSV9BZGRDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkQ29tbWFuZFwiXSA9IFwiYWRkU2ltcGxlQ29tbWFuZE1vZGVsXCI7XG4gICAgLy8gRFBJX1JlbW92ZUNvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSZW1vdmVDb21tYW5kXCJdID0gXCJyZW1vdmVTaW1wbGVDb21tYW5kTW9kZWxcIjtcbiAgICAvLyBEUElfQWNjZXB0Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFjY2VwdENvbW1hbmRcIl0gPSBcImFjY2VwdFNpbXBsZUNvbW1hbmRNb2RlbFwiO1xuICAgIC8vIERQSV9EZWNsaW5lQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRlY2xpbmVDb21tYW5kXCJdID0gXCJkZWNsaW5lU2ltcGxlQ29tbWFuZE1vZGVsXCI7XG4gICAgLy8gRFBJX0Ryb3BDb21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJvcENvbW1hbmRcIl0gPSBcImRyb3BDb21tYW5kTW9kZWxcIjtcbiAgICAvLyBEUElfRWRpdENhcHRpb25Db21tYW5kLCBoYXZpbmcgdHlwZSBTaW1wbGVDb21tYW5kc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdENhcHRpb25Db21tYW5kXCJdID0gXCJlZGl0Q2FwdGlvbkNvbW1hbmRNb2RlbFwiO1xuICAgIC8vIERQSV9Gb250Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvbnRDb21tYW5kXCJdID0gXCJmb250Q29tbWFuZE1vZGVsXCI7XG4gICAgLy8gRFBJX0xpbmVTdHlsZUNvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJMaW5lU3R5bGVDb21tYW5kXCJdID0gXCJsaW5lU3R5bGVDb21tYW5kTW9kZWxcIjtcbiAgICAvLyBEUElfRm9ybWF0Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdENvbW1hbmRcIl0gPSBcImZvcm1hdENvbW1hbmRNb2RlbFwiO1xuICAgIC8vIERQSV9EZXN0cnVjdG9yQ29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRlc3RydWN0b3JDb21tYW5kXCJdID0gXCJkZXN0cnVjdG9yQ29tbWFuZFwiO1xuICAgIC8vIERQSV9DbGVhckZvcm1hdENvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDbGVhckZvcm1hdENvbW1hbmRcIl0gPSBcImNsZWFyRm9ybWF0Q29tbWFuZE1vZGVsXCI7XG4gICAgLy8gRFBJX1JpY2hUZXh0Q29tbWFuZCwgaGF2aW5nIHR5cGUgU2ltcGxlQ29tbWFuZHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0Q29tbWFuZFwiXSA9IFwicmljaFRleHRDb21tYW5kTW9kZWxcIjtcbiAgICAvLyBEUElfU29ydEluZGljYXRvckNvbW1hbmQsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTb3J0SW5kaWNhdG9yQ29tbWFuZFwiXSA9IFwic29ydEluZGljYXRvckNvbW1hbmRcIjtcbiAgICAvLyBEUElfQ29tbWFuZExpc3QsIGhhdmluZyB0eXBlIFNpbXBsZUNvbW1hbmRzUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRMaXN0XCJdID0gXCJjb21tYW5kTGlzdFwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJDdHJsLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJDdHJsUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJDdHJsXCJdID0gXCJwYXJhbWV0ZXJDb250cm9sXCI7XG4gICAgLy8gRFBJX1BhcmFtZXRlckN0cmxzLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJDdHJsUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckN0cmxzXCJdID0gXCJwYXJhbWV0ZXJDb250cm9sc1wiO1xuICAgIC8vIERQSV9QYWdlTW9kZWwsIGhhdmluZyB0eXBlIFBhZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VNb2RlbFwiXSA9IFwicGFnZU1vZGVsXCI7XG4gICAgLy8gRFBJX1BhZ2VUcmFpbE9wdGlvbnMsIGhhdmluZyB0eXBlIFBhZ2VUcmFpbE9wdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VUcmFpbE9wdGlvbnNcIl0gPSBcInBhZ2VUcmFpbE9wdGlvbnNcIjtcbiAgICAvLyBEUElfRmllbGQsIGhhdmluZyB0eXBlIEZpZWxkUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFwiXSA9IFwiZmllbGRcIjtcbiAgICAvLyBEUElfRmllbGRMaXN0LCBoYXZpbmcgdHlwZSBGaWVsZFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZExpc3RcIl0gPSBcImZpZWxkTGlzdFwiO1xuICAgIC8vIERQSV9GaWVsZENvbHVtbiwgaGF2aW5nIHR5cGUgRmllbGRDb2x1bW5QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkQ29sdW1uXCJdID0gXCJjb2x1bW5cIjtcbiAgICAvLyBEUElfRmllbGRDb2x1bW5MaXN0LCBoYXZpbmcgdHlwZSBGaWVsZENvbHVtblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZENvbHVtbkxpc3RcIl0gPSBcImNvbHVtbkxpc3RcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlclwiXSA9IFwicGFyYW1ldGVyXCI7XG4gICAgLy8gRFBJX0RpbWVuc2lvbiwgaGF2aW5nIHR5cGUgRGltZW5zaW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEaW1lbnNpb25cIl0gPSBcImRpbWVuc2lvblwiO1xuICAgIC8vIERQSV9BdHRyaWJ1dGVEaW1lbnNpb25MaXN0LCBoYXZpbmcgdHlwZSBEaW1lbnNpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQXR0cmlidXRlRGltZW5zaW9uTGlzdFwiXSA9IFwiYXR0cmlidXRlRGltZW5zaW9uTGlzdFwiO1xuICAgIC8vIERQSV9SZWxhdGlvbmFsVGFibGUsIGhhdmluZyB0eXBlIFJlbGF0aW9uYWxUYWJsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVsYXRpb25hbFRhYmxlXCJdID0gXCJyZWxhdGlvbmFsVGFibGVcIjtcbiAgICAvLyBEUElfRHJpbGxQYXRoLCBoYXZpbmcgdHlwZSBEcmlsbFBhdGhQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyaWxsUGF0aFwiXSA9IFwiZHJpbGxQYXRoXCI7XG4gICAgLy8gRFBJX0ZpZWxkRm9sZGVyLCBoYXZpbmcgdHlwZSBGaWVsZEZvbGRlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRGb2xkZXJcIl0gPSBcImZpZWxkRm9sZGVyXCI7XG4gICAgLy8gRFBJX0dyb3VwLCBoYXZpbmcgdHlwZSBHcm91cFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR3JvdXBcIl0gPSBcImdyb3VwXCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeSwgaGF2aW5nIHR5cGUgSGllcmFyY2h5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlcIl0gPSBcImhpZXJhcmNoeVwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlMaXN0LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TGlzdFwiXSA9IFwiaGllcmFyY2h5TGlzdFwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlNZW1iZXJTZWxlY3RlZFN0YXRlLCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RfTWVtYmVyU2VsZWN0ZWRTdGF0ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5TWVtYmVyU2VsZWN0ZWRTdGF0ZVwiXSA9IFwiaGllcmFyY2h5TWVtYmVyU2VsZWN0ZWRTdGF0ZVwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlTZWxlY3Rpb25DaGFuZ2VzLCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RfTWVtYmVyU2VsZWN0ZWRTdGF0ZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlTZWxlY3Rpb25DaGFuZ2VzXCJdID0gXCJoaWVyYXJjaHlTZWxlY3Rpb25DaGFuZ2VzXCI7XG4gICAgLy8gRFBJX0Rpc3BsYXlGb2xkZXIsIGhhdmluZyB0eXBlIERpc3BsYXlGb2xkZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3BsYXlGb2xkZXJcIl0gPSBcImRpc3BsYXlGb2xkZXJcIjtcbiAgICAvLyBEUElfRGlzcGxheUZvbGRlckxpc3QsIGhhdmluZyB0eXBlIERpc3BsYXlGb2xkZXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGlzcGxheUZvbGRlckxpc3RcIl0gPSBcImRpc3BsYXlGb2xkZXJMaXN0XCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VMYXlvdXQsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VMYXlvdXRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VMYXlvdXRcIl0gPSBcImRhdGFTb3VyY2VMYXlvdXRcIjtcbiAgICAvLyBEUElfQmFzZURhdGFTb3VyY2UsIGhhdmluZyB0eXBlIEJhc2VEYXRhU291cmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJCYXNlRGF0YVNvdXJjZVwiXSA9IFwiYmFzZURhdGFTb3VyY2VcIjtcbiAgICAvLyBEUElfQmFzZURhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIEJhc2VEYXRhU291cmNlUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiQmFzZURhdGFTb3VyY2VzXCJdID0gXCJiYXNlRGF0YVNvdXJjZXNcIjtcbiAgICAvLyBEUElfRGF0YVNvdXJjZSwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZVwiXSA9IFwiZGF0YVNvdXJjZVwiO1xuICAgIC8vIERQSV9EYXRhU291cmNlcywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBEYXRhU291cmNlUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZXNcIl0gPSBcImRhdGFTb3VyY2VzXCI7XG4gICAgLy8gRFBJX1NjaGVtYVZpZXdlckRhdGFTb3VyY2UsIGhhdmluZyB0eXBlIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjaGVtYVZpZXdlckRhdGFTb3VyY2VcIl0gPSBcInNjaGVtYVZpZXdlckRhdGFTb3VyY2VcIjtcbiAgICAvLyBEUElfU2NoZW1hVmlld2VyRGF0YVNvdXJjZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgU2NoZW1hVmlld2VyRGF0YVNvdXJjZVByZXNNb2RlbClcbiAgICBQYXJhbWV0ZXJJZFtcIlNjaGVtYVZpZXdlckRhdGFTb3VyY2VzXCJdID0gXCJzY2hlbWFWaWV3ZXJEYXRhU291cmNlc1wiO1xuICAgIC8vIERQSV9CYXNlRGF0YVNjaGVtYSwgaGF2aW5nIHR5cGUgQmFzZURhdGFTY2hlbWFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkJhc2VEYXRhU2NoZW1hXCJdID0gXCJiYXNlRGF0YVNjaGVtYVwiO1xuICAgIC8vIERQSV9EYXRhU2NoZW1hLCBoYXZpbmcgdHlwZSBEYXRhU2NoZW1hUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU2NoZW1hXCJdID0gXCJkYXRhU2NoZW1hXCI7XG4gICAgLy8gRFBJX1NjaGVtYVZpZXdlckRhdGFTY2hlbWEsIGhhdmluZyB0eXBlIFNjaGVtYVZpZXdlckRhdGFTY2hlbWFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjaGVtYVZpZXdlckRhdGFTY2hlbWFcIl0gPSBcInNjaGVtYVZpZXdlckRhdGFTY2hlbWFcIjtcbiAgICAvLyBEUElfU2hlZXRMaXN0SXRlbSwgaGF2aW5nIHR5cGUgU2hlZXRMaXN0SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRMaXN0SXRlbVwiXSA9IFwic2hlZXRMaXN0SXRlbVwiO1xuICAgIC8vIERQSV9TaGVldExpc3RJdGVtcywgaGF2aW5nIHR5cGUgU2hlZXRMaXN0SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldExpc3RJdGVtc1wiXSA9IFwic2hlZXRMaXN0SXRlbXNcIjtcbiAgICAvLyBEUElfU2hlZXRMaXN0LCBoYXZpbmcgdHlwZSBTaGVldExpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0TGlzdFwiXSA9IFwic2hlZXRMaXN0XCI7XG4gICAgLy8gRFBJX1NpemVNb2RlT3B0aW9uLCBoYXZpbmcgdHlwZSBTaXplTW9kZU9wdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZU1vZGVPcHRpb25cIl0gPSBcInNpemVNb2RlT3B0aW9uXCI7XG4gICAgLy8gRFBJX1NpemVNb2RlT3B0aW9ucywgaGF2aW5nIHR5cGUgU2l6ZU1vZGVPcHRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZU1vZGVPcHRpb25zXCJdID0gXCJzaXplTW9kZU9wdGlvbnNcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkU2l6ZUNvbnRyb2wsIGhhdmluZyB0eXBlIERhc2hib2FyZFNpemVDb250cm9sUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRTaXplQ29udHJvbFwiXSA9IFwiZGFzaGJvYXJkU2l6ZUNvbnRyb2xcIjtcbiAgICAvLyBEUElfRGV2aWNlTGF5b3V0SW5mb0l0ZW0sIGhhdmluZyB0eXBlIERldmljZUxheW91dEluZm9JdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEZXZpY2VMYXlvdXRJbmZvSXRlbVwiXSA9IFwiZGV2aWNlTGF5b3V0SW5mb0l0ZW1cIjtcbiAgICAvLyBEUElfRGV2aWNlTGF5b3V0SW5mb0l0ZW1zLCBoYXZpbmcgdHlwZSBEZXZpY2VMYXlvdXRJbmZvSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEZXZpY2VMYXlvdXRJbmZvSXRlbXNcIl0gPSBcImRldmljZUxheW91dEluZm9JdGVtc1wiO1xuICAgIC8vIERQSV9EZXZpY2VMYXlvdXRJbmZvTGlzdCwgaGF2aW5nIHR5cGUgRGV2aWNlTGF5b3V0SW5mb0xpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZUxheW91dEluZm9MaXN0XCJdID0gXCJkZXZpY2VMYXlvdXRJbmZvTGlzdFwiO1xuICAgIC8vIERQSV9TcGVjaWFsaXplZERldmljZUxheW91dEl0ZW0sIGhhdmluZyB0eXBlIFNwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRJdGVtXCJdID0gXCJzcGVjaWFsaXplZERldmljZUxheW91dEl0ZW1cIjtcbiAgICAvLyBEUElfU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRJdGVtcywgaGF2aW5nIHR5cGUgU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbXNcIl0gPSBcInNwZWNpYWxpemVkRGV2aWNlTGF5b3V0SXRlbXNcIjtcbiAgICAvLyBEUElfU3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRMaXN0LCBoYXZpbmcgdHlwZSBTcGVjaWFsaXplZERldmljZUxheW91dExpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNwZWNpYWxpemVkRGV2aWNlTGF5b3V0TGlzdFwiXSA9IFwic3BlY2lhbGl6ZWREZXZpY2VMYXlvdXRMaXN0XCI7XG4gICAgLy8gRFBJX1NpemVJdGVtLCBoYXZpbmcgdHlwZSBTaXplSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZUl0ZW1cIl0gPSBcInNpemVJdGVtXCI7XG4gICAgLy8gRFBJX1NpemVJdGVtcywgaGF2aW5nIHR5cGUgU2l6ZUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZUl0ZW1zXCJdID0gXCJzaXplSXRlbXNcIjtcbiAgICAvLyBEUElfRGV2aWNlU2l6ZXNMaXN0LCBoYXZpbmcgdHlwZSBTaXplSXRlbUxpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZVNpemVzTGlzdFwiXSA9IFwiZGV2aWNlU2l6ZXNMaXN0XCI7XG4gICAgLy8gRFBJX1ByZXNldFNpemVzTGlzdCwgaGF2aW5nIHR5cGUgU2l6ZUl0ZW1MaXN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQcmVzZXRTaXplc0xpc3RcIl0gPSBcInByZXNldFNpemVzTGlzdFwiO1xuICAgIC8vIERQSV9TaXplSXRlbUxpc3QsIGhhdmluZyB0eXBlIFNpemVJdGVtTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZUl0ZW1MaXN0XCJdID0gXCJzaXplSXRlbUxpc3RcIjtcbiAgICAvLyBEUElfU3Vic3RpdHV0aW9uS2V5d29yZCwgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3Vic3RpdHV0aW9uS2V5d29yZFwiXSA9IFwic3Vic3RpdHV0aW9uS2V5d29yZFwiO1xuICAgIC8vIERQSV9TdWJzdGl0dXRpb25LZXl3b3JkcywgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTdWJzdGl0dXRpb25LZXl3b3Jkc1wiXSA9IFwic3Vic3RpdHV0aW9uS2V5d29yZHNcIjtcbiAgICAvLyBEUElfU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3QsIGhhdmluZyB0eXBlIFN1YnN0aXR1dGlvbktleXdvcmRTdWJMaXN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdWJzdGl0dXRpb25LZXl3b3JkU3ViTGlzdFwiXSA9IFwic3Vic3RpdHV0aW9uS2V5d29yZHNTdWJsaXN0XCI7XG4gICAgLy8gRFBJX1N1YnN0aXR1dGlvbktleXdvcmRTdWJMaXN0cywgaGF2aW5nIHR5cGUgU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU3Vic3RpdHV0aW9uS2V5d29yZFN1Ykxpc3RzXCJdID0gXCJzdWJzdGl0dXRpb25LZXl3b3JkU3VibGlzdHNcIjtcbiAgICAvLyBEUElfU3Vic3RpdHV0aW9uS2V5d29yZExpc3QsIGhhdmluZyB0eXBlIFN1YnN0aXR1dGlvbktleXdvcmRMaXN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdWJzdGl0dXRpb25LZXl3b3JkTGlzdFwiXSA9IFwic3Vic3RpdHV0aW9uS2V5d29yZHNMaXN0XCI7XG4gICAgLy8gRFBJX0RldmljZVpvbmVMaXN0SXRlbSwgaGF2aW5nIHR5cGUgRGV2aWNlWm9uZUxpc3RJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEZXZpY2Vab25lTGlzdEl0ZW1cIl0gPSBcImRldmljZVpvbmVMaXN0SXRlbVwiO1xuICAgIC8vIERQSV9EZXZpY2Vab25lTGlzdEl0ZW1zLCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGV2aWNlWm9uZUxpc3RJdGVtc1wiXSA9IFwiZGV2aWNlWm9uZUxpc3RJdGVtc1wiO1xuICAgIC8vIERQSV9EZXZpY2Vab25lTGlzdCwgaGF2aW5nIHR5cGUgRGV2aWNlWm9uZUxpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZVpvbmVMaXN0XCJdID0gXCJkZXZpY2Vab25lTGlzdFwiO1xuICAgIC8vIERQSV9ab25lU25hcExpbmVMaXN0SXRlbSwgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVTbmFwTGluZUxpc3RJdGVtXCJdID0gXCJzbmFwTGluZUxpc3RJdGVtXCI7XG4gICAgLy8gRFBJX091dGVySG9yaXpvbnRhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiT3V0ZXJIb3Jpem9udGFsU25hcExpbmVzXCJdID0gXCJvdXRlckhvcml6b250YWxTbmFwTGluZXNcIjtcbiAgICAvLyBEUElfT3V0ZXJWZXJ0aWNhbFNuYXBMaW5lcywgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdEl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiT3V0ZXJWZXJ0aWNhbFNuYXBMaW5lc1wiXSA9IFwib3V0ZXJWZXJ0aWNhbFNuYXBMaW5lc1wiO1xuICAgIC8vIERQSV9Jbm5lckhvcml6b250YWxTbmFwTGluZXMsIGhhdmluZyB0eXBlIFpvbmVTbmFwTGluZUxpc3RJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIklubmVySG9yaXpvbnRhbFNuYXBMaW5lc1wiXSA9IFwiaW5uZXJIb3Jpem9udGFsU25hcExpbmVzXCI7XG4gICAgLy8gRFBJX0lubmVyVmVydGljYWxTbmFwTGluZXMsIGhhdmluZyB0eXBlIFpvbmVTbmFwTGluZUxpc3RJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIklubmVyVmVydGljYWxTbmFwTGluZXNcIl0gPSBcImlubmVyVmVydGljYWxTbmFwTGluZXNcIjtcbiAgICAvLyBEUElfWm9uZVNuYXBMaW5lTGlzdCwgaGF2aW5nIHR5cGUgWm9uZVNuYXBMaW5lTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiWm9uZVNuYXBMaW5lTGlzdFwiXSA9IFwic25hcExpbmVMaXN0XCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZFpvbmVIaWVyYXJjaHksIGhhdmluZyB0eXBlIERhc2hib2FyZFpvbmVIaWVyYXJjaHlQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFpvbmVIaWVyYXJjaHlcIl0gPSBcImRhc2hib2FyZFpvbmVIaWVyYXJjaHlcIjtcbiAgICAvLyBEUElfRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbSwgaGF2aW5nIHR5cGUgRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbVwiXSA9IFwiZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbVwiO1xuICAgIC8vIERQSV9EZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtcywgaGF2aW5nIHR5cGUgRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RJdGVtc1wiXSA9IFwiZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0SXRlbXNcIjtcbiAgICAvLyBEUElfRGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0LCBoYXZpbmcgdHlwZSBEZXZpY2Vab25lVmlzaWJpbGl0eUxpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRldmljZVpvbmVWaXNpYmlsaXR5TGlzdFwiXSA9IFwiZGV2aWNlWm9uZVZpc2liaWxpdHlMaXN0XCI7XG4gICAgLy8gRFBJX1dvcmtzaGVldERhdGFTY2hlbWEsIGhhdmluZyB0eXBlIFdvcmtzaGVldERhdGFTY2hlbWFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIldvcmtzaGVldERhdGFTY2hlbWFcIl0gPSBcIndvcmtzaGVldERhdGFTY2hlbWFcIjtcbiAgICAvLyBEUElfV29ya3NoZWV0RGF0YVNjaGVtYU1hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBXb3Jrc2hlZXREYXRhU2NoZW1hUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiV29ya3NoZWV0RGF0YVNjaGVtYU1hcFwiXSA9IFwid29ya3NoZWV0RGF0YVNjaGVtYU1hcFwiO1xuICAgIC8vIERQSV9TaGVsZiwgaGF2aW5nIHR5cGUgU2hlbGZQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmXCJdID0gXCJzaGVsZlwiO1xuICAgIC8vIERQSV9TaGVsZkRldGFpbCwgaGF2aW5nIHR5cGUgU2hlbGZQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmRGV0YWlsXCJdID0gXCJzaGVsZkRldGFpbFwiO1xuICAgIC8vIERQSV9TaGVsZkxpc3QsIGhhdmluZyB0eXBlIFNoZWxmUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmTGlzdFwiXSA9IFwic2hlbGZMaXN0XCI7XG4gICAgLy8gRFBJX1NoZWxmSXRlbSwgaGF2aW5nIHR5cGUgU2hlbGZJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVsZkl0ZW1cIl0gPSBcInNoZWxmSXRlbVwiO1xuICAgIC8vIERQSV9TaGVsZkl0ZW1zLCBoYXZpbmcgdHlwZSBTaGVsZkl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZJdGVtc1wiXSA9IFwic2hlbGZJdGVtc1wiO1xuICAgIC8vIERQSV9TaGVsdmVzLCBoYXZpbmcgdHlwZSBTaGVsdmVzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVsdmVzXCJdID0gXCJzaGVsdmVzXCI7XG4gICAgLy8gRFBJX0ZpZWxkRW5jb2RpbmcsIGhhdmluZyB0eXBlIEZpZWxkRW5jb2RpbmdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkRW5jb2RpbmdcIl0gPSBcImZpZWxkRW5jb2RpbmdcIjtcbiAgICAvLyBEUElfRmllbGRFbmNvZGluZ3MsIGhhdmluZyB0eXBlIEZpZWxkRW5jb2RpbmdQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRFbmNvZGluZ3NcIl0gPSBcImZpZWxkRW5jb2RpbmdzXCI7XG4gICAgLy8gRFBJX1ViZXJUaXAsIGhhdmluZyB0eXBlIFViZXJUaXBQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlViZXJUaXBcIl0gPSBcInViZXJUaXBcIjtcbiAgICAvLyBEUElfQW5hbHl0aWNzT2JqZWN0RHJhZ0luZm8sIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdERyYWdJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBbmFseXRpY3NPYmplY3REcmFnSW5mb1wiXSA9IFwiYW5hbHl0aWNzT2JqZWN0RHJhZ0luZm9cIjtcbiAgICAvLyBEUElfVHJlbmRMaW5lLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZVwiXSA9IFwidHJlbmRMaW5lXCI7XG4gICAgLy8gRFBJX1RyZW5kTGluZURpYWxvZywgaGF2aW5nIHR5cGUgVHJlbmRMaW5lRGlhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUcmVuZExpbmVEaWFsb2dcIl0gPSBcInRyZW5kTGluZURpYWxvZ1wiO1xuICAgIC8vIERQSV9UcmVuZExpbmVEZXNjcmliZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lRGVzY3JpYmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZURlc2NyaWJlUHJlc01vZGVsXCJdID0gXCJ0cmVuZExpbmVEZXNjcmliZVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVBT1ZNb2RlbFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lQU9WTW9kZWxQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZUFPVk1vZGVsUHJlc01vZGVsXCJdID0gXCJ0cmVuZExpbmVBb3ZNb2RlbFByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVBT1ZNb2RlbHNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRyZW5kTGluZUFPVk1vZGVsUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZUFPVk1vZGVsc1ByZXNNb2RlbFwiXSA9IFwidHJlbmRNb2RlbERlc2NyaXB0aW9uVmVjdG9yXCI7XG4gICAgLy8gRFBJX1RyZW5kTGluZUxpbmVDb2VmZmljaWVudFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUcmVuZExpbmVMaW5lQ29lZmZpY2llbnRQcmVzTW9kZWxcIl0gPSBcInRyZW5kTGluZUxpbmVDb2VmZmljaWVudFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVMaW5lQ29lZmZpY2llbnRzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUcmVuZExpbmVMaW5lQ29lZmZpY2llbnRQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVHJlbmRMaW5lTGluZUNvZWZmaWNpZW50c1ByZXNNb2RlbFwiXSA9IFwidHJlbmRMaW5lTGluZUNvZWZmaWNpZW50c1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVMaW5lc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgVHJlbmRMaW5lTGluZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyZW5kTGluZUxpbmVzUHJlc01vZGVsXCJdID0gXCJ0cmVuZExpbmVMaW5lc1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9UcmVuZExpbmVBT1ZQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRyZW5kTGluZUFPVlByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVHJlbmRMaW5lQU9WUHJlc01vZGVsXCJdID0gXCJ0cmVuZExpbmVBbm92YVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9SZWZlcmVuY2VMaW5lLCBoYXZpbmcgdHlwZSBSZWZlcmVuY2VMaW5lUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSZWZlcmVuY2VMaW5lXCJdID0gXCJyZWZlcmVuY2VMaW5lXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZUxpbmVzLCBoYXZpbmcgdHlwZSBSZWZlcmVuY2VMaW5lUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZUxpbmVzXCJdID0gXCJyZWZlcmVuY2VMaW5lc1wiO1xuICAgIC8vIERQSV9QZXJjZW50aWxlRWRpdERhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgRWRpdERhdGFWYWx1ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudGlsZUVkaXREYXRhVmFsdWVcIl0gPSBcInBlcmNlbnRpbGVFZGl0RGF0YVZhbHVlXCI7XG4gICAgLy8gRFBJX0xpbWl0RWRpdERhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgRWRpdERhdGFWYWx1ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGltaXRFZGl0RGF0YVZhbHVlXCJdID0gXCJsaW1pdEVkaXREYXRhVmFsdWVcIjtcbiAgICAvLyBEUElfQ29uZmlkZW5jZUxldmVsQ29tYm8sIGhhdmluZyB0eXBlIEVkaXRWYWx1ZVdpZGdldFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29uZmlkZW5jZUxldmVsQ29tYm9cIl0gPSBcImNvbmZpZGVuY2VMZXZlbENvbWJvXCI7XG4gICAgLy8gRFBJX0Rpc3RyaWJ1dGlvblF1YW50aWxlc0NvbWJvLCBoYXZpbmcgdHlwZSBFZGl0VmFsdWVXaWRnZXRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3RyaWJ1dGlvblF1YW50aWxlc0NvbWJvXCJdID0gXCJkaXN0cmlidXRpb25RdWFudGlsZXNMZXZlbENvbWJvXCI7XG4gICAgLy8gRFBJX1BlcmNlbnRpbGVzQ29tYm8sIGhhdmluZyB0eXBlIEVkaXRWYWx1ZVdpZGdldFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGVyY2VudGlsZXNDb21ib1wiXSA9IFwiZGlzdHJpYnV0aW9uUGVyY2VudGlsZXNMZXZlbENvbWJvXCI7XG4gICAgLy8gRFBJX051bWVyaWNCaW5TaXplQ29tYm8sIGhhdmluZyB0eXBlIEVkaXRWYWx1ZVdpZGdldFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTnVtZXJpY0JpblNpemVDb21ib1wiXSA9IFwibnVtZXJpY0JpblNpemVDb21ib1wiO1xuICAgIC8vIERQSV9GaWVsZFBpY2tlckZpZWxkLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlckZpZWxkUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFBpY2tlckZpZWxkXCJdID0gXCJmaWVsZFBpY2tlckZpZWxkXCI7XG4gICAgLy8gRFBJX0ZpZWxkUGlja2VyRmllbGRzLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlckZpZWxkUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkUGlja2VyRmllbGRzXCJdID0gXCJmaWVsZFBpY2tlckZpZWxkc1wiO1xuICAgIC8vIERQSV9GaWVsZFBpY2tlckNvbWJvLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlckNvbWJvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFBpY2tlckNvbWJvXCJdID0gXCJmaWVsZFBpY2tlckNvbWJvXCI7XG4gICAgLy8gRFBJX1BhaXJlZEZpZWxkUGlja2VyQ29tYm8sIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyQ29tYm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhaXJlZEZpZWxkUGlja2VyQ29tYm9cIl0gPSBcInBhaXJlZEZpZWxkUGlja2VyQ29tYm9cIjtcbiAgICAvLyBEUElfUmVmZXJlbmNlTGluZUVkaXRvclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUmVmZXJlbmNlTGluZUVkaXRvclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVmZXJlbmNlTGluZUVkaXRvclByZXNNb2RlbFwiXSA9IFwicmVmZXJlbmNlTGluZUVkaXRvclwiO1xuICAgIC8vIERQSV9DbG9zZURhdGFTb3VyY2VFcnJvckRpYWxvZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ2xvc2VEYXRhU291cmNlRXJyb3JEaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNsb3NlRGF0YVNvdXJjZUVycm9yRGlhbG9nUHJlc01vZGVsXCJdID0gXCJjbG9zZURzRXJyb3JEaWFsb2dcIjtcbiAgICAvLyBEUElfRWRpdFJlZmVyZW5jZUxpbmUsIGhhdmluZyB0eXBlIEVkaXRSZWZlcmVuY2VMaW5lUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFZGl0UmVmZXJlbmNlTGluZVwiXSA9IFwiZWRpdFJlZmVyZW5jZUxpbmVcIjtcbiAgICAvLyBEUElfRWRpdFJlZmVyZW5jZUJhbmQsIGhhdmluZyB0eXBlIEVkaXRSZWZlcmVuY2VCYW5kUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFZGl0UmVmZXJlbmNlQmFuZFwiXSA9IFwiZWRpdFJlZmVyZW5jZUJhbmRcIjtcbiAgICAvLyBEUElfRWRpdERpc3RyaWJ1dGlvbiwgaGF2aW5nIHR5cGUgRWRpdERpc3RyaWJ1dGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdERpc3RyaWJ1dGlvblwiXSA9IFwiZWRpdERpc3RyaWJ1dGlvblwiO1xuICAgIC8vIERQSV9EaXN0cmlidXRpb25QZXJjZW50YWdlcywgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uUGVyY2VudGFnZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3RyaWJ1dGlvblBlcmNlbnRhZ2VzXCJdID0gXCJkaXN0cmlidXRpb25QZXJjZW50YWdlc1wiO1xuICAgIC8vIERQSV9EaXN0cmlidXRpb25QZXJjZW50aWxlcywgaGF2aW5nIHR5cGUgRGlzdHJpYnV0aW9uUGVyY2VudGlsZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpc3RyaWJ1dGlvblBlcmNlbnRpbGVzXCJdID0gXCJkaXN0cmlidXRpb25QZXJjZW50aWxlc1wiO1xuICAgIC8vIERQSV9EaXN0cmlidXRpb25RdWFudGlsZXMsIGhhdmluZyB0eXBlIERpc3RyaWJ1dGlvblF1YW50aWxlc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGlzdHJpYnV0aW9uUXVhbnRpbGVzXCJdID0gXCJkaXN0cmlidXRpb25RdWFudGlsZXNcIjtcbiAgICAvLyBEUElfRGlzdHJpYnV0aW9uU3RhbmRhcmREZXZpYXRpb24sIGhhdmluZyB0eXBlIERpc3RyaWJ1dGlvblN0YW5kYXJkRGV2aWF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEaXN0cmlidXRpb25TdGFuZGFyZERldmlhdGlvblwiXSA9IFwiZGlzdHJpYnV0aW9uU3RkZGV2XCI7XG4gICAgLy8gRFBJX1NvcnRJbmRpY2F0b3JzLCBoYXZpbmcgdHlwZSBTb3J0SW5kaWNhdG9yc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU29ydEluZGljYXRvcnNcIl0gPSBcInNvcnRJbmRpY2F0b3JzXCI7XG4gICAgLy8gRFBJX1NvcnRJbmRpY2F0b3JSZWdpb24sIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNvcnRJbmRpY2F0b3JSZWdpb25cIl0gPSBcInNvcnRJbmRpY2F0b3JSZWdpb25cIjtcbiAgICAvLyBEUElfU29ydEluZGljYXRvclJlZ2lvbnMsIGhhdmluZyB0eXBlIFNvcnRJbmRpY2F0b3JSZWdpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU29ydEluZGljYXRvclJlZ2lvbnNcIl0gPSBcInNvcnRJbmRpY2F0b3JSZWdpb25zXCI7XG4gICAgLy8gRFBJX1NvcnRJbmRpY2F0b3JJdGVtLCBoYXZpbmcgdHlwZSBTb3J0SW5kaWNhdG9ySXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU29ydEluZGljYXRvckl0ZW1cIl0gPSBcInNvcnRJbmRpY2F0b3JJdGVtXCI7XG4gICAgLy8gRFBJX1NvcnRJbmRpY2F0b3JJdGVtcywgaGF2aW5nIHR5cGUgU29ydEluZGljYXRvckl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU29ydEluZGljYXRvckl0ZW1zXCJdID0gXCJzb3J0SW5kaWNhdG9ySXRlbXNcIjtcbiAgICAvLyBEUElfQnVpbGRlckNvbmZpZywgaGF2aW5nIHR5cGUgQnVpbGRlckNvbmZpZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQnVpbGRlckNvbmZpZ1wiXSA9IFwiYnVpbGRlckNvbmZpZ1wiO1xuICAgIC8vIERQSV9TaGVldExheW91dEluZm8sIGhhdmluZyB0eXBlIFNoZWV0TGF5b3V0SW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRMYXlvdXRJbmZvXCJdID0gXCJzaGVldExheW91dEluZm9cIjtcbiAgICAvLyBEUElfQXJlYVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQXJlYVJlY3RcIl0gPSBcImFyZWFSZWN0XCI7XG4gICAgLy8gRFBJX0JvcmRlciwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJCb3JkZXJcIl0gPSBcImJvcmRlclJlY3RcIjtcbiAgICAvLyBEUElfQm91bmRzUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJCb3VuZHNSZWN0XCJdID0gXCJib3VuZHNSZWN0XCI7XG4gICAgLy8gRFBJX0J1dHRvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQnV0dG9uUmVjdFwiXSA9IFwiYnV0dG9uUmVjdFwiO1xuICAgIC8vIERQSV9EcmFnUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmFnUmVjdFwiXSA9IFwiZHJhZ1JlY3RcIjtcbiAgICAvLyBEUElfRm9jdXNSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvY3VzUmVjdFwiXSA9IFwiZm9jdXNSZWN0XCI7XG4gICAgLy8gRFBJX0ltYWdlVGlsZVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VUaWxlUmVjdFwiXSA9IFwidGlsZVJlY3RcIjtcbiAgICAvLyBEUElfSXRlbVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSXRlbVJlY3RcIl0gPSBcIml0ZW1SZWN0XCI7XG4gICAgLy8gRFBJX0xhYmVsUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJMYWJlbFJlY3RcIl0gPSBcImxhYmVsUmVjdFwiO1xuICAgIC8vIERQSV9NYXJrUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrUmVjdFwiXSA9IFwibWFya1JlY3RcIjtcbiAgICAvLyBEUElfTWFya1Rvb2x0aXBSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtUb29sdGlwUmVjdFwiXSA9IFwibWFya1Rvb2x0aXBSZWN0XCI7XG4gICAgLy8gRFBJX01lbnVCdXR0b25SZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lbnVCdXR0b25SZWN0XCJdID0gXCJtZW51QnV0dG9uUmVjdFwiO1xuICAgIC8vIERQSV9PdXRSZWdpb25SZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk91dFJlZ2lvblJlY3RcIl0gPSBcIm91dFJlZ2lvblJlY3RcIjtcbiAgICAvLyBEUElfUGFuZVJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFuZVJlY3RcIl0gPSBcInBhbmVSZWN0XCI7XG4gICAgLy8gRFBJX1BpeGVsRXh0ZW50cywgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQaXhlbEV4dGVudHNcIl0gPSBcInBpeGVsRXh0ZW50c1wiO1xuICAgIC8vIERQSV9SZWN0TWF4TGFiZWwsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVjdE1heExhYmVsXCJdID0gXCJyZWN0TWF4TGFiZWxcIjtcbiAgICAvLyBEUElfUmVjdE1pbkxhYmVsLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlY3RNaW5MYWJlbFwiXSA9IFwicmVjdE1pbkxhYmVsXCI7XG4gICAgLy8gRFBJX1JlY3RSYW1wLCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlY3RSYW1wXCJdID0gXCJyZWN0UmFtcFwiO1xuICAgIC8vIERQSV9SZWN0VGl0bGUsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVjdFRpdGxlXCJdID0gXCJyZWN0VGl0bGVcIjtcbiAgICAvLyBEUElfUmVnaW9uUmVjdCwgaGF2aW5nIHR5cGUgUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSZWdpb25SZWN0XCJdID0gXCJyZWdpb25SZWN0XCI7XG4gICAgLy8gRFBJX1NlbGVjdGlvblJlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uUmVjdFwiXSA9IFwic2VsZWN0aW9uUmVjdFwiO1xuICAgIC8vIERQSV9VbnVzZWRSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlVudXNlZFJlY3RcIl0gPSBcInVudXNlZFJlY3RcIjtcbiAgICAvLyBEUElfWm9uZUVkZ2VSZWN0LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVFZGdlUmVjdFwiXSA9IFwiem9uZUVkZ2VcIjtcbiAgICAvLyBEUElfWm9uZUVkZ2VSZWN0UGl4LCBoYXZpbmcgdHlwZSBSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVFZGdlUmVjdFBpeFwiXSA9IFwiem9uZUVkZ2VQaXhcIjtcbiAgICAvLyBEUElfWm9uZUVkZ2VSZWN0UHAsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiWm9uZUVkZ2VSZWN0UHBcIl0gPSBcInpvbmVFZGdlUHBcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uTGlua1JlY3QsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uTGlua1JlY3RcIl0gPSBcImxpbmtSZWN0XCI7XG4gICAgLy8gRFBJX0JvcmRlcnMsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJCb3JkZXJzXCJdID0gXCJib3JkZXJSZWN0c1wiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25MaW5rUmVjdHMsIGhhdmluZyB0eXBlIFJlY3RhbmdsZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25MaW5rUmVjdHNcIl0gPSBcImxpbmtSZWN0c1wiO1xuICAgIC8vIERQSV9Eb21haW5FeHRlbnRzLCBoYXZpbmcgdHlwZSBEb3VibGVSZWN0YW5nbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpbkV4dGVudHNcIl0gPSBcImRvbWFpbkV4dGVudHNcIjtcbiAgICAvLyBEUElfTWFwRG9tYWluRXh0ZW50cywgaGF2aW5nIHR5cGUgRG91YmxlUmVjdGFuZ2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNYXBEb21haW5FeHRlbnRzXCJdID0gXCJtYXBEb21haW5FeHRlbnRzXCI7XG4gICAgLy8gRFBJX01hcExhdExvbmdSZWN0LCBoYXZpbmcgdHlwZSBNYXBSZWN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNYXBMYXRMb25nUmVjdFwiXSA9IFwibWFwTGF0TG9uZ1JlY3RcIjtcbiAgICAvLyBEUElfQ2VudGVyLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2VudGVyXCJdID0gXCJjZW50ZXJcIjtcbiAgICAvLyBEUElfQ2VudGVyTWFya0xpbmVCZWdpbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNlbnRlck1hcmtMaW5lQmVnaW5cIl0gPSBcImNlbnRlck1hcmtMaW5lQmVnaW5cIjtcbiAgICAvLyBEUElfQ2VudGVyTWFya0xpbmVFbmQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDZW50ZXJNYXJrTGluZUVuZFwiXSA9IFwiY2VudGVyTWFya0xpbmVFbmRcIjtcbiAgICAvLyBEUElfRHJvcExvY2F0aW9uLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJvcExvY2F0aW9uXCJdID0gXCJkcm9wTG9jYXRpb25cIjtcbiAgICAvLyBEUElfRW5kUHQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFbmRQdFwiXSA9IFwiZW5kUG9pbnRcIjtcbiAgICAvLyBEUElfR3JhYkxvY2F0aW9uLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR3JhYkxvY2F0aW9uXCJdID0gXCJncmFiTG9jYXRpb25cIjtcbiAgICAvLyBEUElfR3JpZE9yaWdpbiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkdyaWRPcmlnaW5cIl0gPSBcImdyaWRPcmlnaW5cIjtcbiAgICAvLyBEUElfTGFzc29TZWxlY3Rpb25Qb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxhc3NvU2VsZWN0aW9uUG9pbnRcIl0gPSBcImxhc3NvU2VsZWN0aW9uUG9pbnRcIjtcbiAgICAvLyBEUElfTWVudUxvY2F0aW9uLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWVudUxvY2F0aW9uXCJdID0gXCJtZW51TG9jYXRpb25cIjtcbiAgICAvLyBEUElfTW92ZU9mZnNldCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1vdmVPZmZzZXRcIl0gPSBcIm1vdmVPZmZzZXRcIjtcbiAgICAvLyBEUElfT3ZlcmxheUFuY2hvciwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk92ZXJsYXlBbmNob3JcIl0gPSBcIm92ZXJsYXlBbmNob3JcIjtcbiAgICAvLyBEUElfUGFuQW1vdW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFuQW1vdW50XCJdID0gXCJwYW5BbW91bnRcIjtcbiAgICAvLyBEUElfUGFuTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYW5Mb2NhdGlvblwiXSA9IFwicGFuTG9jYXRpb25cIjtcbiAgICAvLyBEUElfUGFuZVJlc29sdmVyTG9jYXRpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lUmVzb2x2ZXJMb2NhdGlvblwiXSA9IFwicGFuZVJlc29sdmVyTG9jYXRpb25cIjtcbiAgICAvLyBEUElfUGl4ZWxFeHRlbnRzT2Zmc2V0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGl4ZWxFeHRlbnRzT2Zmc2V0XCJdID0gXCJleHRlbnRzT2Zmc2V0XCI7XG4gICAgLy8gRFBJX1BvaW50MSwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBvaW50MVwiXSA9IFwicHQxXCI7XG4gICAgLy8gRFBJX1BvaW50MiwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBvaW50MlwiXSA9IFwicHQyXCI7XG4gICAgLy8gRFBJX1BvaW50MywgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBvaW50M1wiXSA9IFwicHQzXCI7XG4gICAgLy8gRFBJX1JlZ2lvblBvaW50LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVnaW9uUG9pbnRcIl0gPSBcInJlZ2lvblBvaW50XCI7XG4gICAgLy8gRFBJX1Njcm9sbE9mZnNldCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjcm9sbE9mZnNldFwiXSA9IFwic2Nyb2xsT2Zmc2V0XCI7XG4gICAgLy8gRFBJX1NlbGVjdEF0UG9pbnQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RBdFBvaW50XCJdID0gXCJzZWxlY3RBdFBvaW50XCI7XG4gICAgLy8gRFBJX1NlbGVjdE9mZnNldCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdE9mZnNldFwiXSA9IFwic2VsZWN0T2Zmc2V0XCI7XG4gICAgLy8gRFBJX1RhcmdldFB0LCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0UHRcIl0gPSBcInRhcmdldFBvaW50XCI7XG4gICAgLy8gRFBJX1RleHRPcmlnaW4sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUZXh0T3JpZ2luXCJdID0gXCJ0ZXh0T3JpZ2luXCI7XG4gICAgLy8gRFBJX1Rvb2x0aXBBbmNob3JQb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRvb2x0aXBBbmNob3JQb2ludFwiXSA9IFwidG9vbHRpcEFuY2hvclBvaW50XCI7XG4gICAgLy8gRFBJX1Rvb2x0aXBPZmZzZXQsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUb29sdGlwT2Zmc2V0XCJdID0gXCJ0b29sdGlwT2Zmc2V0XCI7XG4gICAgLy8gRFBJX1ZpekxvY2F0aW9uLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVml6TG9jYXRpb25cIl0gPSBcInZpekxvY2F0aW9uXCI7XG4gICAgLy8gRFBJX1pvb21BbmNob3JQb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvb21BbmNob3JQb2ludFwiXSA9IFwiem9vbUFuY2hvclBvaW50XCI7XG4gICAgLy8gRFBJX01lbnVBbmNob3JQb2ludCwgaGF2aW5nIHR5cGUgUG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lbnVBbmNob3JQb2ludFwiXSA9IFwibWVudUFuY2hvclBvaW50XCI7XG4gICAgLy8gRFBJX092ZXJsYXlBbmNob3JzLCBoYXZpbmcgdHlwZSBQb2ludFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJPdmVybGF5QW5jaG9yc1wiXSA9IFwib3ZlcmxheUFuY2hvcnNcIjtcbiAgICAvLyBEUElfTGFzc29TZWxlY3Rpb24sIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkxhc3NvU2VsZWN0aW9uXCJdID0gXCJsYXNzb1NlbGVjdGlvblwiO1xuICAgIC8vIERQSV9TY3JvbGxPZmZzZXRQb2ludHMsIGhhdmluZyB0eXBlIFBvaW50UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNjcm9sbE9mZnNldFBvaW50c1wiXSA9IFwic2Nyb2xsT2Zmc2V0UG9pbnRzXCI7XG4gICAgLy8gRFBJX1JhZGlhbFNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgQ2lyY2xlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSYWRpYWxTZWxlY3Rpb25cIl0gPSBcInJhZGlhbFNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9Eb21haW5PcmlnaW4sIGhhdmluZyB0eXBlIEZsb2F0UG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpbk9yaWdpblwiXSA9IFwiZG9tYWluT3JpZ2luXCI7XG4gICAgLy8gRFBJX0Zsb2F0Q2VudGVyLCBoYXZpbmcgdHlwZSBGbG9hdFBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGbG9hdENlbnRlclwiXSA9IFwiZmxvYXRDZW50ZXJcIjtcbiAgICAvLyBEUElfRmxvYXRQb2ludCwgaGF2aW5nIHR5cGUgRmxvYXRQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmxvYXRQb2ludFwiXSA9IFwiZmxvYXRQb2ludFwiO1xuICAgIC8vIERQSV9DbGllbnRBdmFpbGFibGVTcGFjZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2xpZW50QXZhaWxhYmxlU3BhY2VcIl0gPSBcImNsaWVudEF2YWlsYWJsZVNwYWNlXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZFBvcnRTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRQb3J0U2l6ZVwiXSA9IFwiZGFzaGJvYXJkUG9ydFwiO1xuICAgIC8vIERQSV9MZWdlbmRTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJMZWdlbmRTaXplXCJdID0gXCJsZWdlbmRTaXplXCI7XG4gICAgLy8gRFBJX1N0b3J5UG9ydFNpemUsIGhhdmluZyB0eXBlIFNpemVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UG9ydFNpemVcIl0gPSBcInN0b3J5UG9ydFwiO1xuICAgIC8vIERQSV9Td2F0Y2hBcmVhU2l6ZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3dhdGNoQXJlYVNpemVcIl0gPSBcImFyZWFTaXplXCI7XG4gICAgLy8gRFBJX1N3YXRjaEltYWdlU2l6ZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3dhdGNoSW1hZ2VTaXplXCJdID0gXCJpbWFnZVNpemVcIjtcbiAgICAvLyBEUElfVmlld3BvcnRTaXplLCBoYXZpbmcgdHlwZSBTaXplUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJWaWV3cG9ydFNpemVcIl0gPSBcInZpZXdwb3J0U2l6ZVwiO1xuICAgIC8vIERQSV9Xb3Jrc2hlZXRQb3J0U2l6ZSwgaGF2aW5nIHR5cGUgU2l6ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV29ya3NoZWV0UG9ydFNpemVcIl0gPSBcIndvcmtzaGVldFBvcnRcIjtcbiAgICAvLyBEUElfUmVzaXplRW50aXR5LCBoYXZpbmcgdHlwZSBSZXNpemVFbnRpdHlQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc2l6ZUVudGl0eVwiXSA9IFwicmVzaXplRW50aXR5XCI7XG4gICAgLy8gRFBJX1Jvd1Jlc2l6ZXJzLCBoYXZpbmcgdHlwZSBSZXNpemVFbnRpdHlQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUm93UmVzaXplcnNcIl0gPSBcInJvd1Jlc2l6ZXJzXCI7XG4gICAgLy8gRFBJX0NvbFJlc2l6ZXJzLCBoYXZpbmcgdHlwZSBSZXNpemVFbnRpdHlQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29sUmVzaXplcnNcIl0gPSBcImNvbFJlc2l6ZXJzXCI7XG4gICAgLy8gRFBJX1Jlc2l6ZUluZm9QcmVzTW9kZWwsIGhhdmluZyB0eXBlIFJlc2l6ZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlc2l6ZUluZm9QcmVzTW9kZWxcIl0gPSBcInJlc2l6ZUluZm9cIjtcbiAgICAvLyBEUElfU2VydmVyU2hlZXQsIGhhdmluZyB0eXBlIFNlcnZlclNoZWV0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2ZXJTaGVldFwiXSA9IFwic2VydmVyU2hlZXRcIjtcbiAgICAvLyBEUElfU2VydmVyU2hlZXRzLCBoYXZpbmcgdHlwZSBTZXJ2ZXJTaGVldFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2ZXJTaGVldHNcIl0gPSBcInNlcnZlclNoZWV0c1wiO1xuICAgIC8vIERQSV9TaGVldEluZm8sIGhhdmluZyB0eXBlIFNoZWV0SW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlZXRJbmZvXCJdID0gXCJzaGVldEluZm9cIjtcbiAgICAvLyBEUElfU2hlZXRzSW5mbywgaGF2aW5nIHR5cGUgU2hlZXRJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0c0luZm9cIl0gPSBcInNoZWV0c0luZm9cIjtcbiAgICAvLyBEUElfU2VydmVyV29ya2Jvb2ssIGhhdmluZyB0eXBlIFNlcnZlcldvcmtib29rUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2ZXJXb3JrYm9va1wiXSA9IFwic2VydmVyV29ya2Jvb2tcIjtcbiAgICAvLyBEUElfUERGRXhwb3J0T3B0aW9uc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUERGRXhwb3J0T3B0aW9uc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUERGRXhwb3J0T3B0aW9uc1ByZXNNb2RlbFwiXSA9IFwicGRmRXhwb3J0XCI7XG4gICAgLy8gRFBJX0V4cG9ydEZpbGVSZXN1bHRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEV4cG9ydEZpbGVSZXN1bHRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cG9ydEZpbGVSZXN1bHRQcmVzTW9kZWxcIl0gPSBcInBkZlJlc3VsdFwiO1xuICAgIC8vIERQSV9QREZTaGVldCwgaGF2aW5nIHR5cGUgUERGU2hlZXRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBERlNoZWV0XCJdID0gXCJwZGZTaGVldFwiO1xuICAgIC8vIERQSV9TaGVldE9wdGlvbnMsIGhhdmluZyB0eXBlIFBERlNoZWV0UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0T3B0aW9uc1wiXSA9IFwic2hlZXRPcHRpb25zXCI7XG4gICAgLy8gRFBJX0V4cG9ydExheW91dE9wdGlvbnMsIGhhdmluZyB0eXBlIEV4cG9ydExheW91dE9wdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cG9ydExheW91dE9wdGlvbnNcIl0gPSBcImV4cG9ydExheW91dE9wdGlvbnNcIjtcbiAgICAvLyBEUElfRGF0YUFsZXJ0Q29uZGl0aW9uT3BlcmF0aW9uVHlwZSwgaGF2aW5nIHR5cGUgRGF0YUFsZXJ0Q29uZGl0aW9uT3BlcmF0aW9uVHlwZVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUFsZXJ0Q29uZGl0aW9uT3BlcmF0aW9uVHlwZVwiXSA9IFwiZGF0YUFsZXJ0Q29uZGl0aW9uT3BcIjtcbiAgICAvLyBEUElfRGF0YUFsZXJ0RGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEYXRhQWxlcnREaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydERpYWxvZ1ByZXNNb2RlbFwiXSA9IFwiZGF0YUFsZXJ0RGlhbG9nUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0RhdGFBbGVydE1lYXN1cmUsIGhhdmluZyB0eXBlIERhdGFBbGVydE1lYXN1cmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydE1lYXN1cmVcIl0gPSBcImRhdGFBbGVydE1lYXN1cmVcIjtcbiAgICAvLyBEUElfRGF0YUFsZXJ0TWVhc3VyZXMsIGhhdmluZyB0eXBlIERhdGFBbGVydE1lYXN1cmVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUFsZXJ0TWVhc3VyZXNcIl0gPSBcImRhdGFBbGVydE1lYXN1cmVzXCI7XG4gICAgLy8gRFBJX0RhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uLCBoYXZpbmcgdHlwZSBEYXRhQWxlcnRDb25zdGFudENvbmRpdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUFsZXJ0Q29uc3RhbnRDb25kaXRpb25cIl0gPSBcImRhdGFBbGVydENvbnN0YW50Q29uZGl0aW9uXCI7XG4gICAgLy8gRFBJX0RhdGFBbGVydERpYWxvZ01vZGUsIGhhdmluZyB0eXBlIERhdGFBbGVydERpYWxvZ01vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFBbGVydERpYWxvZ01vZGVcIl0gPSBcImRhdGFBbGVydERpYWxvZ01vZGVcIjtcbiAgICAvLyBEUElfTGlnaHR3ZWlnaHRNYXBPcHRpb25zLCBoYXZpbmcgdHlwZSBMaWdodHdlaWdodE1hcE9wdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxpZ2h0d2VpZ2h0TWFwT3B0aW9uc1wiXSA9IFwibGlnaHR3ZWlnaHRNYXBPcHRpb25zXCI7XG4gICAgLy8gRFBJX0RhdGFIaWdobGlnaHRlciwgaGF2aW5nIHR5cGUgRGF0YUhpZ2hsaWdodGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhSGlnaGxpZ2h0ZXJcIl0gPSBcImRhdGFIaWdobGlnaHRlclwiO1xuICAgIC8vIERQSV9EYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0LCBoYXZpbmcgdHlwZSBEYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0XCJdID0gXCJkYXRhSGlnaGxpZ2h0ZXJJdGVtU2V0XCI7XG4gICAgLy8gRFBJX0RhdGFIaWdobGlnaHRlckl0ZW0sIGhhdmluZyB0eXBlIERhdGFIaWdobGlnaHRlckl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFIaWdobGlnaHRlckl0ZW1cIl0gPSBcImRhdGFIaWdobGlnaHRlckl0ZW1cIjtcbiAgICAvLyBEUElfRGF0YUhpZ2hsaWdodGVySXRlbXMsIGhhdmluZyB0eXBlIERhdGFIaWdobGlnaHRlckl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUhpZ2hsaWdodGVySXRlbXNcIl0gPSBcImRhdGFIaWdobGlnaHRlckl0ZW1zXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsTGVnZW5kTGF5b3V0LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbExlZ2VuZExheW91dFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxMZWdlbmRMYXlvdXRcIl0gPSBcImNhdExlZ2VuZExheW91dFwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbExlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsTGVnZW5kXCJdID0gXCJjYXRlZ29yaWNhbExlZ2VuZFwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbExlZ2VuZHMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsTGVnZW5kUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsTGVnZW5kc1wiXSA9IFwiY2F0ZWdvcmljYWxMZWdlbmRzXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsQ29sb3JMZWdlbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQ29sb3JMZWdlbmRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsQ29sb3JMZWdlbmRcIl0gPSBcImNvbG9yTGVnZW5kXCI7XG4gICAgLy8gRFBJX0NvbG9yTGVnZW5kSXRlbSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvckxlZ2VuZEl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yTGVnZW5kSXRlbVwiXSA9IFwiY29sb3JMZWdlbmRJdGVtXCI7XG4gICAgLy8gRFBJX0NvbG9yTGVnZW5kSXRlbXMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQ29sb3JMZWdlbmRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yTGVnZW5kSXRlbXNcIl0gPSBcImNvbG9yTGVnZW5kSXRlbXNcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxTaGFwZUxlZ2VuZCwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxTaGFwZUxlZ2VuZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxTaGFwZUxlZ2VuZFwiXSA9IFwiY2F0ZWdvcmljYWxTaGFwZUxlZ2VuZFwiO1xuICAgIC8vIERQSV9TaGFwZUxlZ2VuZEl0ZW0sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2hhcGVMZWdlbmRJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGFwZUxlZ2VuZEl0ZW1cIl0gPSBcInNoYXBlTGVnZW5kSXRlbVwiO1xuICAgIC8vIERQSV9TaGFwZUxlZ2VuZEl0ZW1zLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbFNoYXBlTGVnZW5kSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTaGFwZUxlZ2VuZEl0ZW1zXCJdID0gXCJzaGFwZUxlZ2VuZEl0ZW1zXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEhpZ2hsaWdodExlZ2VuZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxIaWdobGlnaHRMZWdlbmRcIl0gPSBcImNhdGVnb3JpY2FsSGlnaGxpZ2h0TGVnZW5kXCI7XG4gICAgLy8gRFBJX0hpZ2hsaWdodExlZ2VuZEl0ZW0sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsTGVnZW5kSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSGlnaGxpZ2h0TGVnZW5kSXRlbVwiXSA9IFwiaGlnaGxpZ2h0TGVnZW5kSXRlbVwiO1xuICAgIC8vIERQSV9IaWdobGlnaHRMZWdlbmRJdGVtcywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxMZWdlbmRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkhpZ2hsaWdodExlZ2VuZEl0ZW1zXCJdID0gXCJoaWdobGlnaHRMZWdlbmRJdGVtc1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbFNpemVMZWdlbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2l6ZUxlZ2VuZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxTaXplTGVnZW5kXCJdID0gXCJjYXRlZ29yaWNhbFNpemVMZWdlbmRcIjtcbiAgICAvLyBEUElfU2l6ZUxlZ2VuZEl0ZW0sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2l6ZUxlZ2VuZEl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNpemVMZWdlbmRJdGVtXCJdID0gXCJzaXplTGVnZW5kSXRlbVwiO1xuICAgIC8vIERQSV9TaXplTGVnZW5kSXRlbXMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsU2l6ZUxlZ2VuZEl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2l6ZUxlZ2VuZEl0ZW1zXCJdID0gXCJzaXplTGVnZW5kSXRlbXNcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxNYXBMZWdlbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsTWFwTGVnZW5kUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbE1hcExlZ2VuZFwiXSA9IFwiY2F0ZWdvcmljYWxNYXBMZWdlbmRcIjtcbiAgICAvLyBEUElfUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmQsIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZUNvbG9yTGVnZW5kUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJRdWFudGl0YXRpdmVDb2xvckxlZ2VuZFwiXSA9IFwicXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRcIjtcbiAgICAvLyBEUElfUXVhbnRpdGF0aXZlQ29sb3JMZWdlbmRzLCBoYXZpbmcgdHlwZSBRdWFudGl0YXRpdmVDb2xvckxlZ2VuZFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJRdWFudGl0YXRpdmVDb2xvckxlZ2VuZHNcIl0gPSBcInF1YW50aXRhdGl2ZUNvbG9yTGVnZW5kc1wiO1xuICAgIC8vIERQSV9RdWFudGl0YXRpdmVMZWdlbmRMYXlvdXQsIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZUxlZ2VuZExheW91dFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRpdGF0aXZlTGVnZW5kTGF5b3V0XCJdID0gXCJxdWFudGl0YXRpdmVMZWdlbmRMYXlvdXRcIjtcbiAgICAvLyBEUElfU2VydmVyUmVuZGVyZWRMZWdlbmQsIGhhdmluZyB0eXBlIFNlcnZlclJlbmRlcmVkTGVnZW5kUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZXJ2ZXJSZW5kZXJlZExlZ2VuZFwiXSA9IFwic2VydmVyUmVuZGVyZWRMZWdlbmRcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXIsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlclwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyTWVtYmVyRG9tYWluUGFnZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJNZW1iZXJEb21haW5QYWdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlck1lbWJlckRvbWFpblBhZ2VcIl0gPSBcImNhdGVnb3JpY2FsRmlsdGVyTWVtYmVyRG9tYWluUGFnZVwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mbywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJDYWNoZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRmlsdGVyQ2FjaGVJbmZvXCJdID0gXCJjYXRlZ29yaWNhbEZpbHRlckNhY2hlSW5mb1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5LCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5XCJdID0gXCJjYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5EaXNwbGF5XCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUGF0dGVyblVwZGF0ZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJQYXR0ZXJuVXBkYXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlclBhdHRlcm5VcGRhdGVcIl0gPSBcImNhdGVnb3JpY2FsRmlsdGVyUGF0dGVyblVwZGF0ZVwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkRpc3BsYXksIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uRGlzcGxheVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25EaXNwbGF5XCJdID0gXCJjYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkRpc3BsYXlcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGUsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyQ29uZGl0aW9uVXBkYXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblVwZGF0ZVwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25VcGRhdGVcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXksIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyTGltaXREaXNwbGF5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlckxpbWl0RGlzcGxheVwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdERpc3BsYXlcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZVwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFVwZGF0ZVwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlck5ldywgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJfTmV3UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlck5ld1wiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJOZXdcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJIaWVyYXJjaHksIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVySGllcmFyY2h5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEZpbHRlckhpZXJhcmNoeVwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJIaXJlcmFyY2h5XCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyVXBkYXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclVwZGF0ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJVcGRhdGVcIl0gPSBcImNhdGVnb3JpY2FsRmlsdGVyVXBkYXRlXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFN0YXRlLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEZpbHRlclJlbGF0aW9uYWxTdGF0ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsU3RhdGVcIl0gPSBcImNhdGVnb3JpY2FsUmVsYXRpb25hbFN0YXRlXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFVwZGF0ZWRTdGF0ZSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsU3RhdGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbFVwZGF0ZWRTdGF0ZVwiXSA9IFwiY2F0ZWdvcmljYWxSZWxhdGlvbmFsVXBkYXRlZFN0YXRlXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm8sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm9cIl0gPSBcImNhdGVnb3JpY2FsRmlsdGVyUmVsYXRpb25hbERvbWFpbkluZm9cIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheSwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheVwiXSA9IFwiY2F0ZWdvcmljYWxGaWx0ZXJSZWxhdGlvbmFsRGlzcGxheVwiO1xuICAgIC8vIERQSV9FeHByZXNzaW9uVG9rZW4sIGhhdmluZyB0eXBlIEV4cHJlc3Npb25Ub2tlblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRXhwcmVzc2lvblRva2VuXCJdID0gXCJleHByZXNzaW9uVG9rZW5cIjtcbiAgICAvLyBEUElfRXhwcmVzc2lvblRva2VucywgaGF2aW5nIHR5cGUgRXhwcmVzc2lvblRva2VuUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25Ub2tlbnNcIl0gPSBcImV4cHJlc3Npb25Ub2tlbnNcIjtcbiAgICAvLyBEUElfRm9ybXVsYVZhbGlkYXRpb24sIGhhdmluZyB0eXBlIEZvcm11bGFWYWxpZGF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtdWxhVmFsaWRhdGlvblwiXSA9IFwiZm9ybXVsYVZhbGlkYXRpb25cIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkRmlsdGVyVmFsdWUsIGhhdmluZyB0eXBlIEZpbHRlclZhbHVlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0aW9uZWRGaWx0ZXJWYWx1ZVwiXSA9IFwiY2FwdGlvbmVkRmlsdGVyVmFsdWVcIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkUmFuZ2VNaW4sIGhhdmluZyB0eXBlIEZpbHRlclZhbHVlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0aW9uZWRSYW5nZU1pblwiXSA9IFwiY2FwdGlvbmVkUmFuZ2VNaW5cIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkUmFuZ2VNYXgsIGhhdmluZyB0eXBlIEZpbHRlclZhbHVlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0aW9uZWRSYW5nZU1heFwiXSA9IFwiY2FwdGlvbmVkUmFuZ2VNYXhcIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkQW5jaG9yRGF0ZSwgaGF2aW5nIHR5cGUgRmlsdGVyVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhcHRpb25lZEFuY2hvckRhdGVcIl0gPSBcImNhcHRpb25lZEFuY2hvckRhdGVcIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkRmlsdGVyVmFsdWVMaXN0LCBoYXZpbmcgdHlwZSBGaWx0ZXJWYWx1ZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDYXB0aW9uZWRGaWx0ZXJWYWx1ZUxpc3RcIl0gPSBcImNhcHRpb25lZEZpbHRlclZhbHVlTGlzdFwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbHRlckluZm8sIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmlsdGVySW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaWx0ZXJJbmZvXCJdID0gXCJjYXRlZ29yaWNhbEZpbHRlckluZm9cIjtcbiAgICAvLyBEUElfUXVhbnRpdGF0aXZlRmlsdGVySW5mbywgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlRmlsdGVySW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRpdGF0aXZlRmlsdGVySW5mb1wiXSA9IFwicXVhbnRpdGF0aXZlRmlsdGVySW5mb1wiO1xuICAgIC8vIERQSV9SZWxhdGl2ZURhdGVGaWx0ZXJJbmZvLCBoYXZpbmcgdHlwZSBSZWxhdGl2ZURhdGVGaWx0ZXJJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSZWxhdGl2ZURhdGVGaWx0ZXJJbmZvXCJdID0gXCJyZWxhdGl2ZURhdGVGaWx0ZXJJbmZvXCI7XG4gICAgLy8gRFBJX0ZpbHRlckluZm8sIGhhdmluZyB0eXBlIEZpbHRlckluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlckluZm9cIl0gPSBcImZpbHRlckluZm9cIjtcbiAgICAvLyBEUElfRmlsdGVyc0luZm8sIGhhdmluZyB0eXBlIEZpbHRlckluZm9yUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlcnNJbmZvXCJdID0gXCJmaWx0ZXJzSW5mb1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbERvbWFpbiwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxEb21haW5QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsRG9tYWluXCJdID0gXCJjYXRlZ29yaWNhbERvbWFpblwiO1xuICAgIC8vIERQSV9RdWFudGl0YXRpdmVEb21haW4sIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZURvbWFpblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRpdGF0aXZlRG9tYWluXCJdID0gXCJxdWFudGl0YXRpdmVEb21haW5cIjtcbiAgICAvLyBEUElfVmFsaWRhdGlvblJlc3VsdHMsIGhhdmluZyB0eXBlIFZhbGlkYXRpb25SZXN1bHRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJWYWxpZGF0aW9uUmVzdWx0c1wiXSA9IFwidmFsaWRhdGlvblJlc3VsdHNcIjtcbiAgICAvLyBEUElfRG9tYWluTWVtYmVyLCBoYXZpbmcgdHlwZSBEb21haW5NZW1iZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpbk1lbWJlclwiXSA9IFwiZG9tYWluTWVtYmVyXCI7XG4gICAgLy8gRFBJX0RvbWFpbk1lbWJlcnMsIGhhdmluZyB0eXBlIERvbWFpbk1lbWJlclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEb21haW5NZW1iZXJzXCJdID0gXCJkb21haW5NZW1iZXJzXCI7XG4gICAgLy8gRFBJX1F1aWNrRmlsdGVyRGlzcGxheSwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJEaXNwbGF5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJRdWlja0ZpbHRlckRpc3BsYXlcIl0gPSBcInF1aWNrRmlsdGVyRGlzcGxheVwiO1xuICAgIC8vIERQSV9RdWlja0ZpbHRlciwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlF1aWNrRmlsdGVyXCJdID0gXCJxdWlja0ZpbHRlclwiO1xuICAgIC8vIERQSV9RdWFudGl0YXRpdmVRdWlja0ZpbHRlciwgaGF2aW5nIHR5cGUgUXVhbnRpdGF0aXZlUXVpY2tGaWx0ZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50aXRhdGl2ZVF1aWNrRmlsdGVyXCJdID0gXCJxdWFudGl0YXRpdmVRdWlja0ZpbHRlclwiO1xuICAgIC8vIERQSV9SZWxhdGl2ZURhdGVRdWlja0ZpbHRlciwgaGF2aW5nIHR5cGUgUmVsYXRpdmVEYXRlUXVpY2tGaWx0ZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlbGF0aXZlRGF0ZVF1aWNrRmlsdGVyXCJdID0gXCJyZWxhdGl2ZURhdGVRdWlja0ZpbHRlclwiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbFF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbFF1aWNrRmlsdGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbFF1aWNrRmlsdGVyXCJdID0gXCJjYXRlZ29yaWNhbFF1aWNrRmlsdGVyXCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoaWNhbFF1aWNrRmlsdGVyLCBoYXZpbmcgdHlwZSBIaWVyYXJjaGljYWxRdWlja0ZpbHRlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2hpY2FsUXVpY2tGaWx0ZXJcIl0gPSBcImhpZXJhcmNoaWNhbFF1aWNrRmlsdGVyXCI7XG4gICAgLy8gRFBJX0RvbWFpblRhYmxlLCBoYXZpbmcgdHlwZSBEb21haW5UYWJsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRG9tYWluVGFibGVcIl0gPSBcImRvbWFpblRhYmxlXCI7XG4gICAgLy8gRFBJX0RvbWFpblRhYmxlcywgaGF2aW5nIHR5cGUgRG9tYWluVGFibGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRG9tYWluVGFibGVzXCJdID0gXCJkb21haW5UYWJsZXNcIjtcbiAgICAvLyBEUElfRG9tYWluVHVwbGVzLCBoYXZpbmcgdHlwZSBUdXBsZXNcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpblR1cGxlc1wiXSA9IFwiZG9tYWluVHVwbGVzXCI7XG4gICAgLy8gRFBJX1NlYXJjaFR1cGxlcywgaGF2aW5nIHR5cGUgVHVwbGVzXG4gICAgUGFyYW1ldGVySWRbXCJTZWFyY2hUdXBsZXNcIl0gPSBcInNlYXJjaFR1cGxlc1wiO1xuICAgIC8vIERQSV9TZWxlY3RlZFR1cGxlcywgaGF2aW5nIHR5cGUgVHVwbGVIYXNoXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZFR1cGxlc1wiXSA9IFwic2VsZWN0ZWRUdXBsZXNcIjtcbiAgICAvLyBEUElfUGVuZGluZ1R1cGxlcywgaGF2aW5nIHR5cGUgVHVwbGVIYXNoXG4gICAgUGFyYW1ldGVySWRbXCJQZW5kaW5nVHVwbGVzXCJdID0gXCJwZW5kaW5nVHVwbGVzXCI7XG4gICAgLy8gRFBJX0RvbWFpbiwgaGF2aW5nIHR5cGUgTXVsdGlEb21haW5cbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpblwiXSA9IFwiZG9tYWluXCI7XG4gICAgLy8gRFBJX0RhdGVPcHRpb24sIGhhdmluZyB0eXBlIERhdGVCaW5EaWFsb2dPcHRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVPcHRpb25cIl0gPSBcImRhdGVPcHRpb25cIjtcbiAgICAvLyBEUElfRGF0ZU9wdGlvbnMsIGhhdmluZyB0eXBlIERhdGVCaW5EaWFsb2dPcHRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0ZU9wdGlvbnNcIl0gPSBcImRhdGVPcHRpb25zXCI7XG4gICAgLy8gRFBJX0ZpbHRlclJhbmdlQWRkLCBoYXZpbmcgdHlwZSBGaWx0ZXJSYW5nZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyUmFuZ2VBZGRcIl0gPSBcImZpbHRlclJhbmdlQWRkXCI7XG4gICAgLy8gRFBJX0ZpbHRlclJhbmdlUmVtb3ZlLCBoYXZpbmcgdHlwZSBGaWx0ZXJSYW5nZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyUmFuZ2VSZW1vdmVcIl0gPSBcImZpbHRlclJhbmdlUmVtb3ZlXCI7XG4gICAgLy8gRFBJX0ZpbHRlck9wdGlvbnMsIGhhdmluZyB0eXBlIEZpbHRlck9wdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlck9wdGlvbnNcIl0gPSBcImZpbHRlck9wdGlvbnNcIjtcbiAgICAvLyBEUElfTGF5ZXIsIGhhdmluZyB0eXBlIExheWVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJMYXllclwiXSA9IFwibGF5ZXJcIjtcbiAgICAvLyBEUElfTGF5ZXJzLCBoYXZpbmcgdHlwZSBMYXllclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJMYXllcnNcIl0gPSBcImxheWVyc1wiO1xuICAgIC8vIERQSV9NYXJrc0NhcmRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIE1hcmtzQ2FyZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWFya3NDYXJkUHJlc01vZGVsXCJdID0gXCJtYXJrc0NhcmRQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfVUlJdGVtLCBoYXZpbmcgdHlwZSBVSUl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlVJSXRlbVwiXSA9IFwidWlJdGVtXCI7XG4gICAgLy8gRFBJX0VuY29kaW5nVUlJdGVtLCBoYXZpbmcgdHlwZSBFbmNvZGluZ1VJSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRW5jb2RpbmdVSUl0ZW1cIl0gPSBcImVuY29kaW5nVWlJdGVtXCI7XG4gICAgLy8gRFBJX0VuY29kaW5nVUlJdGVtcywgaGF2aW5nIHR5cGUgRW5jb2RpbmdVSUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRW5jb2RpbmdVSUl0ZW1zXCJdID0gXCJlbmNvZGluZ1VpSXRlbXNcIjtcbiAgICAvLyBEUElfUHJpbVR5cGVVSUl0ZW0sIGhhdmluZyB0eXBlIFByaW1pdGl2ZVR5cGVVSUl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlByaW1UeXBlVUlJdGVtXCJdID0gXCJwcmltaXRpdmVUeXBlVWlJdGVtXCI7XG4gICAgLy8gRFBJX1ByaW1UeXBlVUlJdGVtcywgaGF2aW5nIHR5cGUgUHJpbWl0aXZlVHlwZVVJSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQcmltVHlwZVVJSXRlbXNcIl0gPSBcInByaW1pdGl2ZVR5cGVVaUl0ZW1zXCI7XG4gICAgLy8gRFBJX1ByaW1pdGl2ZVR5cGVVSUl0ZW1PcHRpb25zLCBoYXZpbmcgdHlwZSBQcmltaXRpdmVUeXBlVUlJdGVtT3B0aW9uc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHJpbWl0aXZlVHlwZVVJSXRlbU9wdGlvbnNcIl0gPSBcInByaW1pdGl2ZVR5cGVVaUl0ZW1PcHRpb25zXCI7XG4gICAgLy8gRFBJX0xpbmVVSUl0ZW1PcHRpb25zLCBoYXZpbmcgdHlwZSBMaW5lVUlJdGVtT3B0aW9uc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGluZVVJSXRlbU9wdGlvbnNcIl0gPSBcImxpbmVVaUl0ZW1PcHRpb25zXCI7XG4gICAgLy8gRFBJX0xpbmVJbnRlcnBvbGF0aW9uTW9kZVVJSXRlbSwgaGF2aW5nIHR5cGUgTGluZUludGVycG9sYXRpb25Nb2RlVUlJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJMaW5lSW50ZXJwb2xhdGlvbk1vZGVVSUl0ZW1cIl0gPSBcImxpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbVwiO1xuICAgIC8vIERQSV9MaW5lSW50ZXJwb2xhdGlvbk1vZGVVSUl0ZW1TZXQsIGhhdmluZyB0eXBlIExpbmVJbnRlcnBvbGF0aW9uTW9kZVVJSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJMaW5lSW50ZXJwb2xhdGlvbk1vZGVVSUl0ZW1TZXRcIl0gPSBcImxpbmVJbnRlcnBvbGF0aW9uTW9kZVVpSXRlbVNldFwiO1xuICAgIC8vIERQSV9MaW5lTWFya2VyUG9zaXRpb25VSUl0ZW0sIGhhdmluZyB0eXBlIExpbmVNYXJrZXJQb3NpdGlvblVJSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGluZU1hcmtlclBvc2l0aW9uVUlJdGVtXCJdID0gXCJsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW1cIjtcbiAgICAvLyBEUElfTGluZU1hcmtlclBvc2l0aW9uVUlJdGVtU2V0LCBoYXZpbmcgdHlwZSBMaW5lTWFya2VyUG9zaXRpb25VSUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiTGluZU1hcmtlclBvc2l0aW9uVUlJdGVtU2V0XCJdID0gXCJsaW5lTWFya2VyUG9zaXRpb25VaUl0ZW1TZXRcIjtcbiAgICAvLyBEUElfTWFya3NDYXJkRHJvcGRvd25JdGVtLCBoYXZpbmcgdHlwZSBNYXJrc0NhcmREcm9wZG93bkl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtzQ2FyZERyb3Bkb3duSXRlbVwiXSA9IFwibWFya3NDYXJkRHJvcGRvd25JdGVtXCI7XG4gICAgLy8gRFBJX1Rvb2x0aXBEcm9wZG93bkl0ZW0sIGhhdmluZyB0eXBlIFRvb2x0aXBEcm9wZG93bkl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRvb2x0aXBEcm9wZG93bkl0ZW1cIl0gPSBcInRvb2x0aXBEcm9wZG93bkl0ZW1cIjtcbiAgICAvLyBEUElfVGV4dERyb3Bkb3duSXRlbSwgaGF2aW5nIHR5cGUgVGV4dERyb3Bkb3duSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGV4dERyb3Bkb3duSXRlbVwiXSA9IFwidGV4dERyb3Bkb3duSXRlbVwiO1xuICAgIC8vIERQSV9Db2xvckRyb3Bkb3duSXRlbSwgaGF2aW5nIHR5cGUgQ29sb3JEcm9wZG93bkl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yRHJvcGRvd25JdGVtXCJdID0gXCJjb2xvckRyb3Bkb3duSXRlbVwiO1xuICAgIC8vIERQSV9TaXplU2xpZGVyUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTaXplU2xpZGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaXplU2xpZGVyUHJlc01vZGVsXCJdID0gXCJzaXplU2xpZGVyUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0luZmxlY3Rpb25Qb2ludCwgaGF2aW5nIHR5cGUgSW5mbGVjdGlvblBvaW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJJbmZsZWN0aW9uUG9pbnRcIl0gPSBcImluZmxlY3Rpb25Qb2ludFwiO1xuICAgIC8vIERQSV9JbmZsZWN0aW9uUG9pbnRzLCBoYXZpbmcgdHlwZSBJbmZsZWN0aW9uUG9pbnRQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5mbGVjdGlvblBvaW50c1wiXSA9IFwiaW5mbGVjdGlvblBvaW50c1wiO1xuICAgIC8vIERQSV9Ob3RjaCwgaGF2aW5nIHR5cGUgTm90Y2hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk5vdGNoXCJdID0gXCJub3RjaFwiO1xuICAgIC8vIERQSV9Ob3RjaGVzLCBoYXZpbmcgdHlwZSBOb3RjaFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJOb3RjaGVzXCJdID0gXCJub3RjaGVzXCI7XG4gICAgLy8gRFBJX01hcmtTaXplT3B0aW9uc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFya1NpemVPcHRpb25zUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrU2l6ZU9wdGlvbnNQcmVzTW9kZWxcIl0gPSBcIm1hcmtTaXplT3B0aW9uc1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9Nb2RpZnlNYXJrc0luU2V0LCBoYXZpbmcgdHlwZSBBZGRPclJlbW92ZU1hcmtzXG4gICAgUGFyYW1ldGVySWRbXCJNb2RpZnlNYXJrc0luU2V0XCJdID0gXCJhZGRPclJlbW92ZU1hcmtzXCI7XG4gICAgLy8gRFBJX01hcmtMYWJlbHNTcGVjaWZpY2F0aW9uLCBoYXZpbmcgdHlwZSBNYXJrTGFiZWxzU3BlY2lmaWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWFya0xhYmVsc1NwZWNpZmljYXRpb25cIl0gPSBcIm1hcmtMYWJlbHNTcGVjaWZpY2F0aW9uXCI7XG4gICAgLy8gRFBJX0NvbG9yUGFsZXR0ZSwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclBhbGV0dGVcIl0gPSBcImNvbG9yUGFsZXR0ZVwiO1xuICAgIC8vIERQSV9TZWxlY3RlZENvbG9yUGFsZXR0ZSwgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZENvbG9yUGFsZXR0ZVwiXSA9IFwic2VsZWN0ZWRDb2xvclBhbGV0dGVcIjtcbiAgICAvLyBEUElfQ29sb3JQYWxldHRlcywgaGF2aW5nIHR5cGUgQ29sb3JQYWxldHRlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yUGFsZXR0ZXNcIl0gPSBcImNvbG9yUGFsZXR0ZXNcIjtcbiAgICAvLyBEUElfQ29sb3JQYWxldHRlR3JvdXAsIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUdyb3VwUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb2xvclBhbGV0dGVHcm91cFwiXSA9IFwiY29sb3JQYWxldHRlR3JvdXBcIjtcbiAgICAvLyBEUElfQ2F0Q29sb3JQYWxldHRlR3JvdXBzLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVHcm91cFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDYXRDb2xvclBhbGV0dGVHcm91cHNcIl0gPSBcImNhdENvbG9yUGFsZXR0ZUdyb3Vwc1wiO1xuICAgIC8vIERQSV9RQ29sb3JQYWxldHRlR3JvdXBzLCBoYXZpbmcgdHlwZSBDb2xvclBhbGV0dGVHcm91cFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJRQ29sb3JQYWxldHRlR3JvdXBzXCJdID0gXCJxQ29sb3JQYWxldHRlR3JvdXBzXCI7XG4gICAgLy8gRFBJX0NvbG9yUGFsZXR0ZUNvbGxlY3Rpb24sIGhhdmluZyB0eXBlIENvbG9yUGFsZXR0ZUNvbGxlY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yUGFsZXR0ZUNvbGxlY3Rpb25cIl0gPSBcImNvbG9yUGFsZXR0ZUNvbGxlY3Rpb25cIjtcbiAgICAvLyBEUElfUXVhbnRpdGF0aXZlQ29sb3IsIGhhdmluZyB0eXBlIFF1YW50aXRhdGl2ZUNvbG9yUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJRdWFudGl0YXRpdmVDb2xvclwiXSA9IFwicXVhbnRpdGF0aXZlQ29sb3JcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxDb2xvciwgaGF2aW5nIHR5cGUgQ2F0ZWdvcmljYWxDb2xvclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxDb2xvclwiXSA9IFwiY2F0ZWdvcmljYWxDb2xvclwiO1xuICAgIC8vIERQSV9JdGVtQ29sb3JQYWlyLCBoYXZpbmcgdHlwZSBJdGVtQ29sb3JQYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJJdGVtQ29sb3JQYWlyXCJdID0gXCJpdGVtQ29sb3JQYWlyXCI7XG4gICAgLy8gRFBJX0l0ZW1Db2xvclBhaXJzLCBoYXZpbmcgdHlwZSBJdGVtQ29sb3JQYWlyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkl0ZW1Db2xvclBhaXJzXCJdID0gXCJpdGVtQ29sb3JQYWlyc1wiO1xuICAgIC8vIERQSV9WUUxDb21tYW5kUmVzcG9uc2UsIGhhdmluZyB0eXBlIFZRTENvbW1hbmRSZXNwb25zZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVlFMQ29tbWFuZFJlc3BvbnNlXCJdID0gXCJ2cWxDbWRSZXNwb25zZVwiO1xuICAgIC8vIERQSV9MYXlvdXRTdGF0dXMsIGhhdmluZyB0eXBlIExheW91dFN0YXR1c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGF5b3V0U3RhdHVzXCJdID0gXCJsYXlvdXRTdGF0dXNcIjtcbiAgICAvLyBEUElfVml6U3RhdGUsIGhhdmluZyB0eXBlIFZpelN0YXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJWaXpTdGF0ZVwiXSA9IFwidml6U3RhdGVcIjtcbiAgICAvLyBEUElfVml6U3RhdGVMaXN0LCBoYXZpbmcgdHlwZSBWaXpTdGF0ZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJWaXpTdGF0ZUxpc3RcIl0gPSBcInZpelN0YXRlTGlzdFwiO1xuICAgIC8vIERQSV9Db21tYW5kUmVzdWx0LCBoYXZpbmcgdHlwZSBDb21tYW5kUmVzdWx0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb21tYW5kUmVzdWx0XCJdID0gXCJjbWRSZXN1bHRcIjtcbiAgICAvLyBEUElfQ29tbWFuZFJlc3VsdExpc3QsIGhhdmluZyB0eXBlIENvbW1hbmRSZXN1bHRQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29tbWFuZFJlc3VsdExpc3RcIl0gPSBcImNtZFJlc3VsdExpc3RcIjtcbiAgICAvLyBEUElfVVJMQWN0aW9uLCBoYXZpbmcgdHlwZSBVUkxBY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlVSTEFjdGlvblwiXSA9IFwidXJsQWN0aW9uXCI7XG4gICAgLy8gRFBJX1VSTEFjdGlvbkxpc3QsIGhhdmluZyB0eXBlIFVSTEFjdGlvblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJVUkxBY3Rpb25MaXN0XCJdID0gXCJ1cmxBY3Rpb25MaXN0XCI7XG4gICAgLy8gRFBJX0xlZ2FjeU1lbnUsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2FjeU1lbnVcIl0gPSBcImxlZ2FjeU1lbnVcIjtcbiAgICAvLyBEUElfTGVnYWN5TWVudXMsIGhhdmluZyB0eXBlIExlZ2FjeU1lbnVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiTGVnYWN5TWVudXNcIl0gPSBcImxlZ2FjeU1lbnVzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25BdHRlbXB0SW5mbywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbkF0dGVtcHRJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uQXR0ZW1wdEluZm9cIl0gPSBcImNvbm5lY3Rpb25BdHRlbXB0SW5mb1wiO1xuICAgIC8vIERQSV9EYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvXCJdID0gXCJkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9zLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VDb25uZWN0aW9uQXR0ZW1wdEluZm9zXCJdID0gXCJkYXRhU291cmNlQ29ubmVjdGlvbkF0dGVtcHRJbmZvc1wiO1xuICAgIC8vIERQSV9Db21tYW5kVmFsaWRhdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ29tbWFuZFZhbGlkYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbW1hbmRWYWxpZGF0aW9uUHJlc01vZGVsXCJdID0gXCJjb21tYW5kVmFsaWRhdGlvblByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9XYXJuaW5nTWVzc2FnZSwgaGF2aW5nIHR5cGUgV2FybmluZ01lc3NhZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIldhcm5pbmdNZXNzYWdlXCJdID0gXCJ3YXJuaW5nTWVzc2FnZVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9BcHBsaWNhdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQXBwbGljYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFwcGxpY2F0aW9uUHJlc01vZGVsXCJdID0gXCJhcHBsaWNhdGlvblByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9Ub29sYmFyUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBUb29sYmFyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUb29sYmFyUHJlc01vZGVsXCJdID0gXCJ0b29sYmFyUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1dvcmtib29rUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBXb3JrYm9va1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV29ya2Jvb2tQcmVzTW9kZWxcIl0gPSBcIndvcmtib29rUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1NlcnZlckZvbnRzLCBoYXZpbmcgdHlwZSBTZXJ2ZXJGb250c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2VydmVyRm9udHNcIl0gPSBcInNlcnZlckZvbnRzXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFB1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWxcIl0gPSBcInB1Ymxpc2hEYXRhU291cmNlTWV0YWRhdGFQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFByZXNNb2RlbFwiXSA9IFwiZGFzaGJvYXJkUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZFNpemVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZFNpemVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFNpemVQcmVzTW9kZWxcIl0gPSBcImRhc2hib2FyZFNpemVQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkU2l6ZVdpdGhWYWxpZGF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmRTaXplV2l0aFZhbGlkYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFNpemVXaXRoVmFsaWRhdGlvblByZXNNb2RlbFwiXSA9IFwiZGFzaGJvYXJkU2l6ZVdpdGhWYWxpZGF0aW9uUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZEluZm9QcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhc2hib2FyZEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZEluZm9QcmVzTW9kZWxcIl0gPSBcImRhc2hib2FyZEluZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfVmlzdWFsUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBWaXN1YWxQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbFByZXNNb2RlbFwiXSA9IFwidmlzdWFsXCI7XG4gICAgLy8gRFBJX1Zpc3VhbFByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFZpc3VhbFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJWaXN1YWxQcmVzTW9kZWxzXCJdID0gXCJ2aXN1YWxzXCI7XG4gICAgLy8gRFBJX0Ryb3BMaW5lc1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRHJvcExpbmVzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcm9wTGluZXNQcmVzTW9kZWxcIl0gPSBcImRyb3BMaW5lc1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9Ecm9wRmllbGRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERyb3BGaWVsZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJvcEZpZWxkUHJlc01vZGVsXCJdID0gXCJkcm9wRmllbGRQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRHJvcEZpZWxkUmVzdWx0UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBEcm9wRmllbGRSZXN1bHRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyb3BGaWVsZFJlc3VsdFByZXNNb2RlbFwiXSA9IFwiZHJvcEZpZWxkUmVzdWx0UHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0N1cnJlbnRBeGlzUmFuZ2UsIGhhdmluZyB0eXBlIERhdGFWYWx1ZVJhbmdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdXJyZW50QXhpc1JhbmdlXCJdID0gXCJjdXJyZW50QXhpc1JhbmdlXCI7XG4gICAgLy8gRFBJX0N1cnJlbnRBeGlzUmFuZ2VOb1RpbWUsIGhhdmluZyB0eXBlIERhdGFWYWx1ZVJhbmdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdXJyZW50QXhpc1JhbmdlTm9UaW1lXCJdID0gXCJjdXJyZW50QXhpc1JhbmdlTm9UaW1lXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRBeGlzUmFuZ2UsIGhhdmluZyB0eXBlIERhdGFWYWx1ZVJhbmdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEZWZhdWx0QXhpc1JhbmdlXCJdID0gXCJkZWZhdWx0QXhpc1JhbmdlXCI7XG4gICAgLy8gRFBJX05ld0F4aXNSYW5nZSwgaGF2aW5nIHR5cGUgRGF0YVZhbHVlUmFuZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk5ld0F4aXNSYW5nZVwiXSA9IFwibmV3QXhpc1JhbmdlXCI7XG4gICAgLy8gRFBJX0F4aXNPcHRpb25zLCBoYXZpbmcgdHlwZSBBeGlzT3B0aW9uc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQXhpc09wdGlvbnNcIl0gPSBcImF4aXNcIjtcbiAgICAvLyBEUElfQXhpc01ham9yVGlja3MsIGhhdmluZyB0eXBlIFRpY2tNYXJrSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQXhpc01ham9yVGlja3NcIl0gPSBcImF4aXNNYWpvclRpY2tzXCI7XG4gICAgLy8gRFBJX0F4aXNNaW5vclRpY2tzLCBoYXZpbmcgdHlwZSBUaWNrTWFya0luZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNNaW5vclRpY2tzXCJdID0gXCJheGlzTWlub3JUaWNrc1wiO1xuICAgIC8vIERQSV9FZGl0QXhpc0RpYWxvZywgaGF2aW5nIHR5cGUgRWRpdEF4aXNEaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkVkaXRBeGlzRGlhbG9nXCJdID0gXCJlZGl0QXhpc0RpYWxvZ1wiO1xuICAgIC8vIERQSV9NYXJrTGFiZWxzLCBoYXZpbmcgdHlwZSBTY2VuZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWFya0xhYmVsc1wiXSA9IFwibWFya0xhYmVsc1wiO1xuICAgIC8vIERQSV9TY2VuZSwgaGF2aW5nIHR5cGUgU2NlbmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjZW5lXCJdID0gXCJzY2VuZVwiO1xuICAgIC8vIERQSV9NYXBTZXJ2ZXIsIGhhdmluZyB0eXBlIE1hcFNlcnZlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWFwU2VydmVyXCJdID0gXCJtYXBTZXJ2ZXJcIjtcbiAgICAvLyBEUElfVmlzdWFsTGlzdCwgaGF2aW5nIHR5cGUgVmlzdWFsTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVmlzdWFsTGlzdFwiXSA9IFwidmlzdWFsTGlzdFwiO1xuICAgIC8vIERQSV9EcmF3Rmlyc3QsIGhhdmluZyB0eXBlIFZpc3VhbExpc3RQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0ZpcnN0XCJdID0gXCJkcmF3Rmlyc3RcIjtcbiAgICAvLyBEUElfRHJhd0xhc3QsIGhhdmluZyB0eXBlIFZpc3VhbExpc3RQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0xhc3RcIl0gPSBcImRyYXdMYXN0XCI7XG4gICAgLy8gRFBJX0RyYXdQYW5lLCBoYXZpbmcgdHlwZSBWaXN1YWxMaXN0UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdQYW5lXCJdID0gXCJkcmF3UGFuZVwiO1xuICAgIC8vIERQSV9Vc2VyUGFuZUluZm8sIGhhdmluZyB0eXBlIFVzZXJQYW5lSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVXNlclBhbmVJbmZvXCJdID0gXCJ1c2VyUGFuZUluZm9cIjtcbiAgICAvLyBEUElfQW5hbHl0aWNzUGFuZSwgaGF2aW5nIHR5cGUgQW5hbHl0aWNzUGFuZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQW5hbHl0aWNzUGFuZVwiXSA9IFwiYW5hbHl0aWNzUGFuZVwiO1xuICAgIC8vIERQSV9BbmFseXRpY3NPYmplY3RJdGVtLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NPYmplY3RJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBbmFseXRpY3NPYmplY3RJdGVtXCJdID0gXCJhbmFseXRpY3NPYmplY3RJdGVtXCI7XG4gICAgLy8gRFBJX0FuYWx5dGljc09iamVjdEl0ZW1zLCBoYXZpbmcgdHlwZSBBbmFseXRpY3NPYmplY3RJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFuYWx5dGljc09iamVjdEl0ZW1zXCJdID0gXCJhbmFseXRpY3NPYmplY3RJdGVtc1wiO1xuICAgIC8vIERQSV9BbmFseXRpY3NPYmplY3RHcm91cCwgaGF2aW5nIHR5cGUgQW5hbHl0aWNzT2JqZWN0R3JvdXBQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFuYWx5dGljc09iamVjdEdyb3VwXCJdID0gXCJhbmFseXRpY3NPYmplY3RHcm91cFwiO1xuICAgIC8vIERQSV9BbmFseXRpY3NPYmplY3RHcm91cHMsIGhhdmluZyB0eXBlIEFuYWx5dGljc09iamVjdEdyb3VwUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFuYWx5dGljc09iamVjdEdyb3Vwc1wiXSA9IFwiYW5hbHl0aWNzT2JqZWN0R3JvdXBzXCI7XG4gICAgLy8gRFBJX0Ryb3Bab25lSXRlbSwgaGF2aW5nIHR5cGUgRHJvcFpvbmVJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcm9wWm9uZUl0ZW1cIl0gPSBcImRyb3Bab25lSXRlbVwiO1xuICAgIC8vIERQSV9Ecm9wWm9uZUl0ZW1zLCBoYXZpbmcgdHlwZSBEcm9wWm9uZUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRHJvcFpvbmVJdGVtc1wiXSA9IFwiZHJvcFpvbmVJdGVtc1wiO1xuICAgIC8vIERQSV9Ecm9wVGFyZ2V0SW5mbywgaGF2aW5nIHR5cGUgRHJvcFRhcmdldEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyb3BUYXJnZXRJbmZvXCJdID0gXCJkcm9wVGFyZ2V0SW5mb1wiO1xuICAgIC8vIERQSV9QYW5lLCBoYXZpbmcgdHlwZSBQYW5lUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lXCJdID0gXCJwYW5lXCI7XG4gICAgLy8gRFBJX1BhbmVzLCBoYXZpbmcgdHlwZSBQYW5lUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhbmVzXCJdID0gXCJwYW5lc1wiO1xuICAgIC8vIERQSV9SYWRpYWxTZWxlY3Rpb25EaXN0YW5jZUluZm8sIGhhdmluZyB0eXBlIFJhZGlhbFNlbGVjdGlvbkRpc3RhbmNlSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmFkaWFsU2VsZWN0aW9uRGlzdGFuY2VJbmZvXCJdID0gXCJyYWRpYWxTZWxlY3Rpb25EaXN0YW5jZUluZm9cIjtcbiAgICAvLyBEUElfTWFwU2NhbGVJbmZvLCBoYXZpbmcgdHlwZSBNYXBTY2FsZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNjYWxlSW5mb1wiXSA9IFwibWFwU2NhbGVJbmZvXCI7XG4gICAgLy8gRFBJX1JlbmRlck5vZGUsIGhhdmluZyB0eXBlIFJlbmRlck5vZGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlbmRlck5vZGVcIl0gPSBcInJlbmRlck5vZGVcIjtcbiAgICAvLyBEUElfUmVuZGVyTm9kZXMsIGhhdmluZyB0eXBlIFJlbmRlck5vZGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUmVuZGVyTm9kZXNcIl0gPSBcInJlbmRlck5vZGVzXCI7XG4gICAgLy8gRFBJX1ByZWRpY3Rpb25CYW5kLCBoYXZpbmcgdHlwZSBQcmVkaWN0aW9uQmFuZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHJlZGljdGlvbkJhbmRcIl0gPSBcInByZWRpY3Rpb25CYW5kXCI7XG4gICAgLy8gRFBJX1ByZWRpY3Rpb25XaGlza2VyLCBoYXZpbmcgdHlwZSBQcmVkaWN0aW9uV2hpc2tlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHJlZGljdGlvbldoaXNrZXJcIl0gPSBcInByZWRpY3Rpb25XaGlza2VyXCI7XG4gICAgLy8gRFBJX0RyYXdHcm91cCwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0dyb3VwXCJdID0gXCJkcmF3R3JvdXBcIjtcbiAgICAvLyBEUElfQ2xpcFJlc2V0LCBoYXZpbmcgdHlwZSBEcmF3SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2xpcFJlc2V0XCJdID0gXCJjbGlwUmVzZXRcIjtcbiAgICAvLyBEUElfRHJhd0l0ZW0sIGhhdmluZyB0eXBlIERyYXdJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3SXRlbVwiXSA9IFwiZHJhd0l0ZW1cIjtcbiAgICAvLyBEUElfVHJhbnNmb3JtUG9wLCBoYXZpbmcgdHlwZSBEcmF3SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVHJhbnNmb3JtUG9wXCJdID0gXCJ0cmFuc2Zvcm1Qb3BcIjtcbiAgICAvLyBEUElfVHJhbnNmb3JtUHVzaCwgaGF2aW5nIHR5cGUgRHJhd0l0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRyYW5zZm9ybVB1c2hcIl0gPSBcInRyYW5zZm9ybVB1c2hcIjtcbiAgICAvLyBEUElfRHJhd0l0ZW1zLCBoYXZpbmcgdHlwZSBEcmF3SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3SXRlbXNcIl0gPSBcImRyYXdJdGVtc1wiO1xuICAgIC8vIERQSV9DbGlwUmVjdCwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2xpcFJlY3RcIl0gPSBcImNsaXBSZWN0XCI7XG4gICAgLy8gRFBJX0RyYXdFbGxpcHNlLCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3RWxsaXBzZVwiXSA9IFwiZHJhd0VsbGlwc2VcIjtcbiAgICAvLyBEUElfRHJhd0ZpbGxFbGxpcHNlLCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3RmlsbEVsbGlwc2VcIl0gPSBcImRyYXdGaWxsRWxsaXBzZVwiO1xuICAgIC8vIERQSV9EcmF3RmlsbFBvbHlnb24sIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdGaWxsUG9seWdvblwiXSA9IFwiZHJhd0ZpbGxQb2x5Z29uXCI7XG4gICAgLy8gRFBJX0RyYXdGaWxsUmVjdCwgaGF2aW5nIHR5cGUgRHJhd1BvaW50c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0ZpbGxSZWN0XCJdID0gXCJkcmF3RmlsbFJlY3RcIjtcbiAgICAvLyBEUElfRHJhd1BvbHlnb24sIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdQb2x5Z29uXCJdID0gXCJkcmF3UG9seWdvblwiO1xuICAgIC8vIERQSV9EcmF3UG9seWxpbmUsIGhhdmluZyB0eXBlIERyYXdQb2ludHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdQb2x5bGluZVwiXSA9IFwiZHJhd1BvbHlsaW5lXCI7XG4gICAgLy8gRFBJX0RyYXdSZWN0LCBoYXZpbmcgdHlwZSBEcmF3UG9pbnRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3UmVjdFwiXSA9IFwiZHJhd1JlY3RcIjtcbiAgICAvLyBEUElfRHJhd0ZpbGxQYXRoLCBoYXZpbmcgdHlwZSBEcmF3UGF0aFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0ZpbGxQYXRoXCJdID0gXCJkcmF3RmlsbFBhdGhcIjtcbiAgICAvLyBEUElfRHJhd1BhdGgsIGhhdmluZyB0eXBlIERyYXdQYXRoUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3UGF0aFwiXSA9IFwiZHJhd1BhdGhcIjtcbiAgICAvLyBEUElfRHJhd1RleHQsIGhhdmluZyB0eXBlIERyYXdUZXh0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3VGV4dFwiXSA9IFwiZHJhd1RleHRcIjtcbiAgICAvLyBEUElfRHJhd0ltYWdlLCBoYXZpbmcgdHlwZSBEcmF3SW1hZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdJbWFnZVwiXSA9IFwiZHJhd0ltYWdlXCI7XG4gICAgLy8gRFBJX0ltYWdlVGlsZUluZm8sIGhhdmluZyB0eXBlIEltYWdlVGlsZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlVGlsZUluZm9cIl0gPSBcInRpbGVJbmZvXCI7XG4gICAgLy8gRFBJX0ltYWdlVGlsZUluZm9zLCBoYXZpbmcgdHlwZSBJbWFnZVRpbGVJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlVGlsZUluZm9zXCJdID0gXCJ0aWxlSW5mb3NcIjtcbiAgICAvLyBEUElfRHJhd0ltYWdlVGlsZXMsIGhhdmluZyB0eXBlIERyYXdJbWFnZVRpbGVzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3SW1hZ2VUaWxlc1wiXSA9IFwiZHJhd0ltYWdlVGlsZXNcIjtcbiAgICAvLyBEUElfRHJhd1BlbiwgaGF2aW5nIHR5cGUgRHJhd1BlblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd1BlblwiXSA9IFwiZHJhd1BlblwiO1xuICAgIC8vIERQSV9EcmF3U29saWRCcnVzaCwgaGF2aW5nIHR5cGUgRHJhd1NvbGlkQnJ1c2hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdTb2xpZEJydXNoXCJdID0gXCJkcmF3U29saWRCcnVzaFwiO1xuICAgIC8vIERQSV9EcmF3VGV4dFByb3BlcnRpZXMsIGhhdmluZyB0eXBlIERyYXdUZXh0UHJvcGVydGllc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd1RleHRQcm9wZXJ0aWVzXCJdID0gXCJkcmF3VGV4dFByb3BzXCI7XG4gICAgLy8gRFBJX0RyYXdHcmFkaWVudEJydXNoLCBoYXZpbmcgdHlwZSBEcmF3R3JhZGllbnRCcnVzaFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhd0dyYWRpZW50QnJ1c2hcIl0gPSBcImRyYXdHcmFkaWVudEJydXNoXCI7XG4gICAgLy8gRFBJX0RyYXdUcmFuc2Zvcm0sIGhhdmluZyB0eXBlIERyYXdUcmFuc2Zvcm1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYXdUcmFuc2Zvcm1cIl0gPSBcInRyYW5zZm9ybVwiO1xuICAgIC8vIERQSV9EcmF3QW50aWFsaWFzLCBoYXZpbmcgdHlwZSBEcmF3QW50aWFsaWFzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcmF3QW50aWFsaWFzXCJdID0gXCJkcmF3QW50aWFsaWFzXCI7XG4gICAgLy8gRFBJX0ltYWdlRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgSW1hZ2VEaWN0aW9uYXJ5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJJbWFnZURpY3Rpb25hcnlcIl0gPSBcImltYWdlRGljdGlvbmFyeVwiO1xuICAgIC8vIERQSV9Db2xvckRpY3Rpb25hcnksIGhhdmluZyB0eXBlIENvbG9yRGljdGlvbmFyeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29sb3JEaWN0aW9uYXJ5XCJdID0gXCJjb2xvckRpY3Rpb25hcnlcIjtcbiAgICAvLyBEUElfTWFya1NoYXBlLCBoYXZpbmcgdHlwZSBNYXJrU2hhcGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcmtTaGFwZVwiXSA9IFwibWFya1NoYXBlXCI7XG4gICAgLy8gRFBJX01hcmtTaGFwZUxpc3QsIGhhdmluZyB0eXBlIE1hcmtTaGFwZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrU2hhcGVMaXN0XCJdID0gXCJtYXJrU2hhcGVMaXN0XCI7XG4gICAgLy8gRFBJX1BhbmVEZXNjcmlwdG9yLCBoYXZpbmcgdHlwZSBQYW5lRGVzY3JpcHRvclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFuZURlc2NyaXB0b3JcIl0gPSBcInBhbmVEZXNjcmlwdG9yXCI7XG4gICAgLy8gRFBJX1BETWFya3MsIGhhdmluZyB0eXBlIFBETWFya3NQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBETWFya3NcIl0gPSBcInBkTWFya3NcIjtcbiAgICAvLyBEUElfUERNYXJrc01hcCwgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBQRE1hcmtzUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiUERNYXJrc01hcFwiXSA9IFwicGRNYXJrc01hcFwiO1xuICAgIC8vIERQSV9MYWJlbFRleHRUYWJsZSwgaGF2aW5nIHR5cGUgTGFiZWxUZXh0VGFibGVcbiAgICBQYXJhbWV0ZXJJZFtcIkxhYmVsVGV4dFRhYmxlXCJdID0gXCJsYWJlbFRleHRUYWJsZVwiO1xuICAgIC8vIERQSV9UZXh0VGFibGVIZWxwZXIsIGhhdmluZyB0eXBlIFRleHRUYWJsZUhlbHBlclxuICAgIFBhcmFtZXRlcklkW1wiVGV4dFRhYmxlSGVscGVyXCJdID0gXCJ0ZXh0VGFibGVIZWxwZXJcIjtcbiAgICAvLyBEUElfR2VvbWV0cnlUYWJsZSwgaGF2aW5nIHR5cGUgR2VvbWV0cnlUYWJsZVxuICAgIFBhcmFtZXRlcklkW1wiR2VvbWV0cnlUYWJsZVwiXSA9IFwiZ2VvbWV0cnlUYWJsZVwiO1xuICAgIC8vIERQSV9QYW5lTWFya3MsIGhhdmluZyB0eXBlIFBhbmVNYXJrc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFuZU1hcmtzXCJdID0gXCJwYW5lTWFya3NcIjtcbiAgICAvLyBEUElfUGFuZU1hcmtzTGlzdCwgaGF2aW5nIHR5cGUgUGFuZU1hcmtzUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBhbmVNYXJrc0xpc3RcIl0gPSBcInBhbmVNYXJrc0xpc3RcIjtcbiAgICAvLyBEUElfQnJ1c2hpbmdTZWxlY3Rpb24sIGhhdmluZyB0eXBlIFNlbGVjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQnJ1c2hpbmdTZWxlY3Rpb25cIl0gPSBcImJydXNoaW5nXCI7XG4gICAgLy8gRFBJX1NlbGVjdGlvbiwgaGF2aW5nIHR5cGUgU2VsZWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25cIl0gPSBcInNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9CcnVzaGluZ1NlbGVjdGlvbkxpc3QsIGhhdmluZyB0eXBlIFNlbGVjdGlvblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJCcnVzaGluZ1NlbGVjdGlvbkxpc3RcIl0gPSBcImJydXNoaW5nU2VsZWN0aW9uTGlzdFwiO1xuICAgIC8vIERQSV9TZWxlY3Rpb25MaXN0LCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uTGlzdFwiXSA9IFwic2VsZWN0aW9uTGlzdFwiO1xuICAgIC8vIERQSV9TaGVsZlNlbGVjdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBTaGVsZlNlbGVjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZTZWxlY3Rpb25Nb2RlbFwiXSA9IFwic2hlbGZTZWxlY3Rpb25Nb2RlbFwiO1xuICAgIC8vIERQSV9TaGVsZlNlbGVjdGlvbk1vZGVscywgaGF2aW5nIHR5cGUgU2hlbGZTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZTZWxlY3Rpb25Nb2RlbHNcIl0gPSBcInNoZWxmU2VsZWN0aW9uTW9kZWxzXCI7XG4gICAgLy8gRFBJX1NoZWxmU2VsZWN0aW9uc01vZGVsLCBoYXZpbmcgdHlwZSBTaGVsZlNlbGVjdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmU2VsZWN0aW9uc01vZGVsXCJdID0gXCJzaGVsZlNlbGVjdGlvbnNNb2RlbFwiO1xuICAgIC8vIERQSV9EaW1WYWxTZWxlY3Rpb25Nb2RlbCwgaGF2aW5nIHR5cGUgRGltZW5zaW9uVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpbVZhbFNlbGVjdGlvbk1vZGVsXCJdID0gXCJkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsXCI7XG4gICAgLy8gRFBJX0RpbVZhbFNlbGVjdGlvbk1vZGVscywgaGF2aW5nIHR5cGUgRGltZW5zaW9uVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGltVmFsU2VsZWN0aW9uTW9kZWxzXCJdID0gXCJkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIC8vIERQSV9IaWVyVmFsU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIEhpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyVmFsU2VsZWN0aW9uTW9kZWxcIl0gPSBcImhpZXJhcmNoaWNhbFZhbHVlU2VsZWN0aW9uTW9kZWxcIjtcbiAgICAvLyBEUElfSGllclZhbFNlbGVjdGlvbk1vZGVscywgaGF2aW5nIHR5cGUgSGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSGllclZhbFNlbGVjdGlvbk1vZGVsc1wiXSA9IFwiaGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25Nb2RlbHNcIjtcbiAgICAvLyBEUElfUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVsLCBoYXZpbmcgdHlwZSBRdWFudGF0aXZlUmFuZ2VTZWxlY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50UmFuZ2VTZWxlY3Rpb25Nb2RlbFwiXSA9IFwicXVhbnRhdGl2ZVJhbmdlU2VsZWN0aW9uTW9kZWxcIjtcbiAgICAvLyBEUElfUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgaGF2aW5nIHR5cGUgUXVhbnRhdGl2ZVJhbmdlU2VsZWN0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50UmFuZ2VTZWxlY3Rpb25Nb2RlbHNcIl0gPSBcInF1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIC8vIERQSV9RdWFudFZhbHVlU2VsZWN0aW9uTW9kZWwsIGhhdmluZyB0eXBlIFF1YW50YXRpdmVWYWx1ZVNlbGVjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRWYWx1ZVNlbGVjdGlvbk1vZGVsXCJdID0gXCJxdWFudGF0aXZlVmFsdWVTZWxlY3Rpb25Nb2RlbFwiO1xuICAgIC8vIERQSV9RdWFudFZhbHVlU2VsZWN0aW9uTW9kZWxzLCBoYXZpbmcgdHlwZSBRdWFudGF0aXZlVmFsdWVTZWxlY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRWYWx1ZVNlbGVjdGlvbk1vZGVsc1wiXSA9IFwicXVhbnRhdGl2ZVZhbHVlU2VsZWN0aW9uTW9kZWxzXCI7XG4gICAgLy8gRFBJX0xlZ2VuZFNlbGVjdGlvbkluZm8sIGhhdmluZyB0eXBlIExlZ2VuZFNlbGVjdGlvbkluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxlZ2VuZFNlbGVjdGlvbkluZm9cIl0gPSBcImxlZ2VuZFNlbGVjdGlvbkluZm9cIjtcbiAgICAvLyBEUElfTm9kZVJlZmVyZW5jZSwgaGF2aW5nIHR5cGUgTm9kZVJlZmVyZW5jZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTm9kZVJlZmVyZW5jZVwiXSA9IFwibm9kZVJlZmVyZW5jZVwiO1xuICAgIC8vIERQSV9QYWdlUmVmZXJlbmNlLCBoYXZpbmcgdHlwZSBQYWdlUmVmZXJlbmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlUmVmZXJlbmNlXCJdID0gXCJwYWdlUmVmZXJlbmNlXCI7XG4gICAgLy8gRFBJX09yaWVudGVkTm9kZVJlZmVyZW5jZSwgaGF2aW5nIHR5cGUgT3JpZW50ZWROb2RlUmVmZXJlbmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJPcmllbnRlZE5vZGVSZWZlcmVuY2VcIl0gPSBcIm9yaWVudGVkTm9kZVJlZmVyZW5jZVwiO1xuICAgIC8vIERQSV9PcmllbnRlZE5vZGVSZWZlcmVuY2VzLCBoYXZpbmcgdHlwZSBPcmllbnRlZE5vZGVSZWZlcmVuY2VQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiT3JpZW50ZWROb2RlUmVmZXJlbmNlc1wiXSA9IFwib3JpZW50ZWROb2RlUmVmZXJlbmNlc1wiO1xuICAgIC8vIERQSV9TZWxlY3Rpb25EYXRhLCBoYXZpbmcgdHlwZSBTZWxlY3Rpb25EYXRhUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25EYXRhXCJdID0gXCJzZWxlY3Rpb25EYXRhXCI7XG4gICAgLy8gRFBJX0hpZ2hsaWdodGVkRGF0YSwgaGF2aW5nIHR5cGUgSGlnaGxpZ2h0ZWREYXRhUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaWdobGlnaHRlZERhdGFcIl0gPSBcImhpZ2hsaWdodGVkRGF0YVwiO1xuICAgIC8vIERQSV9Ob2RlLCBoYXZpbmcgdHlwZSBOb2RlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOb2RlXCJdID0gXCJub2RlXCI7XG4gICAgLy8gRFBJX05vZGVzLCBoYXZpbmcgdHlwZSBOb2RlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIk5vZGVzXCJdID0gXCJub2Rlc1wiO1xuICAgIC8vIERQSV9TZWxlY3RlZE5vZGVzLCBoYXZpbmcgdHlwZSBOb2RlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkTm9kZXNcIl0gPSBcInNlbGVjdGVkTm9kZXNcIjtcbiAgICAvLyBEUElfVXNlckFjdGlvbiwgaGF2aW5nIHR5cGUgQWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJVc2VyQWN0aW9uXCJdID0gXCJ1c2VyQWN0aW9uXCI7XG4gICAgLy8gRFBJX1VzZXJBY3Rpb25zLCBoYXZpbmcgdHlwZSBBY3Rpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVXNlckFjdGlvbnNcIl0gPSBcInVzZXJBY3Rpb25zXCI7XG4gICAgLy8gRFBJX0xpbmtTcGVjLCBoYXZpbmcgdHlwZSBMaW5rU3BlY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGlua1NwZWNcIl0gPSBcImxpbmtTcGVjXCI7XG4gICAgLy8gRFBJX0FjdGlvblNwZWNpZmljYXRpb25Nb2RlbCwgaGF2aW5nIHR5cGUgQWN0aW9uU3BlY2lmaWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uU3BlY2lmaWNhdGlvbk1vZGVsXCJdID0gXCJhY3Rpb25TcGVjaWZpY2F0aW9uXCI7XG4gICAgLy8gRFBJX0xpbmtTcGVjaWZpY2F0aW9uLCBoYXZpbmcgdHlwZSBMaW5rU3BlY2lmaWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTGlua1NwZWNpZmljYXRpb25cIl0gPSBcImxpbmtTcGVjaWZpY2F0aW9uXCI7XG4gICAgLy8gRFBJX1NjcmlwdERlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBTY3JpcHREZXNjcmlwdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2NyaXB0RGVzY3JpcHRpb25cIl0gPSBcInNjcmlwdERlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX0FjdGlvblNvdXJjZSwgaGF2aW5nIHR5cGUgQWN0aW9uU291cmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25Tb3VyY2VcIl0gPSBcImFjdGlvblNvdXJjZVwiO1xuICAgIC8vIERQSV9GaWVsZEV4cHJJdGVtLCBoYXZpbmcgdHlwZSBGaWVsZEV4cHJJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZEV4cHJJdGVtXCJdID0gXCJmaWVsZEV4cHJlc3Npb25JdGVtXCI7XG4gICAgLy8gRFBJX0ZpZWxkRXhwclZlY3RvciwgaGF2aW5nIHR5cGUgRmllbGRFeHBySXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZEV4cHJWZWN0b3JcIl0gPSBcImZpZWxkRXhwcmVzc2lvblZlY3RvclwiO1xuICAgIC8vIERQSV9BY3Rpb25Db21ib0l0ZW0sIGhhdmluZyB0eXBlIEFjdGlvbkNvbWJvSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uQ29tYm9JdGVtXCJdID0gXCJhY3Rpb25Db21ib0l0ZW1cIjtcbiAgICAvLyBEUElfQWN0aW9uQ29tYm9WZWN0b3IsIGhhdmluZyB0eXBlIEFjdGlvbkNvbWJvSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25Db21ib1ZlY3RvclwiXSA9IFwiYWN0aW9uQ29tYm9WZWN0b3JcIjtcbiAgICAvLyBEUElfQWN0aW9uU291cmNlQ29tYm8sIGhhdmluZyB0eXBlIEFjdGlvblNvdXJjZUNvbWJvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25Tb3VyY2VDb21ib1wiXSA9IFwiYWN0aW9uU291cmNlQ29tYm9cIjtcbiAgICAvLyBEUElfQWN0aW9uRGVzdENvbWJvLCBoYXZpbmcgdHlwZSBBY3Rpb25Db21ib1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uRGVzdENvbWJvXCJdID0gXCJhY3Rpb25EZXN0Q29tYm9cIjtcbiAgICAvLyBEUElfQWN0aW9uRmllbGRMaXN0LCBoYXZpbmcgdHlwZSBBY3Rpb25GaWVsZExpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGlvbkZpZWxkTGlzdFwiXSA9IFwiYWN0aW9uRmllbGRMaXN0XCI7XG4gICAgLy8gRFBJX0VkaXRCcnVzaEFjdGlvbiwgaGF2aW5nIHR5cGUgRWRpdEJydXNoQWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFZGl0QnJ1c2hBY3Rpb25cIl0gPSBcImVkaXRCcnVzaEFjdGlvblwiO1xuICAgIC8vIERQSV9VcGRhdGVBY3Rpb25Tb3VyY2UsIGhhdmluZyB0eXBlIFVwZGF0ZUFjdGlvblNvdXJjZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVXBkYXRlQWN0aW9uU291cmNlXCJdID0gXCJ1cGRhdGVBY3Rpb25Tb3VyY2VcIjtcbiAgICAvLyBEUElfVXBkYXRlQnJ1c2hBY3Rpb24sIGhhdmluZyB0eXBlIFVwZGF0ZUJydXNoQWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJVcGRhdGVCcnVzaEFjdGlvblwiXSA9IFwidXBkYXRlQnJ1c2hBY3Rpb25cIjtcbiAgICAvLyBEUElfQWN0aW9uV2FybmluZ3MsIGhhdmluZyB0eXBlIEFjdGlvbldhcm5pbmdzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25XYXJuaW5nc1wiXSA9IFwiYWN0aW9uV2FybmluZ3NcIjtcbiAgICAvLyBEUElfRWRpdEh5cGVybGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgRWRpdEh5cGVybGlua0FjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdEh5cGVybGlua0FjdGlvblwiXSA9IFwiZWRpdEh5cGVybGlua0FjdGlvblwiO1xuICAgIC8vIERQSV9VcGRhdGVIeXBlcmxpbmtBY3Rpb24sIGhhdmluZyB0eXBlIFVwZGF0ZUh5cGVybGlua0FjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVXBkYXRlSHlwZXJsaW5rQWN0aW9uXCJdID0gXCJ1cGRhdGVIeXBlcmxpbmtBY3Rpb25cIjtcbiAgICAvLyBEUElfRWRpdFNoZWV0TGlua0FjdGlvbiwgaGF2aW5nIHR5cGUgRWRpdFNoZWV0TGlua0FjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdFNoZWV0TGlua0FjdGlvblwiXSA9IFwiZWRpdFNoZWV0bGlua0FjdGlvblwiO1xuICAgIC8vIERQSV9VcGRhdGVTaGVldExpbmtBY3Rpb24sIGhhdmluZyB0eXBlIFVwZGF0ZVNoZWV0TGlua0FjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVXBkYXRlU2hlZXRMaW5rQWN0aW9uXCJdID0gXCJ1cGRhdGVTaGVldGxpbmtBY3Rpb25cIjtcbiAgICAvLyBEUElfQWN0aW9uSXRlbSwgaGF2aW5nIHR5cGUgQWN0aW9uSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWN0aW9uSXRlbVwiXSA9IFwiYWN0aW9uSXRlbVwiO1xuICAgIC8vIERQSV9BY3Rpb25JdGVtTGlzdCwgaGF2aW5nIHR5cGUgQWN0aW9uSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJBY3Rpb25JdGVtTGlzdFwiXSA9IFwiYWN0aW9uSXRlbUxpc3RcIjtcbiAgICAvLyBEUElfRGF0YVNlZ21lbnQsIGhhdmluZyB0eXBlIERhdGFTZWdtZW50UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU2VnbWVudFwiXSA9IFwiZGF0YVNlZ21lbnRcIjtcbiAgICAvLyBEUElfRGF0YVNlZ21lbnRzLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIERhdGFTZWdtZW50UHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNlZ21lbnRzXCJdID0gXCJkYXRhU2VnbWVudHNcIjtcbiAgICAvLyBEUElfRGF0YURpY3Rpb25hcnksIGhhdmluZyB0eXBlIERhdGFEaWN0aW9uYXJ5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhRGljdGlvbmFyeVwiXSA9IFwiZGF0YURpY3Rpb25hcnlcIjtcbiAgICAvLyBEUElfVml6RGF0YSwgaGF2aW5nIHR5cGUgVml6RGF0YVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVml6RGF0YVwiXSA9IFwidml6RGF0YVwiO1xuICAgIC8vIERQSV9WaXpDb2x1bW4sIGhhdmluZyB0eXBlIFZpekNvbHVtblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVml6Q29sdW1uXCJdID0gXCJ2aXpDb2x1bW5cIjtcbiAgICAvLyBEUElfVml6Q29sdW1ucywgaGF2aW5nIHR5cGUgVml6Q29sdW1uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlZpekNvbHVtbnNcIl0gPSBcInZpekNvbHVtbnNcIjtcbiAgICAvLyBEUElfVml6RGF0YUNvbHVtbiwgaGF2aW5nIHR5cGUgVml6RGF0YUNvbHVtblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVml6RGF0YUNvbHVtblwiXSA9IFwidml6RGF0YUNvbHVtblwiO1xuICAgIC8vIERQSV9WaXpEYXRhQ29sdW1ucywgaGF2aW5nIHR5cGUgVml6RGF0YUNvbHVtblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJWaXpEYXRhQ29sdW1uc1wiXSA9IFwidml6RGF0YUNvbHVtbnNcIjtcbiAgICAvLyBEUElfVml6UGFuZUNvbHVtbiwgaGF2aW5nIHR5cGUgVml6UGFuZUNvbHVtblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVml6UGFuZUNvbHVtblwiXSA9IFwidml6UGFuZUNvbHVtblwiO1xuICAgIC8vIERQSV9WaXpQYW5lQ29sdW1ucywgaGF2aW5nIHR5cGUgVml6UGFuZUNvbHVtblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJWaXpQYW5lQ29sdW1uc1wiXSA9IFwidml6UGFuZUNvbHVtbnNcIjtcbiAgICAvLyBEUElfUGFuZUNvbHVtbnMsIGhhdmluZyB0eXBlIFBhbmVDb2x1bW5zUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lQ29sdW1uc1wiXSA9IFwicGFuZUNvbHVtbnNcIjtcbiAgICAvLyBEUElfUGFuZUNvbHVtbnNMaXN0LCBoYXZpbmcgdHlwZSBQYW5lQ29sdW1uc1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQYW5lQ29sdW1uc0xpc3RcIl0gPSBcInBhbmVDb2x1bW5zTGlzdFwiO1xuICAgIC8vIERQSV9QYW5lQ29sdW1uc0RhdGEsIGhhdmluZyB0eXBlIFBhbmVDb2x1bW5zRGF0YVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFuZUNvbHVtbnNEYXRhXCJdID0gXCJwYW5lQ29sdW1uc0RhdGFcIjtcbiAgICAvLyBEUElfRmlsdGVyQ29udGV4dCwgaGF2aW5nIHR5cGUgRmlsdGVyQ29udGV4dFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyQ29udGV4dFwiXSA9IFwiZmlsdGVyQ29udGV4dFwiO1xuICAgIC8vIERQSV9VYmVyVGlwUGFuZURhdGEsIGhhdmluZyB0eXBlIFViZXJUaXBQYW5lRGF0YVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVWJlclRpcFBhbmVEYXRhXCJdID0gXCJ1YmVydGlwUGFuZURhdGFcIjtcbiAgICAvLyBEUElfVWJlclRpcFBhbmVEYXRhcywgaGF2aW5nIHR5cGUgVWJlclRpcFBhbmVEYXRhUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlViZXJUaXBQYW5lRGF0YXNcIl0gPSBcInViZXJ0aXBQYW5lRGF0YXNcIjtcbiAgICAvLyBEUElfVWJlclRpcERhdGEsIGhhdmluZyB0eXBlIFViZXJUaXBEYXRhUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJVYmVyVGlwRGF0YVwiXSA9IFwidWJlcnRpcERhdGFcIjtcbiAgICAvLyBEUElfUmVmTGluZVRpcCwgaGF2aW5nIHR5cGUgUmVmTGluZVRpcFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVmTGluZVRpcFwiXSA9IFwicmVmTGluZVRpcFwiO1xuICAgIC8vIERQSV9SZWZMaW5lVGlwcywgaGF2aW5nIHR5cGUgUmVmTGluZVRpcFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJSZWZMaW5lVGlwc1wiXSA9IFwicmVmTGluZVRpcHNcIjtcbiAgICAvLyBEUElfTnVtZXJpY0JpbiwgaGF2aW5nIHR5cGUgTnVtZXJpY0JpblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTnVtZXJpY0JpblwiXSA9IFwibnVtZXJpY0JpblwiO1xuICAgIC8vIERQSV9OdW1lcmljQmluRGlhbG9nLCBoYXZpbmcgdHlwZSBOdW1lcmljQmluRGlhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOdW1lcmljQmluRGlhbG9nXCJdID0gXCJudW1lcmljQmluRGlhbG9nXCI7XG4gICAgLy8gRFBJX0RvbWFpblJhbmdlLCBoYXZpbmcgdHlwZSBEb21haW5SYW5nZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRG9tYWluUmFuZ2VcIl0gPSBcImRvbWFpblJhbmdlXCI7XG4gICAgLy8gRFBJX0JpblNpemVJbmZvLCBoYXZpbmcgdHlwZSBCaW5TaXplSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQmluU2l6ZUluZm9cIl0gPSBcImJpblNpemVJbmZvXCI7XG4gICAgLy8gRFBJX0RldGFpbGVkRXJyb3JEaWFsb2csIGhhdmluZyB0eXBlIERldGFpbGVkRXJyb3JQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRldGFpbGVkRXJyb3JEaWFsb2dcIl0gPSBcImRldGFpbGVkRXJyb3JEaWFsb2dcIjtcbiAgICAvLyBEUElfRHJhZ1NvdXJjZVBvc2l0aW9uLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQb3NpdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHJhZ1NvdXJjZVBvc2l0aW9uXCJdID0gXCJzaGVsZkRyYWdTb3VyY2VQb3NpdGlvblwiO1xuICAgIC8vIERQSV9Ecm9wVGFyZ2V0UG9zaXRpb24sIGhhdmluZyB0eXBlIFNoZWxmRHJvcFBvc2l0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEcm9wVGFyZ2V0UG9zaXRpb25cIl0gPSBcInNoZWxmRHJvcFRhcmdldFBvc2l0aW9uXCI7XG4gICAgLy8gRFBJX1NoZWxmRHJvcFBvc2l0aW9uLCBoYXZpbmcgdHlwZSBTaGVsZkRyb3BQb3NpdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZEcm9wUG9zaXRpb25cIl0gPSBcInNoZWxmRHJvcFBvc2l0aW9uXCI7XG4gICAgLy8gRFBJX1NoZWxmRHJvcFBvc2l0aW9ucywgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUG9zaXRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZEcm9wUG9zaXRpb25zXCJdID0gXCJzaGVsZkRyb3BQb3NpdGlvbnNcIjtcbiAgICAvLyBEUElfU2hlbGZEcm9wTW9kZWwsIGhhdmluZyB0eXBlIFNoZWxmRHJvcFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2hlbGZEcm9wTW9kZWxcIl0gPSBcInNoZWxmRHJvcE1vZGVsXCI7XG4gICAgLy8gRFBJX1NoZWxmRHJvcE1vZGVscywgaGF2aW5nIHR5cGUgU2hlbGZEcm9wUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWxmRHJvcE1vZGVsc1wiXSA9IFwic2hlbGZEcm9wTW9kZWxzXCI7XG4gICAgLy8gRFBJX0RyYWcsIGhhdmluZyB0eXBlIERyYWdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYWdcIl0gPSBcImRyYWdcIjtcbiAgICAvLyBEUElfU2NlbmVFbGVtZW50LCBoYXZpbmcgdHlwZSBTY2VuZUVsZW1lbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNjZW5lRWxlbWVudFwiXSA9IFwic2NlbmVFbGVtZW50XCI7XG4gICAgLy8gRFBJX1NjZW5lRWxlbWVudHMsIGhhdmluZyB0eXBlIFNjZW5lRWxlbWVudFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTY2VuZUVsZW1lbnRzXCJdID0gXCJzY2VuZUVsZW1lbnRzXCI7XG4gICAgLy8gRFBJX1F1aWNrRmlsdGVyVHlwZSwgaGF2aW5nIHR5cGUgUXVpY2tGaWx0ZXJUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJRdWlja0ZpbHRlclR5cGVcIl0gPSBcInF1aWNrRmlsdGVyVHlwZVwiO1xuICAgIC8vIERQSV9DYXRNb2RlLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiQ2F0TW9kZVwiXSA9IFwiY2F0ZWdvcmljYWxNb2RlXCI7XG4gICAgLy8gRFBJX0NhdEN0cmwsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRDdHJsXCJdID0gXCJjYXRlZ29yaWNhbENvbnRyb2xcIjtcbiAgICAvLyBEUElfUXVhbnRNb2RlLCBoYXZpbmcgdHlwZSBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50TW9kZVwiXSA9IFwicXVhbnRpdGF0aXZlTW9kZVwiO1xuICAgIC8vIERQSV9RdWFudEN0cmwsIGhhdmluZyB0eXBlIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybFxuICAgIFBhcmFtZXRlcklkW1wiUXVhbnRDdHJsXCJdID0gXCJxdWFudGl0YXRpdmVDb250cm9sXCI7XG4gICAgLy8gRFBJX1pvbmVDb21tb24sIGhhdmluZyB0eXBlIFpvbmVDb21tb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVDb21tb25cIl0gPSBcInpvbmVDb21tb25cIjtcbiAgICAvLyBEUElfWm9uZUNvbW1vbkxpc3RJdGVtcywgaGF2aW5nIHR5cGUgWm9uZUNvbW1vblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJab25lQ29tbW9uTGlzdEl0ZW1zXCJdID0gXCJ6b25lQ29tbW9uTGlzdEl0ZW1zXCI7XG4gICAgLy8gRFBJX1pvbmUsIGhhdmluZyB0eXBlIFpvbmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVcIl0gPSBcInpvbmVcIjtcbiAgICAvLyBEUElfWm9uZXMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgWm9uZVByZXNNb2RlbClcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVzXCJdID0gXCJ6b25lc1wiO1xuICAgIC8vIERQSV9JbWFnZVpvbmUsIGhhdmluZyB0eXBlIEltYWdlWm9uZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2Vab25lXCJdID0gXCJpbWFnZVpvbmVcIjtcbiAgICAvLyBEUElfV2ViWm9uZSwgaGF2aW5nIHR5cGUgV2ViWm9uZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV2ViWm9uZVwiXSA9IFwid2ViWm9uZVwiO1xuICAgIC8vIERQSV9CdXR0b25ab25lUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBCdXR0b25ab25lUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJCdXR0b25ab25lUHJlc01vZGVsXCJdID0gXCJidXR0b25ab25lXCI7XG4gICAgLy8gRFBJX1pvbmVFZGdlTW92ZVR5cGUsIGhhdmluZyB0eXBlIFpvbmVFZGdlTW92ZVxuICAgIFBhcmFtZXRlcklkW1wiWm9uZUVkZ2VNb3ZlVHlwZVwiXSA9IFwiem9uZUVkZ2VNb3ZlVHlwZVwiO1xuICAgIC8vIERQSV9ab25lU2lkZSwgaGF2aW5nIHR5cGUgU2lkZVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVTaWRlXCJdID0gXCJ6b25lU2lkZVwiO1xuICAgIC8vIERQSV9TbmFwUG9pbnQsIGhhdmluZyB0eXBlIFNuYXBQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU25hcFBvaW50XCJdID0gXCJzbmFwUG9pbnRcIjtcbiAgICAvLyBEUElfU25hcFBvaW50cywgaGF2aW5nIHR5cGUgU25hcFBvaW50UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNuYXBQb2ludHNcIl0gPSBcInNuYXBQb2ludHNcIjtcbiAgICAvLyBEUElfVGFyZ2V0UHJldmlld1BhaXIsIGhhdmluZyB0eXBlIERyYWdEcm9wVGFyZ2V0UHJldmlld1BhaXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhcmdldFByZXZpZXdQYWlyXCJdID0gXCJ0YXJnZXRQcmV2aWV3UGFpclwiO1xuICAgIC8vIERQSV9UYXJnZXRQcmV2aWV3UGFpcnMsIGhhdmluZyB0eXBlIERyYWdEcm9wVGFyZ2V0UHJldmlld1BhaXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVGFyZ2V0UHJldmlld1BhaXJzXCJdID0gXCJ0YXJnZXRQcmV2aWV3UGFpcnNcIjtcbiAgICAvLyBEUElfQ29udGFpbmVyR3VpZGUsIGhhdmluZyB0eXBlIERyYWdEcm9wQ29udGFpbmVyR3VpZGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbnRhaW5lckd1aWRlXCJdID0gXCJjb250YWluZXJHdWlkZVwiO1xuICAgIC8vIERQSV9Db250YWluZXJHdWlkZXMsIGhhdmluZyB0eXBlIERyYWdEcm9wQ29udGFpbmVyR3VpZGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29udGFpbmVyR3VpZGVzXCJdID0gXCJjb250YWluZXJHdWlkZXNcIjtcbiAgICAvLyBEUElfWm9uZUJvcmRlciwgaGF2aW5nIHR5cGUgRHJhZ0Ryb3Bab25lQm9yZGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJab25lQm9yZGVyXCJdID0gXCJ6b25lQm9yZGVyXCI7XG4gICAgLy8gRFBJX1pvbmVCb3JkZXJzLCBoYXZpbmcgdHlwZSBEcmFnRHJvcFpvbmVCb3JkZXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiWm9uZUJvcmRlcnNcIl0gPSBcInpvbmVCb3JkZXJzXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZERyYWdEcm9wLCBoYXZpbmcgdHlwZSBEYXNoYm9hcmREcmFnRHJvcFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGFzaGJvYXJkRHJhZ0Ryb3BcIl0gPSBcInpvbmVEcmFnRHJvcFwiO1xuICAgIC8vIERQSV9EcmFnWm9uZVJlc2l6ZSwgaGF2aW5nIHR5cGUgRHJhZ1pvbmVSZXNpemVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRyYWdab25lUmVzaXplXCJdID0gXCJ6b25lUmVzaXplXCI7XG4gICAgLy8gRFBJX0Rhc2hib2FyZFRleHQsIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFRleHRcIl0gPSBcImRhc2hib2FyZFRleHRcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkVGl0bGUsIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZFRpdGxlXCJdID0gXCJkYXNoYm9hcmRUaXRsZVwiO1xuICAgIC8vIERQSV9RdWlja0ZpbHRlclRpdGxlLCBoYXZpbmcgdHlwZSBUZXh0UmVnaW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJRdWlja0ZpbHRlclRpdGxlXCJdID0gXCJxdWlja0ZpbHRlclRpdGxlXCI7XG4gICAgLy8gRFBJX1Zpc3VhbENhcHRpb24sIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbENhcHRpb25cIl0gPSBcInZpc3VhbENhcHRpb25cIjtcbiAgICAvLyBEUElfVmlzdWFsVGl0bGUsIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbFRpdGxlXCJdID0gXCJ2aXN1YWxUaXRsZVwiO1xuICAgIC8vIERQSV9ab25lVGl0bGVSZWdpb24sIGhhdmluZyB0eXBlIFRleHRSZWdpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlpvbmVUaXRsZVJlZ2lvblwiXSA9IFwiem9uZVRpdGxlXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0T3B0aW9ucywgaGF2aW5nIHR5cGUgRm9yZWNhc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0T3B0aW9uc1wiXSA9IFwiZm9yZWNhc3RPcHRpb25zXCI7XG4gICAgLy8gRFBJX0ZvcmVjYXN0RGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIEZvcmVjYXN0RGVzY3JpYmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcmVjYXN0RGVzY3JpcHRpb25cIl0gPSBcImZvcmVjYXN0RGVzY3JpcHRpb25cIjtcbiAgICAvLyBEUElfV29ya2dyb3VwUHVibGlzaE9iamVjdCwgaGF2aW5nIHR5cGUgV29ya2dyb3VwUHVibGlzaE9iamVjdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV29ya2dyb3VwUHVibGlzaE9iamVjdFwiXSA9IFwicHVibGlzaERhdGFTb3VyY2VcIjtcbiAgICAvLyBEUElfUHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeSwgaGF2aW5nIHR5cGUgUHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeVwiXSA9IFwicHVibGlzaFBlcm1pc3Npb25zU3VtbWFyeVwiO1xuICAgIC8vIERQSV9DaGVja05hbWVSZXN1bHRzLCBoYXZpbmcgdHlwZSBDaGVja05hbWVSZXN1bHRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDaGVja05hbWVSZXN1bHRzXCJdID0gXCJjaGVja05hbWVSZXN1bHRzXCI7XG4gICAgLy8gRFBJX1ZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0LCBoYXZpbmcgdHlwZSBWYWxpZGF0ZVB1Ymxpc2hWaWV3c1Jlc3VsdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVmFsaWRhdGVQdWJsaXNoVmlld3NSZXN1bHRcIl0gPSBcInZhbGlkYXRlUHVibGlzaFZpZXdzUmVzdWx0XCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzLCBoYXZpbmcgdHlwZSBQdWJsaXNoQXV0aGVudGljYXRpb25TZXR0aW5nc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaEF1dGhlbnRpY2F0aW9uU2V0dGluZ3NcIl0gPSBcInB1Ymxpc2hBdXRoZW50aWNhdGlvblNldHRpbmdzXCI7XG4gICAgLy8gRFBJX01hbmFnZURhdGFzb3VyY2VzLCBoYXZpbmcgdHlwZSBNYW5hZ2VEYXRhc291cmNlc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTWFuYWdlRGF0YXNvdXJjZXNcIl0gPSBcIm1hbmFnZURhdGFzb3VyY2VzXCI7XG4gICAgLy8gRFBJX0NyZWRlbnRpYWxzQXV0aFNldHRpbmdzLCBoYXZpbmcgdHlwZSBDcmVkZW50aWFsc0F1dGhTZXR0aW5nc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NcIl0gPSBcImNyZWRlbnRpYWxzQXV0aFNldHRpbmdzXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5ncywgaGF2aW5nIHR5cGUgQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NcIl0gPSBcImNvbm5lY3Rpb25DcmVkZW50aWFsc0F1dGhTZXR0aW5nc1wiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NMaXN0LCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uQ3JlZGVudGlhbHNBdXRoU2V0dGluZ3NQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzTGlzdFwiXSA9IFwiY29ubmVjdGlvbkNyZWRlbnRpYWxzQXV0aFNldHRpbmdzTGlzdFwiO1xuICAgIC8vIERQSV9QdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm8sIGhhdmluZyB0eXBlIFB1Ymxpc2hEYXRhc291cmNlRnJvbVdvcmtib29rSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaERhdGFzb3VyY2VGcm9tV29ya2Jvb2tJbmZvXCJdID0gXCJwdWJsaXNoRGF0YXNvdXJjZUZyb21Xb3JrYm9va0luZm9cIjtcbiAgICAvLyBEUElfUHVibGlzaERhdGFzb3VyY2VzRnJvbVdvcmtib29rSW5mbywgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFzb3VyY2VGcm9tV29ya2Jvb2tJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hEYXRhc291cmNlc0Zyb21Xb3JrYm9va0luZm9cIl0gPSBcInB1Ymxpc2hEYXRhc291cmNlc0Zyb21Xb3JrYm9va0luZm9cIjtcbiAgICAvLyBEUElfUHVibGlzaFNoZWV0LCBoYXZpbmcgdHlwZSBQdWJsaXNoU2hlZXRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hTaGVldFwiXSA9IFwicHVibGlzaFNoZWV0XCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hTaGVldHMsIGhhdmluZyB0eXBlIFB1Ymxpc2hTaGVldFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQdWJsaXNoU2hlZXRzXCJdID0gXCJwdWJsaXNoU2hlZXRzXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hPYmplY3RWaWV3cywgaGF2aW5nIHR5cGUgUHVibGlzaE9iamVjdFZpZXdzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQdWJsaXNoT2JqZWN0Vmlld3NcIl0gPSBcInB1Ymxpc2hPYmplY3RWaWV3c1wiO1xuICAgIC8vIERQSV9QdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0cywgaGF2aW5nIHR5cGUgUHVibGlzaE9iamVjdFB1Ymxpc2hTaGVldFJlc3VsdHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hPYmplY3RQdWJsaXNoU2hlZXRSZXN1bHRzXCJdID0gXCJwdWJsaXNoT2JqZWN0UHVibGlzaFNoZWV0UmVzdWx0c1wiO1xuICAgIC8vIERQSV9SZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5ncywgaGF2aW5nIHR5cGUgUmVmcmVzaEV4dHJhY3RTY2hlZHVsaW5nU2V0dGluZ3NQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZnJlc2hFeHRyYWN0U2NoZWR1bGluZ1NldHRpbmdzXCJdID0gXCJyZWZyZXNoRXh0cmFjdFNjaGVkdWxpbmdTZXR0aW5nc1wiO1xuICAgIC8vIERQSV9TZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0LCBoYXZpbmcgdHlwZSBTZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0XCJdID0gXCJzZXRSZWZyZXNoRXh0cmFjdFNjaGVkdWxlUmVzdWx0XCI7XG4gICAgLy8gRFBJX0NoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHMsIGhhdmluZyB0eXBlIENoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHNcIl0gPSBcImNoZWNrUHVibGlzaE9iamVjdE5hbWVXYXJuaW5nc1Jlc3VsdHNcIjtcbiAgICAvLyBEUElfUHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdHMsIGhhdmluZyB0eXBlIFB1Ymxpc2hEYXRhc291cmNlT25Xb3JrYm9va1B1Ymxpc2hSZXN1bHRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQdWJsaXNoRGF0YXNvdXJjZU9uV29ya2Jvb2tQdWJsaXNoUmVzdWx0c1wiXSA9IFwicHVibGlzaERhdGFzb3VyY2VPbldvcmtib29rUHVibGlzaFJlc3VsdFwiO1xuICAgIC8vIERQSV9QdWJsaXNoRGF0YVNvdXJjZVJlc3VsdCwgaGF2aW5nIHR5cGUgUHVibGlzaERhdGFTb3VyY2VSZXN1bHRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hEYXRhU291cmNlUmVzdWx0XCJdID0gXCJwdWJsaXNoRGF0YVNvdXJjZVJlc3VsdFwiO1xuICAgIC8vIERQSV9QdWJsaXNoV2FybmluZ01lc3NhZ2UsIGhhdmluZyB0eXBlIFB1Ymxpc2hXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUHVibGlzaFdhcm5pbmdNZXNzYWdlXCJdID0gXCJwdWJsaXNoV2FybmluZ01lc3NhZ2VcIjtcbiAgICAvLyBEUElfTXVzdERvd25ncmFkZVRvUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBQdWJsaXNoV2FybmluZ01lc3NhZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk11c3REb3duZ3JhZGVUb1B1Ymxpc2hXYXJuaW5nTWVzc2FnZVByZXNNb2RlbFwiXSA9IFwibXVzdERvd25ncmFkZVRvUHVibGlzaFdhcm5pbmdNZXNzYWdlUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1B1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXMsIGhhdmluZyB0eXBlIFB1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlB1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXNcIl0gPSBcInB1Ymxpc2hTZWxlY3RlZEF0dHJpYnV0ZXNcIjtcbiAgICAvLyBEUElfQXV0b3NhdmVGaWxlLCBoYXZpbmcgdHlwZSBBdXRvc2F2ZUZpbGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9zYXZlRmlsZVwiXSA9IFwiYXV0b3NhdmVGaWxlXCI7XG4gICAgLy8gRFBJX0F1dG9zYXZlRmlsZXMsIGhhdmluZyB0eXBlIEF1dG9zYXZlRmlsZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJBdXRvc2F2ZUZpbGVzXCJdID0gXCJhdXRvc2F2ZUZpbGVzXCI7XG4gICAgLy8gRFBJX0Z1bmN0aW9uR3JvdXAsIGhhdmluZyB0eXBlIEZ1bmN0aW9uR3JvdXBcbiAgICBQYXJhbWV0ZXJJZFtcIkZ1bmN0aW9uR3JvdXBcIl0gPSBcImZ1bmNHcnBcIjtcbiAgICAvLyBEUElfRnVuY3Rpb25Hcm91cHMsIGhhdmluZyB0eXBlIEZ1bmN0aW9uR3JvdXBbXVxuICAgIFBhcmFtZXRlcklkW1wiRnVuY3Rpb25Hcm91cHNcIl0gPSBcImZ1bmNHcnBzXCI7XG4gICAgLy8gRFBJX0Z1bmN0aW9uQXJnVHlwZSwgaGF2aW5nIHR5cGUgRnVuY3Rpb25BcmdUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJGdW5jdGlvbkFyZ1R5cGVcIl0gPSBcImZ1bmNBcmdUeXBlXCI7XG4gICAgLy8gRFBJX0Z1bmN0aW9uQXJnVHlwZXMsIGhhdmluZyB0eXBlIEZ1bmN0aW9uQXJnVHlwZVtdXG4gICAgUGFyYW1ldGVySWRbXCJGdW5jdGlvbkFyZ1R5cGVzXCJdID0gXCJmdW5jQXJnVHlwZXNcIjtcbiAgICAvLyBEUElfQ2FsY3VsYXRpb25TdHlsZSwgaGF2aW5nIHR5cGUgQ2FsY1N0eWxlXG4gICAgUGFyYW1ldGVySWRbXCJDYWxjdWxhdGlvblN0eWxlXCJdID0gXCJjYWxjdWxhdGlvblN0eWxlXCI7XG4gICAgLy8gRFBJX0NhbGN1bGF0aW9uLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VsYXRpb25cIl0gPSBcImNhbGN1bGF0aW9uXCI7XG4gICAgLy8gRFBJX1R5cGVJblBpbGwsIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUeXBlSW5QaWxsXCJdID0gXCJ0eXBlSW5QaWxsXCI7XG4gICAgLy8gRFBJX0NhbGNFcnJvckluZm8sIGhhdmluZyB0eXBlIENhbGNFcnJvckluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGNFcnJvckluZm9cIl0gPSBcImVycm9ySW5mb1wiO1xuICAgIC8vIERQSV9DYWxjRXJyb3JJbmZvcywgaGF2aW5nIHR5cGUgQ2FsY0Vycm9ySW5mb1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDYWxjRXJyb3JJbmZvc1wiXSA9IFwiZXJyb3JJbmZvTGlzdFwiO1xuICAgIC8vIERQSV9DYWxjdWFsdGlvblZhbGlkYXRpb24sIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uVmFsaWRhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VhbHRpb25WYWxpZGF0aW9uXCJdID0gXCJjYWxjdWxhdGlvblZhbGlkYXRpb25cIjtcbiAgICAvLyBEUElfRXhwcmVzc2lvbkZ1bmN0aW9uLCBoYXZpbmcgdHlwZSBFeHByZXNzaW9uRnVuY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25GdW5jdGlvblwiXSA9IFwiZXhwcmVzc2lvbkZ1bmNcIjtcbiAgICAvLyBEUElfRXhwcmVzc2lvbkZ1bmN0aW9ucywgaGF2aW5nIHR5cGUgRXhwcmVzc2lvbkZ1bmN0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25GdW5jdGlvbnNcIl0gPSBcImV4cHJlc3Npb25GdW5jTGlzdFwiO1xuICAgIC8vIERQSV9FeHByZXNzaW9uRnVuY3Rpb25zUE0sIGhhdmluZyB0eXBlIEV4cHJlc3Npb25GdW5jdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkV4cHJlc3Npb25GdW5jdGlvbnNQTVwiXSA9IFwiZXhwcmVzc2lvbkZ1bmNQbVwiO1xuICAgIC8vIERQSV9TdHlsZVRva2VuLCBoYXZpbmcgdHlwZSBTdHlsZVRva2VuUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdHlsZVRva2VuXCJdID0gXCJzdHlsZVRva2VuXCI7XG4gICAgLy8gRFBJX1N0eWxlVG9rZW5zLCBoYXZpbmcgdHlwZSBTdHlsZVRva2VuUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlN0eWxlVG9rZW5zXCJdID0gXCJzdHlsZVRva2VuTGlzdFwiO1xuICAgIC8vIERQSV9DYWxjRWRpdG9yVGV4dFNlbGVjdGlvbiwgaGF2aW5nIHR5cGUgQ2FsY0VkaXRvclRleHRTZWxlY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGNFZGl0b3JUZXh0U2VsZWN0aW9uXCJdID0gXCJjYWxjRWRpdG9yVGV4dFNlbGVjdGlvblwiO1xuICAgIC8vIERQSV9BdXRvQ29tcGxldGVJdGVtVHlwZSwgaGF2aW5nIHR5cGUgQXV0b0NvbXBsZXRlSXRlbVR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9Db21wbGV0ZUl0ZW1UeXBlXCJdID0gXCJhdXRvY29tcGxldGVUeXBlXCI7XG4gICAgLy8gRFBJX0F1dG9Db21wbGV0ZUl0ZW0sIGhhdmluZyB0eXBlIEF1dG9Db21wbGV0ZUl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkF1dG9Db21wbGV0ZUl0ZW1cIl0gPSBcImF1dG9jb21wbGV0ZUl0ZW1cIjtcbiAgICAvLyBEUElfQXV0b0NvbXBsZXRlSXRlbXMsIGhhdmluZyB0eXBlIEF1dG9Db21wbGV0ZUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQXV0b0NvbXBsZXRlSXRlbXNcIl0gPSBcImF1dG9jb21wbGV0ZUl0ZW1MaXN0XCI7XG4gICAgLy8gRFBJX0NhbGN1bGF0aW9uQXV0b0NvbXBsZXRlQ29udGV4dE1lbnUsIGhhdmluZyB0eXBlIENhbGN1bGF0aW9uQXV0b0NvbXBsZXRlQ29udGV4dE1lbnVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGN1bGF0aW9uQXV0b0NvbXBsZXRlQ29udGV4dE1lbnVcIl0gPSBcImNhbGN1bGF0aW9uQXV0b2NvbXBsZXRlQ29udGV4dE1lbnVcIjtcbiAgICAvLyBEUElfQ2FsY0FwcGx5UmVzdWx0LCBoYXZpbmcgdHlwZSBDYWxjQXBwbHlSZXN1bHRcbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGNBcHBseVJlc3VsdFwiXSA9IFwiY2FsY3VsYXRpb25BcHBseVJlc3VsdFwiO1xuICAgIC8vIERQSV9SYW1wQm9yZGVyU3R5bGVkQm94LCBoYXZpbmcgdHlwZSBTdHlsZWRCb3hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbXBCb3JkZXJTdHlsZWRCb3hcIl0gPSBcInJhbXBCb3JkZXJTdHlsZWRCb3hcIjtcbiAgICAvLyBEUElfU3R5bGVkQm94LCBoYXZpbmcgdHlwZSBTdHlsZWRCb3hQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN0eWxlZEJveFwiXSA9IFwic3R5bGVkQm94XCI7XG4gICAgLy8gRFBJX0dsb2JhbFN0eWxlZEJveCwgaGF2aW5nIHR5cGUgU3R5bGVkQm94UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHbG9iYWxTdHlsZWRCb3hcIl0gPSBcImdsb2JhbFN0eWxlZEJveFwiO1xuICAgIC8vIERQSV9TdHlsZUNvbnRleHQsIGhhdmluZyB0eXBlIFN0eWxlQ29udGV4dFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3R5bGVDb250ZXh0XCJdID0gXCJzdHlsZUNvbnRleHRcIjtcbiAgICAvLyBEUElfQ3VycmVudFRleHRTdHlsZSwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdXJyZW50VGV4dFN0eWxlXCJdID0gXCJjdXJyZW50VGV4dFN0eWxlXCI7XG4gICAgLy8gRFBJX0xhYmVsVGV4dFN0eWxlLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxhYmVsVGV4dFN0eWxlXCJdID0gXCJsYWJlbFRleHRTdHlsZVwiO1xuICAgIC8vIERQSV9PcmlnaW5hbFRleHRTdHlsZSwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJPcmlnaW5hbFRleHRTdHlsZVwiXSA9IFwib3JpZ2luYWxUZXh0U3R5bGVcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRUZXh0U3R5bGVNb2RlbCwgaGF2aW5nIHR5cGUgVGV4dFN0eWxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3RlZFRleHRTdHlsZU1vZGVsXCJdID0gXCJzZWxlY3RlZFRleHRTdHlsZU1vZGVsXCI7XG4gICAgLy8gRFBJX1N3YXRjaFRleHRTdHlsZU1vZGVsLCBoYXZpbmcgdHlwZSBUZXh0U3R5bGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN3YXRjaFRleHRTdHlsZU1vZGVsXCJdID0gXCJzd2F0Y2hUZXh0U3R5bGVcIjtcbiAgICAvLyBEUElfVGV4dFN0eWxlTW9kZWwsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGV4dFN0eWxlTW9kZWxcIl0gPSBcInRleHRTdHlsZVwiO1xuICAgIC8vIERQSV9UaXRsZVN0eWxlTW9kZWwsIGhhdmluZyB0eXBlIFRleHRTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGl0bGVTdHlsZU1vZGVsXCJdID0gXCJ0aXRsZVN0eWxlTW9kZWxcIjtcbiAgICAvLyBEUElfUHJvcGVydHlCYWcsIGhhdmluZyB0eXBlIFByb3BlcnR5QmFnUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQcm9wZXJ0eUJhZ1wiXSA9IFwicHJvcEJhZ1dyYXBwZXJcIjtcbiAgICAvLyBEUElfUHJlc01vZGVsTWFwLCBoYXZpbmcgdHlwZSBEaWN0aW9uYXJ5KG9mIFByb3BlcnR5QmFnUHJlc01vZGVsKVxuICAgIFBhcmFtZXRlcklkW1wiUHJlc01vZGVsTWFwXCJdID0gXCJwcmVzTW9kZWxNYXBcIjtcbiAgICAvLyBEUElfUHJlc2VudGF0aW9uTGF5ZXJOb3RpZmljYXRpb25zLCBoYXZpbmcgdHlwZSBQcmVzTW9kZWxNYXBQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlByZXNlbnRhdGlvbkxheWVyTm90aWZpY2F0aW9uc1wiXSA9IFwicHJlc2VudGF0aW9uTGF5ZXJOb3RpZmljYXRpb25zXCI7XG4gICAgLy8gRFBJX1NlY29uZGFyeUluZm8sIGhhdmluZyB0eXBlIFByZXNNb2RlbE1hcFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2Vjb25kYXJ5SW5mb1wiXSA9IFwic2Vjb25kYXJ5SW5mb1wiO1xuICAgIC8vIERQSV9DbGllbnREYXNoYm9hcmRVSU1ldHJpYywgaGF2aW5nIHR5cGUgQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNsaWVudERhc2hib2FyZFVJTWV0cmljXCJdID0gXCJjbGllbnREYXNoYm9hcmRVaU1ldHJpY1wiO1xuICAgIC8vIERQSV9DbGllbnREYXNoYm9hcmRVSU1ldHJpY3MsIGhhdmluZyB0eXBlIENsaWVudERhc2hib2FyZFVJTWV0cmljUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNsaWVudERhc2hib2FyZFVJTWV0cmljc1wiXSA9IFwiY2xpZW50RGFzaGJvYXJkVWlNZXRyaWNzXCI7XG4gICAgLy8gRFBJX0NsaWVudERhc2hib2FyZFVJTWV0cmljQ29udGFpbmVyLCBoYXZpbmcgdHlwZSBDbGllbnREYXNoYm9hcmRVSU1ldHJpY0NvbnRhaW5lclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2xpZW50RGFzaGJvYXJkVUlNZXRyaWNDb250YWluZXJcIl0gPSBcImNsaWVudERhc2hib2FyZFVpTWV0cmljQ29udGFpbmVyXCI7XG4gICAgLy8gRFBJX0V4dFN2Y0NvbmZpZywgaGF2aW5nIHR5cGUgRXh0U3ZjQ29uZmlnUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFeHRTdmNDb25maWdcIl0gPSBcImV4dFN2Y0NvbmZpZ1wiO1xuICAgIC8vIERQSV9TdG9yeWJvYXJkU2hlZXRJdGVtLCBoYXZpbmcgdHlwZSBTdG9yeWJvYXJkU2hlZXRJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeWJvYXJkU2hlZXRJdGVtXCJdID0gXCJzdG9yeWJvYXJkU2hlZXRJdGVtXCI7XG4gICAgLy8gRFBJX1N0b3J5Ym9hcmRTaGVldEl0ZW1zLCBoYXZpbmcgdHlwZSBTdG9yeWJvYXJkU2hlZXRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5Ym9hcmRTaGVldEl0ZW1zXCJdID0gXCJzdG9yeWJvYXJkU2hlZXRJdGVtc1wiO1xuICAgIC8vIERQSV9TdG9yeWJvYXJkU2hlZXRMaXN0LCBoYXZpbmcgdHlwZSBTdG9yeWJvYXJkU2hlZXRMaXN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeWJvYXJkU2hlZXRMaXN0XCJdID0gXCJzdG9yeWJvYXJkU2hlZXRMaXN0XCI7XG4gICAgLy8gRFBJX0ZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW0sIGhhdmluZyB0eXBlIEZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW1cIl0gPSBcImZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW1cIjtcbiAgICAvLyBEUElfRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbXMsIGhhdmluZyB0eXBlIEZpdFRvU3RvcnlCb2FyZE9wdGlvbkl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRml0VG9TdG9yeUJvYXJkT3B0aW9uSXRlbXNcIl0gPSBcImZpdFRvU3Rvcnlib2FyZE9wdGlvbkl0ZW1zXCI7XG4gICAgLy8gRFBJX0ZpdFRvU3RvcnlCb2FyZE9wdGlvbkxpc3QsIGhhdmluZyB0eXBlIEZpdFRvU3RvcnlCb2FyZE9wdGlvbkxpc3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpdFRvU3RvcnlCb2FyZE9wdGlvbkxpc3RcIl0gPSBcImZpdFRvU3Rvcnlib2FyZE9wdGlvbkxpc3RcIjtcbiAgICAvLyBEUElfU3RvcnlQb2ludE5hdkl0ZW0sIGhhdmluZyB0eXBlIFN0b3J5UG9pbnROYXZJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeVBvaW50TmF2SXRlbVwiXSA9IFwic3Rvcnlwb2ludE5hdkl0ZW1cIjtcbiAgICAvLyBEUElfU3RvcnlQb2ludE5hdkl0ZW1zLCBoYXZpbmcgdHlwZSBTdG9yeVBvaW50TmF2SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeVBvaW50TmF2SXRlbXNcIl0gPSBcInN0b3J5cG9pbnROYXZJdGVtc1wiO1xuICAgIC8vIERQSV9GbGlwYm9hcmROYXYsIGhhdmluZyB0eXBlIEZsaXBib2FyZE5hdlByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmxpcGJvYXJkTmF2XCJdID0gXCJmbGlwYm9hcmROYXZcIjtcbiAgICAvLyBEUElfU2Nyb2xsQmFyU3R5bGUsIGhhdmluZyB0eXBlIFNjcm9sbEJhclN0eWxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTY3JvbGxCYXJTdHlsZVwiXSA9IFwic2Nyb2xsQmFyU3R5bGVcIjtcbiAgICAvLyBEUElfRGFzaGJvYXJkWm9uZUxheW91dFBhbmUsIGhhdmluZyB0eXBlIERhc2hib2FyZFpvbmVMYXlvdXRQYW5lUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXNoYm9hcmRab25lTGF5b3V0UGFuZVwiXSA9IFwiZGFzaGJvYXJkWm9uZUxheW91dFBhbmVcIjtcbiAgICAvLyBEUElfU2VsZWN0ZWRTdG9yeVBvaW50U3R5bGUsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnRDYXB0aW9uU3R5bGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkU3RvcnlQb2ludFN0eWxlXCJdID0gXCJzZWxlY3RlZFN0b3J5UG9pbnRTdHlsZVwiO1xuICAgIC8vIERQSV9VbnNlbGVjdGVkU3RvcnlQb2ludFN0eWxlLCBoYXZpbmcgdHlwZSBTdG9yeVBvaW50Q2FwdGlvblN0eWxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJVbnNlbGVjdGVkU3RvcnlQb2ludFN0eWxlXCJdID0gXCJ1bnNlbGVjdGVkU3RvcnlQb2ludFN0eWxlXCI7XG4gICAgLy8gRFBJX0ZsaXBib2FyZE5hdlN0eWxlLCBoYXZpbmcgdHlwZSBGbGlwYm9hcmROYXZTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmxpcGJvYXJkTmF2U3R5bGVcIl0gPSBcImZsaXBib2FyZE5hdlN0eWxlXCI7XG4gICAgLy8gRFBJX1N0b3J5UG9pbnQsIGhhdmluZyB0eXBlIFN0b3J5UG9pbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UG9pbnRcIl0gPSBcInN0b3J5UG9pbnRcIjtcbiAgICAvLyBEUElfU3RvcnlQb2ludHMsIGhhdmluZyB0eXBlIERpY3Rpb25hcnkob2YgU3RvcnlQb2ludFByZXNNb2RlbClcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UG9pbnRzXCJdID0gXCJzdG9yeVBvaW50c1wiO1xuICAgIC8vIERQSV9GbGlwYm9hcmQsIGhhdmluZyB0eXBlIEZsaXBib2FyZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmxpcGJvYXJkXCJdID0gXCJmbGlwYm9hcmRcIjtcbiAgICAvLyBEUElfU3RvcnlQYWlyLCBoYXZpbmcgdHlwZSBTdG9yeVBhaXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlN0b3J5UGFpclwiXSA9IFwic3RvcnlQYWlyXCI7XG4gICAgLy8gRFBJX1N0b3J5UGFpcnMsIGhhdmluZyB0eXBlIFN0b3J5UGFpclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTdG9yeVBhaXJzXCJdID0gXCJzdG9yeVBhaXJzXCI7XG4gICAgLy8gRFBJX1N0b3J5Ym9hcmRQTSwgaGF2aW5nIHR5cGUgU3Rvcnlib2FyZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3Rvcnlib2FyZFBNXCJdID0gXCJzdG9yeWJvYXJkUG1cIjtcbiAgICAvLyBEUElfSGlEcGlJY29uRGljdGlvbmFyeSwgaGF2aW5nIHR5cGUgSW1hZ2VDb2xsZWN0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaURwaUljb25EaWN0aW9uYXJ5XCJdID0gXCJoaURwaUljb25EaWN0aW9uYXJ5XCI7XG4gICAgLy8gRFBJX0ljb25EaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZUNvbGxlY3Rpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkljb25EaWN0aW9uYXJ5XCJdID0gXCJpY29uRGljdGlvbmFyeVwiO1xuICAgIC8vIERQSV9JY29uUmVzb3VyY2VEaWN0aW9uYXJ5LCBoYXZpbmcgdHlwZSBJbWFnZVJlc291cmNlQ29sbGVjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSWNvblJlc291cmNlRGljdGlvbmFyeVwiXSA9IFwiaWNvblJlc0RpY3Rpb25hcnlcIjtcbiAgICAvLyBEUElfRGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlLCBoYXZpbmcgdHlwZSBEYXRhUHJldmlld1dpbmRvd01lc3NhZ2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFQcmV2aWV3V2luZG93TWVzc2FnZVwiXSA9IFwiZGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VEYXRhLCBoYXZpbmcgdHlwZSBEYXRhU291cmNlRGF0YVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZURhdGFcIl0gPSBcImRhdGFTcmNEYXRhXCI7XG4gICAgLy8gRFBJX0RhdGFTb3VyY2VTb3J0LCBoYXZpbmcgdHlwZSBEYXRhU291cmNlU29ydFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZVNvcnRcIl0gPSBcImRhdGFTcmNTb3J0XCI7XG4gICAgLy8gRFBJX0NvbHVtbkluZm8sIGhhdmluZyB0eXBlIERTQ29sdW1uSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29sdW1uSW5mb1wiXSA9IFwiY29sdW1uSW5mb1wiO1xuICAgIC8vIERQSV9Db2x1bW5JbmZvcywgaGF2aW5nIHR5cGUgRFNDb2x1bW5JbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbHVtbkluZm9zXCJdID0gXCJjb2x1bW5JbmZvc1wiO1xuICAgIC8vIERQSV9EYXRhRm9ybWF0dGVyLCBoYXZpbmcgdHlwZSBEVkZvcm1hdHRlclxuICAgIFBhcmFtZXRlcklkW1wiRGF0YUZvcm1hdHRlclwiXSA9IFwiZGF0YUZvcm1hdHRlclwiO1xuICAgIC8vIERQSV9Kb2luRGVzY3JpcHRpb24sIGhhdmluZyB0eXBlIEpvaW5EZXNjcmlwdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSm9pbkRlc2NyaXB0aW9uXCJdID0gXCJqb2luRGVzY3JpcHRpb25cIjtcbiAgICAvLyBEUElfSm9pbkRlc2NyaXB0aW9ucywgaGF2aW5nIHR5cGUgRGljdGlvbmFyeShvZiBKb2luRGVzY3JpcHRpb25QcmVzTW9kZWwpXG4gICAgUGFyYW1ldGVySWRbXCJKb2luRGVzY3JpcHRpb25zXCJdID0gXCJqb2luRGVzY3JpcHRpb25zXCI7XG4gICAgLy8gRFBJX0ZpbGVUYWJsZUluZm8sIGhhdmluZyB0eXBlIEZpbGVUYWJsZUluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbGVUYWJsZUluZm9cIl0gPSBcImZpbGVUYWJsZUluZm9cIjtcbiAgICAvLyBEUElfRmllbGRNYXBwaW5nLCBoYXZpbmcgdHlwZSBGaWVsZE1hcHBpbmdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkTWFwcGluZ1wiXSA9IFwiZmllbGRNYXBwaW5nXCI7XG4gICAgLy8gRFBJX0ZpZWxkTWFwcGluZ0RhdGEsIGhhdmluZyB0eXBlIEZpZWxkTWFwcGluZ0RhdGFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkTWFwcGluZ0RhdGFcIl0gPSBcImZpZWxkTWFwcGluZ0RhdGFcIjtcbiAgICAvLyBEUElfRmllbGRNYXBwaW5nRGF0YVZlY3RvciwgaGF2aW5nIHR5cGUgRmllbGRNYXBwaW5nRGF0YVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZE1hcHBpbmdEYXRhVmVjdG9yXCJdID0gXCJmaWVsZE1hcHBpbmdEYXRhVmVjdG9yXCI7XG4gICAgLy8gRFBJX0ZyYW1lRmluZGVyLCBoYXZpbmcgdHlwZSBGcmFtZUZpbmRlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRnJhbWVGaW5kZXJcIl0gPSBcImZyYW1lRmluZGVyXCI7XG4gICAgLy8gRFBJX1NoZWV0TGlua0ZpZWxkTWFwcGluZywgaGF2aW5nIHR5cGUgU2hlZXRMaW5rRmllbGRNYXBwaW5nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGVldExpbmtGaWVsZE1hcHBpbmdcIl0gPSBcInNoZWV0TGlua0ZpZWxkTWFwcGluZ1wiO1xuICAgIC8vIERQSV9VbmlvbkluZm8sIGhhdmluZyB0eXBlIFVuaW9uSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVW5pb25JbmZvXCJdID0gXCJ1bmlvbkluZm9cIjtcbiAgICAvLyBEUElfVW5pb25UYWJsZUluZm8sIGhhdmluZyB0eXBlIFVuaW9uVGFibGVJbmZvUHJlc01vZGVcbiAgICBQYXJhbWV0ZXJJZFtcIlVuaW9uVGFibGVJbmZvXCJdID0gXCJ1bmlvblRhYmxlSW5mb1wiO1xuICAgIC8vIERQSV9VbmlvblRhYmxlSW5mb3MsIGhhdmluZyB0eXBlIFVuaW9uVGFibGVJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlVuaW9uVGFibGVJbmZvc1wiXSA9IFwidW5pb25UYWJsZUluZm9zXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25QQlVuaW9uSW5mbywgaGF2aW5nIHR5cGUgUEJVbmlvbkluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25QQlVuaW9uSW5mb1wiXSA9IFwiY29ubmVjdGlvblBidW5pb25JbmZvXCI7XG4gICAgLy8gRFBJX0Nvbm5lY3Rpb25QQlVuaW9uSW5mb3MsIGhhdmluZyB0eXBlIFBCVW5pb25JbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25QQlVuaW9uSW5mb3NcIl0gPSBcImNvbm5lY3Rpb25QYnVuaW9uSW5mb3NcIjtcbiAgICAvLyBEUElfSm9pbkNsYXVzZSwgaGF2aW5nIHR5cGUgSm9pbkNsYXVzZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSm9pbkNsYXVzZVwiXSA9IFwiam9pbkNsYXVzZVwiO1xuICAgIC8vIERQSV9Kb2luQ2xhdXNlcywgaGF2aW5nIHR5cGUgSm9pbkNsYXVzZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJKb2luQ2xhdXNlc1wiXSA9IFwiam9pbkNsYXVzZXNcIjtcbiAgICAvLyBEUElfSm9pblZhbGlkYXRpb25SZXN1bHQsIGhhdmluZyB0eXBlIEpvaW5WYWxpZGF0aW9uUmVzdWx0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJKb2luVmFsaWRhdGlvblJlc3VsdFwiXSA9IFwiam9pblZhbGlkYXRpb25SZXN1bHRcIjtcbiAgICAvLyBEUElfSm9pblRhYmxlSW5mbywgaGF2aW5nIHR5cGUgSm9pblRhYmxlSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSm9pblRhYmxlSW5mb1wiXSA9IFwiam9pblRhYmxlSW5mb1wiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJJbmZvLCBoYXZpbmcgdHlwZSBKb2luVGFibGVJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJJbmZvXCJdID0gXCJwYXJhbWV0ZXJJbmZvXCI7XG4gICAgLy8gRFBJX0pvaW5UYWJsZUluZm9zLCBoYXZpbmcgdHlwZSBKb2luVGFibGVJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkpvaW5UYWJsZUluZm9zXCJdID0gXCJqb2luVGFibGVJbmZvc1wiO1xuICAgIC8vIERQSV9Kb2luT25DYWxjSW5mbywgaGF2aW5nIHR5cGUgSm9pbk9uQ2FsY0luZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkpvaW5PbkNhbGNJbmZvXCJdID0gXCJqb2luT25DYWxjSW5mb1wiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uU3VtbWFyeSwgaGF2aW5nIHR5cGUgQ29ubmVjdGlvblN1bW1hcnlQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25TdW1tYXJ5XCJdID0gXCJjb25uZWN0aW9uU3VtbWFyeVwiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uU3VtbWFyaWVzLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uU3VtbWFyeVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uU3VtbWFyaWVzXCJdID0gXCJjb25uZWN0aW9uU3VtbWFyaWVzXCI7XG4gICAgLy8gRFBJX1RvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uLCBoYXZpbmcgdHlwZSBUb3BMZXZlbENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVG9wTGV2ZWxDb25uZWN0aW9uRGVzY3JpcHRpb25cIl0gPSBcInRvcExldmVsQ29ubmVjdGlvbkRlc2NyaXB0aW9uXCI7XG4gICAgLy8gRFBJX0RhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXMsIGhhdmluZyB0eXBlIERhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXNcIl0gPSBcImRhdGFDb25uZWN0aW9uVGFibGVWaWV3TWVzc2FnZXNcIjtcbiAgICAvLyBEUElfVGV4dFRyYW5zZm9ybVNjcmlwdCwgaGF2aW5nIHR5cGUgVGV4dFRyYW5zZm9ybVNjcmlwdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGV4dFRyYW5zZm9ybVNjcmlwdFwiXSA9IFwidGV4dFRyYW5zZm9ybVNjcmlwdFwiO1xuICAgIC8vIERQSV9DYWxlbmRhckRhdGVPcHRpb25zLCBoYXZpbmcgdHlwZSBDYWxlbmRhckRhdGVPcHRpb25zUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYWxlbmRhckRhdGVPcHRpb25zXCJdID0gXCJjYWxlbmRhckRhdGVPcHRpb25zXCI7XG4gICAgLy8gRFBJX0dvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBHb1RvV29ya3NoZWV0VG9vbHRpcFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR29Ub1dvcmtzaGVldFRvb2x0aXBQcmVzTW9kZWxcIl0gPSBcImdvVG9Xb3Jrc2hlZXRUb29sdGlwUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2xlYW5pbmdQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlQ2xlYW5pbmdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlQ2xlYW5pbmdQcmVzTW9kZWxcIl0gPSBcInRhYmxlQ2xlYW5pbmdQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUGl2b3RQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFBpdm90UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQaXZvdFByZXNNb2RlbFwiXSA9IFwicGl2b3RQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUGl2b3RUcmVlSXRlbVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUGl2b3RUcmVlSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGl2b3RUcmVlSXRlbVByZXNNb2RlbFwiXSA9IFwicGl2b3RUcmVlSXRlbVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9QaXZvdFRyZWVJdGVtcywgaGF2aW5nIHR5cGUgUGl2b3RUcmVlSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQaXZvdFRyZWVJdGVtc1wiXSA9IFwicGl2b3RUcmVlSXRlbXNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUGl2b3REaXNwbGF5LCBoYXZpbmcgdHlwZSBQaXZvdERpc3BsYXlQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBpdm90RGlzcGxheVwiXSA9IFwicGl2b3REaXNwbGF5XCI7XG4gICAgLy8gRFBJX1Bpdm90VGFnLCBoYXZpbmcgdHlwZSBOYW1lQ29sdW1uc1BhaXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBpdm90VGFnXCJdID0gXCJwaXZvdFRhZ1wiO1xuICAgIC8vIERQSV9QaXZvdEdyb3VwcywgaGF2aW5nIHR5cGUgTmFtZUNvbHVtbnNQYWlyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlBpdm90R3JvdXBzXCJdID0gXCJwaXZvdEdyb3Vwc1wiO1xuICAgIC8vIERQSV9EYXRhU291cmNlRHJvcGRvd24sIGhhdmluZyB0eXBlIERhdGFTb3VyY2VEcm9wZG93blByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZURyb3Bkb3duXCJdID0gXCJkYXRhU291cmNlRHJvcGRvd25cIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvbkRyb3Bkb3duLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uRHJvcGRvd25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbm5lY3Rpb25Ecm9wZG93blwiXSA9IFwiY29ubmVjdGlvbkRyb3Bkb3duXCI7XG4gICAgLy8gRFBJX0FjdGl2aXR5RXZlbnQsIGhhdmluZyB0eXBlIEFjdGl2aXR5RXZlbnRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFjdGl2aXR5RXZlbnRcIl0gPSBcImFjdGl2aXR5RXZlbnRcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uLCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlVJQXV0b21hdGlvblwiXSA9IFwidWlBdXRvbWF0aW9uXCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbkluZGV4LCBoYXZpbmcgdHlwZSBVSUF1dG9tYXRpb25JbmRleFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uSW5kZXhcIl0gPSBcInVpQXV0b21hdGlvbkluZGV4XCI7XG4gICAgLy8gRFBJX1VJQXV0b21hdGlvbkluZGV4TGlzdCwgaGF2aW5nIHR5cGUgVUlBdXRvbWF0aW9uSW5kZXhQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uSW5kZXhMaXN0XCJdID0gXCJ1aUF1dG9tYXRpb25JbmRleExpc3RcIjtcbiAgICAvLyBEUElfVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mbywgaGF2aW5nIHR5cGUgVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb1wiXSA9IFwidWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb1wiO1xuICAgIC8vIERQSV9VSUF1dG9tYXRpb25Db21wb25lbnRJbmZvTGlzdCwgaGF2aW5nIHR5cGUgVUlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJVSUF1dG9tYXRpb25Db21wb25lbnRJbmZvTGlzdFwiXSA9IFwidWlBdXRvbWF0aW9uQ29tcG9uZW50SW5mb0xpc3RcIjtcbiAgICAvLyBEUElfR2VvbWV0cnksIGhhdmluZyB0eXBlIEdlb21ldHJ5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHZW9tZXRyeVwiXSA9IFwiZ2VvbWV0cnlcIjtcbiAgICAvLyBEUElfTXVsdGlQb2ludCwgaGF2aW5nIHR5cGUgTXVsdGlQb2ludFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTXVsdGlQb2ludFwiXSA9IFwibXVsdGlQb2ludFwiO1xuICAgIC8vIERQSV9NdWx0aUxpbmUsIGhhdmluZyB0eXBlIE11bHRpTGluZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTXVsdGlMaW5lXCJdID0gXCJtdWx0aUxpbmVcIjtcbiAgICAvLyBEUElfTXVsdGlQb2x5Z29uLCBoYXZpbmcgdHlwZSBNdWx0aVBvbHlnb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk11bHRpUG9seWdvblwiXSA9IFwibXVsdGlQb2x5Z29uXCI7XG4gICAgLy8gRFBJX1BvbHlnb24sIGhhdmluZyB0eXBlIFBvbHlnb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBvbHlnb25cIl0gPSBcInBvbHlnb25cIjtcbiAgICAvLyBEUElfUG9seWdvbkxpc3QsIGhhdmluZyB0eXBlIFBvbHlnb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUG9seWdvbkxpc3RcIl0gPSBcInBvbHlnb25MaXN0XCI7XG4gICAgLy8gRFBJX0xpbmUsIGhhdmluZyB0eXBlIExpbmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkxpbmVcIl0gPSBcImxpbmVcIjtcbiAgICAvLyBEUElfTGluZUxpc3QsIGhhdmluZyB0eXBlIExpbmVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiTGluZUxpc3RcIl0gPSBcImxpbmVMaXN0XCI7XG4gICAgLy8gRFBJX1RhYmJlZEF1dGhlbnRpY2F0aW9uLCBoYXZpbmcgdHlwZSBUYWJiZWRBdXRoZW50aWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFiYmVkQXV0aGVudGljYXRpb25cIl0gPSBcInRhYmJlZEF1dGhlbnRpY2F0aW9uXCI7XG4gICAgLy8gRFBJX1RhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mbywgaGF2aW5nIHR5cGUgVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJiZWRBdXRoZW50aWNhdGlvblRhYkluZm9cIl0gPSBcInRhYmJlZEF1dGhlbnRpY2F0aW9uVGFiSW5mb1wiO1xuICAgIC8vIERQSV9UYWJiZWRBdXRoZW50aWNhdGlvblRhYkluZm9zLCBoYXZpbmcgdHlwZSBUYWJiZWRBdXRoZW50aWNhdGlvblRhYkluZm9QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvc1wiXSA9IFwidGFiYmVkQXV0aGVudGljYXRpb25UYWJJbmZvc1wiO1xuICAgIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlLCBoYXZpbmcgdHlwZSBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlXCJdID0gXCJnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlXCI7XG4gICAgLy8gRFBJX0dlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVMaXN0LCBoYXZpbmcgdHlwZSBHZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkdlb2dyYXBoaWNTZWFyY2hDYW5kaWRhdGVMaXN0XCJdID0gXCJnZW9ncmFwaGljU2VhcmNoQ2FuZGlkYXRlTGlzdFwiO1xuICAgIC8vIERQSV9HZW9ncmFwaGljU2VhcmNoUmVzdWx0cywgaGF2aW5nIHR5cGUgR2VvZ3JhcGhpY1NlYXJjaFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR2VvZ3JhcGhpY1NlYXJjaFJlc3VsdHNcIl0gPSBcImdlb2dyYXBoaWNTZWFyY2hSZXN1bHRzXCI7XG4gICAgLy8gRFBJX1BhcmFtSW5mbywgaGF2aW5nIHR5cGUgUGFyYW1ldGVySW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1JbmZvXCJdID0gXCJwYXJhbUluZm9cIjtcbiAgICAvLyBEUElfUGFyYW1JbmZvcywgaGF2aW5nIHR5cGUgUGFyYW1ldGVySW5mb1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbUluZm9zXCJdID0gXCJwYXJhbUluZm9zXCI7XG4gICAgLy8gRFBJX1BhcmFtTmFtZXNwYWNlSW5mbywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyTmFtZXNwYWNlSW5mb0luZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtTmFtZXNwYWNlSW5mb1wiXSA9IFwicGFyYW1OYW1lc3BhY2VJbmZvXCI7XG4gICAgLy8gRFBJX1BhcmFtTmFtZXNwYWNlSW5mb3MsIGhhdmluZyB0eXBlIFBhcmFtZXRlck5hbWVzcGFjZUluZm9QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1OYW1lc3BhY2VJbmZvc1wiXSA9IFwicGFyYW1OYW1lc3BhY2VJbmZvc1wiO1xuICAgIC8vIERQSV9QYXJhbVJlZ2lzdHJ5SW5mbywgaGF2aW5nIHR5cGUgUGFyYW1ldGVyUmVnaXN0cnlJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbVJlZ2lzdHJ5SW5mb1wiXSA9IFwicGFyYW1SZWdpc3RyeUluZm9cIjtcbiAgICAvLyBEUElfRGF0YVNvdXJjZVByb3BlcnRpZXMsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VQcm9wZXJ0aWVzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlUHJvcGVydGllc1wiXSA9IFwiY29ubmVjdGlvblByb3BlcnRpZXNcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblR5cGVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIENvbm5lY3Rpb25UeXBlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uVHlwZVByZXNNb2RlbFwiXSA9IFwiY29ubmVjdGlvblR5cGVQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQ29ubmVjdGlvblR5cGVzLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uVHlwZXNcIl0gPSBcImNvbm5lY3Rpb25UeXBlc1wiO1xuICAgIC8vIERQSV9Db25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBDb25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsXCJdID0gXCJjb25uZWN0aW9uVHlwZUdyb3VwUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1NhdmVkRGF0YVNvdXJjZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2F2ZWREYXRhU291cmNlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTYXZlZERhdGFTb3VyY2VQcmVzTW9kZWxcIl0gPSBcInNhdmVkRGF0YXNvdXJjZVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9TYXZlZERhdGFTb3VyY2VzLCBoYXZpbmcgdHlwZSBTYXZlZERhdGFTb3VyY2VQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2F2ZWREYXRhU291cmNlc1wiXSA9IFwic2F2ZWREYXRhc291cmNlc1wiO1xuICAgIC8vIERQSV9TYXZlZERhdGFTb3VyY2VzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBTYXZlZERhdGFTb3VyY2VzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTYXZlZERhdGFTb3VyY2VzUHJlc01vZGVsXCJdID0gXCJzYXZlZERhdGFzb3VyY2VzUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX09wZW5QYW5lSXRlbVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgT3BlblBhbmVJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJPcGVuUGFuZUl0ZW1QcmVzTW9kZWxcIl0gPSBcIm9wZW5QYW5lSXRlbVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9PcGVuUGFuZUl0ZW1zLCBoYXZpbmcgdHlwZSBPcGVuUGFuZUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiT3BlblBhbmVJdGVtc1wiXSA9IFwib3BlblBhbmVJdGVtc1wiO1xuICAgIC8vIERQSV9PcGVuUGFuZUl0ZW1zUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBPcGVuUGFuZUl0ZW1zUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJPcGVuUGFuZUl0ZW1zUHJlc01vZGVsXCJdID0gXCJvcGVuUGFuZUl0ZW1zUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1ZhcmlhYmxlVmFsdWUsIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlVmFsdWVcIl0gPSBcInZhcmlhYmxlVmFsdWVcIjtcbiAgICAvLyBEUElfVmFyaWFibGVWYWx1ZXMsIGhhdmluZyB0eXBlIFZhcmlhYmxlVmFsdWVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVmFyaWFibGVWYWx1ZXNcIl0gPSBcInZhcmlhYmxlVmFsdWVzXCI7XG4gICAgLy8gRFBJX1NlcnZlclZhcmlhYmxlVmFsdWUsIGhhdmluZyB0eXBlIFNlcnZlclZhcmlhYmxlVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlcnZlclZhcmlhYmxlVmFsdWVcIl0gPSBcInNlcnZlclZhcmlhYmxlVmFsdWVcIjtcbiAgICAvLyBEUElfRWRpdGFibGVWYXJpYWJsZVZhbHVlLCBoYXZpbmcgdHlwZSBFZGl0YWJsZVZhcmlhYmxlVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkVkaXRhYmxlVmFyaWFibGVWYWx1ZVwiXSA9IFwiZWRpdGFibGVWYXJpYWJsZVZhbHVlXCI7XG4gICAgLy8gRFBJX1NlcnZlclZhcmlhYmxlTWV0YWRhdGEsIGhhdmluZyB0eXBlIFNlcnZlclZhcmlhYmxlTWV0YWRhdGFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlcnZlclZhcmlhYmxlTWV0YWRhdGFcIl0gPSBcInNlcnZlclZhcmlhYmxlTWV0YWRhdGFcIjtcbiAgICAvLyBEUElfUHJvbXB0VmFyaWFibGUsIGhhdmluZyB0eXBlIFByb21wdFZhcmlhYmxlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQcm9tcHRWYXJpYWJsZVwiXSA9IFwicHJvbXB0VmFyaWFibGVcIjtcbiAgICAvLyBEUElfUHJvbXB0VmFyaWFibGVzLCBoYXZpbmcgdHlwZSBQcm9tcHRWYXJpYWJsZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQcm9tcHRWYXJpYWJsZXNcIl0gPSBcInByb21wdFZhcmlhYmxlc1wiO1xuICAgIC8vIERQSV9WYXJpYWJsZVByb21wdERpYWxvZywgaGF2aW5nIHR5cGUgVmFyaWFibGVQcm9tcHREaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlUHJvbXB0RGlhbG9nXCJdID0gXCJ2YXJpYWJsZVByb21wdERpYWxvZ1wiO1xuICAgIC8vIERQSV9WYXJpYWJsZVZhbHVlT3BlcmF0aW9uLCBoYXZpbmcgdHlwZSBWYXJpYWJsZVZhbHVlT3BlcmF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJWYXJpYWJsZVZhbHVlT3BlcmF0aW9uXCJdID0gXCJ2YXJpYWJsZVZhbHVlT3BlcmF0aW9uXCI7XG4gICAgLy8gRFBJX1ZhcmlhYmxlVmFsdWVPcGVyYXRpb25zLCBoYXZpbmcgdHlwZSBWYXJpYWJsZVZhbHVlT3BlcmF0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlZhcmlhYmxlVmFsdWVPcGVyYXRpb25zXCJdID0gXCJ2YXJpYWJsZVZhbHVlT3BlcmF0aW9uc1wiO1xuICAgIC8vIERQSV9UYWJsZU9wdGlvbnNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlT3B0aW9uc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVPcHRpb25zUHJlc01vZGVsXCJdID0gXCJ0YWJsZU9wdGlvbnNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQ2xpZW50SW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ2xpZW50SW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2xpZW50SW5mb1ByZXNNb2RlbFwiXSA9IFwiY2xpZW50SW5mb1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9UYWJsZWF1RmlsZUluZm9QcmVzTW9kZWwsIGhhdmluZyB0eXBlIFRhYmxlYXVGaWxlSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVhdUZpbGVJbmZvUHJlc01vZGVsXCJdID0gXCJ0YWJsZWF1RmlsZUluZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRGVidWdnaW5nSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRGVidWdnaW5nSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGVidWdnaW5nSW5mb1ByZXNNb2RlbFwiXSA9IFwiZGVidWdnaW5nSW5mb1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9SdW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgUnVubmluZ1RocmVhZEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJ1bm5pbmdUaHJlYWRJbmZvUHJlc01vZGVsXCJdID0gXCJydW5uaW5nVGhyZWFkSW5mb1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9BYm91dERpYWxvZ0luZm9QcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFib3V0RGlhbG9nSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWJvdXREaWFsb2dJbmZvUHJlc01vZGVsXCJdID0gXCJhYm91dERpYWxvZ0luZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfSHlicmlkVUlTaG93Y2FzZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgSHlicmlkVUlTaG93Y2FzZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSHlicmlkVUlTaG93Y2FzZVByZXNNb2RlbFwiXSA9IFwiaHlicmlkVWlTaG93Y2FzZVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9NZW51Q29uZmlndXJhdGlvbiwgaGF2aW5nIHR5cGUgTWVudUNvbmZpZ3VyYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lbnVDb25maWd1cmF0aW9uXCJdID0gXCJtZW51Q29uZmlndXJhdGlvblwiO1xuICAgIC8vIERQSV9NZW51SXRlbSwgaGF2aW5nIHR5cGUgTWVudUl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lbnVJdGVtXCJdID0gXCJtZW51SXRlbVwiO1xuICAgIC8vIERQSV9NZW51SXRlbU1vZGVscywgaGF2aW5nIHR5cGUgTWVudUl0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiTWVudUl0ZW1Nb2RlbHNcIl0gPSBcIm1lbnVJdGVtTW9kZWxzXCI7XG4gICAgLy8gRFBJX0RlZmF1bHRUZXh0Rm9ybWF0LCBoYXZpbmcgdHlwZSBEZWZhdWx0VGV4dEZvcm1hdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGVmYXVsdFRleHRGb3JtYXRcIl0gPSBcImRlZmF1bHRUZXh0Rm9ybWF0XCI7XG4gICAgLy8gRFBJX01hcEJveFNlcnZlckluZm9QcmVzTW9kZWwsIGhhdmluZyB0eXBlIE1hcEJveFNlcnZlckluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcEJveFNlcnZlckluZm9QcmVzTW9kZWxcIl0gPSBcIm1hcGJveFNlcnZlckluZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfV01TU2VydmVySW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgV01TU2VydmVySW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV01TU2VydmVySW5mb1ByZXNNb2RlbFwiXSA9IFwid21zU2VydmVySW5mb1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9NYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbCwgaGF2aW5nIHR5cGUgTWFwU291cmNlQ29uZmxpY3RQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1hcFNvdXJjZUNvbmZsaWN0UHJlc01vZGVsXCJdID0gXCJtYXBTb3VyY2VDb25mbGljdFByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9FbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBFbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsXCJdID0gXCJlbnVtZXJhdGVkU2V0RGlhbG9nUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0VkaXRBbGlhc2VzRGlhbG9nLCBoYXZpbmcgdHlwZSBFZGl0QWxpYXNlc0RpYWxvZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdEFsaWFzZXNEaWFsb2dcIl0gPSBcImVkaXRBbGlhc2VzRGlhbG9nUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0FsaWFzZXNQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEFsaWFzZXNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFsaWFzZXNQcmVzTW9kZWxcIl0gPSBcImFsaWFzZXNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQ2xlYXJBbGlhc2VzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBbGlhc2VzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDbGVhckFsaWFzZXNQcmVzTW9kZWxcIl0gPSBcImNsZWFyQWxpYXNlc1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9OZXdBbGlhc2VzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBOZXdBbGlhc2VzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOZXdBbGlhc2VzUHJlc01vZGVsXCJdID0gXCJuZXdBbGlhc2VzUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0FsaWFzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBbGlhc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWxpYXNQcmVzTW9kZWxcIl0gPSBcImFsaWFzUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0FsaWFzSXRlbSwgaGF2aW5nIHR5cGUgQWxpYXNJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBbGlhc0l0ZW1cIl0gPSBcImFsaWFzSXRlbVwiO1xuICAgIC8vIERQSV9EdXBsaWNhdGVBbGlhc0l0ZW0sIGhhdmluZyB0eXBlIEFsaWFzSXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRHVwbGljYXRlQWxpYXNJdGVtXCJdID0gXCJkdXBsaWNhdGVBbGlhc0l0ZW1cIjtcbiAgICAvLyBEUElfQWxpYXNMaXN0LCBoYXZpbmcgdHlwZSBBbGlhc0l0ZW1QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQWxpYXNMaXN0XCJdID0gXCJhbGlhc0xpc3RcIjtcbiAgICAvLyBEUElfQWxpYXNSZXN1bHRJdGVtLCBoYXZpbmcgdHlwZSBBbGlhc1Jlc3VsdEl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFsaWFzUmVzdWx0SXRlbVwiXSA9IFwiYWxpYXNSZXN1bHRJdGVtXCI7XG4gICAgLy8gRFBJX0FsaWFzUmVzdWx0TGlzdCwgaGF2aW5nIHR5cGUgQWxpYXNSZXN1bHRJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFsaWFzUmVzdWx0TGlzdFwiXSA9IFwiYWxpYXNSZXN1bHRMaXN0XCI7XG4gICAgLy8gRFBJX0FsaWFzUmVzdWx0cywgaGF2aW5nIHR5cGUgQWxpYXNSZXN1bHRzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBbGlhc1Jlc3VsdHNcIl0gPSBcImFsaWFzUmVzdWx0c1wiO1xuICAgIC8vIERQSV9FZGl0U2V0RGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBFZGl0U2V0RGlhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFZGl0U2V0RGlhbG9nUHJlc01vZGVsXCJdID0gXCJlZGl0U2V0RGlhbG9nUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0NvbmZpcm1hdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQ29uZmlybWF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25maXJtYXRpb25QcmVzTW9kZWxcIl0gPSBcImNvbmZpcm1hdGlvblByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9Ob3RpZmljYXRpb25QcmVzTW9kZWwsIGhhdmluZyB0eXBlIE5vdGlmaWNhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiTm90aWZpY2F0aW9uUHJlc01vZGVsXCJdID0gXCJub3RpZmljYXRpb25QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUmV0YXJnZXREYXRhU291cmNlRGlhbG9nUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSZXRhcmdldERhdGFTb3VyY2VEaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJldGFyZ2V0RGF0YVNvdXJjZURpYWxvZ1ByZXNNb2RlbFwiXSA9IFwicmV0YXJnZXREYXRhc291cmNlRGlhbG9nUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1NoYXJlZEZpbHRlclByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2hhcmVkRmlsdGVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGFyZWRGaWx0ZXJQcmVzTW9kZWxcIl0gPSBcInNoYXJlZEZpbHRlclByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9TaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvLCBoYXZpbmcgdHlwZSBTaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvXCJdID0gXCJzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvXCI7XG4gICAgLy8gRFBJX1NoYXJlZEZpbHRlcldvcmtzaGVldEluZm9MaXN0LCBoYXZpbmcgdHlwZSBTaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlNoYXJlZEZpbHRlcldvcmtzaGVldEluZm9MaXN0XCJdID0gXCJzaGFyZWRGaWx0ZXJXb3Jrc2hlZXRJbmZvTGlzdFwiO1xuICAgIC8vIERQSV9GaWVsZFBpY2tlclRyZWVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsXCJdID0gXCJmaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsU291cmNlLCBoYXZpbmcgdHlwZSBGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFNvdXJjZVwiXSA9IFwiZmllbGRQaWNrZXJUcmVlUHJlc01vZGVsU291cmNlXCI7XG4gICAgLy8gRFBJX0ZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFRhcmdldCwgaGF2aW5nIHR5cGUgRmllbGRQaWNrZXJUcmVlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFBpY2tlclRyZWVQcmVzTW9kZWxUYXJnZXRcIl0gPSBcImZpZWxkUGlja2VyVHJlZVByZXNNb2RlbFRhcmdldFwiO1xuICAgIC8vIERQSV9FcnJvckluZm8sIGhhdmluZyB0eXBlIEVycm9ySW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRXJyb3JJbmZvXCJdID0gXCJlcnJvckluZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQ3VzdG9tU3BsaXRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEN1c3RvbVNwbGl0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdXN0b21TcGxpdFByZXNNb2RlbFwiXSA9IFwiY3VzdG9tU3BsaXRQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUGFnZVNldHVwLCBoYXZpbmcgdHlwZSBQYWdlU2V0dXBQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhZ2VTZXR1cFwiXSA9IFwicGFnZVNldHVwXCI7XG4gICAgLy8gRFBJX1NlcnZlckNvbm5lY3RTdGF0dXMsIGhhdmluZyB0eXBlIFNlcnZlckNvbm5lY3Rpb25TdGF0dXNcbiAgICBQYXJhbWV0ZXJJZFtcIlNlcnZlckNvbm5lY3RTdGF0dXNcIl0gPSBcInNlcnZlckNvbm5lY3Rpb25TdGF0dXNcIjtcbiAgICAvLyBEUElfR2V0RmlsdGVySXRlbXNSZXNwb25zZSwgaGF2aW5nIHR5cGUgR2V0RmlsdGVySXRlbXNSZXNwb25zZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiR2V0RmlsdGVySXRlbXNSZXNwb25zZVwiXSA9IFwiZ2V0RmlsdGVySXRlbXNSZXNwb25zZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJTZWFyY2hSZXNwb25zZSwgaGF2aW5nIHR5cGUgRmlsdGVyU2VhcmNoUmVzcG9uc2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaFJlc3BvbnNlXCJdID0gXCJmaWx0ZXJTZWFyY2hSZXNwb25zZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZSwgaGF2aW5nIHR5cGUgRmlsdGVyU2VhcmNoV2l0aEluZGV4UmVzcG9uc2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNlYXJjaFdpdGhJbmRleFJlc3BvbnNlXCJdID0gXCJmaWx0ZXJTZWFyY2hXaXRoSW5kZXhSZXNwb25zZVwiO1xuICAgIC8vIERQSV9GaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZSwgaGF2aW5nIHR5cGUgRmlsdGVyU2hvd0NoaWxkcmVuUmVzcG9uc2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclNob3dDaGlsZHJlblJlc3BvbnNlXCJdID0gXCJmaWx0ZXJTaG93Q2hpbGRyZW5SZXNwb25zZVwiO1xuICAgIC8vIERQSV9FZGl0RGF0YVNlcnZlckNvbm5lY3Rpb24sIGhhdmluZyB0eXBlIEVkaXREYXRhU2VydmVyQ29ubmVjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRWRpdERhdGFTZXJ2ZXJDb25uZWN0aW9uXCJdID0gXCJlZGl0RGF0YVNlcnZlckNvbm5lY3Rpb25cIjtcbiAgICAvLyBEUElfSW1hZ2VzRWRpdCwgaGF2aW5nIHR5cGUgSW1hZ2VzRWRpdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSW1hZ2VzRWRpdFwiXSA9IFwiaW1hZ2VzRWRpdFwiO1xuICAgIC8vIERQSV9CYWNrZ3JvdW5kSW1hZ2UsIGhhdmluZyB0eXBlIEJhY2tncm91bmRJbWFnZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQmFja2dyb3VuZEltYWdlXCJdID0gXCJiYWNrZ3JvdW5kSW1hZ2VcIjtcbiAgICAvLyBEUElfQmFja2dyb3VuZEltYWdlcywgaGF2aW5nIHR5cGUgQmFja2dyb3VuZEltYWdlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkJhY2tncm91bmRJbWFnZXNcIl0gPSBcImJhY2tncm91bmRJbWFnZXNcIjtcbiAgICAvLyBEUElfUHJlZGljYXRlLCBoYXZpbmcgdHlwZSBQcmVkaWNhdGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlByZWRpY2F0ZVwiXSA9IFwicHJlZGljYXRlXCI7XG4gICAgLy8gRFBJX1ByZWRpY2F0ZXMsIGhhdmluZyB0eXBlIFByZWRpY2F0ZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJQcmVkaWNhdGVzXCJdID0gXCJwcmVkaWNhdGVzXCI7XG4gICAgLy8gRFBJX0ltYWdlc0VkaXRSZXN1bHQsIGhhdmluZyB0eXBlIEltYWdlc0VkaXRSZXN1bHRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkltYWdlc0VkaXRSZXN1bHRcIl0gPSBcImltYWdlc0VkaXRSZXN1bHRcIjtcbiAgICAvLyBEUElfU29ydERpYWxvZ1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU29ydERpYWxvZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU29ydERpYWxvZ1ByZXNNb2RlbFwiXSA9IFwic29ydERpYWxvZ1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9Db21wb3VuZFRhYmxlQ2FsYywgaGF2aW5nIHR5cGUgQ29tcG91bmRUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb21wb3VuZFRhYmxlQ2FsY1wiXSA9IFwiY29tcG91bmRUYWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsYywgaGF2aW5nIHR5cGUgVGFibGVDYWxjdWxhdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVDYWxjXCJdID0gXCJ0YWJsZUNhbGN1bGF0aW9uUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1RhYmxlQ2FsY3MsIGhhdmluZyB0eXBlIFRhYmxlQ2FsY3VsYXRpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVDYWxjc1wiXSA9IFwidGFibGVDYWxjdWxhdGlvblByZXNNb2RlbHNcIjtcbiAgICAvLyBEUElfVGFibGVDYWxjSWRlbnRpZmllciwgaGF2aW5nIHR5cGUgVGFibGVDYWxjSWRlbnRpZmllclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVDYWxjSWRlbnRpZmllclwiXSA9IFwidGFibGVDYWxjSWRlbnRpZmllclwiO1xuICAgIC8vIERQSV9OZXN0ZWRUYWJsZUNhbGNJbmZvLCBoYXZpbmcgdHlwZSBOZXN0ZWRUYWJsZUNhbGNJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOZXN0ZWRUYWJsZUNhbGNJbmZvXCJdID0gXCJuZXN0ZWRUYWJsZUNhbGNJbmZvXCI7XG4gICAgLy8gRFBJX05lc3RlZFRhYmxlQ2FsY0luZm9zLCBoYXZpbmcgdHlwZSBOZXN0ZWRUYWJsZUNhbGNJbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIk5lc3RlZFRhYmxlQ2FsY0luZm9zXCJdID0gXCJuZXN0ZWRUYWJsZUNhbGNJbmZvc1wiO1xuICAgIC8vIERQSV9PcmRlcmluZywgaGF2aW5nIHR5cGUgVGFibGVDYWxjT3JkZXJpbmdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk9yZGVyaW5nXCJdID0gXCJ0YWJsZUNhbGNPcmRlcmluZ1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9DdW11bGF0aXZlLCBoYXZpbmcgdHlwZSBDdW11bGF0aXZlVGFibGVDYWxjUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDdW11bGF0aXZlXCJdID0gXCJjdW11bGF0aXZlVGFibGVDYWxjUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1JlZmVyZW5jZU9wdGlvbnMsIGhhdmluZyB0eXBlIFRhYmxlQ2FsY1JlZmVyZW5jZU9wdGlvbnNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZmVyZW5jZU9wdGlvbnNcIl0gPSBcInRhYmxlQ2FsY1JlZmVyZW5jZU9wdGlvbnNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRGlmZmVyZW5jZSwgaGF2aW5nIHR5cGUgRGlmZmVyZW5jZVRhYmxlQ2FsY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGlmZmVyZW5jZVwiXSA9IFwiZGlmZmVyZW5jZVRhYmxlQ2FsY1ByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9XaW5kb3csIGhhdmluZyB0eXBlIFdpbmRvd1RhYmxlQ2FsY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV2luZG93XCJdID0gXCJ3aW5kb3dUYWJsZUNhbGNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUGVyY2VudFRvdGFsLCBoYXZpbmcgdHlwZSBQZXJjZW50VG90YWxUYWJsZUNhbGNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBlcmNlbnRUb3RhbFwiXSA9IFwicGVyY2VudFRvdGFsVGFibGVDYWxjUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1JhbmssIGhhdmluZyB0eXBlIFJhbmtUYWJsZUNhbGNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmtcIl0gPSBcInJhbmtUYWJsZUNhbGNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQ3VzdG9tLCBoYXZpbmcgdHlwZSBDdXN0b21UYWJsZUNhbGNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkN1c3RvbVwiXSA9IFwiY3VzdG9tVGFibGVDYWxjUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1dlYkRhdGFVcmwsIGhhdmluZyB0eXBlIFdlYkRhdGFVcmxQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIldlYkRhdGFVcmxcIl0gPSBcIndlYkRhdGFVcmxcIjtcbiAgICAvLyBEUElfVmlzaXRlZFdlYkRhdGFDb25uZWN0b3JzLCBoYXZpbmcgdHlwZSBXZWJEYXRhVXJsUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlZpc2l0ZWRXZWJEYXRhQ29ubmVjdG9yc1wiXSA9IFwidmlzaXRlZFdlYkRhdGFDb25uZWN0b3JzXCI7XG4gICAgLy8gRFBJX1dlYkRhdGFTZXNzaW9uVXJscywgaGF2aW5nIHR5cGUgV2ViRGF0YVVybFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJXZWJEYXRhU2Vzc2lvblVybHNcIl0gPSBcIndlYkRhdGFTZXNzaW9uVXJsc1wiO1xuICAgIC8vIERQSV9XZWJEYXRhVXJscywgaGF2aW5nIHR5cGUgV2ViRGF0YVVybFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJXZWJEYXRhVXJsc1wiXSA9IFwid2ViRGF0YVVybHNcIjtcbiAgICAvLyBEUElfRmllbGRQaWNrZXIsIGhhdmluZyB0eXBlIEZpZWxkUGlja2VyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZFBpY2tlclwiXSA9IFwiZmllbGRQaWNrZXJcIjtcbiAgICAvLyBEUElfRGVzY3JpYmVGaWVsZCwgaGF2aW5nIHR5cGUgRGVzY3JpYmVGaWVsZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGVzY3JpYmVGaWVsZFwiXSA9IFwiZGVzY3JpYmVGaWVsZFwiO1xuICAgIC8vIERQSV9TaG93RGF0YVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2hvd0RhdGFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNob3dEYXRhUHJlc01vZGVsXCJdID0gXCJzaG93RGF0YVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9EYXRhVGFibGVQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFNob3dEYXRhVGFibGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFUYWJsZVByZXNNb2RlbFwiXSA9IFwiZGF0YVRhYmxlUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0RhdGFUYWJsZVByZXNNb2RlbHMsIGhhdmluZyB0eXBlIFNob3dEYXRhVGFibGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVRhYmxlUHJlc01vZGVsc1wiXSA9IFwiZGF0YVRhYmxlUHJlc01vZGVsc1wiO1xuICAgIC8vIERQSV9TdW1tYXJ5VGFibGVQcmVzTW9kZWxzLCBoYXZpbmcgdHlwZSBTaG93RGF0YVRhYmxlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlN1bW1hcnlUYWJsZVByZXNNb2RlbHNcIl0gPSBcInN1bW1hcnlUYWJsZVByZXNNb2RlbHNcIjtcbiAgICAvLyBEUElfUmVmcmVzaEFsbEV4dHJhY3RzUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSZWZyZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZnJlc2hBbGxFeHRyYWN0c1ByZXNNb2RlbFwiXSA9IFwicmVmZXNoQWxsRXh0cmFjdHNQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfUmVmcmVzaEV4dHJhY3REYXRhU291cmNlUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBSZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJlZnJlc2hFeHRyYWN0RGF0YVNvdXJjZVByZXNNb2RlbFwiXSA9IFwicmVmcmVzaEV4dHJhY3REYXRhc291cmNlUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX1JlZnJlc2hFeHRyYWN0RGF0YVNvdXJjZUxpc3QsIGhhdmluZyB0eXBlIFJlZnJlc2hFeHRyYWN0RGF0YVNvdXJjZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJSZWZyZXNoRXh0cmFjdERhdGFTb3VyY2VMaXN0XCJdID0gXCJyZWZyZXNoRXh0cmFjdERhdGFzb3VyY2VMaXN0XCI7XG4gICAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5UHJlc01vZGVsLCBoYXZpbmcgdHlwZSBFeHRyYWN0SGlzdG9yeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRXh0cmFjdEhpc3RvcnlQcmVzTW9kZWxcIl0gPSBcImV4dHJhY3RIaXN0b3J5UHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0V4dHJhY3RIaXN0b3J5SXRlbVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRXh0cmFjdEhpc3RvcnlJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0SGlzdG9yeUl0ZW1QcmVzTW9kZWxcIl0gPSBcImV4dHJhY3RIaXN0b3J5SXRlbVwiO1xuICAgIC8vIERQSV9FeHRyYWN0SGlzdG9yeUxpc3QsIGhhdmluZyB0eXBlIEV4dHJhY3RIaXN0b3J5SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJFeHRyYWN0SGlzdG9yeUxpc3RcIl0gPSBcImV4dHJhY3RIaXN0b3J5TGlzdFwiO1xuICAgIC8vIERQSV9EYXRhUHJvdmlkZXJQcmVzTW9kZWwsIGhhdmluZyB0eXBlIERhdGFQcm92aWRlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVByb3ZpZGVyUHJlc01vZGVsXCJdID0gXCJkYXRhUHJvdmlkZXJQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfRm9ybWF0SXRlbSwgaGF2aW5nIHR5cGUgRm9ybWF0SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0SXRlbVwiXSA9IFwiZm9ybWF0SXRlbVwiO1xuICAgIC8vIERQSV9Gb3JtYXRJdGVtTGlzdCwgaGF2aW5nIHR5cGUgRm9ybWF0SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJGb3JtYXRJdGVtTGlzdFwiXSA9IFwiZm9ybWF0SXRlbUxpc3RcIjtcbiAgICAvLyBEUElfRm9ybWF0Q29udGFpbmVyLCBoYXZpbmcgdHlwZSBGb3JtYXRDb250YWluZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdENvbnRhaW5lclwiXSA9IFwiZm9ybWF0Q29udGFpbmVyXCI7XG4gICAgLy8gRFBJX0Zvcm1hdFBhbmUsIGhhdmluZyB0eXBlIEZvcm1hdFBhbmVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdFBhbmVcIl0gPSBcImZvcm1hdFBhbmVcIjtcbiAgICAvLyBEUElfRm9ybWF0U2VjdGlvbiwgaGF2aW5nIHR5cGUgRm9ybWF0U2VjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRm9ybWF0U2VjdGlvblwiXSA9IFwiZm9ybWF0U2VjdGlvblwiO1xuICAgIC8vIERQSV9Db2xsYXBzaWJsZVNlY3Rpb24sIGhhdmluZyB0eXBlIENvbGxhcHNpYmxlU2VjdGlvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ29sbGFwc2libGVTZWN0aW9uXCJdID0gXCJjb2xsYXBzaWJsZVNlY3Rpb25cIjtcbiAgICAvLyBEUElfQ29tcG9zaXRlQ29udGFpbmVyLCBoYXZpbmcgdHlwZSBDb21wb3NpdGVDb250YWluZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbXBvc2l0ZUNvbnRhaW5lclwiXSA9IFwiY29tcG9zaXRlQ29udGFpbmVyXCI7XG4gICAgLy8gRFBJX1VuaXRDb250YWluZXIsIGhhdmluZyB0eXBlIFVuaXRDb250YWluZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlVuaXRDb250YWluZXJcIl0gPSBcInVuaXRDb250YWluZXJcIjtcbiAgICAvLyBEUElfVGFiR3JvdXAsIGhhdmluZyB0eXBlIFRhYkdyb3VwUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJHcm91cFwiXSA9IFwidGFiR3JvdXBcIjtcbiAgICAvLyBEUElfVGFiLCBoYXZpbmcgdHlwZSBUYWJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYlwiXSA9IFwidGFiXCI7XG4gICAgLy8gRFBJX0Zvcm1hdENvbnRyb2wsIGhhdmluZyB0eXBlIEZvcm1hdENvbnRyb2xQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkZvcm1hdENvbnRyb2xcIl0gPSBcImZvcm1hdENvbnRyb2xcIjtcbiAgICAvLyBEUElfVGV4dENvbnRyb2wsIGhhdmluZyB0eXBlIFRleHRDb250cm9sUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUZXh0Q29udHJvbFwiXSA9IFwidGV4dENvbnRyb2xcIjtcbiAgICAvLyBEUElfTnVtZXJpY0NvbnRyb2wsIGhhdmluZyB0eXBlIE51bWVyaWNDb250cm9sUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOdW1lcmljQ29udHJvbFwiXSA9IFwibnVtZXJpY0NvbnRyb2xcIjtcbiAgICAvLyBEUElfQ29sb3JDb250cm9sLCBoYXZpbmcgdHlwZSBDb2xvckNvbnRyb2xQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNvbG9yQ29udHJvbFwiXSA9IFwiY29sb3JDb250cm9sXCI7XG4gICAgLy8gRFBJX1RvZ2dsZUNvbnRyb2wsIGhhdmluZyB0eXBlIFRvZ2dsZUNvbnRyb2xQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRvZ2dsZUNvbnRyb2xcIl0gPSBcInRvZ2dsZUNvbnRyb2xcIjtcbiAgICAvLyBEUElfU2VsZWN0b3JDb250cm9sLCBoYXZpbmcgdHlwZSBTZWxlY3RvckNvbnRyb2xQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdG9yQ29udHJvbFwiXSA9IFwiZW51bVN0cmluZ1N0eWxlXCI7XG4gICAgLy8gRFBJX1N0YXRzQW5hbHl0aWNTcGVjLCBoYXZpbmcgdHlwZSBTdGF0c0FuYWx5dGljU3BlY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU3RhdHNBbmFseXRpY1NwZWNcIl0gPSBcInN0YXRzQW5hbHl0aWNTcGVjXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJTcGVjLCBoYXZpbmcgdHlwZSBDbHVzdGVyU3BlY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3RlclNwZWNcIl0gPSBcImNsdXN0ZXJpbmdTcGVjXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJSZXN1bHRzLCBoYXZpbmcgdHlwZSBDbHVzdGVyUmVzdWx0c1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3RlclJlc3VsdHNcIl0gPSBcImNsdXN0ZXJSZXN1bHRzXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJVbml0LCBoYXZpbmcgdHlwZSBDbHVzdGVyVW5pdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3RlclVuaXRcIl0gPSBcImNsdXN0ZXJcIjtcbiAgICAvLyBEUElfQ2x1c3RlclVuaXRzLCBoYXZpbmcgdHlwZSBDbHVzdGVyVW5pdFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDbHVzdGVyVW5pdHNcIl0gPSBcImNsdXN0ZXJVbml0UHJlc01vZGVsc1wiO1xuICAgIC8vIERQSV9DbHVzdGVyRmllbGRBTk9WQSwgaGF2aW5nIHR5cGUgQ2x1c3RlckZpZWxkQU5PVkFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNsdXN0ZXJGaWVsZEFOT1ZBXCJdID0gXCJjbHVzdGVyRmllbGRBbm92YVwiO1xuICAgIC8vIERQSV9DbHVzdGVyRmllbGRBTk9WQVRhYmxlLCBoYXZpbmcgdHlwZSBDbHVzdGVyRmllbGRBTk9WQVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDbHVzdGVyRmllbGRBTk9WQVRhYmxlXCJdID0gXCJjbHVzdGVyRmllbGRBbm92YVRhYmxlUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJFZGl0LCBoYXZpbmcgdHlwZSBDbHVzdGVyRWRpdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2x1c3RlckVkaXRcIl0gPSBcImNsdXN0ZXJFZGl0UHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0NsdXN0ZXJEZXNjcmlwdGlvbiwgaGF2aW5nIHR5cGUgQ2x1c3RlckRlc2NyaWJlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDbHVzdGVyRGVzY3JpcHRpb25cIl0gPSBcImNsdXN0ZXJEZXNjcmlwdGlvblwiO1xuICAgIC8vIERQSV9PdXRsaWVyUmVzdWx0cywgaGF2aW5nIHR5cGUgT3V0bGllclJlc3VsdHNQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk91dGxpZXJSZXN1bHRzXCJdID0gXCJvdXRsaWVyUmVzdWx0c1wiO1xuICAgIC8vIERQSV9Db25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0LCBoYXZpbmcgdHlwZSBDb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0XCJdID0gXCJjb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0XCI7XG4gICAgLy8gRFBJX0RhdGFTZXJ2ZXJDb25uZWN0aW9uUmV0dXJuU3RhdHVzLCBoYXZpbmcgdHlwZSBDb25uZWN0VG9EYXRhU2VydmVyU291cmNlUmVzdWx0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU2VydmVyQ29ubmVjdGlvblJldHVyblN0YXR1c1wiXSA9IFwiZGF0YVNlcnZlckNvbm5lY3Rpb25SZXR1cm5TdGF0dXNcIjtcbiAgICAvLyBEUElfV2ViUXVhbnRpdGF0aXZlQ29sb3JEaWFsb2csIGhhdmluZyB0eXBlIFdlYlF1YW50aXRhdGl2ZUNvbG9yRGlhbG9nUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJXZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZ1wiXSA9IFwicXVhbnRpdGF0aXZlQ29sb3JEaWFsb2dcIjtcbiAgICAvLyBEUElfV2ViQ2F0ZWdvcmljYWxDb2xvckRpYWxvZywgaGF2aW5nIHR5cGUgV2ViQ2F0ZWdvcmljYWxDb2xvckRpYWxvZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiV2ViQ2F0ZWdvcmljYWxDb2xvckRpYWxvZ1wiXSA9IFwiY2F0ZWdvcmljYWxDb2xvckRpYWxvZ1wiO1xuICAgIC8vIERQSV9XZWJTYXZlRGF0YXNvdXJjZURpYWxvZywgaGF2aW5nIHR5cGUgV2ViU2F2ZURhdGFzb3VyY2VEaWFsb2dQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIldlYlNhdmVEYXRhc291cmNlRGlhbG9nXCJdID0gXCJzYXZlRGF0YXNvdXJjZURpYWxvZ1wiO1xuICAgIC8vIERQSV9Cb3JkZXJTdHlsZVNwZWMsIGhhdmluZyB0eXBlIFN0eWxlU3BlY1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQm9yZGVyU3R5bGVTcGVjXCJdID0gXCJib3JkZXJTdHlsZVNwZWNcIjtcbiAgICAvLyBEUElfSGFsb1N0eWxlU3BlYywgaGF2aW5nIHR5cGUgU3R5bGVTcGVjUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIYWxvU3R5bGVTcGVjXCJdID0gXCJoYWxvU3R5bGVTcGVjXCI7XG4gICAgLy8gRFBJX01hcmtzQ29sb3JVYmVyRWZmZWN0cywgaGF2aW5nIHR5cGUgTWFya3NDb2xvclViZXJFZmZlY3RzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNYXJrc0NvbG9yVWJlckVmZmVjdHNcIl0gPSBcIm1hcmtzQ29sb3JVYmVyRWZmZWN0c1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbENvbG9yRW5jb2RpbmcsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQ29sb3JFbmNvZGluZ1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxDb2xvckVuY29kaW5nXCJdID0gXCJjYXRlZ29yaWNhbENvbG9yRW5jb2RpbmdcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxTaGFwZUVuY29kaW5nLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbFNoYXBlRW5jb2RpbmdQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsU2hhcGVFbmNvZGluZ1wiXSA9IFwiY2F0ZWdvcmljYWxTaGFwZUVuY29kaW5nXCI7XG4gICAgLy8gRFBJX1NoYXBlUGFsZXR0ZVByZXNNb2RlbCwgaGF2aW5nIHR5cGUgU2hhcGVQYWxldHRlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTaGFwZVBhbGV0dGVQcmVzTW9kZWxcIl0gPSBcInNoYXBlUGFsZXR0ZVByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9TaGFwZVBhbGV0dGVQcmVzTW9kZWxzLCBoYXZpbmcgdHlwZSBTaGFwZVBhbGV0dGVQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiU2hhcGVQYWxldHRlUHJlc01vZGVsc1wiXSA9IFwic2hhcGVQYWxldHRlUHJlc01vZGVsc1wiO1xuICAgIC8vIERQSV9EYXRhU291cmNlRGF0ZVByb3BlcnRpZXMsIGhhdmluZyB0eXBlIERhdGFTb3VyY2VEYXRlUHJvcGVydGllc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZURhdGVQcm9wZXJ0aWVzXCJdID0gXCJkYXRhc291cmNlRGF0ZVByb3BlcnRpZXNcIjtcbiAgICAvLyBEUElfRGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0LCBoYXZpbmcgdHlwZSBEYXRlUHJvcGVydGllc0RhdGVGb3JtYXRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGVQcm9wZXJ0aWVzRGF0ZUZvcm1hdFwiXSA9IFwiZGF0ZVByb3BlcnRpZXNEYXRlRm9ybWF0XCI7XG4gICAgLy8gRFBJX0RhdGVQcm9wZXJ0aWVzRGF0ZUZvcm1hdHMsIGhhdmluZyB0eXBlIERhdGVQcm9wZXJ0aWVzRGF0ZUZvcm1hdFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEYXRlUHJvcGVydGllc0RhdGVGb3JtYXRzXCJdID0gXCJkYXRlUHJvcGVydGllc0RhdGVGb3JtYXRzXCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdCwgaGF2aW5nIHR5cGUgSGllcmFyY2h5U2VsZWN0TW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkhpZXJhcmNoeVNlbGVjdFwiXSA9IFwiaGllcmFyY2h5U2VsZWN0XCI7XG4gICAgLy8gRFBJX0hpZXJhcmNoeVNlbGVjdE1lbWJlciwgaGF2aW5nIHR5cGUgSGllcmFyY2h5U2VsZWN0TWVtYmVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlTZWxlY3RNZW1iZXJcIl0gPSBcImhpZXJhcmNoeVNlbGVjdE1lbWJlclwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlTZWxlY3RNZW1iZXJMaXN0LCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZWxlY3RNZW1iZXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSGllcmFyY2h5U2VsZWN0TWVtYmVyTGlzdFwiXSA9IFwiaGllcmFyY2h5U2VsZWN0TWVtYmVyTGlzdFwiO1xuICAgIC8vIERQSV9IaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyLCBoYXZpbmcgdHlwZSBIaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJIaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyXCJdID0gXCJoaWVyYXJjaHlTZXREZWZhdWx0TWVtYmVyXCI7XG4gICAgLy8gRFBJX1NlbWlTdHJ1Y3RTY2hlbWEsIGhhdmluZyB0eXBlIFNlbWlTdHJ1Y3RTY2hlbWFQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbWlTdHJ1Y3RTY2hlbWFcIl0gPSBcInNlbWlTdHJ1Y3RTY2hlbWFcIjtcbiAgICAvLyBEUElfU2VtaVN0cnVjdFNjaGVtYU1lbWJlciwgaGF2aW5nIHR5cGUgU2VtaVN0cnVjdFNjaGVtYU1lbWJlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiU2VtaVN0cnVjdFNjaGVtYU1lbWJlclwiXSA9IFwic2VtaVN0cnVjdFNjaGVtYU1lbWJlclwiO1xuICAgIC8vIERQSV9TZW1pU3RydWN0U2NoZW1hTWVtYmVyTGlzdCwgaGF2aW5nIHR5cGUgU2VtaVN0cnVjdFNjaGVtYU1lbWJlclByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJTZW1pU3RydWN0U2NoZW1hTWVtYmVyTGlzdFwiXSA9IFwic2VtaVN0cnVjdFNjaGVtYU1lbWJlckxpc3RcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyRWRpdEluZm8sIGhhdmluZyB0eXBlIFBhcmFtZXRlckVkaXRJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJFZGl0SW5mb1wiXSA9IFwicGFyYW1ldGVyRWRpdEluZm9cIjtcbiAgICAvLyBEUElfUHJvZHVjdFBhcmFtZXRlckluZm8sIGhhdmluZyB0eXBlIFByb2R1Y3RQYXJhbWV0ZXJJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQcm9kdWN0UGFyYW1ldGVySW5mb1wiXSA9IFwicHJvZHVjdFBhcmFtZXRlckluZm9cIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkLCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhc291cmNlSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkXCJdID0gXCJjYXB0aW9uZWREYXRhc291cmNlRmllbGRcIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkcywgaGF2aW5nIHR5cGUgQ2FwdGlvbmVkRGF0YXNvdXJjZUluZm9QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiQ2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkc1wiXSA9IFwiY2FwdGlvbmVkRGF0YXNvdXJjZUZpZWxkc1wiO1xuICAgIC8vIERQSV9FZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpbiwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyUmFuZ2VEb21haW5QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkVkaXRlZFBhcmFtZXRlclJhbmdlRG9tYWluXCJdID0gXCJlZGl0ZWRQYXJhbWV0ZXJSYW5nZURvbWFpblwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJSYW5nZURvbWFpbiwgaGF2aW5nIHR5cGUgUGFyYW1ldGVyUmFuZ2VEb21haW5QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlclJhbmdlRG9tYWluXCJdID0gXCJwYXJhbWV0ZXJSYW5nZURvbWFpblwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJMaXN0RG9tYWluLCBoYXZpbmcgdHlwZSBQYXJhbWV0ZXJMaXN0RG9tYWluUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJMaXN0RG9tYWluXCJdID0gXCJwYXJhbWV0ZXJMaXN0RG9tYWluXCI7XG4gICAgLy8gRFBJX1BhcmFtZXRlckxpc3REb21haW5NZW1iZXIsIGhhdmluZyB0eXBlIFBhcmFtZXRlckxpc3REb21haW5NZW1iZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckxpc3REb21haW5NZW1iZXJcIl0gPSBcInBhcmFtZXRlckxpc3REb21haW5NZW1iZXJcIjtcbiAgICAvLyBEUElfUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlcnMsIGhhdmluZyB0eXBlIFBhcmFtZXRlckxpc3REb21haW5NZW1iZXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVyTGlzdERvbWFpbk1lbWJlcnNcIl0gPSBcInBhcmFtZXRlckxpc3REb21haW5NZW1iZXJzXCI7XG4gICAgLy8gRFBJX0luZGV4ZWREb21haW5NZW1iZXIsIGhhdmluZyB0eXBlIEluZGV4ZWREb21haW5NZW1iZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4ZWREb21haW5NZW1iZXJcIl0gPSBcImluZGV4ZWREb21haW5NZW1iZXJcIjtcbiAgICAvLyBEUElfSW5kZXhlZERvbWFpbk1lbWJlcnMsIGhhdmluZyB0eXBlIEluZGV4ZWREb21haW5NZW1iZXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5kZXhlZERvbWFpbk1lbWJlcnNcIl0gPSBcImluZGV4ZWREb21haW5NZW1iZXJzXCI7XG4gICAgLy8gRFBJX05ld0luZGV4ZWREb21haW5NZW1iZXJzLCBoYXZpbmcgdHlwZSBJbmRleGVkRG9tYWluTWVtYmVyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIk5ld0luZGV4ZWREb21haW5NZW1iZXJzXCJdID0gXCJuZXdJbmRleGVkRG9tYWluTWVtYmVyc1wiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJMaXN0RG9tYWluRGlmZiwgaGF2aW5nIHR5cGUgcGFyYW1ldGVyLWxpc3QtZG9tYWluLWRpZmZcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckxpc3REb21haW5EaWZmXCJdID0gXCJwYXJhbWV0ZXJMaXN0RG9tYWluRGlmZlwiO1xuICAgIC8vIERQSV9JbmRleFJhbmdlLCBoYXZpbmcgdHlwZSBJbmRleFJhbmdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJJbmRleFJhbmdlXCJdID0gXCJpbmRleFJhbmdlXCI7XG4gICAgLy8gRFBJX0luZGV4UmFuZ2VzLCBoYXZpbmcgdHlwZSBJbmRleFJhbmdlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkluZGV4UmFuZ2VzXCJdID0gXCJpbmRleFJhbmdlc1wiO1xuICAgIC8vIERQSV9DYXRlZ29yaWNhbEZpbmQsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsRmluZFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2F0ZWdvcmljYWxGaW5kXCJdID0gXCJjYXRlZ29yaWNhbEZpbmRcIjtcbiAgICAvLyBEUElfQ2FwdGlvbmVkRGF0YVZhbHVlLCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhcHRpb25lZERhdGFWYWx1ZVwiXSA9IFwiY2FwdGlvbmVkRGF0YVZhbHVlXCI7XG4gICAgLy8gRFBJX1NlbGVjdGVkVmFsdWVDYXB0aW9uLCBoYXZpbmcgdHlwZSBDYXB0aW9uZWREYXRhVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlNlbGVjdGVkVmFsdWVDYXB0aW9uXCJdID0gXCJzZWxlY3RlZFZhbHVlQ2FwdGlvblwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVDYXB0aW9uTGlzdCwgaGF2aW5nIHR5cGUgQ2FwdGlvbmVkRGF0YVZhbHVlUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFWYWx1ZUNhcHRpb25MaXN0XCJdID0gXCJkYXRhVmFsdWVDYXRwaW9uTGlzdFwiO1xuICAgIC8vIERQSV9SYW5nZURhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgUmFuZ2VEYXRhVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJhbmdlRGF0YVZhbHVlXCJdID0gXCJyYW5nZURhdGFWYWx1ZVwiO1xuICAgIC8vIERQSV9QYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZSwgaGF2aW5nIHR5cGUgUmFuZ2VEYXRhVmFsdWVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlclJhbmdlRGF0YVZhbHVlXCJdID0gXCJwYXJhbWV0ZXJSYW5nZURhdGFWYWx1ZVwiO1xuICAgIC8vIERQSV9EYXRhVmFsdWVSYW5nZUNhcHRpb25zLCBoYXZpbmcgdHlwZSBEYXRhVmFsdWVSYW5nZUNhcHRpb25zUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhVmFsdWVSYW5nZUNhcHRpb25zXCJdID0gXCJkYXRhVmFsdWVSYW5nZUNhcHRpb25zXCI7XG4gICAgLy8gRFBJX0luZGVwZW5kZW50RGltZW5zaW9uLCBoYXZpbmcgdHlwZSBJbmRlcGVuZGVudERpbWVuc2lvblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiSW5kZXBlbmRlbnREaW1lbnNpb25cIl0gPSBcImluZGVwZW5kZW50RGltZW5zaW9uXCI7XG4gICAgLy8gRFBJX0luZGVwZW5kZW50RGltZW5zaW9ucywgaGF2aW5nIHR5cGUgSW5kZXBlbmRlbnREaW1lbnNpb25QcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiSW5kZXBlbmRlbnREaW1lbnNpb25zXCJdID0gXCJpbmRlcGVuZGVudERpbWVuc2lvbnNcIjtcbiAgICAvLyBEUElfQXR0cmlidXRlUGVyc3BlY3RpdmUsIGhhdmluZyB0eXBlIFBlcnNwZWN0aXZlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyaWJ1dGVQZXJzcGVjdGl2ZVwiXSA9IFwiYXR0cmlidXRlUGVyc3BlY3RpdmVcIjtcbiAgICAvLyBEUElfQ3ViZVBlcnNwZWN0aXZlLCBoYXZpbmcgdHlwZSBQZXJzcGVjdGl2ZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ3ViZVBlcnNwZWN0aXZlXCJdID0gXCJjdWJlUGVyc3BlY3RpdmVcIjtcbiAgICAvLyBEUElfQXR0cmlidXRlUGVyc3BlY3RpdmVzLCBoYXZpbmcgdHlwZSBQZXJzcGVjdGl2ZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJBdHRyaWJ1dGVQZXJzcGVjdGl2ZXNcIl0gPSBcImF0dHJpYnV0ZVBlcnNwZWN0aXZlc1wiO1xuICAgIC8vIERQSV9DYWxjdWxhdGVkTWVtYmVyc0ZvckVkaXRpbmdQcmVzTW9kZWwsIGhhdmluZyB0eXBlIEVkaXRDYWxjdWxhdGVkTWVtYmVyc1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VsYXRlZE1lbWJlcnNGb3JFZGl0aW5nUHJlc01vZGVsXCJdID0gXCJjYWxjdWxhdGVkTWVtYmVyc0ZvckVkaXRpbmdQcmVzbW9kZWxcIjtcbiAgICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlciwgaGF2aW5nIHR5cGUgQ2FsY3VsYXRlZE1lbWJlclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VsYXRlZE1lbWJlclwiXSA9IFwiY2FsY3VsYXRlZE1lbWJlclwiO1xuICAgIC8vIERQSV9OZXdDYWxjdWxhdGVkTWVtYmVyLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJOZXdDYWxjdWxhdGVkTWVtYmVyXCJdID0gXCJuZXdDYWxjdWxhdGVkTWVtYmVyXCI7XG4gICAgLy8gRFBJX1VwZGF0ZWRDYWxjdWxhdGVkTWVtYmVyLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJVcGRhdGVkQ2FsY3VsYXRlZE1lbWJlclwiXSA9IFwidXBkYXRlZENhbGN1bGF0ZWRNZW1iZXJcIjtcbiAgICAvLyBEUElfQ2FsY3VsYXRlZE1lbWJlcnNMaXN0LCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVyUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkNhbGN1bGF0ZWRNZW1iZXJzTGlzdFwiXSA9IFwiY2FsY3VsYXRlZE1lbWJlcnNMaXN0XCI7XG4gICAgLy8gRFBJX0NhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtLCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVySGllcmFyY2h5SXRlbVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQ2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUl0ZW1cIl0gPSBcImNhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlJdGVtXCI7XG4gICAgLy8gRFBJX0NhbGN1bGF0ZWRNZW1iZXJIaWVyYXJjaHlMaXN0LCBoYXZpbmcgdHlwZSBDYWxjdWxhdGVkTWVtYmVySGllcmFyY2h5SXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDYWxjdWxhdGVkTWVtYmVySGllcmFyY2h5TGlzdFwiXSA9IFwiY2FsY3VsYXRlZE1lbWJlckhpZXJhcmNoeUxpc3RcIjtcbiAgICAvLyBEUElfU3VtbWFyeUNhcmRQcmVzTW9kZWwsIGhhdmluZyB0eXBlIFN1bW1hcnlDYXJkUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTdW1tYXJ5Q2FyZFByZXNNb2RlbFwiXSA9IFwic3VtbWFyeUNhcmRcIjtcbiAgICAvLyBEUElfTWVhc3VyZVN1bW1hcnksIGhhdmluZyB0eXBlIE1lYXN1cmVTdW1tYXJ5UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJNZWFzdXJlU3VtbWFyeVwiXSA9IFwibWVhc3VyZVN1bW1hcnlcIjtcbiAgICAvLyBEUElfTWVhc3VyZVN1bW1hcnlMaXN0LCBoYXZpbmcgdHlwZSBNZWFzdXJlU3VtbWFyeVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJNZWFzdXJlU3VtbWFyeUxpc3RcIl0gPSBcIm1lYXN1cmVTdW1tYXJ5TGlzdFwiO1xuICAgIC8vIERQSV9Bbm5vdGF0aW9uUHJlc01vZGVsLCBoYXZpbmcgdHlwZSBBbm5vdGF0aW9uUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBbm5vdGF0aW9uUHJlc01vZGVsXCJdID0gXCJhbm5vdGF0aW9uXCI7XG4gICAgLy8gRFBJX0Fubm90YXRpb25MaXN0LCBoYXZpbmcgdHlwZSBBbm5vdGF0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFubm90YXRpb25MaXN0XCJdID0gXCJhbm5vdGF0aW9uTGlzdFwiO1xuICAgIC8vIERQSV9Bbm5vdGF0aW9uU2hhcGVTdHlsZSwgaGF2aW5nIHR5cGUgQW5ub3RhdGlvblNoYXBlU3R5bGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFubm90YXRpb25TaGFwZVN0eWxlXCJdID0gXCJhbm5vdGF0aW9uU2hhcGVTdHlsZVwiO1xuICAgIC8vIERQSV9UZWxlbWV0cnksIGhhdmluZyB0eXBlIFRlbGVtZXRyeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGVsZW1ldHJ5XCJdID0gXCJ0ZWxlbWV0cnlcIjtcbiAgICAvLyBEUElfRGF0YVNvdXJjZVRlbGVtZXRyeSwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVRlbGVtZXRyeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZVRlbGVtZXRyeVwiXSA9IFwiZGF0YVNvdXJjZVRlbGVtZXRyeVwiO1xuICAgIC8vIERQSV9EYXRhU291cmNlVGVsZW1ldHJ5TGlzdCwgaGF2aW5nIHR5cGUgRGF0YVNvdXJjZVRlbGVtZXRyeVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJEYXRhU291cmNlVGVsZW1ldHJ5TGlzdFwiXSA9IFwiZGF0YVNvdXJjZVRlbGVtZXRyeUxpc3RcIjtcbiAgICAvLyBEUElfVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeSwgaGF2aW5nIHR5cGUgVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeVwiXSA9IFwidmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeVwiO1xuICAgIC8vIERQSV9WaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5TGlzdCwgaGF2aW5nIHR5cGUgVmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJWaXN1YWxTcGVjaWZpY2F0aW9uVGVsZW1ldHJ5TGlzdFwiXSA9IFwidmlzdWFsU3BlY2lmaWNhdGlvblRlbGVtZXRyeUxpc3RcIjtcbiAgICAvLyBEUElfVW5kZXJseWluZ0RhdGFUYWJsZSwgaGF2aW5nIHR5cGUgVW5kZXJseWluZ0RhdGFUYWJsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVW5kZXJseWluZ0RhdGFUYWJsZVwiXSA9IFwidW5kZXJseWluZ0RhdGFUYWJsZVwiO1xuICAgIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlcywgaGF2aW5nIHR5cGUgVW5kZXJseWluZ0RhdGFUYWJsZVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJVbmRlcmx5aW5nRGF0YVRhYmxlc1wiXSA9IFwidW5kZXJseWluZ0RhdGFUYWJsZXNcIjtcbiAgICAvLyBEUElfVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbiwgaGF2aW5nIHR5cGUgVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblwiXSA9IFwidW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblwiO1xuICAgIC8vIERQSV9VbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1ucywgaGF2aW5nIHR5cGUgVW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtblByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJVbmRlcmx5aW5nRGF0YVRhYmxlQ29sdW1uc1wiXSA9IFwidW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnNcIjtcbiAgICAvLyBEUElfUGFnZUNhY2hlSUQsIGhhdmluZyB0eXBlIFBhZ2VDYWNoZUlEUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlQ2FjaGVJRFwiXSA9IFwicGFnZUNhY2hlSWRcIjtcbiAgICAvLyBEUElfUmVsYXRpb25hbFBhZ2VDYWNoZUlELCBoYXZpbmcgdHlwZSBQYWdlQ2FjaGVJRFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmVsYXRpb25hbFBhZ2VDYWNoZUlEXCJdID0gXCJyZWxhdGlvbmFsUGFnZUNhY2hlSWRcIjtcbiAgICAvLyBEUElfU2VhcmNoUmVzdWx0c0NhY2hlSUQsIGhhdmluZyB0eXBlIFBhZ2VDYWNoZUlEUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJTZWFyY2hSZXN1bHRzQ2FjaGVJRFwiXSA9IFwic2VhcmNoUmVzdWx0c0NhY2hlSWRcIjtcbiAgICAvLyBEUElfUGFnZUluZm8sIGhhdmluZyB0eXBlIFBhZ2VJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJQYWdlSW5mb1wiXSA9IFwicGFnZUluZm9cIjtcbiAgICAvLyBEUElfUm93Q29sUGFpciwgaGF2aW5nIHR5cGUgUm93Q29sUGFpclByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUm93Q29sUGFpclwiXSA9IFwicm93Q29sUGFpclwiO1xuICAgIC8vIERQSV9Ub3BMZWZ0Um93Q29sLCBoYXZpbmcgdHlwZSBSb3dDb2xQYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUb3BMZWZ0Um93Q29sXCJdID0gXCJ0b3BMZWZ0Um93Q29sXCI7XG4gICAgLy8gRFBJX0JvdFJpZ2h0Um93Q29sLCBoYXZpbmcgdHlwZSBSb3dDb2xQYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJCb3RSaWdodFJvd0NvbFwiXSA9IFwiYm90UmlnaHRSb3dDb2xcIjtcbiAgICAvLyBEUElfUm93Q29sUGFpcnMsIGhhdmluZyB0eXBlIFJvd0NvbFBhaXJQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUm93Q29sUGFpcnNcIl0gPSBcInJvd0NvbFBhaXJzXCI7XG4gICAgLy8gRFBJX1RhYmxlVmlld0NhY2hlSW5mbywgaGF2aW5nIHR5cGUgVGFibGVWaWV3Q2FjaGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVmlld0NhY2hlSW5mb1wiXSA9IFwidGFibGVWaWV3Q2FjaGVJbmZvXCI7XG4gICAgLy8gRFBJX1RhYmxlVmlld0luZm8sIGhhdmluZyB0eXBlIHRhYmxlVmlld0luZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVmlld0luZm9cIl0gPSBcInRhYmxlVmlld0luZm9cIjtcbiAgICAvLyBEUElfVGFibGVWaWV3Q29sdW1uSW5mbywgaGF2aW5nIHR5cGUgVGFibGVWaWV3Q29sdW1uSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiVGFibGVWaWV3Q29sdW1uSW5mb1wiXSA9IFwidGFibGVWaWV3Q29sdW1uSW5mb1wiO1xuICAgIC8vIERQSV9UYWJsZVZpZXdDb2x1bW5zLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdDb2x1bW5JbmZvUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVmlld0NvbHVtbnNcIl0gPSBcInRhYmxlVmlld0NvbHVtbnNcIjtcbiAgICAvLyBEUElfVGFibGVWaWV3UGFnZUl0ZW0sIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VJdGVtUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVZpZXdQYWdlSXRlbVwiXSA9IFwidGFibGVWaWV3UGFnZUl0ZW1cIjtcbiAgICAvLyBEUElfVGFibGVWaWV3UGFnZUNvbHVtbnMsIGhhdmluZyB0eXBlIFRhYmxlVmlld1BhZ2VJdGVtUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVmlld1BhZ2VDb2x1bW5zXCJdID0gXCJ0YWJsZVZpZXdQYWdlQ29sdW1uc1wiO1xuICAgIC8vIERQSV9UYWJsZVZpZXdQYWdlUm93LCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdQYWdlUm93UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVZpZXdQYWdlUm93XCJdID0gXCJ0YWJsZVZpZXdQYWdlUm93XCI7XG4gICAgLy8gRFBJX1RhYmxlVmlld1BhZ2VSb3dzLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdQYWdlUm93UHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlVmlld1BhZ2VSb3dzXCJdID0gXCJ0YWJsZVZpZXdQYWdlUm93c1wiO1xuICAgIC8vIERQSV9UYWJsZVZpZXdQYWdlLCBoYXZpbmcgdHlwZSBUYWJsZVZpZXdQYWdlUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUYWJsZVZpZXdQYWdlXCJdID0gXCJ0YWJsZVZpZXdQYWdlXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsVmFsdWVQaWNrZXIsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsVmFsdWVQaWNrZXJQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsVmFsdWVQaWNrZXJcIl0gPSBcImNhdGVnb3JpY2FsVmFsdWVQaWNrZXJcIjtcbiAgICAvLyBEUElfQW5ub3RhdGlvblNoYXBlQm9yZGVyU3R5bGUsIGhhdmluZyB0eXBlIExpbmVTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQW5ub3RhdGlvblNoYXBlQm9yZGVyU3R5bGVcIl0gPSBcImFubm90YXRpb25TaGFwZUJvcmRlclN0eWxlXCI7XG4gICAgLy8gRFBJX0Fub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGUsIGhhdmluZyB0eXBlIExpbmVTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQW5vdGF0aW9uU2hhcGVTdHJva2VTdHlsZVwiXSA9IFwiYW5ub3RhdGlvblNoYXBlU3Ryb2tlU3R5bGVcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5FZGl0b3JQcmVzTW9kZWwsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQmluRWRpdG9yUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEJpbkVkaXRvclByZXNNb2RlbFwiXSA9IFwiY2F0ZWdvcmljYWxCaW5FZGl0b3JcIjtcbiAgICAvLyBEUElfQ2F0ZWdvcmljYWxCaW5JdGVtLCBoYXZpbmcgdHlwZSBDYXRlZ29yaWNhbEJpbkl0ZW1QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkNhdGVnb3JpY2FsQmluSXRlbVwiXSA9IFwiY2F0ZWdvcmljYWxCaW5JdGVtUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0NhdGVnb3JpY2FsQmluSXRlbXMsIGhhdmluZyB0eXBlIENhdGVnb3JpY2FsQmluSXRlbVByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbEJpbkl0ZW1zXCJdID0gXCJjYXRlZ29yaWNhbEJpbkl0ZW1QcmVzTW9kZWxzXCI7XG4gICAgLy8gRFBJX01lYXN1cmVQaWNrZXJGaWVsZEluZm8sIGhhdmluZyB0eXBlIE1lYXN1cmVQaWNrZXJGaWVsZEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lYXN1cmVQaWNrZXJGaWVsZEluZm9cIl0gPSBcIm1lYXN1cmVQaWNrZXJGaWVsZEluZm9cIjtcbiAgICAvLyBEUElfTWVhc3VyZVBpY2tlckZpZWxkcywgaGF2aW5nIHR5cGUgTWVhc3VyZVBpY2tlckZpZWxkSW5mb1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJNZWFzdXJlUGlja2VyRmllbGRzXCJdID0gXCJtZWFzdXJlUGlja2VyRmllbGRzXCI7XG4gICAgLy8gRFBJX01lYXN1cmVBZ2dyZWdhdGlvbkluZm8sIGhhdmluZyB0eXBlIE1lYXN1cmVBZ2dyZWdhdGlvbkluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIk1lYXN1cmVBZ2dyZWdhdGlvbkluZm9cIl0gPSBcIm1lYXN1cmVBZ2dyZWdhdGlvbkluZm9cIjtcbiAgICAvLyBEUElfTWVhc3VyZUFnZ3JlZ2F0aW9ucywgaGF2aW5nIHR5cGUgTWVhc3VyZUFnZ3JlZ2F0aW9uSW5mb1ByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJNZWFzdXJlQWdncmVnYXRpb25zXCJdID0gXCJtZWFzdXJlQWdncmVnYXRpb25zXCI7XG4gICAgLy8gRFBJX1R1cGxlUGFpciwgaGF2aW5nIHR5cGUgVHVwbGVQYWlyUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJUdXBsZVBhaXJcIl0gPSBcInR1cGxlUGFpclwiO1xuICAgIC8vIERQSV9EaW1lbnNpb25Cb3VuZCwgaGF2aW5nIHR5cGUgRGltZW5zaW9uQm91bmRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkRpbWVuc2lvbkJvdW5kXCJdID0gXCJkaW1lbnNpb25Cb3VuZFwiO1xuICAgIC8vIERQSV9QZXJzcGVjdGl2ZUJvdW5kcywgaGF2aW5nIHR5cGUgRGltZW5zaW9uQm91bmRQcmVzTW9kZWxbXVxuICAgIFBhcmFtZXRlcklkW1wiUGVyc3BlY3RpdmVCb3VuZHNcIl0gPSBcInBlcnNwZWN0aXZlQm91bmRzXCI7XG4gICAgLy8gRFBJX0ZpbHRlclBlcnNwZWN0aXZlSW5mb1ByZXNNb2RlbCwgaGF2aW5nIHR5cGUgRmlsdGVyUGVyc3BlY3RpdmVJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJQZXJzcGVjdGl2ZUluZm9QcmVzTW9kZWxcIl0gPSBcImZpbHRlclBlcnNwZWN0aXZlSW5mb1wiO1xuICAgIC8vIERQSV9UYWJsZVJlbGV2YW5jZSwgaGF2aW5nIHR5cGUgVGFibGVSZWxldmFuY2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlRhYmxlUmVsZXZhbmNlXCJdID0gXCJ0YWJsZVJlbGV2YW5jZVwiO1xuICAgIC8vIERQSV9BZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbCwgaGF2aW5nIHR5cGUgQWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsXCJdID0gXCJhZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9BZGRJblJlZ2lzdHJhdGlvblByZXNNb2RlbExpc3QsIGhhdmluZyB0eXBlIEFkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsW11cbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsTGlzdFwiXSA9IFwiYWRkSW5SZWdpc3RyYXRpb25QcmVzTW9kZWxMaXN0XCI7XG4gICAgLy8gRFBJX0FkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0LCBoYXZpbmcgdHlwZSBBZGRJbkRhc2hib2FyZFdpZGdldFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkSW5EYXNoYm9hcmRBdXRob3JpbmdXaWRnZXRcIl0gPSBcImFkZEluRGFzaGJvYXJkQXV0aG9yaW5nV2lkZ2V0UHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0FkZEluSW5zdGFuY2UsIGhhdmluZyB0eXBlIEFkZEluSW5zdGFuY2VQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluSW5zdGFuY2VcIl0gPSBcImFkZEluSW5zdGFuY2VQcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQWRkSW5Mb2NhdG9yLCBoYXZpbmcgdHlwZSBBZGRJbkxvY2F0b3JQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluTG9jYXRvclwiXSA9IFwiYWRkSW5Mb2NhdG9yUHJlc01vZGVsXCI7XG4gICAgLy8gRFBJX0FkZEluQ29udGV4dCwgaGF2aW5nIHR5cGUgQWRkSW5Db250ZXh0XG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbkNvbnRleHRcIl0gPSBcImFkZEluQ29udGV4dFwiO1xuICAgIC8vIERQSV9BZGRJbk1vZGUsIGhhdmluZyB0eXBlIEFkZEluTW9kZVxuICAgIFBhcmFtZXRlcklkW1wiQWRkSW5Nb2RlXCJdID0gXCJhZGRJbk1vZGVcIjtcbiAgICAvLyBEUElfU2V0QXhpc1JhbmdlUmVzdWx0LCBoYXZpbmcgdHlwZSBTZXRBeGlzUmFuZ2VSZXN1bHRcbiAgICBQYXJhbWV0ZXJJZFtcIlNldEF4aXNSYW5nZVJlc3VsdFwiXSA9IFwic2V0QXhpc1JhbmdlUmVzdWx0XCI7XG4gICAgLy8gRFBJX1NldFRpY2tPcmlnaW5SZXN1bHQsIGhhdmluZyB0eXBlIFNldFRpY2tPcmlnaW5SZXN1bHRcbiAgICBQYXJhbWV0ZXJJZFtcIlNldFRpY2tPcmlnaW5SZXN1bHRcIl0gPSBcInNldFRpY2tPcmlnaW5SZXN1bHRcIjtcbiAgICAvLyBEUElfU2V0VGlja1NwYWNpbmdSZXN1bHQsIGhhdmluZyB0eXBlIFNldFRpY2tTcGFjaW5nUmVzdWx0XG4gICAgUGFyYW1ldGVySWRbXCJTZXRUaWNrU3BhY2luZ1Jlc3VsdFwiXSA9IFwic2V0VGlja1NwYWNpbmdSZXN1bHRcIjtcbiAgICAvLyBEUElfQXhpc0V4dGVudFN0YXJ0VHlwZSwgaGF2aW5nIHR5cGUgQXhpc0V4dGVudFR5cGVcbiAgICBQYXJhbWV0ZXJJZFtcIkF4aXNFeHRlbnRTdGFydFR5cGVcIl0gPSBcImF4aXNFeHRlbnRTdGFydFR5cGVcIjtcbiAgICAvLyBEUElfQXhpc0V4dGVudEVuZFR5cGUsIGhhdmluZyB0eXBlIEF4aXNFeHRlbnRUeXBlXG4gICAgUGFyYW1ldGVySWRbXCJBeGlzRXh0ZW50RW5kVHlwZVwiXSA9IFwiYXhpc0V4dGVudEVuZFR5cGVcIjtcbiAgICAvLyBEUElfQXhpc0V4dGVudHNUeXBlLCBoYXZpbmcgdHlwZSBBeGlzRXh0ZW50VHlwZVxuICAgIFBhcmFtZXRlcklkW1wiQXhpc0V4dGVudHNUeXBlXCJdID0gXCJheGlzRXh0ZW50c1R5cGVcIjtcbiAgICAvLyBEUElfQWRkSW5FbnZpcm9ubWVudCwgaGF2aW5nIHR5cGUgQWRkSW5FbnZpcm9ubWVudFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkSW5FbnZpcm9ubWVudFwiXSA9IFwiYWRkSW5FbnZpcm9ubWVudFByZXNNb2RlbFwiO1xuICAgIC8vIERQSV9BZGRJbkRhc2hib2FyZEluZm8sIGhhdmluZyB0eXBlIEFkZEluRGFzaGJvYXJkSW5mb1ByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiQWRkSW5EYXNoYm9hcmRJbmZvXCJdID0gXCJhZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWxcIjtcbiAgICAvLyBEUElfQWRkSW5TZXR0aW5nc0luZm8sIGhhdmluZyB0eXBlIEFkZEluU2V0dGluZ3NJbmZvUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJblNldHRpbmdzSW5mb1wiXSA9IFwiYWRkSW5TZXR0aW5nc0luZm9cIjtcbiAgICAvLyBEUElfQWRkSW5Cb290c3RyYXBJbmZvLCBoYXZpbmcgdHlwZSBBZGRJbkJvb3RzdHJhcEluZm9QcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluQm9vdHN0cmFwSW5mb1wiXSA9IFwiYWRkSW5Cb290c3RyYXBJbmZvXCI7XG4gICAgLy8gRFBJX0FkZEluRGVidWdTZXR0aW5ncywgaGF2aW5nIHR5cGUgQWRkSW5EZWJ1Z1NldHRpbmdzUHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJBZGRJbkRlYnVnU2V0dGluZ3NcIl0gPSBcImFkZEluRGVidWdTZXR0aW5nc1wiO1xuICAgIC8vIERQSV9SaWNoVGV4dCwgaGF2aW5nIHR5cGUgUmljaFRleHRQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0XCJdID0gXCJyaWNoVGV4dFwiO1xuICAgIC8vIERQSV9SaWNoVGV4dEtleXdvcmRTdWJMaXN0LCBoYXZpbmcgdHlwZSBSaWNoVGV4dEtleXdvcmRTdWJMaXN0UHJlc01vZGVsXG4gICAgUGFyYW1ldGVySWRbXCJSaWNoVGV4dEtleXdvcmRTdWJMaXN0XCJdID0gXCJyaWNoVGV4dEtleXdvcmRzU3VibGlzdFwiO1xuICAgIC8vIERQSV9SaWNoVGV4dEtleXdvcmRTdWJMaXN0cywgaGF2aW5nIHR5cGUgUmljaFRleHRLZXl3b3JkU3ViTGlzdFByZXNNb2RlbFtdXG4gICAgUGFyYW1ldGVySWRbXCJSaWNoVGV4dEtleXdvcmRTdWJMaXN0c1wiXSA9IFwicmljaFRleHRLZXl3b3JkU3VibGlzdHNcIjtcbiAgICAvLyBEUElfUmljaFRleHRLZXl3b3JkTGlzdCwgaGF2aW5nIHR5cGUgUmljaFRleHRLZXl3b3JkTGlzdFByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmljaFRleHRLZXl3b3JkTGlzdFwiXSA9IFwicmljaFRleHRLZXl3b3Jkc0xpc3RcIjtcbiAgICAvLyBEUElfUmljaFRleHRCbG9ja1N0eWxlLCBoYXZpbmcgdHlwZSBSaWNoVGV4dEJsb2NrU3R5bGVQcmVzTW9kZWxcbiAgICBQYXJhbWV0ZXJJZFtcIlJpY2hUZXh0QmxvY2tTdHlsZVwiXSA9IFwicmljaFRleHRCbG9ja1N0eWxlXCI7XG4gICAgLy8gRFBJX1JpY2hUZXh0Q29udGVudFN0eWxlLCBoYXZpbmcgdHlwZSBSaWNoVGV4dENvbnRlbnRTdHlsZVByZXNNb2RlbFxuICAgIFBhcmFtZXRlcklkW1wiUmljaFRleHRDb250ZW50U3R5bGVcIl0gPSBcInJpY2hUZXh0Q29udGVudFN0eWxlXCI7XG59KShQYXJhbWV0ZXJJZCA9IGV4cG9ydHMuUGFyYW1ldGVySWQgfHwgKGV4cG9ydHMuUGFyYW1ldGVySWQgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFyYW1zLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvZ2VuLXNyYy9wcmVzbGF5ZXIvUGFyYW1zLmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBDb21tYW5kSWRzXzEgPSByZXF1aXJlKFwiLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkc1wiKTtcbnZhciBQYXJhbXNfMSA9IHJlcXVpcmUoXCIuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QYXJhbXNcIik7XG52YXIgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeV8xID0gcmVxdWlyZShcIi4vQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVwiKTtcbnZhciBDb21tYW5kUmVnaXN0cmF0aW9uXzEgPSByZXF1aXJlKFwiLi9Db21tYW5kUmVnaXN0cmF0aW9uXCIpO1xudmFyIENvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSgpIHtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbmQgcG9wdWxhdGVzIGEgbmV3IENvbW1hbmRNYXBwaW5nUmVnaXN0cnkgZm9yIHRoZSBzcGVjaWZpYyB2ZXJzaW9uIG51bWJlciByZXF1ZXN0ZWRcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAcGFyYW0ge1ZlcnNpb25OdW1iZXJ9IHZlcnNpb25OdW1iZXJcbiAgICAgKiBAcmV0dXJucyB7Q29tbWFuZE1hcHBpbmdSZWdpc3RyeX1cbiAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3RvcnlcbiAgICAgKi9cbiAgICBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5jcmVhdGVDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5ID0gZnVuY3Rpb24gKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XzEuQ29tbWFuZE1hcHBpbmdSZWdpc3RyeSgpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkluaXRpYWxpemVBZGRJbiwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkluaXRpYWxpemVBZGRJbkluc3RhbmNlLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkFkZEluTG9jYXRvciwgUGFyYW1zXzEuUGFyYW1ldGVySWQuQWRkSW5Mb2NhdG9yKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkJvb3RzdHJhcEluZm8sIFBhcmFtc18xLlBhcmFtZXRlcklkLkFkZEluQm9vdHN0cmFwSW5mbykpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXRVbmRlcmx5aW5nRGF0YSwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkdldFVuZGVybHlpbmdEYXRhLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZVNlbGVjdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5JbmNsdWRlQWxsQ29sdW1ucywgUGFyYW1zXzEuUGFyYW1ldGVySWQuSW5jbHVkZUFsbENvbHVtbnMpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLk1heFJvd3MsIFBhcmFtc18xLlBhcmFtZXRlcklkLk1heFJvd3MpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJRFBNKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5VbmRlcmx5aW5nRGF0YVRhYmxlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5VbmRlcmx5aW5nRGF0YVRhYmxlKSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldERhdGFTdW1tYXJ5RGF0YSwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkdldFN1bW1hcnlEYXRhLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZVNlbGVjdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmlzdWFsSURQTSldLCBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ1N1bW1hcnlEYXRhVGFibGUsIFBhcmFtc18xLlBhcmFtZXRlcklkLlVuZGVybHlpbmdEYXRhVGFibGUpKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0RGF0YVNvdXJjZURhdGEsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5HZXREYXRhU291cmNlRGF0YSwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EYXRhU291cmNlSWQsIFBhcmFtc18xLlBhcmFtZXRlcklkLkRhdGFzb3VyY2UpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLk1heFJvd3MsIFBhcmFtc18xLlBhcmFtZXRlcklkLk1heFJvd3MpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkNvbHVtbnNUb0luY2x1ZGUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkRGlzcGxheU5hbWVzKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EYXRhU291cmNlRGF0YVRhYmxlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5VbmRlcmx5aW5nRGF0YVRhYmxlKSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXIsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5DYXRlZ29yaWNhbEZpbHRlciwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLlF1YWxpZmllZEZpZWxkQ2FwdGlvbiksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyVmFsdWVzLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJBbGlhc2VzKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJVcGRhdGVUeXBlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJVcGRhdGVUeXBlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Jc0V4Y2x1ZGVNb2RlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5FeGNsdWRlLCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuV29ya3NoZWV0KSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRGFzaGJvYXJkKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkQ2FwdGlvbikpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5BcHBseVJhbmdlRmlsdGVyLCBDb21tYW5kSWRzXzEuRG9jQ29tbWFuZHMuUmFuZ2VGaWx0ZXIsIFtuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGROYW1lLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclJhbmdlTWluLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5SYW5nZU1pbiwgdHJ1ZSksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VNYXgsIFBhcmFtc18xLlBhcmFtZXRlcklkLlJhbmdlTWF4LCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJSYW5nZU51bGxPcHRpb24sIFBhcmFtc18xLlBhcmFtZXRlcklkLkluY2x1ZGVkLCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuV29ya3NoZWV0KSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRGFzaGJvYXJkKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkQ2FwdGlvbikpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5DbGVhckZpbHRlciwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkNsZWFyRXhpc3RpbmdGaWx0ZXIsIFtuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGROYW1lLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5RdWFsaWZpZWRGaWVsZENhcHRpb24pLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5Xb3Jrc2hlZXQpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5EYXNoYm9hcmQpXSwgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpZWxkTmFtZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRmllbGRDYXB0aW9uKSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldFNlbGVjdGVkTWFya3MsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5HZXRTZWxlY3Rpb25EYXRhLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJRFBNKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TZWxlY3RlZERhdGEsIFBhcmFtc18xLlBhcmFtZXRlcklkLlNlbGVjdGlvbkRhdGEpKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0SGlnaGxpZ2h0ZWRNYXJrcywgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkdldEhpZ2hsaWdodGVkRGF0YSwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmlzdWFsSURQTSldLCBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuSGlnaGxpZ2h0ZWREYXRhLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5IaWdobGlnaHRlZERhdGEpKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuU2F2ZUFkZEluU2V0dGluZ3MsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5TYXZlQWRkSW5TZXR0aW5ncywgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkxvY2F0b3IsIFBhcmFtc18xLlBhcmFtZXRlcklkLkFkZEluTG9jYXRvciksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuU2V0dGluZ3NWYWx1ZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLkFkZEluU2V0dGluZ3MpXSwgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkFkZEluU2V0dGluZ3NJbmZvLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5BZGRJblNldHRpbmdzSW5mbykpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXRQYXJhbWV0ZXJzRm9yU2hlZXQsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5HZXRQYXJhbWV0ZXJNb2RlbHMsIFtdLCBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUGFyYW1ldGVySW5mb3MsIFBhcmFtc18xLlBhcmFtZXRlcklkLlBhcmFtZXRlckN0cmxzKSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkZpbmRQYXJhbWV0ZXIsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5GaW5kUGFyYW1ldGVyTW9kZWwsIFtuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUGFyYW1ldGVyQ2FwdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRmllbGRDYXB0aW9uLCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkTmFtZVN0cmluZywgdHJ1ZSldLCBcbiAgICAgICAgLy8gV2UgbWlnaHQgbm90IGdldCBhIHJlc3BvbnNlIGlmIHRoZSBwYXJhbWV0ZXIgaXNuJ3QgZm91bmRcbiAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckluZm8sIFBhcmFtc18xLlBhcmFtZXRlcklkLlBhcmFtZXRlckN0cmwsIHRydWUpKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuQ2hhbmdlUGFyYW1ldGVyVmFsdWUsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5TZXRQYXJhbWV0ZXJWYWx1ZSwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJGaWVsZE5hbWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkdsb2JhbEZpZWxkTmFtZSksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUGFyYW1ldGVyVmFsdWUsIFBhcmFtc18xLlBhcmFtZXRlcklkLlZhbHVlU3RyKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJJbmZvLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJDdHJsKSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkNsZWFyU2VsZWN0ZWRNYXJrcywgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkNsZWFyU2VsZWN0ZWRNYXJrcywgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmlzdWFsSURQTSldKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuU2VsZWN0QnlWYWx1ZSwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLlNlbGVjdEJ5VmFsdWUsIFtuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWQsIFBhcmFtc18xLlBhcmFtZXRlcklkLlZpc3VhbElEUE0pLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlNlbGVjdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuU2VsZWN0aW9uLCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TZWxlY3Rpb25VcGRhdGVUeXBlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5TZWxlY3Rpb25VcGRhdGVUeXBlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5IaWVyVmFsU2VsZWN0aW9uTW9kZWxzLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5IaWVyVmFsU2VsZWN0aW9uTW9kZWxzLCB0cnVlKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIFBhcmFtc18xLlBhcmFtZXRlcklkLkRpbVZhbFNlbGVjdGlvbk1vZGVscywgdHJ1ZSksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgUGFyYW1zXzEuUGFyYW1ldGVySWQuUXVhbnRSYW5nZVNlbGVjdGlvbk1vZGVscywgdHJ1ZSldKSk7XG4gICAgICAgIHJlc3VsdC5hZGRDb21tYW5kKG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0RGF0YVNvdXJjZXMsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5HZXRTY2hlbWEsIFtdLCBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRGF0YVNjaGVtYSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRGF0YVNjaGVtYSkpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5SZWZyZXNoRGF0YVNvdXJjZSwgQ29tbWFuZElkc18xLlVJQ29tbWFuZHMuUmVmcmVzaERhdGFTb3VyY2VVSSwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EYXRhU291cmNlSWQsIFBhcmFtc18xLlBhcmFtZXRlcklkLkRhdGFzb3VyY2UpXSwgdW5kZWZpbmVkLCBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZE5hbWVzcGFjZS5UYWJVSSkpO1xuICAgICAgICByZXN1bHQuYWRkQ29tbWFuZChuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldEZpbHRlcnMsIENvbW1hbmRJZHNfMS5Eb2NDb21tYW5kcy5HZXRXb3Jrc2hlZXRGaWx0ZXJzLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJRFBNKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Xb3Jrc2hlZXRGaWx0ZXJzLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJzSW5mbykpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXRDYXRlZ29yaWNhbERvbWFpbiwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkdldENhdGVnb3JpY2FsRG9tYWluLCBbbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJRFBNKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWUpLFxuICAgICAgICAgICAgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkRvbWFpblR5cGUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpbHRlckRvbWFpblR5cGUpXSwgbmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUGFyYW1ldGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkNhdGVnb3JpY2FsRG9tYWluLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5DYXRlZ29yaWNhbERvbWFpbikpKTtcbiAgICAgICAgcmVzdWx0LmFkZENvbW1hbmQobmV3IENvbW1hbmRSZWdpc3RyYXRpb25fMS5Db21tYW5kUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXRSYW5nZURvbWFpbiwgQ29tbWFuZElkc18xLkRvY0NvbW1hbmRzLkdldFF1YW50aXRhdGl2ZURvbWFpbiwgW25ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmlzdWFsSURQTSksXG4gICAgICAgICAgICBuZXcgQ29tbWFuZFJlZ2lzdHJhdGlvbl8xLkNvbW1hbmRQYXJhbWV0ZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGRJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRmllbGROYW1lKSxcbiAgICAgICAgICAgIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Eb21haW5UeXBlLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJEb21haW5UeXBlKV0sIG5ldyBDb21tYW5kUmVnaXN0cmF0aW9uXzEuQ29tbWFuZFBhcmFtZXRlcihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5RdWFudGl0YXRpdmVEb21haW4sIFBhcmFtc18xLlBhcmFtZXRlcklkLlF1YW50aXRhdGl2ZURvbWFpbikpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeTtcbn0oKSk7XG5leHBvcnRzLkNvbW1hbmRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5ID0gQ29tbWFuZE1hcHBpbmdSZWdpc3RyeUZhY3Rvcnk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5qc1xuICoqIG1vZHVsZSBpZCA9IDExXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8qIHRzbGludDpkaXNhYmxlICovXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvY29tbWFuZHMtZW51bS10cy50ZW1wbGF0ZScsIHUnLi4vdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWNvcmUvdGVtcC1wcmVzLWxheWVyL2FsbC1jbWQtd3JhcHBlcnMuZGF0YSddXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRG9jQ29tbWFuZHM7XG4oZnVuY3Rpb24gKERvY0NvbW1hbmRzKSB7XG4gICAgLy8gU2F2ZXMgdGhlIHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWVkIGFkZC1pbiBpZFxuICAgIERvY0NvbW1hbmRzW1wiU2F2ZUFkZEluU2V0dGluZ3NcIl0gPSBcInNhdmUtYWRkLWluLXNldHRpbmdzXCI7XG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCBmb3IgYW4gYWRkLWluIGluc3RhbmNlLlxuICAgIERvY0NvbW1hbmRzW1wiR2V0QWRkSW5JbnN0YW5jZVByZXNNb2RlbFwiXSA9IFwiZ2V0LWFkZC1pbi1pbnN0YW5jZS1wcmVzLW1vZGVsXCI7XG4gICAgLy8gR2V0cyB0aGUgcHJlcyBtb2RlbCBmb3IgdGhlIGRhc2hib2FyZCBhdXRob3Jpbmcgd2lkZ2V0IGZvciBhZGQtaW5zLlxuICAgIERvY0NvbW1hbmRzW1wiR2V0QWRkSW5EYXNoYm9hcmRBdXRob3JpbmdXaWRnZXRQcmVzTW9kZWxcIl0gPSBcImdldC1hZGQtaW4tZGFzaGJvYXJkLWF1dGhvcmluZy13aWRnZXQtcHJlcy1tb2RlbFwiO1xuICAgIC8vIEdldHMgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgYW4gYWRkLWluIHRvIGluaXRpYWxpemUgaXRzZWxmLlxuICAgIERvY0NvbW1hbmRzW1wiSW5pdGlhbGl6ZUFkZEluSW5zdGFuY2VcIl0gPSBcImluaXRpYWxpemUtYWRkLWluLWluc3RhbmNlXCI7XG4gICAgLy8gRW5hYmxlcyBvciBkaXNhYmxlIGphdmFzY3JpcHQgZGVidWdnaW5nIG9mIGFuIGFkZC1pbi5cbiAgICBEb2NDb21tYW5kc1tcIlNldEFkZEluSnNEZWJ1Z2dpbmdFbmFibGVkXCJdID0gXCJzZXQtYWRkLWluLWpzLWRlYnVnZ2luZy1lbmFibGVkXCI7XG4gICAgLy8gV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHBhdXNlIGJlZm9yZSBsb2FkaW5nLiBJZiBtaXNzaW5nLCB0b2dnbGUgdGhlIHZhbHVlXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRQYXVzZUJlZm9yZUxvYWRpbmdBZGRJblwiXSA9IFwic2V0LXBhdXNlLWJlZm9yZS1sb2FkaW5nLWFkZC1pblwiO1xuICAgIC8vIFJlbG9hZHMgdGhlIEFkZC1JbiB3aWRnZXQgYW5kIHdlYiBwYWdlLlxuICAgIERvY0NvbW1hbmRzW1wiUmVsb2FkQWRkSW5cIl0gPSBcInJlbG9hZC1hZGQtaW5cIjtcbiAgICAvLyBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgbWVudSBmb3IgYSBkYXNoYm9hcmQgYWRkLWluLlxuICAgIERvY0NvbW1hbmRzW1wiR2V0QWRkSW5ab25lQ29udGV4dE1lbnVcIl0gPSBcImdldC1hZGQtaW4tem9uZS1jb250ZXh0LW1lbnVcIjtcbiAgICAvLyBHZXRzIHRoZSBwcmVzIG1vZGVsIHdoaWNoIGluZGljYXRlcyB3aGF0IHRoZSBkZWJ1ZyBzZXR0aW5ncyBmb3IgYWRkLWlucyBpcy5cbiAgICBEb2NDb21tYW5kc1tcIkdldEFkZEluRGVidWdTZXR0aW5nc1ByZXNNb2RlbFwiXSA9IFwiZ2V0LWFkZC1pbi1kZWJ1Zy1zZXR0aW5ncy1wcmVzLW1vZGVsXCI7XG4gICAgLy8gUHJpbWFyeSB1c2UgaXMgZm9yIGJ1aWxkaW5nIGNvbnRleHQgbWVudXNcbiAgICBEb2NDb21tYW5kc1tcIklzU2VsZWN0aW9uQW5FZGl0YWJsZVBhcmFtZXRlclwiXSA9IFwiaXMtc2VsZWN0aW9uLWFuLWVkaXRhYmxlLXBhcmFtZXRlclwiO1xuICAgIC8vIENoZWNrIGlmIHNlbGVjdGlvbiBjYW4gYmUgdXNlZCBhcyBiYXNlIGZvciBjcmVhdGluZyBhIG5ldyBwYXJhbWV0ZXIuIFByaW1hcnkgdXNlIGlzIGZvciBidWlsZGluZyBjb250ZXh0IG1lbnVzXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRDcmVhdGVQYXJhbWV0ZXJTdGF0ZVwiXSA9IFwiZ2V0LWNyZWF0ZS1wYXJhbWV0ZXItc3RhdGVcIjtcbiAgICAvLyBVc2VzIEVkaXRQYXJhbWV0ZXIgdG8gZ2V0IGFuZCByZXR1cm4gaW5mbyBhYm91dCB0aGUgcHJlc21vZGVsIHdpdGhvdXQgbWFpbnRhaW5pbmcgdGhlIGNvbnRyb2xsZXJcbiAgICBEb2NDb21tYW5kc1tcIkdldFBhcmFtZXRlckVkaXRJbmZvXCJdID0gXCJnZXQtcGFyYW1ldGVyLWVkaXQtaW5mb1wiO1xuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRyb2xsZXIgYW5kIGl0cyBzdG9yZWQgcGFyYW1ldGVyIHRoZW4gcmV0dXJuIGEgcG9wdWxhdGVkIHByZXNtb2RlbFxuICAgIERvY0NvbW1hbmRzW1wiQ3JlYXRlUGFyYW1ldGVyXCJdID0gXCJjcmVhdGUtcGFyYW1ldGVyXCI7XG4gICAgLy8gU2FtZSB1bmRlcmx5aW5nIGxvZ2ljIGFzIENyZWF0ZVBhcmFtZXRlciBidXQgZWRpdHMgcmF0aGVyIHRoYW4gY3JlYXRpbmcgYSBuZXcgcGFyYW1ldGVyXG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0UGFyYW1ldGVyX05ld1wiXSA9IFwiZWRpdC1wYXJhbWV0ZXItbmV3XCI7XG4gICAgLy8gQWRkIGEgbWVtYmVyIG9mIGEgcGFyYW1ldGVyIGRvbWFpbi4gQ2hhbmdlcyBhcmUgYXBwbGllZCB0byBpbnRlcm1lZGlhdGUgc3RhdGUgYW5kIHNhdmVkIG9uIGNvbW1pdFxuICAgIERvY0NvbW1hbmRzW1wiQWRkUGFyYW1ldGVyTWVtYmVyXCJdID0gXCJhZGQtcGFyYW1ldGVyLW1lbWJlclwiO1xuICAgIC8vIEVkaXQgYSBtZW1iZXIgb2YgYSBwYXJhbWV0ZXIgZG9tYWluLiBDaGFuZ2VzIGFyZSBhcHBsaWVkIHRvIGludGVybWVkaWF0ZSBzdGF0ZSBhbmQgc2F2ZWQgb24gY29tbWl0XG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0UGFyYW1ldGVyTWVtYmVyXCJdID0gXCJlZGl0LXBhcmFtZXRlci1tZW1iZXJcIjtcbiAgICAvLyBEZWxldGUgYSBzZXJpZXMgb2YgcmFuZ2VzIG9mIG1lbWJlcnMgZnJvbSB0aGUgcGFyYW1ldGVyIGxpc3QuXG4gICAgRG9jQ29tbWFuZHNbXCJEZWxldGVQYXJhbWV0ZXJNZW1iZXJzXCJdID0gXCJkZWxldGUtcGFyYW1ldGVyLW1lbWJlcnNcIjtcbiAgICAvLyBDb3B5IGEgc2VyaWVzIG9mIHJhbmdlcyBvZiBtZW1iZXJzIG9mIGEgcGFyYW1ldGVyIGxpc3RcbiAgICBEb2NDb21tYW5kc1tcIkNvcHlQYXJhbWV0ZXJNZW1iZXJzXCJdID0gXCJjb3B5LXBhcmFtZXRlci1tZW1iZXJzXCI7XG4gICAgLy8gTW92ZSBhIHNlcmllcyBvZiByYW5nZXMgb2YgbWVtYmVycyBvZiBhIHBhcmFtZXRlciBsaXN0XG4gICAgRG9jQ29tbWFuZHNbXCJNb3ZlUGFyYW1ldGVyTWVtYmVyc1wiXSA9IFwibW92ZS1wYXJhbWV0ZXItbWVtYmVyc1wiO1xuICAgIC8vIENoYW5nZSBkb21haW4gb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQYXJhbWV0ZXJEb21haW5UeXBlXCJdID0gXCJlZGl0LXBhcmFtZXRlci1kb21haW4tdHlwZVwiO1xuICAgIC8vIENoYW5nZSBkYXRhdHlwZSBvZiBhIHBhcmFtZXRlci4gQ2hhbmdlcyBhcmUgYXBwbGllZCB0byBpbnRlcm1lZGlhdGUgc3RhdGUgYW5kIHNhdmVkIG9uIGNvbW1pdFxuICAgIERvY0NvbW1hbmRzW1wiRWRpdFBhcmFtZXRlckRhdGFUeXBlXCJdID0gXCJlZGl0LXBhcmFtZXRlci1kYXRhLXR5cGVcIjtcbiAgICAvLyBDaGFuZ2UgZGlzcGxheSBmb3JtYXQgb2YgYSBwYXJhbWV0ZXIuIENoYW5nZXMgYXJlIGFwcGxpZWQgdG8gaW50ZXJtZWRpYXRlIHN0YXRlIGFuZCBzYXZlZCBvbiBjb21taXRcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQYXJhbWV0ZXJGb3JtYXRcIl0gPSBcImVkaXQtcGFyYW1ldGVyLWZvcm1hdFwiO1xuICAgIC8vIFZhbGlkYXRlIGNoYW5nZXMgdG8gYSBwYXJhbWV0ZXIncyByYW5nZSBkb21haW4gYW5kIGFwcGx5IHRvIGludGVybWVkaWF0ZSBzdGF0ZS4gQ2hhbmdlcyBhcmUgc2F2ZWQgb24gY29tbWl0XG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0UGFyYW1ldGVyUmFuZ2VcIl0gPSBcImVkaXQtcGFyYW1ldGVyLXJhbmdlXCI7XG4gICAgLy8gRWRpdCB0aGUgdmFsdWUgb2YgYSBub24tbGlzdCBkb21haW4gcGFyYW1ldGVyXG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0UGFyYW1ldGVyVmFsdWVcIl0gPSBcImVkaXQtcGFyYW1ldGVyLXZhbHVlXCI7XG4gICAgLy8gRWRpdCB0aGUgdmFsdWUgb2YgYSBsaXN0IGRvbWFpbiBwYXJhbWV0ZXJcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQYXJhbWV0ZXJWYWx1ZUluZGV4XCJdID0gXCJlZGl0LXBhcmFtZXRlci12YWx1ZS1pbmRleFwiO1xuICAgIC8vIFVwZGF0ZSB0aGUgcGFyYW1ldGVyIGNhcHRpb24gYW5kIGRlc2NyaXB0aW9uIC0gdXNlZCB0byBrZWVwIGJhY2tlbmQgaW4gc3luYy4gTm8gdmVyaWZpY2F0aW9uL3JldHVybiBpcyByZXF1cmllZC5cbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQYXJhbWV0ZXJEaXNwbGF5SW5mb1wiXSA9IFwiZWRpdC1wYXJhbWV0ZXItZGlzcGxheS1pbmZvXCI7XG4gICAgLy8gVXBkYXRlIHRoZSBkb21haW4gb2YgdGhlIHBhcmFtZXRlciB1c2luZyBhIGZpZWxkIChjb2x1bW4gb3IgcGFyYW1ldGVyKSBhcyBhIGJhc2VcbiAgICBEb2NDb21tYW5kc1tcIlVwZGF0ZVBhcmFtZXRlckZyb21GaWVsZFwiXSA9IFwidXBkYXRlLXBhcmFtZXRlci1mcm9tLWZpZWxkXCI7XG4gICAgLy8gVXBkYXRlIHRoZSBsaXN0IGRvbWFpbiBvZiBhIHBhcmFtZXRlciBmcm9tIGEgcGxhaW4gdGV4dCByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXNcbiAgICBEb2NDb21tYW5kc1tcIlBhcnNlUGFyYW1ldGVyTGlzdERvbWFpblwiXSA9IFwicGFyc2UtcGFyYW1ldGVyLWxpc3QtZG9tYWluXCI7XG4gICAgLy8gQ2xlYXJzIHRoZSBwYXJhbWV0ZXIncyBkb21haW4gb2YgYWxsIG1lbWJlcnNcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyUGFyYW1ldGVyTGlzdERvbWFpblwiXSA9IFwiY2xlYXItcGFyYW1ldGVyLWxpc3QtZG9tYWluXCI7XG4gICAgLy8gQ3JlYXRlcyBvciBlZGl0cyBwYXJhbWV0ZXIgZnJvbSBpbnRlcm1lZGlhdGUgc3RhdGUuIFRha2VzIGEgZmV3IHByb3BlcnRpZXMgdGhhdCBhcmUgY2FjaGVkIGluIGRpYWxvZyBhbmQgYXBwbGllcyB0aGVtIHByZS1jb21taXQuXG4gICAgRG9jQ29tbWFuZHNbXCJDb21taXRQYXJhbWV0ZXJFZGl0c1wiXSA9IFwiY29tbWl0LXBhcmFtZXRlci1lZGl0c1wiO1xuICAgIC8vIEdldHMgdGhlIG1vZGVsIGZvciBhIHBhcnRpY3VsYXIgcGFyYW1ldGVyIG9yIHJldHVybnMgYW4gZW1wdHkgcmVzcG9uc2UgaWYgb25lIGlzIG5vdCBmb3VuZC5cbiAgICBEb2NDb21tYW5kc1tcIkZpbmRQYXJhbWV0ZXJNb2RlbFwiXSA9IFwiZmluZC1wYXJhbWV0ZXItbW9kZWxcIjtcbiAgICAvLyBHZXRzIHRoZSBwcmVzIG1vZGVsIGZvciB0aGUgc2hvdyBkYXRhIGRpYWxvZ1xuICAgIERvY0NvbW1hbmRzW1wiR2V0U2hvd0RhdGFQcmVzTW9kZWxcIl0gPSBcImdldC1zaG93LWRhdGEtcHJlcy1tb2RlbFwiO1xuICAgIC8vIEV4cG9ydCB1bmRlcmx5aW5nIGRhdGEgZnJvbSB0aGUgU2hvd0RhdGFEaWFsb2cgdG8gYSBDU1YgZmlsZVxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0RhdGFFeHBvcnRUb0NTVlwiXSA9IFwic2hvdy1kYXRhLWV4cG9ydC10by1jc3ZcIjtcbiAgICAvLyBHZXRzIHRoZSBzdW1tYXJ5IGRhdGEgZm9yIGEgd29ya3NoZWV0XG4gICAgRG9jQ29tbWFuZHNbXCJHZXRTdW1tYXJ5RGF0YVwiXSA9IFwiZ2V0LXN1bW1hcnktZGF0YVwiO1xuICAgIC8vIEdldHMgdGhlIHVuZGVybHlpbmcgZGF0YSBmb3IgYSB3b3Jrc2hlZXRcbiAgICBEb2NDb21tYW5kc1tcIkdldFVuZGVybHlpbmdEYXRhXCJdID0gXCJnZXQtdW5kZXJseWluZy1kYXRhXCI7XG4gICAgLy8gR2V0cyB0aGUgdW5kZXJseWluZyBkYXRhIGZvciBhIHNwZWNpZmljIGRhdGEgc291cmNlLlxuICAgIERvY0NvbW1hbmRzW1wiR2V0RGF0YVNvdXJjZURhdGFcIl0gPSBcImdldC1kYXRhLXNvdXJjZS1kYXRhXCI7XG4gICAgLy8gU2VsZWN0IGFsbCBtYXJrcyB0aGF0IGhhdmUgdGhlIHR1cGxlJ3MgdmFsdWUgZm9yIHRoZSBnaXZlbiBmaWVsZCAuXG4gICAgRG9jQ29tbWFuZHNbXCJTZWxlY3RCeVR1cGxlVmFsdWVcIl0gPSBcInNlbGVjdC1ieS10dXBsZS12YWx1ZVwiO1xuICAgIC8vIENsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXRcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyU2VsZWN0ZWRNYXJrc1wiXSA9IFwiY2xlYXItc2VsZWN0ZWQtbWFya3NcIjtcbiAgICAvLyBDcmVhdGVzIG9yIHVwZGF0ZXMgYW5kIGV4aXN0aW5nIGZpbHRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdXBkYXRlcy5cbiAgICBEb2NDb21tYW5kc1tcIkFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXJVcGRhdGVzXCJdID0gXCJhcHBseS1jYXRlZ29yaWNhbC1maWx0ZXItdXBkYXRlc1wiO1xuICAgIC8vIFNlYXJjaCBmaWx0ZXIgZG9tYWluIGZvciB0ZXh0IGFuZCByZXR1cm4gYW55IG1hdGNoaW5nIHR1cGxlcy5cbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsRmlsdGVyU2VhcmNoXCJdID0gXCJjYXRlZ29yaWNhbC1maWx0ZXItc2VhcmNoXCI7XG4gICAgLy8gQ2xlYXIgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdGFibGUgb2YgdGhlIGlkZW50aWZpZWQgY2FjaGUuXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbEZpbHRlckNsZWFyUmVsYXRpb25hbENhY2hlXCJdID0gXCJjYXRlZ29yaWNhbC1maWx0ZXItY2xlYXItcmVsYXRpb25hbC1jYWNoZVwiO1xuICAgIC8vIENyZWF0ZSB0dXBsZXMgZm9yIGFuIGV4aXN0aW5nIGZpbHRlciBmcm9tIHN1cHBsaWVkIHRleHQuXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRDYXRlZ29yaWNhbEZpbHRlclR1cGxlc0Zyb21UZXh0XCJdID0gXCJnZXQtY2F0ZWdvcmljYWwtZmlsdGVyLXR1cGxlcy1mcm9tLXRleHRcIjtcbiAgICAvLyBSZXR1cm5zIGEgcHJlc21vZGVsIGJhY2tpbmcgYSBjYXRlZ29yaWNhbCBmaWx0ZXIsIGluaXRpYWxpemluZyBhIGRhdGEgY2FjaGUgZm9yIGZhc3QgbG9va3VwIG9mIHRoZSBmaWx0ZXIncyBtZW1iZXIgZG9tYWluLlxuICAgIERvY0NvbW1hbmRzW1wiR2V0Q2F0ZWdvcmljYWxGaWx0ZXJcIl0gPSBcImdldC1jYXRlZ29yaWNhbC1maWx0ZXJcIjtcbiAgICAvLyBSZXRyaWV2ZXMgYSBwYWdlIG9mIGRhdGEgdG8gZGlzcGxheSBpbiB0aGUgZmlsdGVyJ3MgbGlzdCBkb21haW5cbiAgICBEb2NDb21tYW5kc1tcIkdldENhdGVnb3JpY2FsRmlsdGVyRG9tYWluUGFnZVwiXSA9IFwiZ2V0LWNhdGVnb3JpY2FsLWZpbHRlci1kb21haW4tcGFnZVwiO1xuICAgIC8vIFJlc2V0IGZpbHRlciB0byBjb21taXR0ZWQgc3RhdGVcbiAgICBEb2NDb21tYW5kc1tcIlJlc2V0Q2F0ZWdvcmljYWxGaWx0ZXJEZWZlcnJlZFwiXSA9IFwicmVzZXQtY2F0ZWdvcmljYWwtZmlsdGVyLWRlZmVycmVkXCI7XG4gICAgLy8gVXNlIHVuY29tbWl0dGVkIHN0YXRlIHRvIHJlc2V0IHRoZSBmaWx0ZXIncyBjb250cm9sbGVyXG4gICAgRG9jQ29tbWFuZHNbXCJSZWNyZWF0ZUNhdGVnb3JpY2FsRmlsdGVyQ29udHJvbGxlclwiXSA9IFwicmVjcmVhdGUtY2F0ZWdvcmljYWwtZmlsdGVyLWNvbnRyb2xsZXJcIjtcbiAgICAvLyBWYWxpZGF0ZXMgYSBDYXRlZ3JvaWNhbCBGaWx0ZXIgbmFtZS5cbiAgICBEb2NDb21tYW5kc1tcIlZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJOYW1lXCJdID0gXCJ2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItbmFtZVwiO1xuICAgIC8vIEdldHMgYSBzdW1tYXJ5IG9mIHRoZSBmaWx0ZXIgcGF0dGVybi5cbiAgICBEb2NDb21tYW5kc1tcIkdldENhdGVnb3JpY2FsRmlsdGVyUGF0dGVyblN1bW1hcnlcIl0gPSBcImdldC1jYXRlZ29yaWNhbC1maWx0ZXItcGF0dGVybi1zdW1tYXJ5XCI7XG4gICAgLy8gR2V0cyBhIHN1bW1lcnkgb2YgdGhlIGZpbHRlciBjb25kaXRpb24uXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvblN1bW1hcnlcIl0gPSBcImdldC1jYXRlZ29yaWNhbC1maWx0ZXItY29uZGl0aW9uLXN1bW1hcnlcIjtcbiAgICAvLyBMb2FkIHRoZSBjdXJyZW50IG1pbmltdW0gYW5kIG1heGltdW0gZGF0YSB2YWx1ZSByYW5nZSBmb3IgdGhlIGNvbmRpdGlvbiBmaWVsZC5cbiAgICBEb2NDb21tYW5kc1tcIkxvYWRDYXRlZ29yaWNhbEZpbHRlckNvbmRpdGlvbkZpZWxkVmFsdWVSYW5nZVwiXSA9IFwibG9hZC1jYXRlZ29yaWNhbC1maWx0ZXItY29uZGl0aW9uLWZpZWxkLXZhbHVlLXJhbmdlXCI7XG4gICAgLy8gVmFsaWRhdGVzIGEgQ2F0ZWdvcmljYWwgRmlsdGVyJ3MgY29uZGl0aW9uIGZvcm11bGEgYW5kIHJlLXdyaXRlcyBpdC5cbiAgICBEb2NDb21tYW5kc1tcIlZhbGlkYXRlQ2F0ZWdvcmljYWxGaWx0ZXJDb25kaXRpb25Gb3JtdWxhXCJdID0gXCJ2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItY29uZGl0aW9uLWZvcm11bGFcIjtcbiAgICAvLyBHZXRzIGEgc3VtbWVyeSBvZiB0aGUgZmlsdGVyIGxpbWl0LlxuICAgIERvY0NvbW1hbmRzW1wiR2V0Q2F0ZWdvcmljYWxGaWx0ZXJMaW1pdFN1bW1hcnlcIl0gPSBcImdldC1jYXRlZ29yaWNhbC1maWx0ZXItbGltaXQtc3VtbWFyeVwiO1xuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGxpbWl0IGNvdW50LlxuICAgIERvY0NvbW1hbmRzW1wiVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckxpbWl0Q291bnRcIl0gPSBcInZhbGlkYXRlLWNhdGVnb3JpY2FsLWZpbHRlci1saW1pdC1jb3VudFwiO1xuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGxpbWl0IGZvcm11bGEsIGFuZCByZS13cml0ZXMgdGhlIGZvcm11bGEuXG4gICAgRG9jQ29tbWFuZHNbXCJWYWxpZGF0ZUNhdGVnb3JpY2FsRmlsdGVyTGltaXRGb3JtdWxhXCJdID0gXCJ2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItbGltaXQtZm9ybXVsYVwiO1xuICAgIC8vIFZhbGlkYXRlcyBhIENhdGVnb3JpY2FsIEZpbHRlcidzIGxpbWl0LlxuICAgIERvY0NvbW1hbmRzW1wiVmFsaWRhdGVDYXRlZ29yaWNhbEZpbHRlckxpbWl0XCJdID0gXCJ2YWxpZGF0ZS1jYXRlZ29yaWNhbC1maWx0ZXItbGltaXRcIjtcbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgcmFuZ2VcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsRmlsdGVyU2V0UmFuZ2VUeXBlRGVmZXJyZWRcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlci1zZXQtcmFuZ2UtdHlwZS1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBjaGFuZ2VzIHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBleGNsdXNpdmVcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsRmlsdGVyU2V0U2VsZWN0aW9uRXhjbHVzaXZlRGVmZXJyZWRcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlci1zZXQtc2VsZWN0aW9uLWV4Y2x1c2l2ZS1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBjaGFuZ2VzIHdoZXRoZXIgYW4gZW1wdHkgc2VsZWN0aW9uIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgc2VsZWN0aW9uIG9mICdBbGwnIGluIGEgTWFudWFsIHNlbGVjdGlvbiBtb2RlXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbEZpbHRlclNldFVzZUFsbFdoZW5NYW51YWxJc0VtcHR5RGVmZXJyZWRcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlci1zZXQtdXNlLWFsbC13aGVuLW1hbnVhbC1pcy1lbXB0eS1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBhbHRlcnMgdGhlIHByZXNldCB0eXBlXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbEZpbHRlclNldFByZXNldFR5cGVEZWZlcnJlZFwiXSA9IFwiY2F0ZWdvcmljYWwtZmlsdGVyLXNldC1wcmVzZXQtdHlwZS1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgb25lIG9yIG1vcmUgbWVtYmVyc1xuICAgIERvY0NvbW1hbmRzW1wiQ2F0ZWdvcmljYWxGaWx0ZXJTZWxlY3RSZWxhdGlvbmFsTWVtYmVyc0RlZmVycmVkXCJdID0gXCJjYXRlZ29yaWNhbC1maWx0ZXItc2VsZWN0LXJlbGF0aW9uYWwtbWVtYmVycy1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB0aGUgdXNlciBoYXMgZGVzZWxlY3RlZCBvbmUgb3IgbW9yZSBtZW1iZXJzXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbEZpbHRlckRlc2VsZWN0UmVsYXRpb25hbE1lbWJlcnNEZWZlcnJlZFwiXSA9IFwiY2F0ZWdvcmljYWwtZmlsdGVyLWRlc2VsZWN0LXJlbGF0aW9uYWwtbWVtYmVycy1kZWZlcnJlZFwiO1xuICAgIC8vIEluZm9ybSBjYWNoZSB3aGVuIGEgdXNlciBzZWxlY3RzIGV2ZXJ5dGhpbmcgaW4gdGhlIGRvbWFpblxuICAgIERvY0NvbW1hbmRzW1wiQ2F0ZWdvcmljYWxGaWx0ZXJTZWxlY3RBbGxSZWxhdGlvbmFsTWVtYmVyc0RlZmVycmVkXCJdID0gXCJjYXRlZ29yaWNhbC1maWx0ZXItc2VsZWN0LWFsbC1yZWxhdGlvbmFsLW1lbWJlcnMtZGVmZXJyZWRcIjtcbiAgICAvLyBJbmZvcm0gY2FjaGUgd2hlbiBhIHVzZXIgZGVzZWxlY3RzIGV2ZXJ5dGhpbmcgaW4gdGhlIGRvbWFpblxuICAgIERvY0NvbW1hbmRzW1wiQ2F0ZWdvcmljYWxGaWx0ZXJEZXNlbGVjdEFsbFJlbGF0aW9uYWxNZW1iZXJzRGVmZXJyZWRcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlci1kZXNlbGVjdC1hbGwtcmVsYXRpb25hbC1tZW1iZXJzLWRlZmVycmVkXCI7XG4gICAgLy8gSW5mb3JtIGNhY2hlIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBhIGRpZmZlcmVudCBkb21haW4gKGUuZy4gcmVsZXZhbnQgdmFsdWVzIG9ubHkpXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbEZpbHRlclNldERvbWFpblR5cGVEZWZlcnJlZFwiXSA9IFwiY2F0ZWdvcmljYWwtZmlsdGVyLXNldC1kb21haW4tdHlwZS1kZWZlcnJlZFwiO1xuICAgIC8vIFNldCB3aGV0aGVyIGZpbHRlcnMgYXBwbHkgdG8gdG90YWxzIGFzIHdlbGwgYXMgbm9uLXRvdGFscyB0YWJsZSBjYWxjc1xuICAgIERvY0NvbW1hbmRzW1wiRmlsdGVyQXBwbHlUb1RvdGFsVGFibGVDYWxjc1wiXSA9IFwiZmlsdGVyLWFwcGx5LXRvLXRvdGFsLXRhYmxlLWNhbGNzXCI7XG4gICAgLy8gR2V0cyB0aGUgbGlzdCBvZiBmaWx0ZXJzIHVzZWQgaW4gYSB3b3Jrc2hlZXRcbiAgICBEb2NDb21tYW5kc1tcIkdldFdvcmtzaGVldEZpbHRlcnNcIl0gPSBcImdldC13b3Jrc2hlZXQtZmlsdGVyc1wiO1xuICAgIC8vIEdldHMgdGhlIGRvbWFpbiBmb3IgYSBjYXRlZ29yaWNhbCBGaWx0ZXJcbiAgICBEb2NDb21tYW5kc1tcIkdldENhdGVnb3JpY2FsRG9tYWluXCJdID0gXCJnZXQtY2F0ZWdvcmljYWwtZG9tYWluXCI7XG4gICAgLy8gR2V0cyB0aGUgZG9tYWluIGZvciBhIHF1YW50aXRhdGl2ZSBGaWx0ZXJcbiAgICBEb2NDb21tYW5kc1tcIkdldFF1YW50aXRhdGl2ZURvbWFpblwiXSA9IFwiZ2V0LXF1YW50aXRhdGl2ZS1kb21haW5cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldEhpZ2hsaWdodGVkRGF0YVwiXSA9IFwiZ2V0LWhpZ2hsaWdodGVkLWRhdGFcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFNlbGVjdGlvbkRhdGFcIl0gPSBcImdldC1zZWxlY3Rpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNlbGVjdFwiXSA9IFwic2VsZWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZWxlY3RBbGxcIl0gPSBcInNlbGVjdC1hbGxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNlbGVjdEJ5VmFsdWVcIl0gPSBcInNlbGVjdC1ieS12YWx1ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2VsZWN0Tm9uZUluY2x1ZGluZ01hc3RlclwiXSA9IFwic2VsZWN0LW5vbmUtaW5jbHVkaW5nLW1hc3RlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWRkTWFudWFsSXRlbXNUb0ZpbHRlclwiXSA9IFwiYWRkLW1hbnVhbC1pdGVtcy10by1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsRmlsdGVyXCJdID0gXCJjYXRlZ29yaWNhbC1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsRmlsdGVyQnlJbmRleFwiXSA9IFwiY2F0ZWdvcmljYWwtZmlsdGVyLWJ5LWluZGV4XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDaGFuZ2VTaGFyZWRGaWx0ZXJcIl0gPSBcImNoYW5nZS1zaGFyZWQtZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDbGVhckNvbnRleHRGaWx0ZXJzXCJdID0gXCJjbGVhci1jb250ZXh0LWZpbHRlcnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyRXhpc3RpbmdGaWx0ZXJcIl0gPSBcImNsZWFyLWV4aXN0aW5nLWZpbHRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRGVmYXVsdEZpbHRlclwiXSA9IFwiZGVmYXVsdC1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZpbHRlckdlb1wiXSA9IFwiZmlsdGVyLWdlb1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRmlsdGVyTmVnXCJdID0gXCJmaWx0ZXItbmVnXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJGaWx0ZXJOdWxsc1wiXSA9IFwiZmlsdGVyLW51bGxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJGaWx0ZXJUYXJnZXRzXCJdID0gXCJmaWx0ZXItdGFyZ2V0c1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0U2hhcmVkRmlsdGVyUHJlc01vZGVsXCJdID0gXCJnZXQtc2hhcmVkLWZpbHRlci1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJIaWVyYXJjaGljYWxGaWx0ZXJcIl0gPSBcImhpZXJhcmNoaWNhbC1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIktlZXBPbmx5T3JFeGNsdWRlXCJdID0gXCJrZWVwLW9ubHktb3ItZXhjbHVkZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmFuZ2VGaWx0ZXJcIl0gPSBcInJhbmdlLWZpbHRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVsRGF0ZUZpbHRlclwiXSA9IFwicmVsYXRpdmUtZGF0ZS1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlc2V0RmlsdGVyXCJdID0gXCJyZXNldC1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dHZW9BdERlZmF1bHRcIl0gPSBcInNob3ctZ2VvLWF0LWRlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dTVkF0RGVmYXVsdFwiXSA9IFwic2hvdy1zdi1hdC1kZWZhdWx0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJUb2dnbGVMb2NrUXVpY2tGaWx0ZXJzXCJdID0gXCJ0b2dnbGUtbG9jay1xdWljay1maWx0ZXJzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBZGREYXRhQ29ubmVjdGlvblwiXSA9IFwiYWRkLWRhdGEtY29ubmVjdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWRkRHJpbGxQYXRoXCJdID0gXCJhZGQtZHJpbGwtcGF0aFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWRkQ3JlZGVudGlhbHNGcm9tS2V5Y2hhaW5cIl0gPSBcImFkZC1jcmVkZW50aWFscy1mcm9tLWtleWNoYWluXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBZGRDcmVkZW50aWFsc0Zyb21LZXljaGFpbkZpbGVcIl0gPSBcImFkZC1jcmVkZW50aWFscy1mcm9tLWtleWNoYWluLWZpbGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkFkZEZpZWxkRm9sZGVyXCJdID0gXCJhZGQtZmllbGQtZm9sZGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBZGRTdWJ0b3RhbHNcIl0gPSBcImFkZC1zdWJ0b3RhbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkFkZFRvRHJpbGxQYXRoXCJdID0gXCJhZGQtdG8tZHJpbGwtcGF0aFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWRkVG9GaWVsZEZvbGRlclwiXSA9IFwiYWRkLXRvLWZpZWxkLWZvbGRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWdncmVnYXRlTWVhc3VyZXNGbGFnXCJdID0gXCJhZ2dyZWdhdGUtbWVhc3VyZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkFwcGx5Q2FsY3VsYXRpb25cIl0gPSBcImFwcGx5LWNhbGN1bGF0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBcHBseVBhZ2VTZXR1cE9wdGlvbnNcIl0gPSBcImFwcGx5LXBhZ2Utc2V0dXAtb3B0aW9uc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQXBwbHlUYWJsZU9wdGlvbnNcIl0gPSBcImFwcGx5LXRhYmxlLW9wdGlvbnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkFwcGx5VHlwZUluUGlsbFwiXSA9IFwiYXBwbHktdHlwZS1pbi1waWxsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBc3NlcnRcIl0gPSBcImFzc2VydFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQXR0ZW1wdENvbm5lY3REYXRhU291cmNlc09uU2hlZXRcIl0gPSBcImF0dGVtcHQtY29ubmVjdC1kYXRhc291cmNlcy1vbi1zaGVldFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQXR0ZW1wdENvbm5lY3RXb3JrYm9va1wiXSA9IFwiYXR0ZW1wdC1jb25uZWN0LXdvcmtib29rXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBdHRlbXB0RGF0YVNvdXJjZXNDb25uZWN0aW9uXCJdID0gXCJhdHRlbXB0LWRhdGFzb3VyY2VzLWNvbm5lY3Rpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkF1dG9VcGRhdGVzXCJdID0gXCJhdXRvLXVwZGF0ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQnJ1c2hcIl0gPSBcImhpZ2hsaWdodFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQnJ1c2hTcGVjaWFsXCJdID0gXCJoaWdobGlnaHQtc3BlY2lhbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQnVpbGREYXRhU2NoZW1hRGF0YVNvdXJjZUNvbnRleHRNZW51XCJdID0gXCJidWlsZC1kYXRhLXNjaGVtYS1kYXRhLXNvdXJjZS1jb250ZXh0LW1lbnVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkJ1aWxkRGF0YVNjaGVtYUNvbnRleHRNZW51XCJdID0gXCJidWlsZC1kYXRhLXNjaGVtYS1jb250ZXh0LW1lbnVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkJ1aWxkRGF0YVNjaGVtYUZpZWxkQ29udGV4dE1lbnVcIl0gPSBcImJ1aWxkLWRhdGEtc2NoZW1hLWZpZWxkLWNvbnRleHQtbWVudVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQnVpbGREYXRhU2NoZW1hRHJpbGxQYXRoQ29udGV4dE1lbnVcIl0gPSBcImJ1aWxkLWRhdGEtc2NoZW1hLWRyaWxsLXBhdGgtY29udGV4dC1tZW51XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJCdWlsZEZpbGVUYWJsZUluZm9QcmVzTW9kZWxcIl0gPSBcImJ1aWxkLWZpbGUtdGFibGUtaW5mby1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJCdWlsZFNoZWV0VGFiQ29udGV4dE1lbnVcIl0gPSBcImJ1aWxkLXNoZWV0LXRhYi1jb250ZXh0LW1lbnVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhbmNlbERhdGFTb3VyY2VQcmVzTW9kZWxcIl0gPSBcImNhbmNlbC1kYXRhc291cmNlLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhdEJpbk1lcmdlU3BsaXRMYWJlbFwiXSA9IFwiY2F0ZWdvcmljYWwtYmluLW1lcmdlLXNwbGl0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbFF1aWNrRmlsdGVyRWRpdFwiXSA9IFwiY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLWVkaXRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsUXVpY2tGaWx0ZXJFeGNsdWRlVmFsdWVzXCJdID0gXCJjYXRlZ29yaWNhbC1xdWljay1maWx0ZXItZXhjbHVkZS12YWx1ZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNhdGVnb3JpY2FsUXVpY2tGaWx0ZXJJbmNsdWRlQWxsV2hlbkVtcHR5XCJdID0gXCJjYXRlZ29yaWNhbC1xdWljay1maWx0ZXItaW5jbHVkZS1hbGwtd2hlbi1lbXB0eVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2F0ZWdvcmljYWxRdWlja0ZpbHRlck1vZGVcIl0gPSBcImNhdGVnb3JpY2FsLXF1aWNrLWZpbHRlci1tb2RlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDYXRlZ29yaWNhbFF1aWNrRmlsdGVyUGF0dGVyblwiXSA9IFwiY2F0ZWdvcmljYWwtcXVpY2stZmlsdGVyLXBhdHRlcm5cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZUFnZ3JlZ2F0aW9uXCJdID0gXCJjaGFuZ2UtYWdncmVnYXRpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZUFscGhhTGV2ZWxcIl0gPSBcImNoYW5nZS1hbHBoYS1sZXZlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2hhbmdlQm9yZGVyXCJdID0gXCJjaGFuZ2UtYm9yZGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDaGFuZ2VGaWVsZFR5cGVcIl0gPSBcImNoYW5nZS1maWVsZC10eXBlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDaGFuZ2VGb3JlY2FzdENvbHVtblR5cGVcIl0gPSBcImNoYW5nZS1mb3JlY2FzdC1jb2x1bW4tdHlwZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2hhbmdlSGFsb1wiXSA9IFwiY2hhbmdlLWhhbG9cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZU1hcmtlcnNcIl0gPSBcImNoYW5nZS1tYXJrZXJzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDaGFuZ2VTaXplXCJdID0gXCJjaGFuZ2Utc2l6ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2hhbmdlU2hlZXRUYWJDb2xvclwiXSA9IFwiY2hhbmdlLXNoZWV0LXRhYi1jb2xvclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYXJBbGxBeGlzUmFuZ2VzXCJdID0gXCJjbGVhci1heGlzLXJhbmdlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYXJDYWxjTW9kZWxcIl0gPSBcImNsZWFyLWNhbGN1bGF0aW9uLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDbGVhckZpbHRlcnNcIl0gPSBcImNsZWFyLWZpbHRlcnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyRm9ybWF0dGluZ1wiXSA9IFwiY2xlYXItZm9ybWF0dGluZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYXJGdXR1cmVcIl0gPSBcImNsZWFyLWZ1dHVyZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYXJMYXlvdXRcIl0gPSBcImNsZWFyLWxheW91dFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYXJRdWlja0ZpbHRlclwiXSA9IFwiY2xlYXItcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDbGVhclNvcnRzXCJdID0gXCJjbGVhci1zb3J0c1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xvc2VDb25uZWN0aW9uXCJdID0gXCJjbG9zZS1jb25uZWN0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDbG9zZURhdGFTb3VyY2VcIl0gPSBcImNsb3NlLWRhdGEtc291cmNlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uQWRkR29vZ2xlQW5hbHl0aWNzRGltZW5zaW9uXCJdID0gXCJjb25uZWN0aW9uLWFkZC1nb29nbGUtYW5hbHl0aWNzLWRpbWVuc2lvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkFkZEdvb2dsZUFuYWx5dGljc01lYXN1cmVcIl0gPSBcImNvbm5lY3Rpb24tYWRkLWdvb2dsZS1hbmFseXRpY3MtbWVhc3VyZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkFkZE5ld1RhYmxlXCJdID0gXCJjb25uZWN0aW9uLWFkZC1uZXctdGFibGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25BZGRDb2FsZXNjZVwiXSA9IFwiY29ubmVjdGlvbi1hZGQtY29hbGVzY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25BZGRQaXZvdFwiXSA9IFwiY29ubmVjdGlvbi1hZGQtcGl2b3RcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25Db252ZXJ0VG9VbmlvbkFuZEVkaXRcIl0gPSBcImNvbm5lY3Rpb24tY29udmVydC10by11bmlvbi1hbmQtZWRpdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkNvbnZlcnRUb1VuaW9uXCJdID0gXCJjb25uZWN0aW9uLWNvbnZlcnQtdG8tdW5pb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25FZGl0VW5pb25cIl0gPSBcImNvbm5lY3Rpb24tZWRpdC11bmlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkFkZE9yRWRpdEJhdGNoVW5pb25cIl0gPSBcImNvbm5lY3Rpb24tYWRkLW9yLWVkaXQtYmF0Y2gtdW5pb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25DaGFuZ2VUYWJsZVByb3BlcnR5XCJdID0gXCJjb25uZWN0aW9uLWNoYW5nZS10YWJsZS1wcm9wZXJ0eVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkNvdW50RW50aXR5XCJdID0gXCJjb25uZWN0aW9uLWNvdW50LWVudGl0eVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkRhdGFTZXJ2ZXJGZXRjaE1vcmVEYXRhc291cmNlc1wiXSA9IFwiY29ubmVjdGlvbi1kYXRhc2VydmVyLWZldGNoLW1vcmUtZGF0YXNvdXJjZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25EYXRhU2VydmVyUHJvamVjdFNlbGVjdFwiXSA9IFwiY29ubmVjdGlvbi1kYXRhc2VydmVyLWNoYW5nZS1zZWxlY3RlZC1wcm9qZWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uRGF0YVNlcnZlclVwZGF0ZUZldGNoUGFyYW1ldGVyc1wiXSA9IFwiY29ubmVjdGlvbi1kYXRhc2VydmVyLXVwZGF0ZS1mZXRjaC1wYXJhbWV0ZXJzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uRGF0YVNlcnZlckZsdXNoQ2FjaGVcIl0gPSBcImNvbm5lY3Rpb24tZGF0YXNlcnZlci1mbHVzaC1jYWNoZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkRlbGV0ZUFsbFRhYmxlc1wiXSA9IFwiY29ubmVjdGlvbi1kZWxldGUtYWxsLXRhYmxlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkRlbGV0ZVRhYmxlXCJdID0gXCJjb25uZWN0aW9uLWRlbGV0ZS10YWJsZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRDYXB0aW9uXCJdID0gXCJjb25uZWN0aW9uLWVkaXQtY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NBY2NvdW50XCJdID0gXCJjb25uZWN0aW9uLWVkaXQtZ29vZ2xlLWFuYWx5dGljcy1hY2NvdW50XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc0RhdGVSYW5nZVwiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3MtZGF0ZS1yYW5nZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRHb29nbGVBbmFseXRpY3NNZWFzdXJlR3JvdXBcIl0gPSBcImNvbm5lY3Rpb24tZWRpdC1nb29nbGUtYW5hbHl0aWNzLW1lYXN1cmUtZ3JvdXBcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25Ub2dnbGVHQVF1ZXJ5UGFydGl0aW9uaW5nXCJdID0gXCJjb25uZWN0aW9uLXRvZ2dsZS1nYS1xdWVyeS1wYXJ0aXRpb25pbmdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzUHJvcGVydHlcIl0gPSBcImNvbm5lY3Rpb24tZWRpdC1nb29nbGUtYW5hbHl0aWNzLXByb3BlcnR5XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uRWRpdEdvb2dsZUFuYWx5dGljc1ZpZXdcIl0gPSBcImNvbm5lY3Rpb24tZWRpdC1nb29nbGUtYW5hbHl0aWNzLXZpZXdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25FZGl0R29vZ2xlQW5hbHl0aWNzU2VnbWVudFwiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWdvb2dsZS1hbmFseXRpY3Mtc2VnbWVudFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRKb2luQ2xhdXNlc1wiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWpvaW4tY2xhdXNlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRKb2luVHlwZVwiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWpvaW4tdHlwZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvbkVkaXRTUUxUZXh0XCJdID0gXCJjb25uZWN0aW9uLWVkaXQtc3FsLXRleHRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25GZXRjaEVudGl0eVwiXSA9IFwiY29ubmVjdGlvbi1mZXRjaC1lbnRpdHlcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25TZXRGb3JjZUV4dHJhY3RSZWZyZXNoXCJdID0gXCJjb25uZWN0aW9uLXNldC1mb3JjZS1leHRyYWN0LXJlZnJlc2hcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25QcmVwYXJlRGF0YVNvdXJjZUZvckVkaXRcIl0gPSBcImNvbm5lY3Rpb24tcHJlcGFyZS1kYXRhc291cmNlLWZvci1lZGl0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uQ2xlYXJSZWZyZXNoQXR0cmlidXRlc1wiXSA9IFwiY29ubmVjdGlvbi1jbGVhci1yZWZyZXNoLWF0dHJpYnV0ZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25SZW1vdmVHb29nbGVBbmFseXRpY3NEaW1lbnNpb25cIl0gPSBcImNvbm5lY3Rpb24tcmVtb3ZlLWdvb2dsZS1hbmFseXRpY3MtZGltZW5zaW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVtb3ZlR29vZ2xlQW5hbHl0aWNzTWVhc3VyZVwiXSA9IFwiY29ubmVjdGlvbi1yZW1vdmUtZ29vZ2xlLWFuYWx5dGljcy1tZWFzdXJlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVtb3ZlQ29hbGVzY2VcIl0gPSBcImNvbm5lY3Rpb24tcmVtb3ZlLWNvYWxlc2NlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVtb3ZlUGl2b3RcIl0gPSBcImNvbm5lY3Rpb24tcmVtb3ZlLXBpdm90XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uQWRkRGF0ZVBhcnNlRm9ybWF0c1wiXSA9IFwiY29ubmVjdGlvbi1hZGQtZGF0ZS1wYXJzZS1mb3JtYXRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVuYW1lVGFibGVcIl0gPSBcImNvbm5lY3Rpb24tcmVuYW1lLXRhYmxlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVwbGFjZVJlbGF0aW9uV2l0aFNRTFRleHRcIl0gPSBcImNvbm5lY3Rpb24tcmVwbGFjZS1yZWxhdGlvbi13aXRoLXNxbC10ZXh0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVwbGFjZVRhYmxlXCJdID0gXCJjb25uZWN0aW9uLXJlcGxhY2UtdGFibGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25SZXNldFRhYmxlQWxpYXNcIl0gPSBcImNvbm5lY3Rpb24tcmVzZXQtdGFibGUtYWxpYXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25TZWxlY3RDYXRhbG9nXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1jYXRhbG9nXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VsZWN0Q3ViZVwiXSA9IFwiY29ubmVjdGlvbi1zZWxlY3QtY3ViZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvblNlbGVjdERhdGFiYXNlXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1kYXRhYmFzZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvblNlbGVjdFNjaGVtYVwiXSA9IFwiY29ubmVjdGlvbi1zZWxlY3Qtc2NoZW1hXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VsZWN0U3RvcmVkUHJvY2VkdXJlXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1zdG9yZWQtcHJvY2VkdXJlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VsZWN0V2FyZWhvdXNlXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC13YXJlaG91c2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25TZWxlY3RCaWdRdWVyeUxlZ2FjeVNRTENoZWNrQm94XCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1iaWdxdWVyeS1sZWdhY3ktY2hlY2tcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25Ub2dnbGVIYXNIZWFkZXJSb3dcIl0gPSBcImNvbm5lY3Rpb24tdG9nZ2xlLWhhcy1oZWFkZXItcm93XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb25uZWN0aW9uVG9nZ2xlVGFibGVDbGVhbmluZ1wiXSA9IFwiY29ubmVjdGlvbi10b2dnbGUtdGFibGUtY2xlYW5pbmdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3Rpb25Ub2dnbGVVc2VFeHRyYWN0XCJdID0gXCJjb25uZWN0aW9uLXRvZ2dsZS11c2UtZXh0cmFjdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29ubmVjdGlvblZpZXdUYWJsZUNsZWFuaW5nUmVzdWx0c1wiXSA9IFwiY29ubmVjdGlvbi12aWV3LXRhYmxlLWNsZWFuaW5nLXJlc3VsdHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbm5lY3RUb0RhdGFTZXJ2ZXJTb3VyY2VcIl0gPSBcImNvbm5lY3QtZGF0YS1zZXJ2ZXItZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29uc2lkZXJaZXJvc0VtcHR5RmxhZ1wiXSA9IFwiY29uc2lkZXItemVyb3MtZW1wdHlcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbnZlcnRVbm5hbWVkRmllbGRzXCJdID0gXCJjb252ZXJ0LXVubmFtZWQtZmllbGRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDcmFzaFwiXSA9IFwiY3Jhc2hcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNyZWF0ZUFnZ3JlZ2F0ZVJvbGVcIl0gPSBcImNyZWF0ZS1hZ2dyZWdhdGUtcm9sZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ3JlYXRlQ29ubmVjdGlvblwiXSA9IFwiY3JlYXRlLWNvbm5lY3Rpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNyZWF0ZURlZmF1bHRRdWlja0ZpbHRlclwiXSA9IFwiY3JlYXRlLWRlZmF1bHQtcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDcmVhdGVUeXBlSW5QaWxsXCJdID0gXCJjcmVhdGUtdHlwZS1pbi1waWxsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDdXN0b21EYXRhR3JpZEZpZWxkT3JkZXJcIl0gPSBcImN1c3RvbS1kYXRhZ3JpZC1maWVsZC1vcmRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ3VzdG9tRGF0ZUFnZ3JlZ2F0aW9uXCJdID0gXCJjdXN0b20tZGF0ZS1hZ2dyZWdhdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ3VzdG9tU3BsaXRGaWVsZFwiXSA9IFwiY3VzdG9tLXNwbGl0LWZpZWxkXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEZWJ1Z0Fzc2VydGlvblwiXSA9IFwiZGVidWctYXNzZXJ0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEZWNyZW1lbnRQYXJhbWV0ZXJWYWx1ZVwiXSA9IFwiZGVjci1wYXJhbWV0ZXItdmFsdWVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRlbGV0ZUZpZWxkc1wiXSA9IFwiZGVsZXRlLWNhbGN1bGF0aW9uLWZpZWxkcy1jb21tYW5kXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEZWxldGVTaGVldFwiXSA9IFwiZGVsZXRlLXNoZWV0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEZXNjcmliZURyaWxsUGF0aFwiXSA9IFwiZGVzY3JpYmUtZHJpbGwtcGF0aFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRGVzY3JpYmVTb3J0RmlsdGVyXCJdID0gXCJkZXNjcmliZS1zb3J0LWZpbHRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRGlzbWlzc051bGxXYXJ0XCJdID0gXCJkaXNtaXNzLW51bGwtd2FydFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRG9tYWluUXVpY2tGaWx0ZXJcIl0gPSBcImRvbWFpbi1xdWljay1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRvdWJsZUZyZWVDcmFzaFwiXSA9IFwiZG91YmxlLWZyZWVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRyb3BOb3doZXJlXCJdID0gXCJkcm9wLW5vd2hlcmVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRyb3BPblNjaGVtYVZpZXdlclwiXSA9IFwiZHJvcC1vbi1zY2hlbWEtdmlld2VyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEcm9wT25TaGVsZlwiXSA9IFwiZHJvcC1vbi1zaGVsZlwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRHJvcE9uQ2FsY0VkaXRvclwiXSA9IFwiZHJvcC1vbi1jYWxjLWVkaXRvclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRHJvcE9uU2hvd01lXCJdID0gXCJkcm9wLW9uLXNob3dtZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRHJvcFByZXBhcmVcIl0gPSBcImRyb3AtcHJlcGFyZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRHVhbEF4aXNcIl0gPSBcImR1YWwtYXhpc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRHVwbGljYXRlU2hlZXRcIl0gPSBcImR1cGxpY2F0ZS1zaGVldFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRWRpdENvcHlDYWxjXCJdID0gXCJlZGl0LWNvcHktY2FsY1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRWRpdERyb3BMaW5lc1wiXSA9IFwiZWRpdC1kcm9wLWxpbmVzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0RW51bWVyYXRlZEdyb3VwXCJdID0gXCJlZGl0LWVudW1lcmF0ZWQtZ3JvdXBcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVkaXROZXN0ZWRHcm91cFwiXSA9IFwiZWRpdC1uZXN0ZWQtZ3JvdXBcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQaWxsXCJdID0gXCJlZGl0LXBpbGxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRQcmltaXRpdmVUeXBlXCJdID0gXCJlZGl0LXByaW1pdGl2ZS10eXBlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFbmFibGVBbGxCcnVzaGluZ1wiXSA9IFwiZW5hYmxlLWFsbC1oaWdobGlnaHRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFbmFibGVRdWlja0ZpbHRlclwiXSA9IFwiZW5hYmxlLXF1aWNrLWZpbHRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRW5hYmxlU2hlZXRCcnVzaGluZ1wiXSA9IFwiZW5hYmxlLXNoZWV0LWhpZ2hsaWdodHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVuYWJsZVRoZW1lZEJydXNoaW5nXCJdID0gXCJlbmFibGUtdGhlbWVkLWhpZ2hsaWdodHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVudW1lcmF0ZVZhcmlhYmxlc1wiXSA9IFwiZW51bWVyYXRlLXZhcmlhYmxlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRW51bWVyYXRlVmFyaWFibGVTZWxlY3Rpb25WYWx1ZXNcIl0gPSBcImVudW1lcmF0ZS12YXJpYWJsZS1zZWxlY3Rpb24tdmFsdWVzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFc3RhYmxpc2hDb25uZWN0aW9uXCJdID0gXCJlc3RhYmxpc2gtY29ubmVjdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiRXN0YWJsaXNoTWF0Y2hpbmdDb25uZWN0aW9uc1wiXSA9IFwiZXN0YWJsaXNoLW1hdGNoaW5nLWNvbm5lY3Rpb25zXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFeHBvcnREYXRhVG9UZXh0XCJdID0gXCJleHBvcnQtZGF0YS10by10ZXh0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFeHRTdmNDb25maWdcIl0gPSBcImV4dC1zdmMtY29uZmlnXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFeHRTdmNDb25maWdDb25uZWN0XCJdID0gXCJleHQtc3ZjLWNvbmZpZy1jb25uZWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFeHRyYWN0XCJdID0gXCJleHRyYWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXREYXRhR3JpZEN1cnJlbnRUYWJsZVwiXSA9IFwic2V0LWRhdGEtZ3JpZC1jdXJyZW50LXRhYmxlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJGZXRjaFRhYmxlUmVsZXZhbmNlXCJdID0gXCJmZXRjaC10YWJsZS1yZWxldmFuY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZldGNoQ2FjaGVkVGFibGVSZWxldmFuY2VcIl0gPSBcImZldGNoLWNhY2hlZC10YWJsZS1yZWxldmFuY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZsaXBMYWJlbHNcIl0gPSBcImZsaXAtbGFiZWxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJGbG9hdGluZ1Rvb2xiYXJcIl0gPSBcInpvb20tY29udHJvbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZsb2F0aW5nVG9vbGJhclRvZ2dsZVwiXSA9IFwiem9vbS1jb250cm9scy10b2dnbGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZvcmVjYXN0Q29uZmlnXCJdID0gXCJmb3JlY2FzdC1jb25maWdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZvcmVjYXN0VG9nZ2xlXCJdID0gXCJmb3JlY2FzdC10b2dnbGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkZvcm1hdFdvcmtib29rXCJdID0gXCJmb3JtYXQtd29ya2Jvb2tcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdlb2dyYXBoaWNTZWFyY2hRdWVyeVwiXSA9IFwiZ2VvZ3JhcGhpYy1zZWFyY2gtcXVlcnlcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdlb2dyYXBoaWNTZWFyY2hMb2FkRGF0YVwiXSA9IFwiZ2VvZ3JhcGhpYy1zZWFyY2gtbG9hZC1kYXRhXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZW9ncmFwaGljU2VhcmNoSXNEYXRhRG9uZUxvYWRpbmdcIl0gPSBcImdlb2dyYXBoaWMtc2VhcmNoLWRhdGEtZG9uZS1sb2FkaW5nXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZW9ncmFwaGljU2VhcmNoVG9nZ2xlVmlzaWJpbGl0eVwiXSA9IFwiZ2VvZ3JhcGhpYy1zZWFyY2gtdG9nZ2xlLXZpc2liaWxpdHlcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldEVkaXRDb25uZWN0aW9uUHJlc01vZGVsXCJdID0gXCJnZXQtZWRpdC1jb25uZWN0aW9uLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldEVkaXRFbnVtZXJhdGVkR3JvdXBQcmVzTW9kZWxcIl0gPSBcImdldC1lZGl0LWVudW1lcmF0ZWQtZ3JvdXAtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RWRpdE5lc3RlZEdyb3VwUHJlc01vZGVsXCJdID0gXCJnZXQtZWRpdC1uZXN0ZWQtZ3JvdXAtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RnJhbWVGaW5kZXJQcmVzTW9kZWxcIl0gPSBcImdldC1mcmFtZS1maW5kZXItcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0R29vZ2xlU2hlZXRzTGlzdFByZXNNb2RlbFwiXSA9IFwiZ2V0LWdvb2dsZS1zaGVldHMtbGlzdC1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRHb29nbGVTaGVldFBhbmVQcmVzTW9kZWxcIl0gPSBcImdldC1nb29nbGUtc2hlZXQtcGFuZS1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRJbml0aWFsU1FMUHJlc01vZGVsXCJdID0gXCJnZXQtaW5pdGlhbC1zcWwtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0UXVlcnlCYW5kaW5nUHJlc01vZGVsXCJdID0gXCJnZXQtcXVlcnktYmFuZGluZy1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRUYWJiZWRBdXRoZW50aWNhdGlvblByZXNNb2RlbFwiXSA9IFwiZ2V0LXRhYmJlZC1hdXRoZW50aWNhdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRBY3RpdmVTaGVldFwiXSA9IFwiZ2V0LWFjdGl2ZS1zaGVldFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0QWxwaGFMZXZlbFwiXSA9IFwiZ2V0LWFscGhhLWxldmVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRBcHBDb25maWdcIl0gPSBcImdldC1hcHAtY29uZmlnXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREaXNhYmxlZFNlY29uZGFyeURTRmllbGRzXCJdID0gXCJnZXQtZGlzYWJsZWQtc2Vjb25kYXJ5ZHMtZmllbGRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRCbGVuZGluZ0ZpZWxkc1wiXSA9IFwiZ2V0LWJsZW5kaW5nLWZpZWxkc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0Q2FsY3VsYXRpb25QcmVzTW9kZWxcIl0gPSBcImdldC1jYWxjdWxhdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRDYXRlZ29yaWNhbENvbG9yXCJdID0gXCJnZXQtY2F0ZWdvcmljYWwtY29sb3JcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldENsaWVudEluZm9cIl0gPSBcImdldC1jbGllbnQtaW5mb1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0Q29tbWFuZHNcIl0gPSBcImdldC1jb21tYW5kc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0Q29ubmVjdGlvbkRlc2NyaXB0aW9uUHJlc01vZGVsXCJdID0gXCJnZXQtY29ubmVjdGlvbi1kZXNjcmlwdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREU0Ryb3Bkb3duUHJlc01vZGVsXCJdID0gXCJnZXQtZHMtZHJvcGRvd24tcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RGF0YVByZXZpZXdXaW5kb3dNZXNzYWdlUHJlc01vZGVsXCJdID0gXCJnZXQtZGF0YS1wcmV2aWV3LXdpbmRvdy1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREYXRhU291cmNlUHJlc01vZGVsXCJdID0gXCJnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREYXRhU291cmNlU29ydFByZXNNb2RlbFwiXSA9IFwiZ2V0LWRhdGFzb3VyY2Utc29ydC1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREYXRhU291cmNlUHJvcGVydGllc1ByZXNNb2RlbFwiXSA9IFwiZ2V0LWRhdGFzb3VyY2UtcHJvcGVydGllcy1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRDb25uZWN0aW9uU2V0dGluZ3NQcmVzTW9kZWxcIl0gPSBcImdldC1jb25uZWN0aW9uLXNldHRpbmdzLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldERhc2hib2FyZFwiXSA9IFwiZ2V0LWRhc2hib2FyZFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RGF0YVByZXZpZXdcIl0gPSBcImdldC1kYXRhLXByZXZpZXdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldERhdGFiYXNlRW51bWVyYXRpb25QcmVzTW9kZWxcIl0gPSBcImdldC1kYXRhYmFzZS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREZWZhdWx0Q29sb3JcIl0gPSBcImdldC1kZWZhdWx0LWNvbG9yXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREZWZhdWx0U2hhcGVcIl0gPSBcImdldC1kZWZhdWx0LXNoYXBlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXREcmFnUHJlc01vZGVsRm9yVGV4dFwiXSA9IFwiZ2V0LWRyYWctcHJlcy1tb2RlbC1mb3ItdGV4dFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RHJvcFRhcmdldFByZXNNb2RlbFwiXSA9IFwiZ2V0LWRyb3AtdGFyZ2V0LXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldEVkaXREYXRhU2VydmVyQ29ubmVjdGlvblByZXNNb2RlbFwiXSA9IFwiZ2V0LWVkaXQtZGF0YS1zZXJ2ZXItY29ubmVjdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRFZGl0RHJvcExpbmVzTW9kZWxcIl0gPSBcImdldC1lZGl0LWRyb3AtbGluZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldEVuY29kaW5nU3RhdGVcIl0gPSBcImdldC1lbmNvZGluZy1zdGF0ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0RW5jb2RpbmdUeXBlTWVudU1vZGVsXCJdID0gXCJnZXQtZW5jb2RpbmctdHlwZS1tZW51XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRFeHRTdmNDb25maWdcIl0gPSBcImdldC1leHQtc3ZjLWNvbmZpZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0Rm9yZWNhc3RQcmVzTW9kZWxcIl0gPSBcImdldC1mb3JlY2FzdC1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRKb2luRGVzY3JpcHRpb25QcmVzTW9kZWxcIl0gPSBcImdldC1qb2luLWRlc2NyaXB0aW9uLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFF1aWNrRmlsdGVyXCJdID0gXCJnZXQtcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRRdWlja0ZpbHRlcnNcIl0gPSBcImdldC1xdWljay1maWx0ZXJzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRSZWZlcmVuY2VMaW5lUHJlc01vZGVsXCJdID0gXCJnZXQtcmVmZXJlbmNlLWxpbmUtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0UGFyYW1ldGVyc1wiXSA9IFwiZ2V0LXBhcmFtZXRlcnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFBhcmFtZXRlck1vZGVsc1wiXSA9IFwiZ2V0LXBhcmFtZXRlci1tb2RlbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFBhcmFtZXRlcnNSZWdpc3RyeUluZm9cIl0gPSBcImdldC1wYXJhbXMtcmVnaXN0cnktaW5mb1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0UGl2b3RQcmVzTW9kZWxcIl0gPSBcImdldC1waXZvdC1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRTY2VuZVwiXSA9IFwiZ2V0LXNjZW5lXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRTY2hlbWFFbnVtZXJhdGlvblByZXNNb2RlbFwiXSA9IFwiZ2V0LXNjaGVtYS1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRTaGVldHNJbmZvXCJdID0gXCJnZXQtc2hlZXRzLWluZm9cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFNob3dNZVwiXSA9IFwiZ2V0LXNob3ctbWVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFN0YW5kYXJkQ29ubmVjdGlvbkVudW1lcmF0aW9uUHJlc01vZGVsXCJdID0gXCJnZXQtc3RhbmRhcmQtY29ubmVjdGlvbi1lbnVtZXJhdGlvbi1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRTdG9yZWRQcm9jZWR1cmVFbnVtZXJhdGlvblByZXNNb2RlbFwiXSA9IFwiZ2V0LXN0b3JlZC1wcm9jZWR1cmUtZW51bWVyYXRpb24tcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0U3RvcmVkUHJvY2VkdXJlUGFyYW1ldGVyc1ByZXNNb2RlbFwiXSA9IFwiZ2V0LXN0b3JlZC1wcm9jZWR1cmUtcGFyYW1ldGVycy1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRUYWJsZUVudW1lcmF0aW9uUHJlc01vZGVsXCJdID0gXCJnZXQtdGFibGUtZW51bWVyYXRpb24tcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0VGFibGVDbGVhbmluZ1ByZXNNb2RlbFwiXSA9IFwiZ2V0LXRhYmxlLWNsZWFuaW5nLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFRhcmdldEZpZWxkTGlzdFwiXSA9IFwiZ2V0LXRhcmdldC1maWVsZC1saXN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRUb3BMZXZlbENvbm5lY3Rpb25EZXNjcmlwdGlvblByZXNNb2RlbFwiXSA9IFwiZ2V0LXRvcC1sZXZlbC1jb25uZWN0aW9uLWRlc2NyaXB0aW9uLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFR5cGVJblBpbGxQcmVzTW9kZWxcIl0gPSBcImdldC10eXBlLWluLXBpbGwtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0VWJlclRpcFByZXNNb2RlbFwiXSA9IFwiZ2V0LXViZXJ0aXAtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0VW5pb25JbmZvUHJlc01vZGVsXCJdID0gXCJnZXQtdW5pb24taW5mby1wcmVzLW1vZGVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRWaXN1YWxcIl0gPSBcImdldC12aXN1YWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFZpekRhdGFcIl0gPSBcImdldC12aXotZGF0YVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0V2FyZWhvdXNlRW51bWVyYXRpb25QcmVzTW9kZWxcIl0gPSBcImdldC13YXJlaG91c2UtZW51bWVyYXRpb24tcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0V29ya2Jvb2tcIl0gPSBcImdldC13b3JrYm9va1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0V29ybGRVcGRhdGVcIl0gPSBcImdldC13b3JsZC11cGRhdGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdvVG9TaGVldFwiXSA9IFwiZ290by1zaGVldFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiSGVhcENvcnJ1cHRpb25DcmFzaFwiXSA9IFwiY29ycnVwdC1oZWFwXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJIaWRlQ29sdW1uRmllbGRMYWJlbFwiXSA9IFwiaGlkZS1jb2x1bW4tZmllbGQtbGFiZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkhpZGVFbXB0eUNvbHNGbGFnXCJdID0gXCJoaWRlLWVtcHR5LWNvbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkhpZGVFbXB0eVJvd3NGbGFnXCJdID0gXCJoaWRlLWVtcHR5LXJvd3NcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkhpZGVMYWJlbFwiXSA9IFwiaGlkZS1sYWJlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiSGlkZVJvd0ZpZWxkTGFiZWxcIl0gPSBcImhpZGUtcm93LWZpZWxkLWxhYmVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJIaWVyYXJjaGljYWxRdWlja0ZpbHRlclVwZGF0ZVNldEZ1bmN0aW9uXCJdID0gXCJoaWVyYXJjaGljYWwtcXVpY2stZmlsdGVyLXVwZGF0ZS1zZXQtZnVuY3Rpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkluY2x1ZGVJblRvb2x0aXBcIl0gPSBcImluY2x1ZGUtaW4tdG9vbHRpcFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiSW5jbHVkZU90aGVyQ2F0ZWdvcmljYWxCaW5cIl0gPSBcImluY2x1ZGUtb3RoZXItY2F0LWJpblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiSW5jcmVtZW50RXh0cmFjdFwiXSA9IFwiaW5jcmVtZW50LWV4dHJhY3RcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkluY3JlbWVudFBhcmFtZXRlclZhbHVlXCJdID0gXCJpbmNyLXBhcmFtZXRlci12YWx1ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ3JlYXRlQ2FsY1wiXSA9IFwiY3JlYXRlLWNhbGNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkVkaXRDYWxjXCJdID0gXCJlZGl0LWNhbGNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkludm9rZUh5cGVybGlua1wiXSA9IFwiaW52b2tlLWh5cGVybGlua1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiS2VlcE9ubHlPckV4Y2x1ZGVTZWxlY3Rpb25cIl0gPSBcImtlZXAtb25seS1vci1leGNsdWRlLXNlbGVjdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTGFiZWxEcmlsbFwiXSA9IFwibGFiZWwtZHJpbGxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkxhYmVsRHJpbGxDdHhcIl0gPSBcImxhYmVsLWRyaWxsLWN0eFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTGV2ZWxEcmlsbFwiXSA9IFwibGV2ZWwtZHJpbGxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkxvYWRVcmxcIl0gPSBcImxvYWQtdXJsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJMaXN0UHVibGlzaGVkRGF0YVNvdXJjZXNcIl0gPSBcImxpc3QtcHVibGlzaGVkLWRhdGFzb3VyY2VzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJNYXJrTGFiZWxcIl0gPSBcIm1hcmstbGFiZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk1hcmtUcmFpbFwiXSA9IFwibWFyay10cmFpbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTWVtb3J5RHVtcE9iamVjdENvdW50c1wiXSA9IFwibWVtb3J5LWR1bXAtb2JqZWN0LWNvdW50c1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTWVtb3J5TGVha1wiXSA9IFwibWVtb3J5LWxlYWtcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk1lcmdlXCJdID0gXCJtZXJnZS1vci1zcGxpdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTWlncmF0ZURhdGFTb3VyY2VcIl0gPSBcIm1pZ3JhdGUtZGF0YS1zb3VyY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk1vZGlmeU1hcmtzSW5TZXRcIl0gPSBcImFkZC1vci1yZW1vdmUtbWFya3NcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk1vdmVBcmVhQW5ub3RhdGlvblRleHRcIl0gPSBcIm1vdmUtYXJlYS1hbm5vdGF0aW9uLXRleHRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk1vdmVDb2x1bW5Ub3RhbHNcIl0gPSBcIm1vdmUtY29sdW1uLXRvdGFsc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTW92ZU1hcmtcIl0gPSBcIm1vdmUtbWFya1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTW92ZVBvaW50QW5ub3RhdGlvblwiXSA9IFwibW92ZS1wb2ludC1hbm5vdGF0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJNb3ZlUG9pbnRBbm5vdGF0aW9uVGFyZ2V0XCJdID0gXCJtb3ZlLXBvaW50LWFubm90YXRpb24tdGFyZ2V0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJNb3ZlUmVmZXJlbmNlTGluZVwiXSA9IFwibW92ZS1yZWZlcmVuY2UtbGluZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTW92ZVJvd1RvdGFsc1wiXSA9IFwibW92ZS1yb3ctdG90YWxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJOYXZpZ2F0ZVRvU2hlZXRcIl0gPSBcIm5hdmlnYXRlLXRvLXNoZWV0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJQb3N0Q2FsY0pvaW5DbGF1c2VSZXN1bHRcIl0gPSBcInBvc3QtY2FsYy1qb2luLWNsYXVzZS1yZXN1bHRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk5ld0RvY0Rhc2hib2FyZFwiXSA9IFwibmV3LWRhc2hib2FyZFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiTmV3RG9jV29ya3NoZWV0XCJdID0gXCJuZXctd29ya3NoZWV0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJOb25SYW5nZWRSZW1vdmVSZWZlcmVuY2VMaW5lXCJdID0gXCJub24tcmFuZ2VkLXJlbW92ZS1yZWZlcmVuY2UtbGluZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiT3B0aW1pemVFeHRyYWN0XCJdID0gXCJvcHRpbWl6ZS1leHRyYWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJPcHRPdXRBY3Rpb25zXCJdID0gXCJvcHQtb3V0LWFjdGlvbnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlBhZ2VIaXN0b3J5U2V0dGluZ3NcIl0gPSBcInBhZ2UtaGlzdG9yeS1zZXR0aW5nc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUGFnZVRvZ2dsZVRyYWlsc1wiXSA9IFwicGFnZS10b2dnbGUtdHJhaWxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJQYXJzZVVJTmFtZVwiXSA9IFwicGFyc2UtdWktbmFtZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUGVyY2VudGFnZXNcIl0gPSBcInBlcmNlbnRhZ2VzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJQZXJzcGVjdGl2ZXNcIl0gPSBcInBlcnNwZWN0aXZlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUG9zaXRpb25Qb2ludEFubm90YXRpb25cIl0gPSBcInBvc2l0aW9uLXBvaW50LWFubm90YXRpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlByb3RvY29sUG9vbExvZ1wiXSA9IFwicHJvdG9jb2wtcG9vbC1sb2dcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlB1Ymxpc2hEYXRhU291cmNlXCJdID0gXCJwdWJsaXNoLWRhdGFzb3VyY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlB1Ymxpc2hEYXRhU291cmNlRnJvbURhdGFcIl0gPSBcInB1Ymxpc2gtZGF0YS1zb3VyY2UtZnJvbS1kYXRhXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJQdWJsaXNoRGF0YVNvdXJjZUZyb21Xb3JrYm9va0RhdGFcIl0gPSBcInB1Ymxpc2gtZGF0YS1zb3VyY2UtZnJvbS13b3JrYm9vay1kYXRhXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJRdWFudGl0YXRpdmVRdWlja0ZpbHRlckVkaXRcIl0gPSBcInF1YW50aXRhdGl2ZS1xdWljay1maWx0ZXItZWRpdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUXVhbnRpdGF0aXZlTW9kZVF1aWNrRmlsdGVyXCJdID0gXCJxdWFudGl0YXRpdmUtbW9kZS1xdWljay1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlF1ZXJ5TWlncmF0ZURhdGFTb3VyY2VzXCJdID0gXCJxdWVyeS1taWdyYXRlLWRhdGEtc291cmNlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUXVpY2tTb3J0XCJdID0gXCJxdWljay1zb3J0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSYW5nZWRCeUluZGV4TWVyZ2VcIl0gPSBcInJhbmdlZC1ieS1pbmRleC1tZXJnZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmFuZ2VkQnlWYWx1ZU1lcmdlXCJdID0gXCJyYW5nZWQtYnktdmFsdWUtbWVyZ2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlY29yZFwiXSA9IFwicmVjb3JkXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZWRvXCJdID0gXCJyZWRvXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZWZyZXNoRXh0cmFjdFwiXSA9IFwicmVmcmVzaC1leHRyYWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZWZyZXNoRnJvbVNvdXJjZVwiXSA9IFwicmVmcmVzaC1mcm9tLXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVsYXRpdmVEYXRlUXVpY2tGaWx0ZXJFZGl0XCJdID0gXCJyZWxhdGl2ZS1kYXRlLXF1aWNrLWZpbHRlci1lZGl0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVBbGxSZWZlcmVuY2VMaW5lc1wiXSA9IFwicmVtb3ZlLWFsbC1yZWZlcmVuY2UtbGluZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbW92ZURyaWxsUGF0aFwiXSA9IFwicmVtb3ZlLWRyaWxsLXBhdGhcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbW92ZUV4dHJhY3RcIl0gPSBcInJlbW92ZS1leHRyYWN0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVGaWVsZEZvbGRlclwiXSA9IFwicmVtb3ZlLWZpZWxkLWZvbGRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVtb3ZlRmllbGRMYWJlbFwiXSA9IFwicmVtb3ZlLWZpZWxkLWxhYmVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVGaWVsZHNcIl0gPSBcInJlbW92ZS1maWVsZHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbW92ZUZpZWxkc0Zyb21TaGVsZlwiXSA9IFwicmVtb3ZlLWZpZWxkcy1mcm9tLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVGcm9tRHJpbGxQYXRoXCJdID0gXCJyZW1vdmUtZnJvbS1kcmlsbC1wYXRoXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVGcm9tRmllbGRGb2xkZXJcIl0gPSBcInJlbW92ZS1mcm9tLWZpZWxkLWZvbGRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVtb3ZlUmVmZXJlbmNlTGluZVwiXSA9IFwicmVtb3ZlLXJlZmVyZW5jZS1saW5lXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVTdWJ0b3RhbHNcIl0gPSBcInJlbW92ZS1zdWJ0b3RhbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbmFtZURhdGFTb3VyY2VcIl0gPSBcInJlbmFtZS1kYXRhLXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVuYW1lRHJpbGxQYXRoXCJdID0gXCJyZW5hbWUtZHJpbGwtcGF0aFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVuYW1lRmllbGRGb2xkZXJcIl0gPSBcInJlbmFtZS1maWVsZC1mb2xkZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbmFtZVNoZWV0XCJdID0gXCJyZW5hbWUtc2hlZXRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlb3JkZXJMYWJlbHNcIl0gPSBcInJlb3JkZXItbGFiZWxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZXBvcnRCdWdcIl0gPSBcInJlcG9ydC1idWdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlcXVlc3REYXRhU291cmNlUHJlc01vZGVsXCJdID0gXCJyZXF1ZXN0LWRhdGFzb3VyY2UtcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVzZXRQYXJhbWV0ZXJDdHJsVGl0bGVcIl0gPSBcInJlc2V0LXBhcmFtZXRlci1jdHJsLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZXNldFRvb2x0aXBcIl0gPSBcInJlc2V0LXRvb2x0aXBcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlc2l6ZUFyZWFBbm5vdGF0aW9uVGV4dFwiXSA9IFwicmVzaXplLWFyZWEtYW5ub3RhdGlvbi10ZXh0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZXNpemVBeGlzXCJdID0gXCJyZXNpemUtYXhpc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVzaXplQ2VsbFwiXSA9IFwicmVzaXplLWNlbGxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlc2l6ZUhlYWRlclwiXSA9IFwicmVzaXplLWhlYWRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVzaXplUG9pbnRBbm5vdGF0aW9uXCJdID0gXCJyZXNpemUtcG9pbnQtYW5ub3RhdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmV2ZXJ0XCJdID0gXCJyZXZlcnRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJvdGF0ZUZpZWxkTGFiZWxcIl0gPSBcInJvdGF0ZS1maWVsZC1sYWJlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUm90YXRlTGFiZWxcIl0gPSBcInJvdGF0ZS1sYWJlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU3BsaXRGaWVsZExhYmVsXCJdID0gXCJzcGxpdC1maWVsZC1sYWJlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUnVuQWN0aW9uXCJdID0gXCJydW4tYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSdW5TY3JpcHRcIl0gPSBcInJ1bi1zY3JpcHRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJ1blVwZGF0ZXNcIl0gPSBcInJ1bi11cGRhdGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNhdmVNb2RlbFwiXSA9IFwic2F2ZS1tb2RlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2F2ZVB1Ymxpc2hlZERTdG9GaWxlXCJdID0gXCJzYXZlLXB1Ymxpc2hlZC1kcy10by1maWxlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZWxlY3REYXRhU291cmNlXCJdID0gXCJzZWxlY3QtZGF0YS1zb3VyY2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNlbGVjdEZpZWxkc0luU2hlbGZcIl0gPSBcInNlbGVjdC1maWVsZHMtaW4tc2hlbGZcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNlbmREYXRhQ29ubmVjdGlvblRhYmxlVmlld01lc3NhZ2VcIl0gPSBcInNlbmQtZGF0YS1jb25uZWN0aW9uLXRhYmxldmlldy1tZXNzYWdlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBY3RpdmVEYXRhU291cmNlTmFtZVwiXSA9IFwic2V0LWFjdGl2ZS1kYXRhLXNvdXJjZS1uYW1lXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBY3RpdmVDb25uZWN0aW9uTmFtZVwiXSA9IFwic2V0LWFjdGl2ZS1jb25uZWN0aW9uLW5hbWVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldEFjdGl2ZURhdGFTb3VyY2VcIl0gPSBcInNldC1hY3RpdmUtZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0QmFzZVBhbGV0dGVcIl0gPSBcInNldC1iYXNlLXBhbGV0dGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldENhdGVnb3JpY2FsQ29sb3JcIl0gPSBcInNldC1jYXRlZ29yaWNhbC1jb2xvclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0RGF0YUNhY2hlRGVsdGFcIl0gPSBcInNldC1kYXRhLWNhY2hlLWRlbHRhXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXREYXRhUHJldmlld0F1dG9VcGRhdGVcIl0gPSBcInNldC1kYXRhLXByZXZpZXctYXV0by11cGRhdGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldERhdGFQcmV2aWV3Q3VzdG9tRmllbGRPcmRlclwiXSA9IFwic2V0LWRhdGEtcHJldmlldy1jdXN0b20tZmllbGQtb3JkZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldERlZmF1bHRDb2xvclwiXSA9IFwic2V0LWRlZmF1bHQtY29sb3JcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldERlZmF1bHRTaGFwZVwiXSA9IFwic2V0LWRlZmF1bHQtc2hhcGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldEZpbHRlckNvbnRleHRcIl0gPSBcInNldC1maWx0ZXItY29udGV4dFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0RmlsdGVyU2hhcmVkXCJdID0gXCJzZXQtZmlsdGVyLXNoYXJlZFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0SW5pdGlhbFNRTFwiXSA9IFwic2V0LWluaXRpYWwtc3FsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRJdGVtQ29sb3JcIl0gPSBcInNldC1pdGVtLWNvbG9yXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRJdGVtQ29sb3JSZXNldEN1c3RvbWl6YXRpb25cIl0gPSBcInNldC1pdGVtLWNvbG9yLXJlc2V0LWN1c3RvbWl6YXRpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldEl0ZW1FbmNvZGluZ1R5cGVcIl0gPSBcInNldC1pdGVtLWVuY29kaW5nLXR5cGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldE1hcmtTaXplXCJdID0gXCJzZXQtbWFyay1zaXplXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRQYWdlTmF2RmxhZ1wiXSA9IFwic2V0LXBhZ2UtZmxhZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0UGFyYW1ldGVyQ3RybERpc3BsYXlGbGFnc1wiXSA9IFwic2V0LXBhcmFtZXRlci1jdHJsLWRpc3BsYXktZmxhZ3NcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldFBhcmFtZXRlckN0cmxEaXNwbGF5TW9kZVwiXSA9IFwic2V0LXBhcmFtZXRlci1jdHJsLWRpc3BsYXktbW9kZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0UGFyYW1ldGVyQ3RybFRpdGxlXCJdID0gXCJzZXQtcGFyYW1ldGVyLWN0cmwtdGl0bGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldFBhcmFtZXRlclZhbHVlXCJdID0gXCJzZXQtcGFyYW1ldGVyLXZhbHVlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRQcmltaXRpdmVcIl0gPSBcInNldC1wcmltaXRpdmVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldFF1ZXJ5QmFuZGluZ1wiXSA9IFwic2V0LXF1ZXJ5LWJhbmRpbmdcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldFF1aWNrRmlsdGVySW5jbHVkZWRWYWx1ZXNcIl0gPSBcInNldC1xdWljay1maWx0ZXItaW5jbHVkZWRcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldFJlZmVyZW5jZUxpbmVGb3JtdWxhXCJdID0gXCJzZXQtcmVmZXJlbmNlLWxpbmUtZm9ybXVsYVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0UmVmZXJlbmNlTGluZUNvbnN0YW50VmFsdWVcIl0gPSBcInNldC1yZWZlcmVuY2UtbGluZS1jb25zdGFudC12YWx1ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0U2hlZXRGb3JtYXR0aW5nXCJdID0gXCJzZXQtc2hlZXQtZm9ybWF0dGluZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0U2hlZXRTaXplXCJdID0gXCJzZXQtc2hlZXQtc2l6ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0VG90YWxzVHlwZVwiXSA9IFwic2V0LXRvdGFscy10eXBlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRXb3JrYm9va0xvY2FsZVwiXSA9IFwic2V0LXdvcmtib29rLWxvY2FsZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0NhdEN0cmxRdWlja0ZpbHRlclwiXSA9IFwic2hvdy1jYXQtY3RybC1xdWljay1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dDb2xGaWVsZE5hbWVzRmxhZ1wiXSA9IFwic2hvdy1jb2wtZmllbGQtbmFtZXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dDb2xUb3RhbHNGbGFnXCJdID0gXCJzaG93LWNvbC10b3RhbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dDb2x1bW5GaWVsZExhYmVsXCJdID0gXCJzaG93LWNvbHVtbi1maWVsZC1sYWJlbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0VtcHR5Q29sc0ZsYWdcIl0gPSBcInNob3ctZW1wdHktY29sc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0VtcHR5Um93c0ZsYWdcIl0gPSBcInNob3ctZW1wdHktcm93c1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0ZvcmVjYXN0RWRpdG9yXCJdID0gXCJzaG93LWZvcmVjYXN0LWVkaXRvclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0Z1bGxSYW5nZVwiXSA9IFwic2hvdy1mdWxsLXJhbmdlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93SGVhZGVyXCJdID0gXCJzaG93LWhlYWRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0hpZGRlbkRhdGFcIl0gPSBcInNob3ctaGlkZGVuLWRhdGFcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dNZVwiXSA9IFwic2hvdy1tZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd1F1YW50Q3RybFF1aWNrRmlsdGVyXCJdID0gXCJzaG93LXF1YW50LWN0cmwtcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93UXVpY2tGaWx0ZXJEb2NcIl0gPSBcInNob3ctcXVpY2tmaWx0ZXItZG9jXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93UmVmZXJlbmNlTGluZUVkaXRvclwiXSA9IFwic2hvdy1yZWZlcmVuY2UtbGluZS1lZGl0b3JcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dSZWZlcmVuY2VMaW5lQ29uc3RhbnRWYWx1ZUVkaXRvclwiXSA9IFwic2hvdy1yZWZlcmVuY2UtbGluZS1jb25zdGFudC12YWx1ZS1lZGl0b3JcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNob3dSZWZlcmVuY2VMaW5lRm9ybWF0dGVyXCJdID0gXCJzaG93LXJlZmVyZW5jZS1saW5lLWZvcm1hdHRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd1Jvd0ZpZWxkTGFiZWxcIl0gPSBcInNob3ctcm93LWZpZWxkLWxhYmVsXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93Um93RmllbGROYW1lc0ZsYWdcIl0gPSBcInNob3ctcm93LWZpZWxkLW5hbWVzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93Um93VG90YWxzRmxhZ1wiXSA9IFwic2hvdy1yb3ctdG90YWxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaW1wbGVDb21tYW5kTGlzdFwiXSA9IFwic2ltcGxlLWNvbW1hbmQtbGlzdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2xlZXBcIl0gPSBcInNsZWVwXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTbGVlcEJhY2tncm91bmRUaHJlYWRcIl0gPSBcInNsZWVwLWJhY2tncm91bmQtdGhyZWFkXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTb3J0RGF0YUdyaWRCeUNvbHVtblwiXSA9IFwic29ydC1kYXRhZ3JpZC1ieS1jb2x1bW5cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNvcnREYXRhR3JpZEZpZWxkc1wiXSA9IFwic29ydC1kYXRhZ3JpZC1maWVsZHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNwZWNpYWxWYWx1ZXNcIl0gPSBcInNwZWNpYWwtdmFsdWVzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTcGxpdEZpZWxkXCJdID0gXCJzcGxpdC1maWVsZFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU3RhY2tNYXJrc1wiXSA9IFwic3RhY2stbWFya3NcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlN0YWNrT3ZlcmZsb3dDcmFzaFwiXSA9IFwic3RhY2stb3ZlcmZsb3dcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlN1YnRvdGFsQWdncmVnYXRpb25cIl0gPSBcInN1YnRvdGFsLWFnZ3JlZ2F0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTdWJ0b3RhbHNcIl0gPSBcInN1YnRvdGFsc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU3dhcEZpZWxkc1wiXSA9IFwic3dhcC1maWVsZHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlN3YXBSb3dzQW5kQ29sdW1uc1wiXSA9IFwic3dhcC1yb3dzLWFuZC1jb2x1bW5zXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJUYWJsZWF1RXhjZXB0aW9uXCJdID0gXCJ0YWJsZWF1LWV4Y2VwdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVG9nZ2xlRHJvcExpbmVzXCJdID0gXCJ0b2dnbGUtZHJvcC1saW5lc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVG9nZ2xlRmllbGRCbGVuZGluZ1wiXSA9IFwidG9nZ2xlLWZpZWxkLWJsZW5kaW5nXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJUb2dnbGVNYXJrTGFiZWxzXCJdID0gXCJ0b2dnbGUtbWFyay1sYWJlbHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlRvZ2dsZVBhZ2VUaXRsZVwiXSA9IFwidG9nZ2xlLXBhZ2UtdGl0bGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlRvZ2dsZVBhcmFtZXRlckN0cmxEaXNwbGF5RmxhZ1wiXSA9IFwidG9nZ2xlLXBhcmFtZXRlci1jdHJsLWRpc3BsYXktZmxhZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVG9nZ2xlUGFyYW1ldGVyQ3RybFRpdGxlXCJdID0gXCJ0b2dnbGUtcGFyYW1ldGVyLWN0cmwtdGl0bGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlRvZ2dsZVF1aWNrRmlsdGVyVGl0bGVcIl0gPSBcInRvZ2dsZS1xdWljay1maWx0ZXItdGl0bGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlRvZ2dsZVZpek5hdmlnYXRpb25TZXR0aW5nXCJdID0gXCJ0b2dnbGUtdml6LW5hdmlnYXRpb24tc2V0dGluZ1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVW5kb1wiXSA9IFwidW5kb1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVW5oaWRlRGF0YVwiXSA9IFwidW5oaWRlLWRhdGFcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlVuaGlkZUxhYmVsXCJdID0gXCJ1bmhpZGUtbGFiZWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlVwZGF0ZUFyZWFBbm5vdGF0aW9uXCJdID0gXCJ1cGRhdGUtYXJlYS1hbm5vdGF0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJVcGRhdGVDYWxjU2NvcGVJc29sYXRpb25cIl0gPSBcInVwZGF0ZS1zY29wZS1pc29sYXRpb24tZm9yLWNhbGN1bGF0aW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJVcGRhdGVEYXRhU2VydmVyQ29ubmVjdGlvbkluZm9cIl0gPSBcInVwZGF0ZS1kYXRhLXNlcnZlci1jb25uZWN0aW9uLWluZm9cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlVwZGF0ZVBvaW50QW5ub3RhdGlvblB1bGxiYWNrXCJdID0gXCJ1cGRhdGUtcG9pbnQtYW5ub3RhdGlvbi1wdWxsYmFja1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVXBkYXRlVGFibGVDYWxjSW5mb1wiXSA9IFwidXBkYXRlLXRhYmxlLWNhbGMtaW5mb21hdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVXBncmFkZUV4dHJhY3RcIl0gPSBcInVwZ3JhZGUtZXh0cmFjdFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVXNlRXh0cmFjdFwiXSA9IFwidXNlLWV4dHJhY3RcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlZhbGlkYXRlRHJpbGxQYXRoTmFtZVwiXSA9IFwidmFsaWRhdGUtZHJpbGwtcGF0aC1uYW1lXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJWYWxpZGF0ZUZvcm11bGFcIl0gPSBcInZhbGlkYXRlLWZvcm11bGFcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlZhbGlkYXRlSW5pdGlhbFNRTFwiXSA9IFwidmFsaWRhdGUtaW5pdGlhbC1zcWxcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlZhbGlkYXRlUXVlcnlCYW5kaW5nXCJdID0gXCJ2YWxpZGF0ZS1xdWVyeS1iYW5kaW5nXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJWYWxpZGF0ZVR5cGVJblBpbGxcIl0gPSBcInZhbGlkYXRlLXR5cGUtaW4tcGlsbFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiVmlld1BhcmFtZXRlckN0cmxzXCJdID0gXCJ2aWV3LXBhcmFtLWN0cmxzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJWaWV3UXVpY2tGaWx0ZXJzXCJdID0gXCJ2aWV3LXF1aWNrLWZpbHRlcnNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdldFNjaGVtYVwiXSA9IFwiZ2V0LXNjaGVtYVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiR2V0U2NoZW1hVmlld2VyRGF0YVNjaGVtYVwiXSA9IFwiZ2V0LXNjaGVtYS12aWV3ZXItZGF0YS1zY2hlbWFcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbnZlcnRUb0RpbWVuc2lvblwiXSA9IFwiY29udmVydC10by1kaW1lbnNpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNvbnZlcnRUb01lYXN1cmVcIl0gPSBcImNvbnZlcnQtdG8tbWVhc3VyZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ29udmVydFRvQ29udGludW91c1wiXSA9IFwiY29udmVydC10by1jb250aW51b3VzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDb252ZXJ0VG9EaXNjcmV0ZVwiXSA9IFwiY29udmVydC10by1kaXNjcmV0ZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVuYW1lRmllbGRcIl0gPSBcInJlbmFtZS1maWVsZFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiSGlkZUZpZWxkXCJdID0gXCJoaWRlLWZpZWxkXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJVbmhpZGVGaWVsZFwiXSA9IFwidW5oaWRlLWZpZWxkXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJIaWRlVW51c2VkRmllbGRzXCJdID0gXCJoaWRlLXVudXNlZC1maWVsZHNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkR1cGxpY2F0ZUZpZWxkc1wiXSA9IFwiZHVwbGljYXRlLWZpZWxkc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2xlYW5WYWx1ZXNcIl0gPSBcImNsZWFuLXZhbHVlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUGFyc2VEYXRlXCJdID0gXCJwYXJzZS1kYXRlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJNYWtlRGF0ZVwiXSA9IFwibWFrZS1kYXRlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRRdWFsaWZ5TmFtZXNcIl0gPSBcInNldC1xdWFsaWZ5LW5hbWVzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDcmVhdGVNZWFzdXJlRnJvbUNvbHVtblwiXSA9IFwiY3JlYXRlLW1lYXN1cmUtZnJvbS1jb2x1bW5cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlJlbW92ZUZyb21TY2hlbWFEcmlsbFBhdGhcIl0gPSBcInJlbW92ZS1mcm9tLXNjaGVtYS1kcmlsbC1wYXRoXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBZGRUb1NjaGVtYURyaWxsUGF0aFwiXSA9IFwiYWRkLXRvLXNjaGVtYS1kcmlsbC1wYXRoXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVTY2hlbWFEcmlsbFBhdGhcIl0gPSBcInJlbW92ZS1zY2hlbWEtZHJpbGwtcGF0aFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd0hpZGRlbkZpZWxkc1wiXSA9IFwic2hvdy1oaWRkZW4tZmllbGRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93QWxpYXNlc1wiXSA9IFwic2hvdy1hbGlhc2VzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRSb3dEaXNwbGF5Q291bnRcIl0gPSBcInNldC1yb3ctZGlzcGxheS1jb3VudFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2hvd1N0cnVjdHVyZVwiXSA9IFwic2hvdy1zdHJ1Y3R1cmVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkdyb3VwQnlUYWJsZVwiXSA9IFwiZ3JvdXAtYnktdGFibGVcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZURhdGFUeXBlXCJdID0gXCJjaGFuZ2UtZGF0YS10eXBlXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJDaGFuZ2VQaXZvdFN0cmF0ZWd5XCJdID0gXCJjaGFuZ2UtcGl2b3Qtc3RyYXRlZ3lcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZURpc3BsYXlBbGlhc1wiXSA9IFwiY2hhbmdlLWRpc3BsYXktYWxpYXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNldEluY2x1ZGVTaGFyZWRNZW1iZXJzXCJdID0gXCJzZXQtaW5jbHVkZS1zaGFyZWQtbWVtYmVyc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0VXRpbGl0eURpbWVuc2lvblwiXSA9IFwic2V0LXV0aWxpdHktZGltZW5zaW9uXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTZXREZWZhdWx0SGllcmFyY2h5XCJdID0gXCJzZXQtZGVmYXVsdC1oaWVyYXJjaHlcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRhdGFTb3VyY2VTb3J0T3JkZXJcIl0gPSBcImRhdGEtc291cmNlLXNvcnQtb3JkZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyVXRpbGl0eURpbWVuc2lvblwiXSA9IFwiY2xlYXItdXRpbGl0eS1kaW1lbnNpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNsZWFyRGVmYXVsdFNvcnRcIl0gPSBcImNsZWFyLWRlZmF1bHQtc29ydFwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0RGVmYXVsdEFnZ3JlZ2F0aW9uXCJdID0gXCJzZXQtZGVmYXVsdC1hZ2dyZWdhdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU2V0RGVmYXVsdFZUQWdncmVnYXRpb25cIl0gPSBcInNldC1kZWZhdWx0LXZ0YWdncmVnYXRpb25cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkNoYW5nZUZpc2NhbFllYXJcIl0gPSBcImNoYW5nZS1maXNjYWwteWVhclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ2hhbmdlU2VtYW50aWNSb2xlXCJdID0gXCJjaGFuZ2Utc2VtYW50aWMtcm9sZVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQWRkVG9TaGVldFwiXSA9IFwiYWRkLXRvLXNoZWV0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJEcm9wU2NoZW1hU2VsT25TaGVsZlwiXSA9IFwiZHJvcC1zY2hlbWEtc2VsLW9uLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJBZGRUb1NjaGVtYUZpZWxkRm9sZGVyXCJdID0gXCJhZGQtdG8tc2NoZW1hLWZpZWxkLWZvbGRlclwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVtb3ZlRnJvbVNjaGVtYUZpZWxkRm9sZGVyXCJdID0gXCJyZW1vdmUtZnJvbS1zY2hlbWEtZmllbGQtZm9sZGVyXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW1vdmVTY2hlbWFGaWVsZEZvbGRlclwiXSA9IFwicmVtb3ZlLXNjaGVtYS1maWVsZC1mb2xkZXJcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIkRlZmF1bHRUZXh0Rm9ybWF0XCJdID0gXCJkZWZhdWx0LXRleHQtZm9ybWF0XCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJFZGl0U2NoZW1hQ2FwdGlvblwiXSA9IFwiZWRpdC1zY2hlbWEtY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVzZXRTY2hlbWFDYXB0aW9uXCJdID0gXCJyZXNldC1zY2hlbWEtY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQ3JlYXRlT3V0bGllclNldFwiXSA9IFwiY3JlYXRlLW91dGxpZXItc2V0XCI7XG59KShEb2NDb21tYW5kcyA9IGV4cG9ydHMuRG9jQ29tbWFuZHMgfHwgKGV4cG9ydHMuRG9jQ29tbWFuZHMgPSB7fSkpO1xudmFyIFVJQ29tbWFuZHM7XG4oZnVuY3Rpb24gKFVJQ29tbWFuZHMpIHtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQWJvdXRcIl0gPSBcImFib3V0XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkFkZERhdGFTZXJ2ZXJEYXRhU291cmNlVUlcIl0gPSBcImFkZC1kYXRhLXNlcnZlci1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlN3aXRjaFRvRG9jdW1lbnRBbmRBZGREYXRhU2VydmVyRGF0YVNvdXJjZVVJXCJdID0gXCJzd2l0Y2gtdG8tZG9jdW1lbnQtYW5kLWFkZC1kYXRhLXNlcnZlci1kcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBZGREcmlsbFBhdGhVSVwiXSA9IFwiYWRkLWRyaWxscGF0aC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBZGRGaWVsZEZvbGRlclVJXCJdID0gXCJhZGQtZmllbGQtZm9sZGVyLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkFkZEZpbGVUb0V4dHJhY3RVSVwiXSA9IFwiYWRkLWZpbGUtdG8tZXh0cmFjdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBZGREYXRhU291cmNlVG9FeHRyYWN0VUlcIl0gPSBcImFkZC1kYXRhLXNvdXJjZS10by1leHRyYWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkFkZFFDVG9TaGVldFVJXCJdID0gXCJhZGQtcWMtdG8tc2hlZXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQWRkUmVmZXJlbmNlTGluZVVJXCJdID0gXCJhZGQtcmVmZXJlbmNlLWxpbmUtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQWRkU2NoZW1hRmllbGRGb2xkZXJVSVwiXSA9IFwiYWRkLXRvLXNjaGVtYS1maWVsZC1mb2xkZXItdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQWRkVGFibGVhdVNlcnZlckRTQ29ubmVjdGlvblVJXCJdID0gXCJhZGQtdGFibGVhdS1zZXJ2ZXItZHMtY29ubmVjdGlvbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBZGRUb1NjaGVtYURyaWxsUGF0aFVJXCJdID0gXCJhZGQtdG8tc2NoZW1hLWRyaWxscGF0aC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBZGRUb1NoZWV0VUlcIl0gPSBcImFkZC10by1zaGVldC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBbm5vdGF0ZVVJXCJdID0gXCJhbm5vdGF0ZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBcHBlbmREYXRhU291cmNlVG9SZW1vdGVFeHRyYWN0VUlcIl0gPSBcImFwcGVuZC1kYXRhLXNvdXJjZS10by1yZW1vdGUtZXh0cmFjdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBdHRlbXB0Q29ubmVjdERhdGFTb3VyY2VzT25TaGVldFVJXCJdID0gXCJhdHRlbXB0LWNvbm5lY3QtZGF0YXNvdXJjZXMtb24tc2hlZXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQXR0ZW1wdERhdGFTb3VyY2VDb25uZWN0aW9uVUlcIl0gPSBcImF0dGVtcHQtZGF0YXNvdXJjZS1jb25uZWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkF1dG9IaWRlU2hlZXRcIl0gPSBcImF1dG8taGlkZS1zaGVldFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJBdXRvbWF0aW9uQ2xpY2tNUlVJdGVtXCJdID0gXCJjbGljay1tcnUtaXRlbVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDYWxjdWxhdGVkTWVtYmVyc1VJXCJdID0gXCJjYWxjdWxhdGVkLW1lbWJlcnMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2hhbmdlQWdncmVnYXRpb25VSVwiXSA9IFwiY2hhbmdlLWFnZ3JlZ2F0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNoYW5nZURhdGFTZXJ2ZXJMb2dvblVJXCJdID0gXCJjaGFuZ2UtZGF0YS1zZXJ2ZXItbG9nb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2hhbmdlRXNzYmFzZUFsaWFzRmlsZVwiXSA9IFwiY2hhbmdlLWVzc2Jhc2UtYWxpYXMtZmlsZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDaGFuZ2VGaWVsZFR5cGVVSVwiXSA9IFwiY2hhbmdlLWZpZWxkLXR5cGUtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2hhbmdlVGFiQ29sb3JTaGVldFwiXSA9IFwiY2hhbmdlLXRhYi1jb2xvci1zaGVldFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDaGVja0ZvclByb2R1Y3RVcGRhdGVzXCJdID0gXCJjaGVjay1mb3ItcHJvZHVjdC11cGRhdGVzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNsZWFyRGFzaGJvYXJkVUlcIl0gPSBcImNsZWFyLWRhc2hib2FyZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDbGVhclNoZWV0VUlcIl0gPSBcImNsZWFyLXNoZWV0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNsZWFyU3RvcnlVSVwiXSA9IFwiY2xlYXItc3RvcnktdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2xlYXJWaXpVSVwiXSA9IFwiY2xlYXItdml6LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNsb3NlQ2FsY3VsYXRpb25VSVwiXSA9IFwiY2xvc2UtY2FsY3VsYXRpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2xvc2VEYXRhU291cmNlVUlcIl0gPSBcImNsb3NlLWRhdGFzb3VyY2UtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ2xvc2VXb3JrYm9va1wiXSA9IFwiY2xvc2Utd29ya2Jvb2tcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29sb3JMZWdlbmRFZGl0VUlcIl0gPSBcImNvbG9yLWxlZ2VuZC1lZGl0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbW1pdFBpbGxFZGl0VUlcIl0gPSBcImNvbW1pdC1waWxsLWVkaXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdERhdGFTb3VyY2VVSVwiXSA9IFwiY29ubmVjdC1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3RSZXByb21wdFVJXCJdID0gXCJjb25uZWN0LXJlcHJvbXB0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3RWYXJpYWJsZVByb21wdFVJXCJdID0gXCJjb25uZWN0LXZhcmlhYmxlLXByb21wdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0VmFyaWFibGVQcm9tcHRNYXRjaGluZ1VJXCJdID0gXCJjb25uZWN0LXZhcmlhYmxlLXByb21wdC1tYXRjaGluZy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uQWRkTmV3Q3VzdG9tU1FMVUlcIl0gPSBcImNvbm5lY3Rpb24tYWRkLW5ldy1jdXN0b20tc3FsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25BZGROZXdUYWJsZVVJXCJdID0gXCJjb25uZWN0aW9uLWFkZC1uZXctdGFibGUtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvbkRhdGFHcmlkQ29weVVJXCJdID0gXCJjb25uZWN0aW9uLWRhdGEtZ3JpZC1jb3B5LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25FZGl0Q3VzdG9tU1FMVUlcIl0gPSBcImNvbm5lY3Rpb24tY3VzdG9tLXNxbC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uRWRpdEV4dHJhY3RVSVwiXSA9IFwiY29ubmVjdGlvbi1leHRyYWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25FZGl0REJWYXJpYWJsZXNVSVwiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWRiLXZhcmlhYmxlcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uRWRpdENvbm5lY3Rpb25VSVwiXSA9IFwiY29ubmVjdGlvbi1lZGl0LWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvbkZpbmFsaXplRGF0YVNvdXJjZVVJXCJdID0gXCJjb25uZWN0aW9uLWZpbmFsaXplLWRhdGFzb3VyY2UtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvbkZpbmFsaXplRXh0cmFjdFN0YXRlc1VJXCJdID0gXCJjb25uZWN0aW9uLWZpbmFsaXplLWV4dHJhY3Qtc3RhdGVzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25HZXRUeXBlR3JvdXBQcmVzTW9kZWxVSVwiXSA9IFwiY29ubmVjdGlvbi1nZXQtdHlwZS1ncm91cC1wcmVzLW1vZGVsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25HZXRTYXZlZERhdGFTb3VyY2VzUHJlc01vZGVsVUlcIl0gPSBcImNvbm5lY3Rpb24tZ2V0LXNhdmVkLWRzLXByZXMtbW9kZWwtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvblBhcnRpdGlvbmluZ0ZhaWx1cmVVSVwiXSA9IFwiY29ubmVjdGlvbi1wYXJ0aXRpb25pbmctZmFpbHVyZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uUmVwbGFjZVRhYmxlVUlcIl0gPSBcImNvbm5lY3Rpb24tcmVwbGFjZS10YWJsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VhcmNoQ2F0YWxvZ1VJXCJdID0gXCJjb25uZWN0aW9uLXNlYXJjaC1jYXRhbG9nLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25TZWFyY2hDdWJlVUlcIl0gPSBcImNvbm5lY3Rpb24tc2VhcmNoLWN1YmUtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvblNlbGVjdENhdGFsb2dVSVwiXSA9IFwiY29ubmVjdGlvbi1zZWxlY3QtY2F0YWxvZy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VsZWN0Q3ViZVVJXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1jdWJlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25TZWxlY3REYXRhYmFzZVVJXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1kYXRhYmFzZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uU2VsZWN0U3RhbmRhcmRDb25uZWN0aW9uVUlcIl0gPSBcImNvbm5lY3Rpb24tc2VsZWN0LXN0YW5kYXJkLWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvblNlbGVjdFN0b3JlZFByb2NlZHVyZVVJXCJdID0gXCJjb25uZWN0aW9uLXNlbGVjdC1zdG9yZWQtcHJvY2VkdXJlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25TaG93RWRpdFRhYmxlRGlhbG9nVUlcIl0gPSBcImNvbm5lY3Rpb24tc2hvdy1lZGl0LXRhYmxlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25TaG93UGl2b3REaWFsb2dVSVwiXSA9IFwiY29ubmVjaXRvbi1zaG93LXBpdm90LWRpYWxvZy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb25uZWN0aW9uU29ydENhdGFsb2dVSVwiXSA9IFwiY29ubmVjdGlvbi1zb3J0LWNhdGFsb2ctdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvblNvcnRDdWJlVUlcIl0gPSBcImNvbm5lY3Rpb24tc29ydC1jdWJlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25WYWxpZGF0ZUN1c3RvbVNRTFVJXCJdID0gXCJjb25uZWN0aW9uLXZhbGlkYXRlLWN1c3RvbS1zcWwtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdFRvQ2xvdWRGaWxlXCJdID0gXCJjb25uZWN0LXRvLWNsb3VkLWZpbGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZVVJXCJdID0gXCJjb25uZWN0LWRhdGEtc2VydmVyLWRhdGFzb3VyY2UtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdGlvbkNvbnZlcnRUb1NRTFVJXCJdID0gXCJjb25uZWN0aW9uLWNvbnZlcnQtdG8tc3FsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvbm5lY3Rpb25SZW5hbWVDb25uZWN0aW9uVUlcIl0gPSBcImNvbm5lY3Rpb24tcmVuYW1lLWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhwb3J0VW5kZXJseWluZ0RhdGFUb0NTVlVJXCJdID0gXCJleHBvcnQtdG8tY3N2LXdpdGgtcHJvZ3Jlc3MtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29ubmVjdE9EQkNVSVwiXSA9IFwiY29ubmVjdC1vZGJjLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvcHlDcm9zc3RhYlwiXSA9IFwiY29weS1jcm9zc3RhYlwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb3B5RGF0YVwiXSA9IFwiY29weS1kYXRhXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvcHlEcmlsbFBhdGhGaWVsZHNVSVwiXSA9IFwiY29weS1kcmlsbC1wYXRoLWZpZWxkcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb3B5RmllbGRzRGVmblVJXCJdID0gXCJjb3B5LWZpZWxkcy1kZWZuLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvcHlJbWFnZVwiXSA9IFwiY29weS1pbWFnZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDb3B5SW1hZ2VEYXNoYm9hcmRcIl0gPSBcImNvcHktaW1hZ2UtZGFzaGJvYXJkXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNvcHlJbWFnZVdvcmtzaGVldFwiXSA9IFwiY29weS1pbWFnZS13b3Jrc2hlZXRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29weUltYWdlU3RvcnlcIl0gPSBcImNvcHktaW1hZ2Utc3RvcnlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ29weVdvcmtzaGVldEZvcm1hdHRpbmdcIl0gPSBcImNvcHktZm9ybWF0dGluZ1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVDYWxjdWxhdGVkU2V0VUlcIl0gPSBcImNyZWF0ZS1jYWxjdWxhdGVkLXNldC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVDYWxjdWxhdGlvblVJXCJdID0gXCJjcmVhdGUtY2FsY3VsYXRpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ3JlYXRlQ29tYmluZWRGaWVsZFVJXCJdID0gXCJjcmVhdGUtY29tYmluZWQtZmllbGQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ3JlYXRlQ29ubmVjdGlvblVJXCJdID0gXCJjcmVhdGUtY29ubmVjdGlvbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVEYXRlQmluVUlcIl0gPSBcImNyZWF0ZS1EYXRlLWJpbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVHcm91cFNlbGVjdGlvblVJXCJdID0gXCJjcmVhdGUtZ3JvdXAtc2VsZWN0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNyZWF0ZUdyb3VwVUlcIl0gPSBcImNyZWF0ZS1ncm91cC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVJZGVudGl0eVNldFwiXSA9IFwiY3JlYXRlLXVzZXItZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkNyZWF0ZUxlYWZDb25uZWN0aW9uVUlcIl0gPSBcImNyZWF0ZS1sZWFmLWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ3JlYXRlTnVtZXJpY0JpbnNVSVwiXSA9IFwiY3JlYXRlLW51bWVyaWMtYmlucy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDcmVhdGVTZXRVSVwiXSA9IFwiY3JlYXRlLXNldC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDdXN0b21EYXRlQWdncmVnYXRpb25VSVwiXSA9IFwiY3VzdG9tLWRhdGUtYWdncmVnYXRpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiQ3V0RHJpbGxQYXRoRmllbGRzVUlcIl0gPSBcImN1dC1kcmlsbC1wYXRoLWZpZWxkcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJDdXRGaWVsZHNEZWZuVUlcIl0gPSBcImN1dC1maWVsZHMtZGVmbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZWFjdGl2YXRlRGFzaGJvYXJkXCJdID0gXCJkZWFjdGl2YXRlLWRhc2hib2FyZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZWxldGVDb29raWVzXCJdID0gXCJkZWxldGUtY29va2llc1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZWxldGVGaWVsZHNVSVwiXSA9IFwiZGVsZXRlLWZpZWxkcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZWxldGVTaGVldFVJXCJdID0gXCJkZWxldGUtc2hlZXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRGVzY3JpYmVBZGhvY0NsdXN0ZXJVSVwiXSA9IFwiZGVzY3JpYmUtYWRob2MtY2x1c3Rlci11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZXNjcmliZURyaWxsUGF0aFVJXCJdID0gXCJkZXNjcmliZS1kcmlsbHBhdGgtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRGVzY3JpYmVGaWVsZFVJXCJdID0gXCJkZXNjcmliZS1maWVsZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEZXNjcmliZUZvcmVjYXN0VUlcIl0gPSBcImRlc2NyaWJlLWZvcmVjYXN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkRlc2NyaWJlU2NoZW1hRHJpbGxQYXRoVUlcIl0gPSBcImRlc2NyaWJlLXNjaGVtYS1kcmlsbHBhdGgtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRGVzY3JpYmVUcmVuZExpbmVcIl0gPSBcImRlc2NyaWJlLXRyZW5kLWxpbmVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRGVzY3JpYmVUcmVuZE1vZGVsXCJdID0gXCJkZXNjcmliZS10cmVuZC1tb2RlbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJPcGVuRGlzY292ZXJQYW5lTGlua3NcIl0gPSBcIm9wZW4tZGlzY292ZXItcGFuZS1saW5rc1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEaXNtaXNzR29Ub1dvcmtzaGVldFRvb2x0aXBVSVwiXSA9IFwiZGlzbWlzcy1nby10by13b3Jrc2hlZXQtdG9vbHRpcC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEb3dubG9hZENvcHlEYXRhU291cmNlXCJdID0gXCJkb3dubG9hZC1jb3B5LWRhdGEtc291cmNlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkRyaWxsZG93blVJXCJdID0gXCJkcmlsbGRvd24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRHJvcFNjaGVtYVNlbE9uU2hlbGZVSVwiXSA9IFwiZHJvcC1zY2hlbWEtc2VsLW9uLXNoZWxmLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkRyb3BVSVwiXSA9IFwiZHJvcC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJEdXBsaWNhdGVEYXRhU291cmNlVUlcIl0gPSBcImR1cGxpY2F0ZS1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkR1cGxpY2F0ZVNoZWV0QXNDcm9zc3RhYlwiXSA9IFwiZHVwbGljYXRlLXNoZWV0LWFzLWNyb3NzdGFiXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkR1cGxpY2F0ZVNoZWV0T3JDcm9zc3RhYlVJXCJdID0gXCJkdXBsaWNhdGUtc2hlZXQtb3ItY3Jvc3N0YWItdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRHVwbGljYXRlU2hlZXRVSVwiXSA9IFwiZHVwbGljYXRlLXNoZWV0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRBbGlhc2VzVUlcIl0gPSBcImVkaXQtYWxpYXNlcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0QW5ub3RhdGlvblwiXSA9IFwiZWRpdC1hbm5vdGF0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRBeGlzVUlcIl0gPSBcImVkaXQtYXhpcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0Q2FsY3VsYXRlZFNldFVJXCJdID0gXCJlZGl0LWNhbGN1bGF0ZWQtc2V0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRDYWxjdWxhdGlvblVJXCJdID0gXCJlZGl0LWNhbGN1bGF0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRDYXB0aW9uVUlcIl0gPSBcImVkaXQtY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0Q29tYmluZWRGaWVsZFVJXCJdID0gXCJlZGl0LWNvbWJpbmVkLWZpZWxkXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRDb3B5RmllbGRVSVwiXSA9IFwiZWRpdC1jb3B5LWZpZWxkLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREYXRhU291cmNlVUlcIl0gPSBcImVkaXQtZGF0YXNvdXJjZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0RGF0YVNvdXJjZUZpZWxkQWxpYXNlc1wiXSA9IFwiZWRpdC1kYXRhc291cmNlLWZpZWxkLWFsaWFzZXNcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdERhdGFTb3VyY2VGaWx0ZXJzVUlcIl0gPSBcImVkaXQtZGF0YXNvdXJjZS1maWx0ZXJzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREYXRhU291cmNlU2l0ZVBhdGhzVUlcIl0gPSBcImVkaXQtZGF0YXNvdXJjZS1zaXRlLXBhdGhzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREYXRlQmluVUlcIl0gPSBcImVkaXQtZGF0ZS1iaW4tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdERlZmF1bHRTb3J0VUlcIl0gPSBcImVkaXQtZGVmYXVsdC1zb3J0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREcm9wTGluZXNVSVwiXSA9IFwiZWRpdC1kcm9wLWxpbmVzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREcm9wRmllbGRVSVwiXSA9IFwiZWRpdC1kcm9wLWZpZWxkLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXREYXRhU291cmNlUmVsYXRpb25zaGlwc1VJXCJdID0gXCJlZGl0LWRhdGFzb3VyY2UtcmVsYXRpb25zaGlwcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0RW51bWVyYXRlZFNldFVJXCJdID0gXCJlZGl0LWVudW1lcmF0ZWQtc2V0XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRGaWx0ZXJRdWlja0ZpbHRlclwiXSA9IFwiZWRpdC1maWx0ZXItcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRGaWx0ZXJVSVwiXSA9IFwiZWRpdC1maWx0ZXItdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdEZvcmVjYXN0VUlcIl0gPSBcImVkaXQtZm9yZWNhc3QtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdEdyb3VwVUlcIl0gPSBcImVkaXQtZ3JvdXAtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdEdyb3VwVmFsdWVcIl0gPSBcImVkaXQtZ3JvdXAtdmFsdWVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdEdyb3VwVmFsdWVMYWJlbFwiXSA9IFwiZWRpdC1ncm91cC12YWx1ZS1sYWJlbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0TGVnZW5kR3JvdXBWYWx1ZVVJXCJdID0gXCJlZGl0LWdyb3VwLXZhbHVlLWxlZ2VuZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0SW1hZ2VVSVwiXSA9IFwiZWRpdC1pbWFnZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0TGVnZW5kTWVtYmVyQWxpYXNVSVwiXSA9IFwiZWRpdC1sZWdlbmQtbWVtYmVyLWFsaWFzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRMZWdlbmRUaXRsZVVJXCJdID0gXCJlZGl0LWxlZ2VuZC10aXRsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0TWFya0NvbG9yVUlcIl0gPSBcImVkaXQtbWFyay1jb2xvci11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0TWFya1NoYXBlVUlcIl0gPSBcImVkaXQtbWFyay1zaGFwZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0TWVtYmVyQWxpYXNcIl0gPSBcImVkaXQtbWVtYmVyLWFsaWFzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRNZW1iZXJBbGlhc0xhYmVsXCJdID0gXCJlZGl0LW1lbWJlci1hbGlhcy1sYWJlbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0UGFnZVRpdGxlVUlcIl0gPSBcImVkaXQtcGFnZS10aXRsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0UGFyYW1ldGVyQ3RybFRpdGxlXCJdID0gXCJlZGl0LXBhcmFtLWNvbnRyb2wtdGl0bGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdFBkZlBhZ2VTZWxlY3Rpb25VSVwiXSA9IFwiZWRpdC1wZGYtcGFnZS1zZWxlY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdFByaW1hcnlBbGlhc2VzVUlcIl0gPSBcImVkaXQtcHJpbWFyeS1hbGlhc2VzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRSZWZlcmVuY2VMaW5lXCJdID0gXCJlZGl0LXJlZmVyZW5jZS1saW5lXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRTY2hlbWFDYWxjdWxhdGlvblVJXCJdID0gXCJlZGl0LXNjaGVtYS1jYWxjdWxhdGlvbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0U2NoZW1hQ2FsY3VsYXRpb25SYW5nZVVJXCJdID0gXCJlZGl0LXNjaGVtYS1jYWxjdWxhdGlvbi1yYW5nZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0U2NoZW1hQ2FwdGlvblVJXCJdID0gXCJlZGl0LXNjaGVtYS1jYXB0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRTY2hlbWFGaWVsZEFsaWFzVUlcIl0gPSBcImVkaXQtc2NoZW1hLWZpZWxkLWFsaWFzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlc2V0U2NoZW1hQ2FwdGlvblVJXCJdID0gXCJyZXNldC1zY2hlbWEtZmllbGQtYWxpYXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRNdWx0aXBsZVNjaGVtYUNhcHRpb25zVUlcIl0gPSBcInJlc2V0LW11bHRpcGxlLXNjaGVtYS1maWVsZC1hbGlhcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0U2NoZW1hTnVtZXJpY0JpbnNVSVwiXSA9IFwiZWRpdC1zY2hlbWEtbnVtZXJpYy1iaW5zLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRTZXRVSVwiXSA9IFwiZWRpdC1zZXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdFRpdGxlUXVpY2tGaWx0ZXJcIl0gPSBcImVkaXQtdGl0bGUtcXVpY2stZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRUaXRsZVVJXCJdID0gXCJlZGl0LXRpdGxlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRUb29sdGlwVUlcIl0gPSBcImVkaXQtdG9vbHRpcFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFZGl0VHJlbmRMaW5lc1VJXCJdID0gXCJlZGl0LXRyZW5kLWxpbmVzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRVc2VyRGVzY3JpcHRpb25VSVwiXSA9IFwiZWRpdC11c2VyLWRlc2NyaXB0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRXTVNNYXBUaWxlU2VydmVyXCJdID0gXCJlZGl0LXdtcy1tYXAtdGlsZS1zZXJ2ZXJcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRWRpdFpvbmVQYXJhbVwiXSA9IFwiZWRpdC16b25lLXBhcmFtXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVkaXRab25lVXJsXCJdID0gXCJlZGl0LXpvbmUtdXJsXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkVzdGFibGlzaENvbm5lY3Rpb25VSVwiXSA9IFwiZXN0YWJsaXNoLWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXN0YWJsaXNoVGFibGVhdVNlcnZlckNvbm5lY3Rpb25VSVwiXSA9IFwiZXN0YWJsaXNoLXRhYmxlYXUtc2VydmVyLWNvbm5lY3Rpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhlY3V0ZVVJQXV0b21hdGlvbkJ1dHRvblwiXSA9IFwiZXhlY3V0ZS11aS1idXR0b24tYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25Db21ib0JveFwiXSA9IFwiZXhlY3V0ZS11aS1jb21iby1ib3gtYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25HZW5lcmljV2lkZ2V0XCJdID0gXCJleGVjdXRlLXVpLWdlbmVyaWMtd2lkZ2V0LWFjdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeGVjdXRlVUlBdXRvbWF0aW9uTGFiZWxcIl0gPSBcImV4ZWN1dGUtdWktbGFiZWwtYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25NZW51XCJdID0gXCJleGVjdXRlLXVpLW1lbnUtYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25JdGVtVmlld1wiXSA9IFwiZXhlY3V0ZS11aS1pdGVtLXZpZXctYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25UZXh0Qm94XCJdID0gXCJleGVjdXRlLXVpLXRleHQtYm94LWFjdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeGVjdXRlVUlBdXRvbWF0aW9uVG9nZ2xlQnV0dG9uXCJdID0gXCJleGVjdXRlLXVpLXRvZ2dsZS1idXR0b24tYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25TbGlkZXJcIl0gPSBcImV4ZWN1dGUtdWktc2xpZGVyLWFjdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeGVjdXRlVUlBdXRvbWF0aW9uV2luZG93XCJdID0gXCJleGVjdXRlLXVpLXdpbmRvdy1hY3Rpb25cIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhlY3V0ZVVJQXV0b21hdGlvbldlYlZpZXdcIl0gPSBcImV4ZWN1dGUtdWktd2ViLXZpZXctYWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkV4ZWN1dGVVSUF1dG9tYXRpb25UYWJcIl0gPSBcImV4ZWN1dGUtdWktdGFiLWFjdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeGVjdXRlVUlBdXRvbWF0aW9uVGV4dEJyb3dzZXJcIl0gPSBcImV4ZWN1dGUtdWktdGV4dC1icm93c2VyLWFjdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeGl0QXBwbGljYXRpb25cIl0gPSBcImV4aXQtYXBwbGljYXRpb25cIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhwb3J0RGF0YVwiXSA9IFwiZXhwb3J0LWRhdGFcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhwb3J0RGF0YVNvdXJjZVVJXCJdID0gXCJleHBvcnQtZGF0YXNvdXJjZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeHBvcnRQYWNrYWdlZFdvcmtib29rXCJdID0gXCJleHBvcnQtcGFja2FnZWRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXhwb3J0V29ya2Jvb2tTaGVldHNVSVwiXSA9IFwiZXhwb3J0LXdvcmtib29rLXNoZWV0cy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeHRTdmNDb25maWdVSVwiXSA9IFwiZXh0LXN2Yy1jb25maWctdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXh0cmFjdEhpc3RvcnlcIl0gPSBcImV4dHJhY3QtaGlzdG9yeVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJFeHRyYWN0UHJvcGVydGllc1VJXCJdID0gXCJleHRyYWN0LXByb3BlcnRpZXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRXh0cmFjdFVJXCJdID0gXCJleHRyYWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZpbHRlckZpZWxkTGFiZWxVSVwiXSA9IFwiZmlsdGVyLWZpZWxkLWxhYmVsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZvcm1hdEFubm90YXRpb25cIl0gPSBcImZvcm1hdC1hbm5vdGF0aW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZvcm1hdEF4aXNVSVwiXSA9IFwiZm9ybWF0LWF4aXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRm9ybWF0Q2FwdGlvblRpdGxlVUlcIl0gPSBcImZvcm1hdC1jYXB0aW9uLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZvcm1hdEZpZWxkXCJdID0gXCJmb3JtYXQtcGFuZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJGb3JtYXRGaWVsZExhYmVsVUlcIl0gPSBcImZvcm1hdC1maWVsZC1sYWJlbC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJGb3JtYXRMYWJlbFwiXSA9IFwiZm9ybWF0LWxhYmVsXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZvcm1hdExlZ2VuZHNVSVwiXSA9IFwiZm9ybWF0LWxlZ2VuZHMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRm9ybWF0UmVmZXJlbmNlTGluZVwiXSA9IFwiZm9ybWF0LXJlZmVyZW5jZS1saW5lXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkZvcm1hdFVJXCJdID0gXCJmb3JtYXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiRnVsbFNjcmVlblwiXSA9IFwiZnVsbHNjcmVlblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXREYXNoYm9hcmRTaWRlUGFuZU1vZGVcIl0gPSBcImdldC1kYXNoYm9hcmQtc2lkZXBhbmUtbW9kZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXREZWJ1Z2dpbmdJbmZvXCJdID0gXCJnZXQtZGVidWdnaW5nLWluZm9cIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0SWNvblBhdGhGb3JFbmNvZGluZ1R5cGVcIl0gPSBcImdldC1pY29uLXBhdGgtZm9yLWVuY29kaW5nLXR5cGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0SWNvblBhdGhGb3JQcmltaXRpdmVUeXBlXCJdID0gXCJnZXQtaWNvbi1wYXRoLWZvci1wcmltaXRpdmUtdHlwZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRUYWJsZU9wdGlvbnNQcmVzTW9kZWxcIl0gPSBcImdldC10YWJsZS1vcHRpb25zLXByZXMtbW9kZWxcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0V2luZG93TmFtZVVJXCJdID0gXCJnZXQtd2luZG93LW5hbWVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0V29ya3NoZWV0U2lkZVBhbmVNb2RlXCJdID0gXCJnZXQtd29ya3NoZWV0LXNpZGVwYW5lLW1vZGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0SGlkZGVuU2hlZXRzXCJdID0gXCJnZXQtaGlkZGVuLXNoZWV0c1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRPcGVuUGFuZU1SVXNcIl0gPSBcImdldC1vcGVuLXBhbmUtbXJ1c1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRPcGVuUGFuZVNhbXBsZVdvcmtib29rc1wiXSA9IFwiZ2V0LW9wZW4tcGFuZS1zYW1wbGUtd29ya2Jvb2tzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkdldFJldGFyZ2V0RGF0YVNvdXJjZVByZXNNb2RlbFVJXCJdID0gXCJnZXQtcmV0YXJnZXQtZGF0YXNvdXJjZS1wcmVzLW1vZGVsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkdldFNjaGVtYVZpZXdlclByZXNNb2RlbFwiXSA9IFwiZ2V0LXNjaGVtYS12aWV3ZXItcHJlcy1tb2RlbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRTZWxlY3RlZFNoZWV0c1wiXSA9IFwiZ2V0LXNlbGVjdGVkLXNoZWV0c1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRTaGVldFNvcnRlclRodW1ibmFpbFwiXSA9IFwiZ2V0LXNoZWV0LXNvcnRlci10aHVtYm5haWxcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0U2hlZXRUYWJVSVRodW1ibmFpbFwiXSA9IFwiZ2V0LXNoZWV0LXRhYi11aS10aHVtYm5haWxcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiR2V0U2hlZXRUYWJVSVRleHRcIl0gPSBcImdldC1zaGVldC10YWItdWktdGV4dFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJHZXRWaXNpYmxlVHJlZUl0ZW1zXCJdID0gXCJnZXQtdmlzaWJsZS10cmVlLWl0ZW1zXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkdvdG9TaGVldFJhbmdlXCJdID0gXCJnb3RvXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkdvdG9VUkxcIl0gPSBcImdvdG8tdXJsXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkhpZGVDYXB0aW9uVUlcIl0gPSBcImhpZGUtY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJIaWRlRmlsbXN0cmlwVUlcIl0gPSBcImhpZGUtZmlsbXN0cmlwLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkhpZGVUaXRsZVVJXCJdID0gXCJoaWRlLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkhpZGVab25lVUlcIl0gPSBcImhpZGUtem9uZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJIaWRlQWxsU2hlZXRzVUlcIl0gPSBcImhpZGUtYWxsLXNoZWV0cy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJVbmhpZGVBbGxTaGVldHNVSVwiXSA9IFwidW5oaWRlLWFsbC1zaGVldHMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiSW1wb3J0TG9jYWxEYXRhVUlcIl0gPSBcImltcG9ydC1sb2NhbC1kYXRhLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkltcG9ydE1hcFNvdXJjZVwiXSA9IFwiaW1wb3J0LW1hcC1zb3VyY2VcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiSW1wb3J0TWFwU291cmNlVUlcIl0gPSBcImltcG9ydC1tYXAtc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkltcG9ydFdvcmtib29rVUlcIl0gPSBcImltcG9ydC13b3JrYm9vay11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJMb2FkRGVmYXVsdEZvcm1hdHRpbmdVSVwiXSA9IFwibG9hZC1mb3JtYXR0aW5nLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIkxvY2F0ZUZpZWxkVUlcIl0gPSBcImxvY2F0ZS1maWVsZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJMb2dNZW1vcnlVc2FnZVwiXSA9IFwibG9nLW1lbW9yeS11c2FnZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJNYW5hZ2VMaWNlbnNpbmdcIl0gPSBcIm1hbmFnZS1saWNlbnNpbmdcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiTWFuYWdlTWFwYm94XCJdID0gXCJtYW5hZ2UtbWFwYm94XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk1hbmFnZVB1YmxpY1dvcmtib29rc1wiXSA9IFwibWFuYWdlLXB1YmxpY1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJNYW5hZ2VNYXBTZXJ2aWNlc1wiXSA9IFwibWFuYWdlLW1hcC1zZXJ2aWNlc1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJNYXBMYXllcnNVSVwiXSA9IFwibWFwLWxheWVycy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJNYW5hZ2VXTVNcIl0gPSBcIm1hbmFnZS13bXNcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVXBncmFkZURhdGFTb3VyY2VzVUlcIl0gPSBcInVwZ3JhZGUtZGF0YXNvdXJjZXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVXBncmFkZURhdGFTb3VyY2VVSVwiXSA9IFwidXBncmFkZS1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk1vdmVSZXBvc2l0b3J5XCJdID0gXCJtb3ZlLXJlcG9zaXRvcnlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiTmV3U2NoZW1hRHJpbGxQYXRoVUlcIl0gPSBcIm5ldy1zY2hlbWEtZHJpbGwtcGF0aC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJOZXdVSURhc2hib2FyZFwiXSA9IFwibmV3LWRhc2hib2FyZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJOZXdVSVdvcmtzaGVldFwiXSA9IFwibmV3LXdvcmtzaGVldC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJOZXdVSVN0b3J5Ym9hcmRcIl0gPSBcIm5ldy1zdG9yeWJvYXJkLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk5ld1dvcmtib29rXCJdID0gXCJuZXctd29ya2Jvb2tcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiTmV4dFNoZWV0XCJdID0gXCJuZXh0LXNoZWV0XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk5vblJhbmdlZEVkaXRSZWZlcmVuY2VMaW5lXCJdID0gXCJub24tcmFuZ2VkLWVkaXQtcmVmZXJlbmNlLWxpbmVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiT3BlbkJvb2ttYXJrXCJdID0gXCJvcGVuLWJvb2ttYXJrXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk9wZW5Gcm9tV29ya2dyb3VwXCJdID0gXCJvcGVuLXdvcmtib29rLWZyb20td29ya2dyb3VwXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk9wZW5NYXBTb3VyY2VcIl0gPSBcIm9wZW4tbWFwLXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJPcGVuTWFwU291cmNlVUlcIl0gPSBcIm9wZW4tbWFwLXNvdXJjZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJPcGVuU2FtcGxlV29ya2Jvb2tcIl0gPSBcIm9wZW4tc2FtcGxlLXdvcmtib29rXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk9wZW5Xb3JrYm9va1wiXSA9IFwib3Blbi13b3JrYm9va1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJPcGVuUmVjZW50V29ya2Jvb2tcIl0gPSBcIm9wZW4tcmVjZW50LXdvcmtib29rXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk9wZW5PdGhlckZpbGVzXCJdID0gXCJvcGVuLW90aGVyLWZpbGVzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIk9wdGltaXplRXh0cmFjdFVJXCJdID0gXCJvcHRpbWl6ZS1leHRyYWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlBhZ2VTZXR1cFwiXSA9IFwicGFnZS1zZXR1cFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQYXN0ZVwiXSA9IFwicGFzdGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUGFzdGVGaWVsZHNEZWZuVUlcIl0gPSBcInBhc3RlLWZpZWxkcy1kZWZuLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlBhc3RlV29ya3NoZWV0Rm9ybWF0dGluZ1wiXSA9IFwicGFzdGUtZm9ybWF0dGluZ1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQREZFeHBvcnRcIl0gPSBcImV4cG9ydC1wZGZcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUGVyc3BlY3RpdmVzVUlcIl0gPSBcInBlcnNwZWN0aXZlcy11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQcmVzZW50YXRpb25Nb2RlXCJdID0gXCJwcmVzZW50YXRpb24tbW9kZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQcmludFwiXSA9IFwicHJpbnRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUHJvbXB0U2NyaXB0XCJdID0gXCJwcm9tcHQtY29tbWFuZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQcm9wZXJ0aWVzRGF0YVNvdXJjZVVJXCJdID0gXCJwcm9wZXJ0aWVzLWRhdGFzb3VyY2UtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cFwiXSA9IFwicHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQdWJsaXNoRGF0YXNvdXJjZVRvV29ya2dyb3VwRnJvbURhdGFcIl0gPSBcInB1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtZnJvbS1kYXRhXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlB1Ymxpc2hEYXRhc291cmNlVG9Xb3JrZ3JvdXBSYW5nZVwiXSA9IFwicHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1yYW5nZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJQdWJsaXNoV29ya2Jvb2tUb1dvcmtncm91cFwiXSA9IFwicHVibGlzaC13b3JrYm9vay10by13b3JrZ3JvdXBcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUHVibGlzaERhdGFzb3VyY2VUb1dvcmtncm91cEZyb21Xb3JrYm9va0RhdGFcIl0gPSBcInB1Ymxpc2gtZGF0YXNvdXJjZS10by13b3JrZ3JvdXAtZnJvbS13b3JrYm9vay1kYXRhXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlByb21wdEZvckRhdGFTb3VyY2VGaWxlVUlcIl0gPSBcInByb21wdC1mb3ItZGF0YXNvdXJjZS1maWxlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlByb21wdFVua25vd25XRENVcmxVSVwiXSA9IFwicHJvbXB0LXVua25vd24td2RjLXVybC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJRdWVyeURhdGFTb3VyY2VVSVwiXSA9IFwicXVlcnktZGF0YXNvdXJjZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJRdWlja0ZpbHRlckZpZWxkTGFiZWxVSVwiXSA9IFwicXVpY2stZmlsdGVyLWZpZWxkLWxhYmVsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlF1aWNrVGFibGVDYWxjVUlcIl0gPSBcInF1aWNrLXRhYmxlLWNhbGMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVjb25uZWN0TWFwU291cmNlVUlcIl0gPSBcInJlY29ubmVjdC1tYXAtc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlY29yZFBlcmZvcm1hbmNlXCJdID0gXCJyZWNvcmQtcGVyZlwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZWZyZXNoQWxsRXh0cmFjdHNVSVwiXSA9IFwicmVmcmVzaC1hbGwtZXh0cmFjdHMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVmcmVzaEFsbFRodW1ibmFpbHNVSVwiXSA9IFwicmVmcmVzaC1hbGwtdGh1bWJuYWlsc1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZWZyZXNoQXV0b0V4dHJhY3RVSVwiXSA9IFwicmVmcmVzaC1hdXRvLWV4dHJhY3QtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVmcmVzaERhdGFTb3VyY2VVSVwiXSA9IFwicmVmcmVzaC1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlZnJlc2hFeHRyYWN0VUlcIl0gPSBcInJlZnJlc2gtZXh0cmFjdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZWZyZXNoRnJvbVNvdXJjZVVJXCJdID0gXCJyZWZyZXNoLWZyb20tc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlZnJlc2hMb2NhbERhdGFVSVwiXSA9IFwicmVmcmVzaC1sb2NhbC1kYXRhLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlZnJlc2hUaHVtYm5haWxVSVwiXSA9IFwicmVmcmVzaC10aHVtYm5haWxcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVsZWFzZU1lbW9yeVwiXSA9IFwicmVsZWFzZS1tZW1vcnlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVtb3ZlQW5ub3RhdGlvblwiXSA9IFwicmVtb3ZlLWFubm90YXRpb25cIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVtb3ZlRXh0cmFjdFVJXCJdID0gXCJyZW1vdmUtZXh0cmFjdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZW1vdmVNUlVJdGVtXCJdID0gXCJyZW1vdmUtbXJ1XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlbW92ZVNhdmVkRGF0YVNvdXJjZVVJXCJdID0gXCJyZW1vdmUtc2F2ZWQtZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZW1vdmVTaGVldEZyb21EYXNoYm9hcmRVSVwiXSA9IFwicmVtb3ZlLXNoZWV0LWZyb20tZGFzaGJvYXJkLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlbW92ZVRhYmxlVUlcIl0gPSBcInJlbW92ZS10YWJsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZW5hbWVEYXRhU291cmNlVUlcIl0gPSBcInJlbmFtZS1kYXRhc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlbmFtZVNjaGVtYUZpZWxkRm9sZGVyVUlcIl0gPSBcInJlbmFtZS1maWVsZC1mb2xkZXItdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVuYW1lU2NoZW1hRHJpbGxQYXRoVUlcIl0gPSBcInJlbmFtZS1zY2hlbWEtZHJpbGxwYXRoLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlbmFtZVNoZWV0VUlcIl0gPSBcInJlbmFtZS1zaGVldC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZW9yZGVyU2hlZXRzVUlcIl0gPSBcInJlb3JkZXItc2hlZXRzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJlcGxhY2VEYXRhU291cmNlV2l0aERhdGFTZXJ2ZXJEYXRhU291cmNlVUlcIl0gPSBcInJlcGxhY2UtZGF0YXNvdXJjZS13aXRoLWRhdGEtc2VydmVyLWRhdGFzb3VyY2UtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVwbGFjZUZpZWxkVUlcIl0gPSBcInJlcGxhY2UtZmllbGQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRDYXB0aW9uVUlcIl0gPSBcInJlc2V0LWNhcHRpb24tdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRDYXJkc1wiXSA9IFwicmVzZXQtY2FyZHNcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRMb2NhbERhdGFVSVwiXSA9IFwicmVtb3ZlLWxvY2FsLWRhdGEtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRNZXNzYWdlc1wiXSA9IFwicmVzZXQtbWVzc2FnZXNcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU3RhcnRPbmxpbmVTeW5jQ2xpZW50XCJdID0gXCJzdGFydC1vbmxpbmUtc3luYy1jbGllbnRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRUaXRsZVVJXCJdID0gXCJyZXNldC10aXRsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZXNldFRvRGVmYXVsdHNNYXBDYXJkXCJdID0gXCJyZXNldC1tYXAtdG8tZGVmYXVsdHNcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiUmVzZXRXb3JrYm9va1wiXSA9IFwicmV2ZXJ0LXdvcmtib29rLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlJldGFyZ2V0RGF0YVNvdXJjZVwiXSA9IFwicmV0YXJnZXQtZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJSZXRhcmdldERhdGFTb3VyY2VVSVwiXSA9IFwicmV0YXJnZXQtZGF0YXNvdXJjZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTYXZlQXNXb3JrYm9va1wiXSA9IFwic2F2ZS1hcy13b3JrYm9va1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTYXZlQm9va21hcmtcIl0gPSBcInNhdmUtYm9va21hcmtcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2F2ZURlYnVnZ2luZ1dvcmtib29rXCJdID0gXCJzYXZlLWRlYnVnZ2luZy13b3JrYm9va1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTYXZlRGVmYXVsdEZvcm1hdHRpbmdVSVwiXSA9IFwic2F2ZS1mb3JtYXR0aW5nLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNhdmVXb3JrYm9va1wiXSA9IFwic2F2ZS13b3JrYm9va1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTY2hlbWFEZWZhdWx0TWVtYmVyVUlcIl0gPSBcInNjaGVtYS1kZWZhdWx0LW1lbWJlci11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTY3JvbGxTaGVldFwiXSA9IFwic2Nyb2xsLXNoZWV0XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldEFjY291bnRzRGltZW5zaW9uXCJdID0gXCJzZXQtYWNjb3VudHMtZGltZW5zaW9uXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldEFjdGl2ZUNvbm5lY3Rpb25VSVwiXSA9IFwic2V0LWFjdGl2ZS1jb25uZWN0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldEFuYWx5dGljc0Ryb3BUYXJnZXRWaXNpYmlsaXR5XCJdID0gXCJzZXQtYW5hbHl0aWNzLWRyb3AtdGFyZ2V0LXZpc2liaWxpdHlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0RGFzaGJvYXJkU2lkZVBhbmVNb2RlXCJdID0gXCJzZXQtZGFzaGJvYXJkLXNpZGVwYW5lLW1vZGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0RGVmYXVsdERhdGVGb3JtYXRVSVwiXSA9IFwic2V0LWRlZmF1bHQtZGF0ZS1mb3JtYXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0RGVmYXVsdExvY2F0aW9uVUlcIl0gPSBcInNldC1kZWZhdWx0LWxvY2F0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldERlZmF1bHRNYXBTb3VyY2VVSVwiXSA9IFwic2V0LWRlZmF1bHQtbWFwc291cmNlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldERlZmF1bHRUZXh0Rm9ybWF0VUlcIl0gPSBcInNldC1kZWZhdWx0LXRleHQtZm9ybWF0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldERlZmF1bHRVdGlsaXR5TWVtYmVyXCJdID0gXCJzZXQtZGVmYXVsdC11dGlsaXR5LW1lbWJlclwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTZXRGcmVlRm9ybURhc2hib2FyZFVJXCJdID0gXCJzZXQtZnJlZS1mb3JtLWRhc2hib2FyZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTZXRGaWx0ZXJTaGFyZWRVSVwiXSA9IFwic2V0LWZpbHRlci1zaGFyZWQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0S2V5XCJdID0gXCJzZXQta2V5XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldFByb2R1Y3RBdXRvVXBkYXRlXCJdID0gXCJzZXQtYXV0by11cGRhdGVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0UXVlcnlGYWlsdXJlXCJdID0gXCJzZXQtcXVlcnktZmFpbHVyZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTZXRSZW5kZXJpbmdcIl0gPSBcInNldC1yZW5kZXJpbmdcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2V0UnVudGltZUltbWVkaWF0ZU1vZGVcIl0gPSBcInNldC1ydW50aW1lLWltbWVkaWF0ZS1tb2RlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldFVJTGFuZ3VhZ2VcIl0gPSBcInNldC11aS1sYW5ndWFnZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTZXRXb3JrYm9va0xvY2FsZVVJXCJdID0gXCJzZXQtd29ya2Jvb2stbG9jYWxlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldFdvcmtzaGVldFNpZGVQYW5lTW9kZVwiXSA9IFwic2V0LXdvcmtzaGVldC1zaWRlcGFuZS1tb2RlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNldFpvbmVGaXhlZFNpemVVSVwiXSA9IFwic2V0LXpvbmUtZml4ZWQtc2l6ZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTZXRzSW5PdXRVSVwiXSA9IFwic2hvdy1pbi1vdXQtc2V0c1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaGFwZUxlZ2VuZEVkaXRVSVwiXSA9IFwic2hhcGUtbGVnZW5kLWVkaXQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd0Nsb3VkRmlsZU9BdXRoUHJvbXB0QW5kU2VsZWN0aW9uVUlcIl0gPSBcInNob3ctY2xvdWRmaWxlLW9hdXRoLXByb21wdC1hbmQtc2VsZWN0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dDb25uZWN0aW9uQXV0aFVJXCJdID0gXCJzaG93LWNvbm5lY3Rpb24tYXV0aC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93Q29ubmVjdGlvbkF1dGhBbmRFc3RhYmxpc2hDb25uZWN0aW9uVUlcIl0gPSBcInNob3ctY29ubmVjdGlvbi1hdXRoLWFuZC1lc3RhYmxpc2gtY29ubmVjdGlvbi11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93Q29ubmVjdFRhYlwiXSA9IFwic2hvdy1jb25uZWN0LXRhYlwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93Q3VzdG9tU3BsaXREaWFsb2dVSVwiXSA9IFwic2hvdy1jdXN0b20tc3BsaXQtZGlhbG9nLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dEb2N1bWVudFwiXSA9IFwiZG9jdW1lbnRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd0ZlYXR1cmVGbGFnRGlhbG9nXCJdID0gXCJzaG93LWZlYXR1cmUtZmxhZy1kaWFsb2dcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd0ZpZWxkRm9ybWF0VUlcIl0gPSBcInNob3ctZmllbGQtZm9ybWF0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dGaWVsZEluU2NoZW1hVUlcIl0gPSBcInNob3ctZmllbGQtaW4tc2NoZW1hXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dGaWxtc3RyaXBVSVwiXSA9IFwic2hvdy1maWxtc3RyaXAtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd0dvb2dsZVNoZWV0c1NlbGVjdGlvblVJXCJdID0gXCJzaG93LWdvb2dsZS1zaGVldHMtc2VsZWN0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dIZWxwXCJdID0gXCJzaG93LWhlbHBcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd0hpZGVEYXNoYm9hcmRTaGVldFVJXCJdID0gXCJzaG93LWhpZGUtZGFzaGJvYXJkLXNoZWV0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dIaWRlU3Rvcnlib2FyZFNoZWV0VUlcIl0gPSBcInNob3ctaGlkZS1zdG9yeWJvYXJkLXNoZWV0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dHcmFwaGljc0FQSVwiXSA9IFwic2hvdy1ncmFwaGljcy1hcGktY29tbWFuZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93TWFwT3B0aW9uc0RpYWxvZ1wiXSA9IFwic2hvdy1tYXAtb3B0aW9ucy1kaWFsb2dcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd01lYXN1cmVzVUlcIl0gPSBcInNob3ctbWVhc3VyZXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd01lQ3ljbGVVSVwiXSA9IFwic2hvdy1tZS1jeWNsZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93TWVIaWRlVUlcIl0gPSBcInNob3ctbWUtaGlkZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93TWVtYmVyc1VJXCJdID0gXCJzaG93LW1lbWJlcnMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd01lVG9nZ2xlVUlcIl0gPSBcInNob3ctbWUtdG9nZ2xlLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dPQXV0aFByb21wdFVJXCJdID0gXCJzaG93LW9hdXRoLXByb21wdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93UGFyYW1ldGVyQ29udHJvbFwiXSA9IFwic2hvdy1wYXJhbWV0ZXItY29udHJvbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaG93UHVibGljU3RhdHVzRGlhbG9nXCJdID0gXCJzaG93LXB1YmxpYy1zdGF0dXMtZGlhbG9nXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dQdWJsaWNRdW90YUV4Y2VlZGVkRGlhbG9nXCJdID0gXCJzaG93LXB1YmxpYy1xdW90YS1leGNlZWRlZC1kaWFsb2dcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd1B1Ymxpc2hEYXRhc291cmNlVG9Xb3JrZ3JvdXBEaWFsb2dcIl0gPSBcInNob3ctcHVibGlzaC1kYXRhc291cmNlLXRvLXdvcmtncm91cC1kaWFsb2dcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd1F1ZXJ5QmFuZGluZ0FuZEluaXRpYWxTUUxEaWFsb2dVSVwiXSA9IFwic2hvdy1xdWVyeS1iYW5kaW5nLWFuZC1pbml0aWFsLXNxbC1kaWFsb2ctdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd1F1aWNrRmlsdGVyXCJdID0gXCJzaG93LXF1aWNrZmlsdGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dRdWlja0ZpbHRlclVJXCJdID0gXCJzaG93LXF1aWNrZmlsdGVyLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dSdW50aW1lSW5kaWNhdG9yXCJdID0gXCJzaG93LXJ1bnRpbWUtaW5kaWNhdG9yXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dTaGVldFNvcnRlclwiXSA9IFwic2hlZXQtc29ydGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNob3dUYWJsZU9wdGlvbnNEaWFsb2dcIl0gPSBcInNob3ctdGFibGUtb3B0aW9ucy1kaWFsb2dcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd1dlYkRhdGFDb25uZWN0b3JVSVwiXSA9IFwic2hvdy13ZWItZGF0YS1jb25uZWN0b3ItdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU2hvd1dpZGdldFNhbmRib3hVSVwiXSA9IFwic2hvdy13aWRnZXQtc2FuZGJveC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTaXplTGVnZW5kRWRpdFVJXCJdID0gXCJzaXplLWxlZ2VuZC1lZGl0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNsZWVwVUlcIl0gPSBcInNsZWVwLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNvcnRBc2NlbmRpbmdGaWVsZExhYmVsVUlcIl0gPSBcInNvcnQtYXNjZW5kaW5nLWZpZWxkLWxhYmVsLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlNvcnREZXNjZW5kaW5nRmllbGRMYWJlbFVJXCJdID0gXCJzb3J0LWRlc2NlbmRpbmctZmllbGQtbGFiZWwtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU29ydEZpZWxkTGFiZWxVSVwiXSA9IFwic29ydC1maWVsZC1sYWJlbC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTb3J0VUlcIl0gPSBcInNvcnQtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiU3BsaXRGaWVsZFVJXCJdID0gXCJzcGxpdC1maWVsZC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTdGFja01hcmtzVUlcIl0gPSBcInN0YWNrLW1hcmtzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlN0YXJ0RmlsZUNvbm5lY3Rpb25VSVwiXSA9IFwic3RhcnQtZmlsZS1jb25uZWN0aW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlN0YXJ0UGlsbEVkaXRVSVwiXSA9IFwic3RhcnQtcGlsbC1lZGl0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlN3aXRjaFRvQ29ubmVjdFRhYlwiXSA9IFwic3dpdGNoLXRvLWNvbm5lY3QtdGFiXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlN3aXRjaFRvRG9jdW1lbnRcIl0gPSBcInN3aXRjaC10by1kb2N1bWVudFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJTd2l0Y2hUb1NoZWV0U29ydGVyXCJdID0gXCJzd2l0Y2gtdG8tc2hlZXQtc29ydGVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRhYmxlQ2FsY0FkZHJlc3NVSVwiXSA9IFwidGFibGUtY2FsYy1hZGRyZXNzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRhYmxlQ2FsY0lnbm9yZVVJXCJdID0gXCJ0YWJsZS1jYWxjLWlnbm9yZS11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJUYWJsZUNhbGNPcmRlcmluZ1VJXCJdID0gXCJ0YWJsZS1jYWxjLW9yZGVyaW5nLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRhYmxlQ2FsY1VJXCJdID0gXCJ0YWJsZS1jYWxjLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRvZ2dsZUNvbm5lY3RQYW5lVUlcIl0gPSBcInRvZ2dsZS1jb25uZWN0LXBhbmVcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVG9nZ2xlRmlsbXN0cmlwVUlcIl0gPSBcInRvZ2dsZS1maWxtc3RyaXAtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVG9nZ2xlSU5ESm9pblNlbWFudGljc1VJXCJdID0gXCJ0b2dnbGUtaW5kLWpvaW4tc2VtYW50aWNzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRvZ2dsZVBpbk1SVUl0ZW1cIl0gPSBcInRvZ2dsZS1waW4tbXJ1XCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRvZ2dsZVJlZmVyZW50aWFsSW50ZWdyaXR5VUlcIl0gPSBcInRvZ2dsZS1yZWZlcmVudGlhbC1pbnRlZ3JpdHktdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVG9nZ2xlU3RhcnRQYWdlVUlcIl0gPSBcInRvZ2dsZS1zdGFydC1wYWdlXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlRyYWNrTWVtb3J5XCJdID0gXCJ0cmFjay1tZW1vcnlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVHJlbmRMaW5lc0ZsYWdVSVwiXSA9IFwidHJlbmQtbGluZXMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVXBkYXRlRGVmYXVsdHNNYXBDYXJkXCJdID0gXCJ1cGRhdGUtbWFwLWRlZmF1bHRzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlVwZ3JhZGVFeHRyYWN0c1VJXCJdID0gXCJ1cGdyYWRlLWV4dHJhY3RzLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlVwZ3JhZGVFeHRyYWN0VUlcIl0gPSBcInVwZ3JhZGUtZXh0cmFjdC11aVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJVc2VFeHRyYWN0VUlcIl0gPSBcInVzZS1leHRyYWN0LXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlVzZU1lbW9yeVwiXSA9IFwidXNlLW1lbW9yeVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJVdGlsaXR5RGltZW5zaW9uVUlcIl0gPSBcInV0aWxpdHktZGltZW5zaW9uLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZhbGlkYXRlRXh0cmFjdENyZWRlbnRpYWxzVUlcIl0gPSBcInZhbGlkYXRlLWV4dHJhY3QtY3JlZGVudGlhbHMtdWlcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld0NhcmRcIl0gPSBcInZpZXctY2FyZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3VGl0bGVDYXJkXCJdID0gXCJ2aWV3LXRpdGxlLWNhcmRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld1N1bW1hcnlDYXJkXCJdID0gXCJ2aWV3LXN1bW1hcnktY2FyZFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3Q2FwdGlvbkNhcmRcIl0gPSBcInZpZXctY2FwdGlvbi1jYXJkXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZpZXdDb2x1bW5zU2hlbGZcIl0gPSBcInZpZXctY29sdW1ucy1zaGVsZlwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3Um93c1NoZWxmXCJdID0gXCJ2aWV3LXJvd3Mtc2hlbGZcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld1BhZ2VzU2hlbGZcIl0gPSBcInZpZXctcGFnZXMtc2hlbGZcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld0ZpbHRlcnNTaGVsZlwiXSA9IFwidmlldy1maWx0ZXJzLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZpZXdNZWFzdXJlc1NoZWxmXCJdID0gXCJ2aWV3LW1lYXN1cmVzLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZpZXdNYXJrc1NoZWxmXCJdID0gXCJ2aWV3LW1hcmtzLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZpZXdDdXJyZW50UGFnZUNhcmRcIl0gPSBcInZpZXctY3VycmVudC1wYWdlLWNhcmRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld0RhdGFcIl0gPSBcInZpZXctZGF0YVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3U1FMRGF0YVVJXCJdID0gXCJ2aWV3LXNxbC1kYXRhLXVpXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIlZpZXdEYXRhU291cmNlRGF0YVwiXSA9IFwidmlldy1kYXRhc291cmNlLWRhdGFcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld0xlZ2VuZFwiXSA9IFwidmlldy1sZWdlbmRcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld1NpZGVQYW5lXCJdID0gXCJ2aWV3LXNpZGUtcGFuZVwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3U3RhdHVzQmFyXCJdID0gXCJ2aWV3LXN0YXR1c2JhclwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3U3VtbWFyeURldGFpbFwiXSA9IFwidmlldy1zdW1tYXJ5LWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJWaWV3VGFibGVEYXRhXCJdID0gXCJ2aWV3LXRhYmxlLWRhdGFcIjtcbiAgICAvLyBcbiAgICBVSUNvbW1hbmRzW1wiVmlld1Rvb2xCYXJcIl0gPSBcInZpZXctdG9vbGJhclwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJXZWJWaWV3RW5hYmxlSmF2YXNjcmlwdFwiXSA9IFwid2Vidmlldy1lbmFibGUtamF2YXNjcmlwdFwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJXZWJWaWV3RW5hYmxlUGx1Z2luc1wiXSA9IFwid2Vidmlldy1lbmFibGUtcGx1Z2luc1wiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJXZWJWaWV3QmxvY2tQb3B1cHNcIl0gPSBcIndlYnZpZXctYmxvY2stcG9wdXBzXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIldlYlZpZXdFbmFibGVVUkxIb3ZlckFjdGlvbnNcIl0gPSBcIndlYnZpZXctZW5hYmxlLXVybC1ob3Zlci1hY3Rpb25zXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIldvcmtncm91cENoYW5nZURhdGFzZXJ2ZXJcIl0gPSBcIndvcmtncm91cC1jaGFuZ2UtZGF0YXNlcnZlclwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJXb3JrZ3JvdXBDaGFuZ2VTZXJ2ZXJcIl0gPSBcIndvcmtncm91cC1jaGFuZ2Utc2VydmVyXCI7XG4gICAgLy8gXG4gICAgVUlDb21tYW5kc1tcIldvcmtncm91cENoYW5nZVVzZXJcIl0gPSBcIndvcmtncm91cC1jaGFuZ2UtdXNlclwiO1xuICAgIC8vIFxuICAgIFVJQ29tbWFuZHNbXCJXb3JrZ3JvdXBSZW1vdmVMYXN0U2VydmVyXCJdID0gXCJ3b3JrZ3JvdXAtcmVtb3ZlLWxhc3Qtc2VydmVyXCI7XG59KShVSUNvbW1hbmRzID0gZXhwb3J0cy5VSUNvbW1hbmRzIHx8IChleHBvcnRzLlVJQ29tbWFuZHMgPSB7fSkpO1xuKGZ1bmN0aW9uIChEb2NDb21tYW5kcykge1xuICAgIC8vIEdldHMgdGhlIGF4aXMgb3B0aW9ucyAuXG4gICAgRG9jQ29tbWFuZHNbXCJHZXRBeGlzT3B0aW9uc1wiXSA9IFwiZ2V0LWF4aXMtb3B0aW9uc1wiO1xuICAgIC8vIFJlc2V0IHRoZSBheGlzIG9wdGlvbnMgLlxuICAgIERvY0NvbW1hbmRzW1wiUmVzZXRBeGlzT3B0aW9uc1wiXSA9IFwicmVzZXQtYXhpcy1vcHRpb25zXCI7XG4gICAgLy8gU2hvdyBheGlzIGVkaXQgZGlhbG9nXG4gICAgRG9jQ29tbWFuZHNbXCJTaG93RWRpdEF4aXNEaWFsb2dcIl0gPSBcInNob3ctZWRpdC1heGlzLWRpYWxvZ1wiO1xuICAgIC8vIFNldHMgdGhlIGF4aXMgZGlyZWN0aW9uXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzUmV2ZXJzZWRcIl0gPSBcInNldC1heGlzLXJldmVyc2VkXCI7XG4gICAgLy8gU2V0cyB0aGUgYXhpcyBzY2FsZSB0eXBlXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzU2NhbGVUeXBlXCJdID0gXCJzZXQtYXhpcy1zY2FsZS10eXBlXCI7XG4gICAgLy8gU2V0cyB0aGUgbWFpbiB0aXRsZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzVGl0bGVcIl0gPSBcInNldC1heGlzLXRpdGxlXCI7XG4gICAgLy8gU2V0cyB0aGUgc3VidGl0bGUgb2YgYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIERvY0NvbW1hbmRzW1wiU2V0QXhpc1N1YnRpdGxlXCJdID0gXCJzZXQtYXhpcy1zdWJ0aXRsZVwiO1xuICAgIC8vIFNldHMgd2hldGhlciB3ZSBzaG91bGQgdXNlIHRoZSBhdXRvbWF0aWMgc3VidGl0bGUgZm9yIGEgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBEb2NDb21tYW5kc1tcIlNldEF4aXNVc2VBdXRvbWF0aWNTdWJ0aXRsZVwiXSA9IFwic2V0LWF4aXMtdXNlLWF1dG9tYXRpYy1zdWJ0aXRsZVwiO1xuICAgIC8vIFNldHMgdGhlIGF4aXMgcmFuZ2UgdHlwZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzRXh0ZW50U3RhcnRUeXBlXCJdID0gXCJzZXQtYXhpcy1leHRlbnQtc3RhcnQtdHlwZVwiO1xuICAgIC8vIFNldHMgdGhlIGF4aXMgcmFuZ2UgdHlwZSBvZiBhIHF1YW50aXRhdGl2ZSBheGlzXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzRXh0ZW50RW5kVHlwZVwiXSA9IFwic2V0LWF4aXMtZXh0ZW50LWVuZC10eXBlXCI7XG4gICAgLy8gU2V0cyB0aGUgYXhpcyByYW5nZSB0eXBlIG9mIGEgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBEb2NDb21tYW5kc1tcIlNldEJvdGhBeGlzRXh0ZW50c1R5cGVcIl0gPSBcInNldC1ib3RoLWF4aXMtZXh0ZW50cy10eXBlXCI7XG4gICAgLy8gU2V0cyB3aGV0aGVyIG9yIG5vdCB0byBmb3JjZS1pbmNsdWRlIHplcm8gb24gYSBxdWFudGl0YXRpdmUgYXhpc1xuICAgIERvY0NvbW1hbmRzW1wiU2V0QXhpc0luY2x1ZGVaZXJvXCJdID0gXCJzZXQtYXhpcy1pbmNsdWRlLXplcm9cIjtcbiAgICAvLyBTZXRzIG5ldyBtaW4vbWF4IHJhbmdlIGVuZGluZ3MgZm9yIGF4aXNcbiAgICBEb2NDb21tYW5kc1tcIlNldEF4aXNSYW5nZUVuZFwiXSA9IFwic2V0LWF4aXMtcmFuZ2UtZW5kXCI7XG4gICAgLy8gU2V0cyBuZXcgbWluL21heCByYW5nZSBlbmRpbmdzIGZvciBheGlzXG4gICAgRG9jQ29tbWFuZHNbXCJTZXRBeGlzUmFuZ2VTdGFydFwiXSA9IFwic2V0LWF4aXMtcmFuZ2Utc3RhcnRcIjtcbiAgICAvLyBTeW5jaHJvbml6ZSBkdWFsIGF4ZXMgb24gYSBmb2xkZWQgcXVhbnRpdGF0aXZlIGF4aXNcbiAgICBEb2NDb21tYW5kc1tcIlNldEF4aXNGb2xkU3RhdGVcIl0gPSBcInNldC1heGlzLWZvbGQtc3RhdGVcIjtcbiAgICAvLyBTZXQgdGhlIG1ham9yIHRpY2sgbWFyayBzdGF0ZVxuICAgIERvY0NvbW1hbmRzW1wiU2V0TWFqb3JUaWNrTWFya1N0YXRlXCJdID0gXCJzZXQtbWFqb3ItdGljay1tYXJrLXN0YXRlXCI7XG4gICAgLy8gU2V0IHRoZSBtaW5vciB0aWNrIG1hcmsgc3RhdGVcbiAgICBEb2NDb21tYW5kc1tcIlNldE1pbm9yVGlja01hcmtTdGF0ZVwiXSA9IFwic2V0LW1pbm9yLXRpY2stbWFyay1zdGF0ZVwiO1xuICAgIC8vIFNldCB0aGUgbWFqb3IgdGljayBtYXJrIG9yaWdpblxuICAgIERvY0NvbW1hbmRzW1wiU2V0TWFqb3JUaWNrTWFya09yaWdpblwiXSA9IFwic2V0LW1ham9yLXRpY2stbWFyay1vcmlnaW5cIjtcbiAgICAvLyBTZXQgdGhlIG1pbm9yIHRpY2sgbWFyayBvcmlnaW5cbiAgICBEb2NDb21tYW5kc1tcIlNldE1pbm9yVGlja01hcmtPcmlnaW5cIl0gPSBcInNldC1taW5vci10aWNrLW1hcmstb3JpZ2luXCI7XG4gICAgLy8gU2V0IHRoZSBtYWpvciB0aWNrIG1hcmsgc3BhY2luZ1xuICAgIERvY0NvbW1hbmRzW1wiU2V0TWFqb3JUaWNrTWFya1NwYWNpbmdcIl0gPSBcInNldC1tYWpvci10aWNrLW1hcmstc3BhY2luZ1wiO1xuICAgIC8vIFNldCB0aGUgbWlub3IgdGljayBtYXJrIHNwYWNpbmdcbiAgICBEb2NDb21tYW5kc1tcIlNldE1pbm9yVGlja01hcmtTcGFjaW5nXCJdID0gXCJzZXQtbWlub3ItdGljay1tYXJrLXNwYWNpbmdcIjtcbiAgICAvLyBTZXQgdGhlIG1ham9yIHRpY2sgbWFyayB1bml0c1xuICAgIERvY0NvbW1hbmRzW1wiU2V0TWFqb3JUaWNrTWFya1VuaXRzXCJdID0gXCJzZXQtbWFqb3ItdGljay1tYXJrLXVuaXRzXCI7XG4gICAgLy8gU2V0IHRoZSBtaW5vciB0aWNrIG1hcmsgdW5pdHNcbiAgICBEb2NDb21tYW5kc1tcIlNldE1pbm9yVGlja01hcmtVbml0c1wiXSA9IFwic2V0LW1pbm9yLXRpY2stbWFyay11bml0c1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiQm91bmRpbmdCb3hQYW5cIl0gPSBcImJvdW5kaW5nLWJveC1wYW5cIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIk9uVG9nZ2xlQXhpc1Jhbmdlc1wiXSA9IFwib24tdG9nZ2xlLWF4aXMtcmFuZ2VzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJQYW5lUGFuXCJdID0gXCJwYW5lLXBhblwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUGFuZVpvb21cIl0gPSBcInBhbmUtem9vbVwiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUGFuZVpvb21GYWN0b3JcIl0gPSBcInBhbmUtem9vbS1mYWN0b3JcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlBhbmVab29tUGFuXCJdID0gXCJwYW5lLXpvb20tcGFuXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJSZW9yZGVyRm9sZGVkQXhlc1wiXSA9IFwicmVvcmRlci1mb2xkZWQtYXhlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiUmVzZXRBeGlzUmFuZ2VcIl0gPSBcInJlc2V0LWF4aXMtcmFuZ2VcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlNlbGVjdEF4aXNUdXBsZXNcIl0gPSBcInNlbGVjdC1heGlzLXR1cGxlc1wiO1xuICAgIC8vIFxuICAgIERvY0NvbW1hbmRzW1wiU3dhcFJlZmVyZW5jZUxpbmVGaWVsZHNcIl0gPSBcInN3YXAtcmVmZXJlbmNlLWxpbmUtZmllbGRzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJTeW5jaHJvbml6ZUF4aXNcIl0gPSBcInN5bmNocm9uaXplLWF4aXNcIjtcbiAgICAvLyBcbiAgICBEb2NDb21tYW5kc1tcIlRvZ2dsZUR1YWxBeGlzXCJdID0gXCJ0b2dnbGUtZHVhbC1heGlzXCI7XG4gICAgLy8gXG4gICAgRG9jQ29tbWFuZHNbXCJab29tTGV2ZWxcIl0gPSBcInpvb20tbGV2ZWxcIjtcbn0pKERvY0NvbW1hbmRzID0gZXhwb3J0cy5Eb2NDb21tYW5kcyB8fCAoZXhwb3J0cy5Eb2NDb21tYW5kcyA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21tYW5kSWRzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvZ2VuLXNyYy9wcmVzbGF5ZXIvQ29tbWFuZElkcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogUmVnaXN0cnkgd2hpY2ggY29udGFpbnMgbWFwcGluZ3MgZnJvbSBhbiBBcGkgVmVyYklkIHRvIGEgcHJlcy1sYXllciBjb21tYW5kLlxuICogVGhpcyBpbmNsdWRlcyB0aGUgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGUgY29tbWFuZCBhcyB3ZWxsXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvbW1hbmRNYXBwaW5nUmVnaXN0cnlcbiAqL1xudmFyIENvbW1hbmRNYXBwaW5nUmVnaXN0cnkgPSAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeS5cbiAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIENvbW1hbmRNYXBwaW5nUmVnaXN0cnkoKSB7XG4gICAgICAgIHRoaXMuX2NvbW1hbmRzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBuZXcgY29tbWFuZCB0byB0aGUgcmVnaXN0cnlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29tbWFuZFJlZ2lzdHJhdGlvbn0gY29tbWFuZFxuICAgICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gICAgICovXG4gICAgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeS5wcm90b3R5cGUuYWRkQ29tbWFuZCA9IGZ1bmN0aW9uIChjb21tYW5kKSB7XG4gICAgICAgIHRoaXMuX2NvbW1hbmRzW2NvbW1hbmQuYXBpVmVyYklkXSA9IGNvbW1hbmQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIHJlZ2lzdHJ5IGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgdGhpcyBBcGlWZXJiSWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXBpVmVyYklkfSBhcGlWZXJiSWRcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeVxuICAgICAqL1xuICAgIENvbW1hbmRNYXBwaW5nUmVnaXN0cnkucHJvdG90eXBlLmhhc0NvbW1hbmQgPSBmdW5jdGlvbiAoYXBpVmVyYklkKSB7XG4gICAgICAgIGlmICghdGhpcy5fY29tbWFuZHMuaGFzT3duUHJvcGVydHkoYXBpVmVyYklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY29tbWFuZHNbYXBpVmVyYklkXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29tbWFuZCByZWdpc3RyYXRpb24gZm9yIHRoaXMgY29tbWFuZCBpZCBvciB0aHJvd3MgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcGlWZXJiSWR9IGFwaVZlcmJJZFxuICAgICAqIEByZXR1cm5zIHtDb21tYW5kUmVnaXN0cmF0aW9ufVxuICAgICAqIEBtZW1iZXJvZiBDb21tYW5kTWFwcGluZ1JlZ2lzdHJ5XG4gICAgICovXG4gICAgQ29tbWFuZE1hcHBpbmdSZWdpc3RyeS5wcm90b3R5cGUuZ2V0Q29tbWFuZCA9IGZ1bmN0aW9uIChhcGlWZXJiSWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0NvbW1hbmQoYXBpVmVyYklkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIEFwaVZlcmI6ICcgKyBhcGlWZXJiSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21tYW5kc1thcGlWZXJiSWRdO1xuICAgIH07XG4gICAgcmV0dXJuIENvbW1hbmRNYXBwaW5nUmVnaXN0cnk7XG59KCkpO1xuZXhwb3J0cy5Db21tYW5kTWFwcGluZ1JlZ2lzdHJ5ID0gQ29tbWFuZE1hcHBpbmdSZWdpc3RyeTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbW1hbmRNYXBwaW5nUmVnaXN0cnkuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvQ29tbWFuZE1hcHBpbmdSZWdpc3RyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG4vKipcbiAqIFRoaXMgaXMgYW4gZW51bSB1c2VkIG9ubHkgaW50ZXJuYWxseSBieSB0aGUgYXBpLWNvcmUgcHJvamVjdC5cbiAqIFRoaXMgZW51bSByZXByZXNlbnRzIHRoZSBkaWZmZXJlbmNlIG5hbWVzcGFjZXMgYXZhaWxhYmxlIGZvciBjb21tYW5kcy5cbiAqL1xudmFyIENvbW1hbmROYW1lc3BhY2U7XG4oZnVuY3Rpb24gKENvbW1hbmROYW1lc3BhY2UpIHtcbiAgICBDb21tYW5kTmFtZXNwYWNlW1wiVGFiRG9jXCJdID0gXCJ0YWJkb2NcIjtcbiAgICBDb21tYW5kTmFtZXNwYWNlW1wiVGFiVUlcIl0gPSBcInRhYnVpXCI7XG59KShDb21tYW5kTmFtZXNwYWNlID0gZXhwb3J0cy5Db21tYW5kTmFtZXNwYWNlIHx8IChleHBvcnRzLkNvbW1hbmROYW1lc3BhY2UgPSB7fSkpO1xuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGlucHV0IG9yIG91dHB1dCBwYXJhbXRlciBmb3IgYSBjb21tYW5kLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb21tYW5kUGFyYW1ldGVyXG4gKi9cbnZhciBDb21tYW5kUGFyYW1ldGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIENvbW1hbmRQYXJhbWV0ZXIuXG4gICAgICogQHBhcmFtIHtBcGlQYXJhbWV0ZXJJZH0gYXBpSWRcbiAgICAgKiBAcGFyYW0ge1ByZXNMYXllclBhcmFtZXRlcklkfSBwcmVzTGF5ZXJJZFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzT3B0aW9uYWxdXG4gICAgICogQG1lbWJlcm9mIENvbW1hbmRQYXJhbWV0ZXJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBDb21tYW5kUGFyYW1ldGVyKF9hcGlJZCwgX3ByZXNMYXllcklkLCBfaXNPcHRpb25hbCkge1xuICAgICAgICB0aGlzLl9hcGlJZCA9IF9hcGlJZDtcbiAgICAgICAgdGhpcy5fcHJlc0xheWVySWQgPSBfcHJlc0xheWVySWQ7XG4gICAgICAgIHRoaXMuX2lzT3B0aW9uYWwgPSBfaXNPcHRpb25hbDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbW1hbmRQYXJhbWV0ZXIucHJvdG90eXBlLCBcImFwaUlkXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBJZCBvZiB0aGUgQXBpIFBhcmFtZXRlclxuICAgICAgICAgKlxuICAgICAgICAgKiBAcmVhZG9ubHlcbiAgICAgICAgICogQHR5cGUge0FwaVBhcmFtZXRlcklkfVxuICAgICAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXBpSWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUGFyYW1ldGVyLnByb3RvdHlwZSwgXCJwcmVzTGF5ZXJJZFwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgSWQgb2YgdGhlIFByZXMgTGF5ZXIgUGFyYW1ldGVyXG4gICAgICAgICAqXG4gICAgICAgICAqIEByZWFkb25seVxuICAgICAgICAgKiBAdHlwZSB7UHJlc0xheWVyUGFyYW1ldGVySWR9XG4gICAgICAgICAqIEBtZW1iZXJvZiBDb21tYW5kUGFyYW1ldGVyXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcmVzTGF5ZXJJZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbW1hbmRQYXJhbWV0ZXIucHJvdG90eXBlLCBcImlzT3B0aW9uYWxcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXJcbiAgICAgICAgICpcbiAgICAgICAgICogQHJlYWRvbmx5XG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZFBhcmFtZXRlclxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLl9pc09wdGlvbmFsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29tbWFuZFBhcmFtZXRlcjtcbn0oKSk7XG5leHBvcnRzLkNvbW1hbmRQYXJhbWV0ZXIgPSBDb21tYW5kUGFyYW1ldGVyO1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgdGhlIGNvbXBsZXRlIG1hcHBpbmcgb2YgYW4gQXBpQ29tbWFuZCB0byBpdHMgY29ycmVzcG9uZGluZyBwcmVzLWxheWVyIGNvbW1hbmRcbiAqIGFuZCB0aGUgY29udmVyc2lvbiBvZiB0aGUgb3V0cHV0IHZhbHVlIGFzIHdlbGxcbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICovXG52YXIgQ29tbWFuZFJlZ2lzdHJhdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29tbWFuZFJlZ2lzdHJhdGlvbihfYXBpVmVyYklkLCBfY29tbWFuZElkLCBfaW5wdXRQYXJhbWV0ZXJzLCBfb3V0cHV0UGFyYW1ldGVyLCBfbmFtZXNwYWNlKSB7XG4gICAgICAgIHRoaXMuX2FwaVZlcmJJZCA9IF9hcGlWZXJiSWQ7XG4gICAgICAgIHRoaXMuX2NvbW1hbmRJZCA9IF9jb21tYW5kSWQ7XG4gICAgICAgIHRoaXMuX2lucHV0UGFyYW1ldGVycyA9IF9pbnB1dFBhcmFtZXRlcnM7XG4gICAgICAgIHRoaXMuX291dHB1dFBhcmFtZXRlciA9IF9vdXRwdXRQYXJhbWV0ZXI7XG4gICAgICAgIHRoaXMuX25hbWVzcGFjZSA9IF9uYW1lc3BhY2U7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJhcGlWZXJiSWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hcGlWZXJiSWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJjb21tYW5kSWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21tYW5kSWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJpbnB1dHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFBhcmFtZXRlcnMgfHwgbmV3IEFycmF5KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJvdXRwdXRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdXRwdXRQYXJhbWV0ZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJuYW1lc3BhY2VcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9uYW1lc3BhY2UgfHwgQ29tbWFuZE5hbWVzcGFjZS5UYWJEb2M7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tYW5kUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJuZWVkc0FkZEluTG9jYXRvclwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGNvbW1hbmQgcmVxdWlyZXMgYW4gYWRkLWluIGxvY2F0b3IgdG8gYmUgaW5qZWN0ZWQgaW50byBpdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcmVhZG9ubHlcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqIEBtZW1iZXJvZiBDb21tYW5kUmVnaXN0cmF0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLmlucHV0czsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBfYVtfaV07XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmFwaUlkID09PSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkxvY2F0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGljdGlvbmFyeSBvZiBwcmVzLWxheWVyIHBhcmFtZXRlcnMgZnJvbSB0aGUgaW5wdXQgZGljdGlvbmFyeVxuICAgICAqIG9mIGFwaSBwYXJhbWV0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFeGVjdXRlUGFyYW1ldGVyc30gcGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNvbnZlcnRcbiAgICAgKiBAcGFyYW0ge0FwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5fSBhcGlUb1ByZXNMYXllciAtIG1hcHBpbmcgdG8gZGV0ZXJtaW5lIHRoZSBjb252ZXJzaW9uXG4gICAgICogQHJldHVybnMge3sgW3BhcmFtSWQ6IHN0cmluZ106IG9iamVjdDsgfX0gLSBwYXJhbWV0ZXJzIHRvIHNlbmQgdG8gdGhlIHByZXMtbGF5ZXJcbiAgICAgKiBAbWVtYmVyb2YgQ29tbWFuZFJlZ2lzdHJhdGlvblxuICAgICAqL1xuICAgIENvbW1hbmRSZWdpc3RyYXRpb24ucHJvdG90eXBlLmNyZWF0ZVBhcmFtcyA9IGZ1bmN0aW9uIChwYXJhbWV0ZXJzLCBhcGlUb1ByZXNMYXllcikge1xuICAgICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLmlucHV0czsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBpbnB1dFBhcmFtID0gX2FbX2ldO1xuICAgICAgICAgICAgLy8gRmlyc3QgbWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXIgaXMgdGhlcmUgb3IgdGhhdCBpdCdzIG9wdGlvbmFsXG4gICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkoaW5wdXRQYXJhbS5hcGlJZCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRQYXJhbS5pc09wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBhcmFtZXRlciBmb3IgY29tbWFuZDogJyArIGlucHV0UGFyYW0uYXBpSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIHRoaXMgcGFyYW1ldGVyXG4gICAgICAgICAgICB2YXIgY29udmVyc2lvbkZuID0gYXBpVG9QcmVzTGF5ZXIuZ2V0KGlucHV0UGFyYW0uYXBpSWQsIGlucHV0UGFyYW0ucHJlc0xheWVySWQpO1xuICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgcHJlcyBtb2RlbCBhbmQgaW5zZXJ0IGl0IGludG8gb3VyIHJlc3VsdHMgb2JqZWN0XG4gICAgICAgICAgICByZXN1bHRbaW5wdXRQYXJhbS5wcmVzTGF5ZXJJZF0gPSBjb252ZXJzaW9uRm4ocGFyYW1ldGVyc1tpbnB1dFBhcmFtLmFwaUlkXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGUgcmVzdWx0IHJlY2VpdmVkIGJhY2sgYWZ0ZXIgZXhlY3V0aW5nIGEgcHJlcy1sYXllciBjb21tYW5kXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3sgW2RvY1BhcmFtSWQ6IHN0cmluZ106IG9iamVjdDsgfX0gcmVzdWx0UGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSB7UHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnl9IHByZXNMYXllclRvQXBpXG4gICAgICogQHJldHVybnMge01vZGVsfVxuICAgICAqIEBtZW1iZXJvZiBDb21tYW5kUmVnaXN0cmF0aW9uXG4gICAgICovXG4gICAgQ29tbWFuZFJlZ2lzdHJhdGlvbi5wcm90b3R5cGUuUHJvY2Vzc1Jlc3VsdCA9IGZ1bmN0aW9uIChyZXN1bHRQYXJhbWV0ZXJzLCBwcmVzTGF5ZXJUb0FwaSkge1xuICAgICAgICAvLyBUT0RPOiBBZGQgZXJyb3IgaGFuZGxpbmdcbiAgICAgICAgaWYgKHRoaXMub3V0cHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciBub091dHB1dE1vZGVsID0ge307XG4gICAgICAgICAgICByZXR1cm4gbm9PdXRwdXRNb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3VsdFBhcmFtZXRlcnMgfHwgIXJlc3VsdFBhcmFtZXRlcnMuaGFzT3duUHJvcGVydHkodGhpcy5vdXRwdXQucHJlc0xheWVySWQpKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgb3V0cHV0IHJlc3VsdCBpcyBtYXJrZWQgYXMgb3B0aW9uYWwsIHdlIGRvbid0IGNvbnNpZGVyIHRoaXMgYW4gZXJyb3Igc2l0dWF0aW9uIGFuZCBqdXN0IHJldHVybiBhbiBlbXB0eSBtb2RlbFxuICAgICAgICAgICAgaWYgKHRoaXMub3V0cHV0LmlzT3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgZXhwZWN0ZWQgcmVzdWx0IHBhcmFtZXRlcjogJyArIHRoaXMub3V0cHV0LnByZXNMYXllcklkKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29udmVyc2lvbkZuID0gcHJlc0xheWVyVG9BcGkuZ2V0KHRoaXMub3V0cHV0LnByZXNMYXllcklkLCB0aGlzLm91dHB1dC5hcGlJZCk7XG4gICAgICAgIHJldHVybiBjb252ZXJzaW9uRm4ocmVzdWx0UGFyYW1ldGVyc1t0aGlzLm91dHB1dC5wcmVzTGF5ZXJJZF0pO1xuICAgIH07XG4gICAgcmV0dXJuIENvbW1hbmRSZWdpc3RyYXRpb247XG59KCkpO1xuZXhwb3J0cy5Db21tYW5kUmVnaXN0cmF0aW9uID0gQ29tbWFuZFJlZ2lzdHJhdGlvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbW1hbmRSZWdpc3RyYXRpb24uanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvQ29tbWFuZFJlZ2lzdHJhdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgRXZlbnRzXzEgPSByZXF1aXJlKFwiLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRXZlbnRzXCIpO1xudmFyIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEgPSByZXF1aXJlKFwiLi9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlclwiKTtcbi8qKlxuICogU2ltcGxlIHdyYXBwZXIgd2hpY2ggaG9sZHMgYSBtYXBwaW5nIHRvIGdvIGZyb20gYSBwcmVzLWxheWVyIGV2ZW50IHRvIGFuIEFQSSBldmVudFxuICovXG52YXIgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oX3ByZXNMYXllcklkLCBfYXBpSWQsIF9jb252ZXJ0ZXIpIHtcbiAgICAgICAgdGhpcy5fcHJlc0xheWVySWQgPSBfcHJlc0xheWVySWQ7XG4gICAgICAgIHRoaXMuX2FwaUlkID0gX2FwaUlkO1xuICAgICAgICB0aGlzLl9jb252ZXJ0ZXIgPSBfY29udmVydGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJwcmVzTGF5ZXJJZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNMYXllcklkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJhcGlJZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwaUlkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uLnByb3RvdHlwZSwgXCJjb252ZXJ0ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0ZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb247XG59KCkpO1xuZXhwb3J0cy5FdmVudE1hcHBpbmdSZWdpc3RyYXRpb24gPSBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb247XG52YXIgRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudE1hcHBpbmdSZWdpc3RyeUZhY3RvcnkoKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW5kIHBvcHVsYXRlcyBhIG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyeSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24gbnVtYmVyIHJlcXVlc3RlZFxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZXJzaW9uTnVtYmVyfSB2ZXJzaW9uTnVtYmVyXG4gICAgICogQHJldHVybnMge0V2ZW50TWFwcGluZ1JlZ2lzdHJ5fVxuICAgICAqL1xuICAgIEV2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5jcmVhdGVFdmVudE1hcHBpbmdSZWdpc3RyeSA9IGZ1bmN0aW9uICh2ZXJzaW9uTnVtYmVyKSB7XG4gICAgICAgIHZhciByZWdpc3RyeSA9IHt9O1xuICAgICAgICByZWdpc3RyeVtFdmVudHNfMS5Ob3RpZmljYXRpb25JZC5TZWxlY3Rpb25DaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oRXZlbnRzXzEuTm90aWZpY2F0aW9uSWQuU2VsZWN0aW9uQ2hhbmdlZCwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuTm90aWZpY2F0aW9uSWQuU2VsZWN0ZWRNYXJrc0NoYW5nZWQsIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkKTtcbiAgICAgICAgcmVnaXN0cnlbRXZlbnRzXzEuTm90aWZpY2F0aW9uSWQuUGFyYW1ldGVyQ2hhbmdlZF0gPSBuZXcgRXZlbnRNYXBwaW5nUmVnaXN0cmF0aW9uKEV2ZW50c18xLk5vdGlmaWNhdGlvbklkLlBhcmFtZXRlckNoYW5nZWQsIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLk5vdGlmaWNhdGlvbklkLlBhcmFtZXRlckNoYW5nZWQsIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkQ2FwdGlvblBhaXIpO1xuICAgICAgICByZWdpc3RyeVtFdmVudHNfMS5Ob3RpZmljYXRpb25JZC5GaWx0ZXJDaGFuZ2VkXSA9IG5ldyBFdmVudE1hcHBpbmdSZWdpc3RyYXRpb24oRXZlbnRzXzEuTm90aWZpY2F0aW9uSWQuRmlsdGVyQ2hhbmdlZCwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuTm90aWZpY2F0aW9uSWQuRmlsdGVyQ2hhbmdlZCwgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXJfMS5QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmlsdGVyRXZlbnQpO1xuICAgICAgICByZXR1cm4gcmVnaXN0cnk7XG4gICAgfTtcbiAgICByZXR1cm4gRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5O1xufSgpKTtcbmV4cG9ydHMuRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5ID0gRXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXZlbnRNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL0V2ZW50TWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8qIHRzbGludDpkaXNhYmxlICovXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvZXZlbnRzLXRzLnRlbXBsYXRlJywgdScuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS90ZW1wLXByZXMtbGF5ZXIvYWxsLWV2ZW50cy5kYXRhJ11cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEV2ZW50cyB5b3UgY2FuIHJlZ2lzdGVyIHRvIHJlY2VpdmUgcHJlc2VudGF0aW9uIG1vZGVsc1xudmFyIE5vdGlmaWNhdGlvbklkO1xuKGZ1bmN0aW9uIChOb3RpZmljYXRpb25JZCkge1xuICAgIC8vIFRyaWdnZXJlZCB3aGVuIGFsaWFzZXMgYXJlIHRvIGJlIGVkaXRlZC4gVXNlZCB0byBsYXVuY2ggYSBkaWFsb2cuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJFZGl0QWxpYXNlc0RpYWxvZ05vdGlmaWNhdGlvblwiXSA9IFwiZWRpdC1hbGlhc2VzLWRpYWxvZy1ub3RpZmljYXRpb24tZXZlbnRcIjtcbiAgICAvLyBmb3IgdGhlIGNhbGN1bGF0aW9uIGRpYWxvZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiQ2FsY3VsYXRpb25EaWFsb2dcIl0gPSBcImNhbGN1bGF0aW9uLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIHVwZGF0ZSBmb3IgYW4gYWRob2MgY2FsYyBpbiBhIHR5cGUgaW4gcGlsbFxuICAgIE5vdGlmaWNhdGlvbklkW1wiVHlwZUluUGlsbFwiXSA9IFwidHlwZS1pbi1waWxsLWV2ZW50XCI7XG4gICAgLy8gcmVzdWx0cyBvZiBhIHZhbGlkYXRpb24gY29tbWFuZFxuICAgIE5vdGlmaWNhdGlvbklkW1wiQ29tbWFuZFZhbGlkYXRpb25cIl0gPSBcImNvbW1hbmQtdmFsaWRhdGlvbi1ldmVudFwiO1xuICAgIC8vIGV2ZW50IGZvciB0aGUgZ3JvdXBzIGRpYWxvZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiVXBkYXRlQ2F0ZWdvcmljYWxCaW5FZGl0RGlhbG9nXCJdID0gXCJ1cGRhdGUtY2F0ZWdvcmljYWwtYmluLWVkaXQtZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gZm9yIHRoZSBjYXRlZ29yaWNhbCBjb2xvciBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIkNhdGVnb3JpY2FsQ29sb3JcIl0gPSBcImNhdGVnb3JpY2FsLWNvbG9yLWV2ZW50XCI7XG4gICAgLy8gdXBkYXRlIHRoZSB3ZWIgY2F0ZWdvcmljYWwgY29sb3IgZGlhbG9nXG4gICAgTm90aWZpY2F0aW9uSWRbXCJXZWJDYXRlZ29yaWNhbENvbG9yRGlhbG9nXCJdID0gXCJ3ZWItY2F0ZWdvcmljYWwtY29sb3ItZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gdXNlciBpbnZva2VkIGFjdGlvbiB3aGljaCByZXF1aXJlcyBhIERhdGEgQWxlcnQgRGlhbG9nXG4gICAgTm90aWZpY2F0aW9uSWRbXCJEYXRhQWxlcnREaWFsb2dcIl0gPSBcImRhdGEtYWxlcnQtZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgdG8gc2VsZWN0IGZpZWxkKHMpIGluIHRoZSBkYXRhIHNjaGVtYVxuICAgIE5vdGlmaWNhdGlvbklkW1wiRGF0YVNjaGVtYVNlbGVjdGlvblwiXSA9IFwiZGF0YS1zY2hlbWEtc2VsZWN0aW9uLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgZm9yIHdoZW4gdGhlIGRhdGEgc291cmNlIGJlaW5nIGVkaXRlZCBpcyB1cGRhdGVkXG4gICAgTm90aWZpY2F0aW9uSWRbXCJVcGRhdGVEYXRhUHJlcGFyYXRpb25cIl0gPSBcInVwZGF0ZS1kYXRhLXByZXBhcmF0aW9uLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgZm9yIHdoZW4gdGhlIGRhdGEgc291cmNlIGRhdGEgaXMgdXBkYXRlZFxuICAgIE5vdGlmaWNhdGlvbklkW1wiVXBkYXRlRGF0YVNvdXJjZURhdGFcIl0gPSBcInVwZGF0ZS1kYXRhLXNvdXJjZS1kYXRhLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgZm9yIHdoZW4gYSBjbGllbnQgc2hvdWxkIHJlcXVlc3QgbmV3IGRhdGEgc291cmNlIG9yIGRhdGEgc291cmNlIGRhdGEgcHJlcyBtb2RlbHNcbiAgICBOb3RpZmljYXRpb25JZFtcIkRhdGFTb3VyY2VVcGRhdGVOZWVkZWRcIl0gPSBcImRhdGEtc291cmNlLXVwZGF0ZS1uZWVkZWQtZXZlbnRcIjtcbiAgICAvLyBldmVudCBmb3IgZ2V0dGluZyB0aGUgcHJlcyBtb2RlbCB0byB1cGRhdGUgZmlsZSBqb2luIHRhYmxlIHByb3BlcnRpZXNcbiAgICBOb3RpZmljYXRpb25JZFtcIlRleHRGaWxlUHJvcGVydGllc1wiXSA9IFwidGV4dC1maWxlLXByb3BlcnRpZXMtZXZlbnRcIjtcbiAgICAvLyBldmVudCBmb3IgdGhlIGRldGFpbGVkIGVycm9yIGRpYWxvZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiVXBkYXRlRGV0YWlsZWRFcnJvckRpYWxvZ1wiXSA9IFwidXBkYXRlLWRldGFpbGVkLWVycm9yLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIG5vdGlmeSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBvZiBhIGZpbHRlcidzIHJlbGF0aW9uYWwgbW9kZWxcbiAgICBOb3RpZmljYXRpb25JZFtcIkZpbHRlclJlbGF0aW9uYWxTdGF0ZUNoYW5nZWRcIl0gPSBcImZpbHRlci1yZWxhdGlvbmFsLXN0YXRlLWNoYW5nZWQtZXZlbnRcIjtcbiAgICAvLyBub3RpZnkgY2hhbmdlcyB0byB0aGUgc2l6ZS9zZWxlY3Rpb24gY291bnQgb2YgYSByZWxhdGlvbmFsIGRvbWFpblxuICAgIE5vdGlmaWNhdGlvbklkW1wiRmlsdGVyUmVsYXRpb25hbERvbWFpbkNoYW5nZWRcIl0gPSBcImZpbHRlci1yZWxhdGlvbmFsLWRvbWFpbi1jaGFuZ2VkLWV2ZW50XCI7XG4gICAgLy8gbm90aWZ5IHdoZW4gZmlsdGVyIGNhY2hlIHdhcyByZXF1ZXN0ZWQgYnV0IG5vdCBmb3VuZFxuICAgIE5vdGlmaWNhdGlvbklkW1wiRmlsdGVyQ2FjaGVOb3RGb3VuZFwiXSA9IFwiZmlsdGVyLWNhY2hlLW5vdC1mb3VuZC1ldmVudFwiO1xuICAgIC8vIEhpZXJhcmNoeSBTZWxlY3QgbW9kZWwgb2JzZXJ2YWJsZSBub3RpZmljYXRpb24uXG4gICAgTm90aWZpY2F0aW9uSWRbXCJIaWVyYXJjaHlOb3RpZmljYXRpb25cIl0gPSBcImhpZXJhcmNoeS1ub3RpZmljYXRpb24tZXZlbnRcIjtcbiAgICAvLyBIaWVyYXJjaHkgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgIE5vdGlmaWNhdGlvbklkW1wiSGllcmFyY2h5U2VsZWN0aW9uXCJdID0gXCJoaWVyYXJjaHktc2VsZWN0aW9uLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgZm9yIHRoZSBtYXAgb3B0aW9ucyBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIk1hcE9wdGlvbnNEaWFsb2dcIl0gPSBcIm1hcC1vcHRpb25zLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIG5vdGlmeSB0aGUgUGFnZSBVSShoaWRlL3Nob3cgc3RhdGVzLCBsYXlvdXQpIG5lZWRzIHRvIGJlIHVwZGF0ZWRcbiAgICBOb3RpZmljYXRpb25JZFtcIlVwZGF0ZVBhZ2VVSU5vdGlmaWNhdGlvblwiXSA9IFwidXBkYXRlLXBhZ2UtdWlub3RpZmljYXRpb24tZXZlbnRcIjtcbiAgICAvLyBub3RpZnkgdG8gdGhlIFNjZW5lVmlldyBoYXMgYmVlbiBkcmF3bi5cbiAgICBOb3RpZmljYXRpb25JZFtcIlNjZW5lVmlld0RyYXduTm90aWZpY2F0aW9uXCJdID0gXCJzY2VuZS12aWV3LWRyYXduLW5vdGlmaWNhdGlvbi1ldmVudFwiO1xuICAgIC8vIFRoZSBBbmltYXRpb25Db250cm9sQ2hhbmdlIGV2ZW50IGZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIGFuIGFuaW1hdGlvbiBwbGF5YmFjayBidXR0b246IGZvcndhcmQsIHN0b3AsIHNsb3csIGZhc3QsIGV0Yy5cbiAgICBOb3RpZmljYXRpb25JZFtcIkFuaW1hdGlvbkNvbnRyb2xDaGFuZ2VcIl0gPSBcImFuaW1hdGlvbi1jb250cm9sLWNoYW5nZS1ldmVudFwiO1xuICAgIC8vIG5vdGlmeSB0aGUgc2hlZXQgaGFzIGJlZW4gcmVuYW1lZFxuICAgIE5vdGlmaWNhdGlvbklkW1wiUmVuYW1lU2hlZXROb3RpZmljYXRpb25cIl0gPSBcInJlbmFtZS1zaGVldC1ub3RpZmljYXRpb24tZXZlbnRcIjtcbiAgICAvLyB1cGRhdGUgdGhlIHdlYiBxdWFudGl0YXRpdmUgY29sb3IgZGlhbG9nXG4gICAgTm90aWZpY2F0aW9uSWRbXCJXZWJRdWFudGl0YXRpdmVDb2xvckRpYWxvZ1wiXSA9IFwid2ViLXF1YW50aXRhdGl2ZS1jb2xvci1kaWFsb2ctZXZlbnRcIjtcbiAgICAvLyB1cGRhdGUgdGhlIGF4aXMgZWRpdCBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIlVwZGF0ZUVkaXRBeGlzRGlhbG9nXCJdID0gXCJ1cGRhdGUtZWRpdC1heGlzLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIGV2ZW50IGZvciB0aGUgcmVmZXJlbmNlIGxpbmUgZGlhbG9nLCB3aGljaCBpcyBvbmx5IHZhbGlkIGR1cmluZyB3ZWIgYXV0aG9yaW5nXG4gICAgTm90aWZpY2F0aW9uSWRbXCJVcGRhdGVSZWZMaW5lRGlhbG9nXCJdID0gXCJ1cGRhdGUtcmVmLWxpbmUtZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgdG8gdHJpZ2dlciBvdGhlciByZWZlcmVuY2UgbGluZSBkaWFsb2dzIHRvIGNsb3NlXG4gICAgTm90aWZpY2F0aW9uSWRbXCJSZWZMaW5lRGlhbG9nT3BlbmluZ1wiXSA9IFwicmVmLWxpbmUtZGlhbG9nLW9wZW5pbmctZXZlbnRcIjtcbiAgICAvLyBldmVudCBmb3IgdGhlIGNsb3NlIGRhdGEgc291cmNlIGVycm9yIGRpYWxvZywgd2hpY2ggaXMgb25seSB2YWxpZCBkdXJpbmcgd2ViIGF1dGhvcmluZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiQ2xvc2VEYXRhU291cmNlRXJyb3JEaWFsb2dcIl0gPSBcImNsb3NlLWRhdGEtc291cmNlLWVycm9yLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIHVwZGF0ZSB0aGUgd2ViIFNhdmUgRGF0YXNvdXJjZSBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIldlYlNhdmVEYXRhc291cmNlRGlhbG9nXCJdID0gXCJ3ZWItc2F2ZS1kYXRhc291cmNlLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIHdhcm5pbmcgcmVzdWx0aW5nIGZyb20gV2FybmluZ01zZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiV2FybmluZ01lc3NhZ2VcIl0gPSBcIndhcm5pbmctbWVzc2FnZS1ldmVudFwiO1xuICAgIC8vIGV2ZW50IGZvciB0aGUgdGFibGUgY2FsYyBkaWFsb2csIG9uIHdlYiwgdGhpcyBpcyBvbmx5IHZhbGlkIGR1cmluZyB3ZWIgYXV0aG9yaW5nXG4gICAgTm90aWZpY2F0aW9uSWRbXCJUYWJsZUNhbGNEaWFsb2dcIl0gPSBcInRhYmxlLWNhbGMtZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gdXNlciBpbnZva2VkIGFjdGlvbiB3aGljaCByZXF1aXJlcyBUYWJsZSBDYWxjIERpYWxvZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiVGFibGVDYWxjQWN0aXZhdGVEaWFsb2dcIl0gPSBcInRhYmxlLWNhbGMtYWN0aXZhdGUtZGlhbG9nLWV2ZW50XCI7XG4gICAgLy8gZXZlbnQgZm9yIHRoZSB0cmVuZCBsaW5lIGRpYWxvZ1xuICAgIE5vdGlmaWNhdGlvbklkW1wiVXBkYXRlVHJlbmRMaW5lRWRpdERpYWxvZ1wiXSA9IFwidXBkYXRlLXRyZW5kLWxpbmUtZWRpdC1kaWFsb2ctZXZlbnRcIjtcbiAgICAvLyBUaGUgdGFibGUgcGFnZSBjYWNoZSBoYXMgYmVlbiByZWZyZXNoZWQ7IHBhZ2VzIG11c3QgYmUgcmVsb2FkZWQgZnJvbSB0aGUgY2FjaGUuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJQYWdlQ2FjaGVSZWZyZXNoXCJdID0gXCJwYWdlLWNhY2hlLXJlZnJlc2gtZXZlbnRcIjtcbiAgICAvLyBUaGUgdGFibGUgcGFnZSBjYWNoZSBoYXMgZXhwaXJlZCBhbmQgYWxsIHJlc291cmNlcyBoYXZlIGJlZW4gcmVsZWFzZWQuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJQYWdlQ2FjaGVFeHBpcmVkXCJdID0gXCJwYWdlLWNhY2hlLWV4cGlyZWQtZXZlbnRcIjtcbiAgICAvLyBBbGwgcGFnZXMsIGlkZW50aWZpZWQgYnkgcm93L2NvbCwgaW4gdGhlIHByb3ZpZGVkIGxpc3QgaGF2ZSBleHBpcmVkIGFuZCBzaG91bGQgYmUgcmVsb2FkZWQuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJQYWdlQ2FjaGVQYWdlc0V4cGlyZWRcIl0gPSBcInBhZ2UtY2FjaGUtcGFnZXMtZXhwaXJlZC1ldmVudFwiO1xuICAgIC8vIEFsbCBwYWdlcyBiZXR3ZWVtIHRoZSByYW5nZSAoaW5jbHVzaXZlKSBpbiB0aGUgcHJvdmlkZWQgbGlzdCBoYXZlIGV4cGlyZWQgYW5kIHNob3VsZCBiZSByZWxvYWRlZC5cbiAgICBOb3RpZmljYXRpb25JZFtcIlBhZ2VDYWNoZVBhZ2VSYW5nZUV4cGlyZWRcIl0gPSBcInBhZ2UtY2FjaGUtcGFnZS1yYW5nZS1leHBpcmVkLWV2ZW50XCI7XG4gICAgLy8gVXBkYXRlIGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIlJpY2hUZXh0RWRpdG9yRGlhbG9nXCJdID0gXCJyaWNoLXRleHQtZWRpdG9yLWRpYWxvZy1ldmVudFwiO1xuICAgIC8vIFRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIHJlbG9hZCBhbiBhZGQtaW4gaW5zdGFuY2UuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJSZWxvYWRBZGRJblwiXSA9IFwicmVsb2FkLWFkZC1pbi1ldmVudFwiO1xuICAgIC8vIFRyaWdnZXJlZCB3aGVuIHRoZSBzZWxlY3RlZCBtYXJrcyBoYXZlIGNoYW5nZWQuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJTZWxlY3Rpb25DaGFuZ2VkXCJdID0gXCJzZWxlY3Rpb24tY2hhbmdlZC1ldmVudFwiO1xuICAgIC8vIFRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlciBoYXMgY2hhbmdlZC4gRW1pdHMgdGhlIG5hbWUgYW5kIGNhcHRpb24gb2YgdGhlIHBhcmFtZXRlclxuICAgIE5vdGlmaWNhdGlvbklkW1wiUGFyYW1ldGVyQ2hhbmdlZFwiXSA9IFwicGFyYW1ldGVyLWNoYW5nZWQtZXZlbnRcIjtcbiAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgZmlsdGVycyBoYXZlIGNoYW5nZWQuXG4gICAgTm90aWZpY2F0aW9uSWRbXCJGaWx0ZXJDaGFuZ2VkXCJdID0gXCJmaWx0ZXItY2hhbmdlZC1ldmVudFwiO1xuICAgIC8vIG5vdGlmaWNhdGlvbiB0byBsYXVuY2ggdGhlIGh5YnJpZCBVSSBzaG93Y2FzZVxuICAgIE5vdGlmaWNhdGlvbklkW1wiTGF1bmNoSHlicmlkVUlTaG93Y2FzZVwiXSA9IFwibGF1bmNoLWh5YnJpZC11aXNob3djYXNlLWV2ZW50XCI7XG4gICAgLy8gbm90aWZpY2F0aW9uIG9mIG5ldyBlY2hvZWQgdGV4dCBmb3IgSHlicmlkVUkgc2hvd2Nhc2UgZGVtb1xuICAgIE5vdGlmaWNhdGlvbklkW1wiSHlicmlkVUlTaG93Y2FzZUVjaG9cIl0gPSBcImh5YnJpZC11aXNob3djYXNlLWVjaG8tZXZlbnRcIjtcbiAgICAvLyBldmVudCBmb3IgdGhlIGJpbiBkaWFsb2dcbiAgICBOb3RpZmljYXRpb25JZFtcIlVwZGF0ZU51bWVyaWNCaW5FZGl0RGlhbG9nXCJdID0gXCJ1cGRhdGUtbnVtZXJpYy1iaW4tZWRpdC1kaWFsb2ctZXZlbnRcIjtcbiAgICAvLyBhIHRlc3QgZXZlbnQgd2l0aCBhIHByZXMgbW9kZWxcbiAgICBOb3RpZmljYXRpb25JZFtcIlRlc3RFdmVudFdpdGhNb2RlbFwiXSA9IFwidGVzdC1ldmVudC13aXRoLW1vZGVsLWV2ZW50XCI7XG4gICAgLy8gYSB0ZXN0IGV2ZW50IHdpdGhvdXQgYSBwcmVzIG1vZGVsXG4gICAgTm90aWZpY2F0aW9uSWRbXCJUZXN0RXZlbnRXaXRob3V0TW9kZWxcIl0gPSBcInRlc3QtZXZlbnQtd2l0aG91dC1tb2RlbC1ldmVudFwiO1xufSkoTm90aWZpY2F0aW9uSWQgPSBleHBvcnRzLk5vdGlmaWNhdGlvbklkIHx8IChleHBvcnRzLk5vdGlmaWNhdGlvbklkID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUV2ZW50cy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL2dlbi1zcmMvcHJlc2xheWVyL0V2ZW50cy5qc1xuICoqIG1vZHVsZSBpZCA9IDE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBBcGkgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV91dGlsc18xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS11dGlsc1wiKTtcbnZhciBFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuL0VudW1NYXBwaW5nc1wiKTtcbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBoZWxwZXIgbWV0aG9kcyBmb3IgY29udmVydGluZyBmcm9tIFByZXNMYXllclByZXNNb2RlbHMgdG8gdGhlaXIgQXBpUHJlc01vZGVscyBlcXVpdmFsZW50c1xuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlclxuICovXG52YXIgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFByZXNMYXllclRvQXBpQ29udmVydGVyKCkge1xuICAgIH1cbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0U2hlZXRQYXRoID0gZnVuY3Rpb24gKHBsU2hlZXRQYXRoKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBzaGVldE5hbWU6IHBsU2hlZXRQYXRoLnNoZWV0TmFtZSxcbiAgICAgICAgICAgIGlzRGFzaGJvYXJkOiBwbFNoZWV0UGF0aC5pc0Rhc2hib2FyZCxcbiAgICAgICAgICAgIHN0b3J5Ym9hcmQ6IHBsU2hlZXRQYXRoLnN0b3J5Ym9hcmQsXG4gICAgICAgICAgICBmbGlwYm9hcmRab25lSUQ6IHBsU2hlZXRQYXRoLmZsaXBib2FyZFpvbmVJZCxcbiAgICAgICAgICAgIHN0b3J5UG9pbnRJRDogcGxTaGVldFBhdGguc3RvcnlQb2ludElkLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkID0gZnVuY3Rpb24gKHBsVmlzdWFsSWQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHdvcmtzaGVldDogcGxWaXN1YWxJZC53b3Jrc2hlZXQsXG4gICAgICAgICAgICBkYXNoYm9hcmQ6IHBsVmlzdWFsSWQuZGFzaGJvYXJkLFxuICAgICAgICAgICAgc3Rvcnlib2FyZDogcGxWaXN1YWxJZC5zdG9yeWJvYXJkLFxuICAgICAgICAgICAgZmxpcGJvYXJkWm9uZUlEOiBwbFZpc3VhbElkLmZsaXBib2FyZFpvbmVJZCxcbiAgICAgICAgICAgIHN0b3J5UG9pbnRJRDogcGxWaXN1YWxJZC5zdG9yeVBvaW50SWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0QWRkSW5Mb2NhdG9yID0gZnVuY3Rpb24gKHBsQWRkSW5Mb2NhdG9yKSB7XG4gICAgICAgIHZhciBkYXNoYm9hcmRQYXRoID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocGxBZGRJbkxvY2F0b3Iuc2hlZXRQYXRoKSB7XG4gICAgICAgICAgICBkYXNoYm9hcmRQYXRoID0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbEFkZEluTG9jYXRvci5zaGVldFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBpbnN0YW5jZUlkOiBwbEFkZEluTG9jYXRvci5hZGRJbkluc3RhbmNlSWQsXG4gICAgICAgICAgICBkYXNoYm9hcmRQYXRoOiBkYXNoYm9hcmRQYXRoXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RGFzaGJvYXJkSW5ab25lcyA9IGZ1bmN0aW9uIChwbERhc2hib2FyZCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhwbERhc2hib2FyZC56b25lcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgem9uZUtleSA9IF9hW19pXTtcbiAgICAgICAgICAgIHZhciB6b25lID0gcGxEYXNoYm9hcmQuem9uZXNbem9uZUtleV07XG4gICAgICAgICAgICB2YXIgYXBpWm9uZSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB6b25lLnpvbmVDb21tb24ubmFtZSxcbiAgICAgICAgICAgICAgICB6b25lSWQ6IHpvbmUuem9uZUlkLFxuICAgICAgICAgICAgICAgIHpvbmVUeXBlOiBFbnVtTWFwcGluZ3NfMS5QcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy56b25lVHlwZS5jb252ZXJ0KHpvbmUuem9uZUNvbW1vbi56b25lVHlwZSksXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB6b25lLnpvbmVDb21tb24uaCxcbiAgICAgICAgICAgICAgICB3aWR0aDogem9uZS56b25lQ29tbW9uLncsXG4gICAgICAgICAgICAgICAgeDogem9uZS56b25lQ29tbW9uLngsXG4gICAgICAgICAgICAgICAgeTogem9uZS56b25lQ29tbW9uLnlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXN1bHQucHVzaChhcGlab25lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydERhc2hib2FyZEluZm8gPSBmdW5jdGlvbiAocGxEYXNoYm9hcmRJbmZvKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICB6b25lczogUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydERhc2hib2FyZEluWm9uZXMocGxEYXNoYm9hcmRJbmZvLmRhc2hib2FyZFByZXNNb2RlbCksXG4gICAgICAgICAgICBuYW1lOiBwbERhc2hib2FyZEluZm8uZGFzaGJvYXJkUHJlc01vZGVsLnNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICAgICAgICBhZGRJblpvbmVJZDogcGxEYXNoYm9hcmRJbmZvLnpvbmVJZCxcbiAgICAgICAgICAgIHNpemU6IHBsRGFzaGJvYXJkSW5mby5kYXNoYm9hcmRQcmVzTW9kZWwudmlld3BvcnRTaXplXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0QWRkSW5JbnN0YW5jZSA9IGZ1bmN0aW9uIChwbEFkZEluSW5zdGFuY2UpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogcGxBZGRJbkluc3RhbmNlLmFkZEluUmVnaXN0cmF0aW9uUHJlc01vZGVsLnVybCxcbiAgICAgICAgICAgIGxvY2F0b3I6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRBZGRJbkxvY2F0b3IocGxBZGRJbkluc3RhbmNlLmFkZEluTG9jYXRvclByZXNNb2RlbClcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRBZGRJbkVuaXZyaW9ubWVudCA9IGZ1bmN0aW9uIChwbEFkZEluRW52aXJvbm1lbnQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGFkZEluQ29udGV4dDogRW51bU1hcHBpbmdzXzEuUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuYWRkSW5Db250ZXh0LmNvbnZlcnQocGxBZGRJbkVudmlyb25tZW50LmFkZEluQ29udGV4dCksXG4gICAgICAgICAgICBhZGRJbk1vZGU6IEVudW1NYXBwaW5nc18xLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmFkZEluTW9kZS5jb252ZXJ0KHBsQWRkSW5FbnZpcm9ubWVudC5hZGRJbk1vZGUpLFxuICAgICAgICAgICAgYWRkSW5Mb2NhbGU6IHBsQWRkSW5FbnZpcm9ubWVudC5hZGRJbkxvY2FsZSxcbiAgICAgICAgICAgIGFkZEluTGFuZ3VhZ2U6IHBsQWRkSW5FbnZpcm9ubWVudC5hZGRJbkxhbmd1YWdlLFxuICAgICAgICAgICAgdGFibGVhdVZlcnNpb246IHBsQWRkSW5FbnZpcm9ubWVudC50YWJsZWF1VmVyc2lvbixcbiAgICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbTogcGxBZGRJbkVudmlyb25tZW50Lm9wZXJhdGluZ1N5c3RlbSxcbiAgICAgICAgICAgIGFwaVZlcnNpb246IHBsQWRkSW5FbnZpcm9ubWVudC5hcGlWZXJzaW9uXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0QWRkSW5TZXR0aW5nc0luZm8gPSBmdW5jdGlvbiAocGxBZGRJblNldHRpbmdzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICAvLyBhZGRJblNldHRpbmdzIGlzIHVuZGVmaW5lZCBkdXJpbmcgYm9vdHN0cmFwIGluaXRpYWxpemF0aW9uXG4gICAgICAgICAgICBzZXR0aW5nc1ZhbHVlczogcGxBZGRJblNldHRpbmdzLmFkZEluU2V0dGluZ3MgfHwge31cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRBZGRJbkJvb3RzdHJhcEluZm8gPSBmdW5jdGlvbiAocGxCb290c3RyYXBJbmZvKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBhZGRpbkRhc2hib2FyZEluZm86IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXNoYm9hcmRJbmZvKHBsQm9vdHN0cmFwSW5mby5hZGRJbkRhc2hib2FyZEluZm9QcmVzTW9kZWwpLFxuICAgICAgICAgICAgYWRkSW5FbnZpcm9ubWVudDogUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEFkZEluRW5pdnJpb25tZW50KHBsQm9vdHN0cmFwSW5mby5hZGRJbkVudmlyb25tZW50UHJlc01vZGVsKSxcbiAgICAgICAgICAgIGFkZEluSW5zdGFuY2U6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRBZGRJbkluc3RhbmNlKHBsQm9vdHN0cmFwSW5mby5hZGRJbkluc3RhbmNlUHJlc01vZGVsKSxcbiAgICAgICAgICAgIGFkZEluU2V0dGluZ3NJbmZvOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0QWRkSW5TZXR0aW5nc0luZm8ocGxCb290c3RyYXBJbmZvLmFkZEluU2V0dGluZ3NJbmZvKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkQ2FwdGlvblBhaXIgPSBmdW5jdGlvbiAocGxGaWVsZENhcHRpb25QYWlyKSB7XG4gICAgICAgIHJldHVybiBwbEZpZWxkQ2FwdGlvblBhaXIuZm47XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmlsdGVyRXZlbnQgPSBmdW5jdGlvbiAocGxGaWx0ZXJFdmVudCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgICAgdmlzdWFsSWQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZChwbEZpbHRlckV2ZW50LnZpc3VhbElkUHJlc01vZGVsKSxcbiAgICAgICAgICAgIGZpZWxkTmFtZTogcGxGaWx0ZXJFdmVudC5maWVsZENhcHRpb25cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnREYXRhU2NoZW1hID0gZnVuY3Rpb24gKGRhdGFTY2hlbWEpIHtcbiAgICAgICAgdmFyIGFwaURhdGFTb3VyY2VzID0ge307XG4gICAgICAgIGFwaV91dGlsc18xLlBhcmFtLnZlcmlmeVZhbHVlKGRhdGFTY2hlbWEsICdkYXRhU2NoZW1hJyk7XG4gICAgICAgIGFwaV91dGlsc18xLlBhcmFtLnZlcmlmeVZhbHVlKGRhdGFTY2hlbWEuZGF0YVNvdXJjZXMsICdkYXRhU2NoZW1hLmRhdGFTb3VyY2VzJyk7XG4gICAgICAgIC8vIENvbnZlcnQgZWFjaCBwcmVzIGxheWVyIGRhdGFzb3VyY2UgaW4gdGhlIHNjaGVtYSB0byBhbiBBcGkgZGF0YXNvdXJjZVxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhU2NoZW1hLmRhdGFTb3VyY2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIC8vIFNraXAgdGhlIGRlZmF1bHQgUGFyYW1ldGVycyBkYXRhc291cmNlIHdlIHJlY2VpdmUgZnJvbSB0aGUgcGxhdGZvcm0uXG4gICAgICAgICAgICBpZiAoZGF0YVNjaGVtYS5kYXRhU291cmNlc1trZXldLmRhdGFzb3VyY2UgIT09IFByZXNMYXllclRvQXBpQ29udmVydGVyLlBBUkFNRVRFUlNfREJfTkFNRSkge1xuICAgICAgICAgICAgICAgIGFwaURhdGFTb3VyY2VzW2tleV0gPSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RGF0YVNvdXJjZShkYXRhU2NoZW1hLmRhdGFTb3VyY2VzW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHNjaGVtYU1hcCA9IFByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRXb3Jrc2hlZXREYXRhU2NoZW1hTWFwKGRhdGFTY2hlbWEud29ya3NoZWV0RGF0YVNjaGVtYU1hcCk7XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBkYXRhU291cmNlczogYXBpRGF0YVNvdXJjZXMsXG4gICAgICAgICAgICB3b3Jrc2hlZXREYXRhU2NoZW1hTWFwOiBzY2hlbWFNYXAsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RGF0YVNvdXJjZSA9IGZ1bmN0aW9uIChkYXRhU291cmNlKSB7XG4gICAgICAgIHZhciBleHRyYWN0VXBkYXRlVGltZSA9IChkYXRhU291cmNlLmV4dHJhY3RVcGRhdGVUaW1lID09PSAnJykgPyB1bmRlZmluZWQgOiBkYXRhU291cmNlLmV4dHJhY3RVcGRhdGVUaW1lO1xuICAgICAgICB2YXIgZGF0YVNvdXJjZUZpZWxkcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBhcGlfdXRpbHNfMS5QYXJhbS52ZXJpZnlWYWx1ZShkYXRhU291cmNlLCAnZGF0YVNvdXJjZScpO1xuICAgICAgICBhcGlfdXRpbHNfMS5QYXJhbS52ZXJpZnlWYWx1ZShkYXRhU291cmNlLmZpZWxkTGlzdCwgJ2RhdGFTY2hlbWEuZmllbGRMaXN0Jyk7XG4gICAgICAgIGRhdGFTb3VyY2UuZmllbGRMaXN0LmZvckVhY2goZnVuY3Rpb24gKHBsRmllbGQpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBkYXRhc291cmNlIGNvbnRhaW5zIGhpZXJhcmNoaWVzIG9yIGZvbGRlcnMsIHRoZSBiYXNlIGZpZWxkIHdpbGwgY29udGFpblxuICAgICAgICAgICAgLy8gYSBsaXN0IG9mIHRoZSBmaWVsZHMgZ3JvdXBlZCBiZW5lYXRoIGl0LCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aG9zZS5cbiAgICAgICAgICAgIC8vIFRhYmxlYXUgZG9lcyBub3Qgc3VwcG9ydCBuZXN0ZWQgZm9sZGVycyBvciBoaWVyYXJjaGllcywgc28gdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlY3Vyc2l2ZS5cbiAgICAgICAgICAgIHZhciBoaWVyYXJjaHlNb2RlbCA9IHBsRmllbGQ7XG4gICAgICAgICAgICBpZiAoaGllcmFyY2h5TW9kZWwuY29sdW1uTGlzdCkge1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeU1vZGVsLmNvbHVtbkxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIGRhdGFTb3VyY2VGaWVsZHMucHVzaChQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0RmllbGQoZmllbGQpKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGJyaXR0bGUgZm9yIG5vdywgYnV0IHRoaXMgdmFsdWUgaXMgbm90IGV4cG9zZWQgdmlhIHRoZSBwbGF0Zm9ybSBGaWVsZFR5cGUgRW51bS5cbiAgICAgICAgICAgICAgICBpZiAocGxGaWVsZC50eXBlICE9PSAnZmllbGQtZm9sZGVyJykge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlRmllbGRzLnB1c2goUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkKHBsRmllbGQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgICAgbmFtZTogZGF0YVNvdXJjZS5kYXRhc291cmNlQ2FwdGlvbixcbiAgICAgICAgICAgIGlkOiBkYXRhU291cmNlLmRhdGFzb3VyY2UsXG4gICAgICAgICAgICBpc0V4dHJhY3Q6IChleHRyYWN0VXBkYXRlVGltZSAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGV4dHJhY3RVcGRhdGVUaW1lOiBleHRyYWN0VXBkYXRlVGltZSxcbiAgICAgICAgICAgIGZpZWxkczogZGF0YVNvdXJjZUZpZWxkc1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFdvcmtzaGVldERhdGFTY2hlbWFNYXAgPSBmdW5jdGlvbiAoc2NoZW1hTWFwKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoc2NoZW1hTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVtb3ZlIGFueSByZWZlcmVuY2VzIHRvIHRoZSBcIlBhcmFtZXRlcnNcIiBkYXRhc291cmNlLiAgVGhpcyBpcyB0cmVhdGVkIGFzIGEgc2VwYXJhdGVcbiAgICAgICAgICAgIC8vIGRhdGFzb3VyY2UgYnkgdGhlIHBsYXRmb3JtLCBidXQgdGhlIEV4dGVuc2lvbnMgQVBJIGFjY2Vzc2VzIFBhcmFtZXRlcnMgZGlyZWN0bHkuXG4gICAgICAgICAgICB2YXIgY2xlYW5SZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QgPSBzY2hlbWFNYXBba2V5XS5yZWZlcmVuY2VkRGF0YVNvdXJjZUxpc3QuZmlsdGVyKGZ1bmN0aW9uIChkc05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHNOYW1lICE9PSBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5QQVJBTUVURVJTX0RCX05BTUU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciB3b3Jrc2hlZXREYXRhU291cmNlSW5mbyA9IHtcbiAgICAgICAgICAgICAgICBwcmltYXJ5RGF0YVNvdXJjZTogc2NoZW1hTWFwW2tleV0ucHJpbWFyeURhdGFzb3VyY2UsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0OiBjbGVhblJlZmVyZW5jZWREYXRhU291cmNlTGlzdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gd29ya3NoZWV0RGF0YVNvdXJjZUluZm87XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEZpZWxkID0gZnVuY3Rpb24gKHBsRmllbGQpIHtcbiAgICAgICAgdmFyIGZpZWxkQ29sdW1uID0gcGxGaWVsZDtcbiAgICAgICAgdmFyIGdyb3VwQ29sdW1uID0gcGxGaWVsZDtcbiAgICAgICAgdmFyIGFnZ3JlZ2F0aW9uID0gQXBpLkZpZWxkQWdncmVnYXRpb25UeXBlLk5vbmU7XG4gICAgICAgIHZhciByb2xlID0gQXBpLkZpZWxkUm9sZVR5cGUuVW5rbm93bjtcbiAgICAgICAgdmFyIGlzQ2FsY3VsYXRlZCA9IGZhbHNlO1xuICAgICAgICAvLyBXZSBleHBlY3QgdGhhdCBldmVyeSBGaWVsZFByZXNNb2RlbCB3ZSBnZXQgYmFjayBmcm9tIHRoZSBjb21tYW5kIHRoYXQgcmV0dXJucyBGaWVsZFByZXNNb2RlbHNcbiAgICAgICAgLy8gaXMgYWN0dWFsbHkgYW4gaW5zdGFuY2Ugb2YgdGhlIGRlcml2ZWQgRmllbGRDb2x1bW5QcmVzTW9kZWwuXG4gICAgICAgIGlmIChmaWVsZENvbHVtbi5hZ2dyZWdhdGlvbiAmJiBmaWVsZENvbHVtbi5maWVsZFJvbGUpIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uID0gRW51bU1hcHBpbmdzXzEuUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuZmllbGRBZ2dyZWdhdGlvblR5cGUuY29udmVydChmaWVsZENvbHVtbi5hZ2dyZWdhdGlvbik7XG4gICAgICAgICAgICByb2xlID0gRW51bU1hcHBpbmdzXzEuUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuZmllbGRSb2xlVHlwZS5jb252ZXJ0KGZpZWxkQ29sdW1uLmZpZWxkUm9sZSk7XG4gICAgICAgICAgICBpc0NhbGN1bGF0ZWQgPSBmaWVsZENvbHVtbi5pc0NhbGN1bGF0ZWQgfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgSW50ZXJuYWwgRXJyb3I6IGZpZWxkIHByZXMgbW9kZWwgaXMgbWlzc2luZyBleHBlY3RlZCBwcm9wZXJ0aWVzLicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBuYW1lOiBwbEZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaWQ6IHBsRmllbGQubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwbEZpZWxkLnVzZXJDYXB0aW9uLFxuICAgICAgICAgICAgYWdncmVnYXRpb246IGFnZ3JlZ2F0aW9uLFxuICAgICAgICAgICAgaXNIaWRkZW46ICEhKHBsRmllbGQuaXNIaWRkZW4pLFxuICAgICAgICAgICAgaXNHZW5lcmF0ZWQ6IHBsRmllbGQuaXNHZW5lcmF0ZWQsXG4gICAgICAgICAgICBpc0NhbGN1bGF0ZWRGaWVsZDogaXNDYWxjdWxhdGVkLFxuICAgICAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgICAgIGlzQ29tYmluZWRGaWVsZDogISEoZ3JvdXBDb2x1bW4uaXNDb21iaW5lZEZpZWxkKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuUEFSQU1FVEVSU19EQl9OQU1FID0gJ1BhcmFtZXRlcnMnO1xuICAgIHJldHVybiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcjtcbn0oKSk7XG5leHBvcnRzLlByZXNMYXllclRvQXBpQ29udmVydGVyID0gUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cbiAqXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFbnVtQ29udmVydGVyXzEgPSByZXF1aXJlKFwiLi9FbnVtQ29udmVydGVyXCIpO1xuZXhwb3J0cy5FbnVtQ29udmVydGVyID0gRW51bUNvbnZlcnRlcl8xLkVudW1Db252ZXJ0ZXI7XG52YXIgUGFyYW1fMSA9IHJlcXVpcmUoXCIuL1BhcmFtXCIpO1xuZXhwb3J0cy5QYXJhbSA9IFBhcmFtXzEuUGFyYW07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcGlVdGlscy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9BcGlVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDE4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogVGhpcyBjbGFzcyBjb252ZXJ0cyBmcm9tIGEgc291cmNlIGVudW0gdmFsdWUgdG8gZGVzdGluYXRpb24gZW51bVxuICogdmFsdWUgZ2l2ZW4gYSBtYXBwaW5nIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIHdoZW4gY29uc3RydWN0ZWQuXG4gKi9cbnZhciBFbnVtQ29udmVydGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFbnVtQ29udmVydGVyKF9tYXBwaW5ncywgX2RlZmF1bHRWYWwpIHtcbiAgICAgICAgdGhpcy5fbWFwcGluZ3MgPSBfbWFwcGluZ3M7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWwgPSBfZGVmYXVsdFZhbDtcbiAgICB9XG4gICAgRW51bUNvbnZlcnRlci5wcm90b3R5cGUuY29udmVydCA9IGZ1bmN0aW9uIChlbnVtVmFsLCB0aHJvd0lmTWlzc2luZykge1xuICAgICAgICBpZiAodGhpcy5fbWFwcGluZ3MuaGFzT3duUHJvcGVydHkoZW51bVZhbCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdFZhbCAhPT0gdW5kZWZpbmVkICYmICF0aHJvd0lmTWlzc2luZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXBwaW5nIG5vdCBmb3VuZCBmb3IgJyArIGVudW1WYWwpO1xuICAgIH07XG4gICAgcmV0dXJuIEVudW1Db252ZXJ0ZXI7XG59KCkpO1xuZXhwb3J0cy5FbnVtQ29udmVydGVyID0gRW51bUNvbnZlcnRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudW1Db252ZXJ0ZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS11dGlscy9saWIvRW51bUNvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJhbSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGFyYW0oKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgYW4gaW5jb21pbmcgcGFyYW1ldGVyIGlzICd0cnV0aHknIGFuZCB0aHJvd3NcbiAgICAgKiBhbiBlcnJvciBpZiBpdCdzIG5vdC4gVGhpcyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSB2YWx1ZVxuICAgICAqIGlzIG51bGwsIHVuZGVmaW5lZCwgTmFOLCB0aGUgZW1wdHkgc3RyaW5nLCAwLCBvciBmYWxzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcbiAgICAgKi9cbiAgICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgIFBhcmFtLnZlcmlmeVZhbHVlID0gZnVuY3Rpb24gKGFyZ3VtZW50VmFsdWUsIGFyZ3VtZW50TmFtZSkge1xuICAgICAgICBpZiAoIWFyZ3VtZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IGEgc3RyaW5nIGlzIHZhbGlkLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgaXNcbiAgICAgKiBudWxsLCB1bmRlZmluZWQsIG9yIE5hTi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcbiAgICAgKi9cbiAgICBQYXJhbS52ZXJpZnlTdHJpbmcgPSBmdW5jdGlvbiAoYXJndW1lbnRWYWx1ZSwgYXJndW1lbnROYW1lKSB7XG4gICAgICAgIGlmIChhcmd1bWVudFZhbHVlID09PSBudWxsIHx8IGFyZ3VtZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGUgdmFsdWUgaXMgcGFydCBvZiB0aGUgRW51bVxuICAgICAqXG4gICAgICogU3RyaW5nIGVudW1zIGFyZSB7c3RyaW5nIDogc3RyaW5nfSBkaWN0aW9uYXJpZXMgd2hpY2ggYXJlIG5vdCByZXZlcnNlIG1hcHBhYmxlXG4gICAgICogVGhpcyBpcyBhbiB1Z2x5IHdvcmthcm91bmRcbiAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gdmVyaWZ5XG4gICAgICogQHBhcmFtIGVudW1UeXBlIGVudW0gdG8gdmVyaWZ5IGFnYWluc3RcbiAgICAgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cbiAgICBQYXJhbS5pc1ZhbGlkRW51bVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBlbnVtVHlwZSkge1xuICAgICAgICB2YXIgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaChmdW5jdGlvbiAoZW51bUtleSkge1xuICAgICAgICAgICAgaWYgKGVudW1UeXBlW2VudW1LZXldID09PSB2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9O1xuICAgIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXG4gICAgLyoqXG4gICAgICogc2VyaWFsaXplcyB0aGUgZGF0ZSBpbnRvIHRoZSBmb3JtYXQgdGhhdCB0aGUgc2VydmVyIGV4cGVjdHMuXG4gICAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gc2VyaWFsaXplXG4gICAgICovXG4gICAgUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKSArIDE7XG4gICAgICAgIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgdmFyIGhoID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICB2YXIgbW0gPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgdmFyIHNlYyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xuICAgICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgJyAnICsgaGggKyAnOicgKyBtbSArICc6JyArIHNlYztcbiAgICB9O1xuICAgIFBhcmFtLnNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybSA9IGZ1bmN0aW9uIChib29sKSB7XG4gICAgICAgIHJldHVybiBib29sID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9O1xuICAgIFBhcmFtLnNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtID0gZnVuY3Rpb24gKG51bSkge1xuICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKDEwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoZSBwYXJhbXMgbWluIGFuZCBtYXggZm9yIGFwcGx5aW5nIHJhbmdlIGZpbHRlclxuICAgICAqIEBwYXJhbSBtaW4gcmFuZ2UgbWluXG4gICAgICogQHBhcmFtIG1heCByYW5nZSBtYXhcbiAgICAgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cbiAgICBQYXJhbS52ZXJpZnlSYW5nZVBhcmFtVHlwZSA9IGZ1bmN0aW9uIChtaW4sIG1heCkge1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuICAgICAgICBpZiAoIW1pbiAmJiAhbWF4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgUGFyYW1ldGVyOiBBdCBsZWFzdCBvbmUgb2YgbWluIG9yIG1heCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1pbikgJiYgIVBhcmFtLmlzVHlwZURhdGUobWluKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1pbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1heCkgJiYgIVBhcmFtLmlzVHlwZURhdGUobWF4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1heCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgKG1pbikgIT09IHR5cGVvZiAobWF4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBQYXJhbWV0ZXJzIG1pbiBhbmQgbWF4IHNob3VsZCBiZSBvZiB0aGUgc2FtZSB0eXBlJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxuICAgICAqL1xuICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xuICAgIFBhcmFtLmlzVHlwZU51bWJlciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIChpbnB1dCkgPT09ICdudW1iZXInIHx8IGlucHV0IGluc3RhbmNlb2YgTnVtYmVyO1xuICAgIH07XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGUgaW5wdXQgaXMgYSBEYXRlXG4gICAgICovXG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlRGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xuICAgIH07XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlU3RyaW5nID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgKGlucHV0KSA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG4gICAgfTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlQm9vbCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIChpbnB1dCkgPT09ICdib29sZWFuJyB8fCBpbnB1dCBpbnN0YW5jZW9mIEJvb2xlYW47XG4gICAgfTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uc2VyaWFsaXplUGFyYW10ZXJWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAoUGFyYW0uaXNUeXBlTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChQYXJhbS5pc1R5cGVEYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoUGFyYW0uaXNUeXBlQm9vbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJhbS5zZXJpYWxpemVCb29sZWFuRm9yUGxhdGZvcm0odmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFBhcmFtLmlzVHlwZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6IHZhbHVlJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBQYXJhbTtcbn0oKSk7XG5leHBvcnRzLlBhcmFtID0gUGFyYW07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9QYXJhbS5qc1xuICoqIG1vZHVsZSBpZCA9IDIwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX3V0aWxzXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXV0aWxzXCIpO1xudmFyIEVudW1zID0gcmVxdWlyZShcIi4uLy4uL2dlbi1zcmMvcHJlc2xheWVyL0VudW1zXCIpO1xuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xudmFyIFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncygpIHtcbiAgICB9XG4gICAgUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3Muem9uZVR5cGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2EgPSB7fSxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfSW52YWxpZF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9WaXpdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5Xb3Jrc2hlZXQsXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX0NvbG9yTGVnZW5kXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuTGVnZW5kLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9TaGFwZUxlZ2VuZF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfU2l6ZUxlZ2VuZF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfTWFwTGVnZW5kXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuTGVnZW5kLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9RdWlja0ZpbHRlcl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9IaWdobGlnaHRlcl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9DdXJyUGFnZV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLlBhZ2VGaWx0ZXIsXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX0VtcHR5XSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX1RpdGxlXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuVGl0bGUsXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX1RleHRdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5UZXh0LFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9CaXRtYXBdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZSxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfV2ViXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuV2ViUGFnZSxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfQWRkSW5dID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5BZGRJbixcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfUGFyYW1DdHJsXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuUGFyYW1ldGVyQ29udHJvbCxcbiAgICAgICAgX2FbRW51bXMuWm9uZVR5cGUuWlRfRmxpcGJvYXJkTmF2XSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX0ZsaXBib2FyZF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9MYXlvdXRCYXNpY10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9MYXlvdXRGbG93XSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX0xheW91dEZyZWVGb3JtXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQmxhbmssXG4gICAgICAgIF9hW0VudW1zLlpvbmVUeXBlLlpUX0VuZF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rLFxuICAgICAgICBfYVtFbnVtcy5ab25lVHlwZS5aVF9CdXR0b25dID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICAgICAgX2EpLCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkJsYW5rKTtcbiAgICBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5hZGRJbkNvbnRleHQgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2IgPSB7fSxcbiAgICAgICAgX2JbRW51bXMuQWRkSW5Db250ZXh0LlVua25vd25dID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuQWRkSW5Db250ZXh0LlVua25vd24sXG4gICAgICAgIF9iW0VudW1zLkFkZEluQ29udGV4dC5EZXNrdG9wXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkFkZEluQ29udGV4dC5EZXNrdG9wLFxuICAgICAgICBfYltFbnVtcy5BZGRJbkNvbnRleHQuU2VydmVyXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkFkZEluQ29udGV4dC5TZXJ2ZXIsXG4gICAgICAgIF9iKSk7XG4gICAgUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuYWRkSW5Nb2RlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9jID0ge30sXG4gICAgICAgIF9jW0VudW1zLkFkZEluTW9kZS5Vbmtub3duXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkFkZEluTW9kZS5Vbmtub3duLFxuICAgICAgICBfY1tFbnVtcy5BZGRJbk1vZGUuQXV0aG9yaW5nXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkFkZEluTW9kZS5BdXRob3JpbmcsXG4gICAgICAgIF9jW0VudW1zLkFkZEluTW9kZS5WaWV3aW5nXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkFkZEluTW9kZS5WaWV3aW5nLFxuICAgICAgICBfYykpO1xuICAgIFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmRhdGFUeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9kID0ge30sXG4gICAgICAgIF9kW0VudW1zLkRhdGFUeXBlLkRUX0JPT0xFQU5dID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuQm9vbCxcbiAgICAgICAgX2RbRW51bXMuRGF0YVR5cGUuRFRfREFURV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5EYXRlLFxuICAgICAgICBfZFtFbnVtcy5EYXRhVHlwZS5EVF9EQVRFVElNRV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5EYXRlVGltZSxcbiAgICAgICAgX2RbRW51bXMuRGF0YVR5cGUuRFRfSU5URUdFUl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5JbnQsXG4gICAgICAgIF9kW0VudW1zLkRhdGFUeXBlLkRUX1JFQUxdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuRmxvYXQsXG4gICAgICAgIF9kW0VudW1zLkRhdGFUeXBlLkRUX1NUUklOR10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5TdHJpbmcsXG4gICAgICAgIF9kW0VudW1zLkRhdGFUeXBlLkRUX1NQQVRJQUxdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuU3BhdGlhbCxcbiAgICAgICAgX2QpKTtcbiAgICBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5maWVsZEFnZ3JlZ2F0aW9uVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfZSA9IHt9LFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19BVFRSXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkF0dHIsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX0FWR10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5BdmcsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX0NPVU5UXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50LFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19DT1VOVERdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuQ291bnRkLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19EQVldID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuRGF5LFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19FTkRdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuRW5kLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19IT1VSXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkhvdXIsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX0lOT1VUXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkluT3V0LFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19LVVJUT1NJU10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5LdXJ0b3NpcyxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTUFYXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1heCxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTURZXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1keSxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTUVESUFOXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1lZGlhbixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTUlOXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1pbixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTUlOVVRFXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1pbnV0ZSxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTU9OVEhZRUFSXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk1vbnRoWWVhcixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfTk9ORV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ob25lLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19RVFJdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuUXRyLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19RVUFSVDFdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuUXVhcnQxLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19RVUFSVDNdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuUXVhcnQzLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19TRUNPTkRdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuU2Vjb25kLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19TS0VXTkVTU10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ta2V3bmVzcyxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfU1RERVZdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXYsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX1NUREVWUF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldnAsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX1NVTV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdW0sXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuVFJVTkNfREFZXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jRGF5LFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLlRSVU5DX0hPVVJdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNIb3VyLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLlRSVU5DX01JTlVURV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01pbnV0ZSxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5UUlVOQ19NT05USF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01vbnRoLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLlRSVU5DX1FUUl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1F0cixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5UUlVOQ19TRUNPTkRdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNTZWNvbmQsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuVFJVTkNfV0VFS10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1dlZWssXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuVFJVTkNfWUVBUl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1llYXIsXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX1VTRVJdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVXNlcixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfVkFSXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlZhcixcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfVkFSUF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXJwLFxuICAgICAgICBfZVtFbnVtcy5BZ2dUeXBlLkFHR19XRUVLXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLldlZWssXG4gICAgICAgIF9lW0VudW1zLkFnZ1R5cGUuQUdHX1dFRUtEQVldID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuV2Vla2RheSxcbiAgICAgICAgX2VbRW51bXMuQWdnVHlwZS5BR0dfWUVBUl0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5ZZWFyLFxuICAgICAgICBfZSkpO1xuICAgIFByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmZpZWxkUm9sZVR5cGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2YgPSB7fSxcbiAgICAgICAgX2ZbRW51bXMuRmllbGRSb2xlLlJPTEVfRElNRU5TSU9OXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkUm9sZVR5cGUuRGltZW5zaW9uLFxuICAgICAgICBfZltFbnVtcy5GaWVsZFJvbGUuUk9MRV9NRUFTVVJFXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkUm9sZVR5cGUuTWVhc3VyZSxcbiAgICAgICAgX2YpKTtcbiAgICBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5wYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2cgPSB7fSxcbiAgICAgICAgX2dbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9BbnldID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRG9tYWluUmVzdHJpY3Rpb25UeXBlLkFsbCxcbiAgICAgICAgX2dbRW51bXMuUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlLkRvbWFpbl9MaXN0XSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRvbWFpblJlc3RyaWN0aW9uVHlwZS5MaXN0LFxuICAgICAgICBfZ1tFbnVtcy5QYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUuRG9tYWluX1JhbmdlXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRvbWFpblJlc3RyaWN0aW9uVHlwZS5SYW5nZSxcbiAgICAgICAgX2cpKTtcbiAgICBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZCA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfaCA9IHt9LFxuICAgICAgICBfaFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RZZWFyXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLlllYXJzLFxuICAgICAgICBfaFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RRdWFydGVyXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLlF1YXJ0ZXJzLFxuICAgICAgICBfaFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RNb250aF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5Nb250aHMsXG4gICAgICAgIF9oW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZFdlZWtdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVN0ZXBQZXJpb2QuV2Vla3MsXG4gICAgICAgIF9oW0VudW1zLkRhdGVQZXJpb2RUeXBlLlBlcmlvZERheV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5EYXlzLFxuICAgICAgICBfaFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RIb3VyXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLkhvdXJzLFxuICAgICAgICBfaFtFbnVtcy5EYXRlUGVyaW9kVHlwZS5QZXJpb2RNaW51dGVdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVN0ZXBQZXJpb2QuTWludXRlcyxcbiAgICAgICAgX2hbRW51bXMuRGF0ZVBlcmlvZFR5cGUuUGVyaW9kU2Vjb25kXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLlNlY29uZHMsXG4gICAgICAgIF9oKSk7XG4gICAgUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuZGF0ZVJhbmdlVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfaiA9IHt9LFxuICAgICAgICBfaltFbnVtcy5GaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlLlJhbmdlQ3VycmVudF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlUmFuZ2VUeXBlLkN1cnJlbnQsXG4gICAgICAgIF9qW0VudW1zLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUuUmFuZ2VDdXJyZW50VG9EYXRlXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuVG9EYXRlLFxuICAgICAgICBfaltFbnVtcy5GaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlLlJhbmdlTGFzdDFdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5MYXN0LFxuICAgICAgICBfaltFbnVtcy5GaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlLlJhbmdlTGFzdE5dID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5MYXN0TixcbiAgICAgICAgX2pbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZU5leHQxXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuTmV4dCxcbiAgICAgICAgX2pbRW51bXMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZS5SYW5nZU5leHROXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuTmV4dE4sXG4gICAgICAgIF9qKSk7XG4gICAgUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3MuZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfayA9IHt9LFxuICAgICAgICBfa1tFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5SZWxldmFudF0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJEb21haW5UeXBlLlJlbGV2YW50LFxuICAgICAgICBfa1tFbnVtcy5GaWx0ZXJzRG9tYWluVHlwZS5EYXRhYmFzZV0gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJEb21haW5UeXBlLkRhdGFiYXNlLFxuICAgICAgICBfaykpO1xuICAgIHJldHVybiBQcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncztcbn0oKSk7XG5leHBvcnRzLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzID0gUHJlc0xheWVyVG9BcGlFbnVtTWFwcGluZ3M7XG52YXIgQXBpVG9QcmVzTGF5ZXJFbnVtTWFwcGluZ3MgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzKCkge1xuICAgIH1cbiAgICBBcGlUb1ByZXNMYXllckVudW1NYXBwaW5ncy5maWx0ZXJVcGRhdGVUeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9hID0ge30sXG4gICAgICAgIF9hW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclVwZGF0ZVR5cGUuQWRkXSA9IEVudW1zLkZpbHRlclVwZGF0ZVR5cGUuQURELFxuICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJVcGRhdGVUeXBlLkFsbF0gPSBFbnVtcy5GaWx0ZXJVcGRhdGVUeXBlLkFMTCxcbiAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVXBkYXRlVHlwZS5SZXBsYWNlXSA9IEVudW1zLkZpbHRlclVwZGF0ZVR5cGUuUkVQTEFDRSxcbiAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmVdID0gRW51bXMuRmlsdGVyVXBkYXRlVHlwZS5SRU1PVkUsXG4gICAgICAgIF9hKSk7XG4gICAgQXBpVG9QcmVzTGF5ZXJFbnVtTWFwcGluZ3MubnVsbE9wdGlvbiA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfYiA9IHt9LFxuICAgICAgICBfYlthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJOdWxsT3B0aW9uLkFsbFZhbHVlc10gPSBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuQWxsLFxuICAgICAgICBfYlthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJOdWxsT3B0aW9uLk5vbk51bGxWYWx1ZXNdID0gRW51bXMuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLk5vbk51bGwsXG4gICAgICAgIF9iW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlck51bGxPcHRpb24uTnVsbFZhbHVlc10gPSBFbnVtcy5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuTnVsbCxcbiAgICAgICAgX2IpKTtcbiAgICBBcGlUb1ByZXNMYXllckVudW1NYXBwaW5ncy5maWx0ZXJEb21haW5UeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9jID0ge30sXG4gICAgICAgIF9jW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnRdID0gRW51bXMuRmlsdGVyc0RvbWFpblR5cGUuUmVsZXZhbnQsXG4gICAgICAgIF9jW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlckRvbWFpblR5cGUuRGF0YWJhc2VdID0gRW51bXMuRmlsdGVyc0RvbWFpblR5cGUuRGF0YWJhc2UsXG4gICAgICAgIF9jKSk7XG4gICAgcmV0dXJuIEFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzO1xufSgpKTtcbmV4cG9ydHMuQXBpVG9QcmVzTGF5ZXJFbnVtTWFwcGluZ3MgPSBBcGlUb1ByZXNMYXllckVudW1NYXBwaW5ncztcbnZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2EsIF9iLCBfYztcbi8qIHRzbGludDplbmFibGU6dHlwZWRlZiAqL1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW51bU1hcHBpbmdzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL0VudW1NYXBwaW5ncy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8qIHRzbGludDpkaXNhYmxlICovXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9cbi8vIFRoaXMgZmlsZSBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgVGFibGVhdSBTb2Z0d2FyZSBhbmQgaXMgcHJvdGVjdGVkXG4vLyBieSByZWdpc3RlcmVkIHBhdGVudHMgYW5kIG90aGVyIGFwcGxpY2FibGUgVS5TLiBhbmQgaW50ZXJuYXRpb25hbCBsYXdzIGFuZFxuLy8gcmVndWxhdGlvbnMuXG4vL1xuLy8gVW5saWNlbnNlZCB1c2Ugb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBpcyBwcm9oaWJpdGVkLiBQbGVhc2UgcmVmZXIgdG9cbi8vIHRoZSBOT1RJQ0VTLnR4dCBmaWxlIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4vL1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IENvbXB1dGVyIGdlbmVyYXRlZCBmaWxlLiAgRG8gbm90IGhhbmQgbW9kaWZ5LlxuLy8gREVQRU5EUyBPTjogWycuLi90eXBlc2NyaXB0L2pzLWFwaS9hcGktY29yZS9ub2RlX21vZHVsZXMvQHRhYmxlYXUvcHJlc2xheWVyLWNvZGVnZW4tdHlwZXNjcmlwdC90ZW1wbGF0ZXMvZW51bS10cy50ZW1wbGF0ZScsIHUnLi4vdHlwZXNjcmlwdC9qcy1hcGkvYXBpLWNvcmUvdGVtcC1wcmVzLWxheWVyL2FsbC1lbnVtcy5kYXRhJ11cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIFxudmFyIERhdGFTY2FsaW5nO1xuKGZ1bmN0aW9uIChEYXRhU2NhbGluZykge1xuICAgIC8vIFxuICAgIERhdGFTY2FsaW5nW1wiU0NBTElOR19OT05FXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgRGF0YVNjYWxpbmdbXCJTQ0FMSU5HX1NUQU5EQVJESVpFRFwiXSA9IFwic3RhbmRhcmRpemVkXCI7XG4gICAgLy8gXG4gICAgRGF0YVNjYWxpbmdbXCJTQ0FMSU5HX05PUk1BTElaRURcIl0gPSBcIm5vcm1hbGl6ZWRcIjtcbn0pKERhdGFTY2FsaW5nID0gZXhwb3J0cy5EYXRhU2NhbGluZyB8fCAoZXhwb3J0cy5EYXRhU2NhbGluZyA9IHt9KSk7XG4vLyBcbnZhciBGb3JlY2FzdE1vZGVsVHlwZTtcbihmdW5jdGlvbiAoRm9yZWNhc3RNb2RlbFR5cGUpIHtcbiAgICAvLyBcbiAgICBGb3JlY2FzdE1vZGVsVHlwZVtcIkZvcmVjYXN0TW9kZWxUeXBlQXV0b1NlYXNvblwiXSA9IFwiYXV0by1zZWFzb25cIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdE1vZGVsVHlwZVtcIkZvcmVjYXN0TW9kZWxUeXBlQXV0b1wiXSA9IFwiYXV0b1wiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0TW9kZWxUeXBlW1wiRm9yZWNhc3RNb2RlbFR5cGVDdXN0b21cIl0gPSBcImN1c3RvbVwiO1xufSkoRm9yZWNhc3RNb2RlbFR5cGUgPSBleHBvcnRzLkZvcmVjYXN0TW9kZWxUeXBlIHx8IChleHBvcnRzLkZvcmVjYXN0TW9kZWxUeXBlID0ge30pKTtcbi8vIFxudmFyIEZvcmVjYXN0UmFuZ2VUeXBlO1xuKGZ1bmN0aW9uIChGb3JlY2FzdFJhbmdlVHlwZSkge1xuICAgIC8vIFxuICAgIEZvcmVjYXN0UmFuZ2VUeXBlW1wiRm9yZWNhc3RSYW5nZVR5cGVBdXRvXCJdID0gXCJhdXRvXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RSYW5nZVR5cGVbXCJGb3JlY2FzdFJhbmdlVHlwZU5leHRcIl0gPSBcIm5leHRcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFJhbmdlVHlwZVtcIkZvcmVjYXN0UmFuZ2VUeXBlRW5kT2ZcIl0gPSBcImVuZC1vZlwiO1xufSkoRm9yZWNhc3RSYW5nZVR5cGUgPSBleHBvcnRzLkZvcmVjYXN0UmFuZ2VUeXBlIHx8IChleHBvcnRzLkZvcmVjYXN0UmFuZ2VUeXBlID0ge30pKTtcbi8vIFxudmFyIEZvcmVjYXN0U3RhdHVzO1xuKGZ1bmN0aW9uIChGb3JlY2FzdFN0YXR1cykge1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfVkFMSURcIl0gPSBcImZzLXZhbGlkXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19JTlZBTElEX0RBVEVUSU1FXCJdID0gXCJmcy1pbnZhbGlkLWRhdGV0aW1lXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19JTlZBTElEX1JFU1BPTlNFXCJdID0gXCJmcy1pbnZhbGlkLXJlc3BvbnNlXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19ORUVEX01PUkVfREFUQVwiXSA9IFwiZnMtbmVlZC1tb3JlLWRhdGFcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX1RJTUVfU0VSSUVTX1RPT19TSE9SVFwiXSA9IFwiZnMtdGltZS1zZXJpZXMtdG9vLXNob3J0XCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19USU1FX1NFUklFU19JUlJFR1VMQVJcIl0gPSBcImZzLXRpbWUtc2VyaWVzLWlycmVndWxhclwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfTlVMTF9EQVRFVElNRVwiXSA9IFwiZnMtbnVsbC1kYXRldGltZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfTlVMTF9SRVNQT05TRVwiXSA9IFwiZnMtbnVsbC1yZXNwb25zZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfTUVUQURBVEFfSU5WQUxJRFwiXSA9IFwiZnMtbWV0YWRhdGEtaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfTk9fUkVTUE9OU0VcIl0gPSBcImZzLW5vLXJlc3BvbnNlXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19FWENFU1NfREFUQVwiXSA9IFwiZnMtZXhjZXNzLWRhdGFcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX0VYQ0VTU19QQVJUSVRJT05TXCJdID0gXCJmcy1leGNlc3MtcGFydGl0aW9uc1wiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfRElNRU5TSU9OX0lOVkFMSURcIl0gPSBcImZzLWRpbWVuc2lvbi1pbnZhbGlkXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19UQUJMRUNBTENfSU5WQUxJRFwiXSA9IFwiZnMtdGFibGVjYWxjLWludmFsaWRcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX1RJTUVfU0VSSUVTX1RPT19JUlJFR1VMQVJcIl0gPSBcImZzLXRpbWUtc2VyaWVzLXRvby1pcnJlZ3VsYXJcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX0FHR1JFR0FURV9GSUxURVJcIl0gPSBcImZzLWFnZ3JlZ2F0ZS1maWx0ZXJcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX0RJU0FHR1JFR0FURV9SRVNQT05TRVwiXSA9IFwiZnMtZGlzYWdncmVnYXRlLXJlc3BvbnNlXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19QRVJDRU5UQUdFX0lOVkFMSURcIl0gPSBcImZzLXBlcmNlbnRhZ2UtaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfVE9UQUxfSU5WQUxJRFwiXSA9IFwiZnMtdG90YWwtaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfRVhDRVNTX0RBVEVUSU1FXCJdID0gXCJmcy1leGNlc3MtZGF0ZXRpbWVcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX0RBVEVfQUdHX0lOQ09NUEFUSUJMRVwiXSA9IFwiZnMtZGF0ZS1hZ2ctaW5jb21wYXRpYmxlXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19USU1FX1NFUklFU19OT1RfUE9TSVRJVkVcIl0gPSBcImZzLXRpbWUtc2VyaWVzLW5vdC1wb3NpdGl2ZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0U3RhdHVzW1wiRlNfUkVRVUVTVEVEX01PREVMX0lOVkFMSURcIl0gPSBcImZzLXJlcXVlc3RlZC1tb2RlbC1pbnZhbGlkXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19UT09fU0hPUlRfRk9SX1NFQVNPTlwiXSA9IFwiZnMtdG9vLXNob3J0LWZvci1zZWFzb25cIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdFN0YXR1c1tcIkZTX1JFUVVFU1RFRF9NT0RFTF9VTlNUQUJMRVwiXSA9IFwiZnMtcmVxdWVzdGVkLW1vZGVsLXVuc3RhYmxlXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RTdGF0dXNbXCJGU19VTkRFRklORURcIl0gPSBcImZzLXVuZGVmaW5lZFwiO1xufSkoRm9yZWNhc3RTdGF0dXMgPSBleHBvcnRzLkZvcmVjYXN0U3RhdHVzIHx8IChleHBvcnRzLkZvcmVjYXN0U3RhdHVzID0ge30pKTtcbi8vIFxudmFyIFN0eWxlQXR0cmlidXRlO1xuKGZ1bmN0aW9uIChTdHlsZUF0dHJpYnV0ZSkge1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FBbHRlcm5hdGVUZXh0XCJdID0gXCJzYUFsdGVybmF0ZVRleHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQWx0TWFya0NvbG9yXCJdID0gXCJzYUFsdE1hcmtDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FBc3BlY3RcIl0gPSBcInNhQXNwZWN0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUF1dG9TdWJ0aXRsZVwiXSA9IFwic2FBdXRvU3VidGl0bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQmFja2dyb3VuZENvbG9yXCJdID0gXCJzYUJhY2tncm91bmRDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5XCJdID0gXCJzYUJhY2tncm91bmRUcmFuc3BhcmVuY3lcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQmFuZFNpemVcIl0gPSBcInNhQmFuZFNpemVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQmFuZENvbG9yXCJdID0gXCJzYUJhbmRDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCYW5kTGV2ZWxcIl0gPSBcInNhQmFuZExldmVsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvZHlUeXBlXCJdID0gXCJzYUJvZHlUeXBlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlckNvbG9yXCJdID0gXCJzYUJvcmRlckNvbG9yXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlckNvbG9yVG9wXCJdID0gXCJzYUJvcmRlckNvbG9yVG9wXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlckNvbG9yUmlnaHRcIl0gPSBcInNhQm9yZGVyQ29sb3JSaWdodFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJDb2xvckJvdHRvbVwiXSA9IFwic2FCb3JkZXJDb2xvckJvdHRvbVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJDb2xvckxlZnRcIl0gPSBcInNhQm9yZGVyQ29sb3JMZWZ0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlclN0eWxlXCJdID0gXCJzYUJvcmRlclN0eWxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlclN0eWxlVG9wXCJdID0gXCJzYUJvcmRlclN0eWxlVG9wXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlclN0eWxlUmlnaHRcIl0gPSBcInNhQm9yZGVyU3R5bGVSaWdodFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJTdHlsZUJvdHRvbVwiXSA9IFwic2FCb3JkZXJTdHlsZUJvdHRvbVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJTdHlsZUxlZnRcIl0gPSBcInNhQm9yZGVyU3R5bGVMZWZ0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlcldpZHRoXCJdID0gXCJzYUJvcmRlcldpZHRoXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlcldpZHRoVG9wXCJdID0gXCJzYUJvcmRlcldpZHRoVG9wXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJvcmRlcldpZHRoUmlnaHRcIl0gPSBcInNhQm9yZGVyV2lkdGhSaWdodFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJXaWR0aEJvdHRvbVwiXSA9IFwic2FCb3JkZXJXaWR0aEJvdHRvbVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FCb3JkZXJXaWR0aExlZnRcIl0gPSBcInNhQm9yZGVyV2lkdGhMZWZ0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUJveHBsb3RTdHlsZVwiXSA9IFwic2FCb3hwbG90U3R5bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQnJlYWtPblNwZWNpYWxcIl0gPSBcInNhQnJlYWtPblNwZWNpYWxcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQ2VsbFwiXSA9IFwic2FDZWxsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNlbGxXXCJdID0gXCJzYUNlbGxXXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNlbGxIXCJdID0gXCJzYUNlbGxIXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNlbGxRXCJdID0gXCJzYUNlbGxRXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNlbGxRTWFya1wiXSA9IFwic2FDZWxsUU1hcmtcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQ29sb3JcIl0gPSBcInNhQ29sb3JcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQ29sb3JNb2RlXCJdID0gXCJzYUNvbG9yTW9kZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FDb2xMZXZlbHNcIl0gPSBcInNhQ29sTGV2ZWxzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNvbFZlcnRMZXZlbHNcIl0gPSBcInNhQ29sVmVydExldmVsc1wiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FDb2xIb3JpekhlaWdodFwiXSA9IFwic2FDb2xIb3JpekhlaWdodFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FDb2xWZXJ0SGVpZ2h0XCJdID0gXCJzYUNvbFZlcnRIZWlnaHRcIjtcbiAgICAvLyBEZXByZWNhdGVkXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUNvbEhlaWdodFwiXSA9IFwic2FDb2xIZWlnaHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQ29sV2lkdGhcIl0gPSBcInNhQ29sV2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhQ29udGVudFwiXSA9IFwic2FDb250ZW50XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYURpc3BsYXlGaWVsZExhYmVsc1wiXSA9IFwic2FEaXNwbGF5RmllbGRMYWJlbHNcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhRGlzcGxheUhlYWRlclwiXSA9IFwic2FEaXNwbGF5SGVhZGVyXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYURpc3BsYXlBbHRlcm5hdGVUZXh0XCJdID0gXCJzYURpc3BsYXlBbHRlcm5hdGVUZXh0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYURpdkxldmVsXCJdID0gXCJzYURpdkxldmVsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUVuYWJsZWRcIl0gPSBcInNhRW5hYmxlZFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGaWxsQWJvdmVDb2xvclwiXSA9IFwic2FGaWxsQWJvdmVDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGaWxsQmVsb3dDb2xvclwiXSA9IFwic2FGaWxsQmVsb3dDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGaWxsQ29sb3JcIl0gPSBcInNhRmlsbENvbG9yXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUZvZ0JHQ29sb3JcIl0gPSBcInNhRm9nQkdDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGb2dEZXNhdHVyYXRpb25XaXRob3V0U2VsZWN0aW9uXCJdID0gXCJzYUZvZ0Rlc2F0dXJhdGlvbldpdGhvdXRTZWxlY3Rpb25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhRm9nRGVzYXR1cmF0aW9uV2l0aFNlbGVjdGlvblwiXSA9IFwic2FGb2dEZXNhdHVyYXRpb25XaXRoU2VsZWN0aW9uXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUZvbnRcIl0gPSBcInNhRm9udFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGb250RmFtaWx5XCJdID0gXCJzYUZvbnRGYW1pbHlcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhRm9udFNpemVcIl0gPSBcInNhRm9udFNpemVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhRm9udFN0eWxlXCJdID0gXCJzYUZvbnRTdHlsZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FGb250V2VpZ2h0XCJdID0gXCJzYUZvbnRXZWlnaHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhR2VvZ3JhcGhpY0FyZWFUeXBlXCJdID0gXCJzYUdlb2dyYXBoaWNBcmVhVHlwZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FIQWxpZ25cIl0gPSBcInNhSEFsaWduXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUhhbG9Db2xvclwiXSA9IFwic2FIYWxvQ29sb3JcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhSGFsb0NvbG9yU2VsZWN0ZWRcIl0gPSBcInNhSGFsb0NvbG9yU2VsZWN0ZWRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhSGFzRmlsbFwiXSA9IFwic2FIYXNGaWxsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUhhc0hhbG9cIl0gPSBcInNhSGFzSGFsb1wiO1xuICAgIC8vIERlcHJlY2F0ZWRcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhSGFzTGFiZWxcIl0gPSBcInNhSGFzTGFiZWxcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhSGFzU3Ryb2tlXCJdID0gXCJzYUhhc1N0cm9rZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FIZWlnaHRcIl0gPSBcInNhSGVpZ2h0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUhlaWdodEhlYWRlclwiXSA9IFwic2FIZWlnaHRIZWFkZXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhSGlnaGxpZ2h0TGVnZW5kXCJdID0gXCJzYUhpZ2hsaWdodExlZ2VuZFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FIbmF4aXNcIl0gPSBcInNhSG5heGlzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUhubGFiZWxcIl0gPSBcInNhSG5sYWJlbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FJblRvb2x0aXBcIl0gPSBcInNhSW5Ub29sdGlwXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUxpbmVFbmRcIl0gPSBcInNhTGluZUVuZFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FMaW5lRW5kU2l6ZVwiXSA9IFwic2FMaW5lRW5kU2l6ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FMaW5lSW50ZXJwb2xhdGlvblwiXSA9IFwic2FMaW5lSW50ZXJwb2xhdGlvblwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FMaW5lTWFya2VyUG9zaXRpb25cIl0gPSBcInNhTGluZU1hcmtlclBvc2l0aW9uXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUxpbmVQYXR0ZXJuXCJdID0gXCJzYUxpbmVQYXR0ZXJuXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYUxpbmVQYXR0ZXJuT25seVwiXSA9IFwic2FMaW5lUGF0dGVybk9ubHlcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTGluZVZpc2liaWxpdHlcIl0gPSBcInNhTGluZVZpc2liaWxpdHlcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFwXCJdID0gXCJzYU1hcFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXBTdHlsZVwiXSA9IFwic2FNYXBTdHlsZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJnaW5cIl0gPSBcInNhTWFyZ2luXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1hcmdpblRvcFwiXSA9IFwic2FNYXJnaW5Ub3BcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFyZ2luUmlnaHRcIl0gPSBcInNhTWFyZ2luUmlnaHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFyZ2luQm90dG9tXCJdID0gXCJzYU1hcmdpbkJvdHRvbVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJnaW5MZWZ0XCJdID0gXCJzYU1hcmdpbkxlZnRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFya0NvbG9yXCJdID0gXCJzYU1hcmtDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJrVHJhbnNwYXJlbmN5XCJdID0gXCJzYU1hcmtUcmFuc3BhcmVuY3lcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFya0xhYmVsc1Nob3dcIl0gPSBcInNhTWFya0xhYmVsc1Nob3dcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhUnVubmluZ09yZGVyTGFiZWxzU2hvd1wiXSA9IFwic2FSdW5uaW5nT3JkZXJMYWJlbHNTaG93XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1hcmtMYWJlbHNNb2RlXCJdID0gXCJzYU1hcmtMYWJlbHNNb2RlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1hcmtMYWJlbHNDdWxsXCJdID0gXCJzYU1hcmtMYWJlbHNDdWxsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1hcmtMYWJlbHNMaW5lRW5kRmlyc3RcIl0gPSBcInNhTWFya0xhYmVsc0xpbmVFbmRGaXJzdFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJrTGFiZWxzTGluZUVuZExhc3RcIl0gPSBcInNhTWFya0xhYmVsc0xpbmVFbmRMYXN0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1hcmtMYWJlbHNSYW5nZU1pblwiXSA9IFwic2FNYXJrTGFiZWxzUmFuZ2VNaW5cIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWFya0xhYmVsc1JhbmdlTWF4XCJdID0gXCJzYU1hcmtMYWJlbHNSYW5nZU1heFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJrTGFiZWxzUmFuZ2VTY29wZVwiXSA9IFwic2FNYXJrTGFiZWxzUmFuZ2VTY29wZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJrTGFiZWxzUmFuZ2VGaWVsZFwiXSA9IFwic2FNYXJrTGFiZWxzUmFuZ2VGaWVsZFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNYXJrTWFya2Vyc01vZGVcIl0gPSBcInNhTWFya01hcmtlcnNNb2RlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1heEhlaWdodFwiXSA9IFwic2FNYXhIZWlnaHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWF4Rm9udFNpemVcIl0gPSBcInNhTWF4Rm9udFNpemVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWF4U3Ryb2tlV2lkdGhcIl0gPSBcInNhTWF4U3Ryb2tlV2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWF4V2lkdGhcIl0gPSBcInNhTWF4V2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWlkU3Ryb2tlV2lkdGhcIl0gPSBcInNhTWlkU3Ryb2tlV2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWluSGVpZ2h0XCJdID0gXCJzYU1pbkhlaWdodFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNaW5Gb250U2l6ZVwiXSA9IFwic2FNaW5Gb250U2l6ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNaW5MZW5ndGhcIl0gPSBcInNhTWluTGVuZ3RoXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU1pbk1hcFNpemVcIl0gPSBcInNhTWluTWFwU2l6ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FNaW5TaXplXCJdID0gXCJzYU1pblNpemVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWluU3Ryb2tlV2lkdGhcIl0gPSBcInNhTWluU3Ryb2tlV2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTWluV2lkdGhcIl0gPSBcInNhTWluV2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhTm9uaGlnaGxpZ2h0Q29sb3JcIl0gPSBcInNhTm9uaGlnaGxpZ2h0Q29sb3JcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhT21pdE9uU3BlY2lhbFwiXSA9IFwic2FPbWl0T25TcGVjaWFsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU9wYWNpdHlcIl0gPSBcInNhT3BhY2l0eVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FPcmllbnRhdGlvblwiXSA9IFwic2FPcmllbnRhdGlvblwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FQYWRkaW5nXCJdID0gXCJzYVBhZGRpbmdcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhUGFkZGluZ1RvcFwiXSA9IFwic2FQYWRkaW5nVG9wXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVBhZGRpbmdSaWdodFwiXSA9IFwic2FQYWRkaW5nUmlnaHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhUGFkZGluZ0JvdHRvbVwiXSA9IFwic2FQYWRkaW5nQm90dG9tXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVBhZGRpbmdMZWZ0XCJdID0gXCJzYVBhZGRpbmdMZWZ0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVBhbGV0dGVcIl0gPSBcInNhUGFsZXR0ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FSZW5kZXJGb2xkUmV2ZXJzZWRcIl0gPSBcInNhUmVuZGVyRm9sZFJldmVyc2VkXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVJldmVyc2VQYWxldHRlXCJdID0gXCJzYVJldmVyc2VQYWxldHRlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVJvdW5kaW5nXCJdID0gXCJzYVJvdW5kaW5nXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVJvd0hvcml6TGV2ZWxzXCJdID0gXCJzYVJvd0hvcml6TGV2ZWxzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVJvd0hvcml6V2lkdGhcIl0gPSBcInNhUm93SG9yaXpXaWR0aFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FSb3dMZXZlbHNcIl0gPSBcInNhUm93TGV2ZWxzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVJvd1ZlcnRXaWR0aFwiXSA9IFwic2FSb3dWZXJ0V2lkdGhcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhU2VwYXJhdG9yXCJdID0gXCJzYVNlcGFyYXRvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FTaGFwZVwiXSA9IFwic2FTaGFwZVwiO1xuICAgIC8vIERlcHJlY2F0ZWRcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhU2hvd0xhYmVsc1wiXSA9IFwic2FTaG93TGFiZWxzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVNpemVcIl0gPSBcInNhU2l6ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FTaXplQmFyXCJdID0gXCJzYVNpemVCYXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhU21hcnRBdXRvQWxpZ25tZW50XCJdID0gXCJzYVNtYXJ0QXV0b0FsaWdubWVudFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FTcGFjZVwiXSA9IFwic2FTcGFjZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FTdHJva2VDb2xvclwiXSA9IFwic2FTdHJva2VDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FTdHJva2VTaXplXCJdID0gXCJzYVN0cm9rZVNpemVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhU3VidGl0bGVcIl0gPSBcInNhU3VidGl0bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVGV4dEFsaWduXCJdID0gXCJzYVRleHRBbGlnblwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FUZXh0QWxpZ25EZWZhdWx0XCJdID0gXCJzYVRleHRBbGlnbkRlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVGV4dERlY29yYXRpb25cIl0gPSBcInNhVGV4dERlY29yYXRpb25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVGV4dEluZGVudFwiXSA9IFwic2FUZXh0SW5kZW50XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVRleHRPcmllbnRhdGlvblwiXSA9IFwic2FUZXh0T3JpZW50YXRpb25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVGV4dEZvcm1hdFwiXSA9IFwic2FUZXh0Rm9ybWF0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVRpY2tDb2xvclwiXSA9IFwic2FUaWNrQ29sb3JcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVGlja0xlbmd0aFwiXSA9IFwic2FUaWNrTGVuZ3RoXCI7XG4gICAgLy8gRGVwcmVjYXRlZFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FUaWNrU3BhY2luZ1wiXSA9IFwic2FUaWNrU3BhY2luZ1wiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FUaXRsZVwiXSA9IFwic2FUaXRsZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FUb3RhbExhYmVsXCJdID0gXCJzYVRvdGFsTGFiZWxcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVkFsaWduXCJdID0gXCJzYVZBbGlnblwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FWZXJ0aWNhbEFsaWduXCJdID0gXCJzYVZlcnRpY2FsQWxpZ25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVmVydGljYWxBbGlnbkRlZmF1bHRcIl0gPSBcInNhVmVydGljYWxBbGlnbkRlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhVm5heGlzXCJdID0gXCJzYVZuYXhpc1wiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FWbmxhYmVsXCJdID0gXCJzYVZubGFiZWxcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhV2Fybk9uU3BlY2lhbFwiXSA9IFwic2FXYXJuT25TcGVjaWFsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYVdhc2hvdXRcIl0gPSBcInNhV2FzaG91dFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FXaGlza2VyRW5kXCJdID0gXCJzYVdoaXNrZXJFbmRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhV2hpc2tlclN0cm9rZUNvbG9yXCJdID0gXCJzYVdoaXNrZXJTdHJva2VDb2xvclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FXaGlza2VyU3Ryb2tlU2l6ZVwiXSA9IFwic2FXaGlza2VyU3Ryb2tlU2l6ZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FXaWR0aFwiXSA9IFwic2FXaWR0aFwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FXaWR0aEhlYWRlclwiXSA9IFwic2FXaWR0aEhlYWRlclwiO1xuICAgIC8vIFxuICAgIFN0eWxlQXR0cmlidXRlW1wic2FXcmFwXCJdID0gXCJzYVdyYXBcIjtcbiAgICAvLyBcbiAgICBTdHlsZUF0dHJpYnV0ZVtcInNhWm9vbVwiXSA9IFwic2Fab29tXCI7XG4gICAgLy8gU3BlY2lhbCBhdHRyaWJ1dGVzIHVzZWQgZm9yIG1hdGNoaW5nXG4gICAgU3R5bGVBdHRyaWJ1dGVbXCJzYU5vbmVcIl0gPSBcInNhTm9uZVwiO1xuICAgIC8vIFNwZWNpYWwgYXR0cmlidXRlcyB1c2VkIGZvciBtYXRjaGluZ1xuICAgIFN0eWxlQXR0cmlidXRlW1wic2FBbnlcIl0gPSBcInNhQW55XCI7XG59KShTdHlsZUF0dHJpYnV0ZSA9IGV4cG9ydHMuU3R5bGVBdHRyaWJ1dGUgfHwgKGV4cG9ydHMuU3R5bGVBdHRyaWJ1dGUgPSB7fSkpO1xuLy8gbG93ZXN0IGJpdCBvZiBlbnVtIHZhbHVlIGRlbm90ZXMgdHdvLXRvbmUgc3R5bGVzOyBuZXdseSBhZGRlZCBzdHlsZXMgc2hvdWxkIGZvbGxvdyB0aGlzIHBhdHRlcm4uXG52YXIgQm94cGxvdFN0eWxlO1xuKGZ1bmN0aW9uIChCb3hwbG90U3R5bGUpIHtcbiAgICAvLyBtYXNrIGZvciBjaGVja2luZyBpZiBhIHN0eWxlIGlzIHR3by10b25lXG4gICAgQm94cGxvdFN0eWxlW1wiQm94cGxvdFN0eWxlVHdvVG9uZVwiXSA9IFwidHdvLXRvbmVcIjtcbiAgICAvLyBcbiAgICBCb3hwbG90U3R5bGVbXCJCb3hwbG90U3R5bGVNb2Rlcm5cIl0gPSBcIm1vZGVyblwiO1xuICAgIC8vIFxuICAgIEJveHBsb3RTdHlsZVtcIkJveHBsb3RTdHlsZUdsYXNzXCJdID0gXCJnbGFzc1wiO1xuICAgIC8vIFxuICAgIEJveHBsb3RTdHlsZVtcIkJveHBsb3RTdHlsZUNsYXNzaWNcIl0gPSBcImNsYXNzaWNcIjtcbiAgICAvLyBcbiAgICBCb3hwbG90U3R5bGVbXCJCb3hwbG90U3R5bGVDbGFzc2ljVHdvVG9uZVwiXSA9IFwiY2xhc3NpYy10d28tdG9uZVwiO1xufSkoQm94cGxvdFN0eWxlID0gZXhwb3J0cy5Cb3hwbG90U3R5bGUgfHwgKGV4cG9ydHMuQm94cGxvdFN0eWxlID0ge30pKTtcbi8vIHVzZWQgZm9yIGJveHBsb3RzIGFuZCBwcmVkaWN0aW9uIGJhbmQgd2hpc2tlcnNcbnZhciBXaGlza2VyRW5kO1xuKGZ1bmN0aW9uIChXaGlza2VyRW5kKSB7XG4gICAgLy8gXG4gICAgV2hpc2tlckVuZFtcIldoaXNrZXJFbmROb25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgV2hpc2tlckVuZFtcIldoaXNrZXJFbmRTbWFsbFwiXSA9IFwic21hbGxcIjtcbiAgICAvLyBcbiAgICBXaGlza2VyRW5kW1wiV2hpc2tlckVuZExhcmdlXCJdID0gXCJsYXJnZVwiO1xufSkoV2hpc2tlckVuZCA9IGV4cG9ydHMuV2hpc2tlckVuZCB8fCAoZXhwb3J0cy5XaGlza2VyRW5kID0ge30pKTtcbi8vIFxudmFyIFN0eWxlRWxlbWVudDtcbihmdW5jdGlvbiAoU3R5bGVFbGVtZW50KSB7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudEF4aXNcIl0gPSBcImVsZW1lbnRBeGlzXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudENlbGxcIl0gPSBcImVsZW1lbnRDZWxsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudERhdGFsYWJlbFwiXSA9IFwiZWxlbWVudERhdGFsYWJlbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnREcm9wc3BvdFwiXSA9IFwiZWxlbWVudERyb3BzcG90XCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudEhlYWRlclwiXSA9IFwiZWxlbWVudEhlYWRlclwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRGaWVsZExhYmVsXCJdID0gXCJlbGVtZW50RmllbGRMYWJlbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRGaWVsZExhYmVsRGVjb3JhdGlvblwiXSA9IFwiZWxlbWVudEZpZWxkTGFiZWxEZWNvcmF0aW9uXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudEZpZWxkTGFiZWxTcGFubmVyXCJdID0gXCJlbGVtZW50RmllbGRMYWJlbFNwYW5uZXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50TGFiZWxcIl0gPSBcImVsZW1lbnRMYWJlbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRNYXJrXCJdID0gXCJlbGVtZW50TWFya1wiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRQYW5lXCJdID0gXCJlbGVtZW50UGFuZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRUYWJsZVwiXSA9IFwiZWxlbWVudFRhYmxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFdvcmtzaGVldFwiXSA9IFwiZWxlbWVudFdvcmtzaGVldFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRCYXNlc2hlZXRcIl0gPSBcImVsZW1lbnRCYXNlc2hlZXRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50RGFzaGJvYXJkXCJdID0gXCJlbGVtZW50RGFzaGJvYXJkXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFN0b3J5Ym9hcmRcIl0gPSBcImVsZW1lbnRTdG9yeWJvYXJkXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudENhcHRpb25cIl0gPSBcImVsZW1lbnRDYXB0aW9uXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudERyb3BsaW5lXCJdID0gXCJlbGVtZW50RHJvcGxpbmVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UmVmbGluZVwiXSA9IFwiZWxlbWVudFJlZmxpbmVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UmVmQmFuZFwiXSA9IFwiZWxlbWVudFJlZkJhbmRcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UmVmQm94cGxvdFwiXSA9IFwiZWxlbWVudFJlZkJveHBsb3RcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50R3JpZGxpbmVcIl0gPSBcImVsZW1lbnRHcmlkbGluZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRaZXJvbGluZVwiXSA9IFwiZWxlbWVudFplcm9saW5lXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFRyZW5kbGluZVwiXSA9IFwiZWxlbWVudFRyZW5kbGluZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRUYWJsZURpdlwiXSA9IFwiZWxlbWVudFRhYmxlRGl2XCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudEhlYWRlckRpdlwiXSA9IFwiZWxlbWVudEhlYWRlckRpdlwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRNYXBwZWRJbWFnZVwiXSA9IFwiZWxlbWVudE1hcHBlZEltYWdlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudEFjdGlvblwiXSA9IFwiZWxlbWVudEFjdGlvblwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRUaXRsZVwiXSA9IFwiZWxlbWVudFRpdGxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudExlZ2VuZFwiXSA9IFwiZWxlbWVudExlZ2VuZFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRMZWdlbmRUaXRsZVwiXSA9IFwiZWxlbWVudExlZ2VuZFRpdGxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudExlZ2VuZFRpdGxlVGV4dFwiXSA9IFwiZWxlbWVudExlZ2VuZFRpdGxlVGV4dFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRBeGlzVGl0bGVcIl0gPSBcImVsZW1lbnRBeGlzVGl0bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50QW5ub3RhdGlvblwiXSA9IFwiZWxlbWVudEFubm90YXRpb25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50RGFzaFRpdGxlXCJdID0gXCJlbGVtZW50RGFzaFRpdGxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudERhc2hTdWJ0aXRsZVwiXSA9IFwiZWxlbWVudERhc2hTdWJ0aXRsZVwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnREYXNoVGV4dFwiXSA9IFwiZWxlbWVudERhc2hUZXh0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudERhc2hab25lXCJdID0gXCJlbGVtZW50RGFzaFpvbmVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50RGFzaENvbnRhaW5lclwiXSA9IFwiZWxlbWVudERhc2hDb250YWluZXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50U2Nyb2xsYmFyXCJdID0gXCJlbGVtZW50U2Nyb2xsYmFyXCI7XG4gICAgLy8gU3RhdGljIG9uL29mZiBtYXAgbGF5ZXJzXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudE1hcExheWVyXCJdID0gXCJlbGVtZW50TWFwTGF5ZXJcIjtcbiAgICAvLyBDb250YWlucyB3YXNob3V0XG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudE1hcFwiXSA9IFwiZWxlbWVudE1hcFwiO1xuICAgIC8vIEluaXRpYWxseSBmb3IgVXJiYW5NYXBwaW5nL0NsYXJpdGFzIGRhdGFcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50TWFwRGF0YUxheWVyXCJdID0gXCJlbGVtZW50TWFwRGF0YUxheWVyXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFF1aWNrRmlsdGVyXCJdID0gXCJlbGVtZW50UXVpY2tGaWx0ZXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UXVpY2tGaWx0ZXJUaXRsZVwiXSA9IFwiZWxlbWVudFF1aWNrRmlsdGVyVGl0bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UGFyYW1ldGVyQ3RybFwiXSA9IFwiZWxlbWVudFBhcmFtZXRlckN0cmxcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50UGFyYW1ldGVyQ3RybFRpdGxlXCJdID0gXCJlbGVtZW50UGFyYW1ldGVyQ3RybFRpdGxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFBhZ2VDYXJkVGl0bGVcIl0gPSBcImVsZW1lbnRQYWdlQ2FyZFRpdGxlXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFN0b3J5RGVzY3JpcHRpb25cIl0gPSBcImVsZW1lbnRTdG9yeURlc2NyaXB0aW9uXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFN0b3J5UG9pbnRDYXB0aW9uXCJdID0gXCJlbGVtZW50U3RvcnlQb2ludENhcHRpb25cIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50U3RvcnlUaXRsZVwiXSA9IFwiZWxlbWVudFN0b3J5VGl0bGVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50VG9vbHRpcFwiXSA9IFwiZWxlbWVudFRvb2x0aXBcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50QWxsXCJdID0gXCJlbGVtZW50QWxsXCI7XG4gICAgLy8gXG4gICAgU3R5bGVFbGVtZW50W1wiZWxlbWVudFBhZ2VDYXJkQm9keVwiXSA9IFwiZWxlbWVudFBhZ2VDYXJkQm9keVwiO1xuICAgIC8vIFxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnREYXRhSGlnaGxpZ2h0ZXJcIl0gPSBcImVsZW1lbnREYXRhSGlnaGxpZ2h0ZXJcIjtcbiAgICAvLyBcbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50RGF0YUhpZ2hsaWdodGVyVGl0bGVcIl0gPSBcImVsZW1lbnREYXRhSGlnaGxpZ2h0ZXJUaXRsZVwiO1xuICAgIC8vIFNwZWNpYWwgZWxlbWVudHMgdXNlZCBmb3IgbWF0Y2hpbmcgYW5kIG9yZ2FuaXphdGlvblxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnROb25lXCJdID0gXCJlbGVtZW50Tm9uZVwiO1xuICAgIC8vIFNwZWNpYWwgZWxlbWVudHMgdXNlZCBmb3IgbWF0Y2hpbmcgYW5kIG9yZ2FuaXphdGlvblxuICAgIFN0eWxlRWxlbWVudFtcImVsZW1lbnRBbnlcIl0gPSBcImVsZW1lbnRBbnlcIjtcbiAgICAvLyBTcGVjaWFsIGVsZW1lbnRzIHVzZWQgZm9yIG1hdGNoaW5nIGFuZCBvcmdhbml6YXRpb25cbiAgICBTdHlsZUVsZW1lbnRbXCJlbGVtZW50Um9vdFwiXSA9IFwiZWxlbWVudFJvb3RcIjtcbn0pKFN0eWxlRWxlbWVudCA9IGV4cG9ydHMuU3R5bGVFbGVtZW50IHx8IChleHBvcnRzLlN0eWxlRWxlbWVudCA9IHt9KSk7XG4vLyBEbyBub3QgbWVzcyB3aXRoIHRoZXNlIHZhbHVlcy4gVGhleSBhcmUgc29tZXRpbWVzIHVzZWQgYXMgYXJyYXkgaW5kZXhlcy9ib3VuZHNcbnZhciBTdHlsZURhdGFDbGFzcztcbihmdW5jdGlvbiAoU3R5bGVEYXRhQ2xhc3MpIHtcbiAgICAvLyBcbiAgICBTdHlsZURhdGFDbGFzc1tcImRjTm9ybWFsXCJdID0gXCJkY05vcm1hbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRGF0YUNsYXNzW1wiZGNUb3RhbFwiXSA9IFwiZGNUb3RhbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRGF0YUNsYXNzW1wiZGNTdWJ0b3RhbFwiXSA9IFwiZGNTdWJ0b3RhbFwiO1xuICAgIC8vIFxuICAgIFN0eWxlRGF0YUNsYXNzW1wiZGNDT1VOVFwiXSA9IFwiZGNDT1VOVFwiO1xufSkoU3R5bGVEYXRhQ2xhc3MgPSBleHBvcnRzLlN0eWxlRGF0YUNsYXNzIHx8IChleHBvcnRzLlN0eWxlRGF0YUNsYXNzID0ge30pKTtcbi8vIFxudmFyIFN0eWxlRmllbGRTY29wZTtcbihmdW5jdGlvbiAoU3R5bGVGaWVsZFNjb3BlKSB7XG4gICAgLy8gXG4gICAgU3R5bGVGaWVsZFNjb3BlW1wiZnNOb25lXCJdID0gXCJmc05vbmVcIjtcbiAgICAvLyBcbiAgICBTdHlsZUZpZWxkU2NvcGVbXCJmc1Jvd3NcIl0gPSBcImZzUm93c1wiO1xuICAgIC8vIFxuICAgIFN0eWxlRmllbGRTY29wZVtcImZzQ29sc1wiXSA9IFwiZnNDb2xzXCI7XG59KShTdHlsZUZpZWxkU2NvcGUgPSBleHBvcnRzLlN0eWxlRmllbGRTY29wZSB8fCAoZXhwb3J0cy5TdHlsZUZpZWxkU2NvcGUgPSB7fSkpO1xuLy8gXG52YXIgU3R5bGVTd2F0Y2g7XG4oZnVuY3Rpb24gKFN0eWxlU3dhdGNoKSB7XG4gICAgLy8gXG4gICAgU3R5bGVTd2F0Y2hbXCJzc1Vuc3BlY2lmaWVkXCJdID0gXCJzc1Vuc3BlY2lmaWVkXCI7XG4gICAgLy8gXG4gICAgU3R5bGVTd2F0Y2hbXCJzc0xpZ2h0XCJdID0gXCJzc0xpZ2h0XCI7XG4gICAgLy8gXG4gICAgU3R5bGVTd2F0Y2hbXCJzc0RhcmtcIl0gPSBcInNzRGFya1wiO1xufSkoU3R5bGVTd2F0Y2ggPSBleHBvcnRzLlN0eWxlU3dhdGNoIHx8IChleHBvcnRzLlN0eWxlU3dhdGNoID0ge30pKTtcbi8vIFxudmFyIFRhYmxlYXVGb250U3R5bGU7XG4oZnVuY3Rpb24gKFRhYmxlYXVGb250U3R5bGUpIHtcbiAgICAvLyBcbiAgICBUYWJsZWF1Rm9udFN0eWxlW1wiTm9ybWFsU3R5bGVcIl0gPSBcImZvbnQtc3R5bGUtbm9ybWFsXCI7XG4gICAgLy8gXG4gICAgVGFibGVhdUZvbnRTdHlsZVtcIkl0YWxpY1wiXSA9IFwiZm9udC1zdHlsZS1pdGFsaWNcIjtcbn0pKFRhYmxlYXVGb250U3R5bGUgPSBleHBvcnRzLlRhYmxlYXVGb250U3R5bGUgfHwgKGV4cG9ydHMuVGFibGVhdUZvbnRTdHlsZSA9IHt9KSk7XG4vLyBVbnN1cHBvcnRlZCBmb3IgQmV0c3lcbnZhciBUZXh0RGVjb3JhdGlvbjtcbihmdW5jdGlvbiAoVGV4dERlY29yYXRpb24pIHtcbiAgICAvLyBcbiAgICBUZXh0RGVjb3JhdGlvbltcIk5vRGVjb3JhdGlvblwiXSA9IFwidGV4dC1kZWNvcmF0aW9uLW5vbmVcIjtcbiAgICAvLyBcbiAgICBUZXh0RGVjb3JhdGlvbltcIlVuZGVybGluZVwiXSA9IFwidGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZVwiO1xuICAgIC8vIG5vdCB5ZXQgc3VwcG9ydGVkXG4gICAgVGV4dERlY29yYXRpb25bXCJPdmVybGluZVwiXSA9IFwidGV4dC1kZWNvcmF0aW9uLW92ZXJsaW5lXCI7XG4gICAgLy8gXG4gICAgVGV4dERlY29yYXRpb25bXCJTdHJpa2V0aHJvdWdoXCJdID0gXCJ0ZXh0LWRlY29yYXRpb24tc3RyaWtldGhyb3VnaFwiO1xufSkoVGV4dERlY29yYXRpb24gPSBleHBvcnRzLlRleHREZWNvcmF0aW9uIHx8IChleHBvcnRzLlRleHREZWNvcmF0aW9uID0ge30pKTtcbi8vIFxudmFyIEZvbnRXZWlnaHQ7XG4oZnVuY3Rpb24gKEZvbnRXZWlnaHQpIHtcbiAgICAvLyBcbiAgICBGb250V2VpZ2h0W1wiTm9ybWFsV2VpZ2h0XCJdID0gXCJmb250LXdlaWdodC1ub3JtYWxcIjtcbiAgICAvLyBcbiAgICBGb250V2VpZ2h0W1wiQm9sZFwiXSA9IFwiZm9udC13ZWlnaHQtYm9sZFwiO1xufSkoRm9udFdlaWdodCA9IGV4cG9ydHMuRm9udFdlaWdodCB8fCAoZXhwb3J0cy5Gb250V2VpZ2h0ID0ge30pKTtcbi8vIFxudmFyIFRleHRPcmllbnQ7XG4oZnVuY3Rpb24gKFRleHRPcmllbnQpIHtcbiAgICAvLyBcbiAgICBUZXh0T3JpZW50W1wiVE9fQXV0b1wiXSA9IFwidGV4dC1vcmllbnQtYXV0b1wiO1xuICAgIC8vIFxuICAgIFRleHRPcmllbnRbXCJUT19Ib3J6XCJdID0gXCJ0ZXh0LW9yaWVudC1ob3Jpem9udGFsXCI7XG4gICAgLy8gXG4gICAgVGV4dE9yaWVudFtcIlRPX1ZlcnRVcFwiXSA9IFwidGV4dC1vcmllbnQtdmVydGljYWwtdXBcIjtcbiAgICAvLyBcbiAgICBUZXh0T3JpZW50W1wiVE9fVmVydERvd25cIl0gPSBcInRleHQtb3JpZW50LXZlcnRpY2FsLWRvd25cIjtcbn0pKFRleHRPcmllbnQgPSBleHBvcnRzLlRleHRPcmllbnQgfHwgKGV4cG9ydHMuVGV4dE9yaWVudCA9IHt9KSk7XG4vLyBcbnZhciBUZXh0QWxpZ247XG4oZnVuY3Rpb24gKFRleHRBbGlnbikge1xuICAgIC8vIFxuICAgIFRleHRBbGlnbltcIlRBX1N0YXJ0XCJdID0gXCJ0ZXh0LWFsaWduLXN0YXJ0XCI7XG4gICAgLy8gXG4gICAgVGV4dEFsaWduW1wiVEFfQ2VudGVyXCJdID0gXCJ0ZXh0LWFsaWduLWNlbnRlclwiO1xuICAgIC8vIFxuICAgIFRleHRBbGlnbltcIlRBX0VuZFwiXSA9IFwidGV4dC1hbGlnbi1lbmRcIjtcbn0pKFRleHRBbGlnbiA9IGV4cG9ydHMuVGV4dEFsaWduIHx8IChleHBvcnRzLlRleHRBbGlnbiA9IHt9KSk7XG4vLyBcbnZhciBUZXh0V3JhcE1vZGU7XG4oZnVuY3Rpb24gKFRleHRXcmFwTW9kZSkge1xuICAgIC8vIFxuICAgIFRleHRXcmFwTW9kZVtcIlRleHRXcmFwT2ZmXCJdID0gXCJ0ZXh0LXdyYXAtb2ZmXCI7XG4gICAgLy8gXG4gICAgVGV4dFdyYXBNb2RlW1wiVGV4dFdyYXBUcnVuY2F0ZVwiXSA9IFwidGV4dC13cmFwLXRydW5jYXRlXCI7XG4gICAgLy8gXG4gICAgVGV4dFdyYXBNb2RlW1wiVGV4dFdyYXBPblwiXSA9IFwidGV4dC13cmFwLW9uXCI7XG4gICAgLy8gXG4gICAgVGV4dFdyYXBNb2RlW1wiVGV4dFdyYXBBdXRvXCJdID0gXCJ0ZXh0LXdyYXAtYXV0b1wiO1xufSkoVGV4dFdyYXBNb2RlID0gZXhwb3J0cy5UZXh0V3JhcE1vZGUgfHwgKGV4cG9ydHMuVGV4dFdyYXBNb2RlID0ge30pKTtcbi8vIFxudmFyIFRleHRXaG9sZUxpbmVNb2RlO1xuKGZ1bmN0aW9uIChUZXh0V2hvbGVMaW5lTW9kZSkge1xuICAgIC8vIFxuICAgIFRleHRXaG9sZUxpbmVNb2RlW1wiVGV4dFdob2xlTGluZU9mZlwiXSA9IFwidGV4dC13aG9sZS1saW5lLW9mZlwiO1xuICAgIC8vIFxuICAgIFRleHRXaG9sZUxpbmVNb2RlW1wiVGV4dFdob2xlTGluZU9uXCJdID0gXCJ0ZXh0LXdob2xlLWxpbmUtb25cIjtcbiAgICAvLyBcbiAgICBUZXh0V2hvbGVMaW5lTW9kZVtcIlRleHRXaG9sZUxpbmVBdXRvXCJdID0gXCJ0ZXh0LXdob2xlLWxpbmUtYXV0b1wiO1xufSkoVGV4dFdob2xlTGluZU1vZGUgPSBleHBvcnRzLlRleHRXaG9sZUxpbmVNb2RlIHx8IChleHBvcnRzLlRleHRXaG9sZUxpbmVNb2RlID0ge30pKTtcbi8vIFxudmFyIFRleHRCcmVha01vZGU7XG4oZnVuY3Rpb24gKFRleHRCcmVha01vZGUpIHtcbiAgICAvLyBcbiAgICBUZXh0QnJlYWtNb2RlW1wiVGV4dEJyZWFrV2hpdGVzcGFjZU9ubHlcIl0gPSBcInRleHQtYnJlYWstd3Mtb25seVwiO1xuICAgIC8vIFxuICAgIFRleHRCcmVha01vZGVbXCJUZXh0QnJlYWtBdXRvXCJdID0gXCJ0ZXh0LWJyZWFrLWF1dG9cIjtcbn0pKFRleHRCcmVha01vZGUgPSBleHBvcnRzLlRleHRCcmVha01vZGUgfHwgKGV4cG9ydHMuVGV4dEJyZWFrTW9kZSA9IHt9KSk7XG4vLyB0eXBlIG9mIGFnZ3JlZ2F0aW9uXG52YXIgQWdnVHlwZTtcbihmdW5jdGlvbiAoQWdnVHlwZSkge1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfU1VNXCJdID0gXCJzdW1cIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX0FWR1wiXSA9IFwiYXZlcmFnZVwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfTUlOXCJdID0gXCJtaW5cIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX01BWFwiXSA9IFwibWF4XCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19TVERFVlwiXSA9IFwic3RkLWRldlwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfU1RERVZQXCJdID0gXCJzdGQtZGV2LXBcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX1ZBUlwiXSA9IFwidmFyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19WQVJQXCJdID0gXCJ2YXItcFwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfQ09VTlRcIl0gPSBcImNvdW50XCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19DT1VOVERcIl0gPSBcImNvdW50LWRcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX01FRElBTlwiXSA9IFwibWVkaWFuXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19BVFRSXCJdID0gXCJhdHRyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19OT05FXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19QRVJDRU5USUxFXCJdID0gXCJwZXJjZW50aWxlXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19ZRUFSXCJdID0gXCJ5ZWFyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19RVFJcIl0gPSBcInF0clwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfTU9OVEhcIl0gPSBcIm1vbnRoXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19EQVlcIl0gPSBcImRheVwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfSE9VUlwiXSA9IFwiaG91clwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfTUlOVVRFXCJdID0gXCJtaW51dGVcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX1NFQ09ORFwiXSA9IFwic2Vjb25kXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19XRUVLXCJdID0gXCJ3ZWVrXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19XRUVLREFZXCJdID0gXCJ3ZWVrZGF5XCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19NT05USFlFQVJcIl0gPSBcIm1vbnRoLXllYXJcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX01EWVwiXSA9IFwibWR5XCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19FTkRcIl0gPSBcImVuZFwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJUUlVOQ19ZRUFSXCJdID0gXCJ0cnVuYy15ZWFyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIlRSVU5DX1FUUlwiXSA9IFwidHJ1bmMtcXRyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIlRSVU5DX01PTlRIXCJdID0gXCJ0cnVuYy1tb250aFwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJUUlVOQ19XRUVLXCJdID0gXCJ0cnVuYy13ZWVrXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIlRSVU5DX0RBWVwiXSA9IFwidHJ1bmMtZGF5XCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIlRSVU5DX0hPVVJcIl0gPSBcInRydW5jLWhvdXJcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiVFJVTkNfTUlOVVRFXCJdID0gXCJ0cnVuYy1taW51dGVcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiVFJVTkNfU0VDT05EXCJdID0gXCJ0cnVuYy1zZWNvbmRcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX1FVQVJUMVwiXSA9IFwicXVhcnQxXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19RVUFSVDNcIl0gPSBcInF1YXJ0M1wiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfU0tFV05FU1NcIl0gPSBcInNrZXduZXNzXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19LVVJUT1NJU1wiXSA9IFwia3VydG9zaXNcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX0lOT1VUXCJdID0gXCJpbi1vdXRcIjtcbiAgICAvLyBcbiAgICBBZ2dUeXBlW1wiQUdHX1NVTV9YU1FSXCJdID0gXCJzdW0teHNxclwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfVVNFUlwiXSA9IFwidXNlclwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfQ09MTEVDVFwiXSA9IFwiY29sbGVjdFwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfQ09WQVJcIl0gPSBcImNvdmFyXCI7XG4gICAgLy8gXG4gICAgQWdnVHlwZVtcIkFHR19DT1ZBUlBcIl0gPSBcImNvdmFycFwiO1xuICAgIC8vIFxuICAgIEFnZ1R5cGVbXCJBR0dfQ09SUlwiXSA9IFwiY29yclwiO1xufSkoQWdnVHlwZSA9IGV4cG9ydHMuQWdnVHlwZSB8fCAoZXhwb3J0cy5BZ2dUeXBlID0ge30pKTtcbi8vIERhdGFWYWx1ZUZvcm1hdHRlcjo6RGF0YVR5cGVFbmNvZGluZ3MgaGFzIGhhcmRjb2RlZCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBmb2xsb3dpbmcgZW51bSBtZW1iZXJzLiBTbyBhbnkgY2hhbmdlcyBoZXJlIHNob3VsZCBiZSBkb25lIHRoZXJlIHRvb1xudmFyIERhdGFUeXBlO1xuKGZ1bmN0aW9uIChEYXRhVHlwZSkge1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfSU5URUdFUlwiXSA9IFwiaW50ZWdlclwiO1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfUkVBTFwiXSA9IFwicmVhbFwiO1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfU1RSSU5HXCJdID0gXCJjc3RyaW5nXCI7XG4gICAgLy8gXG4gICAgRGF0YVR5cGVbXCJEVF9EQVRFVElNRVwiXSA9IFwiZGF0ZXRpbWVcIjtcbiAgICAvLyBcbiAgICBEYXRhVHlwZVtcIkRUX0JPT0xFQU5cIl0gPSBcImJvb2xlYW5cIjtcbiAgICAvLyBcbiAgICBEYXRhVHlwZVtcIkRUX0RBVEVcIl0gPSBcImRhdGVcIjtcbiAgICAvLyBcbiAgICBEYXRhVHlwZVtcIkRUX1RVUExFXCJdID0gXCJ0dXBsZVwiO1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfU1BBVElBTFwiXSA9IFwic3BhdGlhbFwiO1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfVU5LTk9XTlwiXSA9IFwidW5rbm93blwiO1xuICAgIC8vIFxuICAgIERhdGFUeXBlW1wiRFRfQklOQVJZXCJdID0gXCJiaW5hcnlcIjtcbiAgICAvLyBcbiAgICBEYXRhVHlwZVtcIkRUX1RJTUVcIl0gPSBcInRpbWVcIjtcbn0pKERhdGFUeXBlID0gZXhwb3J0cy5EYXRhVHlwZSB8fCAoZXhwb3J0cy5EYXRhVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBTb3J0RGlyZWN0aW9uO1xuKGZ1bmN0aW9uIChTb3J0RGlyZWN0aW9uKSB7XG4gICAgLy8gYXNjZW5kaW5nXG4gICAgU29ydERpcmVjdGlvbltcIlNUX0FTQ1wiXSA9IFwiYXNjXCI7XG4gICAgLy8gZGVzY2VuZGluZ1xuICAgIFNvcnREaXJlY3Rpb25bXCJTVF9ERVNDXCJdID0gXCJkZXNjXCI7XG59KShTb3J0RGlyZWN0aW9uID0gZXhwb3J0cy5Tb3J0RGlyZWN0aW9uIHx8IChleHBvcnRzLlNvcnREaXJlY3Rpb24gPSB7fSkpO1xuLy8gXG52YXIgU29ydFR5cGU7XG4oZnVuY3Rpb24gKFNvcnRUeXBlKSB7XG4gICAgLy8gVXNlIHRoZSBkZWZpbmVkIG9yZGVyaW5nXG4gICAgU29ydFR5cGVbXCJTVF9OQVRVUkFMXCJdID0gXCJkYXRhLXNvdXJjZS1vcmRlclwiO1xuICAgIC8vIEFscGhhYmV0aWMvbnVtZXJpYyBvcmRlcmluZyBvZiBkYXRhXG4gICAgU29ydFR5cGVbXCJTVF9BTFBIQUJFVElDXCJdID0gXCJhbHBoYVwiO1xuICAgIC8vIFNwZWNpZnkgYSBzZWNvbmRhcnkgZmllbGRcbiAgICBTb3J0VHlwZVtcIlNUX0NPTVBVVEVEXCJdID0gXCJmaWVsZFwiO1xuICAgIC8vIE1hbnVhbGx5IGRlZmluZWQgb3JkZXJpbmdcbiAgICBTb3J0VHlwZVtcIlNUX01BTlVBTFwiXSA9IFwibWFudWFsXCI7XG59KShTb3J0VHlwZSA9IGV4cG9ydHMuU29ydFR5cGUgfHwgKGV4cG9ydHMuU29ydFR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU29ydEVuZDtcbihmdW5jdGlvbiAoU29ydEVuZCkge1xuICAgIC8vIFxuICAgIFNvcnRFbmRbXCJTVF9UT1BcIl0gPSBcInRvcFwiO1xuICAgIC8vIFxuICAgIFNvcnRFbmRbXCJTVF9CT1RUT01cIl0gPSBcImJvdHRvbVwiO1xufSkoU29ydEVuZCA9IGV4cG9ydHMuU29ydEVuZCB8fCAoZXhwb3J0cy5Tb3J0RW5kID0ge30pKTtcbi8vIFxudmFyIEZvcmVjYXN0Q29sdW1uVHlwZTtcbihmdW5jdGlvbiAoRm9yZWNhc3RDb2x1bW5UeXBlKSB7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RDb2x1bW5UeXBlW1wiRk9SRUNBU1RfTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29sdW1uVHlwZVtcIkZPUkVDQVNUX1ZBTFVFXCJdID0gXCJ2YWx1ZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29sdW1uVHlwZVtcIkZPUkVDQVNUX0lORElDQVRPUlwiXSA9IFwiaW5kaWNhdG9yXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RDb2x1bW5UeXBlW1wiRk9SRUNBU1RfUFJFQ0lTSU9OXCJdID0gXCJwcmVjaXNpb25cIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdENvbHVtblR5cGVbXCJGT1JFQ0FTVF9RVUFMSVRZXCJdID0gXCJxdWFsaXR5XCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RDb2x1bW5UeXBlW1wiRk9SRUNBU1RfRklUX1RSRU5EXCJdID0gXCJmaXRfdHJlbmRcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdENvbHVtblR5cGVbXCJGT1JFQ0FTVF9QUkVDSVNJT05fUEVSQ0VOVFwiXSA9IFwicHJlY2lzaW9uX3BlcmNlbnRcIjtcbiAgICAvLyBcbiAgICBGb3JlY2FzdENvbHVtblR5cGVbXCJGT1JFQ0FTVF9QUkVESUNUSU9OX0lOVEVSVkFMX1VQUEVSXCJdID0gXCJwcmVkaWN0aW9uX3VwcGVyXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RDb2x1bW5UeXBlW1wiRk9SRUNBU1RfUFJFRElDVElPTl9JTlRFUlZBTF9MT1dFUlwiXSA9IFwicHJlZGljdGlvbl9sb3dlclwiO1xufSkoRm9yZWNhc3RDb2x1bW5UeXBlID0gZXhwb3J0cy5Gb3JlY2FzdENvbHVtblR5cGUgfHwgKGV4cG9ydHMuRm9yZWNhc3RDb2x1bW5UeXBlID0ge30pKTtcbi8vIFxudmFyIE1hcmtNYXJrZXJzTW9kZTtcbihmdW5jdGlvbiAoTWFya01hcmtlcnNNb2RlKSB7XG4gICAgLy8gXG4gICAgTWFya01hcmtlcnNNb2RlW1wiTU1NX0F1dG9cIl0gPSBcIm1tbS1hdXRvXCI7XG4gICAgLy8gXG4gICAgTWFya01hcmtlcnNNb2RlW1wiTU1NX0FsbFwiXSA9IFwibW1tX2FsbFwiO1xuICAgIC8vIFxuICAgIE1hcmtNYXJrZXJzTW9kZVtcIk1NTV9Ob25lXCJdID0gXCJtbW1fbm9uZVwiO1xuICAgIC8vIFxuICAgIE1hcmtNYXJrZXJzTW9kZVtcIk1NTV9EZWZhdWx0XCJdID0gXCJtbW1fZGVmYXVsdFwiO1xufSkoTWFya01hcmtlcnNNb2RlID0gZXhwb3J0cy5NYXJrTWFya2Vyc01vZGUgfHwgKGV4cG9ydHMuTWFya01hcmtlcnNNb2RlID0ge30pKTtcbi8vIFxudmFyIFBlcmNlbnRNb2RlO1xuKGZ1bmN0aW9uIChQZXJjZW50TW9kZSkge1xuICAgIC8vIFxuICAgIFBlcmNlbnRNb2RlW1wiUEVSQ0VOVF9DRUxMX0lOX1BBTkVcIl0gPSBcImNlbGwtaW4tcGFuZVwiO1xuICAgIC8vIFxuICAgIFBlcmNlbnRNb2RlW1wiUEVSQ0VOVF9ST1dfSU5fUEFORVwiXSA9IFwicm93LWluLXBhbmVcIjtcbiAgICAvLyBcbiAgICBQZXJjZW50TW9kZVtcIlBFUkNFTlRfQ09MVU1OX0lOX1BBTkVcIl0gPSBcImNvbHVtbi1pbi1wYW5lXCI7XG4gICAgLy8gXG4gICAgUGVyY2VudE1vZGVbXCJQRVJDRU5UX1BBTkVcIl0gPSBcInBhbmVcIjtcbiAgICAvLyBcbiAgICBQZXJjZW50TW9kZVtcIlBFUkNFTlRfUk9XXCJdID0gXCJyb3dcIjtcbiAgICAvLyBcbiAgICBQZXJjZW50TW9kZVtcIlBFUkNFTlRfQ09MVU1OXCJdID0gXCJjb2x1bW5cIjtcbiAgICAvLyBcbiAgICBQZXJjZW50TW9kZVtcIlBFUkNFTlRfVEFCTEVcIl0gPSBcInRhYmxlXCI7XG59KShQZXJjZW50TW9kZSA9IGV4cG9ydHMuUGVyY2VudE1vZGUgfHwgKGV4cG9ydHMuUGVyY2VudE1vZGUgPSB7fSkpO1xuLy8gXG52YXIgU3BlY2lhbFZhbHVlc01vZGU7XG4oZnVuY3Rpb24gKFNwZWNpYWxWYWx1ZXNNb2RlKSB7XG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlc01vZGVbXCJTUEVDSUFMX1ZBTFVFU19ISURFX0FORF9XQVJOXCJdID0gXCJoaWRlLWFuZC13YXJuXCI7XG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlc01vZGVbXCJTUEVDSUFMX1ZBTFVFU19ISURFXCJdID0gXCJoaWRlXCI7XG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlc01vZGVbXCJTUEVDSUFMX1ZBTFVFU19ISURFX0JSRUFLX0xJTkVTXCJdID0gXCJoaWRlLWJyZWFrLWxpbmVzXCI7XG4gICAgLy8gXG4gICAgU3BlY2lhbFZhbHVlc01vZGVbXCJTUEVDSUFMX1ZBTFVFU19TSE9XXCJdID0gXCJzaG93XCI7XG59KShTcGVjaWFsVmFsdWVzTW9kZSA9IGV4cG9ydHMuU3BlY2lhbFZhbHVlc01vZGUgfHwgKGV4cG9ydHMuU3BlY2lhbFZhbHVlc01vZGUgPSB7fSkpO1xuLy8gXG52YXIgTGF5b3V0VHlwZTtcbihmdW5jdGlvbiAoTGF5b3V0VHlwZSkge1xuICAgIC8vIFxuICAgIExheW91dFR5cGVbXCJMQVlPVVRfQ0FSVEVTSUFOXCJdID0gXCJjYXJ0ZXNpYW5cIjtcbiAgICAvLyBcbiAgICBMYXlvdXRUeXBlW1wiTEFZT1VUX0RFRkFVTFRcIl0gPSBcImRlZmF1bHRcIjtcbn0pKExheW91dFR5cGUgPSBleHBvcnRzLkxheW91dFR5cGUgfHwgKGV4cG9ydHMuTGF5b3V0VHlwZSA9IHt9KSk7XG4vLyBcbnZhciBTaGVsZlR5cGU7XG4oZnVuY3Rpb24gKFNoZWxmVHlwZSkge1xuICAgIC8vIFxuICAgIFNoZWxmVHlwZVtcIlNUX05PTkVcIl0gPSBcIm5vbmUtc2hlbGZcIjtcbiAgICAvLyBcbiAgICBTaGVsZlR5cGVbXCJTVF9DT0xVTU5TX1NIRUxGXCJdID0gXCJjb2x1bW5zLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfUk9XU19TSEVMRlwiXSA9IFwicm93cy1zaGVsZlwiO1xuICAgIC8vIFxuICAgIFNoZWxmVHlwZVtcIlNUX1BBR0VTX1NIRUxGXCJdID0gXCJwYWdlcy1zaGVsZlwiO1xuICAgIC8vIFxuICAgIFNoZWxmVHlwZVtcIlNUX0ZJTFRFUl9TSEVMRlwiXSA9IFwiZmlsdGVyLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfSU1BR0VfU0hFTEZcIl0gPSBcImltYWdlLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfTUVBU1VSRVNfU0hFTEZcIl0gPSBcIm1lYXN1cmVzLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfU0hPV01FX1NIRUxGXCJdID0gXCJzaG93LW1lLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfRU5DT0RJTkdfU0hFTEZcIl0gPSBcImVuY29kaW5nLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfQ0xVU1RFUl9TSEVMRlwiXSA9IFwiY2x1c3Rlci1zaGVsZlwiO1xuICAgIC8vIFxuICAgIFNoZWxmVHlwZVtcIlNUX0dFT01FVFJZX1NIRUxGXCJdID0gXCJnZW9tZXRyeS1zaGVsZlwiO1xuICAgIC8vIFxuICAgIFNoZWxmVHlwZVtcIlNUX0VORFwiXSA9IFwiZW5kLXNoZWxmXCI7XG4gICAgLy8gXG4gICAgU2hlbGZUeXBlW1wiU1RfRklOQUxcIl0gPSBcImZpbmFsLXNoZWxmXCI7XG59KShTaGVsZlR5cGUgPSBleHBvcnRzLlNoZWxmVHlwZSB8fCAoZXhwb3J0cy5TaGVsZlR5cGUgPSB7fSkpO1xuLy8gXG52YXIgUmVzdHJpY3RUeXBlO1xuKGZ1bmN0aW9uIChSZXN0cmljdFR5cGUpIHtcbiAgICAvLyBcbiAgICBSZXN0cmljdFR5cGVbXCJSVF9JTlRFUlNFQ1RcIl0gPSBcInJ0LWludGVyc2VjdGlvblwiO1xuICAgIC8vIFxuICAgIFJlc3RyaWN0VHlwZVtcIlJUX1VOSU9OXCJdID0gXCJydC11bmlvblwiO1xufSkoUmVzdHJpY3RUeXBlID0gZXhwb3J0cy5SZXN0cmljdFR5cGUgfHwgKGV4cG9ydHMuUmVzdHJpY3RUeXBlID0ge30pKTtcbi8vIFxudmFyIFRvb2x0aXBNb2RlO1xuKGZ1bmN0aW9uIChUb29sdGlwTW9kZSkge1xuICAgIC8vIFxuICAgIFRvb2x0aXBNb2RlW1wiVE1fTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIFRvb2x0aXBNb2RlW1wiVE1fU1RJQ0tZXCJdID0gXCJzdGlja3lcIjtcbiAgICAvLyBcbiAgICBUb29sdGlwTW9kZVtcIlRNX1NNT09USFwiXSA9IFwic21vb3RoXCI7XG59KShUb29sdGlwTW9kZSA9IGV4cG9ydHMuVG9vbHRpcE1vZGUgfHwgKGV4cG9ydHMuVG9vbHRpcE1vZGUgPSB7fSkpO1xuLy8gXG52YXIgQ29sdW1uR3JvdXBzO1xuKGZ1bmN0aW9uIChDb2x1bW5Hcm91cHMpIHtcbiAgICAvLyAweDAxXG4gICAgQ29sdW1uR3JvdXBzW1wiQ09MU19JTl9PVVRQVVRcIl0gPSBcImNvbHMtaW4tb3V0cHV0XCI7XG4gICAgLy8gMHgwMlxuICAgIENvbHVtbkdyb3Vwc1tcIkNPTFNfSU5fRklMVEVSX1NIRUxGXCJdID0gXCJjb2xzLWluLWZpbHRlci1zaGVsZlwiO1xuICAgIC8vIDB4MDRcbiAgICBDb2x1bW5Hcm91cHNbXCJDT0xTX1JFRl9CWV9GSUxURVJTXCJdID0gXCJjb2xzLXJlZi1ieS1maWx0ZXJzXCI7XG4gICAgLy8gMHgwOFxuICAgIENvbHVtbkdyb3Vwc1tcIkNPTFNfUkVGX0JZX09NRUFTVVJFU1wiXSA9IFwiY29scy1yZWYtYnktb21lYXN1cmVzXCI7XG4gICAgLy8gMHgxMFxuICAgIENvbHVtbkdyb3Vwc1tcIkNPTFNfUkVGX0JZX0pPSU5fTE9EXCJdID0gXCJjb2xzLXJlZi1ieS1qb2luLWxvZFwiO1xuICAgIC8vIDB4MjBcbiAgICBDb2x1bW5Hcm91cHNbXCJDT0xTX0hJRERFTlwiXSA9IFwiY29scy1oaWRkZW5cIjtcbiAgICAvLyAweDQwXG4gICAgQ29sdW1uR3JvdXBzW1wiQ09MU19SRUZfQllfU09SVFNcIl0gPSBcImNvbHMtcmVmLWJ5LXNvcnRzXCI7XG4gICAgLy8gXG4gICAgQ29sdW1uR3JvdXBzW1wiQ09MU19SRUZfQllfRklMVEVSU19PUl9TT1JUU1wiXSA9IFwiY29scy1yZWYtYnktZmlsdGVycy1vci1zb3J0c1wiO1xuICAgIC8vIFxuICAgIENvbHVtbkdyb3Vwc1tcIkNPTFNfT05fU0hFTFZFU1wiXSA9IFwiY29scy1vbi1zaGVsdmVzXCI7XG4gICAgLy8gXG4gICAgQ29sdW1uR3JvdXBzW1wiQ09MU19BTExcIl0gPSBcImNvbHMtYWxsXCI7XG59KShDb2x1bW5Hcm91cHMgPSBleHBvcnRzLkNvbHVtbkdyb3VwcyB8fCAoZXhwb3J0cy5Db2x1bW5Hcm91cHMgPSB7fSkpO1xuLy8gXG52YXIgQnV0dG9uc09wdGlvbjtcbihmdW5jdGlvbiAoQnV0dG9uc09wdGlvbikge1xuICAgIC8vIFxuICAgIEJ1dHRvbnNPcHRpb25bXCJCT19ISURFXCJdID0gXCJidXR0b25zLWhpZGVcIjtcbn0pKEJ1dHRvbnNPcHRpb24gPSBleHBvcnRzLkJ1dHRvbnNPcHRpb24gfHwgKGV4cG9ydHMuQnV0dG9uc09wdGlvbiA9IHt9KSk7XG4vLyBcbnZhciBTZWxlY3Rpb25SZWxheGF0aW9uT3B0aW9uO1xuKGZ1bmN0aW9uIChTZWxlY3Rpb25SZWxheGF0aW9uT3B0aW9uKSB7XG4gICAgLy8gXG4gICAgU2VsZWN0aW9uUmVsYXhhdGlvbk9wdGlvbltcIlNST19BTExPV1wiXSA9IFwic2VsZWN0aW9uLXJlbGF4YXRpb24tYWxsb3dcIjtcbiAgICAvLyBcbiAgICBTZWxlY3Rpb25SZWxheGF0aW9uT3B0aW9uW1wiU1JPX0RJU0FMTE9XXCJdID0gXCJzZWxlY3Rpb24tcmVsYXhhdGlvbi1kaXNhbGxvd1wiO1xufSkoU2VsZWN0aW9uUmVsYXhhdGlvbk9wdGlvbiA9IGV4cG9ydHMuU2VsZWN0aW9uUmVsYXhhdGlvbk9wdGlvbiB8fCAoZXhwb3J0cy5TZWxlY3Rpb25SZWxheGF0aW9uT3B0aW9uID0ge30pKTtcbi8vIFxudmFyIEVuY29kaW5nVHlwZTtcbihmdW5jdGlvbiAoRW5jb2RpbmdUeXBlKSB7XG4gICAgLy8gYSB0ZXh0IGVuY29kaW5nXG4gICAgRW5jb2RpbmdUeXBlW1wiRVRfVEVYVFwiXSA9IFwidGV4dC1lbmNvZGluZ1wiO1xuICAgIC8vIGEgY29sb3IgZW5jb2RpbmdcbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9DT0xPUlwiXSA9IFwiY29sb3ItZW5jb2RpbmdcIjtcbiAgICAvLyBhIHNpemUgZW5jb2RpbmdcbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9TSVpFXCJdID0gXCJzaXplLWVuY29kaW5nXCI7XG4gICAgLy8gYSBzaGFwZSBlbmNvZGluZ1xuICAgIEVuY29kaW5nVHlwZVtcIkVUX1NIQVBFXCJdID0gXCJzaGFwZS1lbmNvZGluZ1wiO1xuICAgIC8vIGFuIGltYWdlIGVuY29kaW5nXG4gICAgRW5jb2RpbmdUeXBlW1wiRVRfSU1BR0VcIl0gPSBcImltYWdlLWVuY29kaW5nXCI7XG4gICAgLy8gYSBzb3J0IChwYXRoKSBlbmNvZGluZyAoY3VycmVudGx5IG9ubHkgZm9yIGxpbmUgb3IgcG9seWdvbiBjaGFydHMpXG4gICAgRW5jb2RpbmdUeXBlW1wiRVRfU09SVFwiXSA9IFwic29ydC1lbmNvZGluZ1wiO1xuICAgIC8vIGEgd2VkZ2Ugc2l6ZSAoYW5nbGUpIGVuY29kaW5nIChjdXJyZW50bHkgb25seSBmb3IgcGllIGNoYXJ0cylcbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9XRURHRVNJWkVcIl0gPSBcIndlZGdlLXNpemUtZW5jb2RpbmdcIjtcbiAgICAvLyBhIGdlb21ldHJ5IGVuY29kaW5nXG4gICAgRW5jb2RpbmdUeXBlW1wiRVRfR0VPTUVUUllcIl0gPSBcImdlb21ldHJ5LWVuY29kaW5nXCI7XG4gICAgLy8gYSBsZXZlbCBvZiBkZXRhaWwgZW5jb2RpbmdcbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9MT0RcIl0gPSBcImxldmVsLW9mLWRldGFpbC1lbmNvZGluZ1wiO1xuICAgIC8vIGVuY29kaW5nIHVzZWQgZm9yIHRoZSBkYXRhIGhpZ2hsaWdodGVyL2xlZ2VuZCBtZWNoYW5pc21cbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9ISUdITElHSFRcIl0gPSBcImhpZ2hsaWdodC1lbmNvZGluZ1wiO1xuICAgIC8vIGEgdG9vbHRpcCBlbmNvZGluZ1xuICAgIEVuY29kaW5nVHlwZVtcIkVUX1RPT0xUSVBcIl0gPSBcInRvb2x0aXAtZW5jb2RpbmdcIjtcbiAgICAvLyBhIHRlbXBvcmFyeSBsYWJlbCBwbGFjZWQgYWJvdmUgbWFya3MgZm9yIHRoZSB0YWJsZSBjYWxjIGRpYWxvZ1xuICAgIEVuY29kaW5nVHlwZVtcIkVUX1JVTk5JTkdPUkRFUlwiXSA9IFwicnVubmluZ29yZGVyLWVuY29kaW5nXCI7XG4gICAgLy8gdGhlIG51bWJlciBvZiBlbmNvZGluZ3MsIHRoaXMgaXMgaW52YWxpZCBpbnB1dCBmb3IgYW4gZW5jb2RpbmcgcHJlc2VudGF0aW9uIG1vZGVsXG4gICAgRW5jb2RpbmdUeXBlW1wiTlVNX0VOQ09ESU5HU1wiXSA9IFwibnVtLWVuY29kaW5nc1wiO1xuICAgIC8vIGFuIGludmFsaWQgZW5jb2RpbmdcbiAgICBFbmNvZGluZ1R5cGVbXCJFVF9JTlZBTElEXCJdID0gXCJpbnZhbGlkLWVuY29kaW5nXCI7XG59KShFbmNvZGluZ1R5cGUgPSBleHBvcnRzLkVuY29kaW5nVHlwZSB8fCAoZXhwb3J0cy5FbmNvZGluZ1R5cGUgPSB7fSkpO1xuLy8gRW51bWVyYXRpb24gb2YgdmFsaWQgaG9yaXpvbnRhbCBhbGlnbm1lbnRzLlxudmFyIExhYmVsSEFsaWdubWVudDtcbihmdW5jdGlvbiAoTGFiZWxIQWxpZ25tZW50KSB7XG4gICAgLy8gXG4gICAgTGFiZWxIQWxpZ25tZW50W1wiTEhBX0xlZnRcIl0gPSBcImgtYWxpZ24tbGVmdFwiO1xuICAgIC8vIFxuICAgIExhYmVsSEFsaWdubWVudFtcIkxIQV9DZW50ZXJcIl0gPSBcImgtYWxpZ24tY2VudGVyXCI7XG4gICAgLy8gXG4gICAgTGFiZWxIQWxpZ25tZW50W1wiTEhBX1JpZ2h0XCJdID0gXCJoLWFsaWduLXJpZ2h0XCI7XG4gICAgLy8gXG4gICAgTGFiZWxIQWxpZ25tZW50W1wiTEhBX0F1dG9tYXRpY1wiXSA9IFwiaC1hbGlnbi1hdXRvXCI7XG59KShMYWJlbEhBbGlnbm1lbnQgPSBleHBvcnRzLkxhYmVsSEFsaWdubWVudCB8fCAoZXhwb3J0cy5MYWJlbEhBbGlnbm1lbnQgPSB7fSkpO1xuLy8gRW51bWVyYXRpb24gb2YgdmFsaWQgdmVydGljYWwgYWxpZ25tZW50cy5cbnZhciBMYWJlbFZBbGlnbm1lbnQ7XG4oZnVuY3Rpb24gKExhYmVsVkFsaWdubWVudCkge1xuICAgIC8vIFxuICAgIExhYmVsVkFsaWdubWVudFtcIkxWQV9Cb3R0b21cIl0gPSBcInYtYWxpZ24tYm90dG9tXCI7XG4gICAgLy8gXG4gICAgTGFiZWxWQWxpZ25tZW50W1wiTFZBX0NlbnRlclwiXSA9IFwidi1hbGlnbi1jZW50ZXJcIjtcbiAgICAvLyBcbiAgICBMYWJlbFZBbGlnbm1lbnRbXCJMVkFfVG9wXCJdID0gXCJ2LWFsaWduLXRvcFwiO1xuICAgIC8vIFxuICAgIExhYmVsVkFsaWdubWVudFtcIkxWQV9BdXRvbWF0aWNcIl0gPSBcInYtYWxpZ24tYXV0b1wiO1xufSkoTGFiZWxWQWxpZ25tZW50ID0gZXhwb3J0cy5MYWJlbFZBbGlnbm1lbnQgfHwgKGV4cG9ydHMuTGFiZWxWQWxpZ25tZW50ID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGxhYmVsIHBvc2l0aW9ucy5cbnZhciBMYWJlbFBvc2l0aW9uO1xuKGZ1bmN0aW9uIChMYWJlbFBvc2l0aW9uKSB7XG4gICAgLy8gUG9zaXRpb24gZWFjaCB0ZXh0IHJ1biByZWxhdGl2ZSB0byB0aGUgY2VudGVyIG9mIHRoZSBvcmlnaW5hbCBiYm94LiAgVXNlIHRoZSBvcmlnaW5hbCBiYm94IGFzIHRoZSBoZWlnaHQgYW5kIHdpZHRoIG9mIHRoZSB0ZXh0IG1hcmsuICBVc2VkIGZvciBub24tc3RhY2tlZCBPTyB0ZXh0IG1hcmtzLlxuICAgIExhYmVsUG9zaXRpb25bXCJDZW50ZXJJbk9yaWdpbmFsQmJveFwiXSA9IFwibGFiZWwtcG9zaXRpb24tY2VudGVyLWluLW9yaWdpbmFsLWJveFwiO1xuICAgIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgbWVhc3VyZWQgYmJveC4gVXNlIHRoZSBtZWFzdXJlZCBiYm94IGFzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBsYWJlbC4gVXNlZCBmb3IgbGFiZWxzXG4gICAgTGFiZWxQb3NpdGlvbltcIk9yaWdpbkF0TG93ZXJMZWZ0XCJdID0gXCJsYWJlbC1wb3NpdGlvbi1vcmlnaW4tYXQtbG93ZXItbGVmdFwiO1xuICAgIC8vIFBvc2l0aW9uIGVhY2ggdGV4dCBydW4gcmVsYXRpdmUgdG8gdGhlIGNlbnRlciBvZiB0aGUgbWVhc3VyZWQgYmJveC4gVXNlIHRoZSBtZWFzdXJlZCBiYm94IGFzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IG1hcmsuIFVzZWQgZm9yIG1vc3QgdGV4dCBtYXJrcy5cbiAgICBMYWJlbFBvc2l0aW9uW1wiT3JpZ2luQXRDZW50ZXJcIl0gPSBcImxhYmVsLXBvc2l0aW9uLW9yaWdpbi1hdC1jZW50ZXJcIjtcbn0pKExhYmVsUG9zaXRpb24gPSBleHBvcnRzLkxhYmVsUG9zaXRpb24gfHwgKGV4cG9ydHMuTGFiZWxQb3NpdGlvbiA9IHt9KSk7XG4vLyBFbnVtZXJhdGlvbiBvZiB3YXlzIHRvIHVzZSBjb2xvci4gIFZhbHVlcyBjYW4gYmUgb3InZWQgdG9nZXRoZXIgdG8gbWFrZSBhIG1hc2sgZm9yIGFsbG93ZWQgb3B0aW9uc1xudmFyIENvbG9yTW9kZTtcbihmdW5jdGlvbiAoQ29sb3JNb2RlKSB7XG4gICAgLy8gQ29sb3IgdXNlciBzcGVjaWZpZWRcbiAgICBDb2xvck1vZGVbXCJDTFJNX1VzZXJcIl0gPSBcImNscm0tdXNlclwiO1xuICAgIC8vIENvbG9yIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHlcbiAgICBDb2xvck1vZGVbXCJDTFJNX0F1dG9cIl0gPSBcImNscm0tYXV0b1wiO1xuICAgIC8vIENvbG9yIG1hdGNoZXMgbWFyayBjb2xvclxuICAgIENvbG9yTW9kZVtcIkNMUk1fTWF0Y2hcIl0gPSBcImNscm0tbWF0Y2hcIjtcbiAgICAvLyBObyBjb2xvciAodHJhbnNwYXJlbnQgb3Igbm90IGRyYXduKVxuICAgIENvbG9yTW9kZVtcIkNMUk1fTm9uZVwiXSA9IFwiY2xybS1ub25lXCI7XG59KShDb2xvck1vZGUgPSBleHBvcnRzLkNvbG9yTW9kZSB8fCAoZXhwb3J0cy5Db2xvck1vZGUgPSB7fSkpO1xuLy8gXG52YXIgTWFya0xhYmVsc01vZGU7XG4oZnVuY3Rpb24gKE1hcmtMYWJlbHNNb2RlKSB7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fQWxsXCJdID0gXCJtbG0tYWxsXCI7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fU2VsZWN0aW9uXCJdID0gXCJtbG0tc2VsZWN0aW9uXCI7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fSGlnaGxpZ2h0XCJdID0gXCJtbG0taGlnaGxpZ2h0XCI7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fTGluZUVuZHNcIl0gPSBcIm1sbS1saW5lLWVuZHNcIjtcbiAgICAvLyBtaW4vbWF4IHNldHRpbmdcbiAgICBNYXJrTGFiZWxzTW9kZVtcIk1MTV9SYW5nZVwiXSA9IFwibWxtLXJhbmdlXCI7XG4gICAgLy8gbW9zdCByZWNlbnQgKG9ubHkgcmVsZXZhbnQgd2hlbiBkYXRlIGZpZWxkIGlzIGluIHBsYXkpXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fTW9zdFJlY2VudFwiXSA9IFwibWxtLW1vc3QtcmVjZW50XCI7XG4gICAgLy8gLi4udGhpcyBpcyBcIiB2aXJ0dWFsIFwiIChydW50aW1lIG9ubHksIG5vdCBzYXZlZCwgbm90IHNob3duIGFzIGEgdXNlciBzZXR0aW5nXG4gICAgTWFya0xhYmVsc01vZGVbXCJNTE1fTXVsdGlwbGVWYWx1ZXNcIl0gPSBcIm1sbS1tdWx0aXBsZS12YWx1ZXNcIjtcbiAgICAvLyBcbiAgICBNYXJrTGFiZWxzTW9kZVtcIk1MTV9EZWZhdWx0XCJdID0gXCJtbG0tZGVmYXVsdFwiO1xufSkoTWFya0xhYmVsc01vZGUgPSBleHBvcnRzLk1hcmtMYWJlbHNNb2RlIHx8IChleHBvcnRzLk1hcmtMYWJlbHNNb2RlID0ge30pKTtcbi8vIFxudmFyIE1hcmtMYWJlbHNTY29wZTtcbihmdW5jdGlvbiAoTWFya0xhYmVsc1Njb3BlKSB7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc1Njb3BlW1wiTUxTX1RhYmxlXCJdID0gXCJtbHMtdGFibGVcIjtcbiAgICAvLyBcbiAgICBNYXJrTGFiZWxzU2NvcGVbXCJNTFNfUGFuZVwiXSA9IFwibWxzLXBhbmVcIjtcbiAgICAvLyBcbiAgICBNYXJrTGFiZWxzU2NvcGVbXCJNTFNfQ2VsbFwiXSA9IFwibWxzLWNlbGxcIjtcbiAgICAvLyBcbiAgICBNYXJrTGFiZWxzU2NvcGVbXCJNTFNfTXVsdGlNYXJrXCJdID0gXCJtbHMtbXVsdGltYXJrXCI7XG4gICAgLy8gLi4udGhpcyBpcyBcIiB2aXJ0dWFsIFwiIChydW50aW1lIG9ubHksIG5vdCBzYXZlZCwgbm90IHNob3duIGFzIGEgdXNlciBzZXR0aW5nKVxuICAgIE1hcmtMYWJlbHNTY29wZVtcIk1MU19NdWx0aXBsZVZhbHVlc1wiXSA9IFwibWxzLW11bHRpcGxlLXZhbHVlc1wiO1xuICAgIC8vIFxuICAgIE1hcmtMYWJlbHNTY29wZVtcIk1MU19EZWZhdWx0XCJdID0gXCJtbHMtZGVmYXVsdFwiO1xufSkoTWFya0xhYmVsc1Njb3BlID0gZXhwb3J0cy5NYXJrTGFiZWxzU2NvcGUgfHwgKGV4cG9ydHMuTWFya0xhYmVsc1Njb3BlID0ge30pKTtcbi8vIFxudmFyIE1hcmtMYWJlbHNWaXNpYmlsaXR5O1xuKGZ1bmN0aW9uIChNYXJrTGFiZWxzVmlzaWJpbGl0eSkge1xuICAgIC8vIFxuICAgIE1hcmtMYWJlbHNWaXNpYmlsaXR5W1wiTUxWX0hpZGRlblwiXSA9IFwibWx2LWhpZGRlblwiO1xuICAgIC8vIFxuICAgIE1hcmtMYWJlbHNWaXNpYmlsaXR5W1wiTUxWX1Zpc2libGVcIl0gPSBcIm1sdi12aXNpYmxlXCI7XG4gICAgLy8gXG4gICAgTWFya0xhYmVsc1Zpc2liaWxpdHlbXCJNTFZfVXNlQ3VycmVudFwiXSA9IFwibWx2LXVzZS1jdXJyZW50XCI7XG59KShNYXJrTGFiZWxzVmlzaWJpbGl0eSA9IGV4cG9ydHMuTWFya0xhYmVsc1Zpc2liaWxpdHkgfHwgKGV4cG9ydHMuTWFya0xhYmVsc1Zpc2liaWxpdHkgPSB7fSkpO1xuLy8gXG52YXIgU3RhY2tpbmdNb2RlO1xuKGZ1bmN0aW9uIChTdGFja2luZ01vZGUpIHtcbiAgICAvLyBcbiAgICBTdGFja2luZ01vZGVbXCJTdGFja2luZ09mZlwiXSA9IFwib2ZmXCI7XG4gICAgLy8gXG4gICAgU3RhY2tpbmdNb2RlW1wiU3RhY2tpbmdPblwiXSA9IFwib25cIjtcbiAgICAvLyBcbiAgICBTdGFja2luZ01vZGVbXCJTdGFja2luZ0F1dG9cIl0gPSBcImF1dG9cIjtcbn0pKFN0YWNraW5nTW9kZSA9IGV4cG9ydHMuU3RhY2tpbmdNb2RlIHx8IChleHBvcnRzLlN0YWNraW5nTW9kZSA9IHt9KSk7XG4vLyBcbnZhciBNYXJrQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChNYXJrQWxpZ25tZW50KSB7XG4gICAgLy8gXG4gICAgTWFya0FsaWdubWVudFtcIk1hcmtBbGlnbm1lbnRMZWZ0XCJdID0gXCJtYXJrLWFsaWdubWVudC1sZWZ0XCI7XG4gICAgLy8gXG4gICAgTWFya0FsaWdubWVudFtcIk1hcmtBbGlnbm1lbnRSaWdodFwiXSA9IFwibWFyay1hbGlnbm1lbnQtcmlnaHRcIjtcbiAgICAvLyBcbiAgICBNYXJrQWxpZ25tZW50W1wiTWFya0FsaWdubWVudENlbnRlclwiXSA9IFwibWFyay1hbGlnbm1lbnQtY2VudGVyXCI7XG59KShNYXJrQWxpZ25tZW50ID0gZXhwb3J0cy5NYXJrQWxpZ25tZW50IHx8IChleHBvcnRzLk1hcmtBbGlnbm1lbnQgPSB7fSkpO1xuLy8gXG52YXIgUGFuZUxhYmVsQ29tcG9zaXRpb247XG4oZnVuY3Rpb24gKFBhbmVMYWJlbENvbXBvc2l0aW9uKSB7XG4gICAgLy8gXG4gICAgUGFuZUxhYmVsQ29tcG9zaXRpb25bXCJQTENfTm9uZVwiXSA9IFwicGFuZS1sYWJlbC1jb21wb3NpdGlvbi1ub25lXCI7XG4gICAgLy8gXG4gICAgUGFuZUxhYmVsQ29tcG9zaXRpb25bXCJQTENfTWl4ZWRcIl0gPSBcInBhbmUtbGFiZWwtY29tcG9zaXRpb24tbWl4ZWRcIjtcbiAgICAvLyBcbiAgICBQYW5lTGFiZWxDb21wb3NpdGlvbltcIlBMQ19BbGxcIl0gPSBcInBhbmUtbGFiZWwtY29tcG9zaXRpb24tYWxsXCI7XG59KShQYW5lTGFiZWxDb21wb3NpdGlvbiA9IGV4cG9ydHMuUGFuZUxhYmVsQ29tcG9zaXRpb24gfHwgKGV4cG9ydHMuUGFuZUxhYmVsQ29tcG9zaXRpb24gPSB7fSkpO1xuLy8gVGhlIHVzZXItc3BlY2lmaWVkIG1hcmsgdHlwZSBvbiB0aGUgTWFya3MgQ2FyZFxudmFyIFByaW1pdGl2ZVR5cGU7XG4oZnVuY3Rpb24gKFByaW1pdGl2ZVR5cGUpIHtcbiAgICAvLyBcbiAgICBQcmltaXRpdmVUeXBlW1wiUFRfQVVUT01BVElDXCJdID0gXCJhdXRvbWF0aWNcIjtcbiAgICAvLyBcbiAgICBQcmltaXRpdmVUeXBlW1wiUFRfVEVYVFwiXSA9IFwidGV4dFwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9JTUFHRVwiXSA9IFwiaW1hZ2VcIjtcbiAgICAvLyBcbiAgICBQcmltaXRpdmVUeXBlW1wiUFRfU0hBUEVcIl0gPSBcInNoYXBlXCI7XG4gICAgLy8gXG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX1JFQ1RBTkdMRVwiXSA9IFwicmVjdGFuZ2xlXCI7XG4gICAgLy8gXG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX0JBUlwiXSA9IFwiYmFyXCI7XG4gICAgLy8gXG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX0dBTlRUXCJdID0gXCJnYW50dFwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9TUVVBUkVcIl0gPSBcInNxdWFyZVwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9DSVJDTEVcIl0gPSBcImNpcmNsZVwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9QT0xZTElORVwiXSA9IFwicG9seWxpbmVcIjtcbiAgICAvLyBsaW5lIGNoYXJ0XG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX0xJTkVcIl0gPSBcImxpbmVcIjtcbiAgICAvLyBcbiAgICBQcmltaXRpdmVUeXBlW1wiUFRfUE9MWUdPTlwiXSA9IFwicG9seWdvblwiO1xuICAgIC8vIGFyZWEgY2hhcnRcbiAgICBQcmltaXRpdmVUeXBlW1wiUFRfQVJFQVwiXSA9IFwiYXJlYVwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9QSUVcIl0gPSBcInBpZVwiO1xuICAgIC8vIFxuICAgIFByaW1pdGl2ZVR5cGVbXCJQVF9NVUxUSVBPTFlHT05cIl0gPSBcIm11bHRpcG9seWdvblwiO1xuICAgIC8vIE5vdCBhbiBhY3R1YWwgcHJpbWl0aXZlIHR5cGUuIFRoaXMgaXMganVzdCB1c2VkIHRvIGZsYWcgdGhlIFVJIHRoYXQgbXVsdGlwbGUgdHlwZXMgYXJlIGluIHBsYXkuXG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX01VTFRJUExFXCJdID0gXCJtdWx0aXBsZVwiO1xuICAgIC8vIHVzZWQgZm9yIGxvb3Bpbmcgb3ZlciBhbGwgdmFsdWVzXG4gICAgUHJpbWl0aXZlVHlwZVtcIk5VTV9QUklNSVRJVkVTXCJdID0gXCJjb3VudFwiO1xuICAgIC8vIHVzZWQgdG8gZmxhZyBhbiB1bnNldCBvciBpbnZhbGlkIHN0YXRlXG4gICAgUHJpbWl0aXZlVHlwZVtcIlBUX0lOVkFMSURcIl0gPSBcImludmFsaWRcIjtcbn0pKFByaW1pdGl2ZVR5cGUgPSBleHBvcnRzLlByaW1pdGl2ZVR5cGUgfHwgKGV4cG9ydHMuUHJpbWl0aXZlVHlwZSA9IHt9KSk7XG4vLyBEZWZpbmVzIHRoZSB3YXkgYSBnaXZlbiBwcmltaXRpdmUgYmVoYXZlcyBvbiBhIHZpeiAtIGZvciBpbnN0YW5jZSwgYSBQVF9DSVJDTEUgaXMgdHJlYXRlZCBhcyBhIHBvaW50LCB3aGlsZSBhIFBUX1BPTFlHT04gd291bGQgYmUgdHJlYXRlZCBhcyBhbiBhcmVhLlxudmFyIE1hcmtUeXBlO1xuKGZ1bmN0aW9uIChNYXJrVHlwZSkge1xuICAgIC8vIFxuICAgIE1hcmtUeXBlW1wiTVRfUE9JTlRcIl0gPSBcInBvaW50XCI7XG4gICAgLy8gXG4gICAgTWFya1R5cGVbXCJNVF9MSU5FXCJdID0gXCJsaW5lXCI7XG4gICAgLy8gXG4gICAgTWFya1R5cGVbXCJNVF9BUkVBXCJdID0gXCJhcmVhXCI7XG4gICAgLy8gXG4gICAgTWFya1R5cGVbXCJNVF9JTlZBTElEXCJdID0gXCJpbnZhbGlkXCI7XG59KShNYXJrVHlwZSA9IGV4cG9ydHMuTWFya1R5cGUgfHwgKGV4cG9ydHMuTWFya1R5cGUgPSB7fSkpO1xuLy8gUGFuZUF4aXMgaXMgdXNlZCB0byBkZXNjcmliZSB3aGljaCBheGlzIG9mIGEgcGFuZSBpcyB0aGUgaW5kZXBlbmRlbnQgYXhpcy5cbnZhciBQYW5lQXhpcztcbihmdW5jdGlvbiAoUGFuZUF4aXMpIHtcbiAgICAvLyBUaGUgaW5kZXBlbmRlbnQgYXhpcyBpcyBpbmZlcnJlZCBmcm9tIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIHBhbmUuXG4gICAgUGFuZUF4aXNbXCJBWElTX0FVVE9cIl0gPSBcImF1dG9cIjtcbiAgICAvLyBcbiAgICBQYW5lQXhpc1tcIkFYSVNfWFwiXSA9IFwieFwiO1xuICAgIC8vIFxuICAgIFBhbmVBeGlzW1wiQVhJU19ZXCJdID0gXCJ5XCI7XG59KShQYW5lQXhpcyA9IGV4cG9ydHMuUGFuZUF4aXMgfHwgKGV4cG9ydHMuUGFuZUF4aXMgPSB7fSkpO1xuLy8gXG52YXIgUm91bmRpbmc7XG4oZnVuY3Rpb24gKFJvdW5kaW5nKSB7XG4gICAgLy8gXG4gICAgUm91bmRpbmdbXCJSb3VuZGluZ19Ob25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgUm91bmRpbmdbXCJSb3VuZGluZ19TbWFsbFwiXSA9IFwic21hbGxcIjtcbiAgICAvLyBcbiAgICBSb3VuZGluZ1tcIlJvdW5kaW5nX01lZGl1bVwiXSA9IFwibWVkaXVtXCI7XG4gICAgLy8gXG4gICAgUm91bmRpbmdbXCJSb3VuZGluZ19MYXJnZVwiXSA9IFwibGFyZ2VcIjtcbn0pKFJvdW5kaW5nID0gZXhwb3J0cy5Sb3VuZGluZyB8fCAoZXhwb3J0cy5Sb3VuZGluZyA9IHt9KSk7XG4vLyBcbnZhciBMaW5lRW5kO1xuKGZ1bmN0aW9uIChMaW5lRW5kKSB7XG4gICAgLy8gXG4gICAgTGluZUVuZFtcIkxpbmVFbmRfTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIExpbmVFbmRbXCJMaW5lRW5kX0Fycm93XCJdID0gXCJhcnJvd1wiO1xuICAgIC8vIFxuICAgIExpbmVFbmRbXCJMaW5lRW5kX09wZW5BcnJvd1wiXSA9IFwib3Blbi1hcnJvd1wiO1xuICAgIC8vIFxuICAgIExpbmVFbmRbXCJMaW5lRW5kX0RvdFwiXSA9IFwiZG90XCI7XG59KShMaW5lRW5kID0gZXhwb3J0cy5MaW5lRW5kIHx8IChleHBvcnRzLkxpbmVFbmQgPSB7fSkpO1xuLy8gXG52YXIgTGluZUVuZFNpemU7XG4oZnVuY3Rpb24gKExpbmVFbmRTaXplKSB7XG4gICAgLy8gXG4gICAgTGluZUVuZFNpemVbXCJMaW5lRW5kU2l6ZV9TbWFsbGVzdFwiXSA9IFwic21hbGxlc3RcIjtcbiAgICAvLyBcbiAgICBMaW5lRW5kU2l6ZVtcIkxpbmVFbmRTaXplX1NtYWxsZXJcIl0gPSBcInNtYWxsZXJcIjtcbiAgICAvLyBcbiAgICBMaW5lRW5kU2l6ZVtcIkxpbmVFbmRTaXplX1NtYWxsXCJdID0gXCJzbWFsbFwiO1xuICAgIC8vIFxuICAgIExpbmVFbmRTaXplW1wiTGluZUVuZFNpemVfTWVkaXVtXCJdID0gXCJtZWRpdW1cIjtcbiAgICAvLyBcbiAgICBMaW5lRW5kU2l6ZVtcIkxpbmVFbmRTaXplX0xhcmdlXCJdID0gXCJsYXJnZVwiO1xuICAgIC8vIFxuICAgIExpbmVFbmRTaXplW1wiTGluZUVuZFNpemVfTGFyZ2VyXCJdID0gXCJsYXJnZXJcIjtcbiAgICAvLyBcbiAgICBMaW5lRW5kU2l6ZVtcIkxpbmVFbmRTaXplX0xhcmdlc3RcIl0gPSBcImxhcmdlc3RcIjtcbn0pKExpbmVFbmRTaXplID0gZXhwb3J0cy5MaW5lRW5kU2l6ZSB8fCAoZXhwb3J0cy5MaW5lRW5kU2l6ZSA9IHt9KSk7XG4vLyBcbnZhciBCb2R5VHlwZTtcbihmdW5jdGlvbiAoQm9keVR5cGUpIHtcbiAgICAvLyBcbiAgICBCb2R5VHlwZVtcIkJvZHlUeXBlX05vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBCb2R5VHlwZVtcIkJvZHlUeXBlX0JveFwiXSA9IFwiYm94XCI7XG4gICAgLy8gXG4gICAgQm9keVR5cGVbXCJCb2R5VHlwZV9FZGdlXCJdID0gXCJlZGdlXCI7XG59KShCb2R5VHlwZSA9IGV4cG9ydHMuQm9keVR5cGUgfHwgKGV4cG9ydHMuQm9keVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU3R5bGVUaGVtZTtcbihmdW5jdGlvbiAoU3R5bGVUaGVtZSkge1xuICAgIC8vIFxuICAgIFN0eWxlVGhlbWVbXCJ0aGVtZUNsYXNzaWNcIl0gPSBcImNsYXNzaWNcIjtcbiAgICAvLyBcbiAgICBTdHlsZVRoZW1lW1widGhlbWVNb2Rlcm5cIl0gPSBcIm1vZGVyblwiO1xuICAgIC8vIFxuICAgIFN0eWxlVGhlbWVbXCJ0aGVtZUNsZWFuXCJdID0gXCJjbGVhblwiO1xuICAgIC8vIFxuICAgIFN0eWxlVGhlbWVbXCJ0aGVtZVNtb290aFwiXSA9IFwic21vb3RoXCI7XG4gICAgLy8gXG4gICAgU3R5bGVUaGVtZVtcInRoZW1lQ3VzdG9tXCJdID0gXCJjdXN0b21cIjtcbn0pKFN0eWxlVGhlbWUgPSBleHBvcnRzLlN0eWxlVGhlbWUgfHwgKGV4cG9ydHMuU3R5bGVUaGVtZSA9IHt9KSk7XG4vLyBcbnZhciBBeGlzRm9sZFN0YXRlO1xuKGZ1bmN0aW9uIChBeGlzRm9sZFN0YXRlKSB7XG4gICAgLy8gXG4gICAgQXhpc0ZvbGRTdGF0ZVtcImFmTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIEF4aXNGb2xkU3RhdGVbXCJhZkZvbGRlZFwiXSA9IFwiZm9sZGVkXCI7XG4gICAgLy8gXG4gICAgQXhpc0ZvbGRTdGF0ZVtcImFmU3luY2hyb25pemVkXCJdID0gXCJzeW5jaHJvbml6ZWRcIjtcbn0pKEF4aXNGb2xkU3RhdGUgPSBleHBvcnRzLkF4aXNGb2xkU3RhdGUgfHwgKGV4cG9ydHMuQXhpc0ZvbGRTdGF0ZSA9IHt9KSk7XG4vLyBcbnZhciBMaW5lUGF0dGVybjtcbihmdW5jdGlvbiAoTGluZVBhdHRlcm4pIHtcbiAgICAvLyBcbiAgICBMaW5lUGF0dGVybltcIkxpbmVQYXR0ZXJuTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIExpbmVQYXR0ZXJuW1wiTGluZVBhdHRlcm5Tb2xpZFwiXSA9IFwic29saWRcIjtcbiAgICAvLyBcbiAgICBMaW5lUGF0dGVybltcIkxpbmVQYXR0ZXJuRGFzaGVkXCJdID0gXCJkYXNoZWRcIjtcbiAgICAvLyBcbiAgICBMaW5lUGF0dGVybltcIkxpbmVQYXR0ZXJuRG90dGVkXCJdID0gXCJkb3R0ZWRcIjtcbn0pKExpbmVQYXR0ZXJuID0gZXhwb3J0cy5MaW5lUGF0dGVybiB8fCAoZXhwb3J0cy5MaW5lUGF0dGVybiA9IHt9KSk7XG4vLyBcbnZhciBMaW5lVmlzaWJpbGl0eTtcbihmdW5jdGlvbiAoTGluZVZpc2liaWxpdHkpIHtcbiAgICAvLyBcbiAgICBMaW5lVmlzaWJpbGl0eVtcIkxpbmVWaXNpYmlsaXR5QXV0b1wiXSA9IFwiYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgTGluZVZpc2liaWxpdHlbXCJMaW5lVmlzaWJpbGl0eU9uXCJdID0gXCJvblwiO1xuICAgIC8vIFxuICAgIExpbmVWaXNpYmlsaXR5W1wiTGluZVZpc2liaWxpdHlPZmZcIl0gPSBcIm9mZlwiO1xufSkoTGluZVZpc2liaWxpdHkgPSBleHBvcnRzLkxpbmVWaXNpYmlsaXR5IHx8IChleHBvcnRzLkxpbmVWaXNpYmlsaXR5ID0ge30pKTtcbi8vIFxudmFyIFN0eWxlc0xpbmVQYXR0ZXJuO1xuKGZ1bmN0aW9uIChTdHlsZXNMaW5lUGF0dGVybikge1xuICAgIC8vIFxuICAgIFN0eWxlc0xpbmVQYXR0ZXJuW1wiU3R5bGVzTGluZVBhdHRlcm5Tb2xpZFwiXSA9IFwic29saWRcIjtcbiAgICAvLyBcbiAgICBTdHlsZXNMaW5lUGF0dGVybltcIlN0eWxlc0xpbmVQYXR0ZXJuRGFzaGVkXCJdID0gXCJkYXNoZWRcIjtcbiAgICAvLyBcbiAgICBTdHlsZXNMaW5lUGF0dGVybltcIlN0eWxlc0xpbmVQYXR0ZXJuRG90dGVkXCJdID0gXCJkb3R0ZWRcIjtcbn0pKFN0eWxlc0xpbmVQYXR0ZXJuID0gZXhwb3J0cy5TdHlsZXNMaW5lUGF0dGVybiB8fCAoZXhwb3J0cy5TdHlsZXNMaW5lUGF0dGVybiA9IHt9KSk7XG4vLyBcbnZhciBMaW5lQ2FwO1xuKGZ1bmN0aW9uIChMaW5lQ2FwKSB7XG4gICAgLy8gXG4gICAgTGluZUNhcFtcIkxpbmVDYXBGbGF0XCJdID0gXCJmbGF0XCI7XG4gICAgLy8gXG4gICAgTGluZUNhcFtcIkxpbmVDYXBTcXVhcmVcIl0gPSBcInNxdWFyZVwiO1xuICAgIC8vIFxuICAgIExpbmVDYXBbXCJMaW5lQ2FwUm91bmRcIl0gPSBcInJvdW5kXCI7XG4gICAgLy8gXG4gICAgTGluZUNhcFtcIkxpbmVDYXBUcmlhbmdsZVwiXSA9IFwidHJpYW5nbGVcIjtcbn0pKExpbmVDYXAgPSBleHBvcnRzLkxpbmVDYXAgfHwgKGV4cG9ydHMuTGluZUNhcCA9IHt9KSk7XG4vLyBcbnZhciBMaW5lSm9pbjtcbihmdW5jdGlvbiAoTGluZUpvaW4pIHtcbiAgICAvLyBcbiAgICBMaW5lSm9pbltcIkJldmVsSm9pblwiXSA9IFwiYmV2ZWxcIjtcbiAgICAvLyBcbiAgICBMaW5lSm9pbltcIk1pdGVySm9pblwiXSA9IFwibWl0ZXJcIjtcbiAgICAvLyBcbiAgICBMaW5lSm9pbltcIlJvdW5kSm9pblwiXSA9IFwicm91bmRcIjtcbn0pKExpbmVKb2luID0gZXhwb3J0cy5MaW5lSm9pbiB8fCAoZXhwb3J0cy5MaW5lSm9pbiA9IHt9KSk7XG4vLyBcbnZhciBMaW5lQWxpZ25tZW50O1xuKGZ1bmN0aW9uIChMaW5lQWxpZ25tZW50KSB7XG4gICAgLy8gXG4gICAgTGluZUFsaWdubWVudFtcIkFsaWdubWVudENlbnRlclwiXSA9IFwiY2VudGVyXCI7XG4gICAgLy8gXG4gICAgTGluZUFsaWdubWVudFtcIkFsaWdubWVudEluc2V0XCJdID0gXCJpbnNldFwiO1xufSkoTGluZUFsaWdubWVudCA9IGV4cG9ydHMuTGluZUFsaWdubWVudCB8fCAoZXhwb3J0cy5MaW5lQWxpZ25tZW50ID0ge30pKTtcbi8vIFxudmFyIEZpbGxNb2RlO1xuKGZ1bmN0aW9uIChGaWxsTW9kZSkge1xuICAgIC8vIFxuICAgIEZpbGxNb2RlW1wiRmlsbEV2ZW5PZGRcIl0gPSBcImV2ZW4tb2RkXCI7XG4gICAgLy8gXG4gICAgRmlsbE1vZGVbXCJGaWxsV2luZGluZ1wiXSA9IFwid2luZGluZ1wiO1xufSkoRmlsbE1vZGUgPSBleHBvcnRzLkZpbGxNb2RlIHx8IChleHBvcnRzLkZpbGxNb2RlID0ge30pKTtcbi8vIFxudmFyIEJvcmRlclN0eWxlO1xuKGZ1bmN0aW9uIChCb3JkZXJTdHlsZSkge1xuICAgIC8vIG5vbmVcbiAgICBCb3JkZXJTdHlsZVtcIkJvcmRlclN0eWxlTm9uZVwiXSA9IFwiYnMtbm9uZVwiO1xuICAgIC8vIGhpZGRlblxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVIaWRkZW5cIl0gPSBcImJzLWhpZGRlblwiO1xuICAgIC8vIGRvdHRlZFxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVEb3R0ZWRcIl0gPSBcImJzLWRvdHRlZFwiO1xuICAgIC8vIGRhc2hlZFxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVEYXNoZWRcIl0gPSBcImJzLWRhc2hlZFwiO1xuICAgIC8vIHNvbGlkXG4gICAgQm9yZGVyU3R5bGVbXCJCb3JkZXJTdHlsZVNvbGlkXCJdID0gXCJicy1zb2xpZFwiO1xuICAgIC8vIGRvdWJsZVxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVEb3VibGVcIl0gPSBcImJzLWRvdWJsZVwiO1xuICAgIC8vIGdyb292ZVxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVHcm9vdmVcIl0gPSBcImJzLWdyb292ZVwiO1xuICAgIC8vIHJpZGdlXG4gICAgQm9yZGVyU3R5bGVbXCJCb3JkZXJTdHlsZVJpZGdlXCJdID0gXCJicy1yaWRnZVwiO1xuICAgIC8vIGluc2V0XG4gICAgQm9yZGVyU3R5bGVbXCJCb3JkZXJTdHlsZUluc2V0XCJdID0gXCJicy1pbnNldFwiO1xuICAgIC8vIG91dHNldFxuICAgIEJvcmRlclN0eWxlW1wiQm9yZGVyU3R5bGVPdXRzZXRcIl0gPSBcImJzLW91dHNldFwiO1xuICAgIC8vIGludmFsaWRcbiAgICBCb3JkZXJTdHlsZVtcIkJvcmRlclN0eWxlSW52YWxpZFwiXSA9IFwiYnMtaW52YWxpZFwiO1xufSkoQm9yZGVyU3R5bGUgPSBleHBvcnRzLkJvcmRlclN0eWxlIHx8IChleHBvcnRzLkJvcmRlclN0eWxlID0ge30pKTtcbi8vIFxudmFyIENvbG9yUGFsZXR0ZVR5cGU7XG4oZnVuY3Rpb24gKENvbG9yUGFsZXR0ZVR5cGUpIHtcbiAgICAvLyBcbiAgICBDb2xvclBhbGV0dGVUeXBlW1wiQ29sb3JQYWxldHRlUmVndWxhclwiXSA9IFwiY29sb3ItcGFsZXR0ZS1yZWd1bGFyXCI7XG4gICAgLy8gXG4gICAgQ29sb3JQYWxldHRlVHlwZVtcIkNvbG9yUGFsZXR0ZU9yZGVyZWREaXZlcmdpbmdcIl0gPSBcInBhbGV0dGUtb3JkZXJlZC1kaXZlcmdpbmdcIjtcbiAgICAvLyBcbiAgICBDb2xvclBhbGV0dGVUeXBlW1wiQ29sb3JQYWxldHRlT3JkZXJlZExpbmVhclwiXSA9IFwicGFsZXR0ZS1vcmRlcmVkLWxpbmVhclwiO1xufSkoQ29sb3JQYWxldHRlVHlwZSA9IGV4cG9ydHMuQ29sb3JQYWxldHRlVHlwZSB8fCAoZXhwb3J0cy5Db2xvclBhbGV0dGVUeXBlID0ge30pKTtcbi8vIFxudmFyIFBhbGV0dGVGbGFncztcbihmdW5jdGlvbiAoUGFsZXR0ZUZsYWdzKSB7XG4gICAgLy8gXG4gICAgUGFsZXR0ZUZsYWdzW1wiUGFsZXR0ZUZsYWdOb25lXCJdID0gXCJwYWxldHRlLWZsYWctbm9uZVwiO1xuICAgIC8vIFxuICAgIFBhbGV0dGVGbGFnc1tcIlBhbGV0dGVGbGFnQ3VzdG9tXCJdID0gXCJwYWxldHRlLWZsYWctY3VzdG9tXCI7XG4gICAgLy8gXG4gICAgUGFsZXR0ZUZsYWdzW1wiUGFsZXR0ZUZsYWdOb3RRdWFudGl0YXRpdmVcIl0gPSBcInBhbGV0dGUtZmxhZy1ub3QtcXVhbnRpdGF0aXZlXCI7XG4gICAgLy8gXG4gICAgUGFsZXR0ZUZsYWdzW1wiUGFsZXR0ZUZsYWdOb3RDYXRlZ29yaWNhbFwiXSA9IFwicGFsZXR0ZS1mbGFnLW5vdC1jYXRlZ29yaWNhbFwiO1xuICAgIC8vIFxuICAgIFBhbGV0dGVGbGFnc1tcIlBhbGV0dGVGbGFnTm90UmVmZXJlbmNlQmFuZFwiXSA9IFwicGFsZXR0ZS1mbGFnLW5vdC1yZWZlcmVuY2UtYmFuZFwiO1xuICAgIC8vIFxuICAgIFBhbGV0dGVGbGFnc1tcIlBhbGV0dGVGbGFnTm90Qm94cGxvdFwiXSA9IFwicGFsZXR0ZS1mbGFnLW5vdC1ib3hwbG90XCI7XG4gICAgLy8gXG4gICAgUGFsZXR0ZUZsYWdzW1wiUGFsZXR0ZUZsYWdOb3RGaWxsZWRNYXBMaWdodFwiXSA9IFwicGFsZXR0ZS1mbGFnLW5vdC1maWxsZWQtbWFwLWxpZ2h0XCI7XG4gICAgLy8gXG4gICAgUGFsZXR0ZUZsYWdzW1wiUGFsZXR0ZUZsYWdOb3RGaWxsZWRNYXBEYXJrXCJdID0gXCJwYWxldHRlLWZsYWctbm90LWZpbGxlZC1tYXAtZGFya1wiO1xuICAgIC8vIFxuICAgIFBhbGV0dGVGbGFnc1tcIlBhbGV0dGVGbGFnTGVnYWN5XCJdID0gXCJwYWxldHRlLWZsYWctbGVnYWN5XCI7XG59KShQYWxldHRlRmxhZ3MgPSBleHBvcnRzLlBhbGV0dGVGbGFncyB8fCAoZXhwb3J0cy5QYWxldHRlRmxhZ3MgPSB7fSkpO1xuLy8gXG52YXIgRGVmYXVsdFBhbGV0dGVUeXBlO1xuKGZ1bmN0aW9uIChEZWZhdWx0UGFsZXR0ZVR5cGUpIHtcbiAgICAvLyBcbiAgICBEZWZhdWx0UGFsZXR0ZVR5cGVbXCJTbWFsbE5vbWluYWxcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1zbWFsbC1ub21pbmFsXCI7XG4gICAgLy8gXG4gICAgRGVmYXVsdFBhbGV0dGVUeXBlW1wiTGFyZ2VOb21pbmFsXCJdID0gXCJwYWxldHRlLWRlZmF1bHQtbGFyZ2Utbm9taW5hbFwiO1xuICAgIC8vIFxuICAgIERlZmF1bHRQYWxldHRlVHlwZVtcIk9yZGluYWxcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1vcmRpbmFsXCI7XG4gICAgLy8gXG4gICAgRGVmYXVsdFBhbGV0dGVUeXBlW1wiUXVhbnRpdGF0aXZlUG9zaXRpdmVcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3NcIjtcbiAgICAvLyBcbiAgICBEZWZhdWx0UGFsZXR0ZVR5cGVbXCJRdWFudGl0YXRpdmVOZWdhdGl2ZVwiXSA9IFwicGFsZXR0ZS1kZWZhdWx0LXF1YW50LW5lZ1wiO1xuICAgIC8vIFxuICAgIERlZmF1bHRQYWxldHRlVHlwZVtcIlF1YW50aXRhdGl2ZURpdmVyZ2luZ1wiXSA9IFwicGFsZXR0ZS1kZWZhdWx0LXF1YW50LWRpdlwiO1xuICAgIC8vIFxuICAgIERlZmF1bHRQYWxldHRlVHlwZVtcIlF1YW50aXRhdGl2ZVBvc2l0aXZlTGlnaHRcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtbGlnaHRcIjtcbiAgICAvLyBcbiAgICBEZWZhdWx0UGFsZXR0ZVR5cGVbXCJRdWFudGl0YXRpdmVOZWdhdGl2ZUxpZ2h0XCJdID0gXCJwYWxldHRlLWRlZmF1bHQtcXVhbnQtbmVnLWxpZ2h0XCI7XG4gICAgLy8gXG4gICAgRGVmYXVsdFBhbGV0dGVUeXBlW1wiUXVhbnRpdGF0aXZlRGl2ZXJnaW5nTGlnaHRcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1xdWFudC1kaXYtbGlnaHRcIjtcbiAgICAvLyBcbiAgICBEZWZhdWx0UGFsZXR0ZVR5cGVbXCJRdWFudGl0YXRpdmVQb3NpdGl2ZUFyZWFcIl0gPSBcInBhbGV0dGUtZGVmYXVsdC1xdWFudC1wb3MtYXJlYVwiO1xuICAgIC8vIFxuICAgIERlZmF1bHRQYWxldHRlVHlwZVtcIlF1YW50aXRhdGl2ZU5lZ2F0aXZlQXJlYVwiXSA9IFwicGFsZXR0ZS1kZWZhdWx0LXF1YW50LW5lZy1hcmVhXCI7XG4gICAgLy8gXG4gICAgRGVmYXVsdFBhbGV0dGVUeXBlW1wiUXVhbnRpdGF0aXZlRGl2ZXJnaW5nQXJlYVwiXSA9IFwicGFsZXR0ZS1kZWZhdWx0LXF1YW50LWRpdi1hcmVhXCI7XG59KShEZWZhdWx0UGFsZXR0ZVR5cGUgPSBleHBvcnRzLkRlZmF1bHRQYWxldHRlVHlwZSB8fCAoZXhwb3J0cy5EZWZhdWx0UGFsZXR0ZVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2hvd0JvdW5kcztcbihmdW5jdGlvbiAoU2hvd0JvdW5kcykge1xuICAgIC8vIFxuICAgIFNob3dCb3VuZHNbXCJCb3RoXCJdID0gXCJzaG93LWJvdGhcIjtcbiAgICAvLyBcbiAgICBTaG93Qm91bmRzW1wiVXBwZXJcIl0gPSBcInNob3ctdXBwZXJcIjtcbiAgICAvLyBcbiAgICBTaG93Qm91bmRzW1wiTG93ZXJcIl0gPSBcInNob3ctbG93ZXJcIjtcbn0pKFNob3dCb3VuZHMgPSBleHBvcnRzLlNob3dCb3VuZHMgfHwgKGV4cG9ydHMuU2hvd0JvdW5kcyA9IHt9KSk7XG4vLyBTYW1wbGUgdnMuIHBvcHVsYXRpb24gc3RhbmRhcmQgZGV2aWF0aW9uXG52YXIgU3REZXZUeXBlO1xuKGZ1bmN0aW9uIChTdERldlR5cGUpIHtcbiAgICAvLyBcbiAgICBTdERldlR5cGVbXCJTYW1wbGVcIl0gPSBcInN0ZGV2LXNhbXBsZVwiO1xuICAgIC8vIFxuICAgIFN0RGV2VHlwZVtcIlBvcHVsYXRpb25cIl0gPSBcInN0ZGV2LXBvcHVsYXRpb25cIjtcbn0pKFN0RGV2VHlwZSA9IGV4cG9ydHMuU3REZXZUeXBlIHx8IChleHBvcnRzLlN0RGV2VHlwZSA9IHt9KSk7XG4vLyBcbnZhciBSZWZlcmVuY2VMaW5lRm9ybXVsYUdyb3VwO1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VMaW5lRm9ybXVsYUdyb3VwKSB7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFHcm91cFtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBSZWZlcmVuY2VMaW5lRm9ybXVsYUdyb3VwW1wiTGluZVwiXSA9IFwibGluZVwiO1xuICAgIC8vIFxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhR3JvdXBbXCJCYW5kXCJdID0gXCJiYW5kXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFHcm91cFtcIkRpc3RyaWJ1dGlvblwiXSA9IFwiZGlzdHJpYnV0aW9uXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFHcm91cFtcIkJveHBsb3RcIl0gPSBcImJveHBsb3RcIjtcbn0pKFJlZmVyZW5jZUxpbmVGb3JtdWxhR3JvdXAgPSBleHBvcnRzLlJlZmVyZW5jZUxpbmVGb3JtdWxhR3JvdXAgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZUZvcm11bGFHcm91cCA9IHt9KSk7XG4vLyBcbnZhciBSZWZlcmVuY2VMaW5lU2NvcGVUeXBlO1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VMaW5lU2NvcGVUeXBlKSB7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZVNjb3BlVHlwZVtcIlBlckNlbGxcIl0gPSBcInBlci1jZWxsXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZVNjb3BlVHlwZVtcIlBlclBhbmVcIl0gPSBcInBlci1wYW5lXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZVNjb3BlVHlwZVtcIlBlclRhYmxlXCJdID0gXCJwZXItdGFibGVcIjtcbn0pKFJlZmVyZW5jZUxpbmVTY29wZVR5cGUgPSBleHBvcnRzLlJlZmVyZW5jZUxpbmVTY29wZVR5cGUgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZVNjb3BlVHlwZSA9IHt9KSk7XG4vLyBob3cgc2hvdWxkIHRoZSBsaW5lIGJlIGxhYmVsZWRcbnZhciBSZWZlcmVuY2VMaW5lTGFiZWxUeXBlO1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VMaW5lTGFiZWxUeXBlKSB7XG4gICAgLy8gbm8gbGFiZWxcbiAgICBSZWZlcmVuY2VMaW5lTGFiZWxUeXBlW1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIGFuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGxhYmVsXG4gICAgUmVmZXJlbmNlTGluZUxhYmVsVHlwZVtcIkF1dG9tYXRpY1wiXSA9IFwiYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZUxhYmVsVHlwZVtcIlZhbHVlXCJdID0gXCJ2YWx1ZVwiO1xuICAgIC8vIFxuICAgIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGVbXCJDb21wdXRhdGlvblwiXSA9IFwiY29tcHV0YXRpb25cIjtcbiAgICAvLyBhIHVzZXIgZGVmaW5lZCBsYWJlbFxuICAgIFJlZmVyZW5jZUxpbmVMYWJlbFR5cGVbXCJDdXN0b21cIl0gPSBcImN1c3RvbVwiO1xufSkoUmVmZXJlbmNlTGluZUxhYmVsVHlwZSA9IGV4cG9ydHMuUmVmZXJlbmNlTGluZUxhYmVsVHlwZSB8fCAoZXhwb3J0cy5SZWZlcmVuY2VMaW5lTGFiZWxUeXBlID0ge30pKTtcbi8vIGhvdyBzaG91bGQgdGhlIGxpbmUgYmUgY29tcHV0ZWRcbnZhciBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGU7XG4oZnVuY3Rpb24gKFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZSkge1xuICAgIC8vIGEgdXNlciBzcGVjaWZpZWQgY29uc3RhbnQgdmFsdWVcbiAgICBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVbXCJDb25zdGFudFwiXSA9IFwiY29uc3RhbnRcIjtcbiAgICAvLyBcbiAgICBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVbXCJUb3RhbFwiXSA9IFwidG90YWxcIjtcbiAgICAvLyB0b3RhbCBvZiBhbGwgdmFsdWVzIGF0IHRoZSBnaXZlbiBzY29wZSA8LSBpcyB0aGlzIGNvcnJlY3Q/IGxvb2tzIGxpa2UgY29tbWVudCBmcm9tIEZvcm11bGFUb3RhbFxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZVtcIlN1bVwiXSA9IFwic3VtXCI7XG4gICAgLy8gbWluaW11bSB2YWx1ZSBpbiB0aGUgc2NvcGVcbiAgICBSZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGVbXCJNaW5cIl0gPSBcIm1pblwiO1xuICAgIC8vIG1heGltdW0gdmFsdWUgaW4gdGhlIHNjb3BlXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlW1wiTWF4XCJdID0gXCJtYXhcIjtcbiAgICAvLyBhdmVyYWdlIHZhbHVlIGluIHRoZSBzY29wZVxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZVtcIkF2ZXJhZ2VcIl0gPSBcImF2ZXJhZ2VcIjtcbiAgICAvLyBtZWRpYW4gdmFsdWUgaW4gdGhlIHNjb3BlXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlW1wiTWVkaWFuXCJdID0gXCJtZWRpYW5cIjtcbiAgICAvLyB0aGUgbiBxdWFudGlsZXMgdmFsdWVzIGluIHRoZSBzY29wZVxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZVtcIlF1YW50aWxlc1wiXSA9IFwicXVhbnRpbGVzXCI7XG4gICAgLy8gYSBnaXZlbiBwZXJjZW50aWxlIGluIHRoZSBzY29wZVxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZVtcIlBlcmNlbnRpbGVcIl0gPSBcInBlcmNlbnRpbGVcIjtcbiAgICAvLyBtZWFuICstIHN0YW5kYXJkIGRldmlhdGlvblxuICAgIFJlZmVyZW5jZUxpbmVGb3JtdWxhVHlwZVtcIlN0YW5kYXJkRGV2aWF0aW9uXCJdID0gXCJzdGFuZGFyZC1kZXZpYXRpb25cIjtcbiAgICAvLyBhIGdpdmVuIGNvbmZpZGVuY2UgaW50ZXJ2YWwgYXJvdW5kIHRoZSBtZWFuXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlW1wiQ29uZmlkZW5jZUludGVydmFsXCJdID0gXCJjb25maWRlbmNlLWludGVydmFsXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlW1wiTWVkaWFuQ29uZmlkZW5jZUludGVydmFsXCJdID0gXCJtZWRpYW4tY29uZmlkZW5jZS1pbnRlcnZhbFwiO1xufSkoUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlID0gZXhwb3J0cy5SZWZlcmVuY2VMaW5lRm9ybXVsYVR5cGUgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZUZvcm11bGFUeXBlID0ge30pKTtcbi8vIExpbmUgb3IgY29uZmlkZW5jZSBpbnRlcnZhbCBvciBib3RoXG52YXIgUmVmZXJlbmNlTGluZUNvbmZpZGVuY2VJbnRlcnZhbFN0YXRlO1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VMaW5lQ29uZmlkZW5jZUludGVydmFsU3RhdGUpIHtcbiAgICAvLyBkaXNwbGF5IGxpbmUgb25seVxuICAgIFJlZmVyZW5jZUxpbmVDb25maWRlbmNlSW50ZXJ2YWxTdGF0ZVtcIkxpbmVPbmx5XCJdID0gXCJsaW5lLW9ubHlcIjtcbiAgICAvLyBkaXNwbGF5IHRoZSBsaW5lIGFuZCBhIGNvbmZpZGVuY2UgaW50ZXJ2YWxcbiAgICBSZWZlcmVuY2VMaW5lQ29uZmlkZW5jZUludGVydmFsU3RhdGVbXCJMaW5lQW5kQ29uZmlkZW5jZUludGVydmFsXCJdID0gXCJsaW5lLWFuZC1pbnRlcnZhbFwiO1xuICAgIC8vIGRpc3BsYXkgY29uZmlkZW5jZSBpbnRlcnZhbCBvbmx5XG4gICAgUmVmZXJlbmNlTGluZUNvbmZpZGVuY2VJbnRlcnZhbFN0YXRlW1wiQ29uZmlkZW5jZUludGVydmFsT25seVwiXSA9IFwiaW50ZXJ2YWwtb25seVwiO1xufSkoUmVmZXJlbmNlTGluZUNvbmZpZGVuY2VJbnRlcnZhbFN0YXRlID0gZXhwb3J0cy5SZWZlcmVuY2VMaW5lQ29uZmlkZW5jZUludGVydmFsU3RhdGUgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZUNvbmZpZGVuY2VJbnRlcnZhbFN0YXRlID0ge30pKTtcbi8vIHR5cGUgb2YgZGlzdHJpYnV0aW9uLiBpLmUuIFBlcmNlbnRhZ2UsIFBlcmNlbnRpbGUsIFF1YW50aWxlLCBhbmQgU3RhbmRhcmQgRGV2aWF0aW9uXG52YXIgUmVmZXJlbmNlTGluZURpc3RyaWJ1dGlvblR5cGU7XG4oZnVuY3Rpb24gKFJlZmVyZW5jZUxpbmVEaXN0cmlidXRpb25UeXBlKSB7XG4gICAgLy8gZGlzdHJpYnV0aW9uIHR5cGUgcGVyY2VudGFnZVxuICAgIFJlZmVyZW5jZUxpbmVEaXN0cmlidXRpb25UeXBlW1wiUGVyY2VudGFnZXNcIl0gPSBcInBlcmNlbnRhZ2VzXCI7XG4gICAgLy8gZGlzdHJpYnV0aW9uIHR5cGUgcGVyY2VudGlsZVxuICAgIFJlZmVyZW5jZUxpbmVEaXN0cmlidXRpb25UeXBlW1wiUGVyY2VudGlsZXNcIl0gPSBcInBlcmNlbnRpbGVzXCI7XG4gICAgLy8gZGlzdHJpYnV0aW9uIHR5cGUgcXVhbnRpbGVcbiAgICBSZWZlcmVuY2VMaW5lRGlzdHJpYnV0aW9uVHlwZVtcIlF1YW50aWxlc1wiXSA9IFwicXVhbnRpbGVzXCI7XG4gICAgLy8gZGlzdHJpYnV0aW9uIHR5cGUgc3RhbmRhcmQgZGV2aWF0aW9uXG4gICAgUmVmZXJlbmNlTGluZURpc3RyaWJ1dGlvblR5cGVbXCJTdGFuZGFyZERldmlhdGlvblwiXSA9IFwic3RhbmRhcmQtZGV2aWF0aW9uXCI7XG59KShSZWZlcmVuY2VMaW5lRGlzdHJpYnV0aW9uVHlwZSA9IGV4cG9ydHMuUmVmZXJlbmNlTGluZURpc3RyaWJ1dGlvblR5cGUgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZURpc3RyaWJ1dGlvblR5cGUgPSB7fSkpO1xuLy8gdGhlIGtpbmQgb2YgTE9EIGNhbGMgdG8gdXNlIGZvciBhIGdpdmVuIHJlZmVyZW5jZSBsaW5lXG52YXIgUmVmZXJlbmNlTGluZUxPRENhbGNUeXBlO1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGUpIHtcbiAgICAvLyBDcmVhdGUgYSBmb3JtdWxhIHVzaW5nIGEgRklYRUQtbGlrZSBsZXZlbC1vZi1kZXRhaWwgY2FsY3VsYXRpb24sIHRvIHdoaWNoIHNoZWV0IGZpbHRlcnMgYXBwbHksIHRoYXQgd2lsbCBnbyBvbnRvIGEgc3BlY2lmaWMgc2hlZXRcbiAgICBSZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGVbXCJNZWFzdXJlRm9ybXVsYVwiXSA9IFwibWVhc3VyZS1mb3JtdWxhXCI7XG4gICAgLy8gQ3JlYXRlIGEgYm9vbGVhbiBmb3JtdWxhIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBmaWx0ZXJcbiAgICBSZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGVbXCJCb29sZWFuRmlsdGVyXCJdID0gXCJib29sZWFuLWZpbHRlclwiO1xufSkoUmVmZXJlbmNlTGluZUxPRENhbGNUeXBlID0gZXhwb3J0cy5SZWZlcmVuY2VMaW5lTE9EQ2FsY1R5cGUgfHwgKGV4cG9ydHMuUmVmZXJlbmNlTGluZUxPRENhbGNUeXBlID0ge30pKTtcbi8vIFxudmFyIEJveHBsb3RXaGlza2VyVHlwZTtcbihmdW5jdGlvbiAoQm94cGxvdFdoaXNrZXJUeXBlKSB7XG4gICAgLy8gXG4gICAgQm94cGxvdFdoaXNrZXJUeXBlW1wiU3RhbmRhcmRcIl0gPSBcInN0YW5kYXJkXCI7XG4gICAgLy8gXG4gICAgQm94cGxvdFdoaXNrZXJUeXBlW1wiTWlubWF4XCJdID0gXCJtaW5tYXhcIjtcbn0pKEJveHBsb3RXaGlza2VyVHlwZSA9IGV4cG9ydHMuQm94cGxvdFdoaXNrZXJUeXBlIHx8IChleHBvcnRzLkJveHBsb3RXaGlza2VyVHlwZSA9IHt9KSk7XG4vLyBjYXRlZ29yaWVzIG9mIGNvbm5lY3Rpb24gdHlwZXMgZGlzcGxheWVkIGJ5IHRoZSBjb25uZWN0aW9uIFVJXG52YXIgQ29ubmVjdGlvblR5cGVDYXRlZ29yeTtcbihmdW5jdGlvbiAoQ29ubmVjdGlvblR5cGVDYXRlZ29yeSkge1xuICAgIC8vIHN0YW5kYXJkIGRhdGFiYXNlXG4gICAgQ29ubmVjdGlvblR5cGVDYXRlZ29yeVtcIkNUQ19EYXRhYmFzZVwiXSA9IFwiZGF0YWJhc2VcIjtcbiAgICAvLyAnTW9yZSBJdGVtcyAuLi4nIG1ldGEgaXRlbVxuICAgIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnlbXCJDVENfTW9yZVwiXSA9IFwibW9yZVwiO1xuICAgIC8vIE90aGVyIGZpbGUgdHlwZXNcbiAgICBDb25uZWN0aW9uVHlwZUNhdGVnb3J5W1wiQ1RDX090aGVyXCJdID0gXCJvdGhlclwiO1xuICAgIC8vIGludmFsaWQgY29ubmVjdGlvbiBjYXRlZ29yeVxuICAgIENvbm5lY3Rpb25UeXBlQ2F0ZWdvcnlbXCJDVENfSW52YWxpZFwiXSA9IFwiaW52YWxpZFwiO1xufSkoQ29ubmVjdGlvblR5cGVDYXRlZ29yeSA9IGV4cG9ydHMuQ29ubmVjdGlvblR5cGVDYXRlZ29yeSB8fCAoZXhwb3J0cy5Db25uZWN0aW9uVHlwZUNhdGVnb3J5ID0ge30pKTtcbi8vIGEgbG9naWNhbCBncm91cGluZyBvZiBjb25uZWN0aW9uIHR5cGVzIGRpc3BsYXllZCBieSB0aGUgY29ubmVjdGlvbiBVSVxudmFyIENvbm5lY3Rpb25UeXBlR3JvdXA7XG4oZnVuY3Rpb24gKENvbm5lY3Rpb25UeXBlR3JvdXApIHtcbiAgICAvLyBpbiBhIGZpbGVcbiAgICBDb25uZWN0aW9uVHlwZUdyb3VwW1wiQ1RHX0ZpbGVcIl0gPSBcImZpbGVcIjtcbiAgICAvLyBvbiBhIHNlcnZlclxuICAgIENvbm5lY3Rpb25UeXBlR3JvdXBbXCJDVEdfU2VydmVyXCJdID0gXCJzZXJ2ZXJcIjtcbiAgICAvLyBvbiBhIHJlY2VudCBzZXJ2ZXJcbiAgICBDb25uZWN0aW9uVHlwZUdyb3VwW1wiQ1RHX01ydVNlcnZlclwiXSA9IFwibXJ1LXNlcnZlclwiO1xuICAgIC8vIGludmFsaWQgZ3JvdXBcbiAgICBDb25uZWN0aW9uVHlwZUdyb3VwW1wiQ1RHX0ludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbn0pKENvbm5lY3Rpb25UeXBlR3JvdXAgPSBleHBvcnRzLkNvbm5lY3Rpb25UeXBlR3JvdXAgfHwgKGV4cG9ydHMuQ29ubmVjdGlvblR5cGVHcm91cCA9IHt9KSk7XG4vLyBUaGUgdHlwZSBvZiBtZXRhZGF0YSBhIGNvbHVtbiBjb250YWluc1xudmFyIEN1YmVNZXRhZGF0YUNhdGVnb3J5O1xuKGZ1bmN0aW9uIChDdWJlTWV0YWRhdGFDYXRlZ29yeSkge1xuICAgIC8vIGN1YmUncyBuYW1lXG4gICAgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnlbXCJDTUNfTmFtZVwiXSA9IFwibmFtZVwiO1xuICAgIC8vIGN1YmUncyBkZXNjcmlwdGlvblxuICAgIEN1YmVNZXRhZGF0YUNhdGVnb3J5W1wiQ01DX0Rlc2NyaXB0aW9uXCJdID0gXCJkZXNjcmlwdGlvblwiO1xuICAgIC8vIGN1YmUncyBsYXN0IHVwZGF0ZWQgdGltZXN0YW1wXG4gICAgQ3ViZU1ldGFkYXRhQ2F0ZWdvcnlbXCJDTUNfTGFzdFVwZGF0ZWRcIl0gPSBcImxhc3QtdXBkYXRlZFwiO1xuICAgIC8vIGludmFsaWRcbiAgICBDdWJlTWV0YWRhdGFDYXRlZ29yeVtcIkNNQ19JbnZhbGlkXCJdID0gXCJpbnZhbGlkXCI7XG59KShDdWJlTWV0YWRhdGFDYXRlZ29yeSA9IGV4cG9ydHMuQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkgfHwgKGV4cG9ydHMuQ3ViZU1ldGFkYXRhQ2F0ZWdvcnkgPSB7fSkpO1xuLy8gVGhlIHR5cGUgb2Ygd2lkZ2V0IHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIgd2hlbiB0aGV5IGFyZSBzcGVjaWZ5aW5nIGNvbm5lY3Rpb24gaW5mb1xudmFyIENvbm5lY3Rpb25XaWRnZXRUeXBlO1xuKGZ1bmN0aW9uIChDb25uZWN0aW9uV2lkZ2V0VHlwZSkge1xuICAgIC8vIHNob3cgdGhlIGpvaW4gYXJlYVxuICAgIENvbm5lY3Rpb25XaWRnZXRUeXBlW1wiQ1dUX0pvaW5BcmVhXCJdID0gXCJqb2luLWFyZWFcIjtcbiAgICAvLyBzaG93IHRoZSBjdWJlIHNlbGVjdGlvbiB1aVxuICAgIENvbm5lY3Rpb25XaWRnZXRUeXBlW1wiQ1dUX0N1YmVTZWxlY3Rpb25cIl0gPSBcImN1YmUtc2VsZWN0aW9uXCI7XG4gICAgLy8gc2hvdyB0aGUgZ29vZ2xlIGFuYWx5dGljcyB1aVxuICAgIENvbm5lY3Rpb25XaWRnZXRUeXBlW1wiQ1dUX0dvb2dsZUFuYWx5dGljc1wiXSA9IFwiZ29vZ2xlLWFuYWx5dGljc1wiO1xuICAgIC8vIHNob3cgdGhlIHRhYmxlYXUgc2VydmVyIHVpXG4gICAgQ29ubmVjdGlvbldpZGdldFR5cGVbXCJDV1RfVGFibGVhdVNlcnZlclwiXSA9IFwidGFibGVhdS1zZXJ2ZXJcIjtcbiAgICAvLyBkbyBub3Qgc2hvdyBhbnkgY29ubmVjdGlvbiB3aWRnZXRcbiAgICBDb25uZWN0aW9uV2lkZ2V0VHlwZVtcIkNXVF9Ob1dpZGdldFwiXSA9IFwibm8td2lkZ2V0XCI7XG4gICAgLy8gaW52YWxpZFxuICAgIENvbm5lY3Rpb25XaWRnZXRUeXBlW1wiQ1dUX0ludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbn0pKENvbm5lY3Rpb25XaWRnZXRUeXBlID0gZXhwb3J0cy5Db25uZWN0aW9uV2lkZ2V0VHlwZSB8fCAoZXhwb3J0cy5Db25uZWN0aW9uV2lkZ2V0VHlwZSA9IHt9KSk7XG4vLyBUaGUgdHlwZSBvZiBnb29nbGUgYW5hbHl0aWNzIGJhc2ljIGluZm9cbnZhciBHb29nbGVCYXNpY0luZm9UeXBlO1xuKGZ1bmN0aW9uIChHb29nbGVCYXNpY0luZm9UeXBlKSB7XG4gICAgLy8gZ29vZ2xlIGFuYWx5dGljcyBhY2NvdW50XG4gICAgR29vZ2xlQmFzaWNJbmZvVHlwZVtcIkdBX0FjY291bnRcIl0gPSBcImdhLWFjY291bnRcIjtcbiAgICAvLyBnb29nbGUgYW5hbHl0aWNzIHByb3BlcnR5XG4gICAgR29vZ2xlQmFzaWNJbmZvVHlwZVtcIkdBX1Byb3BlcnR5XCJdID0gXCJnYS1wcm9wZXJ0eVwiO1xuICAgIC8vIGdvb2dsZSBhbmFseXRpY3Mgdmlld1xuICAgIEdvb2dsZUJhc2ljSW5mb1R5cGVbXCJHQV9WaWV3XCJdID0gXCJnYS12aWV3XCI7XG4gICAgLy8gaW52YWxpZFxuICAgIEdvb2dsZUJhc2ljSW5mb1R5cGVbXCJHQV9JbnZhbGlkXCJdID0gXCJpbnZhbGlkXCI7XG59KShHb29nbGVCYXNpY0luZm9UeXBlID0gZXhwb3J0cy5Hb29nbGVCYXNpY0luZm9UeXBlIHx8IChleHBvcnRzLkdvb2dsZUJhc2ljSW5mb1R5cGUgPSB7fSkpO1xuLy8gVGhlIHdheSBpbiB3aGljaCBhIHBpZWNlIG9mIGNvbm5lY3Rpb24gaW5mb3JtYXRpb24gaXMgc3BlY2lmaWVkXG52YXIgQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlO1xuKGZ1bmN0aW9uIChDb25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGUpIHtcbiAgICAvLyBVc2VzIGEgY29tYm8gYm94XG4gICAgQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlW1wiQ1NUX0NvbWJvQm94XCJdID0gXCJjb21iby1ib3hcIjtcbiAgICAvLyBVc2VzIGEgbGluZSBlZGl0XG4gICAgQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlW1wiQ1NUX0xpbmVFZGl0XCJdID0gXCJsaW5lLWVkaXRcIjtcbiAgICAvLyBVc2VzIGEgbGluZSBlZGl0IHdpdGggYSBicm93c2UgYnV0dG9uIG5leHQgdG8gaXRcbiAgICBDb25uZWN0aW9uU3BlY2lmaWNhdGlvblR5cGVbXCJDU1RfTGluZUVkaXRCcm93c2VcIl0gPSBcImxpbmUtZWRpdC1icm93c2VcIjtcbiAgICAvLyBpbnZhbGlkXG4gICAgQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlW1wiQ1NUX0ludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbn0pKENvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZSA9IGV4cG9ydHMuQ29ubmVjdGlvblNwZWNpZmljYXRpb25UeXBlIHx8IChleHBvcnRzLkNvbm5lY3Rpb25TcGVjaWZpY2F0aW9uVHlwZSA9IHt9KSk7XG4vLyBHQSBEYXRlIFJhbmdlXG52YXIgRGF0ZVJhbmdlO1xuKGZ1bmN0aW9uIChEYXRlUmFuZ2UpIHtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VGaXJzdFwiXSA9IFwiZGF0ZS1yYW5nZS1maXJzdFwiO1xuICAgIC8vIFxuICAgIERhdGVSYW5nZVtcIkRhdGVSYW5nZUxhc3QzMERheXNcIl0gPSBcImRhdGUtcmFuZ2UtbGFzdDMwXCI7XG4gICAgLy8gXG4gICAgRGF0ZVJhbmdlW1wiRGF0ZVJhbmdlVG9kYXlcIl0gPSBcImRhdGUtcmFuZ2UtdG9kYXlcIjtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VZZXN0ZXJkYXlcIl0gPSBcImRhdGUtcmFuZ2UteWVzdGVyZGF5XCI7XG4gICAgLy8gXG4gICAgRGF0ZVJhbmdlW1wiRGF0ZVJhbmdlTGFzdFdlZWtcIl0gPSBcImRhdGUtcmFuZ2UtbGFzdC13ZWVrXCI7XG4gICAgLy8gXG4gICAgRGF0ZVJhbmdlW1wiRGF0ZVJhbmdlTGFzdE1vbnRoXCJdID0gXCJkYXRlLXJhbmdlLWxhc3QtbW9udGhcIjtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VMYXN0WWVhclwiXSA9IFwiZGF0ZS1yYW5nZS1sYXN0LXllYXJcIjtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VUaGlzV2Vla1RvWWVzdGVyZGF5XCJdID0gXCJkYXRlLXJhbmdlLXRoaXMtd2Vlay10by15ZXN0ZXJkYXlcIjtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VUaGlzTW9udGhUb1llc3RlcmRheVwiXSA9IFwiZGF0ZS1yYW5nZS10aGlzLW1vbnRoLXRvLXllc3RlcmRheVwiO1xuICAgIC8vIFxuICAgIERhdGVSYW5nZVtcIkRhdGVSYW5nZVRoaXNZZWFyVG9ZZXN0ZXJkYXlcIl0gPSBcImRhdGUtcmFuZ2UtdGhpcy15ZWFyLXRvLXllc3RlcmRheVwiO1xuICAgIC8vIFxuICAgIERhdGVSYW5nZVtcIkRhdGVSYW5nZUxhc3RXZWVrVG9ZZXN0ZXJkYXlcIl0gPSBcImRhdGUtcmFuZ2UtbGFzdC13ZWVrLXRvLXllc3RlcmRheVwiO1xuICAgIC8vIFxuICAgIERhdGVSYW5nZVtcIkRhdGVSYW5nZUxhc3RNb250aFRvWWVzdGVyZGF5XCJdID0gXCJkYXRlLXJhbmdlLWxhc3QtbW9udGgtdG8teWVzdGVyZGF5XCI7XG4gICAgLy8gXG4gICAgRGF0ZVJhbmdlW1wiRGF0ZVJhbmdlTGFzdFllYXJUb1llc3RlcmRheVwiXSA9IFwiZGF0ZS1yYW5nZS1sYXN0LXllYXItdG8teWVzdGVyZGF5XCI7XG4gICAgLy8gXG4gICAgRGF0ZVJhbmdlW1wiRGF0ZVJhbmdlRml4ZWRSYW5nZVwiXSA9IFwiZGF0ZS1yYW5nZS1maXhlZC1yYW5nZVwiO1xuICAgIC8vIFxuICAgIERhdGVSYW5nZVtcIkRhdGVSYW5nZUZpeGVkU3RhcnRcIl0gPSBcImRhdGUtcmFuZ2UtZml4ZWQtc3RhcnRcIjtcbiAgICAvLyBcbiAgICBEYXRlUmFuZ2VbXCJEYXRlUmFuZ2VDb3VudFwiXSA9IFwiZGF0ZS1yYW5nZS1jb3VudFwiO1xufSkoRGF0ZVJhbmdlID0gZXhwb3J0cy5EYXRlUmFuZ2UgfHwgKGV4cG9ydHMuRGF0ZVJhbmdlID0ge30pKTtcbi8vIFNwZWNpZmllcyB0aGUgdHlwZSBvZiB3aWRnZXQgdG8gc2hvdyBpbiBDb25uZWN0U2VydmVyV2lkZ2V0XG52YXIgQ29ubmVjdFNlcnZlcldpZGdldFR5cGU7XG4oZnVuY3Rpb24gKENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlKSB7XG4gICAgLy8gaW52YWxpZFxuICAgIENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlW1wiQ1NXVF9JbnZhbGlkXCJdID0gXCJpbnZhbGlkXCI7XG4gICAgLy8gbWljcm9zb2Z0IGFjY2Vzc1xuICAgIENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlW1wiQ1NXVF9BY2Nlc3NcIl0gPSBcImFjY2Vzc1wiO1xuICAgIC8vIGdlbmVyaWMgb2RiY1xuICAgIENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlW1wiQ1NXVF9PREJDXCJdID0gXCJvZGJjXCI7XG4gICAgLy8gY3ViZXNcbiAgICBDb25uZWN0U2VydmVyV2lkZ2V0VHlwZVtcIkNTV1RfQ3ViZVwiXSA9IFwiY3ViZVwiO1xuICAgIC8vIHJlbGF0aW9uYWwgZGF0YSBzb3VyY2VzXG4gICAgQ29ubmVjdFNlcnZlcldpZGdldFR5cGVbXCJDU1dUX1JlbGF0aW9uYWxcIl0gPSBcInJlbGF0aW9uYWxcIjtcbn0pKENvbm5lY3RTZXJ2ZXJXaWRnZXRUeXBlID0gZXhwb3J0cy5Db25uZWN0U2VydmVyV2lkZ2V0VHlwZSB8fCAoZXhwb3J0cy5Db25uZWN0U2VydmVyV2lkZ2V0VHlwZSA9IHt9KSk7XG4vLyBcbnZhciBBdXRoZW50aWNhdGlvbkVudW1zTW9kZTtcbihmdW5jdGlvbiAoQXV0aGVudGljYXRpb25FbnVtc01vZGUpIHtcbiAgICAvLyBubyBhdXRoZW50aWNhdGlvbiB3aWRnZXRcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zTW9kZVtcIkF1dGhNb2RlTm9uZVwiXSA9IFwiYXV0aC1tb2RlLW5vbmVcIjtcbiAgICAvLyB1c2VybmFtZSBhbmQgcGFzc3dvcmRcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zTW9kZVtcIkF1dGhNb2RlQmFzaWNcIl0gPSBcImF1dGgtbW9kZS1iYXNpY1wiO1xuICAgIC8vIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBjYW4gYmUgYmxhbmtcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zTW9kZVtcIkF1dGhNb2RlQmFzaWNOb1ZhbGlkYXRlRmllbGRzXCJdID0gXCJhdXRoLW1vZGUtYmFzaWMtbm8tdmFsaWRhdGUtZmllbGRzXCI7XG4gICAgLy8gb25seSB1c2VybmFtZVxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVCYXNpY1VzZXJOYW1lT25seVwiXSA9IFwiYXV0aC1tb2RlLWJhc2ljLXVzZXJuYW1lLW9ubHlcIjtcbiAgICAvLyBhd3MgYWNjZXNzIGtleSBhbmQgc2VjcmV0IElEXG4gICAgQXV0aGVudGljYXRpb25FbnVtc01vZGVbXCJBdXRoTW9kZUJhc2ljQVdTXCJdID0gXCJhdXRoLW1vZGUtYmFzaWMtYXdzXCI7XG4gICAgLy8gdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgYSBsaXN0IG9mIEF1dGhPcHRpb25zIHdpdGggcmFkaW8gYnV0dG9uc1xuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVSYWRpb1wiXSA9IFwiYXV0aC1tb2RlLXJhZGlvXCI7XG4gICAgLy8gTGlrZSBBdXRoTW9kZVJhZGlvLCBidXQgZW5hYmxlIHVzZXJuYW1lL3Bhc3N3b3JkIGV2ZW4gZm9yIGludGVncmF0ZWQgYXV0aFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVSYWRpb1VuaW5kZW50ZWRcIl0gPSBcImF1dGgtbW9kZS1yYWRpby11bmluZGVudGVkXCI7XG4gICAgLy8gdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgYSBsaXN0IG9mIEF1dGhPcHRpb25zIHdpdGggYSBjb21ib2JveFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVDb21ib0JveFwiXSA9IFwiYXV0aC1tb2RlLWNvbWJvYm94XCI7XG4gICAgLy8gTGlrZSBBdXRoTW9kZUNvbWJvYm94LCBidXQgd2l0aCBvcHRpb24gbm90IHJlcXVpcmluZyB1c2VybmFtZS9wYXNzd29yZFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVDb21ib0JveEludGVncmF0ZWRcIl0gPSBcImF1dGgtbW9kZS1jb21ib2JveC1pbnRlZ3JhdGVkXCI7XG4gICAgLy8gZHJpdmVyLCBhdXRoZW50aWNhdGlvbiwgdXNlcm5hbWUsIHJlYWxtLCBldGNcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zTW9kZVtcIkF1dGhNb2RlSGl2ZVwiXSA9IFwiYXV0aC1tb2RlLWhpdmVcIjtcbiAgICAvLyBub25lLCBhenVyZSBtYXJrZXRwbGFjZSBhY2NvdW50LCBleHBsaWNpdFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVPRGF0YVwiXSA9IFwiYXV0aC1tb2RlLW9kYXRhXCI7XG4gICAgLy8gZWRpdGlvbiwgYXV0aGVudGljYXRpb24sIHNzbyBkb21haW4sIGV0Y1xuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNNb2RlW1wiQXV0aE1vZGVTaGFyZVBvaW50XCJdID0gXCJhdXRoLW1vZGUtc2hhcmVwb2ludFwiO1xuICAgIC8vIHVzZXJuYW1lLCBwYXNzd29yZCwgY2xpZW50LCAmIGxhbmd1YWdlXG4gICAgQXV0aGVudGljYXRpb25FbnVtc01vZGVbXCJBdXRoTW9kZVNBUEJXXCJdID0gXCJhdXRoLW1vZGUtc2FwYndcIjtcbiAgICAvLyBBYmlsaXR5IHRvIHN3aXRjaCBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgYXV0aCBtb2RlcyBlYWNoIGluIHRoZWlyIG93biBtb2RhbCBkaWFsb2dzIChiYXNpYyBhbmQgb2F1dGgpXG4gICAgQXV0aGVudGljYXRpb25FbnVtc01vZGVbXCJBdXRoTW9kZVN3aXRjaE1vZGFsXCJdID0gXCJhdXRoLW1vZGUtc3dpdGNoLW1vZGFsXCI7XG59KShBdXRoZW50aWNhdGlvbkVudW1zTW9kZSA9IGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc01vZGUgfHwgKGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc01vZGUgPSB7fSkpO1xuLy8gXG52YXIgQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGU7XG4oZnVuY3Rpb24gKEF1dGhlbnRpY2F0aW9uRW51bXNSZWNvbm5lY3RNb2RlKSB7XG4gICAgLy8gQXV0aCBub3QgbmVlZGVkIGZvciByZWNvbm5lY3RcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zUmVjb25uZWN0TW9kZVtcIlJlY29ubmVjdE1vZGVOb25lXCJdID0gXCJyZWNvbm5lY3QtbW9kZS1ub25lXCI7XG4gICAgLy8gVXNlcm5hbWUgYW5kIHBhc3N3b3JkXG4gICAgQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGVbXCJSZWNvbm5lY3RNb2RlQmFzaWNcIl0gPSBcInJlY29ubmVjdC1tb2RlLWJhc2ljXCI7XG4gICAgLy8gQWNjZXNzIGZpbGVcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zUmVjb25uZWN0TW9kZVtcIlJlY29ubmVjdE1vZGVBY2Nlc3NcIl0gPSBcInJlY29ubmVjdC1tb2RlLWFjY2Vzc1wiO1xuICAgIC8vIE1pY3Jvc29mdCBBenVyZSBEYXRhIE1hcmtldCAoT0RhdGEpXG4gICAgQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGVbXCJSZWNvbm5lY3RNb2RlRGF0YU1hcmtldFwiXSA9IFwicmVjb25uZWN0LW1vZGUtZGF0YS1tYXJrZXRcIjtcbiAgICAvLyBHb29nbGUgT0F1dGhcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zUmVjb25uZWN0TW9kZVtcIlJlY29ubmVjdE1vZGVHb29nbGVPQXV0aFwiXSA9IFwicmVjb25uZWN0LW1vZGUtZ29vZ2xlLW9hdXRoXCI7XG4gICAgLy8gU2FsZXNmb3JjZU9BdXRoLCB3aXRoIHRoZSBvcHRpb24gb2YgdXNlcm5hbWUvcGFzc3dvcmQgYXV0aFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNSZWNvbm5lY3RNb2RlW1wiUmVjb25uZWN0TW9kZVNhbGVzZm9yY2VPQXV0aFwiXSA9IFwicmVjb25uZWN0LW1vZGUtc2FsZXNmb3JjZS1vYXV0aFwiO1xuICAgIC8vIFdlYiBkYXRhIGNvbm5lY3RvclxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNSZWNvbm5lY3RNb2RlW1wiUmVjb25uZWN0TW9kZVdlYkRhdGFcIl0gPSBcInJlY29ubmVjdC1tb2RlLXdlYi1kYXRhXCI7XG59KShBdXRoZW50aWNhdGlvbkVudW1zUmVjb25uZWN0TW9kZSA9IGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGUgfHwgKGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc1JlY29ubmVjdE1vZGUgPSB7fSkpO1xuLy8gXG52YXIgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb247XG4oZnVuY3Rpb24gKEF1dGhlbnRpY2F0aW9uRW51bXNBdXRoT3B0aW9uKSB7XG4gICAgLy8gRklSU1RcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhFeHBsaWNpdFwiXSA9IFwiYXV0aC1vcHRpb24tZXhwbGljaXRcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhFeHBsaWNpdFVuaW5kZW50ZWRcIl0gPSBcImF1dGgtb3B0aW9uLWV4cGxpY2l0LXVuaW5kZW50ZWRcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhVc2VXaW5kb3dzXCJdID0gXCJhdXRoLW9wdGlvbi11c2Utd2luZG93c1wiO1xuICAgIC8vIFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNBdXRoT3B0aW9uW1wiQXV0aFVzZVdpbmRvd3NQcmVmZXJyZWRcIl0gPSBcImF1dGgtb3B0aW9uLXdpbmRvd3MtcHJlZmVycmVkXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoVGVyYWRhdGFcIl0gPSBcImF1dGgtb3B0aW9uLXRlcmFkYXRhXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoTERBUFwiXSA9IFwiYXV0aC1vcHRpb24tbGRhcFwiO1xuICAgIC8vIFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNBdXRoT3B0aW9uW1wiQXV0aFZpcnR1YWxOb2RlXCJdID0gXCJhdXRoLW9wdGlvbi12aXJ0dWFsLW5vZGVcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhPRGF0YUFjY291bnRcIl0gPSBcImF1dGgtb3B0aW9uLW9kYXRhXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoTm9uZVwiXSA9IFwiYXV0aC1vcHRpb24tbm9uZVwiO1xuICAgIC8vIFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNBdXRoT3B0aW9uW1wiQXV0aEtlcmJlcm9zXCJdID0gXCJhdXRoLW9wdGlvbi1rZXJiZXJvc1wiO1xuICAgIC8vIEludHJvZHVjZWQgZm9yIEtlcmJlcm9zIHdpdGggZmFsbGJhY2ssIHJlY29nbml6aW5nIHRoYXQgdGhlIGRiIG1heSBvciBtYXkgbm90IGJlIG9uIFdpbmRvd3NcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhJbnRlZ3JhdGVkXCJdID0gXCJhdXRoLW9wdGlvbi1pbnRlZ3JhdGVkXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoVXNlcm5hbWVcIl0gPSBcImF1dGgtb3B0aW9uLXVzZXJuYW1lXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoVXNlcm5hbWVBbmRQYXNzd29yZFwiXSA9IFwiYXV0aC1vcHRpb24tdXNlcm5hbWUtYW5kLXBhc3N3b3JkXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoU1NMXCJdID0gXCJhdXRoLW9wdGlvbi1zc2xcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhIRElFbXVsYXRvclwiXSA9IFwiYXV0aC1oZGktZW11bGF0b3JcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhIRElTZXJ2aWNlXCJdID0gXCJhdXRoLWhkaS1zZXJ2aWNlXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoSFRUUFwiXSA9IFwiYXV0aC1odHRwXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoSFRUUFNcIl0gPSBcImF1dGgtaHR0cHNcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhBY2Nlc3NOb1NlY3VyaXR5XCJdID0gXCJhdXRoLW9wdGlvbi1hY2Nlc3Mtbm9cIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhBY2Nlc3NZZXNTZWN1cml0eVwiXSA9IFwiYXV0aC1vcHRpb24tYWNjZXNzLXllc1wiO1xuICAgIC8vIFxuICAgIEF1dGhlbnRpY2F0aW9uRW51bXNBdXRoT3B0aW9uW1wiQXV0aE9BdXRoXCJdID0gXCJhdXRoLW9hdXRoXCI7XG4gICAgLy8gXG4gICAgQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb25bXCJBdXRoRm9ybXNcIl0gPSBcImF1dGgtZm9ybXNcIjtcbiAgICAvLyBcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhUaGlyZFBhcnR5U1NPXCJdID0gXCJhdXRoLXRoaXJkLXBhcnR5LVNTT1wiO1xuICAgIC8vIExBU1RcbiAgICBBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbltcIkF1dGhJbnZhbGlkXCJdID0gXCJhdXRoLW9wdGlvbi1pbnZhbGlkXCI7XG59KShBdXRoZW50aWNhdGlvbkVudW1zQXV0aE9wdGlvbiA9IGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb24gfHwgKGV4cG9ydHMuQXV0aGVudGljYXRpb25FbnVtc0F1dGhPcHRpb24gPSB7fSkpO1xuLy8gZGF0YSBzb3VyY2UgdmFsaWRhdGlvbiBtb2Rlc1xudmFyIERhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZTtcbihmdW5jdGlvbiAoRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlKSB7XG4gICAgLy8gXG4gICAgRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlW1wiV29ya2Jvb2tMb2FkVmFsaWRhdGlvblwiXSA9IFwid29ya2Jvb2stbG9hZC12YWxpZGF0aW9uXCI7XG4gICAgLy8gXG4gICAgRGF0YVNvdXJjZVBhcnNlclZhbGlkYXRpb25Nb2RlW1wiQXV0b1ZhbGlkYXRpb25cIl0gPSBcImF1dG8tdmFsaWRhdGlvblwiO1xuICAgIC8vIFxuICAgIERhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZVtcIkZvcmNlVmFsaWRhdGlvblwiXSA9IFwiZm9yY2UtdmFsaWRhdGlvblwiO1xuICAgIC8vIFxuICAgIERhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZVtcIlByZXZlbnRWYWxpZGF0aW9uXCJdID0gXCJwcmV2ZW50LXZhbGlkYXRpb25cIjtcbiAgICAvLyBcbiAgICBEYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGVbXCJQcmV2ZW50VmFsaWRhdGlvbkFuZFRocm93XCJdID0gXCJwcmV2ZW50LXZhbGlkYXRpb24tYW5kLXRocm93XCI7XG59KShEYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGUgPSBleHBvcnRzLkRhdGFTb3VyY2VQYXJzZXJWYWxpZGF0aW9uTW9kZSB8fCAoZXhwb3J0cy5EYXRhU291cmNlUGFyc2VyVmFsaWRhdGlvbk1vZGUgPSB7fSkpO1xuLy8gRW51bSBmb3IgRGF0YUdyaWQvTWV0YWRhdGFHcmlkIGZpZWxkcyByZW9yZGVyaW5nXG52YXIgRmllbGRPcmRlclR5cGU7XG4oZnVuY3Rpb24gKEZpZWxkT3JkZXJUeXBlKSB7XG4gICAgLy8gXG4gICAgRmllbGRPcmRlclR5cGVbXCJEQVRBU09VUkNFX09SREVSXCJdID0gXCJkYXRhc291cmNlLW9yZGVyXCI7XG4gICAgLy8gXG4gICAgRmllbGRPcmRlclR5cGVbXCJBTFBIQV9QRVJfVEFCTEVcIl0gPSBcImFscGhhLXBlci10YWJsZVwiO1xuICAgIC8vIFxuICAgIEZpZWxkT3JkZXJUeXBlW1wiQUxQSEFCRVRJQ0FMX09SREVSXCJdID0gXCJhbHBoYWJldGljYWwtb3JkZXJcIjtcbiAgICAvLyBcbiAgICBGaWVsZE9yZGVyVHlwZVtcIkNVU1RPTV9PUkRFUlwiXSA9IFwiY3VzdG9tLW9yZGVyXCI7XG59KShGaWVsZE9yZGVyVHlwZSA9IGV4cG9ydHMuRmllbGRPcmRlclR5cGUgfHwgKGV4cG9ydHMuRmllbGRPcmRlclR5cGUgPSB7fSkpO1xuLy8gXG52YXIgTGluZUludGVycG9sYXRpb25Nb2RlO1xuKGZ1bmN0aW9uIChMaW5lSW50ZXJwb2xhdGlvbk1vZGUpIHtcbiAgICAvLyBcbiAgICBMaW5lSW50ZXJwb2xhdGlvbk1vZGVbXCJMSU1fTGluZWFyXCJdID0gXCJsaW0tbGluZWFyXCI7XG4gICAgLy8gXG4gICAgTGluZUludGVycG9sYXRpb25Nb2RlW1wiTElNX1N0ZXBcIl0gPSBcImxpbS1zdGVwXCI7XG4gICAgLy8gXG4gICAgTGluZUludGVycG9sYXRpb25Nb2RlW1wiTElNX0p1bXBcIl0gPSBcImxpbS1qdW1wXCI7XG59KShMaW5lSW50ZXJwb2xhdGlvbk1vZGUgPSBleHBvcnRzLkxpbmVJbnRlcnBvbGF0aW9uTW9kZSB8fCAoZXhwb3J0cy5MaW5lSW50ZXJwb2xhdGlvbk1vZGUgPSB7fSkpO1xuLy8gXG52YXIgTGluZU1hcmtlclBvc2l0aW9uO1xuKGZ1bmN0aW9uIChMaW5lTWFya2VyUG9zaXRpb24pIHtcbiAgICAvLyBcbiAgICBMaW5lTWFya2VyUG9zaXRpb25bXCJMTVBfTGVmdFwiXSA9IFwibG1wLWxlZnRcIjtcbiAgICAvLyBcbiAgICBMaW5lTWFya2VyUG9zaXRpb25bXCJMTVBfQ2VudGVyXCJdID0gXCJsbXAtY2VudGVyXCI7XG4gICAgLy8gXG4gICAgTGluZU1hcmtlclBvc2l0aW9uW1wiTE1QX1JpZ2h0XCJdID0gXCJsbXAtcmlnaHRcIjtcbn0pKExpbmVNYXJrZXJQb3NpdGlvbiA9IGV4cG9ydHMuTGluZU1hcmtlclBvc2l0aW9uIHx8IChleHBvcnRzLkxpbmVNYXJrZXJQb3NpdGlvbiA9IHt9KSk7XG4vLyBFbnVtZXJhdGlvbiBmb3IgdGhlIHR5cGUgb2Ygam9pbiBjb25uZWN0aW5nIHR3byB0YWJsZXNcbnZhciBTUUxKb2luVHlwZTtcbihmdW5jdGlvbiAoU1FMSm9pblR5cGUpIHtcbiAgICAvLyBcbiAgICBTUUxKb2luVHlwZVtcIlNRTF9Jbm5lckpvaW5cIl0gPSBcInNxbC1pbm5lci1qb2luXCI7XG4gICAgLy8gXG4gICAgU1FMSm9pblR5cGVbXCJTUUxfTGVmdEpvaW5cIl0gPSBcInNxbC1sZWZ0LWpvaW5cIjtcbiAgICAvLyBcbiAgICBTUUxKb2luVHlwZVtcIlNRTF9SaWdodEpvaW5cIl0gPSBcInNxbC1yaWdodC1qb2luXCI7XG4gICAgLy8gXG4gICAgU1FMSm9pblR5cGVbXCJTUUxfRnVsbEpvaW5cIl0gPSBcInNxbC1mdWxsLWpvaW5cIjtcbiAgICAvLyBcbiAgICBTUUxKb2luVHlwZVtcIlNRTF9Dcm9zc0pvaW5cIl0gPSBcInNxbC1jcm9zcy1qb2luXCI7XG59KShTUUxKb2luVHlwZSA9IGV4cG9ydHMuU1FMSm9pblR5cGUgfHwgKGV4cG9ydHMuU1FMSm9pblR5cGUgPSB7fSkpO1xuLy8gXG52YXIgRm9sZGVyUm9sZTtcbihmdW5jdGlvbiAoRm9sZGVyUm9sZSkge1xuICAgIC8vIFxuICAgIEZvbGRlclJvbGVbXCJGT0xERVJfRElNRU5TSU9OU1wiXSA9IFwiZGltZW5zaW9uc1wiO1xuICAgIC8vIFxuICAgIEZvbGRlclJvbGVbXCJGT0xERVJfTUVBU1VSRVNcIl0gPSBcIm1lYXN1cmVcIjtcbiAgICAvLyBcbiAgICBGb2xkZXJSb2xlW1wiRk9MREVSX0dST1VQU1wiXSA9IFwiZ3JvdXBzXCI7XG4gICAgLy8gXG4gICAgRm9sZGVyUm9sZVtcIkZPTERFUl9QQVJBTUVURVJTXCJdID0gXCJwYXJhbWV0ZXJzXCI7XG59KShGb2xkZXJSb2xlID0gZXhwb3J0cy5Gb2xkZXJSb2xlIHx8IChleHBvcnRzLkZvbGRlclJvbGUgPSB7fSkpO1xuLy8gXG52YXIgRmllbGRUeXBlSWNvblNldDtcbihmdW5jdGlvbiAoRmllbGRUeXBlSWNvblNldCkge1xuICAgIC8vIFxuICAgIEZpZWxkVHlwZUljb25TZXRbXCJGVF9TRVRfQUxMXCJdID0gXCJhbGxcIjtcbiAgICAvLyBcbiAgICBGaWVsZFR5cGVJY29uU2V0W1wiRlRfU0VUX0NVQkVfTUVBU1VSRVNcIl0gPSBcImN1YmUtbWVhc3VyZXNcIjtcbiAgICAvLyBcbiAgICBGaWVsZFR5cGVJY29uU2V0W1wiRlRfU0VUX0NVQkVfRElNRU5TSU9OU1wiXSA9IFwiY3ViZS1kaW1lbnNpb25zXCI7XG59KShGaWVsZFR5cGVJY29uU2V0ID0gZXhwb3J0cy5GaWVsZFR5cGVJY29uU2V0IHx8IChleHBvcnRzLkZpZWxkVHlwZUljb25TZXQgPSB7fSkpO1xuLy8gXG52YXIgRmllbGRQaXZvdFN0cmF0ZWd5O1xuKGZ1bmN0aW9uIChGaWVsZFBpdm90U3RyYXRlZ3kpIHtcbiAgICAvLyBcbiAgICBGaWVsZFBpdm90U3RyYXRlZ3lbXCJQSVZPVF9PTl9LRVlcIl0gPSBcInBpdm90LW9uLWtleVwiO1xuICAgIC8vIFxuICAgIEZpZWxkUGl2b3RTdHJhdGVneVtcIlBJVk9UX09OX0FMSUFTXCJdID0gXCJwaXZvdC1vbi1hbGlhc1wiO1xufSkoRmllbGRQaXZvdFN0cmF0ZWd5ID0gZXhwb3J0cy5GaWVsZFBpdm90U3RyYXRlZ3kgfHwgKGV4cG9ydHMuRmllbGRQaXZvdFN0cmF0ZWd5ID0ge30pKTtcbi8vIFxudmFyIEFsaWFzVHlwZTtcbihmdW5jdGlvbiAoQWxpYXNUeXBlKSB7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfTk9UU0VUXCJdID0gXCJhbGlhcy1ub3Qtc2V0XCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfQkVHSU5cIl0gPSBcImFsaWFzLWJlZ2luXCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfS0VZXCJdID0gXCJhbGlhcy1rZXlcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19LRVlfTkFNRVwiXSA9IFwiYWxpYXMta2V5LW5hbWVcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19LRVlfTUVETkFNRVwiXSA9IFwiYWxpYXMta2V5LW1lZG5hbWVcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19LRVlfTE9OR05BTUVcIl0gPSBcImFsaWFzLWtleS1sb25nbmFtZVwiO1xuICAgIC8vIFxuICAgIEFsaWFzVHlwZVtcIkFMSUFTX05BTUVcIl0gPSBcImFsaWFzLW5hbWVcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19OQU1FX0tFWVwiXSA9IFwiYWxpYXMtbmFtZS1rZXlcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19NRUROQU1FXCJdID0gXCJhbGlhcy1tZWRuYW1lXCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfTUVETkFNRV9LRVlcIl0gPSBcImFsaWFzLW1lZG5hbWUta2V5XCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfTE9OR05BTUVcIl0gPSBcImFsaWFzLWxvbmduYW1lXCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlW1wiQUxJQVNfTE9OR05BTUVfS0VZXCJdID0gXCJhbGlhcy1sb25nbmFtZS1rZXlcIjtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVbXCJBTElBU19FTkRcIl0gPSBcImFsaWFzLWVuZFwiO1xufSkoQWxpYXNUeXBlID0gZXhwb3J0cy5BbGlhc1R5cGUgfHwgKGV4cG9ydHMuQWxpYXNUeXBlID0ge30pKTtcbi8vIFxudmFyIEFsaWFzVHlwZXM7XG4oZnVuY3Rpb24gKEFsaWFzVHlwZXMpIHtcbiAgICAvLyBcbiAgICBBbGlhc1R5cGVzW1wiTUFTS19BTElBU19LRVlcIl0gPSBcIm1hc2stYWxpYXMta2V5XCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlc1tcIk1BU0tfQUxJQVNfTkFNRVwiXSA9IFwibWFzay1hbGlhcy1uYW1lXCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlc1tcIk1BU0tfQUxJQVNfTUVETkFNRVwiXSA9IFwibWFzay1hbGlhcy1tZWRuYW1lXCI7XG4gICAgLy8gXG4gICAgQWxpYXNUeXBlc1tcIk1BU0tfQUxJQVNfTE9OR05BTUVcIl0gPSBcIm1hc2stYWxpYXMtbG9uZ25hbWVcIjtcbn0pKEFsaWFzVHlwZXMgPSBleHBvcnRzLkFsaWFzVHlwZXMgfHwgKGV4cG9ydHMuQWxpYXNUeXBlcyA9IHt9KSk7XG4vLyBcbnZhciBGaWVsZFJvbGU7XG4oZnVuY3Rpb24gKEZpZWxkUm9sZSkge1xuICAgIC8vIFxuICAgIEZpZWxkUm9sZVtcIlJPTEVfRElNRU5TSU9OXCJdID0gXCJkaW1lbnNpb25cIjtcbiAgICAvLyBcbiAgICBGaWVsZFJvbGVbXCJST0xFX01FQVNVUkVcIl0gPSBcIm1lYXN1cmVcIjtcbiAgICAvLyBcbiAgICBGaWVsZFJvbGVbXCJST0xFX1VOS05PV05cIl0gPSBcInVua25vd25cIjtcbn0pKEZpZWxkUm9sZSA9IGV4cG9ydHMuRmllbGRSb2xlIHx8IChleHBvcnRzLkZpZWxkUm9sZSA9IHt9KSk7XG4vLyBcbnZhciBGaWVsZFR5cGU7XG4oZnVuY3Rpb24gKEZpZWxkVHlwZSkge1xuICAgIC8vIFxuICAgIEZpZWxkVHlwZVtcIlRZUEVfUVVBTlRJVEFUSVZFXCJdID0gXCJxdWFudGl0YXRpdmVcIjtcbiAgICAvLyBcbiAgICBGaWVsZFR5cGVbXCJUWVBFX09SRElOQUxcIl0gPSBcIm9yZGluYWxcIjtcbiAgICAvLyBcbiAgICBGaWVsZFR5cGVbXCJUWVBFX05PTUlOQUxcIl0gPSBcIm5vbWluYWxcIjtcbiAgICAvLyBcbiAgICBGaWVsZFR5cGVbXCJUWVBFX1VOS05PV05cIl0gPSBcInVua25vd25cIjtcbn0pKEZpZWxkVHlwZSA9IGV4cG9ydHMuRmllbGRUeXBlIHx8IChleHBvcnRzLkZpZWxkVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBEYXRhU291cmNlT3JkZXI7XG4oZnVuY3Rpb24gKERhdGFTb3VyY2VPcmRlcikge1xuICAgIC8vIFxuICAgIERhdGFTb3VyY2VPcmRlcltcIkRTT19BTFBIQUJFVElDXCJdID0gXCJkc28tYWxwaGFiZXRpY1wiO1xuICAgIC8vIFxuICAgIERhdGFTb3VyY2VPcmRlcltcIkRTT19PUkRJTkFMXCJdID0gXCJkc28tb3JkaW5hbFwiO1xufSkoRGF0YVNvdXJjZU9yZGVyID0gZXhwb3J0cy5EYXRhU291cmNlT3JkZXIgfHwgKGV4cG9ydHMuRGF0YVNvdXJjZU9yZGVyID0ge30pKTtcbi8vIFdoZXJlIHRoZSBjb2x1bW4gY29tZXMgZnJvbVxudmFyIENvbHVtbkNsYXNzO1xuKGZ1bmN0aW9uIChDb2x1bW5DbGFzcykge1xuICAgIC8vIEEgbWV0YWRhdGEgY29sdW1uIChPIG9yIFEgTWVhc3VyZXMpXG4gICAgQ29sdW1uQ2xhc3NbXCJDT0xfTUVUQURBVEFcIl0gPSBcImNvbC1tZXRhZGF0YVwiO1xuICAgIC8vIEEgcGh5c2ljYWwgY29sdW1uIG9uIHRoZSBkYXRhYmFzZVxuICAgIENvbHVtbkNsYXNzW1wiQ09MX0RBVEFCQVNFXCJdID0gXCJjb2wtZGF0YWJhc2VcIjtcbiAgICAvLyBBIG51bWJlcmljIGJpbiAoYSBzcGVjaWFsIGtpbmQgb2YgY2FsY3VsYXRlZCBjb2x1bW4pXG4gICAgQ29sdW1uQ2xhc3NbXCJDT0xfTlVNRVJJQ0JJTlwiXSA9IFwiY29sLW51bWVyaWNiaW5cIjtcbiAgICAvLyBBIENhdGVnb3JpY2FsIGJpbiAoZ3JvdXApXG4gICAgQ29sdW1uQ2xhc3NbXCJDT0xfQ0FURUdPUklDQUxCSU5cIl0gPSBcImNvbC1jYXRlZ29yaWNhbGJpblwiO1xuICAgIC8vIEEgY29sdW1uIGluc3RhbmNlXG4gICAgQ29sdW1uQ2xhc3NbXCJDT0xfSU5TVEFOQ0VcIl0gPSBcImNvbC1pbnN0YW5jZVwiO1xuICAgIC8vIEEgKHJhdykgbWR4IGNhbGN1bGF0ZWQgY29sdW1uXG4gICAgQ29sdW1uQ2xhc3NbXCJDT0xfTURYQ0FMQ1wiXSA9IFwiY29sLW1keGNhbGNcIjtcbiAgICAvLyBBIHVzZXItZGVmaW5lZCBjYWxjdWxhdGVkIGNvbHVtbiwgVGFibGVhdSBleHByZXNzaW9uIHN5bnRheFxuICAgIENvbHVtbkNsYXNzW1wiQ09MX1VTRVJDQUxDXCJdID0gXCJjb2wtdXNlcmNhbGNcIjtcbiAgICAvLyBBIGNvbHVtbiB0aGF0IHdvdWxkIGhhdmUgYmVlbiBDT0xfREFUQUJBU0UsIGJ1dCB0aGUgdW5kZXJseWluZyBkYXRhYmFzZSBjb2x1bW4gZG9lcyBub3QgZXhpc3RcbiAgICBDb2x1bW5DbGFzc1tcIkNPTF9EQU5HTElOR1wiXSA9IFwiY29sLWRhbmdsaW5nXCI7XG4gICAgLy8gQSBjb2x1bW4gdGhhdCBjb250YWlucyBsb2NhbCBzdXBwbGllZCBkYXRhIChlLmcuIExhdGl0dWRlKVxuICAgIENvbHVtbkNsYXNzW1wiQ09MX0xPQ0FMREFUQVwiXSA9IFwiY29sLWxvY2FsZGF0YVwiO1xuICAgIC8vIEEgY29sdW1uIHRoYXQgY29udGFpbnMgYSB2aXN1YWwgbW9kZWwgYXR0cmlidXRlIChlLmcuIFBhbmVJbmRleCwgQ29sb3IsIC4uLilcbiAgICBDb2x1bW5DbGFzc1tcIkNPTF9WSVNVQUxEQVRBXCJdID0gXCJjb2wtdmlzdWFsZGF0YVwiO1xuICAgIC8vIEEgY29sdW1uIHRoYXQncyBhIEdyb3VwIChhIFwiIFNldCBcIiBpbiBVSSB0ZXJtaW5vbG9neSlcbiAgICBDb2x1bW5DbGFzc1tcIkNPTF9HUk9VUFwiXSA9IFwiY29sLWdyb3VwXCI7XG59KShDb2x1bW5DbGFzcyA9IGV4cG9ydHMuQ29sdW1uQ2xhc3MgfHwgKGV4cG9ydHMuQ29sdW1uQ2xhc3MgPSB7fSkpO1xuLy8gXG52YXIgVlRBZ2dUeXBlO1xuKGZ1bmN0aW9uIChWVEFnZ1R5cGUpIHtcbiAgICAvLyBcbiAgICBWVEFnZ1R5cGVbXCJWVEFHR19TVU1cIl0gPSBcInN1bVwiO1xuICAgIC8vIFxuICAgIFZUQWdnVHlwZVtcIlZUQUdHX0FWR1wiXSA9IFwiYXZnXCI7XG4gICAgLy8gXG4gICAgVlRBZ2dUeXBlW1wiVlRBR0dfTUlOXCJdID0gXCJtaW5cIjtcbiAgICAvLyBcbiAgICBWVEFnZ1R5cGVbXCJWVEFHR19NQVhcIl0gPSBcIm1heFwiO1xuICAgIC8vIFxuICAgIFZUQWdnVHlwZVtcIlZUQUdHX1NFUlZFUlwiXSA9IFwic2VydmVyXCI7XG4gICAgLy8gXG4gICAgVlRBZ2dUeXBlW1wiVlRBR0dfTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIFZUQWdnVHlwZVtcIlZUQUdHX0RFRkFVTFRcIl0gPSBcImRlZmF1bHRcIjtcbn0pKFZUQWdnVHlwZSA9IGV4cG9ydHMuVlRBZ2dUeXBlIHx8IChleHBvcnRzLlZUQWdnVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBFbnRpdHlUeXBlO1xuKGZ1bmN0aW9uIChFbnRpdHlUeXBlKSB7XG4gICAgLy8gXG4gICAgRW50aXR5VHlwZVtcIk5vRW51bWVyYXRpb25FbnRpdHlcIl0gPSBcIm5vLWVudW1lcmF0aW9uLWVudGl0eVwiO1xuICAgIC8vIFxuICAgIEVudGl0eVR5cGVbXCJEYXRhYmFzZUVudGl0eVwiXSA9IFwiZGF0YWJhc2UtZW50aXR5XCI7XG4gICAgLy8gXG4gICAgRW50aXR5VHlwZVtcIlNjaGVtYUVudGl0eVwiXSA9IFwic2NoZW1hLWVudGl0eVwiO1xuICAgIC8vIFxuICAgIEVudGl0eVR5cGVbXCJUYWJsZUVudGl0eVwiXSA9IFwidGFibGUtZW50aXR5XCI7XG59KShFbnRpdHlUeXBlID0gZXhwb3J0cy5FbnRpdHlUeXBlIHx8IChleHBvcnRzLkVudGl0eVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgUGlja0VudGl0eVNlYXJjaFR5cGU7XG4oZnVuY3Rpb24gKFBpY2tFbnRpdHlTZWFyY2hUeXBlKSB7XG4gICAgLy8gXG4gICAgUGlja0VudGl0eVNlYXJjaFR5cGVbXCJQaWNrRW50aXR5U2VhcmNoVHlwZV9TdGFydHNXaXRoXCJdID0gXCJzdGFydHMtd2l0aFwiO1xuICAgIC8vIFxuICAgIFBpY2tFbnRpdHlTZWFyY2hUeXBlW1wiUGlja0VudGl0eVNlYXJjaFR5cGVfQ29udGFpbnNcIl0gPSBcImNvbnRhaW5zXCI7XG4gICAgLy8gXG4gICAgUGlja0VudGl0eVNlYXJjaFR5cGVbXCJQaWNrRW50aXR5U2VhcmNoVHlwZV9FeGFjdE1hdGNoXCJdID0gXCJleGFjdC1tYXRjaFwiO1xuICAgIC8vIFxuICAgIFBpY2tFbnRpdHlTZWFyY2hUeXBlW1wiUGlja0VudGl0eVNlYXJjaFR5cGVfREVGQVVMVFwiXSA9IFwiZGVmYXVsdFwiO1xufSkoUGlja0VudGl0eVNlYXJjaFR5cGUgPSBleHBvcnRzLlBpY2tFbnRpdHlTZWFyY2hUeXBlIHx8IChleHBvcnRzLlBpY2tFbnRpdHlTZWFyY2hUeXBlID0ge30pKTtcbi8vIFBhcnNpbmcgbWV0aG9kcyBhbmQgc3RydWN0dXJlcy5cbnZhciBFeHByZXNzaW9uT3A7XG4oZnVuY3Rpb24gKEV4cHJlc3Npb25PcCkge1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkxvZ2ljYWxPclwiXSA9IFwib3AtbG9naWNhbC1vclwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkxvZ2ljYWxBbmRcIl0gPSBcIm9wLWxvZ2ljYWwtYW5kXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTG9naWNhbE5vdFwiXSA9IFwib3AtbG9naWNhbC1ub3RcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJCaXR3aXNlWE9yXCJdID0gXCJvcC1iaXR3aXNlLXhvclwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkJpdHdpc2VPclwiXSA9IFwib3AtYml0d2lzZS1vclwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkVxdWFsc1wiXSA9IFwib3AtZXF1YWxzXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiR3JlYXRlclwiXSA9IFwib3AtZ3JlYXRlclwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkxlc3NcIl0gPSBcIm9wLWxlc3NcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJHRXF1YWxcIl0gPSBcIm9wLWdlcXVhbFwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkxFcXVhbFwiXSA9IFwib3AtbGVxdWFsXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTkVxdWFsXCJdID0gXCJvcC1uZXF1YWxcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJQbHVzXCJdID0gXCJvcC1wbHVzXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTWludXNcIl0gPSBcIm9wLW1pbnVzXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQml0d2lzZUFuZFwiXSA9IFwib3AtYml0d2lzZS1hbmRcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJNdWx0aXBseVwiXSA9IFwib3AtbXVsdGlwbHlcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJEaXZpZGVcIl0gPSBcIm9wLWRpdmlkZVwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIk1vZHVsb1wiXSA9IFwib3AtbW9kdWxvXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiUG93ZXJcIl0gPSBcIm9wLXBvd2VyXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiUG9zaXRpdmVcIl0gPSBcIm9wLXBvc2l0aXZlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTmVnYXRpdmVcIl0gPSBcIm9wLW5lZ2F0aXZlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQml0d2lzZU5vdFwiXSA9IFwib3AtYml0d2lzZS1ub3RcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJDb2x1bW5cIl0gPSBcIm9wLWNvbHVtblwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIlN0cmluZ1wiXSA9IFwib3Atc3RyaW5nXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTnVtYmVyXCJdID0gXCJvcC1udW1iZXJcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJEYXRlXCJdID0gXCJvcC1kYXRlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQm9vbGVhblwiXSA9IFwib3AtYm9vbGVhblwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkZ1bmNhbGxcIl0gPSBcIm9wLWZ1bmNhbGxcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJMUGFyZW5cIl0gPSBcIm9wLWxwYXJlblwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIlJQYXJlblwiXSA9IFwib3AtcnBhcmVuXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQ29tbWFcIl0gPSBcIm9wLWNvbW1hXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiSWRlbnRcIl0gPSBcIm9wLWlkZW50XCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiTnVsbFwiXSA9IFwib3AtbnVsbFwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIklmXCJdID0gXCJvcC1pZlwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkVsc2VpZlwiXSA9IFwib3AtZWxzZWlmXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQ2FzZVwiXSA9IFwib3AtY2FzZVwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIldoZW5cIl0gPSBcIm9wLXdoZW5cIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJUaGVuXCJdID0gXCJvcC10aGVuXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiRWxzZVwiXSA9IFwib3AtZWxzZVwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkVuZEV4cHJcIl0gPSBcIm9wLWVuZGV4cHJcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJXaGl0ZXNwYWNlXCJdID0gXCJvcC13aGl0ZXNwYWNlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiQ29tbWVudFwiXSA9IFwib3AtY29tbWVudFwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIkxCcmFjZVwiXSA9IFwib3AtbGJyYWNlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiUkJyYWNlXCJdID0gXCJvcC1yYnJhY2VcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJDb2xvblwiXSA9IFwib3AtY29sb25cIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJCYXJcIl0gPSBcIm9wLWJhclwiO1xuICAgIC8vIFxuICAgIEV4cHJlc3Npb25PcFtcIlR4dHlwZVwiXSA9IFwib3AtdHh0eXBlXCI7XG4gICAgLy8gXG4gICAgRXhwcmVzc2lvbk9wW1wiRW5kXCJdID0gXCJvcC1lbmRcIjtcbiAgICAvLyBcbiAgICBFeHByZXNzaW9uT3BbXCJSQnJhY2tldHNcIl0gPSBcIm9wLXJicmFja2V0c1wiO1xuICAgIC8vIHVzZWQgdG8gcmVwcmVzZW50IGludmFsaWQgdG9rZW5zXG4gICAgRXhwcmVzc2lvbk9wW1wiSW52YWxpZFwiXSA9IFwib3AtaW52YWxpZFwiO1xufSkoRXhwcmVzc2lvbk9wID0gZXhwb3J0cy5FeHByZXNzaW9uT3AgfHwgKGV4cG9ydHMuRXhwcmVzc2lvbk9wID0ge30pKTtcbi8vIHRyaS1zdGF0ZSBib29sXG52YXIgVHJpQm9vbDtcbihmdW5jdGlvbiAoVHJpQm9vbCkge1xuICAgIC8vIFxuICAgIFRyaUJvb2xbXCJUQl9JbnZhbGlkXCJdID0gXCJ0cmlib29sLWludmFsaWRcIjtcbiAgICAvLyBcbiAgICBUcmlCb29sW1wiVEJfRmFsc2VcIl0gPSBcInRyaWJvb2wtZmFsc2VcIjtcbiAgICAvLyBcbiAgICBUcmlCb29sW1wiVEJfVHJ1ZVwiXSA9IFwidHJpYm9vbC10cnVlXCI7XG59KShUcmlCb29sID0gZXhwb3J0cy5UcmlCb29sIHx8IChleHBvcnRzLlRyaUJvb2wgPSB7fSkpO1xuLy8gdGFibGUgY2FsYyByZWZlcmVuY2Ugb3B0aW9ucyBzZXRcbnZhciBSZWZlcmVuY2VPcHRpb25zU2V0O1xuKGZ1bmN0aW9uIChSZWZlcmVuY2VPcHRpb25zU2V0KSB7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlT3B0aW9uc1NldFtcIlJPU19SZWxhdGl2ZVwiXSA9IFwicmVmZXJlbmNlLW9wdGlvbnMtc2V0LXJlbGF0aXZlXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlT3B0aW9uc1NldFtcIlJPU19GaXhlZFwiXSA9IFwicmVmZXJlbmNlLW9wdGlvbnMtc2V0LWZpeGVkXCI7XG4gICAgLy8gXG4gICAgUmVmZXJlbmNlT3B0aW9uc1NldFtcIlJPU19QYXJhbWV0ZXJcIl0gPSBcInJlZmVyZW5jZS1vcHRpb25zLXNldC1wYXJhbWV0ZXJcIjtcbiAgICAvLyBcbiAgICBSZWZlcmVuY2VPcHRpb25zU2V0W1wiUk9TX05vbmVcIl0gPSBcInJlZmVyZW5jZS1vcHRpb25zLXNldC1ub25lXCI7XG59KShSZWZlcmVuY2VPcHRpb25zU2V0ID0gZXhwb3J0cy5SZWZlcmVuY2VPcHRpb25zU2V0IHx8IChleHBvcnRzLlJlZmVyZW5jZU9wdGlvbnNTZXQgPSB7fSkpO1xuLy8gd2lkZ2V0IHN0YXRlXG52YXIgV2lkZ2V0U3RhdGU7XG4oZnVuY3Rpb24gKFdpZGdldFN0YXRlKSB7XG4gICAgLy8gXG4gICAgV2lkZ2V0U3RhdGVbXCJIaWRkZW5cIl0gPSBcIndpZGdldC1zdGF0ZS1oaWRkZW5cIjtcbiAgICAvLyBcbiAgICBXaWRnZXRTdGF0ZVtcIkRpc2FibGVkXCJdID0gXCJ3aWRnZXQtc3RhdGUtZGlzYWJsZWRcIjtcbiAgICAvLyBcbiAgICBXaWRnZXRTdGF0ZVtcIkVuYWJsZWRcIl0gPSBcIndpZGdldC1zdGF0ZS1lbmFibGVkXCI7XG59KShXaWRnZXRTdGF0ZSA9IGV4cG9ydHMuV2lkZ2V0U3RhdGUgfHwgKGV4cG9ydHMuV2lkZ2V0U3RhdGUgPSB7fSkpO1xuLy8gcmFuayB0eXBlXG52YXIgUmFua1R5cGU7XG4oZnVuY3Rpb24gKFJhbmtUeXBlKSB7XG4gICAgLy8gXG4gICAgUmFua1R5cGVbXCJDb21wZXRpdGlvblwiXSA9IFwicmFuay10eXBlLWNvbXBldGl0aW9uXCI7XG4gICAgLy8gXG4gICAgUmFua1R5cGVbXCJNb2RpZmllZENvbXBldGl0aW9uXCJdID0gXCJyYW5rLXR5cGUtbW9kaWZpZWQtY29tcGV0aXRpb25cIjtcbiAgICAvLyBcbiAgICBSYW5rVHlwZVtcIkRlbnNlXCJdID0gXCJyYW5rLXR5cGUtZGVuc2VcIjtcbiAgICAvLyBcbiAgICBSYW5rVHlwZVtcIlVuaXF1ZVwiXSA9IFwicmFuay10eXBlLXVuaXF1ZVwiO1xufSkoUmFua1R5cGUgPSBleHBvcnRzLlJhbmtUeXBlIHx8IChleHBvcnRzLlJhbmtUeXBlID0ge30pKTtcbi8vIFxudmFyIFRhYmxlQ2FsY0NvbW1hbmRUeXBlO1xuKGZ1bmN0aW9uIChUYWJsZUNhbGNDb21tYW5kVHlwZSkge1xuICAgIC8vIFxuICAgIFRhYmxlQ2FsY0NvbW1hbmRUeXBlW1wiVGFibGVDYWxjQ29tbWFuZENsZWFyXCJdID0gXCJjbGVhclwiO1xufSkoVGFibGVDYWxjQ29tbWFuZFR5cGUgPSBleHBvcnRzLlRhYmxlQ2FsY0NvbW1hbmRUeXBlIHx8IChleHBvcnRzLlRhYmxlQ2FsY0NvbW1hbmRUeXBlID0ge30pKTtcbi8vIFxudmFyIENhbGNOZXN0aW5nTGV2ZWw7XG4oZnVuY3Rpb24gKENhbGNOZXN0aW5nTGV2ZWwpIHtcbiAgICAvLyBcbiAgICBDYWxjTmVzdGluZ0xldmVsW1wiUHJpbWFyeVwiXSA9IFwicHJpbWFyeVwiO1xuICAgIC8vIHVzZWQgb25seSBmb3IgdHlwZSAhPSBUQ19DVVNUT01cbiAgICBDYWxjTmVzdGluZ0xldmVsW1wiU2Vjb25kYXJ5XCJdID0gXCJzZWNvbmRhcnlcIjtcbiAgICAvLyB1c2VkIG9ubHkgZm9yIHR5cGUgPT0gVENfQ1VTVE9NXG4gICAgQ2FsY05lc3RpbmdMZXZlbFtcIk5lc3RlZFwiXSA9IFwibmVzdGVkXCI7XG59KShDYWxjTmVzdGluZ0xldmVsID0gZXhwb3J0cy5DYWxjTmVzdGluZ0xldmVsIHx8IChleHBvcnRzLkNhbGNOZXN0aW5nTGV2ZWwgPSB7fSkpO1xuLy8gXG52YXIgRGVjaW1hbE1vZGU7XG4oZnVuY3Rpb24gKERlY2ltYWxNb2RlKSB7XG4gICAgLy8gXG4gICAgRGVjaW1hbE1vZGVbXCJEZWNpbWFsTW9kZUF1dG9tYXRpY1wiXSA9IFwiYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgRGVjaW1hbE1vZGVbXCJEZWNpbWFsTW9kZU1hbnVhbFwiXSA9IFwibWFudWFsXCI7XG59KShEZWNpbWFsTW9kZSA9IGV4cG9ydHMuRGVjaW1hbE1vZGUgfHwgKGV4cG9ydHMuRGVjaW1hbE1vZGUgPSB7fSkpO1xuLy8gXG52YXIgVGFibGVDYWxjT3JkZXJpbmdUeXBlO1xuKGZ1bmN0aW9uIChUYWJsZUNhbGNPcmRlcmluZ1R5cGUpIHtcbiAgICAvLyBBZHZhbmNlZC4uLlxuICAgIFRhYmxlQ2FsY09yZGVyaW5nVHlwZVtcIk9URmllbGRcIl0gPSBcImZpZWxkXCI7XG4gICAgLy8gVGFibGUgKEFjcm9zcylcbiAgICBUYWJsZUNhbGNPcmRlcmluZ1R5cGVbXCJPVFJvd3NcIl0gPSBcInJvd3NcIjtcbiAgICAvLyBUYWJsZSAoRG93bilcbiAgICBUYWJsZUNhbGNPcmRlcmluZ1R5cGVbXCJPVENvbHVtbnNcIl0gPSBcImNvbHVtbnNcIjtcbiAgICAvLyBUYWJsZSAoQWNyb3NzIHRoZW4gRG93bilcbiAgICBUYWJsZUNhbGNPcmRlcmluZ1R5cGVbXCJPVFRhYmxlXCJdID0gXCJ0YWJsZVwiO1xuICAgIC8vIFRhYmxlIChEb3duIHRoZW4gQWNyb3NzKVxuICAgIFRhYmxlQ2FsY09yZGVyaW5nVHlwZVtcIk9UVGFibGVDb2x1bW5QcmVjZWRlbmNlXCJdID0gXCJ0YWJsZS1jb2x1bW4tcHJlY2VkZW5jZVwiO1xuICAgIC8vIFBhbmUgQWNyb3NzXG4gICAgVGFibGVDYWxjT3JkZXJpbmdUeXBlW1wiT1RSb3dJblBhbmVcIl0gPSBcInJvdy1pbi1wYW5lXCI7XG4gICAgLy8gUGFuZSAoRG93bilcbiAgICBUYWJsZUNhbGNPcmRlcmluZ1R5cGVbXCJPVENvbHVtbkluUGFuZVwiXSA9IFwiY29sdW1uLWluLXBhbmVcIjtcbiAgICAvLyBQYW5lIChBY3Jvc3MgdGhlbiBEb3duKVxuICAgIFRhYmxlQ2FsY09yZGVyaW5nVHlwZVtcIk9UUGFuZVwiXSA9IFwicGFuZVwiO1xuICAgIC8vIFBhbmUgKERvd24gdGhlbiBBY3Jvc3MpXG4gICAgVGFibGVDYWxjT3JkZXJpbmdUeXBlW1wiT1RQYW5lQ29sdW1uUHJlY2VkZW5jZVwiXSA9IFwicGFuZS1jb2x1bW4tcHJlY2VkZW5jZVwiO1xuICAgIC8vIENlbGxcbiAgICBUYWJsZUNhbGNPcmRlcmluZ1R5cGVbXCJPVENlbGxJblBhbmVcIl0gPSBcImNlbGwtaW4tcGFuZVwiO1xufSkoVGFibGVDYWxjT3JkZXJpbmdUeXBlID0gZXhwb3J0cy5UYWJsZUNhbGNPcmRlcmluZ1R5cGUgfHwgKGV4cG9ydHMuVGFibGVDYWxjT3JkZXJpbmdUeXBlID0ge30pKTtcbi8vIFxudmFyIFRhYmxlQ2FsY1NvcnRNb2RlO1xuKGZ1bmN0aW9uIChUYWJsZUNhbGNTb3J0TW9kZSkge1xuICAgIC8vIFxuICAgIFRhYmxlQ2FsY1NvcnRNb2RlW1wiU01fQXV0b21hdGljXCJdID0gXCJzb3J0LW1vZGUtYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjU29ydE1vZGVbXCJTTV9DdXN0b21cIl0gPSBcInNvcnQtbW9kZS1jdXN0b21cIjtcbn0pKFRhYmxlQ2FsY1NvcnRNb2RlID0gZXhwb3J0cy5UYWJsZUNhbGNTb3J0TW9kZSB8fCAoZXhwb3J0cy5UYWJsZUNhbGNTb3J0TW9kZSA9IHt9KSk7XG4vLyBcbnZhciBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlO1xuKGZ1bmN0aW9uIChUYWJsZUNhbGNUYWJsZUNhbGNUeXBlKSB7XG4gICAgLy8gbm9uZSAodXNlZCB0byBpbml0aWFsaXplIHZhcmlhYmxlcylcbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFJ1bm5pbmcgVG90YWxcbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfQ1VNVUxBVElWRVwiXSA9IFwiY3VtdWxhdGl2ZVwiO1xuICAgIC8vIE1vdmluZyBDYWxjdWxhdGlvblxuICAgIFRhYmxlQ2FsY1RhYmxlQ2FsY1R5cGVbXCJUQ19XSU5ET1dcIl0gPSBcIndpbmRvd1wiO1xuICAgIC8vIERpZmZlcmVuY2UgRnJvbVxuICAgIFRhYmxlQ2FsY1RhYmxlQ2FsY1R5cGVbXCJUQ19ESUZGXCJdID0gXCJkaWZmXCI7XG4gICAgLy8gUGVyY2VudCBEaWZmZXJlbmNlIEZyb21cbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfUENURElGRlwiXSA9IFwicGN0LWRpZmZcIjtcbiAgICAvLyBQZXJjZW50IEZyb21cbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfUENUVkFMVUVcIl0gPSBcInBjdC12YWx1ZVwiO1xuICAgIC8vIFBlcmNlbnQgT2YgVG90YWxcbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfUENUVE9UQUxcIl0gPSBcInBjdC10b3RhbFwiO1xuICAgIC8vIFJhbmtcbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfUkFOS1wiXSA9IFwicmFua1wiO1xuICAgIC8vIFBlcmNlbnRpbGVcbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfUENUUkFOS1wiXSA9IFwicGN0LXJhbmtcIjtcbiAgICAvLyBDdXN0b21cbiAgICBUYWJsZUNhbGNUYWJsZUNhbGNUeXBlW1wiVENfQ1VTVE9NXCJdID0gXCJjdXN0b21cIjtcbn0pKFRhYmxlQ2FsY1RhYmxlQ2FsY1R5cGUgPSBleHBvcnRzLlRhYmxlQ2FsY1RhYmxlQ2FsY1R5cGUgfHwgKGV4cG9ydHMuVGFibGVDYWxjVGFibGVDYWxjVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlO1xuKGZ1bmN0aW9uIChRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlKSB7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZFJ1blRvdGFsXCJdID0gXCJydW4tdG90YWxcIjtcbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlW1wiUXVpY2tUYWJsZUNhbGNDb21tYW5kRGlmZmVyZW5jZVwiXSA9IFwiZGlmZmVyZW5jZVwiO1xuICAgIC8vIFxuICAgIFF1aWNrVGFibGVDYWxjQ29tbWFuZFR5cGVbXCJRdWlja1RhYmxlQ2FsY0NvbW1hbmRQY3REaWZmXCJdID0gXCJwY3QtZGlmZlwiO1xuICAgIC8vIFxuICAgIFF1aWNrVGFibGVDYWxjQ29tbWFuZFR5cGVbXCJRdWlja1RhYmxlQ2FsY0NvbW1hbmRQY3RUb3RhbFwiXSA9IFwicGN0LXRvdGFsXCI7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZFJhbmtcIl0gPSBcInJhbmtcIjtcbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlW1wiUXVpY2tUYWJsZUNhbGNDb21tYW5kUGN0UmFua1wiXSA9IFwicGN0LXJhbmtcIjtcbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlW1wiUXVpY2tUYWJsZUNhbGNDb21tYW5kTW92aW5nQXZnXCJdID0gXCJtb3ZpbmctYXZnXCI7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZFl0ZFwiXSA9IFwieXRkXCI7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZENnclwiXSA9IFwiY2dyXCI7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZFlPdmVyWVwiXSA9IFwieS1vdmVyLXlcIjtcbiAgICAvLyBcbiAgICBRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlW1wiUXVpY2tUYWJsZUNhbGNDb21tYW5kWXRkR3Jvd3RoXCJdID0gXCJ5dGQtZ3Jvd3RoXCI7XG4gICAgLy8gXG4gICAgUXVpY2tUYWJsZUNhbGNDb21tYW5kVHlwZVtcIlF1aWNrVGFibGVDYWxjQ29tbWFuZEN1c3RvbVwiXSA9IFwiY3VzdG9tXCI7XG59KShRdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlID0gZXhwb3J0cy5RdWlja1RhYmxlQ2FsY0NvbW1hbmRUeXBlIHx8IChleHBvcnRzLlF1aWNrVGFibGVDYWxjQ29tbWFuZFR5cGUgPSB7fSkpO1xuLy8gXG52YXIgVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRUeXBlO1xuKGZ1bmN0aW9uIChUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGUpIHtcbiAgICAvLyBcbiAgICBUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGVbXCJUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFJlbFwiXSA9IFwicmVsXCI7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRUeXBlW1wiVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRBYnNcIl0gPSBcImFic1wiO1xuICAgIC8vIFxuICAgIFRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kVHlwZVtcIlRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kUGFyYW1cIl0gPSBcInBhcmFtXCI7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRUeXBlW1wiVGFibGVDYWxjQWRkcmVzc0NvbW1hbmRNb3JlXCJdID0gXCJtb3JlXCI7XG59KShUYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGUgPSBleHBvcnRzLlRhYmxlQ2FsY0FkZHJlc3NDb21tYW5kVHlwZSB8fCAoZXhwb3J0cy5UYWJsZUNhbGNBZGRyZXNzQ29tbWFuZFR5cGUgPSB7fSkpO1xuLy8gcmVsYXRpdmUgYWRkcmVzc2luZ1xudmFyIFRhYmxlQ2FsY1JlbGF0aXZlQWRkcmVzcztcbihmdW5jdGlvbiAoVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzKSB7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzW1wiUmVsQWRkckZpcnN0XCJdID0gXCJyZWxhdGl2ZS1hZGRyZXNzLWZpcnN0XCI7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzW1wiUmVsQWRkclByZXZpb3VzXCJdID0gXCJyZWxhdGl2ZS1hZGRyZXNzLXByZXZpb3VzXCI7XG4gICAgLy8gXG4gICAgVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzW1wiUmVsQWRkck5leHRcIl0gPSBcInJlbGF0aXZlLWFkZHJlc3MtbmV4dFwiO1xuICAgIC8vIFxuICAgIFRhYmxlQ2FsY1JlbGF0aXZlQWRkcmVzc1tcIlJlbEFkZHJMYXN0XCJdID0gXCJyZWxhdGl2ZS1hZGRyZXNzLWxhc3RcIjtcbn0pKFRhYmxlQ2FsY1JlbGF0aXZlQWRkcmVzcyA9IGV4cG9ydHMuVGFibGVDYWxjUmVsYXRpdmVBZGRyZXNzIHx8IChleHBvcnRzLlRhYmxlQ2FsY1JlbGF0aXZlQWRkcmVzcyA9IHt9KSk7XG4vLyBcbnZhciBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlO1xuKGZ1bmN0aW9uIChDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlKSB7XG4gICAgLy8gXG4gICAgQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZVtcIlVuYmlubmVkXCJdID0gXCJ1bmJpbm5lZFwiO1xuICAgIC8vIFxuICAgIENhdGVnb3JpY2FsQmluSXRlbVR5cGVbXCJCaW5NZW1iZXJcIl0gPSBcImNhdGVnb3JpY2FsLWJpbi1tZW1iZXJcIjtcbiAgICAvLyBcbiAgICBDYXRlZ29yaWNhbEJpbkl0ZW1UeXBlW1wiQmluXCJdID0gXCJjYXRlZ29yaWNhbC1iaW5cIjtcbn0pKENhdGVnb3JpY2FsQmluSXRlbVR5cGUgPSBleHBvcnRzLkNhdGVnb3JpY2FsQmluSXRlbVR5cGUgfHwgKGV4cG9ydHMuQ2F0ZWdvcmljYWxCaW5JdGVtVHlwZSA9IHt9KSk7XG4vLyBUaGUgY2xhc3MgcHJvcGVydGllc1xudmFyIENyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWc7XG4oZnVuY3Rpb24gKENyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWcpIHtcbiAgICAvLyBcbiAgICBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnW1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIENyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWdbXCJHZW5lcmljQXV0aENsYXNzXCJdID0gXCJnZW5lcmljLWF1dGgtY2xhc3NcIjtcbiAgICAvLyBcbiAgICBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnW1wiUHJvdmlkZXJDbGFzc1wiXSA9IFwicHJvdmlkZXItY2xhc3NcIjtcbiAgICAvLyBcbiAgICBDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnW1wiRGF0YUNvbm5lY3Rpb25DbGFzc1wiXSA9IFwiZGF0YS1jb25uZWN0aW9uLWNsYXNzXCI7XG59KShDcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnID0gZXhwb3J0cy5DcmVkZW50aWFsVHlwZVByb3BlcnRpZXNGbGFnIHx8IChleHBvcnRzLkNyZWRlbnRpYWxUeXBlUHJvcGVydGllc0ZsYWcgPSB7fSkpO1xuLy8gVGhlIGNvbm5lY3RvciB0eXBlXG52YXIgQ29ubmVjdG9yVHlwZTtcbihmdW5jdGlvbiAoQ29ubmVjdG9yVHlwZSkge1xuICAgIC8vIFxuICAgIENvbm5lY3RvclR5cGVbXCJJbnZhbGlkXCJdID0gXCJpbnZhbGlkXCI7XG4gICAgLy8gXG4gICAgQ29ubmVjdG9yVHlwZVtcIldlYkRhdGFDb25uZWN0b3JcIl0gPSBcIndlYi1kYXRhLWNvbm5lY3RvclwiO1xuICAgIC8vIFxuICAgIENvbm5lY3RvclR5cGVbXCJDbG91ZEZpbGVDb25uZWN0b3JcIl0gPSBcImNsb3VkLWZpbGUtY29ubmVjdG9yXCI7XG4gICAgLy8gXG4gICAgQ29ubmVjdG9yVHlwZVtcIkxlZ2FjeUNvbm5lY3RvclwiXSA9IFwibGVnYWN5LWNvbm5lY3RvclwiO1xufSkoQ29ubmVjdG9yVHlwZSA9IGV4cG9ydHMuQ29ubmVjdG9yVHlwZSB8fCAoZXhwb3J0cy5Db25uZWN0b3JUeXBlID0ge30pKTtcbi8vIFxudmFyIFRhYmxlUGlsbEljb247XG4oZnVuY3Rpb24gKFRhYmxlUGlsbEljb24pIHtcbiAgICAvLyBcbiAgICBUYWJsZVBpbGxJY29uW1wiTGlzdEl0ZW1cIl0gPSBcImxpc3QtaXRlbVwiO1xuICAgIC8vIFxuICAgIFRhYmxlUGlsbEljb25bXCJTaGVldFwiXSA9IFwic2hlZXRcIjtcbiAgICAvLyBcbiAgICBUYWJsZVBpbGxJY29uW1wiRm91bmRUYWJsZVwiXSA9IFwiZm91bmQtdGFibGVcIjtcbiAgICAvLyBcbiAgICBUYWJsZVBpbGxJY29uW1wiTmFtZWRSYW5nZVwiXSA9IFwibmFtZWQtcmFuZ2VcIjtcbiAgICAvLyBcbiAgICBUYWJsZVBpbGxJY29uW1wiU3RvcmVkUHJvY2VkdXJlXCJdID0gXCJzdG9yZWQtcHJvY2VkdXJlXCI7XG59KShUYWJsZVBpbGxJY29uID0gZXhwb3J0cy5UYWJsZVBpbGxJY29uIHx8IChleHBvcnRzLlRhYmxlUGlsbEljb24gPSB7fSkpO1xuLy8gXG52YXIgSm9pblZhbGlkYXRpb25FcnJvcjtcbihmdW5jdGlvbiAoSm9pblZhbGlkYXRpb25FcnJvcikge1xuICAgIC8vIFxuICAgIEpvaW5WYWxpZGF0aW9uRXJyb3JbXCJKVkVfTm9FcnJvclwiXSA9IFwibm8tZXJyb3JcIjtcbiAgICAvLyBcbiAgICBKb2luVmFsaWRhdGlvbkVycm9yW1wiSlZFX0VtcHR5Q2xhdXNlXCJdID0gXCJlbXB0eS1jbGF1c2VcIjtcbiAgICAvLyBcbiAgICBKb2luVmFsaWRhdGlvbkVycm9yW1wiSlZFX1R5cGVNaXNtYXRjaFwiXSA9IFwidHlwZS1taXNtYXRjaFwiO1xuICAgIC8vIFxuICAgIEpvaW5WYWxpZGF0aW9uRXJyb3JbXCJKVkVfSW52YWxpZEZpZWxkXCJdID0gXCJpbnZhbGlkLWZpZWxkXCI7XG4gICAgLy8gXG4gICAgSm9pblZhbGlkYXRpb25FcnJvcltcIkpWRV9CYWRDbGF1c2VcIl0gPSBcImJhZC1jbGF1c2VcIjtcbiAgICAvLyBcbiAgICBKb2luVmFsaWRhdGlvbkVycm9yW1wiSlZFX0JhZElucHV0UmVsYXRpb25cIl0gPSBcImJhZC1pbnB1dC1yZWxhdGlvblwiO1xuICAgIC8vIFxuICAgIEpvaW5WYWxpZGF0aW9uRXJyb3JbXCJKVkVfUmVwZWF0ZWRGaWVsZFJlZmVyZW5jZXNcIl0gPSBcInJlcGVhdGVkLWZpZWxkLXJlZmVyZW5jZXNcIjtcbiAgICAvLyBcbiAgICBKb2luVmFsaWRhdGlvbkVycm9yW1wiSlZFX1Vuc3VwcG9ydGVkSm9pblR5cGVcIl0gPSBcInVuc3VwcG9ydGVkLWpvaW4tdHlwZVwiO1xuICAgIC8vIFxuICAgIEpvaW5WYWxpZGF0aW9uRXJyb3JbXCJKVkVfSW52YWxpZENhbGN1bGF0aW9uXCJdID0gXCJpbnZhbGlkLWNhbGN1bGF0aW9uXCI7XG4gICAgLy8gXG4gICAgSm9pblZhbGlkYXRpb25FcnJvcltcIkpWRV9Ob25TcGF0aWFsVHlwZVwiXSA9IFwibm9uLXNwYXRpYWwtdHlwZVwiO1xuICAgIC8vIFxuICAgIEpvaW5WYWxpZGF0aW9uRXJyb3JbXCJKVkVfTm9uU3BhdGlhbENvbXBhcmlzb25cIl0gPSBcIm5vbi1zcGF0aWFsLWNvbXBcIjtcbiAgICAvLyBcbiAgICBKb2luVmFsaWRhdGlvbkVycm9yW1wiSlZFX1Vua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEpvaW5WYWxpZGF0aW9uRXJyb3IgPSBleHBvcnRzLkpvaW5WYWxpZGF0aW9uRXJyb3IgfHwgKGV4cG9ydHMuSm9pblZhbGlkYXRpb25FcnJvciA9IHt9KSk7XG4vLyBcbnZhciBDb25uZWN0aW9uVHlwZUVudW07XG4oZnVuY3Rpb24gKENvbm5lY3Rpb25UeXBlRW51bSkge1xuICAgIC8vIC1kLXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgZW51bSBnZW5lcmF0b3IgdG8gZ2VuZXJhdGUgRFMgd2l0aCBjYXBpdGFsIGxldHRlcnMgaW4gLmNzIGp1c3QgbGlrZSB0aGUgLmNwcFxuICAgIENvbm5lY3Rpb25UeXBlRW51bVtcIkludmFsaWREU1wiXSA9IFwiaW52YWxpZC1kLXNcIjtcbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVHlwZUVudW1bXCJGaWxlRFNcIl0gPSBcImZpbGUtZC1zXCI7XG4gICAgLy8gXG4gICAgQ29ubmVjdGlvblR5cGVFbnVtW1wiU2VydmVyRFNcIl0gPSBcInNlcnZlci1kLXNcIjtcbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVHlwZUVudW1bXCJJbnRlcm5ldERTXCJdID0gXCJpbnRlcm5ldC1kLXNcIjtcbiAgICAvLyBcbiAgICBDb25uZWN0aW9uVHlwZUVudW1bXCJUYWJsZWF1U2VydmVyRFNcIl0gPSBcInRhYmxlYXUtc2VydmVyLWQtc1wiO1xufSkoQ29ubmVjdGlvblR5cGVFbnVtID0gZXhwb3J0cy5Db25uZWN0aW9uVHlwZUVudW0gfHwgKGV4cG9ydHMuQ29ubmVjdGlvblR5cGVFbnVtID0ge30pKTtcbi8vIFxudmFyIENvbm5lY3Rpb25FcnJvclN0YWdlO1xuKGZ1bmN0aW9uIChDb25uZWN0aW9uRXJyb3JTdGFnZSkge1xuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FcnJvclN0YWdlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xuICAgIC8vIFxuICAgIENvbm5lY3Rpb25FcnJvclN0YWdlW1wiQ3JlYXRlUHJvdG9jb2xGYWlsZWRcIl0gPSBcImNyZWF0ZS1wcm90b2NvbC1mYWlsZWRcIjtcbiAgICAvLyBcbiAgICBDb25uZWN0aW9uRXJyb3JTdGFnZVtcIkxvYWRNZXRhZGF0YUZhaWxlZFwiXSA9IFwibG9hZC1tZXRhZGF0YS1mYWlsZWRcIjtcbn0pKENvbm5lY3Rpb25FcnJvclN0YWdlID0gZXhwb3J0cy5Db25uZWN0aW9uRXJyb3JTdGFnZSB8fCAoZXhwb3J0cy5Db25uZWN0aW9uRXJyb3JTdGFnZSA9IHt9KSk7XG4vLyBcbnZhciBTZXRUaWNrT3JpZ2luUmVzdWx0O1xuKGZ1bmN0aW9uIChTZXRUaWNrT3JpZ2luUmVzdWx0KSB7XG4gICAgLy8gXG4gICAgU2V0VGlja09yaWdpblJlc3VsdFtcIlN1Y2Nlc3NcIl0gPSBcInNldC10aWNrLW9yaWdpbi1zdWNjZXNzLXJlc3VsdFwiO1xuICAgIC8vIFxuICAgIFNldFRpY2tPcmlnaW5SZXN1bHRbXCJQYXJzZUZhaWx1cmVcIl0gPSBcInNldC10aWNrLW9yaWdpbi1wYXJzZS1mYWlsdXJlLXJlc3VsdFwiO1xuICAgIC8vIFxuICAgIFNldFRpY2tPcmlnaW5SZXN1bHRbXCJWYWx1ZUZhaWx1cmVcIl0gPSBcInNldC10aWNrLW9yaWdpbi12YWx1ZS1mYWlsdXJlLXJlc3VsdFwiO1xufSkoU2V0VGlja09yaWdpblJlc3VsdCA9IGV4cG9ydHMuU2V0VGlja09yaWdpblJlc3VsdCB8fCAoZXhwb3J0cy5TZXRUaWNrT3JpZ2luUmVzdWx0ID0ge30pKTtcbi8vIFxudmFyIFNldFRpY2tTcGFjaW5nUmVzdWx0O1xuKGZ1bmN0aW9uIChTZXRUaWNrU3BhY2luZ1Jlc3VsdCkge1xuICAgIC8vIFxuICAgIFNldFRpY2tTcGFjaW5nUmVzdWx0W1wiU3VjY2Vzc1wiXSA9IFwic2V0LXRpY2stc3BhY2luZy1zdWNjZXNzLXJlc3VsdFwiO1xuICAgIC8vIFxuICAgIFNldFRpY2tTcGFjaW5nUmVzdWx0W1wiUGFyc2VGYWlsdXJlXCJdID0gXCJzZXQtdGljay1zcGFjaW5nLXBhcnNlLWZhaWx1cmUtcmVzdWx0XCI7XG4gICAgLy8gXG4gICAgU2V0VGlja1NwYWNpbmdSZXN1bHRbXCJWYWx1ZUZhaWx1cmVcIl0gPSBcInNldC10aWNrLXNwYWNpbmctdmFsdWUtZmFpbHVyZS1yZXN1bHRcIjtcbn0pKFNldFRpY2tTcGFjaW5nUmVzdWx0ID0gZXhwb3J0cy5TZXRUaWNrU3BhY2luZ1Jlc3VsdCB8fCAoZXhwb3J0cy5TZXRUaWNrU3BhY2luZ1Jlc3VsdCA9IHt9KSk7XG4vLyBUaGUgcmVzdWx0IG9mIHNldHRpbmcgb25lIGVuZCBvZiBhbiBheGlzIHJhbmdlXG52YXIgU2V0QXhpc1JhbmdlUmVzdWx0O1xuKGZ1bmN0aW9uIChTZXRBeGlzUmFuZ2VSZXN1bHQpIHtcbiAgICAvLyBcbiAgICBTZXRBeGlzUmFuZ2VSZXN1bHRbXCJTdWNjZXNzXCJdID0gXCJzZXQtYXhpcy1yYW5nZS1zdWNjZXNzLXJlc3VsdFwiO1xuICAgIC8vIFxuICAgIFNldEF4aXNSYW5nZVJlc3VsdFtcIkZhaWx1cmVcIl0gPSBcInNldC1heGlzLXJhbmdlLWZhaWx1cmUtcmVzdWx0XCI7XG59KShTZXRBeGlzUmFuZ2VSZXN1bHQgPSBleHBvcnRzLlNldEF4aXNSYW5nZVJlc3VsdCB8fCAoZXhwb3J0cy5TZXRBeGlzUmFuZ2VSZXN1bHQgPSB7fSkpO1xuLy8gVGhlIHR5cGUgb2YgYW4gYXhpcycgZXh0ZW50XG52YXIgQXhpc0V4dGVudFR5cGU7XG4oZnVuY3Rpb24gKEF4aXNFeHRlbnRUeXBlKSB7XG4gICAgLy8gXG4gICAgQXhpc0V4dGVudFR5cGVbXCJBdXRvbWF0aWNcIl0gPSBcImF4aXMtZXh0ZW50LWF1dG9tYXRpY1wiO1xuICAgIC8vIFxuICAgIEF4aXNFeHRlbnRUeXBlW1wiVW5pZm9ybVwiXSA9IFwiYXhpcy1leHRlbnQtdW5pZm9ybVwiO1xuICAgIC8vIFxuICAgIEF4aXNFeHRlbnRUeXBlW1wiSW5kZXBlbmRlbnRcIl0gPSBcImF4aXMtZXh0ZW50LWluZGVwZW5kZW50XCI7XG4gICAgLy8gXG4gICAgQXhpc0V4dGVudFR5cGVbXCJGaXhlZFwiXSA9IFwiYXhpcy1leHRlbnQtZml4ZWRcIjtcbn0pKEF4aXNFeHRlbnRUeXBlID0gZXhwb3J0cy5BeGlzRXh0ZW50VHlwZSB8fCAoZXhwb3J0cy5BeGlzRXh0ZW50VHlwZSA9IHt9KSk7XG4vLyBFbnVtZXJhdGlvbiBvZiB1bml0cyB0aWNrIHNwYWNpbmcgY2FuIHRha2VcbnZhciBUaWNrU3BhY2luZ1VuaXRzO1xuKGZ1bmN0aW9uIChUaWNrU3BhY2luZ1VuaXRzKSB7XG4gICAgLy8gXG4gICAgVGlja1NwYWNpbmdVbml0c1tcIk5vVW5pdHNcIl0gPSBcIm5vLXVuaXRzXCI7XG4gICAgLy8gXG4gICAgVGlja1NwYWNpbmdVbml0c1tcIlllYXJzXCJdID0gXCJ5ZWFyc1wiO1xuICAgIC8vIFxuICAgIFRpY2tTcGFjaW5nVW5pdHNbXCJRdWFydGVyc1wiXSA9IFwicXVhcnRlcnNcIjtcbiAgICAvLyBcbiAgICBUaWNrU3BhY2luZ1VuaXRzW1wiTW9udGhzXCJdID0gXCJtb250aHNcIjtcbiAgICAvLyBcbiAgICBUaWNrU3BhY2luZ1VuaXRzW1wiV2Vla3NcIl0gPSBcIndlZWtzXCI7XG4gICAgLy8gXG4gICAgVGlja1NwYWNpbmdVbml0c1tcIkRheXNcIl0gPSBcImRheXNcIjtcbiAgICAvLyBcbiAgICBUaWNrU3BhY2luZ1VuaXRzW1wiSG91cnNcIl0gPSBcImhvdXJzXCI7XG4gICAgLy8gXG4gICAgVGlja1NwYWNpbmdVbml0c1tcIk1pbnV0ZXNcIl0gPSBcIm1pbnV0ZXNcIjtcbiAgICAvLyBcbiAgICBUaWNrU3BhY2luZ1VuaXRzW1wiU2Vjb25kc1wiXSA9IFwic2Vjb25kc1wiO1xufSkoVGlja1NwYWNpbmdVbml0cyA9IGV4cG9ydHMuVGlja1NwYWNpbmdVbml0cyB8fCAoZXhwb3J0cy5UaWNrU3BhY2luZ1VuaXRzID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIG9mIHdoZXRoZXIgdG90YWxzIGFyZSBpbmNsdWRlZCBpbiBvciBleGNsdWRlZCBmcm9tIHRoZSBjb2xvciBlbmNvZGluZ1xudmFyIFRvdGFsc0luY2x1c2lvbjtcbihmdW5jdGlvbiAoVG90YWxzSW5jbHVzaW9uKSB7XG4gICAgLy8gVG90YWxzIGluY2x1ZGVkIGluIGNvbG9yIGVuY29kaW5nXG4gICAgVG90YWxzSW5jbHVzaW9uW1wiSW5jbHVkZVRvdGFsc1wiXSA9IFwiaW5jbHVkZS10b3RhbHNcIjtcbiAgICAvLyBUb3RhbHMgZXhjbHVkZWQgZnJvbSBjb2xvciBlbmNvZGluZ1xuICAgIFRvdGFsc0luY2x1c2lvbltcIkV4Y2x1ZGVUb3RhbHNcIl0gPSBcImV4Y2x1ZGUtdG90YWxzXCI7XG59KShUb3RhbHNJbmNsdXNpb24gPSBleHBvcnRzLlRvdGFsc0luY2x1c2lvbiB8fCAoZXhwb3J0cy5Ub3RhbHNJbmNsdXNpb24gPSB7fSkpO1xuLy8gSG93IHRpY2sgbWFya3MgYXJlIGJlaW5nIGNhbGN1bGF0ZWRcbnZhciBUaWNrTWFya1N0YXRlO1xuKGZ1bmN0aW9uIChUaWNrTWFya1N0YXRlKSB7XG4gICAgLy8gXG4gICAgVGlja01hcmtTdGF0ZVtcIlRpY2tzQXV0b21hdGljXCJdID0gXCJ0aWNrcy1hdXRvbWF0aWNcIjtcbiAgICAvLyBcbiAgICBUaWNrTWFya1N0YXRlW1wiVGlja3NNYW51YWxcIl0gPSBcInRpY2tzLW1hbnVhbFwiO1xuICAgIC8vIFxuICAgIFRpY2tNYXJrU3RhdGVbXCJUaWNrc05vbmVcIl0gPSBcInRpY2tzLU5vbmVcIjtcbn0pKFRpY2tNYXJrU3RhdGUgPSBleHBvcnRzLlRpY2tNYXJrU3RhdGUgfHwgKGV4cG9ydHMuVGlja01hcmtTdGF0ZSA9IHt9KSk7XG4vLyBTZXR0aW5nIGZvciB0eXBlIG9mIGF4aXMgcmFuZ2VcbnZhciBBeGlzUmFuZ2VUeXBlO1xuKGZ1bmN0aW9uIChBeGlzUmFuZ2VUeXBlKSB7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkF1dG9tYXRpY1JhbmdlXCJdID0gXCJhdXRvbWF0aWMtcmFuZ2VcIjtcbiAgICAvLyBcbiAgICBBeGlzUmFuZ2VUeXBlW1wiVW5pZm9ybVJhbmdlXCJdID0gXCJ1bmlmb3JtLXJhbmdlXCI7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkluZGVwZW5kZW50UmFuZ2VcIl0gPSBcImluZGVwZW5kZW50LXJhbmdlXCI7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkZpeGVkUmFuZ2VcIl0gPSBcImZpeGVkLXJhbmdlXCI7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkZpeGVkTWluXCJdID0gXCJmaXhlZC1taW5cIjtcbiAgICAvLyBcbiAgICBBeGlzUmFuZ2VUeXBlW1wiRml4ZWRNYXhcIl0gPSBcImZpeGVkLW1heFwiO1xuICAgIC8vIFxuICAgIEF4aXNSYW5nZVR5cGVbXCJGaXhlZE1pblVuaWZvcm1NYXhcIl0gPSBcImZpeGVkLW1pbi11bmlmb3JtLW1heFwiO1xuICAgIC8vIFxuICAgIEF4aXNSYW5nZVR5cGVbXCJGaXhlZE1pbkluZGVwZW5kZW50TWF4XCJdID0gXCJmaXhlZC1taW4taW5kZXBlbmRlbnQtbWF4XCI7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkZpeGVkTWF4VW5pZm9ybU1pblwiXSA9IFwiZml4ZWQtbWF4LXVuaWZvcm0tbWluXCI7XG4gICAgLy8gXG4gICAgQXhpc1JhbmdlVHlwZVtcIkZpeGVkTWF4SW5kZXBlbmRlbnRNaW5cIl0gPSBcImZpeGVkLW1heC1pbmRlcGVuZGVudC1taW5cIjtcbiAgICAvLyBcbiAgICBBeGlzUmFuZ2VUeXBlW1wiRml4ZWRSYW5nZU9yZGluYWxcIl0gPSBcImZpeGVkLXJhbmdlLW9yZGluYWxcIjtcbn0pKEF4aXNSYW5nZVR5cGUgPSBleHBvcnRzLkF4aXNSYW5nZVR5cGUgfHwgKGV4cG9ydHMuQXhpc1JhbmdlVHlwZSA9IHt9KSk7XG4vLyByZXByZXNlbnRzIHR5cGUgb2Ygd2lkZ2V0IG9uIHRoZSB0b29sYmFyIG9mIHJpY2ggdGV4dCBlZGl0b3JcbnZhciBSaWNoVGV4dEVkaXRvcldpZGdldEtleTtcbihmdW5jdGlvbiAoUmljaFRleHRFZGl0b3JXaWRnZXRLZXkpIHtcbiAgICAvLyBcbiAgICBSaWNoVGV4dEVkaXRvcldpZGdldEtleVtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBSaWNoVGV4dEVkaXRvcldpZGdldEtleVtcIkZvbnRTaXplXCJdID0gXCJmb250c2l6ZVwiO1xuICAgIC8vIFxuICAgIFJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5W1wiRm9udE5hbWVcIl0gPSBcImZvbnRuYW1lXCI7XG4gICAgLy8gXG4gICAgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXCJGb250Q29sb3JcIl0gPSBcImNvbG9yXCI7XG4gICAgLy8gXG4gICAgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXCJCb2xkXCJdID0gXCJib2xkXCI7XG4gICAgLy8gXG4gICAgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXCJJdGFsaWNcIl0gPSBcIml0YWxpY1wiO1xuICAgIC8vIFxuICAgIFJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5W1wiVW5kZXJsaW5lXCJdID0gXCJ1bmRlcmxpbmVcIjtcbiAgICAvLyBcbiAgICBSaWNoVGV4dEVkaXRvcldpZGdldEtleVtcIkFsaWduTGVmdFwiXSA9IFwianVzdGlmeWxlZnRcIjtcbiAgICAvLyBcbiAgICBSaWNoVGV4dEVkaXRvcldpZGdldEtleVtcIkFsaWduQ2VudGVyXCJdID0gXCJqdXN0aWZ5Y2VudGVyXCI7XG4gICAgLy8gXG4gICAgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXCJBbGlnblJpZ2h0XCJdID0gXCJqdXN0aWZ5cmlnaHRcIjtcbiAgICAvLyBcbiAgICBSaWNoVGV4dEVkaXRvcldpZGdldEtleVtcIkNsZWFyRm9ybWF0dGluZ1wiXSA9IFwiY2xlYXJmb3JtYXR0aW5nXCI7XG4gICAgLy8gXG4gICAgUmljaFRleHRFZGl0b3JXaWRnZXRLZXlbXCJUYWJsZWF1S2V5d29yZHNcIl0gPSBcInRhYmxlYXVrZXl3b3Jkc1wiO1xufSkoUmljaFRleHRFZGl0b3JXaWRnZXRLZXkgPSBleHBvcnRzLlJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5IHx8IChleHBvcnRzLlJpY2hUZXh0RWRpdG9yV2lkZ2V0S2V5ID0ge30pKTtcbi8vIFxudmFyIENlbGxTaXplQ2hhbmdlO1xuKGZ1bmN0aW9uIChDZWxsU2l6ZUNoYW5nZSkge1xuICAgIC8vIFxuICAgIENlbGxTaXplQ2hhbmdlW1wiQ1NDX1RhbGxlclwiXSA9IFwidGFsbGVyXCI7XG4gICAgLy8gXG4gICAgQ2VsbFNpemVDaGFuZ2VbXCJDU0NfU2hvcnRlclwiXSA9IFwic2hvcnRlclwiO1xuICAgIC8vIFxuICAgIENlbGxTaXplQ2hhbmdlW1wiQ1NDX1dpZGVyXCJdID0gXCJ3aWRlclwiO1xuICAgIC8vIFxuICAgIENlbGxTaXplQ2hhbmdlW1wiQ1NDX05hcnJvd2VyXCJdID0gXCJuYXJyb3dlclwiO1xuICAgIC8vIFxuICAgIENlbGxTaXplQ2hhbmdlW1wiQ1NDX0JpZ2dlclwiXSA9IFwiYmlnZ2VyXCI7XG4gICAgLy8gXG4gICAgQ2VsbFNpemVDaGFuZ2VbXCJDU0NfU21hbGxlclwiXSA9IFwic21hbGxlclwiO1xufSkoQ2VsbFNpemVDaGFuZ2UgPSBleHBvcnRzLkNlbGxTaXplQ2hhbmdlIHx8IChleHBvcnRzLkNlbGxTaXplQ2hhbmdlID0ge30pKTtcbi8vIFxudmFyIENlbGxUeXBlRW51bTtcbihmdW5jdGlvbiAoQ2VsbFR5cGVFbnVtKSB7XG4gICAgLy8gXG4gICAgQ2VsbFR5cGVFbnVtW1wiQ0xUX1NxdWFyZVwiXSA9IFwic3F1YXJlXCI7XG4gICAgLy8gXG4gICAgQ2VsbFR5cGVFbnVtW1wiQ0xUX1RleHRcIl0gPSBcInRleHRcIjtcbn0pKENlbGxUeXBlRW51bSA9IGV4cG9ydHMuQ2VsbFR5cGVFbnVtIHx8IChleHBvcnRzLkNlbGxUeXBlRW51bSA9IHt9KSk7XG4vLyByZXByZXNlbnRzIHR5cGUgb2YgZm9ybWF0dGluZyBwcmVzIG1vZGVsXG52YXIgVHlwZU9mRm9ybWF0SXRlbTtcbihmdW5jdGlvbiAoVHlwZU9mRm9ybWF0SXRlbSkge1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdEl0ZW1bXCJGVF9Gb3JtYXRJdGVtXCJdID0gXCJmb3JtYXRJdGVtXCI7XG4gICAgLy8gXG4gICAgVHlwZU9mRm9ybWF0SXRlbVtcIkZUX0Zvcm1hdENvbnRhaW5lclwiXSA9IFwiZm9ybWF0Q29udGFpbmVyXCI7XG4gICAgLy8gXG4gICAgVHlwZU9mRm9ybWF0SXRlbVtcIkZUX0Zvcm1hdENvbnRyb2xcIl0gPSBcImZvcm1hdENvbnRyb2xcIjtcbn0pKFR5cGVPZkZvcm1hdEl0ZW0gPSBleHBvcnRzLlR5cGVPZkZvcm1hdEl0ZW0gfHwgKGV4cG9ydHMuVHlwZU9mRm9ybWF0SXRlbSA9IHt9KSk7XG4vLyByZXByZXNlbnRzIHR5cGUgb2YgZm9ybWF0dGluZyBjb250YWluZXJcbnZhciBUeXBlT2ZGb3JtYXRDb250YWluZXI7XG4oZnVuY3Rpb24gKFR5cGVPZkZvcm1hdENvbnRhaW5lcikge1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdENvbnRhaW5lcltcIkZUX0Zvcm1hdFBhbmVcIl0gPSBcImZvcm1hdFBhbmVcIjtcbiAgICAvLyBcbiAgICBUeXBlT2ZGb3JtYXRDb250YWluZXJbXCJGVF9Gb3JtYXRTZWN0aW9uXCJdID0gXCJmb3JtYXRTZWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVHlwZU9mRm9ybWF0Q29udGFpbmVyW1wiRlRfQ29sbGFwc2libGVTZWN0aW9uXCJdID0gXCJjb2xsYXBzaWJsZVNlY3Rpb25cIjtcbiAgICAvLyBcbiAgICBUeXBlT2ZGb3JtYXRDb250YWluZXJbXCJGVF9Db21wb3NpdGVDb250YWluZXJcIl0gPSBcImNvbXBvc2l0ZUNvbnRhaW5lclwiO1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdENvbnRhaW5lcltcIkZUX1VuaXRDb250YWluZXJcIl0gPSBcInVuaXRDb250YWluZXJcIjtcbiAgICAvLyBcbiAgICBUeXBlT2ZGb3JtYXRDb250YWluZXJbXCJGVF9UYWJcIl0gPSBcInRhYlwiO1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdENvbnRhaW5lcltcIkZUX1RhYkdyb3VwXCJdID0gXCJ0YWJHcm91cFwiO1xufSkoVHlwZU9mRm9ybWF0Q29udGFpbmVyID0gZXhwb3J0cy5UeXBlT2ZGb3JtYXRDb250YWluZXIgfHwgKGV4cG9ydHMuVHlwZU9mRm9ybWF0Q29udGFpbmVyID0ge30pKTtcbi8vIHJlcHJlc2VudHMgdHlwZSBvZiBmb3JtYXR0aW5nIGNvbnRyb2xcbnZhciBUeXBlT2ZGb3JtYXRDb250cm9sO1xuKGZ1bmN0aW9uIChUeXBlT2ZGb3JtYXRDb250cm9sKSB7XG4gICAgLy8gXG4gICAgVHlwZU9mRm9ybWF0Q29udHJvbFtcIkZUX05vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBUeXBlT2ZGb3JtYXRDb250cm9sW1wiRlRfTnVtZXJpY0NvbnRyb2xcIl0gPSBcIm51bWVyaWMtY29udHJvbFwiO1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdENvbnRyb2xbXCJGVF9UZXh0Q29udHJvbFwiXSA9IFwidGV4dC1jb250cm9sXCI7XG4gICAgLy8gXG4gICAgVHlwZU9mRm9ybWF0Q29udHJvbFtcIkZUX0NvbG9yQ29udHJvbFwiXSA9IFwiY29sb3ItY29udHJvbFwiO1xuICAgIC8vIFxuICAgIFR5cGVPZkZvcm1hdENvbnRyb2xbXCJGVF9TZWxlY3RvckNvbnRyb2xcIl0gPSBcInNlbGVjdG9yLWNvbnRyb2xcIjtcbiAgICAvLyBcbiAgICBUeXBlT2ZGb3JtYXRDb250cm9sW1wiRlRfVG9nZ2xlQ29udHJvbFwiXSA9IFwidG9nZ2xlLWNvbnRyb2xcIjtcbn0pKFR5cGVPZkZvcm1hdENvbnRyb2wgPSBleHBvcnRzLlR5cGVPZkZvcm1hdENvbnRyb2wgfHwgKGV4cG9ydHMuVHlwZU9mRm9ybWF0Q29udHJvbCA9IHt9KSk7XG4vLyByZXByZXNlbnRzIHR5cGUgb2YgZm9ybWF0dGluZyB3aWRnZXRcbnZhciBGb3JtYXRXaWRnZXRLZXk7XG4oZnVuY3Rpb24gKEZvcm1hdFdpZGdldEtleSkge1xuICAgIC8vIFxuICAgIEZvcm1hdFdpZGdldEtleVtcIkZXS19Ob25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0V2lkZ2V0S2V5W1wiRldLX0ZvbnRGYW1pbHlcIl0gPSBcImZvbnRGYW1pbHlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRXaWRnZXRLZXlbXCJGV0tfRm9udFNpemVcIl0gPSBcImZvbnRTaXplXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0V2lkZ2V0S2V5W1wiRldLX0NvbG9yU3dhdGNoXCJdID0gXCJjb2xvclN3YXRjaFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdFdpZGdldEtleVtcIkZXS19Cb2xkXCJdID0gXCJib2xkXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0V2lkZ2V0S2V5W1wiRldLX0l0YWxpY3NcIl0gPSBcIml0YWxpY3NcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRXaWRnZXRLZXlbXCJGV0tfVW5kZXJsaW5lXCJdID0gXCJ1bmRlcmxpbmVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRXaWRnZXRLZXlbXCJGV0tfTGluZVZpc2liaWxpdHlcIl0gPSBcImxpbmVWaXNpYmlsaXR5XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0V2lkZ2V0S2V5W1wiRldLX0xpbmVQYXR0ZXJuXCJdID0gXCJsaW5lUGF0dGVyblwiO1xuICAgIC8vIFxuICAgIEZvcm1hdFdpZGdldEtleVtcIkZXS19MaW5lU2l6ZVwiXSA9IFwibGluZVNpemVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRXaWRnZXRLZXlbXCJGV0tfTnVtYmVyVHlwZVwiXSA9IFwibnVtZXJpY1R5cGVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRXaWRnZXRLZXlbXCJGV0tfRGVjaW1hbFBsYWNlc1wiXSA9IFwiZGVjaW1hbFBsYWNlc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdFdpZGdldEtleVtcIkZXS19UaG91c2FuZHNTZXBhcmF0b3JcIl0gPSBcInRob3VzYW5kc1NlcGFyYXRvclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdFdpZGdldEtleVtcIkZXS19OdW1lcmljVW5pdHNcIl0gPSBcIm51bWVyaWNVbml0c1wiO1xufSkoRm9ybWF0V2lkZ2V0S2V5ID0gZXhwb3J0cy5Gb3JtYXRXaWRnZXRLZXkgfHwgKGV4cG9ydHMuRm9ybWF0V2lkZ2V0S2V5ID0ge30pKTtcbi8vIHJlcHJlc2VudHMgaWRlbnRpZmllciBmb3IgZWFjaCBub2RlIGluIGZvcm1hdCBwYW5lXG52YXIgRm9ybWF0Tm9kZUlkZW50aWZpZXI7XG4oZnVuY3Rpb24gKEZvcm1hdE5vZGVJZGVudGlmaWVyKSB7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTm9uZV9LZXlcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Xb3JrYm9va19LZXlcIl0gPSBcIndvcmtib29rXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udF9LZXlcIl0gPSBcImZvbnRcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Db2xvcl9LZXlcIl0gPSBcImNvbG9yXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZXNfS2V5XCJdID0gXCJsaW5lc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRBbGxfS2V5XCJdID0gXCJmb250LWFsbFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRBbGxDb250cm9sc19LZXlcIl0gPSBcImZvbnQtYWxsLWNvbnRyb2xzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udE1vcmVfS2V5XCJdID0gXCJmb250LW1vcmVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Gb250V29ya3NoZWV0VGl0bGVzX0tleVwiXSA9IFwid29ya3NoZWV0LXRpdGxlc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRUb29sVGlwX0tleVwiXSA9IFwiZm9udC10b29sdGlwXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udFdvcmtzaGVldF9LZXlcIl0gPSBcImZvbnQtd29ya3NoZWV0XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udERhc2hUaXRsZXNfS2V5XCJdID0gXCJkYXNoLXRpdGxlc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRTdG9yeVRpdGxlc19LZXlcIl0gPSBcInN0b3J5LXRpdGxlc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRUaXRsZXNDb250cm9sc19LZXlcIl0gPSBcInRpdGxlcy1jb250cm9sc1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRUb29sdGlwQ29udHJvbHNfS2V5XCJdID0gXCJ0b29sdGlwLWNvbnRyb2xzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udFdvcmtzaGVldENvbnRyb2xzX0tleVwiXSA9IFwid29ya3NoZWV0LWNvbnRyb2xzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZU1vcmVfS2V5XCJdID0gXCJsaW5lLW1vcmVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lR3JpZF9LZXlcIl0gPSBcImxpbmUtZ3JpZFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVHcmlkVGFic19LZXlcIl0gPSBcImxpbmUtZ3JpZC10YWJzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVplcm9fS2V5XCJdID0gXCJsaW5lLXplcm9cIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lWmVyb1RhYnNfS2V5XCJdID0gXCJsaW5lLXplcm8tdGFic1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVBeGlzVGlja19LZXlcIl0gPSBcImxpbmUtYXhpcy10aWNrXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNUaWNrVGFic19LZXlcIl0gPSBcImxpbmUtYXhpcy10aWNrLXRhYnNcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lQXhpc1J1bGVyX0tleVwiXSA9IFwibGluZS1heGlzLXJ1bGVyXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNSdWxlclRhYnNfS2V5XCJdID0gXCJsaW5lLWF4aXMtcnVsZXItdGFic1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyX0tleVwiXSA9IFwibGluZS1oZWFkZXItZGl2aWRlclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVIZWFkZXJEaXZpZGVyVGFic19LZXlcIl0gPSBcImxpbmUtaGVhZGVyLWRpdmlkZXItdGFic1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVQYW5lRGl2aWRlcl9LZXlcIl0gPSBcImxpbmUtcGFuZURpdmlkZXJcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lUGFuZURpdmlkZXJUYWJzX0tleVwiXSA9IFwibGluZS1wYW5lRGl2aWRlci10YWJzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUdyaWRBbGxfS2V5XCJdID0gXCJsaW5lLWdyaWQtYWxsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUdyaWRSb3dfS2V5XCJdID0gXCJsaW5lLWdyaWQtcm93XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUdyaWRDb2x1bW5fS2V5XCJdID0gXCJsaW5lLWdyaWQtY29sdW1uXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVplcm9BbGxfS2V5XCJdID0gXCJsaW5lLXplcm8tYWxsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVplcm9Sb3dfS2V5XCJdID0gXCJsaW5lLXplcm8tcm93XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVplcm9Db2x1bW5fS2V5XCJdID0gXCJsaW5lLXplcm8tY29sdW1uXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNUaWNrQWxsX0tleVwiXSA9IFwibGluZS1heGlzLXRpY2stYWxsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNUaWNrUm93X0tleVwiXSA9IFwibGluZS1heGlzLXRpY2stcm93XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNUaWNrQ29sdW1uX0tleVwiXSA9IFwibGluZS1heGlzLXRpY2stY29sdW1uXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNSdWxlckFsbF9LZXlcIl0gPSBcImxpbmUtYXhpcy1ydWxlci1hbGxcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lQXhpc1J1bGVyUm93X0tleVwiXSA9IFwibGluZS1heGlzLXJ1bGVyLXJvd1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVBeGlzUnVsZXJDb2x1bW5fS2V5XCJdID0gXCJsaW5lLWF4aXMtcnVsZXItY29sdW1uXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVJlZmVyZW5jZV9LZXlcIl0gPSBcImxpbmUtcmVmZXJlbmNlXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZURyb3BfS2V5XCJdID0gXCJsaW5lLWRyb3BcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lVHJlbmRfS2V5XCJdID0gXCJsaW5lLXRyZW5kXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZVZpc2liaWxpdHlfS2V5XCJdID0gXCJsaW5lLXZpc2liaWxpdHlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lUGF0dGVybl9LZXlcIl0gPSBcImxpbmUtcGF0dGVyblwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0xpbmVXaWR0aF9LZXlcIl0gPSBcImxpbmUtd2lkdGhcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lQ29sb3JfS2V5XCJdID0gXCJsaW5lLWNvbG9yXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfVGlja0NvbG9yX0tleVwiXSA9IFwidGljay1jb2xvclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0JvcmRlclBhdHRlcm5fS2V5XCJdID0gXCJib3JkZXItcGF0dGVyblwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0JvcmRlckNvbG9yX0tleVwiXSA9IFwiYm9yZGVyLWNvbG9yXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRGl2aWRlckNvbG9yX0tleVwiXSA9IFwiZGl2aWRlci1jb2xvclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X0ZvbnRGYW1pbHlfS2V5XCJdID0gXCJmb250LWZhbWlseS1rZXlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Gb250U2l6ZV9LZXlcIl0gPSBcImZvbnQtc2l6ZS1rZXlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Cb2xkX0tleVwiXSA9IFwiYm9sZC1rZXlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9JdGFsaWNzX0tleVwiXSA9IFwiaXRhbGljcy1rZXlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9VbmRlcmxpbmVfS2V5XCJdID0gXCJ1bmRlcmxpbmUta2V5XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfRm9udENvbG9yX0tleVwiXSA9IFwiZm9udC1jb2xvci1rZXlcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9OdW1iZXJfQ29udGFpbmVyX0tleVwiXSA9IFwibnVtYmVyLWNvbnRhaW5lclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X051bWJlcl9UeXBlX0tleVwiXSA9IFwibnVtYmVyLWNvbnRhaW5lci10eXBlXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTnVtYmVyX1VuaXRzX0tleVwiXSA9IFwibnVtYmVyLWNvbnRhaW5lci11bml0c1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdE5vZGVJZGVudGlmaWVyW1wiRm9ybWF0X051bWJlcl9EZWNpbWFsX0tleVwiXSA9IFwibnVtYmVyLWNvbnRhaW5lci1kZWNpbWFsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTnVtYmVyX1Rob3VzYW5kc19TZXBhcmF0b3JfS2V5XCJdID0gXCJudW1iZXItY29udGFpbmVyLXRob3VzYW5kcy1zZXBhcmF0b3JcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Gb250UGlja2VyTWluaW1hbF9LZXlcIl0gPSBcImZvbnQtcGlja2VyLW1pbmltYWxcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9Gb250UGlja2VyRGVmYXVsdF9LZXlcIl0gPSBcImZvbnQtcGlja2VyLWRlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lUGlja2VyRGVmYXVsdF9LZXlcIl0gPSBcImxpbmUtcGlja2VyLWRlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBGb3JtYXROb2RlSWRlbnRpZmllcltcIkZvcm1hdF9MaW5lUGlja2VyTm9WaXNfS2V5XCJdID0gXCJsaW5lLXBpY2tlci1uby12aXNpYmlsaXR5XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Tm9kZUlkZW50aWZpZXJbXCJGb3JtYXRfTGluZUF4aXNUaWNrUGlja2VyX0tleVwiXSA9IFwibGluZS1heGlzLXRpY2stcGlja2VyXCI7XG59KShGb3JtYXROb2RlSWRlbnRpZmllciA9IGV4cG9ydHMuRm9ybWF0Tm9kZUlkZW50aWZpZXIgfHwgKGV4cG9ydHMuRm9ybWF0Tm9kZUlkZW50aWZpZXIgPSB7fSkpO1xuLy8gRm9ybWF0IHByZXBlbmRlZCB0byBmb3JtYXQgc3RyaW5ncyB0byBzcGVjaWZ5IHR5cGVcbnZhciBGb3JtYXRDb2RlO1xuKGZ1bmN0aW9uIChGb3JtYXRDb2RlKSB7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIkF1dG9Gb3JtYXRcIl0gPSBcImF1dG8tZm9ybWF0XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIlN5c3RlbUxvbmdEYXRlXCJdID0gXCJzeXN0ZW0tbG9uZy1kYXRlXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIlN5c3RlbVNob3J0RGF0ZVwiXSA9IFwic3lzdGVtLXNob3J0LWRhdGVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb2RlW1wiU3lzdGVtTnVtYmVyXCJdID0gXCJzeXN0ZW0tbnVtYmVyXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIlN5c3RlbUN1cnJlbmN5XCJdID0gXCJzeXN0ZW0tY3VycmVuY3lcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb2RlW1wiU3lzdGVtVGltZVwiXSA9IFwic3lzdGVtLXRpbWVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb2RlW1wiQ3VzdG9tXCJdID0gXCJjdXN0b21cIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb2RlW1wiQ3VzdG9tSUNVXCJdID0gXCJjdXN0b20taWN1XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIkN1c3RvbU51bWJlclwiXSA9IFwiY3VzdG9tLW51bWJlclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvZGVbXCJDdXN0b21DdXJyZW5jeVwiXSA9IFwiY3VzdG9tLWN1cnJlbmN5XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIkN1c3RvbVNjaWVudGlmaWNcIl0gPSBcImN1c3RvbS1zY2llbnRpZmljXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29kZVtcIkN1c3RvbVBlcmNlbnRhZ2VcIl0gPSBcImN1c3RvbS1wZXJjZW50YWdlXCI7XG59KShGb3JtYXRDb2RlID0gZXhwb3J0cy5Gb3JtYXRDb2RlIHx8IChleHBvcnRzLkZvcm1hdENvZGUgPSB7fSkpO1xuLy8gVW5pdHMgc3BlY2lmaWVkIGluIGEgZm9ybWF0IHN0cmluZ1xudmFyIFVuaXRzRm9ybWF0RW51bTtcbihmdW5jdGlvbiAoVW5pdHNGb3JtYXRFbnVtKSB7XG4gICAgLy8gXG4gICAgVW5pdHNGb3JtYXRFbnVtW1wiVW5pdHNGbXROb25lXCJdID0gXCJ1bml0cy1ub25lXCI7XG4gICAgLy8gXG4gICAgVW5pdHNGb3JtYXRFbnVtW1wiVW5pdHNGbXRUaG91c2FuZHNcIl0gPSBcInVuaXRzLXRob3VzYW5kc1wiO1xuICAgIC8vIFxuICAgIFVuaXRzRm9ybWF0RW51bVtcIlVuaXRzRm10TWlsbGlvbnNcIl0gPSBcInVuaXRzLW1pbGxpb25zXCI7XG4gICAgLy8gXG4gICAgVW5pdHNGb3JtYXRFbnVtW1wiVW5pdHNGbXRCaWxsaW9uc0VuZ2xpc2hcIl0gPSBcInVuaXRzLWJpbGxpb25zLWVuZ2xpc2hcIjtcbiAgICAvLyBcbiAgICBVbml0c0Zvcm1hdEVudW1bXCJVbml0c0ZtdEJpbGxpb25zU3RhbmRhcmRcIl0gPSBcInVuaXRzLWJpbGxpb25zLXN0YW5kYXJkXCI7XG59KShVbml0c0Zvcm1hdEVudW0gPSBleHBvcnRzLlVuaXRzRm9ybWF0RW51bSB8fCAoZXhwb3J0cy5Vbml0c0Zvcm1hdEVudW0gPSB7fSkpO1xuLy8gcmVwcmVzZW50cyB0aGUgY29sb3Igc3dhdGNoIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSBDb2xvckNvbnRyb2xQcmVzTW9kZWxcbnZhciBDb2xvclN3YXRjaFR5cGU7XG4oZnVuY3Rpb24gKENvbG9yU3dhdGNoVHlwZSkge1xuICAgIC8vIFxuICAgIENvbG9yU3dhdGNoVHlwZVtcIkNTVF9EYXJrXCJdID0gXCJkYXJrLXN3YXRjaFwiO1xuICAgIC8vIFxuICAgIENvbG9yU3dhdGNoVHlwZVtcIkNTVF9MaWdodFwiXSA9IFwibGlnaHQtc3dhdGNoXCI7XG59KShDb2xvclN3YXRjaFR5cGUgPSBleHBvcnRzLkNvbG9yU3dhdGNoVHlwZSB8fCAoZXhwb3J0cy5Db2xvclN3YXRjaFR5cGUgPSB7fSkpO1xuLy8gcmVwcmVzZW50cyB0aGUgdHlwZSBvZiBhIHN0eWxlIHBpY2tlciwgYWZmZWN0aW5nIHRoZSBwcmV2aWV3IHJlbmRlcmluZyBhbmQsIHBvc3NpYmx5LCB0aGUgbGF5b3V0XG52YXIgUGlja2VyVHlwZTtcbihmdW5jdGlvbiAoUGlja2VyVHlwZSkge1xuICAgIC8vIFxuICAgIFBpY2tlclR5cGVbXCJQVF9Ob25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgUGlja2VyVHlwZVtcIlBUX0ZvbnRcIl0gPSBcImZvbnRcIjtcbiAgICAvLyBcbiAgICBQaWNrZXJUeXBlW1wiUFRfTGluZVwiXSA9IFwibGluZVwiO1xuICAgIC8vIFxuICAgIFBpY2tlclR5cGVbXCJQVF9OdW1iZXJcIl0gPSBcIm51bWJlclwiO1xufSkoUGlja2VyVHlwZSA9IGV4cG9ydHMuUGlja2VyVHlwZSB8fCAoZXhwb3J0cy5QaWNrZXJUeXBlID0ge30pKTtcbi8vIFxudmFyIFVwZGF0ZVNjb3BlO1xuKGZ1bmN0aW9uIChVcGRhdGVTY29wZSkge1xuICAgIC8vIFxuICAgIFVwZGF0ZVNjb3BlW1wiVVNfV29ya3NoZWV0XCJdID0gXCJ3b3Jrc2hlZXRcIjtcbiAgICAvLyBcbiAgICBVcGRhdGVTY29wZVtcIlVTX0Rhc2hib2FyZFwiXSA9IFwiZGFzaGJvYXJkXCI7XG4gICAgLy8gXG4gICAgVXBkYXRlU2NvcGVbXCJVU19RdWlja0ZpbHRlcnNcIl0gPSBcInF1aWNrLWZpbHRlcnNcIjtcbiAgICAvLyBcbiAgICBVcGRhdGVTY29wZVtcIlVTX1N0b3J5XCJdID0gXCJzdG9yeVwiO1xufSkoVXBkYXRlU2NvcGUgPSBleHBvcnRzLlVwZGF0ZVNjb3BlIHx8IChleHBvcnRzLlVwZGF0ZVNjb3BlID0ge30pKTtcbi8vIFxudmFyIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlO1xuKGZ1bmN0aW9uIChQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5TW9kZSkge1xuICAgIC8vIFxuICAgIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlW1wiTU9ERV9UWVBFX0lOXCJdID0gXCJ0eXBlX2luXCI7XG4gICAgLy8gXG4gICAgUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheU1vZGVbXCJNT0RFX0NPTVBBQ1RfTElTVFwiXSA9IFwiY29tcGFjdFwiO1xuICAgIC8vIFxuICAgIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlW1wiTU9ERV9MSVNUXCJdID0gXCJsaXN0XCI7XG4gICAgLy8gXG4gICAgUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheU1vZGVbXCJNT0RFX1NMSURFUlwiXSA9IFwic2xpZGVyXCI7XG4gICAgLy8gXG4gICAgUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheU1vZGVbXCJNT0RFX0RBVEVUSU1FXCJdID0gXCJkYXRldGltZVwiO1xufSkoUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheU1vZGUgPSBleHBvcnRzLlBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlIHx8IChleHBvcnRzLlBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlNb2RlID0ge30pKTtcbi8vIGZsYWdzIGZvciBkaXNwbGF5IG9wdGlvbnNcbnZhciBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZztcbihmdW5jdGlvbiAoUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheUZsYWcpIHtcbiAgICAvLyBcbiAgICBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZ1tcIkRJU1BMQVlfQ1VTVE9NX1RJVExFXCJdID0gXCJjdXN0b21fdGl0bGVcIjtcbiAgICAvLyBcbiAgICBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZ1tcIkRJU1BMQVlfSElERV9TTElERVJfU0xJREVSXCJdID0gXCJoaWRlX3NsaWRlcl9zbGlkZXJcIjtcbiAgICAvLyBcbiAgICBQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZ1tcIkRJU1BMQVlfSElERV9TTElERVJfUkVBRE9VVFwiXSA9IFwiaGlkZV9zbGlkZXJfcmVhZG91dFwiO1xuICAgIC8vIFxuICAgIFBhcmFtZXRlckN0cmxUeXBlc0Rpc3BsYXlGbGFnW1wiRElTUExBWV9ISURFX1NMSURFUl9CVVRUT05TXCJdID0gXCJoaWRlX3NsaWRlcl9idXR0b25zXCI7XG59KShQYXJhbWV0ZXJDdHJsVHlwZXNEaXNwbGF5RmxhZyA9IGV4cG9ydHMuUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheUZsYWcgfHwgKGV4cG9ydHMuUGFyYW1ldGVyQ3RybFR5cGVzRGlzcGxheUZsYWcgPSB7fSkpO1xuLy8gVGhlIGZvbGxvdyBzdXBwb3J0cyAxMDI0IGN1c3RvbSBwYWxldHRlcywgZWFjaCB3aXRoIDRtIHNoYXBlcy4gRW5jb2RpbmcgaXMgcGFsZXR0ZSAmbHQ7Jmx0OyBQYWxldHRlU2hpZnQgfCBzaGFwZS5cbnZhciBTaGFwZUVuY29kZUNvbnN0YW50cztcbihmdW5jdGlvbiAoU2hhcGVFbmNvZGVDb25zdGFudHMpIHtcbiAgICAvLyBTaGlmdCB2YWx1ZSBmb3IgcGFsZXR0ZVxuICAgIFNoYXBlRW5jb2RlQ29uc3RhbnRzW1wiRW5jb2RlUGFsZXR0ZVNoaWZ0XCJdID0gXCJwYWxldHRlU2hpZnRcIjtcbiAgICAvLyBNYXNrIGZvciBnZXR0aW5nIHBhbGV0dGUgZnJvbSBlbmNvZGVkIHZhbHVlLiAoVGhlbiBzaGlmdCBkb3duKVxuICAgIFNoYXBlRW5jb2RlQ29uc3RhbnRzW1wiRW5jb2RlUGFsZXR0ZU1hc2tcIl0gPSBcInBhbGV0dGVNYXNrXCI7XG4gICAgLy8gTWFzayBmb3IgZ2V0dGluZyBzaGFwZSBmcm9tIGVuY29kZWQgdmFsdWVcbiAgICBTaGFwZUVuY29kZUNvbnN0YW50c1tcIkVuY29kZVNoYXBlTWFza1wiXSA9IFwic2hhcGVNYXNrXCI7XG59KShTaGFwZUVuY29kZUNvbnN0YW50cyA9IGV4cG9ydHMuU2hhcGVFbmNvZGVDb25zdGFudHMgfHwgKGV4cG9ydHMuU2hhcGVFbmNvZGVDb25zdGFudHMgPSB7fSkpO1xuLy8gXG52YXIgU2hhcGVUeXBlO1xuKGZ1bmN0aW9uIChTaGFwZVR5cGUpIHtcbiAgICAvLyBcbiAgICBTaGFwZVR5cGVbXCJTaGFwZUNpcmNsZVwiXSA9IFwiY2lyY2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVUeXBlW1wiU2hhcGVTcXVhcmVcIl0gPSBcInNxdWFyZVwiO1xuICAgIC8vIFxuICAgIFNoYXBlVHlwZVtcIlNoYXBlUGx1c1wiXSA9IFwicGx1c1wiO1xuICAgIC8vIFxuICAgIFNoYXBlVHlwZVtcIlNoYXBlVGltZXNcIl0gPSBcInRpbWVzXCI7XG4gICAgLy8gXG4gICAgU2hhcGVUeXBlW1wiU2hhcGVBc3Rlcmlza1wiXSA9IFwiYXN0ZXJpc2tcIjtcbiAgICAvLyBcbiAgICBTaGFwZVR5cGVbXCJTaGFwZURpYW1vbmRcIl0gPSBcImRpYW1vbmRcIjtcbiAgICAvLyBcbiAgICBTaGFwZVR5cGVbXCJTaGFwZVRyaWFuZ2xlXCJdID0gXCJ0cmlhbmdsZVwiO1xuICAgIC8vIFxuICAgIFNoYXBlVHlwZVtcIlNoYXBlRG93blRyaWFuZ2xlXCJdID0gXCJkb3duLXRyaWFuZ2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVUeXBlW1wiU2hhcGVMZWZ0VHJpYW5nbGVcIl0gPSBcImxlZnQtdHJpYW5nbGVcIjtcbiAgICAvLyBcbiAgICBTaGFwZVR5cGVbXCJTaGFwZVJpZ2h0VHJpYW5nbGVcIl0gPSBcInJpZ2h0LXRyaWFuZ2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVUeXBlW1wiTWF4QWxsU2hhcGVzXCJdID0gXCJpbnZhbGlkXCI7XG59KShTaGFwZVR5cGUgPSBleHBvcnRzLlNoYXBlVHlwZSB8fCAoZXhwb3J0cy5TaGFwZVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2hhcGVQYWxldHRlO1xuKGZ1bmN0aW9uIChTaGFwZVBhbGV0dGUpIHtcbiAgICAvLyBidWlsdC1pbiBwYWxldHRlXG4gICAgU2hhcGVQYWxldHRlW1wiU2hhcGVQYWxldHRlRmlsbGVkXCJdID0gXCJmaWxsZWRcIjtcbiAgICAvLyBjdXN0b20gcGFsZXR0ZXNcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b20xXCJdID0gXCJjdXN0b20xXCI7XG4gICAgLy8gXG4gICAgU2hhcGVQYWxldHRlW1wiU2hhcGVQYWxldHRlQ3VzdG9tMlwiXSA9IFwiY3VzdG9tMlwiO1xuICAgIC8vIFxuICAgIFNoYXBlUGFsZXR0ZVtcIlNoYXBlUGFsZXR0ZUN1c3RvbTNcIl0gPSBcImN1c3RvbTNcIjtcbiAgICAvLyBcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b200XCJdID0gXCJjdXN0b200XCI7XG4gICAgLy8gXG4gICAgU2hhcGVQYWxldHRlW1wiU2hhcGVQYWxldHRlQ3VzdG9tNVwiXSA9IFwiY3VzdG9tNVwiO1xuICAgIC8vIFxuICAgIFNoYXBlUGFsZXR0ZVtcIlNoYXBlUGFsZXR0ZUN1c3RvbTZcIl0gPSBcImN1c3RvbTZcIjtcbiAgICAvLyBcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b203XCJdID0gXCJjdXN0b203XCI7XG4gICAgLy8gXG4gICAgU2hhcGVQYWxldHRlW1wiU2hhcGVQYWxldHRlQ3VzdG9tOFwiXSA9IFwiY3VzdG9tOFwiO1xuICAgIC8vIFxuICAgIFNoYXBlUGFsZXR0ZVtcIlNoYXBlUGFsZXR0ZUN1c3RvbTlcIl0gPSBcImN1c3RvbTlcIjtcbiAgICAvLyBcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b20xMFwiXSA9IFwiY3VzdG9tMTBcIjtcbiAgICAvLyBcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b20xMVwiXSA9IFwiY3VzdG9tMTFcIjtcbiAgICAvLyBhbmQgc28gb24uLi5cbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVDdXN0b20xMlwiXSA9IFwiY3VzdG9tMTJcIjtcbiAgICAvLyBcbiAgICBTaGFwZVBhbGV0dGVbXCJTaGFwZVBhbGV0dGVIaWRkZW5cIl0gPSBcImhpZGRlblwiO1xufSkoU2hhcGVQYWxldHRlID0gZXhwb3J0cy5TaGFwZVBhbGV0dGUgfHwgKGV4cG9ydHMuU2hhcGVQYWxldHRlID0ge30pKTtcbi8vIFNoYXBlVHlwZSBhbmQgcGFsZXR0ZSBtYXBwZWQgaW50byBhIHNpbmdsZSB2YWx1ZS4gVGhpcyBlbnVtIGRlcGVuZHMgb24gU2hhcGVUeXBlIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgU2hhcGVNYW5hZ2VyOjpJbnRFbmNvZGUuXG52YXIgU2hhcGVJRDtcbihmdW5jdGlvbiAoU2hhcGVJRCkge1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlEQ2lyY2xlXCJdID0gXCJzaGFwZUlEQ2lyY2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURTcXVhcmVcIl0gPSBcInNoYXBlSURTcXVhcmVcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJRFBsdXNcIl0gPSBcInNoYXBlSURQbHVzXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURUaW1lc1wiXSA9IFwic2hhcGVJRFRpbWVzXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURBc3Rlcmlza1wiXSA9IFwic2hhcGVJREFzdGVyaXNrXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSUREaWFtb25kXCJdID0gXCJzaGFwZUlERGlhbW9uZFwiO1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlEVHJpYW5nbGVcIl0gPSBcInNoYXBlSURUcmlhbmdsZVwiO1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlERG93blRyaWFuZ2xlXCJdID0gXCJzaGFwZUlERG93blRyaWFuZ2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURMZWZ0VHJpYW5nbGVcIl0gPSBcInNoYXBlSURMZWZ0VHJpYW5nbGVcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJRFJpZ2h0VHJpYW5nbGVcIl0gPSBcInNoYXBlSURSaWdodFRyaWFuZ2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURGaWxsZWRDaXJjbGVcIl0gPSBcInNoYXBlSURGaWxsZWRDaXJjbGVcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJREZpbGxlZFNxdWFyZVwiXSA9IFwic2hhcGVJREZpbGxlZFNxdWFyZVwiO1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlERmlsbGVkUGx1c1wiXSA9IFwic2hhcGVJREZpbGxlZFBsdXNcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJREZpbGxlZFRpbWVzXCJdID0gXCJzaGFwZUlERmlsbGVkVGltZXNcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJREZpbGxlZFN0YXJcIl0gPSBcInNoYXBlSURGaWxsZWRTdGFyXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURGaWxsZWREaWFtb25kXCJdID0gXCJzaGFwZUlERmlsbGVkRGlhbW9uZFwiO1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlERmlsbGVkVHJpYW5nbGVcIl0gPSBcInNoYXBlSURGaWxsZWRUcmlhbmdsZVwiO1xuICAgIC8vIFxuICAgIFNoYXBlSURbXCJTaGFwZUlERmlsbGVkRG93blRyaWFuZ2xlXCJdID0gXCJzaGFwZUlERmlsbGVkRG93blRyaWFuZ2xlXCI7XG4gICAgLy8gXG4gICAgU2hhcGVJRFtcIlNoYXBlSURGaWxsZWRMZWZ0VHJpYW5nbGVcIl0gPSBcInNoYXBlSURGaWxsZWRMZWZ0VHJpYW5nbGVcIjtcbiAgICAvLyBcbiAgICBTaGFwZUlEW1wiU2hhcGVJREZpbGxlZFJpZ2h0VHJpYW5nbGVcIl0gPSBcInNoYXBlSURGaWxsZWRSaWdodFRyaWFuZ2xlXCI7XG4gICAgLy8gMCsoU2hhcGVQYWxldHRlSGlkZGVuPDxFbmNvZGVQYWxldHRlU2hpZnQpXG4gICAgU2hhcGVJRFtcIlNoYXBlSURVbnNjYWxlZEZpbGxlZENpcmNsZVwiXSA9IFwic2hhcGVJRFVuc2NhbGVkRmlsbGVkQ2lyY2xlXCI7XG59KShTaGFwZUlEID0gZXhwb3J0cy5TaGFwZUlEIHx8IChleHBvcnRzLlNoYXBlSUQgPSB7fSkpO1xuLy8gXG52YXIgTGVnZW5kVHlwZUVudW07XG4oZnVuY3Rpb24gKExlZ2VuZFR5cGVFbnVtKSB7XG4gICAgLy8gXG4gICAgTGVnZW5kVHlwZUVudW1bXCJDb2xvclwiXSA9IFwiY29sb3JcIjtcbiAgICAvLyBcbiAgICBMZWdlbmRUeXBlRW51bVtcIlNoYXBlXCJdID0gXCJzaGFwZVwiO1xuICAgIC8vIFxuICAgIExlZ2VuZFR5cGVFbnVtW1wiU2l6ZVwiXSA9IFwic2l6ZVwiO1xuICAgIC8vIFxuICAgIExlZ2VuZFR5cGVFbnVtW1wiSGlnaGxpZ2h0TGVnZW5kXCJdID0gXCJoaWdobGlnaHRcIjtcbiAgICAvLyBcbiAgICBMZWdlbmRUeXBlRW51bVtcIk1hcFwiXSA9IFwibWFwXCI7XG59KShMZWdlbmRUeXBlRW51bSA9IGV4cG9ydHMuTGVnZW5kVHlwZUVudW0gfHwgKGV4cG9ydHMuTGVnZW5kVHlwZUVudW0gPSB7fSkpO1xuLy8gXG52YXIgQnJ1c2hTcGVjaWFsRmllbGRzO1xuKGZ1bmN0aW9uIChCcnVzaFNwZWNpYWxGaWVsZHMpIHtcbiAgICAvLyBcbiAgICBCcnVzaFNwZWNpYWxGaWVsZHNbXCJCU0ZfSW52YWxpZFwiXSA9IFwiaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIEJydXNoU3BlY2lhbEZpZWxkc1tcIkJTRl9BbGxGaWVsZHNcIl0gPSBcImFsbFwiO1xuICAgIC8vIFxuICAgIEJydXNoU3BlY2lhbEZpZWxkc1tcIkJTRl9EYXRlc0FuZFRpbWVzXCJdID0gXCJkYXRlLXRpbWVcIjtcbiAgICAvLyBcbiAgICBCcnVzaFNwZWNpYWxGaWVsZHNbXCJCU0ZfVHJhaWxzXCJdID0gXCJ0cmFpbHNcIjtcbiAgICAvLyBcbiAgICBCcnVzaFNwZWNpYWxGaWVsZHNbXCJCU0ZfRW50aXJlVGFibGVcIl0gPSBcInRhYmxlXCI7XG59KShCcnVzaFNwZWNpYWxGaWVsZHMgPSBleHBvcnRzLkJydXNoU3BlY2lhbEZpZWxkcyB8fCAoZXhwb3J0cy5CcnVzaFNwZWNpYWxGaWVsZHMgPSB7fSkpO1xuLy8gd2hhdCBraW5kIG9mIGN1cnZlIHdpbGwgYmUgZml0IHRvIHRoZSBkYXRhIGdpdmVuIHJlc3BvbnNlIHZhcmlhYmxlIFkgYW5kIGEgc2luZ2xlIHF1YW50aXRhdGl2ZSBmYWN0b3IgWFxudmFyIFRyZW5kTGluZUZpdFR5cGU7XG4oZnVuY3Rpb24gKFRyZW5kTGluZUZpdFR5cGUpIHtcbiAgICAvLyBlcXVhdGlvbiA9IFkgfiBYICsgMVxuICAgIFRyZW5kTGluZUZpdFR5cGVbXCJUcmVuZExpbmVGaXRUeXBlX19MaW5lYXJGaXRcIl0gPSBcImxpbmVhclwiO1xuICAgIC8vIGVxdWF0aW9uID0gWSB+IFheMiArIFggKyAxXG4gICAgVHJlbmRMaW5lRml0VHlwZVtcIlRyZW5kTGluZUZpdFR5cGVfX1BvbHlub21pYWxGaXRcIl0gPSBcInBvbHlub21pYWxcIjtcbiAgICAvLyBlcXVhdGlvbiA9IFkgfiBsb2coWClcbiAgICBUcmVuZExpbmVGaXRUeXBlW1wiVHJlbmRMaW5lRml0VHlwZV9fTG9nRml0XCJdID0gXCJsb2dcIjtcbiAgICAvLyBlcXVhdGlvbiA9IFkgfiBleHAoWClcbiAgICBUcmVuZExpbmVGaXRUeXBlW1wiVHJlbmRMaW5lRml0VHlwZV9fRXhwRml0XCJdID0gXCJleHBcIjtcbiAgICAvLyBlcXVhdGlvbiA9IFkgfiBYXmJcbiAgICBUcmVuZExpbmVGaXRUeXBlW1wiVHJlbmRMaW5lRml0VHlwZV9fUG93ZXJGaXRcIl0gPSBcInBvd2VyXCI7XG59KShUcmVuZExpbmVGaXRUeXBlID0gZXhwb3J0cy5UcmVuZExpbmVGaXRUeXBlIHx8IChleHBvcnRzLlRyZW5kTGluZUZpdFR5cGUgPSB7fSkpO1xuLy8gdHlwZSBmb3IgY29tcG9uZW50cyBvZiBhIGNvbW1hbmQgcHJlc2VudGF0aW9uIG1vZGVsXG52YXIgQ29tbWFuZHNFbnVtSXRlbVR5cGU7XG4oZnVuY3Rpb24gKENvbW1hbmRzRW51bUl0ZW1UeXBlKSB7XG4gICAgLy8gaXRlbSB3aXRoIHRleHQgYW5kIGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICAgIENvbW1hbmRzRW51bUl0ZW1UeXBlW1wiSXRlbVwiXSA9IFwiaXRlbVwiO1xuICAgIC8vIGR5bmFtaWMgcmFuZ2Ugb2YgaXRlbXMgZ2VuZXJhdGVkIGJ5IGFuIGFzc29jaWF0ZWQgY29tbWFuZFxuICAgIENvbW1hbmRzRW51bUl0ZW1UeXBlW1wiSXRlbVJhbmdlXCJdID0gXCJyYW5nZVwiO1xuICAgIC8vIGxpc3Qgb2Ygc3ViY29tbWFuZHNcbiAgICBDb21tYW5kc0VudW1JdGVtVHlwZVtcIlN1YkNvbW1hbmRzSXRlbVwiXSA9IFwic3ViY29tbWFuZHNcIjtcbiAgICAvLyBsb2dpY2FsIHNlcGFyYXRpb24gYmV0d2VlbiBncm91cHMgb2YgY29tbWFuZHNcbiAgICBDb21tYW5kc0VudW1JdGVtVHlwZVtcIlNlcGFyYXRvckl0ZW1cIl0gPSBcInNlcGFyYXRvclwiO1xufSkoQ29tbWFuZHNFbnVtSXRlbVR5cGUgPSBleHBvcnRzLkNvbW1hbmRzRW51bUl0ZW1UeXBlIHx8IChleHBvcnRzLkNvbW1hbmRzRW51bUl0ZW1UeXBlID0ge30pKTtcbi8vIFxudmFyIFBhcmFtZXRlclR5cGVzRG9tYWluVHlwZTtcbihmdW5jdGlvbiAoUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlKSB7XG4gICAgLy8gXG4gICAgUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlW1wiRG9tYWluX0FueVwiXSA9IFwiYW55XCI7XG4gICAgLy8gXG4gICAgUGFyYW1ldGVyVHlwZXNEb21haW5UeXBlW1wiRG9tYWluX0xpc3RcIl0gPSBcImxpc3RcIjtcbiAgICAvLyBcbiAgICBQYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGVbXCJEb21haW5fUmFuZ2VcIl0gPSBcInJhbmdlXCI7XG59KShQYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUgPSBleHBvcnRzLlBhcmFtZXRlclR5cGVzRG9tYWluVHlwZSB8fCAoZXhwb3J0cy5QYXJhbWV0ZXJUeXBlc0RvbWFpblR5cGUgPSB7fSkpO1xuLy8gQ2F0ZWdvcmljYWwgZmlsdGVyIHR5cGUgdXNhZ2UuXG52YXIgRmlsdGVyc0NhdGVnb3JpY2FsRmlsdGVyVHlwZTtcbihmdW5jdGlvbiAoRmlsdGVyc0NhdGVnb3JpY2FsRmlsdGVyVHlwZSkge1xuICAgIC8vIFxuICAgIEZpbHRlcnNDYXRlZ29yaWNhbEZpbHRlclR5cGVbXCJWaXN1YWxcIl0gPSBcInZpc3VhbFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNDYXRlZ29yaWNhbEZpbHRlclR5cGVbXCJFeHRyYWN0XCJdID0gXCJleHRyYWN0XCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc0NhdGVnb3JpY2FsRmlsdGVyVHlwZVtcIkdyb3VwXCJdID0gXCJncm91cFwiO1xufSkoRmlsdGVyc0NhdGVnb3JpY2FsRmlsdGVyVHlwZSA9IGV4cG9ydHMuRmlsdGVyc0NhdGVnb3JpY2FsRmlsdGVyVHlwZSB8fCAoZXhwb3J0cy5GaWx0ZXJzQ2F0ZWdvcmljYWxGaWx0ZXJUeXBlID0ge30pKTtcbi8vIEZpbHRlciBjb250ZXh0IGRvbWFpbnNcbnZhciBGaWx0ZXJzRG9tYWluVHlwZTtcbihmdW5jdGlvbiAoRmlsdGVyc0RvbWFpblR5cGUpIHtcbiAgICAvLyBcbiAgICBGaWx0ZXJzRG9tYWluVHlwZVtcIlJlbGV2YW50XCJdID0gXCJyZWxldmFudFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNEb21haW5UeXBlW1wiQ2FzY2FkaW5nXCJdID0gXCJjYXNjYWRpbmdcIjtcbiAgICAvLyBcbiAgICBGaWx0ZXJzRG9tYWluVHlwZVtcIkNhc2NhZGluZ0NvbnRleHRcIl0gPSBcImNhc2NhZGluZy1jb250ZXh0XCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc0RvbWFpblR5cGVbXCJDb250ZXh0XCJdID0gXCJjb250ZXh0XCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc0RvbWFpblR5cGVbXCJEYXRhYmFzZVwiXSA9IFwiYWxsXCI7XG59KShGaWx0ZXJzRG9tYWluVHlwZSA9IGV4cG9ydHMuRmlsdGVyc0RvbWFpblR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyc0RvbWFpblR5cGUgPSB7fSkpO1xuLy8gU2VsZWN0aW9uIChyZWxhdGlvbmFsIG9ubHkpIC0gUmFuZ2UgdHlwZVxudmFyIEZpbHRlcnNSYW5nZVR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNSYW5nZVR5cGUpIHtcbiAgICAvLyBcbiAgICBGaWx0ZXJzUmFuZ2VUeXBlW1wiQWxsXCJdID0gXCJhbGxcIjtcbiAgICAvLyBcbiAgICBGaWx0ZXJzUmFuZ2VUeXBlW1wiU2VsZWN0ZWRcIl0gPSBcInNlbGVjdGVkXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc1JhbmdlVHlwZVtcIk1hbnVhbFwiXSA9IFwibWFudWFsXCI7XG59KShGaWx0ZXJzUmFuZ2VUeXBlID0gZXhwb3J0cy5GaWx0ZXJzUmFuZ2VUeXBlIHx8IChleHBvcnRzLkZpbHRlcnNSYW5nZVR5cGUgPSB7fSkpO1xuLy8gUGF0dGVybiBiYXNlZCBmaWx0ZXJpbmdcbnZhciBGaWx0ZXJzUGF0dGVyblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNQYXR0ZXJuVHlwZSkge1xuICAgIC8vIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0dGVybiB0ZXh0XG4gICAgRmlsdGVyc1BhdHRlcm5UeXBlW1wiU3RhcnRzV2l0aFwiXSA9IFwic3RhcnRzLXdpdGhcIjtcbiAgICAvLyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBwYXR0ZXJuIHRleHRcbiAgICBGaWx0ZXJzUGF0dGVyblR5cGVbXCJFbmRzV2l0aFwiXSA9IFwiZW5kcy13aXRoXCI7XG4gICAgLy8gY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuIHRleHRcbiAgICBGaWx0ZXJzUGF0dGVyblR5cGVbXCJDb250YWluc1wiXSA9IFwiY29udGFpbnNcIjtcbiAgICAvLyBleGFjdGx5IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuIHRleHRcbiAgICBGaWx0ZXJzUGF0dGVyblR5cGVbXCJFeGFjdE1hdGNoXCJdID0gXCJleGFjdC1tYXRjaFwiO1xufSkoRmlsdGVyc1BhdHRlcm5UeXBlID0gZXhwb3J0cy5GaWx0ZXJzUGF0dGVyblR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyc1BhdHRlcm5UeXBlID0ge30pKTtcbi8vIFxudmFyIEZpbHRlcnNMaW1pdFR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNMaW1pdFR5cGUpIHtcbiAgICAvLyBcbiAgICBGaWx0ZXJzTGltaXRUeXBlW1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNMaW1pdFR5cGVbXCJCeUZpZWxkXCJdID0gXCJieS1maWVsZFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNMaW1pdFR5cGVbXCJGb3JtdWxhXCJdID0gXCJmb3JtdWxhXCI7XG59KShGaWx0ZXJzTGltaXRUeXBlID0gZXhwb3J0cy5GaWx0ZXJzTGltaXRUeXBlIHx8IChleHBvcnRzLkZpbHRlcnNMaW1pdFR5cGUgPSB7fSkpO1xuLy8gXG52YXIgRmlsdGVyc0NvbmRpdGlvblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNDb25kaXRpb25UeXBlKSB7XG4gICAgLy8gXG4gICAgRmlsdGVyc0NvbmRpdGlvblR5cGVbXCJOb25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc0NvbmRpdGlvblR5cGVbXCJCeUZpZWxkXCJdID0gXCJieS1maWVsZFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNDb25kaXRpb25UeXBlW1wiRm9ybXVsYVwiXSA9IFwiZm9ybXVsYVwiO1xufSkoRmlsdGVyc0NvbmRpdGlvblR5cGUgPSBleHBvcnRzLkZpbHRlcnNDb25kaXRpb25UeXBlIHx8IChleHBvcnRzLkZpbHRlcnNDb25kaXRpb25UeXBlID0ge30pKTtcbi8vIEhpZ2hlciBsZXZlbCBpbnRlcHJldGF0aW9uIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXIncyByYW5nZVxudmFyIEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUpIHtcbiAgICAvLyBcbiAgICBGaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlW1wiUmFuZ2VDdXJyZW50XCJdID0gXCJjdXJyXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZVtcIlJhbmdlQ3VycmVudFRvRGF0ZVwiXSA9IFwidG9kYXRlXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZVtcIlJhbmdlTGFzdDFcIl0gPSBcImxhc3RcIjtcbiAgICAvLyBcbiAgICBGaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlW1wiUmFuZ2VOZXh0MVwiXSA9IFwibmV4dFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGVbXCJSYW5nZUxhc3ROXCJdID0gXCJsYXN0blwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGVbXCJSYW5nZU5leHROXCJdID0gXCJuZXh0blwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGVbXCJSYW5nZU90aGVyMVwiXSA9IFwib3RoZXJcIjtcbiAgICAvLyBcbiAgICBGaWx0ZXJzUmVsYXRpdmVEYXRlUmFuZ2VUeXBlW1wiUmFuZ2VPdGhlck5cIl0gPSBcIm90aGVyblwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGVbXCJSYW5nZUludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbn0pKEZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUgPSBleHBvcnRzLkZpbHRlcnNSZWxhdGl2ZURhdGVSYW5nZVR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyc1JlbGF0aXZlRGF0ZVJhbmdlVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBGaWx0ZXJzRmlsdGVyTW9kZTtcbihmdW5jdGlvbiAoRmlsdGVyc0ZpbHRlck1vZGUpIHtcbiAgICAvLyBcbiAgICBGaWx0ZXJzRmlsdGVyTW9kZVtcIkxvY2FsXCJdID0gXCJsb2NhbFwiO1xuICAgIC8vIFxuICAgIEZpbHRlcnNGaWx0ZXJNb2RlW1wiR2xvYmFsXCJdID0gXCJnbG9iYWxcIjtcbiAgICAvLyBcbiAgICBGaWx0ZXJzRmlsdGVyTW9kZVtcIlNoYXJlZFwiXSA9IFwic2hhcmVkXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc0ZpbHRlck1vZGVbXCJNYXBwZWRHbG9iYWxcIl0gPSBcIm1hcHBlZC1nbG9iYWxcIjtcbn0pKEZpbHRlcnNGaWx0ZXJNb2RlID0gZXhwb3J0cy5GaWx0ZXJzRmlsdGVyTW9kZSB8fCAoZXhwb3J0cy5GaWx0ZXJzRmlsdGVyTW9kZSA9IHt9KSk7XG4vLyBIb3cgdW5jb21taXR0ZWQgc2VsZWN0aW9uIHN0YXRlIGlzIGJlaW5nIHRyYWNrZWRcbnZhciBGaWx0ZXJzU2VsZWN0aW9uVHJhY2tpbmc7XG4oZnVuY3Rpb24gKEZpbHRlcnNTZWxlY3Rpb25UcmFja2luZykge1xuICAgIC8vIFBhc3NlZCBtZW1iZXJzIGhhdmUgYmVlbiB1cGRhdGVkOiBlYWNoIGluY2x1ZGVkIG1lbWJlcnMnIHNlbGVjdGlvbiBzdGF0ZSBzaG91bGQgYmUgZmxpcHBlZCBmcm9tIGl0cyBpbml0aWFsIHN0YXRlLlxuICAgIEZpbHRlcnNTZWxlY3Rpb25UcmFja2luZ1tcIkRpZmZlcmVuY2VzRnJvbUJhc2VcIl0gPSBcImRpZmZlcmVuY2VzXCI7XG4gICAgLy8gUGFzc2VkIG1lbWJlcnMgc2hvdWxkIGJlIHVuY29uZGl0aW9uYWxseSBzZWxlY3RlZFxuICAgIEZpbHRlcnNTZWxlY3Rpb25UcmFja2luZ1tcIlNlbGVjdGVkVmFsdWVzXCJdID0gXCJzZWxlY3RlZFwiO1xuICAgIC8vIERvbid0IHNhdmUgYW55IHNlbGVjdGlvbiBzdGF0ZS4gVGhpcyBzYXZlcyBtZW1vcnkgYXQgdGhlIGNvc3Qgb2Ygbm90IGJlaW5nIHJlY292ZXJhYmxlIGlmIHRoZSBjb250cm9sbGVyIGlzIGdvbmUuXG4gICAgRmlsdGVyc1NlbGVjdGlvblRyYWNraW5nW1wiTm9uZVwiXSA9IFwiZG9udC10cmFjay1zZWxlY3Rpb24tc3RhdGVcIjtcbn0pKEZpbHRlcnNTZWxlY3Rpb25UcmFja2luZyA9IGV4cG9ydHMuRmlsdGVyc1NlbGVjdGlvblRyYWNraW5nIHx8IChleHBvcnRzLkZpbHRlcnNTZWxlY3Rpb25UcmFja2luZyA9IHt9KSk7XG4vLyBmaWx0ZXIgdXBkYXRlIG9wdGlvbnNcbnZhciBGaWx0ZXJVcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJVcGRhdGVUeXBlKSB7XG4gICAgLy8gc2VsZWN0IGFsbCB2YWx1ZXMgaW4gZmlsdGVyXG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFMTFwiXSA9IFwiZmlsdGVyLWFsbFwiO1xuICAgIC8vIGFkZCBpdGVtcyB0byBleGlzdGluZyBmaWx0ZXJcbiAgICBGaWx0ZXJVcGRhdGVUeXBlW1wiQUREXCJdID0gXCJmaWx0ZXItYWRkXCI7XG4gICAgLy8gcmVtb3ZlIGl0ZW1zIGZyb20gZXhpc3RpbmcgZmlsdGVyXG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIlJFTU9WRVwiXSA9IFwiZmlsdGVyLXJlbW92ZVwiO1xuICAgIC8vIHJlcGxhY2UgZXhpc3RpbmcgZmlsdGVyIHdpdGggZ2l2ZW4gb3B0aW9uc1xuICAgIEZpbHRlclVwZGF0ZVR5cGVbXCJSRVBMQUNFXCJdID0gXCJmaWx0ZXItcmVwbGFjZVwiO1xuICAgIC8vIG1peHR1cmUgb2YgYWRkICsgcmVtb3ZhbFxuICAgIEZpbHRlclVwZGF0ZVR5cGVbXCJERUxUQVwiXSA9IFwiZmlsdGVyLWRlbHRhXCI7XG4gICAgLy8gY2xlYXIgdGhlIGZpbHRlclxuICAgIEZpbHRlclVwZGF0ZVR5cGVbXCJDTEVBUlwiXSA9IFwiZmlsdGVyLWNsZWFyXCI7XG4gICAgLy8gZWFjaCB2YWx1ZSBpbiB0aGUgZmlsdGVyLCBidXQgaW5kaXZpZHVhbGx5IHNlbGVjdGVkXG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkVBQ0hcIl0gPSBcImZpbHRlci1lYWNoXCI7XG59KShGaWx0ZXJVcGRhdGVUeXBlID0gZXhwb3J0cy5GaWx0ZXJVcGRhdGVUeXBlIHx8IChleHBvcnRzLkZpbHRlclVwZGF0ZVR5cGUgPSB7fSkpO1xuLy8gYWRkaXRpb25hbCBjb250ZXh0IG5lZWRlZCB0byBwZXJmb3JtIGEgZmlsdGVyIHVwZGF0ZSBjb3JyZWN0bHlcbnZhciBGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlKSB7XG4gICAgLy8gdGhlIGZpbHRlcidzIGRvbWFpbiBpcyBhIG1hbnVhbGx5IHR5cGVkIGluIG9yIHNlbGVjdGVkIHN1YnNldCBvZiB0aGUgZnVsbCBkb21haW5cbiAgICBGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlW1wiQ1VTVE9NX0RPTUFJTlwiXSA9IFwiZmlsdGVyLXVwZGF0ZS1jdXN0b20tZG9tYWluXCI7XG4gICAgLy8gbm8gcXVhbGlmaWNhdGlvbnMgdG8gdGhlIGZpbHRlci11cGRhdGUgYXJlIHNwZWNpZmllZFxuICAgIEZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGVbXCJOT19RVUFMSUZJQ0FUSU9OU1wiXSA9IFwiZmlsdGVyLXVwZGF0ZS1uby1xdWFsXCI7XG59KShGaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlID0gZXhwb3J0cy5GaWx0ZXJVcGRhdGVRdWFsaWZpZXJUeXBlIHx8IChleHBvcnRzLkZpbHRlclVwZGF0ZVF1YWxpZmllclR5cGUgPSB7fSkpO1xuLy8gXG52YXIgRmlsdGVyc1ByZXNldFR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlcnNQcmVzZXRUeXBlKSB7XG4gICAgLy8ga2VlcCB0aGUgc2VsZWN0aW9uIGNob3NlbiBieSB0aGUgdXNlclxuICAgIEZpbHRlcnNQcmVzZXRUeXBlW1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIHVwZGF0ZSB0byB0aGUgbGF0ZXN0IHZhbHVlcyBpbiB0aGUgZGF0YWJhc2VcbiAgICBGaWx0ZXJzUHJlc2V0VHlwZVtcIkxhc3RWYWx1ZXNcIl0gPSBcImxhc3QtdmFsdWVzXCI7XG4gICAgLy8gXG4gICAgRmlsdGVyc1ByZXNldFR5cGVbXCJDdXJyZW50VmFsdWVzXCJdID0gXCJjdXJyZW50LXZhbHVlc1wiO1xufSkoRmlsdGVyc1ByZXNldFR5cGUgPSBleHBvcnRzLkZpbHRlcnNQcmVzZXRUeXBlIHx8IChleHBvcnRzLkZpbHRlcnNQcmVzZXRUeXBlID0ge30pKTtcbi8vIE5vdGU6IGFuIGVtcHR5IHJhbmdlIChib3RoIGVuZHBvaW50cyBOVUxMKSBpcyBkZWZpbmVkIHRvIG1lYW4gJ2FsbCBub24tTlVMTCB2YWx1ZXMnLCBieSBzeW1tZXRyeSB3aXRoIHdoYXQgYSBzaW5nbGUtZW5kZWQgcmFuZ2UgbWVhbnMsIHNvIGFuIGVtcHR5IHJhbmdlIGFuZCBJblJhbmdlIHJlYWxseSBtZWFucyBOb25OdWxsLCBhbmQgYW4gZW1wdHkgcmFuZ2UgYW5kIG5SYW5nZU9yTnVsbCByZWFsbHkgbWVhbnMgQWxsXG52YXIgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzO1xuKGZ1bmN0aW9uIChGaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMpIHtcbiAgICAvLyB0aGUgaWRlbnRpdHkgZmlsdGVyIChldmVyeXRoaW5nIGlzIGluY2x1ZGVkKVxuICAgIEZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIkFsbFwiXSA9IFwiaW5jbHVkZS1hbGxcIjtcbiAgICAvLyBhbGwgdmFsdWVzIHdoaWNoIGFyZSBub24tbnVsbHB0clxuICAgIEZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIk5vbk51bGxcIl0gPSBcImluY2x1ZGUtbm9uLW51bGxcIjtcbiAgICAvLyBhbGwgdmFsdWVzIHdoaWNoIGFyZSBudWxscHRyXG4gICAgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzW1wiTnVsbFwiXSA9IFwiaW5jbHVkZS1udWxsXCI7XG4gICAgLy8gb25seSB2YWx1ZXMgd2l0aGluIHRoZSByYW5nZSBhbmQgd2hpY2ggYXJlIG5vbiBudWxsXG4gICAgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzW1wiSW5SYW5nZVwiXSA9IFwiaW5jbHVkZS1yYW5nZVwiO1xuICAgIC8vIHZhbHVlcyB3aXRoaW4gdGhlIHJhbmdlIG9yIHdoaWNoIGFyZSBudWxscHRyXG4gICAgRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzW1wiSW5SYW5nZU9yTnVsbFwiXSA9IFwiaW5jbHVkZS1yYW5nZS1vci1udWxsXCI7XG4gICAgLy8gYWxsIHZhbHVlcyBhcmUgZmlsdGVyZWQgb3V0LiBVc2VyIGNhbm5vdCBjcmVhdGUgdGhpcyB0eXBlIG9mIGZpbHRlciBkaXJlY3RseTsgaXMgb25seSBjcmVhdGVkIHdoZW4gdHdvIGZpbHRlcnMgaW50ZXJzZWN0IGFuZCB0aGVpciBpbmNsdWRlZFZhbHVlcyBjb25mbGljdCBzbyB0aGV5IHdpbGwgaW5jbHVkZSBub3RoaW5nIChlLmcuLCBOb25OdWxsIHdpdGggTnVsbClcbiAgICBGaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXNbXCJOb25lXCJdID0gXCJpbmNsdWRlLW5vbmVcIjtcbn0pKEZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyA9IGV4cG9ydHMuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIHx8IChleHBvcnRzLkZpbHRlcnNRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcyA9IHt9KSk7XG4vLyBcbnZhciBEYXRlUGVyaW9kVHlwZTtcbihmdW5jdGlvbiAoRGF0ZVBlcmlvZFR5cGUpIHtcbiAgICAvLyBcbiAgICBEYXRlUGVyaW9kVHlwZVtcIlBlcmlvZFllYXJcIl0gPSBcInllYXJcIjtcbiAgICAvLyBcbiAgICBEYXRlUGVyaW9kVHlwZVtcIlBlcmlvZFF1YXJ0ZXJcIl0gPSBcInF1YXJ0ZXJcIjtcbiAgICAvLyBcbiAgICBEYXRlUGVyaW9kVHlwZVtcIlBlcmlvZE1vbnRoXCJdID0gXCJtb250aFwiO1xuICAgIC8vIFxuICAgIERhdGVQZXJpb2RUeXBlW1wiUGVyaW9kV2Vla1wiXSA9IFwid2Vla1wiO1xuICAgIC8vIFxuICAgIERhdGVQZXJpb2RUeXBlW1wiUGVyaW9kRGF5XCJdID0gXCJkYXlcIjtcbiAgICAvLyBcbiAgICBEYXRlUGVyaW9kVHlwZVtcIlBlcmlvZEhvdXJcIl0gPSBcImhvdXJcIjtcbiAgICAvLyBcbiAgICBEYXRlUGVyaW9kVHlwZVtcIlBlcmlvZE1pbnV0ZVwiXSA9IFwibWludXRlXCI7XG4gICAgLy8gXG4gICAgRGF0ZVBlcmlvZFR5cGVbXCJQZXJpb2RTZWNvbmRcIl0gPSBcInNlY29uZFwiO1xufSkoRGF0ZVBlcmlvZFR5cGUgPSBleHBvcnRzLkRhdGVQZXJpb2RUeXBlIHx8IChleHBvcnRzLkRhdGVQZXJpb2RUeXBlID0ge30pKTtcbi8vIEZpc2NhbCBZZWFyIFN0YXJ0aW5nIE1vbnRoXG52YXIgRllTVmFsdWVzO1xuKGZ1bmN0aW9uIChGWVNWYWx1ZXMpIHtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19KQU5VQVJZXCJdID0gXCJmeXMtamFudWFyeVwiO1xuICAgIC8vIFxuICAgIEZZU1ZhbHVlc1tcIkZZU1ZhbHVlc19fRllTX0ZFQlJVQVJZXCJdID0gXCJmeXMtZmVicnVhcnlcIjtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19NQVJDSFwiXSA9IFwiZnlzLW1hcmNoXCI7XG4gICAgLy8gXG4gICAgRllTVmFsdWVzW1wiRllTVmFsdWVzX19GWVNfQVBSSUxcIl0gPSBcImZ5cy1hcHJpbFwiO1xuICAgIC8vIFxuICAgIEZZU1ZhbHVlc1tcIkZZU1ZhbHVlc19fRllTX01BWVwiXSA9IFwiZnlzLW1heVwiO1xuICAgIC8vIFxuICAgIEZZU1ZhbHVlc1tcIkZZU1ZhbHVlc19fRllTX0pVTkVcIl0gPSBcImZ5cy1qdW5lXCI7XG4gICAgLy8gXG4gICAgRllTVmFsdWVzW1wiRllTVmFsdWVzX19GWVNfSlVMWVwiXSA9IFwiZnlzLWp1bHlcIjtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19BVUdVU1RcIl0gPSBcImZ5cy1hdWd1c3RcIjtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19TRVBURU1CRVJcIl0gPSBcImZ5cy1zZXB0ZW1iZXJcIjtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19PQ1RPQkVSXCJdID0gXCJmeXMtb2N0b2JlclwiO1xuICAgIC8vIFxuICAgIEZZU1ZhbHVlc1tcIkZZU1ZhbHVlc19fRllTX05PVkVNQkVSXCJdID0gXCJmeXMtbm92ZW1iZXJcIjtcbiAgICAvLyBcbiAgICBGWVNWYWx1ZXNbXCJGWVNWYWx1ZXNfX0ZZU19ERUNFTUJFUlwiXSA9IFwiZnlzLWRlY2VtYmVyXCI7XG59KShGWVNWYWx1ZXMgPSBleHBvcnRzLkZZU1ZhbHVlcyB8fCAoZXhwb3J0cy5GWVNWYWx1ZXMgPSB7fSkpO1xuLy8gXG52YXIgUGFnZU5hdkZsYWdzRmxhZ3M7XG4oZnVuY3Rpb24gKFBhZ2VOYXZGbGFnc0ZsYWdzKSB7XG4gICAgLy8gXG4gICAgUGFnZU5hdkZsYWdzRmxhZ3NbXCJOb25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgUGFnZU5hdkZsYWdzRmxhZ3NbXCJMb29wZWRQbGF5YmFja1wiXSA9IFwibG9vcGVkLXBsYXliYWNrXCI7XG4gICAgLy8gXG4gICAgUGFnZU5hdkZsYWdzRmxhZ3NbXCJTaG93RHJvcGRvd25cIl0gPSBcInNob3ctZHJvcGRvd25cIjtcbiAgICAvLyBcbiAgICBQYWdlTmF2RmxhZ3NGbGFnc1tcIlNob3dTbGlkZXJcIl0gPSBcInNob3ctc2xpZGVyXCI7XG4gICAgLy8gXG4gICAgUGFnZU5hdkZsYWdzRmxhZ3NbXCJTaG93UGxheUN0cmxzXCJdID0gXCJzaG93LXBsYXktY29udHJvbHNcIjtcbiAgICAvLyBcbiAgICBQYWdlTmF2RmxhZ3NGbGFnc1tcIlNob3dUcmFpbEN0cmxzXCJdID0gXCJzaG93LXRyYWlsLWNvbnRyb2xzXCI7XG4gICAgLy8gXG4gICAgUGFnZU5hdkZsYWdzRmxhZ3NbXCJTeW5jaHJvbml6ZWRcIl0gPSBcInN5bmNocm9uaXplZFwiO1xufSkoUGFnZU5hdkZsYWdzRmxhZ3MgPSBleHBvcnRzLlBhZ2VOYXZGbGFnc0ZsYWdzIHx8IChleHBvcnRzLlBhZ2VOYXZGbGFnc0ZsYWdzID0ge30pKTtcbi8vIFxudmFyIFBhZ2VUcmFpbEVudW1zTWFya3NUb1RyYWlsO1xuKGZ1bmN0aW9uIChQYWdlVHJhaWxFbnVtc01hcmtzVG9UcmFpbCkge1xuICAgIC8vIFxuICAgIFBhZ2VUcmFpbEVudW1zTWFya3NUb1RyYWlsW1wiTWFudWFsXCJdID0gXCJtYW51YWxcIjtcbiAgICAvLyBcbiAgICBQYWdlVHJhaWxFbnVtc01hcmtzVG9UcmFpbFtcIkFsbFwiXSA9IFwiYWxsXCI7XG4gICAgLy8gXG4gICAgUGFnZVRyYWlsRW51bXNNYXJrc1RvVHJhaWxbXCJTZWxlY3RlZFwiXSA9IFwic2VsZWN0ZWRcIjtcbiAgICAvLyBcbiAgICBQYWdlVHJhaWxFbnVtc01hcmtzVG9UcmFpbFtcIkhpZ2hsaWdodGVkXCJdID0gXCJoaWdobGlnaHRlZFwiO1xufSkoUGFnZVRyYWlsRW51bXNNYXJrc1RvVHJhaWwgPSBleHBvcnRzLlBhZ2VUcmFpbEVudW1zTWFya3NUb1RyYWlsIHx8IChleHBvcnRzLlBhZ2VUcmFpbEVudW1zTWFya3NUb1RyYWlsID0ge30pKTtcbi8vIFxudmFyIFBhZ2VUcmFpbEVudW1zVHJhaWxUeXBlO1xuKGZ1bmN0aW9uIChQYWdlVHJhaWxFbnVtc1RyYWlsVHlwZSkge1xuICAgIC8vIFxuICAgIFBhZ2VUcmFpbEVudW1zVHJhaWxUeXBlW1wiTWFya3NcIl0gPSBcIm1hcmtzXCI7XG4gICAgLy8gXG4gICAgUGFnZVRyYWlsRW51bXNUcmFpbFR5cGVbXCJUcmFpbHNcIl0gPSBcInRyYWlsc1wiO1xuICAgIC8vIFxuICAgIFBhZ2VUcmFpbEVudW1zVHJhaWxUeXBlW1wiQm90aFwiXSA9IFwiYm90aFwiO1xufSkoUGFnZVRyYWlsRW51bXNUcmFpbFR5cGUgPSBleHBvcnRzLlBhZ2VUcmFpbEVudW1zVHJhaWxUeXBlIHx8IChleHBvcnRzLlBhZ2VUcmFpbEVudW1zVHJhaWxUeXBlID0ge30pKTtcbi8vIFxudmFyIFBhZ2VUcmFpbEVudW1zVHJhaWxFZmZlY3Q7XG4oZnVuY3Rpb24gKFBhZ2VUcmFpbEVudW1zVHJhaWxFZmZlY3QpIHtcbiAgICAvLyBcbiAgICBQYWdlVHJhaWxFbnVtc1RyYWlsRWZmZWN0W1wiTm9uZVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIFBhZ2VUcmFpbEVudW1zVHJhaWxFZmZlY3RbXCJUcmFuc3BhcmVuY3lcIl0gPSBcInRyYW5zcGFyZW5jeVwiO1xufSkoUGFnZVRyYWlsRW51bXNUcmFpbEVmZmVjdCA9IGV4cG9ydHMuUGFnZVRyYWlsRW51bXNUcmFpbEVmZmVjdCB8fCAoZXhwb3J0cy5QYWdlVHJhaWxFbnVtc1RyYWlsRWZmZWN0ID0ge30pKTtcbi8vIFxudmFyIFBhZ2VUcmFpbEVudW1zVHJhaWxGbGFncztcbihmdW5jdGlvbiAoUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzKSB7XG4gICAgLy8gXG4gICAgUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzW1wiTm9GbGFnc1wiXSA9IFwibm8tZmxhZ3NcIjtcbiAgICAvLyBcbiAgICBQYWdlVHJhaWxFbnVtc1RyYWlsRmxhZ3NbXCJEcmF3SWZIaWdobGlnaHRlZFwiXSA9IFwiZHJhdy1pZi1oaWdobGlnaHRlZFwiO1xuICAgIC8vIFxuICAgIFBhZ2VUcmFpbEVudW1zVHJhaWxGbGFnc1tcIkRyYXdJZlNlbGVjdGVkXCJdID0gXCJkcmF3LWlmLXNlbGVjdGVkXCI7XG4gICAgLy8gXG4gICAgUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzW1wiRHJhd0Fsd2F5c1wiXSA9IFwiZHJhdy1hbHdheXNcIjtcbiAgICAvLyBcbiAgICBQYWdlVHJhaWxFbnVtc1RyYWlsRmxhZ3NbXCJMaW5lc0VuYWJsZWRcIl0gPSBcImxpbmVzLWVuYWJsZWRcIjtcbn0pKFBhZ2VUcmFpbEVudW1zVHJhaWxGbGFncyA9IGV4cG9ydHMuUGFnZVRyYWlsRW51bXNUcmFpbEZsYWdzIHx8IChleHBvcnRzLlBhZ2VUcmFpbEVudW1zVHJhaWxGbGFncyA9IHt9KSk7XG4vLyBzaW1wbGUgcGFnZSBjaGFuZ2UgY29tbWFuZHNcbnZhciBDaGFuZ2VQYWdlQ2hhbmdlVHlwZTtcbihmdW5jdGlvbiAoQ2hhbmdlUGFnZUNoYW5nZVR5cGUpIHtcbiAgICAvLyBcbiAgICBDaGFuZ2VQYWdlQ2hhbmdlVHlwZVtcIlRvRmlyc3RcIl0gPSBcImZpcnN0XCI7XG4gICAgLy8gXG4gICAgQ2hhbmdlUGFnZUNoYW5nZVR5cGVbXCJUb05leHRcIl0gPSBcIm5leHRcIjtcbiAgICAvLyBcbiAgICBDaGFuZ2VQYWdlQ2hhbmdlVHlwZVtcIlRvUHJldlwiXSA9IFwicHJldmlvdXNcIjtcbiAgICAvLyBcbiAgICBDaGFuZ2VQYWdlQ2hhbmdlVHlwZVtcIlRvTGFzdFwiXSA9IFwibGFzdFwiO1xufSkoQ2hhbmdlUGFnZUNoYW5nZVR5cGUgPSBleHBvcnRzLkNoYW5nZVBhZ2VDaGFuZ2VUeXBlIHx8IChleHBvcnRzLkNoYW5nZVBhZ2VDaGFuZ2VUeXBlID0ge30pKTtcbi8vIFN0b3AsIHN0YXJ0IGluIGEgZGlyZWN0aW9uLCBvciBzZXQgc3BlZWQgb2YgcGFnZSBhbmltYXRpb25cbnZhciBDaGFuZ2VQYWdlUGFnZUFuaW1hdGlvbkNvbnRyb2w7XG4oZnVuY3Rpb24gKENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbCkge1xuICAgIC8vIFxuICAgIENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbFtcIlN0b3BcIl0gPSBcInN0b3BcIjtcbiAgICAvLyBcbiAgICBDaGFuZ2VQYWdlUGFnZUFuaW1hdGlvbkNvbnRyb2xbXCJGb3J3YXJkXCJdID0gXCJmb3J3YXJkXCI7XG4gICAgLy8gXG4gICAgQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sW1wiQmFja3dhcmRcIl0gPSBcImJhY2t3YXJkXCI7XG4gICAgLy8gXG4gICAgQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sW1wiU2xvd1NwZWVkXCJdID0gXCJzbG93LXNwZWVkXCI7XG4gICAgLy8gXG4gICAgQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sW1wiTm9ybWFsU3BlZWRcIl0gPSBcIm5vcm1hbC1zcGVlZFwiO1xuICAgIC8vIFxuICAgIENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbFtcIkZhc3RTcGVlZFwiXSA9IFwiZmFzdC1zcGVlZFwiO1xuICAgIC8vIFxuICAgIENoYW5nZVBhZ2VQYWdlQW5pbWF0aW9uQ29udHJvbFtcIlRvZ2dsZUZvcndhcmRcIl0gPSBcInRvZ2dsZS1mb3J3YXJkXCI7XG4gICAgLy8gXG4gICAgQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sW1wiVG9nZ2xlQmFja3dhcmRcIl0gPSBcInRvZ2dsZS1iYWNrd2FyZFwiO1xufSkoQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sID0gZXhwb3J0cy5DaGFuZ2VQYWdlUGFnZUFuaW1hdGlvbkNvbnRyb2wgfHwgKGV4cG9ydHMuQ2hhbmdlUGFnZVBhZ2VBbmltYXRpb25Db250cm9sID0ge30pKTtcbi8vIFxudmFyIExlZ2VuZEl0ZW1MYXlvdXQ7XG4oZnVuY3Rpb24gKExlZ2VuZEl0ZW1MYXlvdXQpIHtcbiAgICAvLyBcbiAgICBMZWdlbmRJdGVtTGF5b3V0W1wiTGVnZW5kSXRlbUxheW91dFZlcnRcIl0gPSBcInZlcnRpY2FsXCI7XG4gICAgLy8gXG4gICAgTGVnZW5kSXRlbUxheW91dFtcIkxlZ2VuZEl0ZW1MYXlvdXRIb3J6XCJdID0gXCJob3Jpem9udGFsXCI7XG4gICAgLy8gXG4gICAgTGVnZW5kSXRlbUxheW91dFtcIkxlZ2VuZEl0ZW1MYXlvdXRHcmlkXCJdID0gXCJncmlkXCI7XG4gICAgLy8gXG4gICAgTGVnZW5kSXRlbUxheW91dFtcIkxlZ2VuZEl0ZW1MYXlvdXRBdXRvXCJdID0gXCJhdXRvXCI7XG59KShMZWdlbmRJdGVtTGF5b3V0ID0gZXhwb3J0cy5MZWdlbmRJdGVtTGF5b3V0IHx8IChleHBvcnRzLkxlZ2VuZEl0ZW1MYXlvdXQgPSB7fSkpO1xuLy8gXG52YXIgTGVnZW5kSXRlbU9yZGVyO1xuKGZ1bmN0aW9uIChMZWdlbmRJdGVtT3JkZXIpIHtcbiAgICAvLyBcbiAgICBMZWdlbmRJdGVtT3JkZXJbXCJMZWdlbmRJdGVtT3JkZXJOb3JtYWxcIl0gPSBcIm5vcm1hbFwiO1xuICAgIC8vIFxuICAgIExlZ2VuZEl0ZW1PcmRlcltcIkxlZ2VuZEl0ZW1PcmRlclJldmVyc2VkXCJdID0gXCJyZXZlcnNlZFwiO1xuICAgIC8vIFxuICAgIExlZ2VuZEl0ZW1PcmRlcltcIkxlZ2VuZEl0ZW1PcmRlckF1dG9cIl0gPSBcImF1dG9cIjtcbn0pKExlZ2VuZEl0ZW1PcmRlciA9IGV4cG9ydHMuTGVnZW5kSXRlbU9yZGVyIHx8IChleHBvcnRzLkxlZ2VuZEl0ZW1PcmRlciA9IHt9KSk7XG4vLyBcbnZhciBTaXplTW9kZTtcbihmdW5jdGlvbiAoU2l6ZU1vZGUpIHtcbiAgICAvLyBcbiAgICBTaXplTW9kZVtcIlNpemVNb2RlQXV0b1wiXSA9IFwic2l6ZS1tb2RlLWF1dG9cIjtcbiAgICAvLyBcbiAgICBTaXplTW9kZVtcIlNpemVNb2RlRml4ZWRcIl0gPSBcInNpemUtbW9kZS1maXhlZFwiO1xuICAgIC8vIFxuICAgIFNpemVNb2RlW1wiU2l6ZU1vZGVNaW5cIl0gPSBcInNpemUtbW9kZS1taW5cIjtcbiAgICAvLyBcbiAgICBTaXplTW9kZVtcIlNpemVNb2RlTWF4XCJdID0gXCJzaXplLW1vZGUtbWF4XCI7XG4gICAgLy8gXG4gICAgU2l6ZU1vZGVbXCJTaXplTW9kZVJhbmdlXCJdID0gXCJzaXplLW1vZGUtcmFuZ2VcIjtcbiAgICAvLyBcbiAgICBTaXplTW9kZVtcIlNpemVNb2RlRml0V2lkdGhcIl0gPSBcInNpemUtbW9kZS1maXQtd2lkdGhcIjtcbiAgICAvLyBcbiAgICBTaXplTW9kZVtcIlNpemVNb2RlRml0SGVpZ2h0XCJdID0gXCJzaXplLW1vZGUtaGVpZ2h0XCI7XG4gICAgLy8gXG4gICAgU2l6ZU1vZGVbXCJTaXplTW9kZVNjcm9sbEhlaWdodFwiXSA9IFwic2l6ZS1tb2RlLXNjcm9sbC1oZWlnaHRcIjtcbn0pKFNpemVNb2RlID0gZXhwb3J0cy5TaXplTW9kZSB8fCAoZXhwb3J0cy5TaXplTW9kZSA9IHt9KSk7XG4vLyBcbnZhciBTaG93TWVDb21tYW5kVHlwZTtcbihmdW5jdGlvbiAoU2hvd01lQ29tbWFuZFR5cGUpIHtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9URVhUXCJdID0gXCJ0ZXh0XCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfSEVBVFwiXSA9IFwiaGVhdFwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX1NQT1RUQUJMRVwiXSA9IFwic3BvdC10YWJsZVwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0JBUkhPUklaXCJdID0gXCJiYXItaG9yaXpcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9CQVJTVEFDS1wiXSA9IFwiYmFyLXN0YWNrXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfQkFSU0lERVwiXSA9IFwiYmFyLXNpZGVcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9CQVJNRUFTVVJFXCJdID0gXCJiYXItbWVhc3VyZVwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX09MSU5FXCJdID0gXCJvLWxpbmVcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9RSUxJTkVcIl0gPSBcInFpLWxpbmVcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9PQVJFQVwiXSA9IFwiby1hcmVhXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfUUlBUkVBXCJdID0gXCJxaS1hcmVhXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfQ0lSQ0xFXCJdID0gXCJjaXJjbGVcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9DSVJDTEVTSURFXCJdID0gXCJjaXJjbGUtc2lkZVwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0dBTlRUXCJdID0gXCJnYW50dFwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX1NDQVRURVJcIl0gPSBcInNjYXR0ZXJcIjtcbiAgICAvLyBcbiAgICBTaG93TWVDb21tYW5kVHlwZVtcIlNIT1dNRV9TQ0FUVEVSTUFUUklYXCJdID0gXCJzY2F0dGVyLW1hdHJpeFwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0hJU1RPR1JBTVwiXSA9IFwiaGlzdG9ncmFtXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfTUFQU1wiXSA9IFwibWFwc1wiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0ZJTExFRE1BUFNcIl0gPSBcImZpbGxlZC1tYXBzXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfUElFU1wiXSA9IFwicGllc1wiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0RVQUxCQVJMSU5FXCJdID0gXCJkdWFsLWJhci1saW5lXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfRFVBTExJTkVcIl0gPSBcImR1YWwtbGluZVwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0JVTExFVFwiXSA9IFwiYnVsbGV0XCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfVFJFRU1BUFwiXSA9IFwidHJlZW1hcFwiO1xuICAgIC8vIFxuICAgIFNob3dNZUNvbW1hbmRUeXBlW1wiU0hPV01FX0JVQkJMRVwiXSA9IFwiYnViYmxlXCI7XG4gICAgLy8gXG4gICAgU2hvd01lQ29tbWFuZFR5cGVbXCJTSE9XTUVfQk9YUExPVFwiXSA9IFwiYm94LXBsb3RcIjtcbn0pKFNob3dNZUNvbW1hbmRUeXBlID0gZXhwb3J0cy5TaG93TWVDb21tYW5kVHlwZSB8fCAoZXhwb3J0cy5TaG93TWVDb21tYW5kVHlwZSA9IHt9KSk7XG4vLyBpY29uIHRvIGRpc3BsYXkgZm9yIGFuIGl0ZW0gb24gYSBzaGVsZlxudmFyIFNoZWxmSWNvblR5cGU7XG4oZnVuY3Rpb24gKFNoZWxmSWNvblR5cGUpIHtcbiAgICAvLyBub3Qgc2V0XG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9Ob25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gaW5jb21wYXRpYmxlIGZpZWxkXG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9JbmNvbXBhdGlibGVGaWVsZFwiXSA9IFwiaW5jb21wYXRpYmxlLWZpZWxkXCI7XG4gICAgLy8gcmVtb3RlXG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9SZW1vdGVcIl0gPSBcInJlbW90ZVwiO1xuICAgIC8vIGdyb3VwXG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9Hcm91cFwiXSA9IFwiZ3JvdXBcIjtcbiAgICAvLyB0YWJsZSBjYWxjXG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9UYWJsZUNhbGNcIl0gPSBcInRhYmxlLWNhbGNcIjtcbiAgICAvLyBpdGVtIGNvbWVzIGZyb20gYSBzZWNvbmRhcnkgZGF0YXNvdXJjZVxuICAgIFNoZWxmSWNvblR5cGVbXCJTSVRfU2Vjb25kYXJ5RGF0YXNvdXJjZVwiXSA9IFwic2Vjb25kYXJ5LWRhdGFzb3VyY2VcIjtcbiAgICAvLyB0YWJsZSBjYWxjIGZyb20gYSBzZWNvbmRhcnkgZGF0YXNvdXJjZVxuICAgIFNoZWxmSWNvblR5cGVbXCJTSVRfVGFibGVDYWxjU2Vjb25kYXJ5XCJdID0gXCJ0YWJsZS1jYWxjLXNlY29uZGFyeVwiO1xuICAgIC8vIGZvcmVjYXN0XG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9Gb3JlY2FzdFwiXSA9IFwiZm9yZWNhc3RcIjtcbiAgICAvLyBhc2NlbmRpbmcgc29ydFxuICAgIFNoZWxmSWNvblR5cGVbXCJTSVRfU29ydEFzY1wiXSA9IFwic29ydC1hc2NcIjtcbiAgICAvLyBkZXNjZW5kaW5nIHNvcnRcbiAgICBTaGVsZkljb25UeXBlW1wiU0lUX1NvcnREZXNjXCJdID0gXCJzb3J0LWRlc2NcIjtcbiAgICAvLyBhbHBoYWJldGljIGFzY2VuZGluZyBzb3J0XG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9Tb3J0QWxwaGFiZXRpY0FzY1wiXSA9IFwic29ydC1hbHBoYWJldGljLWFzY1wiO1xuICAgIC8vIGFscGhhYmV0aWMgZGVzY2VuZGluZyBzb3J0XG4gICAgU2hlbGZJY29uVHlwZVtcIlNJVF9Tb3J0QWxwaGFiZXRpY0Rlc2NcIl0gPSBcInNvcnQtYWxwaGFiZXRpYy1kZXNjXCI7XG59KShTaGVsZkljb25UeXBlID0gZXhwb3J0cy5TaGVsZkljb25UeXBlIHx8IChleHBvcnRzLlNoZWxmSWNvblR5cGUgPSB7fSkpO1xuLy8gaWNvbiB0byBkaXNwbGF5IGZvciBhbiBpdGVtIG9uIHRoZSBmaWx0ZXJzIHNoZWxmXG52YXIgRmlsdGVySWNvblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlckljb25UeXBlKSB7XG4gICAgLy8gYSBnbG9iYWwgZmlsdGVyIGljb25cbiAgICBGaWx0ZXJJY29uVHlwZVtcIkZJVF9HbG9iYWxcIl0gPSBcImdsb2JhbC1maWx0ZXJcIjtcbiAgICAvLyBhIHNoYXJlZCBmaWx0ZXIgaWNvblxuICAgIEZpbHRlckljb25UeXBlW1wiRklUX1NoYXJlZFwiXSA9IFwic2hhcmVkLWZpbHRlclwiO1xuICAgIC8vIGEgbWFwcGVkIHNoYXJlZCBzb3VyY2UgZmlsdGVyIGljb25cbiAgICBGaWx0ZXJJY29uVHlwZVtcIkZJVF9NYXBwZWRTaGFyZWRTb3VyY2VcIl0gPSBcIm1hcHBlZC1zaGFyZWQtc291cmNlLWZpbHRlclwiO1xuICAgIC8vIGEgbWFwcGVkIHNoYXJlZCB0YXJnZXQgZmlsdGVyIGljb25cbiAgICBGaWx0ZXJJY29uVHlwZVtcIkZJVF9NYXBwZWRTaGFyZWRUYXJnZXRcIl0gPSBcIm1hcHBlZC1zaGFyZWQtdGFyZ2V0LWZpbHRlclwiO1xuICAgIC8vIGEgc2xpY2luZyBmaWx0ZXIgaWNvblxuICAgIEZpbHRlckljb25UeXBlW1wiRklUX1NsaWNlXCJdID0gXCJzbGljZS1maWx0ZXJcIjtcbiAgICAvLyBhIGxvY2FsIGZpbHRlciBpY29uXG4gICAgRmlsdGVySWNvblR5cGVbXCJGSVRfTG9jYWxcIl0gPSBcImxvY2FsLWZpbHRlclwiO1xuICAgIC8vIGEgbWFwcGVkIGdsb2JhbCBzb3VyY2UgZmlsdGVyIGljb25cbiAgICBGaWx0ZXJJY29uVHlwZVtcIkZJVF9NYXBwZWRHbG9iYWxTb3VyY2VcIl0gPSBcIm1hcHBlZC1nbG9iYWwtc291cmNlLWZpbHRlclwiO1xuICAgIC8vIGEgbWFwcGVkIGdsb2JhbCB0YXJnZXQgZmlsdGVyIGljb25cbiAgICBGaWx0ZXJJY29uVHlwZVtcIkZJVF9NYXBwZWRHbG9iYWxUYXJnZXRcIl0gPSBcIm1hcHBlZC1nbG9iYWwtdGFyZ2V0LWZpbHRlclwiO1xuICAgIC8vIG5vdCBhIGZpbHRlclxuICAgIEZpbHRlckljb25UeXBlW1wiRklUX05vbmVcIl0gPSBcIm5vLWZpbHRlclwiO1xufSkoRmlsdGVySWNvblR5cGUgPSBleHBvcnRzLkZpbHRlckljb25UeXBlIHx8IChleHBvcnRzLkZpbHRlckljb25UeXBlID0ge30pKTtcbi8vIHVzZWQgdG8gaW5kaWNhdGUgaWYgYSBmaWVsZCBpcyBwYXJ0IG9mIGEgZHVhbCBheGlzXG52YXIgSXRlbURyYXdTdHlsZTtcbihmdW5jdGlvbiAoSXRlbURyYXdTdHlsZSkge1xuICAgIC8vIG5vdCBwYXJ0IG9mIGEgZHVhbCBheGlzXG4gICAgSXRlbURyYXdTdHlsZVtcIklURU1fRFJBV1NUWUxFX05PUk1BTFwiXSA9IFwibm9ybWFsXCI7XG4gICAgLy8gZmlyc3QgaXRlbSBvbiBkdWFsIGF4aXNcbiAgICBJdGVtRHJhd1N0eWxlW1wiSVRFTV9EUkFXU1RZTEVfT1BFTkVEXCJdID0gXCJvcGVuZWRcIjtcbiAgICAvLyBzZWNvbmQgaXRlbSBvbiBkdWFsIGF4aXNcbiAgICBJdGVtRHJhd1N0eWxlW1wiSVRFTV9EUkFXU1RZTEVfQ0xPU0VEXCJdID0gXCJjbG9zZWRcIjtcbiAgICAvLyBtaWRkbGUgaXRlbSBpbiBhIHNldCBvZiBsYXllcnNcbiAgICBJdGVtRHJhd1N0eWxlW1wiSVRFTV9EUkFXU1RZTEVfTUlERExFXCJdID0gXCJtaWRkbGVcIjtcbn0pKEl0ZW1EcmF3U3R5bGUgPSBleHBvcnRzLkl0ZW1EcmF3U3R5bGUgfHwgKGV4cG9ydHMuSXRlbURyYXdTdHlsZSA9IHt9KSk7XG4vLyBpbmRpY2F0ZXMgdGhlIHNpemUgb2YgcGFnZSBmb3IgYSBzaGVldFxudmFyIFBhZ2VTaXplT3B0aW9uO1xuKGZ1bmN0aW9uIChQYWdlU2l6ZU9wdGlvbikge1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfTEVUVEVSXCJdID0gXCJsZXR0ZXJcIjtcbiAgICAvLyBcbiAgICBQYWdlU2l6ZU9wdGlvbltcIlBBR0VTSVpFX0xFR0FMXCJdID0gXCJsZWdhbFwiO1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfTk9URVwiXSA9IFwibm90ZVwiO1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfRk9MSU9cIl0gPSBcImZvbGlvXCI7XG4gICAgLy8gXG4gICAgUGFnZVNpemVPcHRpb25bXCJQQUdFU0laRV9UQUJMT0lEXCJdID0gXCJ0YWJsb2lkXCI7XG4gICAgLy8gXG4gICAgUGFnZVNpemVPcHRpb25bXCJQQUdFU0laRV9MRURHRVJcIl0gPSBcImxlZGdlclwiO1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfU1RBVEVNRU5UXCJdID0gXCJzdGF0ZW1lbnRcIjtcbiAgICAvLyBcbiAgICBQYWdlU2l6ZU9wdGlvbltcIlBBR0VTSVpFX0VYRUNVVElWRVwiXSA9IFwiZXhlY3V0aXZlXCI7XG4gICAgLy8gXG4gICAgUGFnZVNpemVPcHRpb25bXCJQQUdFU0laRV9BM1wiXSA9IFwiYTNcIjtcbiAgICAvLyBcbiAgICBQYWdlU2l6ZU9wdGlvbltcIlBBR0VTSVpFX0E0XCJdID0gXCJhNFwiO1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfQTVcIl0gPSBcImE1XCI7XG4gICAgLy8gXG4gICAgUGFnZVNpemVPcHRpb25bXCJQQUdFU0laRV9CNFwiXSA9IFwiYjRcIjtcbiAgICAvLyBcbiAgICBQYWdlU2l6ZU9wdGlvbltcIlBBR0VTSVpFX0I1XCJdID0gXCJiNVwiO1xuICAgIC8vIFxuICAgIFBhZ2VTaXplT3B0aW9uW1wiUEFHRVNJWkVfUVVBUlRPXCJdID0gXCJxdWFydG9cIjtcbiAgICAvLyBcbiAgICBQYWdlU2l6ZU9wdGlvbltcIlBBR0VTSVpFX1VOU1BFQ0lGSUVEXCJdID0gXCJ1bnNwZWNpZmllZFwiO1xufSkoUGFnZVNpemVPcHRpb24gPSBleHBvcnRzLlBhZ2VTaXplT3B0aW9uIHx8IChleHBvcnRzLlBhZ2VTaXplT3B0aW9uID0ge30pKTtcbi8vIEluZGljYXRlcyB0aGUgbGF5b3V0IG9mIHBhZ2UgZm9yIGEgc2hlZXRcbnZhciBQYWdlT3JpZW50YXRpb247XG4oZnVuY3Rpb24gKFBhZ2VPcmllbnRhdGlvbikge1xuICAgIC8vIFxuICAgIFBhZ2VPcmllbnRhdGlvbltcIk9yaWVudGF0aW9uUHJpbnRlclwiXSA9IFwicHJpbnRlclwiO1xuICAgIC8vIFxuICAgIFBhZ2VPcmllbnRhdGlvbltcIk9yaWVudGF0aW9uUG9ydHJhaXRcIl0gPSBcInBvcnRyYWl0XCI7XG4gICAgLy8gXG4gICAgUGFnZU9yaWVudGF0aW9uW1wiT3JpZW50YXRpb25MYW5kc2NhcGVcIl0gPSBcImxhbmRzY2FwZVwiO1xufSkoUGFnZU9yaWVudGF0aW9uID0gZXhwb3J0cy5QYWdlT3JpZW50YXRpb24gfHwgKGV4cG9ydHMuUGFnZU9yaWVudGF0aW9uID0ge30pKTtcbi8vIEluZGljYXRlcyB0aGUgbWFubmVyIG9mIHNjYWxpbmcgb2YgcGFnZSBmb3IgYSBzaGVldFxudmFyIFNjYWxlTW9kZTtcbihmdW5jdGlvbiAoU2NhbGVNb2RlKSB7XG4gICAgLy8gXG4gICAgU2NhbGVNb2RlW1wiU2NhbGVBdXRvXCJdID0gXCJhdXRvXCI7XG4gICAgLy8gXG4gICAgU2NhbGVNb2RlW1wiU2NhbGVQZXJjZW50YWdlXCJdID0gXCJwZXJjZW50XCI7XG4gICAgLy8gXG4gICAgU2NhbGVNb2RlW1wiU2NhbGVGaXRQYWdlc1wiXSA9IFwiZml0LXBhZ2VzXCI7XG59KShTY2FsZU1vZGUgPSBleHBvcnRzLlNjYWxlTW9kZSB8fCAoZXhwb3J0cy5TY2FsZU1vZGUgPSB7fSkpO1xuLy8gSW5kaWNhdGVzIHRoZSBkZWZhdWx0L3NlbGVjdGFibGUgc2NhbGluZyBvZiBwYWdlIGZvciBhIHNoZWV0XG52YXIgUGFnZVNjYWxpbmdPcHRpb247XG4oZnVuY3Rpb24gKFBhZ2VTY2FsaW5nT3B0aW9uKSB7XG4gICAgLy8gXG4gICAgUGFnZVNjYWxpbmdPcHRpb25bXCJTY2FsZVBjdEF1dG9cIl0gPSBcImF1dG9cIjtcbiAgICAvLyBcbiAgICBQYWdlU2NhbGluZ09wdGlvbltcIlNjYWxlUGN0NDAwXCJdID0gXCJwY3Q0MDBcIjtcbiAgICAvLyBcbiAgICBQYWdlU2NhbGluZ09wdGlvbltcIlNjYWxlUGN0MjAwXCJdID0gXCJwY3QyMDBcIjtcbiAgICAvLyBcbiAgICBQYWdlU2NhbGluZ09wdGlvbltcIlNjYWxlUGN0MTAwXCJdID0gXCJwY3QxMDBcIjtcbiAgICAvLyBcbiAgICBQYWdlU2NhbGluZ09wdGlvbltcIlNjYWxlUGN0OTBcIl0gPSBcInBjdDkwXCI7XG4gICAgLy8gXG4gICAgUGFnZVNjYWxpbmdPcHRpb25bXCJTY2FsZVBjdDgwXCJdID0gXCJwY3Q4MFwiO1xuICAgIC8vIFxuICAgIFBhZ2VTY2FsaW5nT3B0aW9uW1wiU2NhbGVQY3Q3NVwiXSA9IFwicGN0NzVcIjtcbiAgICAvLyBcbiAgICBQYWdlU2NhbGluZ09wdGlvbltcIlNjYWxlUGN0NjBcIl0gPSBcInBjdDYwXCI7XG4gICAgLy8gXG4gICAgUGFnZVNjYWxpbmdPcHRpb25bXCJTY2FsZVBjdDUwXCJdID0gXCJwY3Q1MFwiO1xuICAgIC8vIFxuICAgIFBhZ2VTY2FsaW5nT3B0aW9uW1wiU2NhbGVQY3QyNVwiXSA9IFwicGN0MjVcIjtcbn0pKFBhZ2VTY2FsaW5nT3B0aW9uID0gZXhwb3J0cy5QYWdlU2NhbGluZ09wdGlvbiB8fCAoZXhwb3J0cy5QYWdlU2NhbGluZ09wdGlvbiA9IHt9KSk7XG4vLyBcbnZhciBTaGVldFJhbmdlO1xuKGZ1bmN0aW9uIChTaGVldFJhbmdlKSB7XG4gICAgLy8gXG4gICAgU2hlZXRSYW5nZVtcIlNoZWV0UmFuZ2VBbGxcIl0gPSBcImFsbFwiO1xuICAgIC8vIFxuICAgIFNoZWV0UmFuZ2VbXCJTaGVldFJhbmdlQWN0aXZlXCJdID0gXCJhY3RpdmVcIjtcbiAgICAvLyBcbiAgICBTaGVldFJhbmdlW1wiU2hlZXRSYW5nZVNlbGVjdGVkXCJdID0gXCJzZWxlY3RlZFwiO1xufSkoU2hlZXRSYW5nZSA9IGV4cG9ydHMuU2hlZXRSYW5nZSB8fCAoZXhwb3J0cy5TaGVldFJhbmdlID0ge30pKTtcbi8vIHNoZWV0IHR5cGVcbnZhciBTaGVldFR5cGU7XG4oZnVuY3Rpb24gKFNoZWV0VHlwZSkge1xuICAgIC8vIFxuICAgIFNoZWV0VHlwZVtcIlRZUEVfV09SS1NIRUVUXCJdID0gXCJ3b3Jrc2hlZXRcIjtcbiAgICAvLyBcbiAgICBTaGVldFR5cGVbXCJUWVBFX0RBU0hCT0FSRFwiXSA9IFwiZGFzaGJvYXJkXCI7XG4gICAgLy8gXG4gICAgU2hlZXRUeXBlW1wiVFlQRV9TVE9SWVwiXSA9IFwic3RvcnlcIjtcbn0pKFNoZWV0VHlwZSA9IGV4cG9ydHMuU2hlZXRUeXBlIHx8IChleHBvcnRzLlNoZWV0VHlwZSA9IHt9KSk7XG4vLyBhIGRhc2hib2FyZCBpbWFnZSBtZXRyaWMncyB0eXBlXG52YXIgQ2xpZW50VUlNZXRyaWNUeXBlO1xuKGZ1bmN0aW9uIChDbGllbnRVSU1ldHJpY1R5cGUpIHtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX1Njcm9sbGJhck1ldHJpY1wiXSA9IFwic2Nyb2xsYmFyLW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfUUZpbHRlckZpeGVkTWV0cmljXCJdID0gXCJxLWZpbHRlci1maXhlZC1tZXRyaWNcIjtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX1FGaWx0ZXJTbGlkZXJNZXRyaWNcIl0gPSBcInEtZmlsdGVyLXNsaWRlci1tZXRyaWNcIjtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX1FGaWx0ZXJSZWFkb3V0TWV0cmljXCJdID0gXCJxLWZpbHRlci1yZWFkb3V0LW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfQ0ZpbHRlckZpeGVkTWV0cmljXCJdID0gXCJjLWZpbHRlci1maXhlZC1tZXRyaWNcIjtcbiAgICAvLyBtaW5pbXVtIGNoZWNrL3JhZGlvbGlzdCBpdGVtIHNpemVcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX0NGaWx0ZXJJdGVtTWV0cmljXCJdID0gXCJjLWZpbHRlci1pdGVtLW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfSEZpbHRlckZpeGVkTWV0cmljXCJdID0gXCJoLWZpbHRlci1maXhlZC1tZXRyaWNcIjtcbiAgICAvLyBtaW5pbXVtIGhpZXJhcmNoaWNhbCBpdGVtIHNpemVcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX0hGaWx0ZXJJdGVtTWV0cmljXCJdID0gXCJoLWZpbHRlci1pdGVtLW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfQ21TbGlkZXJGaWx0ZXJNZXRyaWNcIl0gPSBcImNtLXNsaWRlci1maWx0ZXItbWV0cmljXCI7XG4gICAgLy8gXG4gICAgQ2xpZW50VUlNZXRyaWNUeXBlW1wiVUlNVF9DbURyb3Bkb3duRmlsdGVyTWV0cmljXCJdID0gXCJjbS1kcm9wZG93bi1maWx0ZXItbWV0cmljXCI7XG4gICAgLy8gXG4gICAgQ2xpZW50VUlNZXRyaWNUeXBlW1wiVUlNVF9DbVBhdHRlcm5GaWx0ZXJNZXRyaWNcIl0gPSBcImNtLXBhdHRlcm4tZmlsdGVyLW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfUkRhdGVGaWx0ZXJNZXRyaWNcIl0gPSBcInItZGF0ZS1maWx0ZXItbWV0cmljXCI7XG4gICAgLy8gXG4gICAgQ2xpZW50VUlNZXRyaWNUeXBlW1wiVUlNVF9SRGF0ZVBGaWx0ZXJNZXRyaWNcIl0gPSBcInItZGF0ZS1wLWZpbHRlci1tZXRyaWNcIjtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX1BhcmFtVHlwZUluTWV0cmljXCJdID0gXCJwYXJhbS10eXBlLWluLW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfUGFyYW1Db21wYWN0TGlzdE1ldHJpY1wiXSA9IFwicGFyYW0tY29tcGFjdC1saXN0LW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfUGFyYW1MaXN0TWV0cmljXCJdID0gXCJwYXJhbS1saXN0LW1ldHJpY1wiO1xuICAgIC8vIFxuICAgIENsaWVudFVJTWV0cmljVHlwZVtcIlVJTVRfUGFyYW1TbGlkZXJNZXRyaWNcIl0gPSBcInBhcmFtLXNsaWRlci1tZXRyaWNcIjtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX1BhcmFtRGF0ZVRpbWVNZXRyaWNcIl0gPSBcInBhcmFtLWRhdGUtdGltZS1tZXRyaWNcIjtcbiAgICAvLyBcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX0NGaWx0ZXJBcHBseU1ldHJpY1wiXSA9IFwiYy1maWx0ZXItYXBwbHktbWV0cmljXCI7XG4gICAgLy8gXG4gICAgQ2xpZW50VUlNZXRyaWNUeXBlW1wiVUlNVF9DbVR5cGVJblNlYXJjaE1ldHJpY1wiXSA9IFwiY20tdHlwZS1pbi1zZWFyY2gtbWV0cmljXCI7XG4gICAgLy8gbWluaW11bSBjdXN0b20gbGlzdCBpdGVtIHNpemVcbiAgICBDbGllbnRVSU1ldHJpY1R5cGVbXCJVSU1UX0NGaWx0ZXJDdXN0b21JdGVtTWV0cmljXCJdID0gXCJjLWZpbHRlci1jdXN0b20taXRlbS1tZXRyaWNcIjtcbn0pKENsaWVudFVJTWV0cmljVHlwZSA9IGV4cG9ydHMuQ2xpZW50VUlNZXRyaWNUeXBlIHx8IChleHBvcnRzLkNsaWVudFVJTWV0cmljVHlwZSA9IHt9KSk7XG4vLyBhIHJlZ2lvbiBvZiBhIHZpeiB3aGVyZSBzb3J0IGluZGljYXRvcnMgbWF5IGFwcGVhclxudmFyIFNvcnRSZWdpb25UeXBlO1xuKGZ1bmN0aW9uIChTb3J0UmVnaW9uVHlwZSkge1xuICAgIC8vIFxuICAgIFNvcnRSZWdpb25UeXBlW1wiU1JUX0xBQkVMU19YXCJdID0gXCJ4aGVhZGVyXCI7XG4gICAgLy8gXG4gICAgU29ydFJlZ2lvblR5cGVbXCJTUlRfTEFCRUxTX1lcIl0gPSBcInloZWFkZXJcIjtcbiAgICAvLyBcbiAgICBTb3J0UmVnaW9uVHlwZVtcIlNSVF9MQUJFTFNfRklFTERcIl0gPSBcInVsZWZ0XCI7XG4gICAgLy8gXG4gICAgU29ydFJlZ2lvblR5cGVbXCJTUlRfQVhJU19MRUZUXCJdID0gXCJsZWZ0YXhpc1wiO1xuICAgIC8vIFxuICAgIFNvcnRSZWdpb25UeXBlW1wiU1JUX0FYSVNfQk9UVE9NXCJdID0gXCJib3R0b21heGlzXCI7XG4gICAgLy8gXG4gICAgU29ydFJlZ2lvblR5cGVbXCJTUlRfQVhJU19SSUdIVFwiXSA9IFwicmlnaHRheGlzXCI7XG4gICAgLy8gXG4gICAgU29ydFJlZ2lvblR5cGVbXCJTUlRfQVhJU19UT1BcIl0gPSBcInRvcGF4aXNcIjtcbn0pKFNvcnRSZWdpb25UeXBlID0gZXhwb3J0cy5Tb3J0UmVnaW9uVHlwZSB8fCAoZXhwb3J0cy5Tb3J0UmVnaW9uVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBRdEN1cnNvclNoYXBlO1xuKGZ1bmN0aW9uIChRdEN1cnNvclNoYXBlKSB7XG4gICAgLy8gXG4gICAgUXRDdXJzb3JTaGFwZVtcIkFycm93Q3Vyc29yXCJdID0gXCJhcnJvd1wiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJVcEFycm93Q3Vyc29yXCJdID0gXCJ1cC1hcnJvd1wiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJDcm9zc0N1cnNvclwiXSA9IFwiY3Jvc3NcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiV2FpdEN1cnNvclwiXSA9IFwid2FpdFwiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJJQmVhbUN1cnNvclwiXSA9IFwiaWJlYW1cIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiU2l6ZVZlckN1cnNvclwiXSA9IFwic2l6ZS12ZXJcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiU2l6ZUhvckN1cnNvclwiXSA9IFwic2l6ZS1ob3JcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiU2l6ZUJEaWFnQ3Vyc29yXCJdID0gXCJzaXplLWJkaWFnXCI7XG4gICAgLy8gXG4gICAgUXRDdXJzb3JTaGFwZVtcIlNpemVGRGlhZ0N1cnNvclwiXSA9IFwic2l6ZS1mZGlhZ1wiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJTaXplQWxsQ3Vyc29yXCJdID0gXCJzaXplLWFsbFwiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJCbGFua0N1cnNvclwiXSA9IFwiYmxhbmtcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiU3BsaXRWQ3Vyc29yXCJdID0gXCJzcGxpdC12XCI7XG4gICAgLy8gXG4gICAgUXRDdXJzb3JTaGFwZVtcIlNwbGl0SEN1cnNvclwiXSA9IFwic3BsaXQtaFwiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJQb2ludGluZ0hhbmRDdXJzb3JcIl0gPSBcInBvaW50aW5nLWhhbmRcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiRm9yYmlkZGVuQ3Vyc29yXCJdID0gXCJmb3JiaWRkZW5cIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiV2hhdHNUaGlzQ3Vyc29yXCJdID0gXCJ3aGF0cy10aGlzXCI7XG4gICAgLy8gXG4gICAgUXRDdXJzb3JTaGFwZVtcIkJ1c3lDdXJzb3JcIl0gPSBcImJ1c3lcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiT3BlbkhhbmRDdXJzb3JcIl0gPSBcIm9wZW4taGFuZFwiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJDbG9zZWRIYW5kQ3Vyc29yXCJdID0gXCJjbG9zZWQtaGFuZFwiO1xuICAgIC8vIFxuICAgIFF0Q3Vyc29yU2hhcGVbXCJEcmFnQ29weUN1cnNvclwiXSA9IFwiZHJhZy1jb3B5XCI7XG4gICAgLy8gXG4gICAgUXRDdXJzb3JTaGFwZVtcIkRyYWdNb3ZlQ3Vyc29yXCJdID0gXCJkcmFnLW1vdmVcIjtcbiAgICAvLyBcbiAgICBRdEN1cnNvclNoYXBlW1wiRHJhZ0xpbmtDdXJzb3JcIl0gPSBcImRyYWctbGlua1wiO1xufSkoUXRDdXJzb3JTaGFwZSA9IGV4cG9ydHMuUXRDdXJzb3JTaGFwZSB8fCAoZXhwb3J0cy5RdEN1cnNvclNoYXBlID0ge30pKTtcbi8vIHNwZWNpZmllcyB2YXJpb3VzIGNvbXBvbmVudHMgb2YgYSB2aXogdGhhdCBhcmUgcmVuZGVyZWQgYXMgaW1hZ2VzXG52YXIgVml6SW1hZ2VSZWdpb247XG4oZnVuY3Rpb24gKFZpekltYWdlUmVnaW9uKSB7XG4gICAgLy8gdGhlIG1haW4gdml6IGFyZWFcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fVEFCTEVcIl0gPSBcInZpelwiO1xuICAgIC8vIHkgYXhpcyBpdGVtc1xuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9ST1dIRUFERVJTXCJdID0gXCJ5aGVhZGVyXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0xFRlRBWElTXCJdID0gXCJsZWZ0YXhpc1wiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9SSUdIVEFYSVNcIl0gPSBcInJpZ2h0YXhpc1wiO1xuICAgIC8vIHggYXhpcyBpdGVtc1xuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9DT0xVTU5IRUFERVJTXCJdID0gXCJ4aGVhZGVyXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0JPVFRPTUFYSVNcIl0gPSBcImJvdHRvbWF4aXNcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fVE9QQVhJU1wiXSA9IFwidG9wYXhpc1wiO1xuICAgIC8vIHNwYWNpbmcgYXJlYXNcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fVVBQRVJMRUZUXCJdID0gXCJ1bGVmdFwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9VUFBFUlJJR0hUXCJdID0gXCJ1cmlnaHRcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fTE9XRVJMRUZUXCJdID0gXCJsbGVmdFwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9MT1dFUlJJR0hUXCJdID0gXCJscmlnaHRcIjtcbiAgICAvLyBsYWJlbGxpbmcgYXJlYXNcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fVElUTEVcIl0gPSBcInRpdGxlXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0NBUFRJT05cIl0gPSBcImNhcHRpb25cIjtcbiAgICAvLyBsZWdlbmQgYXJlYXNcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fQ09MT1JMRUdFTkRcIl0gPSBcImNvbG9yXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX1NIQVBFTEVHRU5EXCJdID0gXCJzaGFwZVwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9TSVpFTEVHRU5EXCJdID0gXCJzaXplXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0hJR0hMSUdIVExFR0VORFwiXSA9IFwiaGlnaGxpZ2h0LWxlZ2VuZFwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9NQVBMRUdFTkRcIl0gPSBcIm1hcFwiO1xuICAgIC8vIGxlZ2VuZCB0aXRsZXNcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fQ09MT1JMRUdFTkRUSVRMRVwiXSA9IFwiY29sb3ItdGl0bGVcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fU0hBUEVMRUdFTkRUSVRMRVwiXSA9IFwic2hhcGUtdGl0bGVcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fU0laRUxFR0VORFRJVExFXCJdID0gXCJzaXplLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0hJR0hMSUdIVExFR0VORFRJVExFXCJdID0gXCJoaWdobGlnaHQtbGVnZW5kLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX01BUExFR0VORFRJVExFXCJdID0gXCJtYXAtdGl0bGVcIjtcbiAgICAvLyBsZWdlbmQgYm9kaWVzXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0NPTE9STEVHRU5EQk9EWVwiXSA9IFwiY29sb3ItYm9keVwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9TSEFQRUxFR0VOREJPRFlcIl0gPSBcInNoYXBlLWJvZHlcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fU0laRUxFR0VOREJPRFlcIl0gPSBcInNpemUtYm9keVwiO1xuICAgIC8vIFxuICAgIFZpekltYWdlUmVnaW9uW1wiVklaX1JFR0lPTl9ISUdITElHSFRMRUdFTkRCT0RZXCJdID0gXCJoaWdobGlnaHQtbGVnZW5kLWJvZHlcIjtcbiAgICAvLyBcbiAgICBWaXpJbWFnZVJlZ2lvbltcIlZJWl9SRUdJT05fTUFQTEVHRU5EQk9EWVwiXSA9IFwibWFwLWJvZHlcIjtcbiAgICAvLyBUaGVzZSBhcmUgcmVnaW9uIG5hbWVzIChyYW5nZXMgb2Ygb3RoZXIgZW51bXMpXG4gICAgVml6SW1hZ2VSZWdpb25bXCJWSVpfUkVHSU9OX0VORFwiXSA9IFwiZW5kXCI7XG59KShWaXpJbWFnZVJlZ2lvbiA9IGV4cG9ydHMuVml6SW1hZ2VSZWdpb24gfHwgKGV4cG9ydHMuVml6SW1hZ2VSZWdpb24gPSB7fSkpO1xuLy8gbmFtZXMgb2YgbGVnYWN5IG1lbnUgaXRlbXNcbnZhciBMZWdhY3lNZW51TmFtZTtcbihmdW5jdGlvbiAoTGVnYWN5TWVudU5hbWUpIHtcbiAgICAvLyB2aWV3IHVuZGVybHlpbmcgZGF0YVxuICAgIExlZ2FjeU1lbnVOYW1lW1wiTE1fTkFNRV9WSUVXREFUQVwiXSA9IFwidmlld2RhdGFcIjtcbiAgICAvLyBleHBvcnQgaW1hZ2VcbiAgICBMZWdhY3lNZW51TmFtZVtcIkxNX05BTUVfRVhQT1JUSU1BR0VcIl0gPSBcImV4cG9ydGltYWdlXCI7XG4gICAgLy8gZXhwb3J0IGRhdGFcbiAgICBMZWdhY3lNZW51TmFtZVtcIkxNX05BTUVfRVhQT1JUREFUQVwiXSA9IFwiZXhwb3J0ZGF0YVwiO1xuICAgIC8vIGV4cG9ydCBhcyBjcm9zc3RhYlxuICAgIExlZ2FjeU1lbnVOYW1lW1wiTE1fTkFNRV9FWFBPUlRDUk9TU1RBQlwiXSA9IFwiZXhwb3J0Y3Jvc3N0YWJcIjtcbiAgICAvLyBwcmludCB0byBwZGZcbiAgICBMZWdhY3lNZW51TmFtZVtcIkxNX05BTUVfUFJJTlRcIl0gPSBcInByaW50XCI7XG59KShMZWdhY3lNZW51TmFtZSA9IGV4cG9ydHMuTGVnYWN5TWVudU5hbWUgfHwgKGV4cG9ydHMuTGVnYWN5TWVudU5hbWUgPSB7fSkpO1xuLy8gc3RhdGVzIG9mIGxlZ2FjeSBtZW51IGl0ZW1zXG52YXIgTGVnYWN5TWVudVN0YXRlO1xuKGZ1bmN0aW9uIChMZWdhY3lNZW51U3RhdGUpIHtcbiAgICAvLyB2aXNpYmxlIHN0YXRlXG4gICAgTGVnYWN5TWVudVN0YXRlW1wiTE1fU1RBVEVfVklTSUJMRVwiXSA9IFwidmlzaWJsZVwiO1xuICAgIC8vIGNoZWNrZWQgc3RhdGVcbiAgICBMZWdhY3lNZW51U3RhdGVbXCJMTV9TVEFURV9DSEVDS0VEXCJdID0gXCJjaGVja2VkXCI7XG4gICAgLy8gZ3JheWVkIHN0YXRlXG4gICAgTGVnYWN5TWVudVN0YXRlW1wiTE1fU1RBVEVfR1JBWUVEXCJdID0gXCJncmF5ZWRcIjtcbiAgICAvLyByYWRpbyBzdGF0ZVxuICAgIExlZ2FjeU1lbnVTdGF0ZVtcIkxNX1NUQVRFX1JBRElPXCJdID0gXCJyYWRpb1wiO1xufSkoTGVnYWN5TWVudVN0YXRlID0gZXhwb3J0cy5MZWdhY3lNZW51U3RhdGUgfHwgKGV4cG9ydHMuTGVnYWN5TWVudVN0YXRlID0ge30pKTtcbi8vIFxudmFyIE1lbWJlclVuaXF1ZW5lc3NUeXBlO1xuKGZ1bmN0aW9uIChNZW1iZXJVbmlxdWVuZXNzVHlwZSkge1xuICAgIC8vIFxuICAgIE1lbWJlclVuaXF1ZW5lc3NUeXBlW1wiVW5pcXVlV2l0aGluQ3ViZVwiXSA9IFwiY3ViZS11bmlxdWVcIjtcbiAgICAvLyBcbiAgICBNZW1iZXJVbmlxdWVuZXNzVHlwZVtcIlVuaXF1ZVdpdGhpbkhpZXJhcmNoeVwiXSA9IFwiaGllcmFyY2h5LXVuaXF1ZVwiO1xuICAgIC8vIFxuICAgIE1lbWJlclVuaXF1ZW5lc3NUeXBlW1wiVW5pcXVlV2l0aGluTGV2ZWxcIl0gPSBcImxldmVsLXVuaXF1ZVwiO1xuICAgIC8vIFxuICAgIE1lbWJlclVuaXF1ZW5lc3NUeXBlW1wiVW5pcXVlV2l0aGluUGFyZW50XCJdID0gXCJwYXJlbnQtdW5pcXVlXCI7XG59KShNZW1iZXJVbmlxdWVuZXNzVHlwZSA9IGV4cG9ydHMuTWVtYmVyVW5pcXVlbmVzc1R5cGUgfHwgKGV4cG9ydHMuTWVtYmVyVW5pcXVlbmVzc1R5cGUgPSB7fSkpO1xuLy8gXG52YXIgRGltZW5zaW9uVHlwZTtcbihmdW5jdGlvbiAoRGltZW5zaW9uVHlwZSkge1xuICAgIC8vIGp1c3QgYSByZWd1bGFyIGRpbWVuc2lvbiwgbm8gc3BlY2lhbCBzZW1hbnRpY3NcbiAgICBEaW1lbnNpb25UeXBlW1wiUmVndWxhckRpbWVuc2lvblwiXSA9IFwicmVndWxhci1kaW1lbnNpb25cIjtcbiAgICAvLyB0aGUgbWVhc3VyZXMgZGltZW5zaW9uLCB3aGljaCB3ZSBkb24ndCBtb2RlbCBhcyBzdWNoXG4gICAgRGltZW5zaW9uVHlwZVtcIk1lYXN1cmVEaW1lbnNpb25cIl0gPSBcIm1lYXN1cmUtZGltZW5zaW9uXCI7XG4gICAgLy8gYSB0aW1lIGRpbWVuc2lvblxuICAgIERpbWVuc2lvblR5cGVbXCJUaW1lRGltZW5zaW9uXCJdID0gXCJ0aW1lLWRpbWVuc2lvblwiO1xufSkoRGltZW5zaW9uVHlwZSA9IGV4cG9ydHMuRGltZW5zaW9uVHlwZSB8fCAoZXhwb3J0cy5EaW1lbnNpb25UeXBlID0ge30pKTtcbi8vIFxudmFyIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlO1xuKGZ1bmN0aW9uIChTY2hlbWFWaWV3ZXJEYXRhU291cmNlVHlwZSkge1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX05PUk1BTFwiXSA9IFwiZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX05PUk1BTF9QUklNQVJZXCJdID0gXCJkYXRhc291cmNlLXByaW1hcnlcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlVHlwZVtcIlNWVF9EU19OT1JNQUxfU0VDT05EQVJZXCJdID0gXCJkYXRhc291cmNlLXNlY29uZGFyeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX0VYVFJBQ1RcIl0gPSBcImV4dHJhY3RcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlVHlwZVtcIlNWVF9EU19FWFRSQUNUX1BSSU1BUllcIl0gPSBcImV4dHJhY3QtcHJpbWFyeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX0VYVFJBQ1RfU0VDT05EQVJZXCJdID0gXCJleHRyYWN0LXNlY29uZGFyeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX0NVQkVcIl0gPSBcImN1YmVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJEYXRhU291cmNlVHlwZVtcIlNWVF9EU19DVUJFX1BSSU1BUllcIl0gPSBcImN1YmUtcHJpbWFyeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX0NVQkVfU0VDT05EQVJZXCJdID0gXCJjdWJlLXNlY29uZGFyeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlW1wiU1ZUX0RTX1NFUlZFUlwiXSA9IFwic2VydmVyXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGVbXCJTVlRfRFNfU0VSVkVSX1BSSU1BUllcIl0gPSBcInNlcnZlci1wcmltYXJ5XCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGVbXCJTVlRfRFNfU0VSVkVSX1NFQ09OREFSWVwiXSA9IFwic2VydmVyLXNlY29uZGFyeVwiO1xufSkoU2NoZW1hVmlld2VyRGF0YVNvdXJjZVR5cGUgPSBleHBvcnRzLlNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlIHx8IChleHBvcnRzLlNjaGVtYVZpZXdlckRhdGFTb3VyY2VUeXBlID0ge30pKTtcbi8vIFxudmFyIFNjaGVtYUl0ZW1UeXBlO1xuKGZ1bmN0aW9uIChTY2hlbWFJdGVtVHlwZSkge1xuICAgIC8vIFxuICAgIFNjaGVtYUl0ZW1UeXBlW1wiSVRfRElNRU5TSU9OXCJdID0gXCJkaW1lbnNpb25cIjtcbiAgICAvLyBcbiAgICBTY2hlbWFJdGVtVHlwZVtcIklUX0hJRVJBUkNIWVwiXSA9IFwiaGllcmFyY2h5XCI7XG4gICAgLy8gXG4gICAgU2NoZW1hSXRlbVR5cGVbXCJJVF9MRVZFTFwiXSA9IFwibGV2ZWxcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFJdGVtVHlwZVtcIklUX0NBVEVHT1JJQ0FMXCJdID0gXCJjYXRlZ29yaWNhbFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYUl0ZW1UeXBlW1wiSVRfTUVBU1VSRVwiXSA9IFwibWVhc3VyZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYUl0ZW1UeXBlW1wiSVRfVkFMVUVcIl0gPSBcInZhbHVlXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hSXRlbVR5cGVbXCJJVF9HUk9VUFwiXSA9IFwiZ3JvdXBcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFJdGVtVHlwZVtcIklUX0ZPTERFUlwiXSA9IFwiZm9sZGVyXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hSXRlbVR5cGVbXCJJVF9UQUJMRVwiXSA9IFwidGFibGVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFJdGVtVHlwZVtcIklUX0RSSUxMUEFUSFwiXSA9IFwiZHJpbGxwYXRoXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hSXRlbVR5cGVbXCJJVF9QQVJBTUVURVJcIl0gPSBcInBhcmFtZXRlclwiO1xuICAgIC8vIFxuICAgIFNjaGVtYUl0ZW1UeXBlW1wiSVRfSEVBREVSXCJdID0gXCJoZWFkZXJcIjtcbn0pKFNjaGVtYUl0ZW1UeXBlID0gZXhwb3J0cy5TY2hlbWFJdGVtVHlwZSB8fCAoZXhwb3J0cy5TY2hlbWFJdGVtVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGU7XG4oZnVuY3Rpb24gKFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZSkge1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9CTEFOS1wiXSA9IFwiYmxhbmtcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfUkVMQVRJT05BTFwiXSA9IFwicmVsYXRpb25hbFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9DVUJFXCJdID0gXCJjdWJlXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RBVEVUSU1FXCJdID0gXCJkYXRldGltZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9EQVRFXCJdID0gXCJkYXRlXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX1RJTUVcIl0gPSBcInRpbWVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfVEVYVFwiXSA9IFwidGV4dFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9OVU1CRVJcIl0gPSBcIm51bWJlclwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9DVVJSRU5DWVwiXSA9IFwiY3VycmVuY3lcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQk9PTFwiXSA9IFwiYm9vbFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9ISUVSQVJDSFlcIl0gPSBcImhpZXJhcmNoeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9MRVZFTFwiXSA9IFwibGV2ZWxcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQVRUUklCVVRFXCJdID0gXCJhdHRyaWJ1dGVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfRk9MREVSX0NMT1NFRFwiXSA9IFwiZm9sZGVyLWNsb3NlZFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9GT0xERVJfT1BFTlwiXSA9IFwiZm9sZGVyLW9wZW5cIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfR1JPVVBcIl0gPSBcImdycFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dST1VQXCJdID0gXCJpbnZhbGlkLWdycFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9TVlJfR1JQXCJdID0gXCJzdnItZ3JwXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1ZSX0dSUFwiXSA9IFwiaW52YWxpZC1zdnItZ3JwXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX05VTUVSSUNfQklOX09cIl0gPSBcIm51bWVyaWMtYmluLW9cIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfTlVNRVJJQ19CSU5fUVwiXSA9IFwibnVtZXJpYy1iaW4tcVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX05VTUVSSUNfQklOXCJdID0gXCJpbnZhbGlkLW51bWVyaWMtYmluXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0RSSUxMUEFUSFwiXSA9IFwiZHJpbGxwYXRoXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX1ZBTElEX1NZU0dSUFwiXSA9IFwidmFsaWQtc3lzZ3JwXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfU1lTR1JQXCJdID0gXCJpbnZhbGlkLXN5c2dycFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9DQVRfQklOXCJdID0gXCJjYXQtYmluXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0NBVF9CSU5fR0VPR0FQSElDX09cIl0gPSBcImNhdC1iaW4tZ2VvZ2FwaGljLW9cIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfQ0FUX0JJTl9HRU9HQVBISUNfUVwiXSA9IFwiY2F0LWJpbi1nZW9nYXBoaWMtcVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0NBVF9CSU5cIl0gPSBcImludmFsaWQtY2F0LWJpblwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0NBVF9CSU5fR0VPR0FQSElDX09cIl0gPSBcImludmFsaWQtY2F0LWJpbi1nZW9nYXBoaWMtb1wiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0NBVF9CSU5fR0VPR0FQSElDX1FcIl0gPSBcImludmFsaWQtY2F0LWJpbi1nZW9nYXBoaWMtcVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9HRU9HUkFQSElDXCJdID0gXCJnZW9ncmFwaGljXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX0lOVkFMSURfR0VPR1JBUEhJQ19PXCJdID0gXCJpbnZhbGlkLWdlb2dyYXBoaWMtb1wiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9JTlZBTElEX0dFT0dSQVBISUNfUVwiXSA9IFwiaW52YWxpZC1nZW9ncmFwaGljLXFcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfSURFTlRfU0VUXCJdID0gXCJpZGVudC1zZXRcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGVfX1NWVF9BTExfSU5WQUxJRF9JREVOVF9TRVRcIl0gPSBcImludmFsaWQtaWRlbnQtc2V0XCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRBbGxUeXBlX19TVlRfQUxMX1RBQkxFXCJdID0gXCJ0YWJsZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZV9fU1ZUX0FMTF9OT05FXCJdID0gXCJub25lXCI7XG59KShTY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGUgPSBleHBvcnRzLlNjaGVtYVZpZXdlckZpZWxkQWxsVHlwZSB8fCAoZXhwb3J0cy5TY2hlbWFWaWV3ZXJGaWVsZEFsbFR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGU7XG4oZnVuY3Rpb24gKFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlKSB7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9CTEFOS1wiXSA9IFwiY3ViZS1tLWJsYW5rXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9GT0xERVJfQ0xPU0VEXCJdID0gXCJjdWJlLW0tZm9sZGVyLWNsb3NlZFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fRk9MREVSX09QRU5cIl0gPSBcImN1YmUtbS1mb2xkZXItb3BlblwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fREFURVRJTUVcIl0gPSBcImN1YmUtbS1kYXRldGltZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fREFURVwiXSA9IFwiY3ViZS1tLWRhdGVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlX19TVlRfQ1VCRV9NX1RJTUVcIl0gPSBcImN1YmUtbS10aW1lXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9URVhUXCJdID0gXCJjdWJlLW0tdGV4dFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fTlVNQkVSXCJdID0gXCJjdWJlLW0tbnVtYmVyXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9DVVJSRU5DWVwiXSA9IFwiY3ViZS1tLWN1cnJlbmN5XCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZV9fU1ZUX0NVQkVfTV9CT09MRUFOXCJdID0gXCJjdWJlLW0tYm9vbGVhblwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlTWVhc3VyZVR5cGVfX1NWVF9DVUJFX01fR0VPR1JBUEhJQ1wiXSA9IFwiY3ViZS1tLWdlb2dyYXBoaWNcIjtcbn0pKFNjaGVtYVZpZXdlckZpZWxkQ3ViZU1lYXN1cmVUeXBlID0gZXhwb3J0cy5TY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZSB8fCAoZXhwb3J0cy5TY2hlbWFWaWV3ZXJGaWVsZEN1YmVNZWFzdXJlVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlO1xuKGZ1bmN0aW9uIChTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlKSB7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfQkxBTktcIl0gPSBcImN1YmUtZC1ibGFua1wiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0hJRVJBUkNIWVwiXSA9IFwiY3ViZS1kLWhpZXJhcmNoeVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0xFVkVMXCJdID0gXCJjdWJlLWQtbGV2ZWxcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9ISUVSX0NBTENcIl0gPSBcImN1YmUtZC1oaWVyLWNhbGNcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9MVkxfQ0FMQ1wiXSA9IFwiY3ViZS1kLWx2bC1jYWxjXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfSElFUl9HRU9cIl0gPSBcImN1YmUtZC1oaWVyLWdlb1wiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0hJRVJfR0VPX0NVU1RPTVwiXSA9IFwiY3ViZS1kLWhpZXItZ2VvLWN1c3RvbVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0ZPTERFUl9DTE9TRURcIl0gPSBcImN1YmUtZC1mb2xkZXItY2xvc2VkXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfRk9MREVSX09QRU5cIl0gPSBcImN1YmUtZC1mb2xkZXItb3BlblwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0FUVFJJQlVURVwiXSA9IFwiY3ViZS1kLWF0dHJpYnV0ZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX1RFWFRcIl0gPSBcImN1YmUtZC10ZXh0XCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfREFURVRJTUVcIl0gPSBcImN1YmUtZC1kYXRldGltZVwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0RBVEVUSU1FX0lOVkFMSURcIl0gPSBcImN1YmUtZC1kYXRldGltZS1pbnZhbGlkXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfREFURVwiXSA9IFwiY3ViZS1kLWRhdGVcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9EQVRFX0lOVkFMSURcIl0gPSBcImN1YmUtZC1kYXRlLWludmFsaWRcIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9HRU9HUkFQSElDXCJdID0gXCJjdWJlLWQtZ2VvZ3JhcGhpY1wiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0dFT0dSQVBISUNfSU5WQUxJRFwiXSA9IFwiY3ViZS1kLWdlb2dyYXBoaWMtaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX0dFT0dSQVBISUNfQ1VTVE9NXCJdID0gXCJjdWJlLWQtZ2VvZ3JhcGhpYy1jdXN0b21cIjtcbiAgICAvLyBcbiAgICBTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlW1wiU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZV9fU1ZUX0NVQkVfRF9HRU9HUkFQSElDX0NVU1RPTV9JTlZBTElEXCJdID0gXCJjdWJlLWQtZ2VvZ3JhcGhpYy1jdXN0b20taW52YWxpZFwiO1xuICAgIC8vIFxuICAgIFNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVbXCJTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlX19TVlRfQ1VCRV9EX1ZBUllJTkdcIl0gPSBcImN1YmUtZC12YXJ5aW5nXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfVURBXCJdID0gXCJjdWJlLWQtdWRhXCI7XG4gICAgLy8gXG4gICAgU2NoZW1hVmlld2VyRmllbGRDdWJlRGltZW5zaW9uVHlwZVtcIlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGVfX1NWVF9DVUJFX0RfTlVNQkVSXCJdID0gXCJjdWJlLWQtbnVtYmVyXCI7XG59KShTY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlID0gZXhwb3J0cy5TY2hlbWFWaWV3ZXJGaWVsZEN1YmVEaW1lbnNpb25UeXBlIHx8IChleHBvcnRzLlNjaGVtYVZpZXdlckZpZWxkQ3ViZURpbWVuc2lvblR5cGUgPSB7fSkpO1xuLy8gSW5kaWNhdGVzIHRoZSBzZWxlY3Rpb24gbW9kZTogU2luZ2xlIHwgTXVsdGlwbGUuXG52YXIgSFNNU2VsZWN0aW9uTW9kZTtcbihmdW5jdGlvbiAoSFNNU2VsZWN0aW9uTW9kZSkge1xuICAgIC8vIFxuICAgIEhTTVNlbGVjdGlvbk1vZGVbXCJTaW5nbGVcIl0gPSBcInNlbGVjdGlvbi1tb2RlLXNpbmdsZVwiO1xuICAgIC8vIFxuICAgIEhTTVNlbGVjdGlvbk1vZGVbXCJNdWx0aXBsZVwiXSA9IFwic2VsZWN0aW9uLW1vZGUtbXVsdGlwbGVcIjtcbn0pKEhTTVNlbGVjdGlvbk1vZGUgPSBleHBvcnRzLkhTTVNlbGVjdGlvbk1vZGUgfHwgKGV4cG9ydHMuSFNNU2VsZWN0aW9uTW9kZSA9IHt9KSk7XG4vLyBJbmRpY2F0ZXMgd2hhdCBkZWZhdWx0IG1lbWJlciB0byB1c2UgZm9yIGEgaGllcmFyY2hpY2FsIGZpZWxkLlxudmFyIEhTTURlZmF1bHRNZW1iZXJUeXBlO1xuKGZ1bmN0aW9uIChIU01EZWZhdWx0TWVtYmVyVHlwZSkge1xuICAgIC8vIFxuICAgIEhTTURlZmF1bHRNZW1iZXJUeXBlW1wiVXNlRGVmYXVsdE1lbWJlclwiXSA9IFwidXNlLWRlZmF1bHQtbWVtYmVyXCI7XG4gICAgLy8gXG4gICAgSFNNRGVmYXVsdE1lbWJlclR5cGVbXCJVc2VBbGxNZW1iZXJcIl0gPSBcInVzZS1hbGwtbWVtYmVyXCI7XG4gICAgLy8gXG4gICAgSFNNRGVmYXVsdE1lbWJlclR5cGVbXCJVc2VTZWxlY3RlZE1lbWJlclwiXSA9IFwidXNlLXNlbGVjdGVkLW1lbWJlclwiO1xufSkoSFNNRGVmYXVsdE1lbWJlclR5cGUgPSBleHBvcnRzLkhTTURlZmF1bHRNZW1iZXJUeXBlIHx8IChleHBvcnRzLkhTTURlZmF1bHRNZW1iZXJUeXBlID0ge30pKTtcbi8vIEhpZXJhcmNoaWNhbCBzZWxlY3QgbW9kZWwgcHJlc2VudGF0aW9uIGxheWVyIG5vdGlmaWNhdGlvbi5cbnZhciBIU01Ob3RpZmljYXRpb25UeXBlO1xuKGZ1bmN0aW9uIChIU01Ob3RpZmljYXRpb25UeXBlKSB7XG4gICAgLy8gXG4gICAgSFNNTm90aWZpY2F0aW9uVHlwZVtcIlVwZGF0ZWRcIl0gPSBcImhzbS1ub3RpZmljYXRpb24tdXBkYXRlZFwiO1xuICAgIC8vIFxuICAgIEhTTU5vdGlmaWNhdGlvblR5cGVbXCJNaXNzaW5nTWVtYmVyc1wiXSA9IFwiaHNtLW5vdGlmaWNhdGlvbi1taXNzaW5nLW1lbWJlcnNcIjtcbn0pKEhTTU5vdGlmaWNhdGlvblR5cGUgPSBleHBvcnRzLkhTTU5vdGlmaWNhdGlvblR5cGUgfHwgKGV4cG9ydHMuSFNNTm90aWZpY2F0aW9uVHlwZSA9IHt9KSk7XG4vLyBUeXBlIG9mIGhpZXJhcmNoeSBjb21tYW5kIHNlbGVjdGlvbiB0byBiZSBwZXJmb3JtZWQuXG52YXIgSFNNU2VsZWN0aW9uUmVxdWVzdFR5cGU7XG4oZnVuY3Rpb24gKEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlKSB7XG4gICAgLy8gXG4gICAgSFNNU2VsZWN0aW9uUmVxdWVzdFR5cGVbXCJTZWxlY3RNb2RlXCJdID0gXCJoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0LW1vZGVcIjtcbiAgICAvLyBcbiAgICBIU01TZWxlY3Rpb25SZXF1ZXN0VHlwZVtcIk1lbWJlckRlc2NlbmRhbnRzU3RhdGVcIl0gPSBcImhzbS1zZWxlY3Rpb24tcmVxdWVzdC1kZXNjZW5kYW50cy1zdGF0ZVwiO1xuICAgIC8vIFxuICAgIEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlW1wiU2VsZWN0ZWRNZW1iZXJUdXBsZVwiXSA9IFwiaHNtLXNlbGVjdGlvbi1yZXF1ZXN0LXNlbGVjdGVkLW1lbWJlci10dXBsZVwiO1xuICAgIC8vIFxuICAgIEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlW1wiU2VsZWN0ZWRNZW1iZXJDYXB0aW9uXCJdID0gXCJoc20tc2VsZWN0aW9uLXJlcXVlc3Qtc2VsZWN0ZWQtbWVtYmVyLWNhcHRpb25cIjtcbn0pKEhTTVNlbGVjdGlvblJlcXVlc3RUeXBlID0gZXhwb3J0cy5IU01TZWxlY3Rpb25SZXF1ZXN0VHlwZSB8fCAoZXhwb3J0cy5IU01TZWxlY3Rpb25SZXF1ZXN0VHlwZSA9IHt9KSk7XG4vLyBUeXBlIG9mIGhpZXJhcmNoeSBtZW1iZXIgc2VsZWN0aW9uIHRvIGJlIHBlcmZvcm1lZC5cbnZhciBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZTtcbihmdW5jdGlvbiAoSFNNTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGUpIHtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVtcIlNlbGVjdE1lbWJlclwiXSA9IFwiaHNtLW1lbWJlci1yZXF1ZXN0LXNlbGVjdC1tZW1iZXJcIjtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVtcIlNlbGVjdFN1YnRyZWVcIl0gPSBcImhzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3Qtc3VidHJlZVwiO1xuICAgIC8vIFxuICAgIEhTTU1lbWJlclNlbGVjdFJlcXVlc3RUeXBlW1wiU2VsZWN0TGV2ZWxcIl0gPSBcImhzbS1tZW1iZXItcmVxdWVzdC1zZWxlY3QtbGV2ZWxcIjtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVtcIk1lbWJlclNlbGVjdFwiXSA9IFwiaHNtLW1lbWJlci1yZXF1ZXN0LW1lbWJlci1zZWxlY3RcIjtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZVtcIk1lbWJlckxldmVsXCJdID0gXCJoc20tbWVtYmVyLXJlcXVlc3QtbWVtYmVyLWxldmVsXCI7XG59KShIU01NZW1iZXJTZWxlY3RSZXF1ZXN0VHlwZSA9IGV4cG9ydHMuSFNNTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGUgfHwgKGV4cG9ydHMuSFNNTWVtYmVyU2VsZWN0UmVxdWVzdFR5cGUgPSB7fSkpO1xuLy8gSGllcmFyY2h5IGxldmVsIHNlbGVjdGlvbiBzdGF0ZS5cbnZhciBIU01MZXZlbFNlbGVjdGlvblN0YXRlO1xuKGZ1bmN0aW9uIChIU01MZXZlbFNlbGVjdGlvblN0YXRlKSB7XG4gICAgLy8gXG4gICAgSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZVtcIkFsbFNlbGVjdGVkXCJdID0gXCJoc20tYWxsLXNlbGVjdGVkXCI7XG4gICAgLy8gXG4gICAgSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZVtcIk5vbmVTZWxlY3RlZFwiXSA9IFwiaHNtLW5vbmUtc2VsZWN0ZWRcIjtcbiAgICAvLyBcbiAgICBIU01MZXZlbFNlbGVjdGlvblN0YXRlW1wiU29tZVNlbGVjdGVkXCJdID0gXCJoc20tc29tZS1zZWxlY3RlZFwiO1xuICAgIC8vIFVzZWQgd2hlbiBhIHF1ZXJ5IGlzIG1hZGUgb2YgbGV2ZWxzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGdpdmVuIHN1YnRyZWUuIFdlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhhdCBmcm9tIG5vbmUgc2VsZWN0ZWQgd2hpY2ggaW1wbGllcyB0aGF0IG1lbWJlcnMgZXhpc3QgYnV0IGFyZSBub3Qgc2VsZWN0ZWQuXG4gICAgSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZVtcIlVua25vd25TZWxlY3RlZFwiXSA9IFwiaHNtLXVua25vd24tc2VsZWN0ZWRcIjtcbn0pKEhTTUxldmVsU2VsZWN0aW9uU3RhdGUgPSBleHBvcnRzLkhTTUxldmVsU2VsZWN0aW9uU3RhdGUgfHwgKGV4cG9ydHMuSFNNTGV2ZWxTZWxlY3Rpb25TdGF0ZSA9IHt9KSk7XG4vLyBcbnZhciBIU01NZW1iZXJMb2FkU3RhdGU7XG4oZnVuY3Rpb24gKEhTTU1lbWJlckxvYWRTdGF0ZSkge1xuICAgIC8vIFxuICAgIEhTTU1lbWJlckxvYWRTdGF0ZVtcIkFsbExvYWRlZFwiXSA9IFwiaHNtLWFsbC1sb2FkZWRcIjtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJMb2FkU3RhdGVbXCJOb25lTG9hZGVkXCJdID0gXCJoc20tbm9uZS1sb2FkZWRcIjtcbiAgICAvLyBcbiAgICBIU01NZW1iZXJMb2FkU3RhdGVbXCJTb21lTG9hZGVkXCJdID0gXCJoc20tc29tZS1sb2FkZWRcIjtcbn0pKEhTTU1lbWJlckxvYWRTdGF0ZSA9IGV4cG9ydHMuSFNNTWVtYmVyTG9hZFN0YXRlIHx8IChleHBvcnRzLkhTTU1lbWJlckxvYWRTdGF0ZSA9IHt9KSk7XG4vLyBSZXR1cm4gdmFsdWUgZnJvbSBDb25uZWN0aW9uU3RhdGVDb250cm9sbGVyIGNvbm5lY3QgbWV0aG9kc1xudmFyIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0O1xuKGZ1bmN0aW9uIChDb25uZWN0aW9uQXR0ZW1wdFJlc3VsdCkge1xuICAgIC8vIEFsbCBkYXRhIHNvdXJjZXMgcmVxdWVzdGVkIGFyZSBjb25uZWN0ZWQuXG4gICAgQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHRbXCJDQVJfQ29ubmVjdGVkXCJdID0gXCJjb25uZWN0ZWRcIjtcbiAgICAvLyBOb3QgYWxsIGRhdGEgc291cmNlcyBhcmUgY29ubmVjdGVkLlxuICAgIENvbm5lY3Rpb25BdHRlbXB0UmVzdWx0W1wiQ0FSX05vdENvbm5lY3RlZFwiXSA9IFwibm90LWNvbm5lY3RlZFwiO1xuICAgIC8vIFRoZSB1c2VyIGludGVycnVwdGVkIHRoZSBjb25uZWN0aW9uIGZsb3cgdG8gZWRpdCBhIGNvbm5lY3Rpb24uXG4gICAgQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHRbXCJDQVJfVXNlckVkaXRDb25uZWN0aW9uXCJdID0gXCJ1c2VyLWVkaXQtY29ubmVjdGlvblwiO1xuICAgIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0uXG4gICAgQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHRbXCJDQVJfQ29ubmVjdGlvbk5vdFN1cHBvcnRlZFwiXSA9IFwiY29ubmVjdGlvbi1ub3Qtc3VwcG9ydGVkXCI7XG59KShDb25uZWN0aW9uQXR0ZW1wdFJlc3VsdCA9IGV4cG9ydHMuQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQgfHwgKGV4cG9ydHMuQ29ubmVjdGlvbkF0dGVtcHRSZXN1bHQgPSB7fSkpO1xuLy8gUmV0dXJuIHZhbHVlIGZyb20gQ29ubmVjdFRvRGF0YVNlcnZlclNvdXJjZUNvbW1hbmQ6OkRvXG52YXIgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHQ7XG4oZnVuY3Rpb24gKERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0KSB7XG4gICAgLy8gVGhlIGRhdGEgc291cmNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZC5cbiAgICBEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdFtcIkRTQ1JfU3VjY2Vzc1wiXSA9IFwic3VjY2Vzc1wiO1xuICAgIC8vIEVycm9yIHRoYXQgd2FzIGhhbmRsZWQuIFRoZXJlJ3Mgbm8gbW9yZSB0byBkbyAoZXguIGNhbmNlbCwgb3IgYW4gZXhjZXB0aW9uIHRoYXQgdGhlIGNvbW1hbmQganVzdCBwcmludGVkIHRvIHRoZSBlcnJvciBkaWFsb2cpLlxuICAgIERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0W1wiRFNDUl9GYWlsdXJlXCJdID0gXCJmYWlsdXJlXCI7XG4gICAgLy8gVHJ5IGFnYWluIGFmdGVyIG1ha2luZyBhIG5ldyB3b3JrYm9vay5cbiAgICBEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdFtcIkRTQ1JfUmVxdWlyZXNXb3JrYm9va0RvY1wiXSA9IFwicmVxdWlyZXMtd29ya2Jvb2tcIjtcbiAgICAvLyBUcnkgYWdhaW4gYWZ0ZXIgbG9nZ2luZyBiYWNrIG9uIHRvIFRhYmxlYXUgc2VydmVyLlxuICAgIERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0W1wiRFNDUl9SZXF1aXJlc0F1dGhlbnRpY2F0aW9uXCJdID0gXCJyZXF1aXJlcy1hdXRoZW50aWNhdGlvblwiO1xuICAgIC8vIFRyeSBhZ2FpbiBhZnRlciBnZXR0aW5nIGRhdGFiYXNlIGNyZWRlbnRpYWxzIGZyb20gdGhlIHVzZXIuIFBhc3MgdGhlbSBpbiB0aHJvdWdoIHRoZSBEUElfRGF0YXNvdXJjZVVzZXJuYW1lIGFuZCB0aGUgRFBJX0RhdGFzb3VyY2VQYXNzd29yZCBwYXJhbWV0ZXJzLlxuICAgIERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0W1wiRFNDUl9SZXF1aXJlc0RCQ3JlZGVudGlhbHNcIl0gPSBcInJlcXVpcmVzLWRiLWNyZWRlbnRpYWxzXCI7XG4gICAgLy8gVHJ5IGFnYWluIGFmdGVyIGFzc29jaWF0aW5nIGFuIE9BdXRoIGtleSBmcm9tIHRoZSB1c2VyIGtleWNoYWluIHdpdGggdGhlIGRhdGEgc291cmNlLlxuICAgIERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0W1wiRFNDUl9SZXF1aXJlc09BdXRoS2V5QXNzb2NpYXRpb25cIl0gPSBcInJlcXVpcmVzLW9hdXRoLWtleS1hc3NvY2lhdGlvblwiO1xuICAgIC8vIFRoZSBPQXV0aCBjcmVkZW50aWFscyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFzb3VyY2UgYXJlIG5vdCB2YWxpZC5cbiAgICBEYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdFtcIkRTQ1JfUmVxdWlyZXNWYWxpZE9BdXRoS2V5XCJdID0gXCJyZXF1aXJlcy12YWxpZC1vYXV0aC1rZXlcIjtcbiAgICAvLyBNdWx0aXBsZSBsZWFmIGNvbm5lY3Rpb25zIHdpdGhpbiBhIGZlZGVyYXRlZCBkYXRhIHNvdXJjZSBjb250YWluIGVycm9ycyAoZS5nLiwgbXVsdGlwbGUgbGVhZnMgbWlnaHQgbmVlZCBjcmVkZW50aWFscykuXG4gICAgRGF0YVNlcnZlckNvbm5lY3Rpb25SZXN1bHRbXCJEU0NSX0ZlZGVyYXRlZEVycm9yXCJdID0gXCJmZWRlcmF0ZWQtZXJyb3JcIjtcbn0pKERhdGFTZXJ2ZXJDb25uZWN0aW9uUmVzdWx0ID0gZXhwb3J0cy5EYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCB8fCAoZXhwb3J0cy5EYXRhU2VydmVyQ29ubmVjdGlvblJlc3VsdCA9IHt9KSk7XG4vLyBUeXBlIG9mIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gY29ubmVjdC5cbnZhciBDb25uZWN0aW9uRXJyb3JUeXBlO1xuKGZ1bmN0aW9uIChDb25uZWN0aW9uRXJyb3JUeXBlKSB7XG4gICAgLy8gQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgYXJlIG5lZWRlZCBpbiBvcmRlciB0byBjb25uZWN0LlxuICAgIENvbm5lY3Rpb25FcnJvclR5cGVbXCJDRVRfTmVlZHNBdXRoZW50aWNhdGlvblwiXSA9IFwibmVlZHMtYXV0aGVudGljYXRpb25cIjtcbiAgICAvLyBUaGUgZGF0YSBzb3VyY2UgaXMgcHJvdmlkZWQgYnkgRGF0YSBTZXJ2ZXIsIGJ1dCBubyBEYXRhIFNlcnZlciBjb25uZWN0aW9uIGlzIHByZXNlbnQuXG4gICAgQ29ubmVjdGlvbkVycm9yVHlwZVtcIkNFVF9EYXRhU2VydmVyRGlzY29ubmVjdGVkXCJdID0gXCJkYXRhLXNlcnZlci1kaXNjb25uZWN0ZWRcIjtcbiAgICAvLyBBbiBleGNlcHRpb24gb2NjdXJyZWQgd2hpbGUgY29ubmVjdGluZy4gIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGEgYmFkIHBhc3N3b3JkLCBvciB3cm9uZyBwYXRoL3VybC5cbiAgICBDb25uZWN0aW9uRXJyb3JUeXBlW1wiQ0VUX0V4Y2VwdGlvbldoaWxlQ29ubmVjdGluZ1wiXSA9IFwiZXhjZXB0aW9uLXdoaWxlLWNvbm5lY3RpbmdcIjtcbiAgICAvLyBBbiBleGNlcHRpb24gb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGNvbm5lY3QgdGhlIGRhdGEgc291cmNlIGFzIGEgd2hvbGUuXG4gICAgQ29ubmVjdGlvbkVycm9yVHlwZVtcIkNFVF9FeGNlcHRpb25XaGlsZUNvbm5lY3RpbmdEYXRhU291cmNlXCJdID0gXCJleGNlcHRpb24td2hpbGUtY29ubmVjdGluZy1kYXRhLXNvdXJjZVwiO1xuICAgIC8vIFRoZSBjb25uZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgQ29ubmVjdGlvbkVycm9yVHlwZVtcIkNFVF9Db25uZWN0aW9uTm90U3VwcG9ydGVkXCJdID0gXCJjb25uZWN0aW9uLW5vdC1zdXBwb3J0ZWRcIjtcbiAgICAvLyBBbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1cnJlZC5cbiAgICBDb25uZWN0aW9uRXJyb3JUeXBlW1wiQ0VUX1VuZXhwZWN0ZWRFeGNlcHRpb25cIl0gPSBcInVuZXhwZWN0ZWQtZXhjZXB0aW9uXCI7XG59KShDb25uZWN0aW9uRXJyb3JUeXBlID0gZXhwb3J0cy5Db25uZWN0aW9uRXJyb3JUeXBlIHx8IChleHBvcnRzLkNvbm5lY3Rpb25FcnJvclR5cGUgPSB7fSkpO1xuLy8gaWRlbnRpZmllcyB0aGUgcGllY2Ugb2YgdGhlIHZpc3VhbFxudmFyIFZpc3VhbFBhcnQ7XG4oZnVuY3Rpb24gKFZpc3VhbFBhcnQpIHtcbiAgICAvLyBkZWZhdWx0IGJ1Y2tldCBpZiB0eXBlIGlzbid0IHNwZWNpZmllZFxuICAgIFZpc3VhbFBhcnRbXCJWUF9NaXNjXCJdID0gXCJtaXNjXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsUGFydFtcIlZQX0Fubm90YXRpb25zXCJdID0gXCJhbm5vdGF0aW9uc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9BeGlzUnVsZXNcIl0gPSBcImF4aXMtcnVsZXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfVG9wQXhpc1wiXSA9IFwidG9wLWF4aXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfQm90dG9tQXhpc1wiXSA9IFwiYm90dG9tLWF4aXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfTGVmdEF4aXNcIl0gPSBcImxlZnQtYXhpc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9SaWdodEF4aXNcIl0gPSBcInJpZ2h0LWF4aXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfQmFja2dyb3VuZFwiXSA9IFwiYmFja2dyb3VuZFwiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9Cb3JkZXJzXCJdID0gXCJib3JkZXJzXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsUGFydFtcIlZQX0NhcHRpb25cIl0gPSBcImNhcHRpb25cIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfQ2VsbEJvcmRlcnNcIl0gPSBcImNlbGwtYm9yZGVyc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9EZWNvcmF0aW9uXCJdID0gXCJkZWNvcmF0aW9uXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsUGFydFtcIlZQX0Ryb3BMaW5lc1wiXSA9IFwiZHJvcC1saW5lc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9YTGFiZWxzXCJdID0gXCJ4LWxhYmVsc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9ZTGFiZWxzXCJdID0gXCJ5LWxhYmVsc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9MZWdlbmRzXCJdID0gXCJsZWdlbmRzXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsUGFydFtcIlZQX01hcmtzXCJdID0gXCJtYXJrc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9NYXJrTGFiZWxzXCJdID0gXCJtYXJrLWxhYmVsc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9NYXJrVHJhaWxzXCJdID0gXCJtYXJrLXRyYWlsc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9SZWZlcmVuY2VCYW5kc1wiXSA9IFwicmVmLWJhbmRzXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsUGFydFtcIlZQX1JlZmVyZW5jZUxpbmVzXCJdID0gXCJyZWYtbGluZXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfUGFuZUJvcmRlcnNcIl0gPSBcInBhbmUtYm9yZGVyc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9TY3JvbGxCYXJzXCJdID0gXCJzY3JvbGwtYmFyc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbFBhcnRbXCJWUF9UaXRsZVwiXSA9IFwidGl0bGVcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfVHJlbmRMaW5lc1wiXSA9IFwidHJlbmQtbGluZXNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxQYXJ0W1wiVlBfVXBwZXJNYXBMYXllcnNcIl0gPSBcInVwcGVyLW1hcC1sYXllcnNcIjtcbn0pKFZpc3VhbFBhcnQgPSBleHBvcnRzLlZpc3VhbFBhcnQgfHwgKGV4cG9ydHMuVmlzdWFsUGFydCA9IHt9KSk7XG4vLyBEZXRhaWxzIG9mIHRoZSBwYXJ0IHdpdGhpbiBhbiBFbGVtZW50SWRcbnZhciBTY2VuZU1vZGVsVHlwZXNEZXRhaWw7XG4oZnVuY3Rpb24gKFNjZW5lTW9kZWxUeXBlc0RldGFpbCkge1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIk5vRGV0YWlsXCJdID0gXCJuby1kZXRhaWxcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNEZXRhaWxbXCJNYXJrRGV0YWlsXCJdID0gXCJtYXJrLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIkxhYmVsRGV0YWlsXCJdID0gXCJsYWJlbC1kZXRhaWxcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNEZXRhaWxbXCJMYWJlbEhhbmRsZURldGFpbFwiXSA9IFwibGFiZWwtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIlRvcExlZnRIYW5kbGVEZXRhaWxcIl0gPSBcInRvcC1sZWZ0LWhhbmRsZS1kZXRhaWxcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNEZXRhaWxbXCJUb3BNaWRIYW5kbGVEZXRhaWxcIl0gPSBcInRvcC1taWQtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIlRvcFJpZ2h0SGFuZGxlRGV0YWlsXCJdID0gXCJ0b3AtcmlnaHQtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIlJpZ2h0TWlkSGFuZGxlRGV0YWlsXCJdID0gXCJyaWdodC1taWQtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIkJvdHRvbVJpZ2h0SGFuZGxlRGV0YWlsXCJdID0gXCJib3R0b20tcmlnaHQtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIkJvdHRvbU1pZEhhbmRsZURldGFpbFwiXSA9IFwiYm90dG9tLW1pZC1oYW5kbGUtZGV0YWlsXCI7XG4gICAgLy8gXG4gICAgU2NlbmVNb2RlbFR5cGVzRGV0YWlsW1wiQm90dG9tTGVmdEhhbmRsZURldGFpbFwiXSA9IFwiYm90dG9tLWxlZnQtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIkxlZnRNaWRIYW5kbGVEZXRhaWxcIl0gPSBcImxlZnQtbWlkLWhhbmRsZS1kZXRhaWxcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNEZXRhaWxbXCJMaW5lRGV0YWlsXCJdID0gXCJsaW5lLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIkFycm93SGFuZGxlRGV0YWlsXCJdID0gXCJhcnJvdy1oYW5kbGUtZGV0YWlsXCI7XG4gICAgLy8gXG4gICAgU2NlbmVNb2RlbFR5cGVzRGV0YWlsW1wiVGV4dENlbnRlckhhbmRsZURldGFpbFwiXSA9IFwidGV4dC1jZW50ZXItaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIlRleHRCb3hIYW5kbGVEZXRhaWxcIl0gPSBcInRleHQtYm94LWhhbmRsZS1kZXRhaWxcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNEZXRhaWxbXCJNYXJrQXJyb3dIYW5kbGVEZXRhaWxcIl0gPSBcIm1hcmstYXJyb3ctaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIk1hcmtNb3ZhYmxlSGFuZGxlRGV0YWlsXCJdID0gXCJtYXJrLW1vdmFibGUtaGFuZGxlLWRldGFpbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0RldGFpbFtcIk1hcmtBbmNob3JEZXRhaWxcIl0gPSBcIm1hcmstYW5jaG9yLWRldGFpbFwiO1xufSkoU2NlbmVNb2RlbFR5cGVzRGV0YWlsID0gZXhwb3J0cy5TY2VuZU1vZGVsVHlwZXNEZXRhaWwgfHwgKGV4cG9ydHMuU2NlbmVNb2RlbFR5cGVzRGV0YWlsID0ge30pKTtcbi8vIFxudmFyIFNjZW5lTW9kZWxUeXBlc0hpdFR5cGU7XG4oZnVuY3Rpb24gKFNjZW5lTW9kZWxUeXBlc0hpdFR5cGUpIHtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNIaXRUeXBlW1wiTm9IaXRcIl0gPSBcIm5vLWhpdFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFR5cGVbXCJBcmVhSGl0XCJdID0gXCJhcmVhLWhpdFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFR5cGVbXCJOZWFySGl0XCJdID0gXCJuZWFyLWhpdFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFR5cGVbXCJFeGFjdEhpdFwiXSA9IFwiZXhhY3QtaGl0XCI7XG59KShTY2VuZU1vZGVsVHlwZXNIaXRUeXBlID0gZXhwb3J0cy5TY2VuZU1vZGVsVHlwZXNIaXRUeXBlIHx8IChleHBvcnRzLlNjZW5lTW9kZWxUeXBlc0hpdFR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2NlbmVNb2RlbFR5cGVzSGl0VGVzdFN0eWxlO1xuKGZ1bmN0aW9uIChTY2VuZU1vZGVsVHlwZXNIaXRUZXN0U3R5bGUpIHtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNIaXRUZXN0U3R5bGVbXCJCb3VuZHNUZXN0XCJdID0gXCJib3VuZHMtdGVzdFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RTdHlsZVtcIkV4YWN0VGVzdFwiXSA9IFwiZXhhY3QtdGVzdFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RTdHlsZVtcIlJhZGlhbERpc3RhbmNlVGVzdFwiXSA9IFwicmFkaWFsLWRpc3RhbmNlLXRlc3RcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNIaXRUZXN0U3R5bGVbXCJMYWJlbFRlc3RcIl0gPSBcImxhYmVsLXRlc3RcIjtcbn0pKFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RTdHlsZSA9IGV4cG9ydHMuU2NlbmVNb2RlbFR5cGVzSGl0VGVzdFN0eWxlIHx8IChleHBvcnRzLlNjZW5lTW9kZWxUeXBlc0hpdFRlc3RTdHlsZSA9IHt9KSk7XG4vLyBcbnZhciBTY2VuZU1vZGVsVHlwZXNIaXRUZXN0RmxhZ3M7XG4oZnVuY3Rpb24gKFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RGbGFncykge1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RGbGFnc1tcIkhpdFRlc3RBbGxcIl0gPSBcImhpdC10ZXN0LWFsbFwiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RGbGFnc1tcIkhpdFRlc3RJZ25vcmVMYWJlbHNcIl0gPSBcImhpdC10ZXN0LWlnbm9yZS1sYWJlbHNcIjtcbiAgICAvLyBcbiAgICBTY2VuZU1vZGVsVHlwZXNIaXRUZXN0RmxhZ3NbXCJIaXRUZXN0SWdub3JlQW5ub3RhdGlvbnNcIl0gPSBcImhpdC10ZXN0LWlnbm9yZS1hbm5vdGF0aW9uc1wiO1xuICAgIC8vIFxuICAgIFNjZW5lTW9kZWxUeXBlc0hpdFRlc3RGbGFnc1tcIkhpdFRlc3RGb3JPdmVybGF5XCJdID0gXCJoaXQtdGVzdC1mb3Itb3ZlcmxheVwiO1xufSkoU2NlbmVNb2RlbFR5cGVzSGl0VGVzdEZsYWdzID0gZXhwb3J0cy5TY2VuZU1vZGVsVHlwZXNIaXRUZXN0RmxhZ3MgfHwgKGV4cG9ydHMuU2NlbmVNb2RlbFR5cGVzSGl0VGVzdEZsYWdzID0ge30pKTtcbi8vIFxudmFyIEFubm90YXRlRW51bTtcbihmdW5jdGlvbiAoQW5ub3RhdGVFbnVtKSB7XG4gICAgLy8gXG4gICAgQW5ub3RhdGVFbnVtW1wiQUVfTWFya1wiXSA9IFwibWFya1wiO1xuICAgIC8vIFxuICAgIEFubm90YXRlRW51bVtcIkFFX1BvaW50XCJdID0gXCJwb2ludFwiO1xuICAgIC8vIFxuICAgIEFubm90YXRlRW51bVtcIkFFX0FyZWFcIl0gPSBcImFyZWFcIjtcbn0pKEFubm90YXRlRW51bSA9IGV4cG9ydHMuQW5ub3RhdGVFbnVtIHx8IChleHBvcnRzLkFubm90YXRlRW51bSA9IHt9KSk7XG4vLyBcbnZhciBNYXJrRW51bTtcbihmdW5jdGlvbiAoTWFya0VudW0pIHtcbiAgICAvLyBcbiAgICBNYXJrRW51bVtcIk1FX0F1dG9cIl0gPSBcImF1dG9cIjtcbiAgICAvLyBcbiAgICBNYXJrRW51bVtcIk1FX09uXCJdID0gXCJvblwiO1xuICAgIC8vIFxuICAgIE1hcmtFbnVtW1wiTUVfT2ZmXCJdID0gXCJvZmZcIjtcbiAgICAvLyBcbiAgICBNYXJrRW51bVtcIk1FX0NsZWFyXCJdID0gXCJjbGVhclwiO1xufSkoTWFya0VudW0gPSBleHBvcnRzLk1hcmtFbnVtIHx8IChleHBvcnRzLk1hcmtFbnVtID0ge30pKTtcbi8vIFxudmFyIFpvb21MZXZlbDtcbihmdW5jdGlvbiAoWm9vbUxldmVsKSB7XG4gICAgLy8gXG4gICAgWm9vbUxldmVsW1wiWk9PTV9FTlRJUkVfVklFV1wiXSA9IFwiem9vbS1lbnRpcmUtdmlld1wiO1xuICAgIC8vIFxuICAgIFpvb21MZXZlbFtcIlpPT01fRklUX1dJRFRIXCJdID0gXCJ6b29tLWZpdC13aWR0aFwiO1xuICAgIC8vIFxuICAgIFpvb21MZXZlbFtcIlpPT01fRklUX0hFSUdIVFwiXSA9IFwiem9vbS1maXQtaGVpZ2h0XCI7XG59KShab29tTGV2ZWwgPSBleHBvcnRzLlpvb21MZXZlbCB8fCAoZXhwb3J0cy5ab29tTGV2ZWwgPSB7fSkpO1xuLy8gXG52YXIgQWN0aW9uVHlwZTtcbihmdW5jdGlvbiAoQWN0aW9uVHlwZSkge1xuICAgIC8vIFxuICAgIEFjdGlvblR5cGVbXCJBVF9Vbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgLy8gXG4gICAgQWN0aW9uVHlwZVtcIkFUX0JydXNoXCJdID0gXCJicnVzaFwiO1xuICAgIC8vIFxuICAgIEFjdGlvblR5cGVbXCJBVF9GaWx0ZXJcIl0gPSBcImZpbHRlclwiO1xuICAgIC8vIFxuICAgIEFjdGlvblR5cGVbXCJBVF9VUkxcIl0gPSBcInVybFwiO1xufSkoQWN0aW9uVHlwZSA9IGV4cG9ydHMuQWN0aW9uVHlwZSB8fCAoZXhwb3J0cy5BY3Rpb25UeXBlID0ge30pKTtcbi8vIFxudmFyIFNoZWxmRHJvcEFjdGlvbjtcbihmdW5jdGlvbiAoU2hlbGZEcm9wQWN0aW9uKSB7XG4gICAgLy8gXG4gICAgU2hlbGZEcm9wQWN0aW9uW1wiU2RhUmVwbGFjZVwiXSA9IFwicmVwbGFjZVwiO1xuICAgIC8vIFxuICAgIFNoZWxmRHJvcEFjdGlvbltcIlNkYUNvbWJpbmVcIl0gPSBcImNvbWJpbmVcIjtcbiAgICAvLyBcbiAgICBTaGVsZkRyb3BBY3Rpb25bXCJTZGFJbnNlcnRcIl0gPSBcImluc2VydFwiO1xuICAgIC8vIFxuICAgIFNoZWxmRHJvcEFjdGlvbltcIlNkYVN3YXBcIl0gPSBcInN3YXBcIjtcbiAgICAvLyBcbiAgICBTaGVsZkRyb3BBY3Rpb25bXCJTZGFSZXBsYWNlQWxsXCJdID0gXCJyZXBsYWNlLWFsbFwiO1xufSkoU2hlbGZEcm9wQWN0aW9uID0gZXhwb3J0cy5TaGVsZkRyb3BBY3Rpb24gfHwgKGV4cG9ydHMuU2hlbGZEcm9wQWN0aW9uID0ge30pKTtcbi8vIFxudmFyIFNoZWxmRHJvcENvbnRleHQ7XG4oZnVuY3Rpb24gKFNoZWxmRHJvcENvbnRleHQpIHtcbiAgICAvLyBcbiAgICBTaGVsZkRyb3BDb250ZXh0W1wiU2hlbGZEcm9wQ29udGV4dF9Ob25lXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgU2hlbGZEcm9wQ29udGV4dFtcIlNoZWxmRHJvcENvbnRleHRfQ2F0ZWdvcmljYWxcIl0gPSBcImNhdGVnb3JpY2FsXCI7XG4gICAgLy8gXG4gICAgU2hlbGZEcm9wQ29udGV4dFtcIlNoZWxmRHJvcENvbnRleHRfUXVhbnRpdGF0aXZlXCJdID0gXCJxdWFudGl0YXRpdmVcIjtcbn0pKFNoZWxmRHJvcENvbnRleHQgPSBleHBvcnRzLlNoZWxmRHJvcENvbnRleHQgfHwgKGV4cG9ydHMuU2hlbGZEcm9wQ29udGV4dCA9IHt9KSk7XG4vLyBEcmFnL0Ryb3Agc291cmNlIGFuZCB0YXJnZXRcbnZhciBEcmFnRHJvcFR5cGU7XG4oZnVuY3Rpb24gKERyYWdEcm9wVHlwZSkge1xuICAgIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gdml6XG4gICAgRHJhZ0Ryb3BUeXBlW1wiRHJhZ0Ryb3BfVml6XCJdID0gXCJkcmFnLWRyb3Atdml6XCI7XG4gICAgLy8gZHJhZyBmcm9tIG9yIGRyb3Agb250byBzaGVsZlxuICAgIERyYWdEcm9wVHlwZVtcIkRyYWdEcm9wX1NoZWxmXCJdID0gXCJkcmFnLWRyb3Atc2hlbGZcIjtcbiAgICAvLyBkcmFnIGZyb20gb3IgZHJvcCBvbnRvIHNjaGVtYVxuICAgIERyYWdEcm9wVHlwZVtcIkRyYWdEcm9wX1NjaGVtYVwiXSA9IFwiZHJhZy1kcm9wLXNjaGVtYVwiO1xuICAgIC8vIGRyYWcgZnJvbSBvciBkcm9wIG9udG8gbm93aGVyZVxuICAgIERyYWdEcm9wVHlwZVtcIkRyYWdEcm9wX05vbmVcIl0gPSBcImRyYWctZHJvcC1ub25lXCI7XG4gICAgLy8gZHJhZyBmcm9tIG9yIGRyb3Agb250byBjYWxjdWxhdGlvbiBlZGl0b3JcbiAgICBEcmFnRHJvcFR5cGVbXCJEcmFnRHJvcF9DYWxjdWxhdGlvbkVkaXRvclwiXSA9IFwiZHJhZy1kcm9wLWNhbGN1bGF0aW9uLWVkaXRvclwiO1xuICAgIC8vIGRyYWcgZnJvbSBwaXZvdCB3aW5kb3dcbiAgICBEcmFnRHJvcFR5cGVbXCJEcmFnRHJvcF9QaXZvdFwiXSA9IFwiZHJhZy1kcm9wLXBpdm90XCI7XG59KShEcmFnRHJvcFR5cGUgPSBleHBvcnRzLkRyYWdEcm9wVHlwZSB8fCAoZXhwb3J0cy5EcmFnRHJvcFR5cGUgPSB7fSkpO1xuLy8gRGlhbG9nIHR5cGUgcmVsYXRlZCB0byByZWRpcmVjdCBhY3Rpb24gcmVxdWlyZWQgYnkgVUlcbnZhciBDb21tYW5kUmVkaXJlY3RUeXBlO1xuKGZ1bmN0aW9uIChDb21tYW5kUmVkaXJlY3RUeXBlKSB7XG4gICAgLy8gYWRkIG5ldyBkYXRhIGNvbm5lY3Rpb24gZGlhbG9nXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9BZGREYXRhQ29ubmVjdGlvblwiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1hZGQtZGF0YS1jb25uZWN0aW9uXCI7XG4gICAgLy8gY3JlYXRlIGRyaWxsIHBhdGggZGlhbG9nXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9BZGREcmlsbFBhdGhcIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtYWRkLWRyaWxsLXBhdGhcIjtcbiAgICAvLyBjb25maXJtYXRpb24gZGlhbG9nXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9Db25maXJtYXRpb25cIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtY29uZmlybWF0aW9uXCI7XG4gICAgLy8gc2hvd3MgdGhlIGZvcm1hdCB3b3JrYm9vayBwYW5lXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9Gb3JtYXRXb3JrYm9va1wiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1mb3JtYXQtd29ya2Jvb2tcIjtcbiAgICAvLyBub3RpZmljYXRpb24gZGlhbG9nXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9Ob3RpZmljYXRpb25cIl0gPSBcImNvbW1hbmQtcmVkaXJlY3Qtbm90aWZpY2F0aW9uXCI7XG4gICAgLy8gc2hvdyBudW1iZXIgZm9ybWF0dGluZyBkaWFsb2dcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X051bWJlckZvcm1hdFwiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1udW1iZXItZm9ybWF0XCI7XG4gICAgLy8gZnVsbC1mZWF0dXJlZCBlZGl0b3JcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X0VkaXRcIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtZWRpdFwiO1xuICAgIC8vIHF1aWNrIGVkaXRvclxuICAgIENvbW1hbmRSZWRpcmVjdFR5cGVbXCJDb21tYW5kUmVkaXJlY3RfUXVpY2tFZGl0XCJdID0gXCJjb21tYW5kLXJlZGlyZWN0LXF1aWNrLWVkaXRcIjtcbiAgICAvLyBpbmxpbmUgcmVuYW1lIGZpZWxkXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9SZW5hbWVGaWVsZFwiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtZmllbGRcIjtcbiAgICAvLyByZW5hbWUgZHJpbGwgcGF0aCBkaWFsb2dcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X1JlbmFtZURyaWxsUGF0aFwiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1yZW5hbWUtZHJpbGwtcGF0aFwiO1xuICAgIC8vIHJlbmFtZSBzaGVldCBkaWFsb2dcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X1JlbmFtZVNoZWV0XCJdID0gXCJjb21tYW5kLXJlZGlyZWN0LXJlbmFtZS1zaGVldFwiO1xuICAgIC8vIGVkaXQgd2ViIHpvbmUgdXJsXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9FZGl0V2ViWm9uZVVybFwiXSA9IFwiY29tbWFuZC1yZWRpcmVjdC1lZGl0LXdlYi16b25lLXVybFwiO1xuICAgIC8vIGVkaXQgZm9ybWF0dGluZ1xuICAgIENvbW1hbmRSZWRpcmVjdFR5cGVbXCJDb21tYW5kUmVkaXJlY3RfRWRpdEZvcm1hdHRpbmdcIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtZWRpdC1mb3JtYXR0aW5nXCI7XG4gICAgLy8gY2F0ZWdvcmljYWwgYmluIGVkaXQgZGlhbG9nXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9DYXRlZ29yaWNhbEJpbkVkaXRcIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtY2F0ZWdvcmljYWwtYmluLWVkaXRcIjtcbiAgICAvLyBudW1lcmljIGJpbiBlZGl0IGRpYWxvZ1xuICAgIENvbW1hbmRSZWRpcmVjdFR5cGVbXCJDb21tYW5kUmVkaXJlY3RfTnVtZXJpY0JpbkVkaXRcIl0gPSBcImNvbW1hbmQtcmVkaXJlY3QtbnVtZXJpYy1iaW4tZWRpdFwiO1xuICAgIC8vIHJpY2ggdGV4dCBkaWFsb2dcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X1JpY2hUZXh0XCJdID0gXCJjb21tYW5kLXJlZGlyZWN0LXJpY2gtdGV4dFwiO1xuICAgIC8vIGRlbGV0ZSBzaGVldCBkaWFsb2dcbiAgICBDb21tYW5kUmVkaXJlY3RUeXBlW1wiQ29tbWFuZFJlZGlyZWN0X0RlbGV0ZVNoZWV0XCJdID0gXCJjb21tYW5kLXJlZGlyZWN0LWRlbGV0ZS1zaGVldFwiO1xuICAgIC8vIE5vIHJlZGlyZWN0IHJlcXVpcmVkXG4gICAgQ29tbWFuZFJlZGlyZWN0VHlwZVtcIkNvbW1hbmRSZWRpcmVjdF9Ob25lXCJdID0gXCJjb21tYW5kLXJlZGlyZWN0LW5vbmVcIjtcbn0pKENvbW1hbmRSZWRpcmVjdFR5cGUgPSBleHBvcnRzLkNvbW1hbmRSZWRpcmVjdFR5cGUgfHwgKGV4cG9ydHMuQ29tbWFuZFJlZGlyZWN0VHlwZSA9IHt9KSk7XG4vLyBEaXJlY3RpdmVzIGZvciBoZXVyaXN0aWNhbGx5IGludGVycHJldGluZyB1c2VyIGludGVudCBvZiBjb21tYW5kXG52YXIgSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb247XG4oZnVuY3Rpb24gKEhldXJpc3RpY0NvbW1hbmRSZWludGVycHJldGF0aW9uKSB7XG4gICAgLy8gRGlyZWN0cyBUYWJsZWF1IHRvIG5vdCByZWludGVycHJldCBzcGVjaWZpY3Mgb2YgdGhlIGNvbW1hbmRcbiAgICBIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbltcIkRvTm90UmVpbnRlcnByZXRDb21tYW5kXCJdID0gXCJkby1ub3QtcmVpbnRlcnByZXQtY29tbWFuZFwiO1xuICAgIC8vIERpcmVjdHMgVGFibGVhdSB0byBndWVzcyB0aGF0IHdoZW4gdGhlIHVzZXIgc2VsZWN0ZWQgYWxsIGl0ZW1zIGluIGEgZmlsdGVyLCB0aGUgaW50ZW50IHdhcyBhY3R1YWxseSB0byBzZWxlY3QgQUxMXG4gICAgSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb25bXCJDYXRlZ29yaWNhbEZpbHRlcl9JbmZlckFsbFdoZW5FdmVyeXRoaW5nU2VsZWN0ZWRcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlci1pbmZlci1hbGwtd2hlbi1ldmVyeXRoaW5nLXNlbGVjdGVkXCI7XG59KShIZXVyaXN0aWNDb21tYW5kUmVpbnRlcnByZXRhdGlvbiA9IGV4cG9ydHMuSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb24gfHwgKGV4cG9ydHMuSGV1cmlzdGljQ29tbWFuZFJlaW50ZXJwcmV0YXRpb24gPSB7fSkpO1xuLy8gZmlsdGVyIHR5cGVzXG52YXIgRmlsdGVyVHlwZTtcbihmdW5jdGlvbiAoRmlsdGVyVHlwZSkge1xuICAgIC8vIFF1YW50aXRhdGl2ZVxuICAgIEZpbHRlclR5cGVbXCJGTFRSX1F1YW50aXRhdGl2ZVwiXSA9IFwiUXVhbnRpdGF0aXZlXCI7XG4gICAgLy8gQ2F0ZWdvcmljYWxcbiAgICBGaWx0ZXJUeXBlW1wiRkxUUl9DYXRlZ29yaWNhbFwiXSA9IFwiQ2F0ZWdvcmljYWxcIjtcbiAgICAvLyBIaWVyYXJjaGljYWxcbiAgICBGaWx0ZXJUeXBlW1wiRkxUUl9IaWVyYXJjaGljYWxcIl0gPSBcIkhpZXJhcmNoaWNhbFwiO1xuICAgIC8vIFJlbGF0aXZlIERhdGVcbiAgICBGaWx0ZXJUeXBlW1wiRkxUUl9SZWxhdGl2ZURhdGVcIl0gPSBcIlJlbGF0aXZlRGF0ZVwiO1xuICAgIC8vIFJlbGF0aXZlRGF0ZVBpY2tcbiAgICBGaWx0ZXJUeXBlW1wiRkxUUl9SZWxhdGl2ZURhdGVQaWNrXCJdID0gXCJSZWxhdGl2ZURhdGVQaWNrXCI7XG4gICAgLy8gTm90U3BlY2lmaWVkXG4gICAgRmlsdGVyVHlwZVtcIkZMVFJfRGVmYXVsdFwiXSA9IFwiRmlsdGVyRGVmYXVsdFwiO1xufSkoRmlsdGVyVHlwZSA9IGV4cG9ydHMuRmlsdGVyVHlwZSB8fCAoZXhwb3J0cy5GaWx0ZXJUeXBlID0ge30pKTtcbi8vIFBhcmFtZXRlciBlcnJvcnNcbnZhciBQYXJhbWV0ZXJFcnJvcjtcbihmdW5jdGlvbiAoUGFyYW1ldGVyRXJyb3IpIHtcbiAgICAvLyBmaWVsZCBhZ2dyZWdhdGlvbiBpcyBpbnZhbGlkXG4gICAgUGFyYW1ldGVyRXJyb3JbXCJJbnZhbGlkQWdnRmllbGRzXCJdID0gXCJpbnZhbGlkLWFnZy1maWVsZHNcIjtcbiAgICAvLyBmaWVsZCBpcyBpbnZhbGlkXG4gICAgUGFyYW1ldGVyRXJyb3JbXCJJbnZhbGlkRmllbGRzXCJdID0gXCJpbnZhbGlkLWZpZWxkc1wiO1xuICAgIC8vIGZpbHRlciB2YWx1ZXMgYXJlIGludmFsaWRcbiAgICBQYXJhbWV0ZXJFcnJvcltcIkludmFsaWRGaWx0ZXJWYWx1ZXNcIl0gPSBcImludmFsaWQtZmlsdGVyLXZhbHVlc1wiO1xuICAgIC8vIGRhdGUgdmFsdWUgaXMgaW52YWxpZFxuICAgIFBhcmFtZXRlckVycm9yW1wiSW52YWxpZERhdGVzXCJdID0gXCJpbnZhbGlkLWRhdGVzXCI7XG59KShQYXJhbWV0ZXJFcnJvciA9IGV4cG9ydHMuUGFyYW1ldGVyRXJyb3IgfHwgKGV4cG9ydHMuUGFyYW1ldGVyRXJyb3IgPSB7fSkpO1xuLy8gXG52YXIgU2VsZWN0aW9uVHlwZTtcbihmdW5jdGlvbiAoU2VsZWN0aW9uVHlwZSkge1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblR5cGVbXCJTVF9UdXBsZXNcIl0gPSBcInR1cGxlc1wiO1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblR5cGVbXCJTVF9Ob2Rlc1wiXSA9IFwibm9kZXNcIjtcbiAgICAvLyBcbiAgICBTZWxlY3Rpb25UeXBlW1wiU1RfVHJlbmRMaW5lc1wiXSA9IFwidHJlbmQtbGluZXNcIjtcbiAgICAvLyBcbiAgICBTZWxlY3Rpb25UeXBlW1wiU1RfTGVnZW5kSXRlbXNcIl0gPSBcImxlZ2VuZC1pdGVtc1wiO1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblR5cGVbXCJTVF9SZWZMaW5lc1wiXSA9IFwicmVmLWxpbmVzXCI7XG4gICAgLy8gXG4gICAgU2VsZWN0aW9uVHlwZVtcIlNUX0Fubm90YXRpb25zXCJdID0gXCJhbm5vdGF0aW9uc1wiO1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblR5cGVbXCJTVF9PcmllbnRlZE5vZGVzXCJdID0gXCJvcmllbnRlZC1ub2Rlc1wiO1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblR5cGVbXCJTVF9TaGVsZkZpZWxkc1wiXSA9IFwic2hlbGYtZmllbGRzXCI7XG59KShTZWxlY3Rpb25UeXBlID0gZXhwb3J0cy5TZWxlY3Rpb25UeXBlIHx8IChleHBvcnRzLlNlbGVjdGlvblR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2VsZWN0aW9uVXBkYXRlVHlwZTtcbihmdW5jdGlvbiAoU2VsZWN0aW9uVXBkYXRlVHlwZSkge1xuICAgIC8vIFxuICAgIFNlbGVjdGlvblVwZGF0ZVR5cGVbXCJTVV9BRERcIl0gPSBcInNlbGVjdC1hZGRcIjtcbiAgICAvLyBcbiAgICBTZWxlY3Rpb25VcGRhdGVUeXBlW1wiU1VfUkVNT1ZFXCJdID0gXCJzZWxlY3QtcmVtb3ZlXCI7XG4gICAgLy8gXG4gICAgU2VsZWN0aW9uVXBkYXRlVHlwZVtcIlNVX1JFUExBQ0VcIl0gPSBcInNlbGVjdC1yZXBsYWNlXCI7XG59KShTZWxlY3Rpb25VcGRhdGVUeXBlID0gZXhwb3J0cy5TZWxlY3Rpb25VcGRhdGVUeXBlIHx8IChleHBvcnRzLlNlbGVjdGlvblVwZGF0ZVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2VsZWN0T3B0aW9ucztcbihmdW5jdGlvbiAoU2VsZWN0T3B0aW9ucykge1xuICAgIC8vIE5vIGtleSBkb3duXG4gICAgU2VsZWN0T3B0aW9uc1tcIlNlbGVjdE9wdGlvbnNTaW1wbGVcIl0gPSBcInNlbGVjdC1vcHRpb25zLXNpbXBsZVwiO1xuICAgIC8vIEN0cmwga2V5IGRvd25cbiAgICBTZWxlY3RPcHRpb25zW1wiU2VsZWN0T3B0aW9uc1RvZ2dsZVwiXSA9IFwic2VsZWN0LW9wdGlvbnMtdG9nZ2xlXCI7XG4gICAgLy8gU2hpZnQga2V5IGRvd25cbiAgICBTZWxlY3RPcHRpb25zW1wiU2VsZWN0T3B0aW9uc1JhbmdlXCJdID0gXCJzZWxlY3Qtb3B0aW9ucy1yYW5nZVwiO1xuICAgIC8vIFVzdWFsbHkgdHJpZ2dlcmVkIGJ5IHJpZ2h0IGNsaWNrXG4gICAgU2VsZWN0T3B0aW9uc1tcIlNlbGVjdE9wdGlvbnNNb3VzZU1lbnVcIl0gPSBcInNlbGVjdC1vcHRpb25zLW1lbnVcIjtcbiAgICAvLyBBbiBhdHRlbXB0IHRvIHNlbGVjdCB2aWEgc2VhcmNoXG4gICAgU2VsZWN0T3B0aW9uc1tcIlNlbGVjdE9wdGlvbnNTZWFyY2hNYXRjaFwiXSA9IFwic2VsZWN0LW9wdGlvbnMtc2VhcmNoXCI7XG59KShTZWxlY3RPcHRpb25zID0gZXhwb3J0cy5TZWxlY3RPcHRpb25zIHx8IChleHBvcnRzLlNlbGVjdE9wdGlvbnMgPSB7fSkpO1xuLy8gXG52YXIgV2hpdGVzcGFjZVNlbGVjdGlvbkJlaGF2aW9yO1xuKGZ1bmN0aW9uIChXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IpIHtcbiAgICAvLyBDbGVhciBzZWxlY3Rpb24gb3ZlciB3aGl0ZXNwYWNlIGJhc2VkIG9uIGRlZmF1bHQgZmFjdG9ycyAoaS5lLiwgYXJlIHdlIGluIGFwcGVuZCBtb2RlPylcbiAgICBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3JbXCJEZWZhdWx0XCJdID0gXCJkZWZhdWx0XCI7XG4gICAgLy8gQWx3YXlzIGNsZWFyIHNlbGVjdGlvbiBvdmVyIHdoaXRlc3BhY2VcbiAgICBXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3JbXCJBbHdheXNDbGVhclwiXSA9IFwiYWx3YXlzLWNsZWFyXCI7XG4gICAgLy8gTmV2ZXIgY2xlYXIgc2VsZWN0aW9uIG92ZXIgd2hpdGVzcGFjZVxuICAgIFdoaXRlc3BhY2VTZWxlY3Rpb25CZWhhdmlvcltcIk5ldmVyQ2xlYXJcIl0gPSBcIm5ldmVyLWNsZWFyXCI7XG59KShXaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IgPSBleHBvcnRzLldoaXRlc3BhY2VTZWxlY3Rpb25CZWhhdmlvciB8fCAoZXhwb3J0cy5XaGl0ZXNwYWNlU2VsZWN0aW9uQmVoYXZpb3IgPSB7fSkpO1xuLy8gXG52YXIgT3JpZW50YXRpb247XG4oZnVuY3Rpb24gKE9yaWVudGF0aW9uKSB7XG4gICAgLy8gXG4gICAgT3JpZW50YXRpb25bXCJWZXJ0aWNhbFwiXSA9IFwiby12ZXJ0XCI7XG4gICAgLy8gXG4gICAgT3JpZW50YXRpb25bXCJIb3Jpem9udGFsXCJdID0gXCJvLWhvcml6XCI7XG4gICAgLy8gXG4gICAgT3JpZW50YXRpb25bXCJPQXV0b21hdGljXCJdID0gXCJvLWF1dG9cIjtcbn0pKE9yaWVudGF0aW9uID0gZXhwb3J0cy5PcmllbnRhdGlvbiB8fCAoZXhwb3J0cy5PcmllbnRhdGlvbiA9IHt9KSk7XG4vLyBcbnZhciBTY2FsZVR5cGU7XG4oZnVuY3Rpb24gKFNjYWxlVHlwZSkge1xuICAgIC8vIFxuICAgIFNjYWxlVHlwZVtcIkxvZ1wiXSA9IFwibG9nXCI7XG4gICAgLy8gXG4gICAgU2NhbGVUeXBlW1wiTGluZWFyXCJdID0gXCJsaW5lYXJcIjtcbn0pKFNjYWxlVHlwZSA9IGV4cG9ydHMuU2NhbGVUeXBlIHx8IChleHBvcnRzLlNjYWxlVHlwZSA9IHt9KSk7XG4vLyB0eXBlIG9mIG9iamVjdCBhY3Rpb24gYXBwbGllcyB0b1xudmFyIFNvdXJjZVR5cGU7XG4oZnVuY3Rpb24gKFNvdXJjZVR5cGUpIHtcbiAgICAvLyBhbGwgc2hlZXRzIGluIHRoZSB3b3JrYm9va1xuICAgIFNvdXJjZVR5cGVbXCJTVF9BbGxcIl0gPSBcImFsbFwiO1xuICAgIC8vIGFsbCBzaGVldHMgcmVmZXJlbmNpbmcgYSBnaXZlbiBkYXRhc291cmNlXG4gICAgU291cmNlVHlwZVtcIlNUX0RhdGFzb3VyY2VcIl0gPSBcImRhdGFzb3VyY2VcIjtcbiAgICAvLyB3b3Jrc2hlZXQgb3IgZGFzaGJvYXJkXG4gICAgU291cmNlVHlwZVtcIlNUX1NoZWV0XCJdID0gXCJzaGVldFwiO1xufSkoU291cmNlVHlwZSA9IGV4cG9ydHMuU291cmNlVHlwZSB8fCAoZXhwb3J0cy5Tb3VyY2VUeXBlID0ge30pKTtcbi8vIGhvdyBhbiBhY3Rpb24gZ2V0cyBhY3RpdmF0ZWRcbnZhciBBY3RpdmF0aW9uTWV0aG9kO1xuKGZ1bmN0aW9uIChBY3RpdmF0aW9uTWV0aG9kKSB7XG4gICAgLy8gZS5nLiBieSBwaWNraW5nIGFuIG9wdGlvbiBmcm9tIGEgY29udGV4dCBtZW51XG4gICAgQWN0aXZhdGlvbk1ldGhvZFtcIkFNX0V4cGxpY2l0XCJdID0gXCJleHBsaWNpdGx5XCI7XG4gICAgLy8gYXV0byBhY3RpdmF0ZWQgd2hlbiBtYXJrcyBhcmUgc2VsZWN0ZWRcbiAgICBBY3RpdmF0aW9uTWV0aG9kW1wiQU1fT25TZWxlY3RcIl0gPSBcIm9uLXNlbGVjdFwiO1xuICAgIC8vIGF1dG8gYWN0aXZhdGVkIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIG1vdXNlIG92ZXIgYSBtYXJrXG4gICAgQWN0aXZhdGlvbk1ldGhvZFtcIkFNX09uSG92ZXJcIl0gPSBcIm9uLWhvdmVyXCI7XG59KShBY3RpdmF0aW9uTWV0aG9kID0gZXhwb3J0cy5BY3RpdmF0aW9uTWV0aG9kIHx8IChleHBvcnRzLkFjdGl2YXRpb25NZXRob2QgPSB7fSkpO1xuLy8gd2hldGhlciBhbiBhY3Rpb24gc2hvdWxkIGJlIHJ1biB3aGVuIHNlbGVjdGlvbiBpcyBjbGVhcmVkXG52YXIgT25DbGVhcjtcbihmdW5jdGlvbiAoT25DbGVhcikge1xuICAgIC8vIGRvIG5vdGhpbmcsIGUuZy4gbGVhdmUgZmlsdGVyIGluIHBsYWNlXG4gICAgT25DbGVhcltcIk9DX05vdGhpbmdcIl0gPSBcIm5vdGhpbmdcIjtcbiAgICAvLyBzaG93IGFsbCB2YWx1ZXNcbiAgICBPbkNsZWFyW1wiT0NfU2hvd0FsbFwiXSA9IFwic2hvdy1hbGxcIjtcbiAgICAvLyBleGNsdWRlIGV2ZXJ5dGhpbmdcbiAgICBPbkNsZWFyW1wiT0NfRXhjbHVkZUFsbFwiXSA9IFwiZXhjbHVkZS1hbGxcIjtcbn0pKE9uQ2xlYXIgPSBleHBvcnRzLk9uQ2xlYXIgfHwgKGV4cG9ydHMuT25DbGVhciA9IHt9KSk7XG4vLyBcbnZhciBNZXJnZU9yU3BsaXQ7XG4oZnVuY3Rpb24gKE1lcmdlT3JTcGxpdCkge1xuICAgIC8vIFxuICAgIE1lcmdlT3JTcGxpdFtcIk1PU19NRVJHRVwiXSA9IFwibWVyZ2VcIjtcbiAgICAvLyBcbiAgICBNZXJnZU9yU3BsaXRbXCJNT1NfU1BMSVRcIl0gPSBcInNwbGl0XCI7XG59KShNZXJnZU9yU3BsaXQgPSBleHBvcnRzLk1lcmdlT3JTcGxpdCB8fCAoZXhwb3J0cy5NZXJnZU9yU3BsaXQgPSB7fSkpO1xuLy8gXG52YXIgTWFya0xheW91dFByaW1pdGl2ZTtcbihmdW5jdGlvbiAoTWFya0xheW91dFByaW1pdGl2ZSkge1xuICAgIC8vIFxuICAgIE1hcmtMYXlvdXRQcmltaXRpdmVbXCJTaGFwZVByaW1pdGl2ZVwiXSA9IFwic2hhcGVcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0UHJpbWl0aXZlW1wiTGluZVByaW1pdGl2ZVwiXSA9IFwibGluZVwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXlvdXRQcmltaXRpdmVbXCJCYXJQcmltaXRpdmVcIl0gPSBcImJhclwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXlvdXRQcmltaXRpdmVbXCJQb2xhckJhclByaW1pdGl2ZVwiXSA9IFwicG9sYXItYmFyXCI7XG4gICAgLy8gXG4gICAgTWFya0xheW91dFByaW1pdGl2ZVtcIlRleHRQcmltaXRpdmVcIl0gPSBcInRleHRcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0UHJpbWl0aXZlW1wiTGFiZWxQcmltaXRpdmVcIl0gPSBcImxhYmVsXCI7XG4gICAgLy8gXG4gICAgTWFya0xheW91dFByaW1pdGl2ZVtcIlBpZVByaW1pdGl2ZVwiXSA9IFwicGllXCI7XG4gICAgLy8gXG4gICAgTWFya0xheW91dFByaW1pdGl2ZVtcIkFyZWFQcmltaXRpdmVcIl0gPSBcImFyZWFcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0UHJpbWl0aXZlW1wiUG9seWdvblByaW1pdGl2ZVwiXSA9IFwicG9seWdvblwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXlvdXRQcmltaXRpdmVbXCJNdWx0aXBvbHlnb25QcmltaXRpdmVcIl0gPSBcIm11bHRpcG9seWdvblwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXlvdXRQcmltaXRpdmVbXCJTcXVhcmVQcmltaXRpdmVcIl0gPSBcInNxdWFyZVwiO1xufSkoTWFya0xheW91dFByaW1pdGl2ZSA9IGV4cG9ydHMuTWFya0xheW91dFByaW1pdGl2ZSB8fCAoZXhwb3J0cy5NYXJrTGF5b3V0UHJpbWl0aXZlID0ge30pKTtcbi8vIERvZXMgdGhlIFBhbmVUeXBlL1ByaW1pdGl2ZVR5cGUvTGF5b3V0VHlwZSB0cmlwbGV0IHJlc3VsdCBpbiB2ZXJ5IHNwZWNpZmljIGxheW91dCBydWxlcz9cbnZhciBNYXJrTGF5b3V0Vml6VHlwZTtcbihmdW5jdGlvbiAoTWFya0xheW91dFZpelR5cGUpIHtcbiAgICAvLyBObyBzcGVjaWFsIHJ1bGVzXG4gICAgTWFya0xheW91dFZpelR5cGVbXCJTdGFuZGFyZFwiXSA9IFwic3RhbmRhcmRcIjtcbiAgICAvLyBHZW5lcmljIE9PIFN0YWNrZWQgcnVsZXNcbiAgICBNYXJrTGF5b3V0Vml6VHlwZVtcIk9PU3RhY2tlZFwiXSA9IFwib28tc3RhY2tlZFwiO1xuICAgIC8vIE9PIEdhbnR0IFN0YWNrZWQgcnVsZXNcbiAgICBNYXJrTGF5b3V0Vml6VHlwZVtcIkdhbnR0U3RhY2tlZFwiXSA9IFwiZ2FudHQtc3RhY2tlZFwiO1xuICAgIC8vIFRyZWVtYXBcbiAgICBNYXJrTGF5b3V0Vml6VHlwZVtcIlRyZWVtYXBcIl0gPSBcInRyZWVtYXBcIjtcbiAgICAvLyBCdWJibGUgQ2hhcnQgLS0gT08gUGFja2VkIGNpcmNsZXMgb3Igc2hhcGVzXG4gICAgTWFya0xheW91dFZpelR5cGVbXCJCdWJibGVcIl0gPSBcImJ1YmJsZVwiO1xuICAgIC8vIFdvcmRsZVxuICAgIE1hcmtMYXlvdXRWaXpUeXBlW1wiV29yZGxlXCJdID0gXCJ3b3JkbGVcIjtcbiAgICAvLyBIaWdobGlnaHQgVGFibGVcbiAgICBNYXJrTGF5b3V0Vml6VHlwZVtcIkhpZ2hsaWdodFwiXSA9IFwiaGlnaGxpZ2h0XCI7XG59KShNYXJrTGF5b3V0Vml6VHlwZSA9IGV4cG9ydHMuTWFya0xheW91dFZpelR5cGUgfHwgKGV4cG9ydHMuTWFya0xheW91dFZpelR5cGUgPSB7fSkpO1xuLy8gXG52YXIgTWFya0xheW91dEhhbmRsZVNwZWNpYWxzO1xuKGZ1bmN0aW9uIChNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHMpIHtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHNbXCJDYXRlZ29yaWNhbEF4aXNcIl0gPSBcImNhdGVnb3JpY2FsLWF4aXNcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHNbXCJTaG93U3BlY2lhbHNcIl0gPSBcInNob3ctc3BlY2lhbHNcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHNbXCJPbWl0U3BlY2lhbHNcIl0gPSBcIm9taXQtc3BlY2lhbHNcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHNbXCJCcmVha09uU3BlY2lhbHNcIl0gPSBcImJyZWFrLW9uLXNwZWNpYWxzXCI7XG59KShNYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHMgPSBleHBvcnRzLk1hcmtMYXlvdXRIYW5kbGVTcGVjaWFscyB8fCAoZXhwb3J0cy5NYXJrTGF5b3V0SGFuZGxlU3BlY2lhbHMgPSB7fSkpO1xuLy8gXG52YXIgTWFya0xheW91dE1hcmtGbGFnO1xuKGZ1bmN0aW9uIChNYXJrTGF5b3V0TWFya0ZsYWcpIHtcbiAgICAvLyBtYXJrIGRvZXMgbm90IGNvbm5lY3QgdG8gdGhlIG5leHQgbWFya1xuICAgIE1hcmtMYXlvdXRNYXJrRmxhZ1tcIkVuZFwiXSA9IFwiZW5kXCI7XG4gICAgLy8gbGFzdCBtYXJrIGluIGEgbXVsdGktcHJpbWl0aXZlXG4gICAgTWFya0xheW91dE1hcmtGbGFnW1wiRW5kUHJpbWl0aXZlXCJdID0gXCJlbmRwcmltaXRpdmVcIjtcbiAgICAvLyBsYXN0IG1hcmsgaGFzIGFuIGVkZ2UgY29ubmVjdG9yIHRvIGZpcnN0IG1hcmtcbiAgICBNYXJrTGF5b3V0TWFya0ZsYWdbXCJDbG9zZWRQcmltaXRpdmVcIl0gPSBcImNsb3NlZHByaW1pdGl2ZVwiO1xuICAgIC8vIHZpc3VhbCBtYXJrZXIgc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgIE1hcmtMYXlvdXRNYXJrRmxhZ1tcIk1hcmtlZFwiXSA9IFwibWFya2VkXCI7XG4gICAgLy8gdmlzdWFsIG1hcmtlciBzaG91bGQgYmUgZGlzcGxheWVkIGlmIGxhYmVsbGVkXG4gICAgTWFya0xheW91dE1hcmtGbGFnW1wiTWFya2VkSWZMYWJlbFwiXSA9IFwibWFya2VkaWZsYWJlbFwiO1xuICAgIC8vIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb25cbiAgICBNYXJrTGF5b3V0TWFya0ZsYWdbXCJEZWJ1Z1wiXSA9IFwiZGVidWdcIjtcbiAgICAvLyB1c2VyIGZsYWdzIGNhbiBiZWdpbiBoZXJlXG4gICAgTWFya0xheW91dE1hcmtGbGFnW1wiVXNlclwiXSA9IFwidXNlclwiO1xufSkoTWFya0xheW91dE1hcmtGbGFnID0gZXhwb3J0cy5NYXJrTGF5b3V0TWFya0ZsYWcgfHwgKGV4cG9ydHMuTWFya0xheW91dE1hcmtGbGFnID0ge30pKTtcbi8vIFxudmFyIE1hcmtMYXlvdXRQYW5lRmxhZztcbihmdW5jdGlvbiAoTWFya0xheW91dFBhbmVGbGFnKSB7XG4gICAgLy8gQWxsb3dzIHNjZW5lIHRvIGJlIHBhbm5lZCBpbiB0aGUgWCBkaXJlY3Rpb25cbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJFbmFibGVQYW5YXCJdID0gXCJlbmFibGUtcGFuLXhcIjtcbiAgICAvLyBBbGxvd3Mgc2NlbmUgdG8gYmUgcGFubmVkIGluIHRoZSBZIGRpcmVjdGlvblxuICAgIE1hcmtMYXlvdXRQYW5lRmxhZ1tcIkVuYWJsZVBhbllcIl0gPSBcImVuYWJsZS1wYW4teVwiO1xuICAgIC8vIEFsbG93cyB0aGUgcG9zaXRpb25zIG9mIG1hcmtzIHRvIGJlIHNjYWxlZCBpbiB0aGUgWCBkaXJlY3Rpb24gYXMgdGhlIHZpZXcgaXMgem9vbWVkXG4gICAgTWFya0xheW91dFBhbmVGbGFnW1wiRW5hYmxlWm9vbVhcIl0gPSBcImVuYWJsZS16b29tLXhcIjtcbiAgICAvLyBBbGxvd3MgdGhlIHBvc2l0aW9ucyBvZiBtYXJrcyB0byBiZSBzY2FsZWQgaW4gdGhlIFkgZGlyZWN0aW9uIGFzIHRoZSB2aWV3IGlzIHpvb21lZFxuICAgIE1hcmtMYXlvdXRQYW5lRmxhZ1tcIkVuYWJsZVpvb21ZXCJdID0gXCJlbmFibGUtem9vbS15XCI7XG4gICAgLy8gQWxsb3dzIHRoZSBzaXplIG9mIG1hcmtzIHRvIGJlIHNjYWxlZCBpbiB0aGUgWCBkaXJlY3Rpb24gYXMgdGhlIHZpZXcgaXMgem9vbWVkOyByZXF1aXJlcyB3aWR0aCBpbiBkb21haW4gY29vcmRpbmF0ZXNcbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJFbmFibGVTY2FsZVhcIl0gPSBcImVuYWJsZS1zY2FsZS14XCI7XG4gICAgLy8gQWxsb3dzIHRoZSBzaXplIG9mIG1hcmtzIHRvIGJlIHNjYWxlZCBpbiB0aGUgWSBkaXJlY3Rpb24gYXMgdGhlIHZpZXcgaXMgem9vbWVkOyByZXF1aXJlcyBoZWlnaHQgaW4gZG9tYWluIGNvb3JkaW5hdGVzXG4gICAgTWFya0xheW91dFBhbmVGbGFnW1wiRW5hYmxlU2NhbGVZXCJdID0gXCJlbmFibGUtc2NhbGUteVwiO1xuICAgIC8vIENsaXAgdG8gY2VsbCBib3JkZXJzIGluIHRoZSB4IGRpcmVjdGlvblxuICAgIE1hcmtMYXlvdXRQYW5lRmxhZ1tcIkNsaXBUb0NlbGxYXCJdID0gXCJjbGlwLXRvLWNlbGwteFwiO1xuICAgIC8vIENsaXAgdG8gY2VsbCBib3JkZXJzIGluIHRoZSB5IGRpcmVjdGlvblxuICAgIE1hcmtMYXlvdXRQYW5lRmxhZ1tcIkNsaXBUb0NlbGxZXCJdID0gXCJjbGlwLXRvLWNlbGwteVwiO1xuICAgIC8vIFVzZSBjZWxsIGNsaXBwaW5nIGZvciBzZWxlY3Rpb25cbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJDbGlwVG9DZWxsRm9yU2VsZWN0aW9uXCJdID0gXCJjbGlwLXRvLWNlbGwtZm9yLXNlbGVjdGlvblwiO1xuICAgIC8vIFRoZSB4LWF4aXMgaXMgb24gdG9wIG9mIHBhbmVcbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJYQXhpc09uVG9wXCJdID0gXCJ4LWF4aXMtb24tdG9wXCI7XG4gICAgLy8gVGhlIHktYXhpcyBpcyBvbiB0aGUgcmlnaHQgb2YgcGFuZVxuICAgIE1hcmtMYXlvdXRQYW5lRmxhZ1tcIllBeGlzT25SaWdodFwiXSA9IFwieS1heGlzLW9uLXJpZ2h0XCI7XG4gICAgLy8gVGhlIHBhbmUgaGFzIGNlbGxzIGluIHRoZSB4IGF4aXNcbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJIYXNDZWxsc1hcIl0gPSBcImhhcy1jZWxscy14XCI7XG4gICAgLy8gVGhlIHBhbmUgaGFzIGNlbGxzIGluIHRoZSB5IGF4aXNcbiAgICBNYXJrTGF5b3V0UGFuZUZsYWdbXCJIYXNDZWxsc1lcIl0gPSBcImhhcy1jZWxscy15XCI7XG59KShNYXJrTGF5b3V0UGFuZUZsYWcgPSBleHBvcnRzLk1hcmtMYXlvdXRQYW5lRmxhZyB8fCAoZXhwb3J0cy5NYXJrTGF5b3V0UGFuZUZsYWcgPSB7fSkpO1xuLy8gXG52YXIgTWFya0xheW91dERyb3BMaW5lRmxhZztcbihmdW5jdGlvbiAoTWFya0xheW91dERyb3BMaW5lRmxhZykge1xuICAgIC8vIFNob3cgZHJvcCBsaW5lcyBvbiBzZWxlY3RlZCBtYXJrXG4gICAgTWFya0xheW91dERyb3BMaW5lRmxhZ1tcIkRyb3BMaW5lU2hvd1NlbGVjdGVkXCJdID0gXCJkcm9wbGluZS1zaG93LXNlbGVjdGVkXCI7XG4gICAgLy8gU2hvdyBkcm9wIGxpbmVzIG9uIGFsbCBtYXJrc1xuICAgIE1hcmtMYXlvdXREcm9wTGluZUZsYWdbXCJEcm9wTGluZVNob3dBbGxcIl0gPSBcImRyb3BsaW5lLXNob3ctYWxsXCI7XG4gICAgLy8gRHJvcCBsaW5lIHRvIHgtYXhpc1xuICAgIE1hcmtMYXlvdXREcm9wTGluZUZsYWdbXCJEcm9wTGluZVhcIl0gPSBcImRyb3BsaW5lLXhcIjtcbiAgICAvLyBEcm9wIGxpbmUgdG8geS1heGlzXG4gICAgTWFya0xheW91dERyb3BMaW5lRmxhZ1tcIkRyb3BMaW5lWVwiXSA9IFwiZHJvcGxpbmUteVwiO1xuICAgIC8vIFNob3cgbGFiZWxzIG9uIGRyb3AgbGluZXNcbiAgICBNYXJrTGF5b3V0RHJvcExpbmVGbGFnW1wiRHJvcExpbmVMYWJlbHNcIl0gPSBcImRyb3BsaW5lLWxhYmVsc1wiO1xufSkoTWFya0xheW91dERyb3BMaW5lRmxhZyA9IGV4cG9ydHMuTWFya0xheW91dERyb3BMaW5lRmxhZyB8fCAoZXhwb3J0cy5NYXJrTGF5b3V0RHJvcExpbmVGbGFnID0ge30pKTtcbi8vIElkZW50aWZpZXMgdGhlIG9mZnNldCBmb3IgYSBwYXJ0aWN1bGFyIHRhYmxlIGluIHRoZSBhcnJheSBvZiB0YWJsZXMgaW4gUERNYXJrc1ByZXNNb2RlbFxudmFyIE1hcmtMYXlvdXREYXRhVGFibGVJRDtcbihmdW5jdGlvbiAoTWFya0xheW91dERhdGFUYWJsZUlEKSB7XG4gICAgLy8gVGhlIHRhYmxlIHRoYXQgY29udGFpbnMgdGhlIG1hcmsgaW5mb3JtYXRpb25cbiAgICBNYXJrTGF5b3V0RGF0YVRhYmxlSURbXCJNYXJrVGFibGVcIl0gPSBcIm1hcmstdGFibGVcIjtcbiAgICAvLyBUaGUgdGFibGUgdGhhdCBjb250YWlucyB0ZXh0IHJ1bnMgZm9yIHRleHQgbWFya3MgYW5kIGxhYmVsc1xuICAgIE1hcmtMYXlvdXREYXRhVGFibGVJRFtcIlRleHRSdW5UYWJsZVwiXSA9IFwidGV4dC1ydW4tdGFibGVcIjtcbiAgICAvLyBUaGUgdGFibGUgdGhhdCBjb250YWlucyB0ZXh0IHN0eWxlcyBmb3IgZWFjaCB0ZXh0IHJ1bi5cbiAgICBNYXJrTGF5b3V0RGF0YVRhYmxlSURbXCJUZXh0U3R5bGVUYWJsZVwiXSA9IFwidGV4dC1zdHlsZS10YWJsZVwiO1xufSkoTWFya0xheW91dERhdGFUYWJsZUlEID0gZXhwb3J0cy5NYXJrTGF5b3V0RGF0YVRhYmxlSUQgfHwgKGV4cG9ydHMuTWFya0xheW91dERhdGFUYWJsZUlEID0ge30pKTtcbi8vIFdoaWNoIGxhYmVsaW5nIGFsZ29yaXRobSBzaG91bGQgYmUgdXNlZD8gIENsb3NlbHkgcmVsYXRlZCB0byBNYXJrTGF5b3V0OjpWaXpUeXBlXG52YXIgTGFiZWxMYXlvdXRUeXBlO1xuKGZ1bmN0aW9uIChMYWJlbExheW91dFR5cGUpIHtcbiAgICAvLyBObyBsYWJlbHNcbiAgICBMYWJlbExheW91dFR5cGVbXCJMQUJFTF9MQVlPVVRfTk9ORVwiXSA9IFwidW5sYWJlbGVkXCI7XG4gICAgLy8gVHJlZW1hcCAtIGxhYmVscyBpbnNpZGUgdGhlIHJlY3RhbmdsZXNcbiAgICBMYWJlbExheW91dFR5cGVbXCJMQUJFTF9MQVlPVVRfVFJFRU1BUFwiXSA9IFwidHJlZW1hcC1sYWJlbHNcIjtcbiAgICAvLyBCdWJibGUgQ2hhcnQgLSBsYWJlbHMgaW5zaWRlIHRoZSBzaGFwZXNcbiAgICBMYWJlbExheW91dFR5cGVbXCJMQUJFTF9MQVlPVVRfQlVCQkxFQ0hBUlRcIl0gPSBcImJ1YmJsZS1sYWJlbHNcIjtcbiAgICAvLyBTY2F0dGVycGxvdCAtIGR5bmFtaWMgYmVzdC1maXQgbGFiZWxzXG4gICAgTGFiZWxMYXlvdXRUeXBlW1wiTEFCRUxfTEFZT1VUX1NDQVRURVJQTE9UXCJdID0gXCJzY2F0dGVycGxvdC1sYWJlbHNcIjtcbiAgICAvLyBTdGFuZGFyZCBsYWJlbGluZ1xuICAgIExhYmVsTGF5b3V0VHlwZVtcIkxBQkVMX0xBWU9VVF9TVEFOREFSRFwiXSA9IFwic3RhbmRhcmQtbGFiZWxzXCI7XG4gICAgLy8gSGlnaGxpZ2h0IHRhYmxlXG4gICAgTGFiZWxMYXlvdXRUeXBlW1wiTEFCRUxfTEFZT1VUX0hJR0hMSUdIVF9UQUJMRVwiXSA9IFwiaGlnaGxpZ2h0LXRhYmxlLWxhYmVsc1wiO1xufSkoTGFiZWxMYXlvdXRUeXBlID0gZXhwb3J0cy5MYWJlbExheW91dFR5cGUgfHwgKGV4cG9ydHMuTGFiZWxMYXlvdXRUeXBlID0ge30pKTtcbi8vIE1hcmtMYXllciByZXByZXNlbnRzIHRoZSBsYXllcnMgb2YgYSBtYXJrIGdpdmVuIHRoZSB2YXJpb3VzIHN0YXRlc1xudmFyIE1hcmtMYXllcjtcbihmdW5jdGlvbiAoTWFya0xheWVyKSB7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiTm9ybWFsVW5kZXJcIl0gPSBcIm5vcm1hbFVuZGVyXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiTm9ybWFsT25cIl0gPSBcIm5vcm1hbE9uXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiU2VsZWN0ZWRVbmRlclwiXSA9IFwic2VsZWN0ZWRVbmRlclwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIlNlbGVjdGVkT25cIl0gPSBcInNlbGVjdGVkT25cIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5ZXJbXCJIaWdobGlnaHRlZFVuZGVyXCJdID0gXCJoaWdobGlnaHRlZFVuZGVyXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiSGlnaGxpZ2h0ZWRPblwiXSA9IFwiaGlnaGxpZ2h0ZWRPblwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIkVkZ2VVbmRlclwiXSA9IFwiZWRnZVVuZGVyXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiRWRnZU9uXCJdID0gXCJlZGdlT25cIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5ZXJbXCJCb3JkZXJcIl0gPSBcImJvcmRlclwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIlNlbGVjdGVkVW5kZXIxXCJdID0gXCJzZWxlY3RlZFVuZGVyMVwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIlNlbGVjdGVkT24xXCJdID0gXCJzZWxlY3RlZE9uMVwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIlVuU2VsZWN0ZWRDdXN0b21TaGFwZVwiXSA9IFwidW5TZWxlY3RlZEN1c3RvbVNoYXBlXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiTm9ybWFsQWxwaGFNYXNrXCJdID0gXCJub3JtYWxBbHBoYU1hc2tcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5ZXJbXCJIYWxvQWxwaGFNYXNrXCJdID0gXCJoYWxvQWxwaGFNYXNrXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiSGlnaGxpZ2h0ZWRVbmRlcjFcIl0gPSBcImhpZ2hsaWdodGVkVW5kZXIxXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiSGlnaGxpZ2h0ZWRPbjFcIl0gPSBcImhpZ2hsaWdodGVkT24xXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiU2VsZWN0ZWRFZGdlVW5kZXJcIl0gPSBcInNlbGVjdGVkRWRnZVVuZGVyXCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiQmxvYlVuZGVyXCJdID0gXCJibG9iVW5kZXJcIjtcbiAgICAvLyBcbiAgICBNYXJrTGF5ZXJbXCJCbG9iT25cIl0gPSBcImJsb2JPblwiO1xuICAgIC8vIFxuICAgIE1hcmtMYXllcltcIkhvdmVyT3ZlcmxheVwiXSA9IFwiaG92ZXJPdmVybGF5XCI7XG4gICAgLy8gXG4gICAgTWFya0xheWVyW1wiUHJlc3NlZE92ZXJsYXlcIl0gPSBcInByZXNzZWRPdmVybGF5XCI7XG59KShNYXJrTGF5ZXIgPSBleHBvcnRzLk1hcmtMYXllciB8fCAoZXhwb3J0cy5NYXJrTGF5ZXIgPSB7fSkpO1xuLy8gQ29sb3JPdmVycmlkZU1vZGUgcmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHdheXMgaW4gd2hpY2ggbWFyayBjb2xvcnMgbWF5IGJlIG1vZGlmaWVkLlxudmFyIENvbG9yT3ZlcnJpZGVNb2RlO1xuKGZ1bmN0aW9uIChDb2xvck92ZXJyaWRlTW9kZSkge1xuICAgIC8vIFxuICAgIENvbG9yT3ZlcnJpZGVNb2RlW1wiQ29sb3JPdmVycmlkZU5vbmVcIl0gPSBcImNvbG9yT3ZlcnJpZGVOb25lXCI7XG4gICAgLy8gXG4gICAgQ29sb3JPdmVycmlkZU1vZGVbXCJDb2xvck92ZXJyaWRlRm9nXCJdID0gXCJjb2xvck92ZXJyaWRlRm9nXCI7XG4gICAgLy8gXG4gICAgQ29sb3JPdmVycmlkZU1vZGVbXCJDb2xvck92ZXJyaWRlT3BhcXVlXCJdID0gXCJjb2xvck92ZXJyaWRlT3BhcXVlXCI7XG4gICAgLy8gXG4gICAgQ29sb3JPdmVycmlkZU1vZGVbXCJDb2xvck92ZXJyaWRlUmVwbGFjZUFscGhhXCJdID0gXCJjb2xvck92ZXJyaWRlUmVwbGFjZUFscGhhXCI7XG4gICAgLy8gXG4gICAgQ29sb3JPdmVycmlkZU1vZGVbXCJDb2xvck92ZXJyaWRlQ291bnRcIl0gPSBcImNvbG9yT3ZlcnJpZGVDb3VudFwiO1xufSkoQ29sb3JPdmVycmlkZU1vZGUgPSBleHBvcnRzLkNvbG9yT3ZlcnJpZGVNb2RlIHx8IChleHBvcnRzLkNvbG9yT3ZlcnJpZGVNb2RlID0ge30pKTtcbi8vIENvbG9yVHJhbnNmb3JtTW9kZSByZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgd2F5cyBpbiB3aGljaCBtYXJrIGNvbG9ycyBtYXkgYmUgbW9kaWZpZWQuXG52YXIgQ29sb3JUcmFuc2Zvcm1Nb2RlO1xuKGZ1bmN0aW9uIChDb2xvclRyYW5zZm9ybU1vZGUpIHtcbiAgICAvLyBcbiAgICBDb2xvclRyYW5zZm9ybU1vZGVbXCJDb2xvclRyYW5zZm9ybU5vbmVcIl0gPSBcImNvbG9yVHJhbnNmb3JtTm9uZVwiO1xuICAgIC8vIFxuICAgIENvbG9yVHJhbnNmb3JtTW9kZVtcIkNvbG9yVHJhbnNmb3JtRm9nXCJdID0gXCJjb2xvclRyYW5zZm9ybUZvZ1wiO1xuICAgIC8vIFxuICAgIENvbG9yVHJhbnNmb3JtTW9kZVtcIkNvbG9yVHJhbnNmb3JtT3BhcXVlXCJdID0gXCJjb2xvclRyYW5zZm9ybU9wYXF1ZVwiO1xuICAgIC8vIFxuICAgIENvbG9yVHJhbnNmb3JtTW9kZVtcIkNvbG9yVHJhbnNmb3JtT3ZlcnJpZGVDb2xvclwiXSA9IFwiY29sb3JUcmFuc2Zvcm1PdmVycmlkZUNvbG9yXCI7XG4gICAgLy8gXG4gICAgQ29sb3JUcmFuc2Zvcm1Nb2RlW1wiQ29sb3JUcmFuc2Zvcm1PdmVycmlkZUFscGhhXCJdID0gXCJjb2xvclRyYW5zZm9ybU92ZXJyaWRlQWxwaGFcIjtcbn0pKENvbG9yVHJhbnNmb3JtTW9kZSA9IGV4cG9ydHMuQ29sb3JUcmFuc2Zvcm1Nb2RlIHx8IChleHBvcnRzLkNvbG9yVHJhbnNmb3JtTW9kZSA9IHt9KSk7XG4vLyBNYXJrU3RhdGUgcmVwcmVzZW50cyB2YWxpZCBzdGF0ZXMgZm9yIGEgbWFyay5cbnZhciBNYXJrU3RhdGU7XG4oZnVuY3Rpb24gKE1hcmtTdGF0ZSkge1xuICAgIC8vIFxuICAgIE1hcmtTdGF0ZVtcIk1hcmtTdGF0ZU5vcm1hbFwiXSA9IFwibWFya1N0YXRlTm9ybWFsXCI7XG4gICAgLy8gXG4gICAgTWFya1N0YXRlW1wiTWFya1N0YXRlSGlnaGxpZ2h0ZWRcIl0gPSBcIm1hcmtTdGF0ZUhpZ2hsaWdodGVkXCI7XG4gICAgLy8gXG4gICAgTWFya1N0YXRlW1wiTWFya1N0YXRlU2VsZWN0ZWRcIl0gPSBcIm1hcmtTdGF0ZVNlbGVjdGVkXCI7XG4gICAgLy8gXG4gICAgTWFya1N0YXRlW1wiTWFya1N0YXRlSW52aXNpYmxlXCJdID0gXCJtYXJrU3RhdGVJbnZpc2libGVcIjtcbn0pKE1hcmtTdGF0ZSA9IGV4cG9ydHMuTWFya1N0YXRlIHx8IChleHBvcnRzLk1hcmtTdGF0ZSA9IHt9KSk7XG4vLyBMaW5lU3RhdGUgcmVwcmVzZW50cyB2YWxpZCBzdGF0ZXMgZm9yIGEgbGluZSBtdWx0aS1tYXJrLlxudmFyIExpbmVTdGF0ZTtcbihmdW5jdGlvbiAoTGluZVN0YXRlKSB7XG4gICAgLy8gXG4gICAgTGluZVN0YXRlW1wiTGluZVN0YXRlTm9ybWFsXCJdID0gXCJsaW5lU3RhdGVOb3JtYWxcIjtcbiAgICAvLyBcbiAgICBMaW5lU3RhdGVbXCJMaW5lU3RhdGVIaWdobGlnaHRlZFwiXSA9IFwibGluZVN0YXRlSGlnaGxpZ2h0ZWRcIjtcbiAgICAvLyBcbiAgICBMaW5lU3RhdGVbXCJMaW5lU3RhdGVTZWxlY3RlZFwiXSA9IFwibGluZVN0YXRlU2VsZWN0ZWRcIjtcbn0pKExpbmVTdGF0ZSA9IGV4cG9ydHMuTGluZVN0YXRlIHx8IChleHBvcnRzLkxpbmVTdGF0ZSA9IHt9KSk7XG4vLyBSZW5kZXJQYXNzIHJlcHJlc2VudHMgZWFjaCBwYXNzIG92ZXIgdGhlIHNjZW5lIGVsZW1lbnRzIGFzIGVhY2ggbGF5ZXIgaXMgcmVuZGVyZWQuXG52YXIgUmVuZGVyUGFzcztcbihmdW5jdGlvbiAoUmVuZGVyUGFzcykge1xuICAgIC8vIFxuICAgIFJlbmRlclBhc3NbXCJOb3JtYWxVbmRlclBhc3NcIl0gPSBcIm5vcm1hbFVuZGVyUGFzc1wiO1xuICAgIC8vIFxuICAgIFJlbmRlclBhc3NbXCJOb3JtYWxPblBhc3NcIl0gPSBcIm5vcm1hbE9uUGFzc1wiO1xuICAgIC8vIFxuICAgIFJlbmRlclBhc3NbXCJIaWdobGlnaHRlZFVuZGVyUGFzc1wiXSA9IFwiaGlnaGxpZ2h0ZWRVbmRlclBhc3NcIjtcbiAgICAvLyBcbiAgICBSZW5kZXJQYXNzW1wiSGlnaGxpZ2h0ZWRPblBhc3NcIl0gPSBcImhpZ2hsaWdodGVkT25QYXNzXCI7XG4gICAgLy8gXG4gICAgUmVuZGVyUGFzc1tcIlNlbGVjdGVkVW5kZXJQYXNzXCJdID0gXCJzZWxlY3RlZFVuZGVyUGFzc1wiO1xuICAgIC8vIFxuICAgIFJlbmRlclBhc3NbXCJTZWxlY3RlZE9uUGFzc1wiXSA9IFwic2VsZWN0ZWRPblBhc3NcIjtcbiAgICAvLyBcbiAgICBSZW5kZXJQYXNzW1wiUmVuZGVyUGFzc0NvdW50XCJdID0gXCJyZW5kZXJQYXNzQ291bnRcIjtcbn0pKFJlbmRlclBhc3MgPSBleHBvcnRzLlJlbmRlclBhc3MgfHwgKGV4cG9ydHMuUmVuZGVyUGFzcyA9IHt9KSk7XG4vLyBUaGUgcm9sZSBhc3NvY2lhdGVkIHdpdGggYSBzY2VuZSBlbGVtZW50LiBUaGlzIGFsbG93cyB0aGUgZHJhdyBvcmRlcmluZyB0byBiZSBtb3JlIGVmZmljaWVudC5cbnZhciBFbGVtZW50Um9sZTtcbihmdW5jdGlvbiAoRWxlbWVudFJvbGUpIHtcbiAgICAvLyBcbiAgICBFbGVtZW50Um9sZVtcIk1vZGVsQ29udGFpbmVyUm9sZVwiXSA9IFwibW9kZWxDb250YWluZXJSb2xlXCI7XG4gICAgLy8gXG4gICAgRWxlbWVudFJvbGVbXCJCYWNrZ3JvdW5kUm9sZVwiXSA9IFwiYmFja2dyb3VuZFJvbGVcIjtcbiAgICAvLyBcbiAgICBFbGVtZW50Um9sZVtcIlVuZGVyTWFya1JvbGVcIl0gPSBcInVuZGVyTWFya1JvbGVcIjtcbiAgICAvLyBcbiAgICBFbGVtZW50Um9sZVtcIk1hcmtSb2xlXCJdID0gXCJtYXJrUm9sZVwiO1xuICAgIC8vIFxuICAgIEVsZW1lbnRSb2xlW1wiVW5kZXJMYWJlbFJvbGVcIl0gPSBcInVuZGVyTGFiZWxSb2xlXCI7XG4gICAgLy8gXG4gICAgRWxlbWVudFJvbGVbXCJMYWJlbFJvbGVcIl0gPSBcImxhYmVsUm9sZVwiO1xuICAgIC8vIFxuICAgIEVsZW1lbnRSb2xlW1wiRm9yZWdyb3VuZFJvbGVcIl0gPSBcImZvcmVncm91bmRSb2xlXCI7XG59KShFbGVtZW50Um9sZSA9IGV4cG9ydHMuRWxlbWVudFJvbGUgfHwgKGV4cG9ydHMuRWxlbWVudFJvbGUgPSB7fSkpO1xuLy8gXG52YXIgUGF0aEVsZW1lbnQ7XG4oZnVuY3Rpb24gKFBhdGhFbGVtZW50KSB7XG4gICAgLy8gXG4gICAgUGF0aEVsZW1lbnRbXCJQYXRoTW92ZVRvXCJdID0gXCJtb3ZldG9cIjtcbiAgICAvLyBcbiAgICBQYXRoRWxlbWVudFtcIlBhdGhMaW5lVG9cIl0gPSBcImxpbmV0b1wiO1xuICAgIC8vIFxuICAgIFBhdGhFbGVtZW50W1wiUGF0aEN1cnZlVG9cIl0gPSBcImN1cnZldG9cIjtcbn0pKFBhdGhFbGVtZW50ID0gZXhwb3J0cy5QYXRoRWxlbWVudCB8fCAoZXhwb3J0cy5QYXRoRWxlbWVudCA9IHt9KSk7XG4vLyBUaGUgc2VyaWFsaXphdGlvbiBpcyBzdGlsbCBkdXBsaWNhdGVkIGluIEpzb25VdGlsczo6Wm9uZVV0aWxzOjpab25lTmFtZXMgYW5kIHR5cGVzLmpzXG52YXIgWm9uZVR5cGU7XG4oZnVuY3Rpb24gKFpvbmVUeXBlKSB7XG4gICAgLy8gXG4gICAgWm9uZVR5cGVbXCJaVF9JbnZhbGlkXCJdID0gXCJpbnZhbGlkXCI7XG4gICAgLy8gc2VjdGlvbjogbmFtZSA9IHdvcmtzaGVldCBuYW1lXG4gICAgWm9uZVR5cGVbXCJaVF9WaXpcIl0gPSBcInZpelwiO1xuICAgIC8vIFxuICAgIFpvbmVUeXBlW1wiWlRfQ29sb3JMZWdlbmRcIl0gPSBcImNvbG9yXCI7XG4gICAgLy8gXG4gICAgWm9uZVR5cGVbXCJaVF9TaGFwZUxlZ2VuZFwiXSA9IFwic2hhcGVcIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX1NpemVMZWdlbmRcIl0gPSBcInNpemVcIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX01hcExlZ2VuZFwiXSA9IFwibWFwXCI7XG4gICAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gICAgWm9uZVR5cGVbXCJaVF9RdWlja0ZpbHRlclwiXSA9IFwiZmlsdGVyXCI7XG4gICAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gICAgWm9uZVR5cGVbXCJaVF9IaWdobGlnaHRlclwiXSA9IFwiaGlnaGxpZ2h0ZXJcIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX0N1cnJQYWdlXCJdID0gXCJjdXJyZW50LXBhZ2VcIjtcbiAgICAvLyBzZWN0aW9uOiBuYW1lIHVudXNlZFxuICAgIFpvbmVUeXBlW1wiWlRfRW1wdHlcIl0gPSBcImVtcHR5XCI7XG4gICAgLy8gcGFyYW0gPSB0aXRsZVxuICAgIFpvbmVUeXBlW1wiWlRfVGl0bGVcIl0gPSBcInRpdGxlXCI7XG4gICAgLy8gcGFyYW0gPSB0ZXh0XG4gICAgWm9uZVR5cGVbXCJaVF9UZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgLy8gcGFyYW0gPSBmaWxlIG5hbWVcbiAgICBab25lVHlwZVtcIlpUX0JpdG1hcFwiXSA9IFwiYml0bWFwXCI7XG4gICAgLy8gcGFyYW0gPSBVUkxcbiAgICBab25lVHlwZVtcIlpUX1dlYlwiXSA9IFwid2ViXCI7XG4gICAgLy8gcGFyYW0gPSBhZGQtaW4gaWRcbiAgICBab25lVHlwZVtcIlpUX0FkZEluXCJdID0gXCJhZGQtaW5cIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX0J1dHRvblwiXSA9IFwiYnV0dG9uLW9iamVjdFwiO1xuICAgIC8vIHBhcmFtID0gZmllbGQgbmFtZVxuICAgIFpvbmVUeXBlW1wiWlRfUGFyYW1DdHJsXCJdID0gXCJwYXJhbWN0cmxcIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX0ZsaXBib2FyZE5hdlwiXSA9IFwiZmxpcGJvYXJkLW5hdlwiO1xuICAgIC8vIFxuICAgIFpvbmVUeXBlW1wiWlRfRmxpcGJvYXJkXCJdID0gXCJmbGlwYm9hcmRcIjtcbiAgICAvLyBzZWN0aW9uOiBsYXlvdXRcbiAgICBab25lVHlwZVtcIlpUX0xheW91dEJhc2ljXCJdID0gXCJsYXlvdXQtYmFzaWNcIjtcbiAgICAvLyBcbiAgICBab25lVHlwZVtcIlpUX0xheW91dEZsb3dcIl0gPSBcImxheW91dC1mbG93XCI7XG4gICAgLy8gXG4gICAgWm9uZVR5cGVbXCJaVF9MYXlvdXRGcmVlRm9ybVwiXSA9IFwibGF5b3V0LWZyZWUtZm9ybVwiO1xuICAgIC8vIHVzZWQgb25seSBmb3IgZW51bSBpdGVyYXRpb25cbiAgICBab25lVHlwZVtcIlpUX0VuZFwiXSA9IFwiZW5kXCI7XG59KShab25lVHlwZSA9IGV4cG9ydHMuWm9uZVR5cGUgfHwgKGV4cG9ydHMuWm9uZVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgQ29udGVudFR5cGU7XG4oZnVuY3Rpb24gKENvbnRlbnRUeXBlKSB7XG4gICAgLy8gc2VjdGlvbjogbmFtZSA9IHdvcmtzaGVldCBuYW1lXG4gICAgQ29udGVudFR5cGVbXCJDVF9WaXpcIl0gPSBcInZpelwiO1xuICAgIC8vIFxuICAgIENvbnRlbnRUeXBlW1wiQ1RfQ29sb3JMZWdlbmRcIl0gPSBcImNvbG9yXCI7XG4gICAgLy8gXG4gICAgQ29udGVudFR5cGVbXCJDVF9TaGFwZUxlZ2VuZFwiXSA9IFwic2hhcGVcIjtcbiAgICAvLyBcbiAgICBDb250ZW50VHlwZVtcIkNUX1NpemVMZWdlbmRcIl0gPSBcInNpemVcIjtcbiAgICAvLyBcbiAgICBDb250ZW50VHlwZVtcIkNUX01hcExlZ2VuZFwiXSA9IFwibWFwXCI7XG4gICAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gICAgQ29udGVudFR5cGVbXCJDVF9RdWlja0ZpbHRlclwiXSA9IFwiZmlsdGVyXCI7XG4gICAgLy8gcGFyYW0gPSBmaWVsZCBuYW1lXG4gICAgQ29udGVudFR5cGVbXCJDVF9IaWdobGlnaHRlclwiXSA9IFwiaGlnaGxpZ2h0ZXJcIjtcbiAgICAvLyBcbiAgICBDb250ZW50VHlwZVtcIkNUX0N1cnJQYWdlXCJdID0gXCJjdXJyZW50LXBhZ2VcIjtcbiAgICAvLyBwYXJhbSA9IGZpZWxkIG5hbWVcbiAgICBDb250ZW50VHlwZVtcIkNUX1BhcmFtQ3RybFwiXSA9IFwicGFyYW1jdHJsXCI7XG4gICAgLy8gcGFyYW0gPSB0aXRsZVxuICAgIENvbnRlbnRUeXBlW1wiQ1RfVGl0bGVcIl0gPSBcInRpdGxlXCI7XG4gICAgLy8gcGFyYW0gPSB0ZXh0XG4gICAgQ29udGVudFR5cGVbXCJDVF9UZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgLy8gcGFyYW0gPSBmaWxlIG5hbWVcbiAgICBDb250ZW50VHlwZVtcIkNUX0JpdG1hcFwiXSA9IFwiYml0bWFwXCI7XG4gICAgLy8gcGFyYW0gPSBVUkxcbiAgICBDb250ZW50VHlwZVtcIkNUX1dlYlwiXSA9IFwid2ViXCI7XG4gICAgLy8gcGFyYW0gPSBhZGQtaW4gaWRcbiAgICBDb250ZW50VHlwZVtcIkNUX0FkZEluXCJdID0gXCJhZGQtaW5cIjtcbiAgICAvLyBcbiAgICBDb250ZW50VHlwZVtcIkNUX0J1dHRvblwiXSA9IFwiYnV0dG9uXCI7XG4gICAgLy8gXG4gICAgQ29udGVudFR5cGVbXCJDVF9GbGlwYm9hcmROYXZcIl0gPSBcImZsaXBib2FyZC1uYXZcIjtcbiAgICAvLyBcbiAgICBDb250ZW50VHlwZVtcIkNUX0ZsaXBib2FyZFwiXSA9IFwiZmxpcGJvYXJkXCI7XG4gICAgLy8gRGVub3RlcyB0aGF0IHRoaXMgem9uZSBoYXMgbm8gY29udGVudCBhbmQgdGhlcmVmb3JlIGhhcyBhIG1lYW5pbmdmdWwgbGF5b3V0IHR5cGVcbiAgICBDb250ZW50VHlwZVtcIkNUX05vbmVcIl0gPSBcImNvbnRlbnQtbm9uZVwiO1xufSkoQ29udGVudFR5cGUgPSBleHBvcnRzLkNvbnRlbnRUeXBlIHx8IChleHBvcnRzLkNvbnRlbnRUeXBlID0ge30pKTtcbi8vIFxudmFyIFpvbmVMYXlvdXRUeXBlO1xuKGZ1bmN0aW9uIChab25lTGF5b3V0VHlwZSkge1xuICAgIC8vIHNlY3Rpb246IGxheW91dFxuICAgIFpvbmVMYXlvdXRUeXBlW1wiWkxUX0Jhc2ljXCJdID0gXCJiYXNpY1wiO1xuICAgIC8vIFxuICAgIFpvbmVMYXlvdXRUeXBlW1wiWkxUX0ZyZWVGb3JtXCJdID0gXCJmcmVlLWZvcm1cIjtcbiAgICAvLyBcbiAgICBab25lTGF5b3V0VHlwZVtcIlpMVF9GbG93XCJdID0gXCJmbG93XCI7XG4gICAgLy8gXG4gICAgWm9uZUxheW91dFR5cGVbXCJaTFRfRGlzdHJpYnV0ZUV2ZW5seVwiXSA9IFwiZGlzdHJpYnV0ZS1ldmVubHlcIjtcbiAgICAvLyBcbiAgICBab25lTGF5b3V0VHlwZVtcIlpMVF9Ucml2aWFsXCJdID0gXCJ0cml2aWFsXCI7XG59KShab25lTGF5b3V0VHlwZSA9IGV4cG9ydHMuWm9uZUxheW91dFR5cGUgfHwgKGV4cG9ydHMuWm9uZUxheW91dFR5cGUgPSB7fSkpO1xuLy8gUmVjdGFubGdlcyBpbiB0aGUgYm94IG1vZGVsXG52YXIgQm94VHlwZTtcbihmdW5jdGlvbiAoQm94VHlwZSkge1xuICAgIC8vIGJvdW5kaW5nIHJlY3RhbmdsZSBpbiB0aGUgYm94IG1vZGVsXG4gICAgQm94VHlwZVtcIkJUX0JvdW5kaW5nXCJdID0gXCJib3VuZGluZ1wiO1xuICAgIC8vIGJvcmRlciByZWN0YW5nbGUgaW4gdGhlIGJveCBtb2RlbCBleGNsdWRpbmcgbWFyZ2luc1xuICAgIEJveFR5cGVbXCJCVF9Cb3JkZXJcIl0gPSBcImJvcmRlclwiO1xuICAgIC8vIGNvbnRlbnQgcmVhY3RuYWdlIGluIHRoZSBib3ggbW9kZWwgZXhjbHVkaW5nIG1hcmdpbnMgcGx1cyBib3JkZXJzIGFuZCBwYWRkaW5nc1xuICAgIEJveFR5cGVbXCJCVF9Db250ZW50XCJdID0gXCJjb250ZW50XCI7XG59KShCb3hUeXBlID0gZXhwb3J0cy5Cb3hUeXBlIHx8IChleHBvcnRzLkJveFR5cGUgPSB7fSkpO1xuLy8gUmVwcmVzZW50cyB0aGUgdHlwZSBvZiBjb21tYW5kIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgei1vcmRlciBvZiBhIHpvbmVcbnZhciBNb2RpZnlab25lWk9yZGVyQ29tbWFuZFR5cGU7XG4oZnVuY3Rpb24gKE1vZGlmeVpvbmVaT3JkZXJDb21tYW5kVHlwZSkge1xuICAgIC8vIFxuICAgIE1vZGlmeVpvbmVaT3JkZXJDb21tYW5kVHlwZVtcIk1vZGlmeVpvbmVaT3JkZXJDb21tYW5kRnJvbnRcIl0gPSBcImZyb250XCI7XG4gICAgLy8gXG4gICAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlW1wiTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRCYWNrXCJdID0gXCJiYWNrXCI7XG4gICAgLy8gXG4gICAgTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlW1wiTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRSZWxhdGl2ZVBvc1wiXSA9IFwicmVsLXBvc1wiO1xufSkoTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlID0gZXhwb3J0cy5Nb2RpZnlab25lWk9yZGVyQ29tbWFuZFR5cGUgfHwgKGV4cG9ydHMuTW9kaWZ5Wm9uZVpPcmRlckNvbW1hbmRUeXBlID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIG9mIHZhbGlkIGhvcml6b250YWwgYWxpZ25tZW50cyBmb3IgdGV4dCByZWdpb25zLlxudmFyIFRleHRSZWdpb25IQWxpZ247XG4oZnVuY3Rpb24gKFRleHRSZWdpb25IQWxpZ24pIHtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uSEFsaWduW1wiVEhBX0xlZnRcIl0gPSBcImgtYWxpZ24tbGVmdFwiO1xuICAgIC8vIFxuICAgIFRleHRSZWdpb25IQWxpZ25bXCJUSEFfQ2VudGVyXCJdID0gXCJoLWFsaWduLWNlbnRlclwiO1xuICAgIC8vIFxuICAgIFRleHRSZWdpb25IQWxpZ25bXCJUSEFfUmlnaHRcIl0gPSBcImgtYWxpZ24tcmlnaHRcIjtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uSEFsaWduW1wiVEhBX0F1dG9tYXRpY1wiXSA9IFwiaC1hbGlnbi1hdXRvXCI7XG59KShUZXh0UmVnaW9uSEFsaWduID0gZXhwb3J0cy5UZXh0UmVnaW9uSEFsaWduIHx8IChleHBvcnRzLlRleHRSZWdpb25IQWxpZ24gPSB7fSkpO1xuLy8gRW51bWVyYXRpb24gb2YgdmFsaWQgdmVydGljYWwgYWxpZ25tZW50cyBmb3IgdGV4dCByZWdpb25zLlxudmFyIFRleHRSZWdpb25WQWxpZ247XG4oZnVuY3Rpb24gKFRleHRSZWdpb25WQWxpZ24pIHtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uVkFsaWduW1wiVFZBX0JvdHRvbVwiXSA9IFwidi1hbGlnbi1ib3R0b21cIjtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uVkFsaWduW1wiVFZBX0NlbnRlclwiXSA9IFwidi1hbGlnbi1jZW50ZXJcIjtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uVkFsaWduW1wiVFZBX1RvcFwiXSA9IFwidi1hbGlnbi10b3BcIjtcbiAgICAvLyBcbiAgICBUZXh0UmVnaW9uVkFsaWduW1wiVFZBX0F1dG9tYXRpY1wiXSA9IFwidi1hbGlnbi1hdXRvXCI7XG59KShUZXh0UmVnaW9uVkFsaWduID0gZXhwb3J0cy5UZXh0UmVnaW9uVkFsaWduIHx8IChleHBvcnRzLlRleHRSZWdpb25WQWxpZ24gPSB7fSkpO1xuLy8gXG52YXIgQXV0b0NvbXBsZXRlSXRlbVR5cGU7XG4oZnVuY3Rpb24gKEF1dG9Db21wbGV0ZUl0ZW1UeXBlKSB7XG4gICAgLy8gXG4gICAgQXV0b0NvbXBsZXRlSXRlbVR5cGVbXCJBQ0lUX0ludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbiAgICAvLyBcbiAgICBBdXRvQ29tcGxldGVJdGVtVHlwZVtcIkFDSVRfRmllbGRcIl0gPSBcImZpZWxkXCI7XG4gICAgLy8gXG4gICAgQXV0b0NvbXBsZXRlSXRlbVR5cGVbXCJBQ0lUX0Z1bmN0aW9uXCJdID0gXCJmdW5jXCI7XG4gICAgLy8gXG4gICAgQXV0b0NvbXBsZXRlSXRlbVR5cGVbXCJBQ0lUX1NlcGFyYXRvclwiXSA9IFwic2VwYXJhdG9yXCI7XG4gICAgLy8gXG4gICAgQXV0b0NvbXBsZXRlSXRlbVR5cGVbXCJBQ0lUX0hlYWRlclwiXSA9IFwiaGVhZGVyXCI7XG59KShBdXRvQ29tcGxldGVJdGVtVHlwZSA9IGV4cG9ydHMuQXV0b0NvbXBsZXRlSXRlbVR5cGUgfHwgKGV4cG9ydHMuQXV0b0NvbXBsZXRlSXRlbVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgQ2FsY3VsYXRpb25Db250ZXh0O1xuKGZ1bmN0aW9uIChDYWxjdWxhdGlvbkNvbnRleHQpIHtcbiAgICAvLyBcbiAgICBDYWxjdWxhdGlvbkNvbnRleHRbXCJDQ19DYWxjdWxhdGlvbkRpYWxvZ1wiXSA9IFwiY2FsY3VsYXRpb24tZGlhbG9nXCI7XG4gICAgLy8gXG4gICAgQ2FsY3VsYXRpb25Db250ZXh0W1wiQ0NfVHlwZUluUGlsbFwiXSA9IFwidHlwZS1pbi1waWxsXCI7XG4gICAgLy8gXG4gICAgQ2FsY3VsYXRpb25Db250ZXh0W1wiQ0NfRmlsdGVyVG9wXCJdID0gXCJmaWx0ZXItdG9wXCI7XG4gICAgLy8gXG4gICAgQ2FsY3VsYXRpb25Db250ZXh0W1wiQ0NfRmlsdGVyQ29uZGl0aW9uXCJdID0gXCJmaWx0ZXItY29uZGl0aW9uXCI7XG4gICAgLy8gXG4gICAgQ2FsY3VsYXRpb25Db250ZXh0W1wiQ0NfSm9pbkNhbGNEaWFsb2dcIl0gPSBcImpvaW4tY2FsYy1kaWFsb2dcIjtcbn0pKENhbGN1bGF0aW9uQ29udGV4dCA9IGV4cG9ydHMuQ2FsY3VsYXRpb25Db250ZXh0IHx8IChleHBvcnRzLkNhbGN1bGF0aW9uQ29udGV4dCA9IHt9KSk7XG4vLyBcbnZhciBGb3JlY2FzdENvbXBvbmVudFR5cGU7XG4oZnVuY3Rpb24gKEZvcmVjYXN0Q29tcG9uZW50VHlwZSkge1xuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29tcG9uZW50VHlwZVtcIkZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX05PTkVcIl0gPSBcImV0cy1ub25lXCI7XG4gICAgLy8gXG4gICAgRm9yZWNhc3RDb21wb25lbnRUeXBlW1wiRm9yZWNhc3RDb21wb25lbnRUeXBlX19FVFNfQURESVRJVkVcIl0gPSBcImV0cy1hZGRpdGl2ZVwiO1xuICAgIC8vIFxuICAgIEZvcmVjYXN0Q29tcG9uZW50VHlwZVtcIkZvcmVjYXN0Q29tcG9uZW50VHlwZV9fRVRTX01VTFRJUExJQ0FUSVZFXCJdID0gXCJldHMtbXVsdGlwbGljYXRpdmVcIjtcbn0pKEZvcmVjYXN0Q29tcG9uZW50VHlwZSA9IGV4cG9ydHMuRm9yZWNhc3RDb21wb25lbnRUeXBlIHx8IChleHBvcnRzLkZvcmVjYXN0Q29tcG9uZW50VHlwZSA9IHt9KSk7XG4vLyBcbnZhciBQcmVkaWN0aW9uSW50ZXJ2YWxBeGlzO1xuKGZ1bmN0aW9uIChQcmVkaWN0aW9uSW50ZXJ2YWxBeGlzKSB7XG4gICAgLy8gXG4gICAgUHJlZGljdGlvbkludGVydmFsQXhpc1tcIlBJX0FYSVNfTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIFByZWRpY3Rpb25JbnRlcnZhbEF4aXNbXCJQSV9BWElTX1hcIl0gPSBcImF4aXMteFwiO1xuICAgIC8vIFxuICAgIFByZWRpY3Rpb25JbnRlcnZhbEF4aXNbXCJQSV9BWElTX1lcIl0gPSBcImF4aXMteVwiO1xufSkoUHJlZGljdGlvbkludGVydmFsQXhpcyA9IGV4cG9ydHMuUHJlZGljdGlvbkludGVydmFsQXhpcyB8fCAoZXhwb3J0cy5QcmVkaWN0aW9uSW50ZXJ2YWxBeGlzID0ge30pKTtcbi8vIEluZGljYXRlcyB0aGUgdHlwZSBvZiBxdWljayBmaWx0ZXJcbnZhciBRdWlja0ZpbHRlclR5cGU7XG4oZnVuY3Rpb24gKFF1aWNrRmlsdGVyVHlwZSkge1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyVHlwZVtcIlFGVF9Vbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJUeXBlW1wiUUZUX1F1YW50aXRhdGl2ZVwiXSA9IFwicXVhbnRpdGF0aXZlXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJUeXBlW1wiUUZUX1JlbGF0aXZlRGF0ZVwiXSA9IFwicmVsYXRpdmUtZGF0ZVwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyVHlwZVtcIlFGVF9IaWVyYXJjaHlcIl0gPSBcImhpZXJhcmNoeVwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyVHlwZVtcIlFGVF9DYXRlZ29yaWNhbFwiXSA9IFwiY2F0ZWdvcmljYWxcIjtcbn0pKFF1aWNrRmlsdGVyVHlwZSA9IGV4cG9ydHMuUXVpY2tGaWx0ZXJUeXBlIHx8IChleHBvcnRzLlF1aWNrRmlsdGVyVHlwZSA9IHt9KSk7XG4vLyBJbmRpY2F0ZXMgYSBjYXRlZ29yaWNhbCBVSSBjb250cm9sXG52YXIgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmw7XG4oZnVuY3Rpb24gKFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsKSB7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxbXCJRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19SZWFkb3V0XCJdID0gXCJyZWFkb3V0XCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxbXCJRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19TbGlkZXJcIl0gPSBcInNsaWRlclwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfU3RlcEJ0bnNcIl0gPSBcInN0ZXAtYnV0dG9uc1wiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfQWxsQnRuXCJdID0gXCJhbGwtYnV0dG9uc1wiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfRmlsdGVyU3RhdGVcIl0gPSBcImZpbHRlcnN0YXRlLWJ1dHRvblwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxfX1FGQ0NfU2VhcmNoXCJdID0gXCJzZWFyY2hcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybFtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0RvbWFpblwiXSA9IFwiZG9tYWluXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxbXCJRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19Nb3JlRmV3ZXJCdXR0b25cIl0gPSBcIm1vcmVmZXdlci1idXR0b25cIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybFtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0V4Y2x1ZGVcIl0gPSBcImV4Y2x1ZGVcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybFtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX01vZGVcIl0gPSBcIm1vZGVcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybFtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxDdHJsX19RRkNDX0xldmVsc1wiXSA9IFwibGV2ZWxzXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmxbXCJRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybF9fUUZDQ19BcHBseUJ1dHRvblwiXSA9IFwiYXBwbHktYnV0dG9uXCI7XG59KShRdWlja0ZpbHRlckNhdGVnb3JpY2FsQ3RybCA9IGV4cG9ydHMuUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmwgfHwgKGV4cG9ydHMuUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbEN0cmwgPSB7fSkpO1xuLy8gSW5kaWNhdGVzIGEgY2F0ZWdvcmljYWwgbW9kZVxudmFyIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlO1xuKGZ1bmN0aW9uIChRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZSkge1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVfX1FGQ01fQ2hlY2tMaXN0XCJdID0gXCJjaGVjay1saXN0XCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVbXCJRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZV9fUUZDTV9SYWRpb0xpc3RcIl0gPSBcInJhZGlvLWxpc3RcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZVtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX0Ryb3Bkb3duXCJdID0gXCJkcm9wZG93blwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVfX1FGQ01fU2xpZGVyXCJdID0gXCJzbGlkZXJcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZVtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX1BhdHRlcm5cIl0gPSBcInBhdHRlcm5cIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZVtcIlF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlX19RRkNNX1R5cGVJbkxpc3RcIl0gPSBcInR5cGUtaW4tbGlzdFwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlW1wiUXVpY2tGaWx0ZXJDYXRlZ29yaWNhbE1vZGVfX1FGQ01fQ2hlY2tEcm9wZG93blwiXSA9IFwiY2hlY2stZHJvcGRvd25cIjtcbn0pKFF1aWNrRmlsdGVyQ2F0ZWdvcmljYWxNb2RlID0gZXhwb3J0cy5RdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZSB8fCAoZXhwb3J0cy5RdWlja0ZpbHRlckNhdGVnb3JpY2FsTW9kZSA9IHt9KSk7XG4vLyBJbmRpY2F0ZXMgYSBxdWFudGl0YXRpdmUgVUkgY29udHJvbFxudmFyIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybDtcbihmdW5jdGlvbiAoUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsKSB7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsW1wiUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX1JlYWRvdXRzXCJdID0gXCJyZWFkb3V0c1wiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybFtcIlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19TbGlkZXJcIl0gPSBcInNsaWRlclwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybFtcIlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19OdWxsQ3RybHNcIl0gPSBcIm51bGwtY29udHJvbHNcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxbXCJRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmxfX1FGUUNfUmVsZGF0ZVBpY2tlclwiXSA9IFwicmVsLWRhdGUtcGlja2VyXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsW1wiUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX0RvbWFpblwiXSA9IFwiZG9tYWluXCI7XG4gICAgLy8gXG4gICAgUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsW1wiUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVDdHJsX19RRlFDX01vcmVGZXdlckJ1dHRvblwiXSA9IFwibW9yZWZld2VyLWJ1dHRvblwiO1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybFtcIlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybF9fUUZRQ19GaWx0ZXJTdGF0ZVwiXSA9IFwiZmlsdGVyc3RhdGUtYnV0dG9uXCI7XG59KShRdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmwgPSBleHBvcnRzLlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlQ3RybCB8fCAoZXhwb3J0cy5RdWlja0ZpbHRlclF1YW50aXRhdGl2ZUN0cmwgPSB7fSkpO1xuLy8gSW5kaWNhdGVzIGEgcXVhbnRpdGF0aXZlIG1vZGVcbnZhciBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGU7XG4oZnVuY3Rpb24gKFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZSkge1xuICAgIC8vIFxuICAgIFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZVtcIlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZV9fUUZRTV9NaW5NYXhcIl0gPSBcIm1pbi1tYXhcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVbXCJRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWluT25seVwiXSA9IFwibWluLW9ubHlcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVbXCJRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fTWF4T25seVwiXSA9IFwibWF4LW9ubHlcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVbXCJRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fUmVsRGF0ZVwiXSA9IFwicmVsLWRhdGVcIjtcbiAgICAvLyBcbiAgICBRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVbXCJRdWlja0ZpbHRlclF1YW50aXRhdGl2ZU1vZGVfX1FGUU1fUmVsUGlja1wiXSA9IFwicmVsLXBpY2tcIjtcbn0pKFF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZSA9IGV4cG9ydHMuUXVpY2tGaWx0ZXJRdWFudGl0YXRpdmVNb2RlIHx8IChleHBvcnRzLlF1aWNrRmlsdGVyUXVhbnRpdGF0aXZlTW9kZSA9IHt9KSk7XG4vLyBXaGVyZSBpcyByZW5kZXJpbmcgaGFwcGVuaW5nIC0gY2xpZW50IG9yIHNlcnZlclxudmFyIFJlbmRlck1vZGU7XG4oZnVuY3Rpb24gKFJlbmRlck1vZGUpIHtcbiAgICAvLyBcbiAgICBSZW5kZXJNb2RlW1wiUmVuZGVyTW9kZVNlcnZlclwiXSA9IFwicmVuZGVyLW1vZGUtc2VydmVyXCI7XG4gICAgLy8gXG4gICAgUmVuZGVyTW9kZVtcIlJlbmRlck1vZGVDbGllbnRcIl0gPSBcInJlbmRlci1tb2RlLWNsaWVudFwiO1xufSkoUmVuZGVyTW9kZSA9IGV4cG9ydHMuUmVuZGVyTW9kZSB8fCAoZXhwb3J0cy5SZW5kZXJNb2RlID0ge30pKTtcbi8vIFxudmFyIEFkZE9yUmVtb3ZlTWFya3M7XG4oZnVuY3Rpb24gKEFkZE9yUmVtb3ZlTWFya3MpIHtcbiAgICAvLyBcbiAgICBBZGRPclJlbW92ZU1hcmtzW1wiQU9STV9BRERcIl0gPSBcImFkZFwiO1xuICAgIC8vIFxuICAgIEFkZE9yUmVtb3ZlTWFya3NbXCJBT1JNX1JFTU9WRVwiXSA9IFwicmVtb3ZlXCI7XG59KShBZGRPclJlbW92ZU1hcmtzID0gZXhwb3J0cy5BZGRPclJlbW92ZU1hcmtzIHx8IChleHBvcnRzLkFkZE9yUmVtb3ZlTWFya3MgPSB7fSkpO1xuLy8gXG52YXIgVmlzdWFsRG9jRW51bXNHZW9TZWFyY2hWaXNpYmlsaXR5O1xuKGZ1bmN0aW9uIChWaXN1YWxEb2NFbnVtc0dlb1NlYXJjaFZpc2liaWxpdHkpIHtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc0dlb1NlYXJjaFZpc2liaWxpdHlbXCJHU1ZfT25cIl0gPSBcIm9uXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNHZW9TZWFyY2hWaXNpYmlsaXR5W1wiR1NWX09mZlwiXSA9IFwib2ZmXCI7XG59KShWaXN1YWxEb2NFbnVtc0dlb1NlYXJjaFZpc2liaWxpdHkgPSBleHBvcnRzLlZpc3VhbERvY0VudW1zR2VvU2VhcmNoVmlzaWJpbGl0eSB8fCAoZXhwb3J0cy5WaXN1YWxEb2NFbnVtc0dlb1NlYXJjaFZpc2liaWxpdHkgPSB7fSkpO1xuLy8gXG52YXIgVmlzdWFsRG9jRW51bXNNYXBTY2FsZVZpc2liaWxpdHk7XG4oZnVuY3Rpb24gKFZpc3VhbERvY0VudW1zTWFwU2NhbGVWaXNpYmlsaXR5KSB7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBTY2FsZVZpc2liaWxpdHlbXCJNU1ZfT25cIl0gPSBcIm9uXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBTY2FsZVZpc2liaWxpdHlbXCJNU1ZfT2ZmXCJdID0gXCJvZmZcIjtcbn0pKFZpc3VhbERvY0VudW1zTWFwU2NhbGVWaXNpYmlsaXR5ID0gZXhwb3J0cy5WaXN1YWxEb2NFbnVtc01hcFNjYWxlVmlzaWJpbGl0eSB8fCAoZXhwb3J0cy5WaXN1YWxEb2NFbnVtc01hcFNjYWxlVmlzaWJpbGl0eSA9IHt9KSk7XG4vLyBcbnZhciBWaXN1YWxEb2NFbnVtc0F1dG9EcmlsbFZpc2liaWxpdHk7XG4oZnVuY3Rpb24gKFZpc3VhbERvY0VudW1zQXV0b0RyaWxsVmlzaWJpbGl0eSkge1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zQXV0b0RyaWxsVmlzaWJpbGl0eVtcIkFEVl9PblwiXSA9IFwib25cIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc0F1dG9EcmlsbFZpc2liaWxpdHlbXCJBRFZfT2ZmXCJdID0gXCJvZmZcIjtcbn0pKFZpc3VhbERvY0VudW1zQXV0b0RyaWxsVmlzaWJpbGl0eSA9IGV4cG9ydHMuVmlzdWFsRG9jRW51bXNBdXRvRHJpbGxWaXNpYmlsaXR5IHx8IChleHBvcnRzLlZpc3VhbERvY0VudW1zQXV0b0RyaWxsVmlzaWJpbGl0eSA9IHt9KSk7XG4vLyBcbnZhciBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb247XG4oZnVuY3Rpb24gKFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbikge1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbltcIk1UX1Bhbl9NYXBcIl0gPSBcInBhbi1tYXBcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb25bXCJNVF9SZWN0YW5ndWxhcl9TZWxlY3Rpb25cIl0gPSBcInJlY3Rhbmd1bGFyLXNlbGVjdGlvblwiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbltcIk1UX1JhZGlhbF9TZWxlY3Rpb25cIl0gPSBcInJhZGlhbC1zZWxlY3Rpb25cIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb25bXCJNVF9ab29tX0luXCJdID0gXCJ6b29tLWluXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uW1wiTVRfWm9vbV9PdXRcIl0gPSBcInpvb20tb3V0XCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uW1wiTVRfU2luZ2xlX1NlbGVjdGlvblwiXSA9IFwic2luZ2xlLXNlbGVjdGlvblwiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbltcIk1UX0xhc3NvX1NlbGVjdGlvblwiXSA9IFwibGFzc28tc2VsZWN0aW9uXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uW1wiTVRfQWxsX1NlbGVjdGlvbl9Ub29sc1wiXSA9IFwiYWxsLXNlbGVjdGlvbi10b29sc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbltcIk1UX0FyZWFfWm9vbVwiXSA9IFwiYXJlYS16b29tXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uW1wiTVRfTm9fVG9vbHNcIl0gPSBcIm5vLXRvb2xzXCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uW1wiTVRfQWR2YW5jZWRfU2VsZWN0aW9uX1Rvb2xzXCJdID0gXCJhZHZhbmNlZC1zZWxlY3Rpb24tdG9vbHNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb25bXCJNVF9NYXBfVG9vbHNcIl0gPSBcIm1hcC10b29sc1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zTWFwVG9vbFNlbGVjdGlvbltcIk1UX05vbl9NYXBfVG9vbHNcIl0gPSBcIm5vbi1tYXAtdG9vbHNcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb25bXCJNVF9Ub29sX01hc2tcIl0gPSBcInRvb2wtbWFza1wiO1xufSkoVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uID0gZXhwb3J0cy5WaXN1YWxEb2NFbnVtc01hcFRvb2xTZWxlY3Rpb24gfHwgKGV4cG9ydHMuVmlzdWFsRG9jRW51bXNNYXBUb29sU2VsZWN0aW9uID0ge30pKTtcbi8vIFxudmFyIFZpc3VhbERvY0VudW1zRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eTtcbihmdW5jdGlvbiAoVmlzdWFsRG9jRW51bXNGbG9hdGluZ1Rvb2xiYXJWaXNpYmlsaXR5KSB7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNGbG9hdGluZ1Rvb2xiYXJWaXNpYmlsaXR5W1wiRlRWX0F1dG9cIl0gPSBcImF1dG9cIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc0Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHlbXCJGVFZfU2hvd1wiXSA9IFwic2hvd1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eVtcIkZUVl9IaWRlXCJdID0gXCJoaWRlXCI7XG59KShWaXN1YWxEb2NFbnVtc0Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHkgPSBleHBvcnRzLlZpc3VhbERvY0VudW1zRmxvYXRpbmdUb29sYmFyVmlzaWJpbGl0eSB8fCAoZXhwb3J0cy5WaXN1YWxEb2NFbnVtc0Zsb2F0aW5nVG9vbGJhclZpc2liaWxpdHkgPSB7fSkpO1xuLy8gXG52YXIgVmlzdWFsRG9jRW51bXNWaXpOYXZpZ2F0aW9uU2V0dGluZztcbihmdW5jdGlvbiAoVmlzdWFsRG9jRW51bXNWaXpOYXZpZ2F0aW9uU2V0dGluZykge1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zVml6TmF2aWdhdGlvblNldHRpbmdbXCJOQVZfQXV0b1wiXSA9IFwiYXV0b1wiO1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zVml6TmF2aWdhdGlvblNldHRpbmdbXCJOQVZfRml4ZWRcIl0gPSBcImZpeGVkXCI7XG59KShWaXN1YWxEb2NFbnVtc1Zpek5hdmlnYXRpb25TZXR0aW5nID0gZXhwb3J0cy5WaXN1YWxEb2NFbnVtc1Zpek5hdmlnYXRpb25TZXR0aW5nIHx8IChleHBvcnRzLlZpc3VhbERvY0VudW1zVml6TmF2aWdhdGlvblNldHRpbmcgPSB7fSkpO1xuLy8gXG52YXIgVmlzdWFsRG9jRW51bXNab29tVHlwZTtcbihmdW5jdGlvbiAoVmlzdWFsRG9jRW51bXNab29tVHlwZSkge1xuICAgIC8vIFxuICAgIFZpc3VhbERvY0VudW1zWm9vbVR5cGVbXCJQZXJjZW50XCJdID0gXCJwZXJjZW50XCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNab29tVHlwZVtcIkVudGlyZVZpZXdcIl0gPSBcImVudGlyZS12aWV3XCI7XG4gICAgLy8gXG4gICAgVmlzdWFsRG9jRW51bXNab29tVHlwZVtcIkZpdFdpZHRoXCJdID0gXCJmaXQtd2lkdGhcIjtcbiAgICAvLyBcbiAgICBWaXN1YWxEb2NFbnVtc1pvb21UeXBlW1wiRml0SGVpZ2h0XCJdID0gXCJmaXQtaGVpZ2h0XCI7XG59KShWaXN1YWxEb2NFbnVtc1pvb21UeXBlID0gZXhwb3J0cy5WaXN1YWxEb2NFbnVtc1pvb21UeXBlIHx8IChleHBvcnRzLlZpc3VhbERvY0VudW1zWm9vbVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgU2hlZXRTY3JvbGxEaXJlY3Rpb247XG4oZnVuY3Rpb24gKFNoZWV0U2Nyb2xsRGlyZWN0aW9uKSB7XG4gICAgLy8gc2Nyb2xsLWZpcnN0XG4gICAgU2hlZXRTY3JvbGxEaXJlY3Rpb25bXCJTaGVldFNjcm9sbEZpcnN0XCJdID0gXCJzY3JvbGwtZmlyc3RcIjtcbiAgICAvLyBzY3JvbGwtcHJldlxuICAgIFNoZWV0U2Nyb2xsRGlyZWN0aW9uW1wiU2hlZXRTY3JvbGxQcmV2XCJdID0gXCJzY3JvbGwtcHJldlwiO1xuICAgIC8vIHNjcm9sbC1uZXh0XG4gICAgU2hlZXRTY3JvbGxEaXJlY3Rpb25bXCJTaGVldFNjcm9sbE5leHRcIl0gPSBcInNjcm9sbC1uZXh0XCI7XG4gICAgLy8gc2Nyb2xsLWxhc3RcbiAgICBTaGVldFNjcm9sbERpcmVjdGlvbltcIlNoZWV0U2Nyb2xsTGFzdFwiXSA9IFwic2Nyb2xsLWxhc3RcIjtcbn0pKFNoZWV0U2Nyb2xsRGlyZWN0aW9uID0gZXhwb3J0cy5TaGVldFNjcm9sbERpcmVjdGlvbiB8fCAoZXhwb3J0cy5TaGVldFNjcm9sbERpcmVjdGlvbiA9IHt9KSk7XG4vLyBhZ2dyZWdhdGlvbiB0eXBlIGZvciBwZXJzcGVjdGl2ZXNcbnZhciBQZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZTtcbihmdW5jdGlvbiAoUGVyc3BlY3RpdmVVdGlsc0FnZ3JlZ2F0ZVR5cGUpIHtcbiAgICAvLyBcbiAgICBQZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZVtcIlJFQUxJVFlcIl0gPSBcInJlYWxpdHlcIjtcbiAgICAvLyBcbiAgICBQZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZVtcIkZJUlNUXCJdID0gXCJmaXJzdC10aW1lLWluLWN1YmVcIjtcbiAgICAvLyBcbiAgICBQZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZVtcIkxBU1RcIl0gPSBcImxhdGVzdC10aW1lLWluLWN1YmVcIjtcbiAgICAvLyBcbiAgICBQZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZVtcIkNVU1RPTV9GT1JfQ1VCRVwiXSA9IFwiY3VzdG9tLWZvci1jdWJlXCI7XG4gICAgLy8gXG4gICAgUGVyc3BlY3RpdmVVdGlsc0FnZ3JlZ2F0ZVR5cGVbXCJDVVNUT01fUEVSX0FUVFJJQlVURVwiXSA9IFwiY3VzdG9tLXBlci1hdHRyaWJ1dGVcIjtcbn0pKFBlcnNwZWN0aXZlVXRpbHNBZ2dyZWdhdGVUeXBlID0gZXhwb3J0cy5QZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZSB8fCAoZXhwb3J0cy5QZXJzcGVjdGl2ZVV0aWxzQWdncmVnYXRlVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBab25lRWRnZU1vdmU7XG4oZnVuY3Rpb24gKFpvbmVFZGdlTW92ZSkge1xuICAgIC8vIFxuICAgIFpvbmVFZGdlTW92ZVtcIkVkZ2VEcmFnXCJdID0gXCJlZGdlLWRyYWdcIjtcbiAgICAvLyBcbiAgICBab25lRWRnZU1vdmVbXCJFZGdlU25hcEFsaWduXCJdID0gXCJlZGdlLXNuYXAtYWxpZ25cIjtcbiAgICAvLyBcbiAgICBab25lRWRnZU1vdmVbXCJFZGdlU25hcFBvc2l0aW9uXCJdID0gXCJlZGdlLXNuYXAtcG9zaXRpb25cIjtcbn0pKFpvbmVFZGdlTW92ZSA9IGV4cG9ydHMuWm9uZUVkZ2VNb3ZlIHx8IChleHBvcnRzLlpvbmVFZGdlTW92ZSA9IHt9KSk7XG4vLyBcbnZhciBGb3JtYXRDb250cm9sVHlwZTtcbihmdW5jdGlvbiAoRm9ybWF0Q29udHJvbFR5cGUpIHtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9OT05FXCJdID0gXCJmY3Qtbm9uZVwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0NvbG9yXCJdID0gXCJmY3QtY29sb3JcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9Gb250XCJdID0gXCJmY3QtZm9udFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0JvcmRlclwiXSA9IFwiZmN0LWJvcmRlclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX1N0cm9rZVwiXSA9IFwiZmN0LXN0cm9rZVwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX051bWJlclwiXSA9IFwiZmN0LW51bWJlclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0xheW91dFwiXSA9IFwiZmN0LWxheW91dFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX1RleHRcIl0gPSBcImZjdC10ZXh0XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfT3B0Q29sb3JcIl0gPSBcImZjdC1vcHRjb2xvclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0JhbmRDb2xvclwiXSA9IFwiZmN0LWJhbmRjb2xvclwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0JhbmRTaXplXCJdID0gXCJmY3QtYmFuZHNpemVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9CYW5kTGV2ZWxcIl0gPSBcImZjdC1iYW5kbGV2ZWxcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9EaXZMZXZlbFwiXSA9IFwiZmN0LWRpdmxldmVsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfU3BlY1ZhbHNUZXh0XCJdID0gXCJmY3Qtc3BlY3ZhbHN0ZXh0XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfU3BlY1ZhbHNHcmFwaFwiXSA9IFwiZmN0LXNwZWN2YWxzZ3JhcGhcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9IQWxpZ25cIl0gPSBcImZjdC1oYWxpZ25cIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9PcmllbnRcIl0gPSBcImZjdC1vcmllbnRcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9Sb3VuZGluZ1wiXSA9IFwiZmN0LXJvdW5kaW5nXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfTGluZUVuZFwiXSA9IFwiZmN0LWxpbmVlbmRcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9MaW5lRW5kU2l6ZVwiXSA9IFwiZmN0LWxpbmVlbmRzaXplXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfQm9keVR5cGVcIl0gPSBcImZjdC1ib2R5dHlwZVwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX0FscGhhTGV2ZWxcIl0gPSBcImZjdC1hbHBoYWxldmVsXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfTGluZUludGVycG9sYXRpb25cIl0gPSBcImZjdC1saW5lLWludGVycG9sYXRpb25cIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9MaW5lTWFya2VyUG9zaXRpb25cIl0gPSBcImZjdC1saW5lLW1hcmtlci1wb3NpdGlvblwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX01hcmtCb3JkZXJcIl0gPSBcImZjdC1tYXJrYm9yZGVyXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfTWFya0hhbG9cIl0gPSBcImZjdC1tYXJraGFsb1wiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX01hcmtNYXJrZXJzXCJdID0gXCJmY3QtbWFya21hcmtlcnNcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9SZWZMaW5lUGFsZXR0ZVwiXSA9IFwiZmN0LXJlZmxpbmVwYWxldHRlXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfUmV2ZXJzZVwiXSA9IFwiZmN0LXJldmVyc2VcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9XaGlza2Vyc1wiXSA9IFwiZmN0LXdoaXNrZXJzXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbFR5cGVbXCJGQ1RfQm94cGxvdFBhbGV0dGVcIl0gPSBcImZjdC1ib3hwbG90cGFsZXR0ZVwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xUeXBlW1wiRkNUX1NvbGlkU3Ryb2tlXCJdID0gXCJmY3Qtc29saWRzdHJva2VcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9Cb3hwbG90U3R5bGVcIl0gPSBcImZjdC1ib3hwbG90c3R5bGVcIjtcbiAgICAvLyBcbiAgICBGb3JtYXRDb250cm9sVHlwZVtcIkZDVF9Cb3hwbG90Q29tcG91bmRGaWxsXCJdID0gXCJmY3QtYm94cGxvdGNvbXBvdW5kZmlsbFwiO1xufSkoRm9ybWF0Q29udHJvbFR5cGUgPSBleHBvcnRzLkZvcm1hdENvbnRyb2xUeXBlIHx8IChleHBvcnRzLkZvcm1hdENvbnRyb2xUeXBlID0ge30pKTtcbi8vIFxudmFyIEZvcm1hdENvbnRyb2xGbGFnO1xuKGZ1bmN0aW9uIChGb3JtYXRDb250cm9sRmxhZykge1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xGbGFnW1wiRkNGX1Zpc3VhbFN0eWxlc2hlZXRcIl0gPSBcImZjZl92aXN1YWxzdHlsZXNoZWV0XCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbEZsYWdbXCJGQ0ZfUGFuZVN0eWxlc2hlZXRcIl0gPSBcImZjZl9wYW5lc3R5bGVzaGVldFwiO1xuICAgIC8vIFxuICAgIEZvcm1hdENvbnRyb2xGbGFnW1wiRkNGX0ZpeGVkU2NvcGVcIl0gPSBcImZjZl9maXhlZHNjb3BlXCI7XG4gICAgLy8gXG4gICAgRm9ybWF0Q29udHJvbEZsYWdbXCJGQ0ZfQWxsb3dUcmFuc3BhcmVuY3lcIl0gPSBcImZjZl9hbGxvd3RyYW5zcGFyZW5jeVwiO1xufSkoRm9ybWF0Q29udHJvbEZsYWcgPSBleHBvcnRzLkZvcm1hdENvbnRyb2xGbGFnIHx8IChleHBvcnRzLkZvcm1hdENvbnRyb2xGbGFnID0ge30pKTtcbi8vIFxudmFyIEFwcENvbmZpZ0VudW07XG4oZnVuY3Rpb24gKEFwcENvbmZpZ0VudW0pIHtcbiAgICAvLyBkZWZhdWx0IGRpcmVjdG9yeSB3aGVyZSBUYWJsZWF1IGZpbmRzIGRhdGEgc291cmNlcywgbG9ncywgc2hhcGVzLCBldGMuXG4gICAgQXBwQ29uZmlnRW51bVtcIkFDU19SZXBvc2l0b3J5RGlyXCJdID0gXCJyZXBvc2l0b3J5LWRpclwiO1xuICAgIC8vIGFwcGxpY2F0aW9uIGRpcmVjdG9yeVxuICAgIEFwcENvbmZpZ0VudW1bXCJBQ1NfQXBwbGljYXRpb25EaXJcIl0gPSBcImFwcGxpY2F0aW9uLWRpclwiO1xuICAgIC8vIHNhbXBsZSB3b3JrYm9va3MgZGlyZWN0b3J5XG4gICAgQXBwQ29uZmlnRW51bVtcIkFDU19TYW1wbGVzRGlyXCJdID0gXCJzYW1wbGVzLWRpclwiO1xufSkoQXBwQ29uZmlnRW51bSA9IGV4cG9ydHMuQXBwQ29uZmlnRW51bSB8fCAoZXhwb3J0cy5BcHBDb25maWdFbnVtID0ge30pKTtcbi8vIFxudmFyIERlbHRhVHlwZTtcbihmdW5jdGlvbiAoRGVsdGFUeXBlKSB7XG4gICAgLy8gXG4gICAgRGVsdGFUeXBlW1wiREVMVEFfTk9ORVwiXSA9IFwibm9uZVwiO1xuICAgIC8vIFxuICAgIERlbHRhVHlwZVtcIkRFTFRBX0FEREVEXCJdID0gXCJhZGRlZFwiO1xuICAgIC8vIFxuICAgIERlbHRhVHlwZVtcIkRFTFRBX0VESVRFRFwiXSA9IFwiZWRpdGVkXCI7XG4gICAgLy8gXG4gICAgRGVsdGFUeXBlW1wiREVMVEFfUkVNT1ZFRFwiXSA9IFwicmVtb3ZlZFwiO1xufSkoRGVsdGFUeXBlID0gZXhwb3J0cy5EZWx0YVR5cGUgfHwgKGV4cG9ydHMuRGVsdGFUeXBlID0ge30pKTtcbi8vIFxudmFyIEV4dHJhY3RUeXBlO1xuKGZ1bmN0aW9uIChFeHRyYWN0VHlwZSkge1xuICAgIC8vIFxuICAgIEV4dHJhY3RUeXBlW1wiRXh0cmFjdFR5cGVfQWxsXCJdID0gXCJleHRyYWN0LXR5cGUtYWxsXCI7XG4gICAgLy8gXG4gICAgRXh0cmFjdFR5cGVbXCJFeHRyYWN0VHlwZV9Tb21lXCJdID0gXCJleHRyYWN0LXR5cGUtc29tZVwiO1xuICAgIC8vIFxuICAgIEV4dHJhY3RUeXBlW1wiRXh0cmFjdFR5cGVfTm9uZVwiXSA9IFwiZXh0cmFjdC10eXBlLW5vbmVcIjtcbn0pKEV4dHJhY3RUeXBlID0gZXhwb3J0cy5FeHRyYWN0VHlwZSB8fCAoZXhwb3J0cy5FeHRyYWN0VHlwZSA9IHt9KSk7XG4vLyBcbnZhciBFeHRyYWN0UmVmcmVzaFN0YXR1cztcbihmdW5jdGlvbiAoRXh0cmFjdFJlZnJlc2hTdGF0dXMpIHtcbiAgICAvLyBcbiAgICBFeHRyYWN0UmVmcmVzaFN0YXR1c1tcIkV4dHJhY3RSZWZyZXNoX05vbmVcIl0gPSBcImV4dHJhY3QtcmVmcmVzaC1ub25lXCI7XG4gICAgLy8gXG4gICAgRXh0cmFjdFJlZnJlc2hTdGF0dXNbXCJFeHRyYWN0UmVmcmVzaF9QZW5kaW5nXCJdID0gXCJleHRyYWN0LXJlZnJlc2gtcGVuZGluZ1wiO1xuICAgIC8vIFxuICAgIEV4dHJhY3RSZWZyZXNoU3RhdHVzW1wiRXh0cmFjdFJlZnJlc2hfSW5Qcm9ncmVzc1wiXSA9IFwiZXh0cmFjdC1yZWZyZXNoLWlucHJvZ3Jlc3NcIjtcbiAgICAvLyBcbiAgICBFeHRyYWN0UmVmcmVzaFN0YXR1c1tcIkV4dHJhY3RSZWZyZXNoX0RvbmVcIl0gPSBcImV4dHJhY3QtcmVmcmVzaC1kb25lXCI7XG4gICAgLy8gXG4gICAgRXh0cmFjdFJlZnJlc2hTdGF0dXNbXCJFeHRyYWN0UmVmcmVzaF9FcnJvclwiXSA9IFwiZXh0cmFjdC1yZWZyZXNoLWVycm9yXCI7XG4gICAgLy8gXG4gICAgRXh0cmFjdFJlZnJlc2hTdGF0dXNbXCJFeHRyYWN0UmVmcmVzaF9DYW5jZWxlZFwiXSA9IFwiZXh0cmFjdC1yZWZyZXNoLWNhbmNlbGVkXCI7XG59KShFeHRyYWN0UmVmcmVzaFN0YXR1cyA9IGV4cG9ydHMuRXh0cmFjdFJlZnJlc2hTdGF0dXMgfHwgKGV4cG9ydHMuRXh0cmFjdFJlZnJlc2hTdGF0dXMgPSB7fSkpO1xuLy8gXG52YXIgTWFwVW5pdFNlbGVjdGlvbkVudW07XG4oZnVuY3Rpb24gKE1hcFVuaXRTZWxlY3Rpb25FbnVtKSB7XG4gICAgLy8gXG4gICAgTWFwVW5pdFNlbGVjdGlvbkVudW1bXCJNVVNfQXV0b21hdGljXCJdID0gXCJhdXRvbWF0aWNcIjtcbiAgICAvLyBcbiAgICBNYXBVbml0U2VsZWN0aW9uRW51bVtcIk1VU19NZXRyaWNcIl0gPSBcIm1ldHJpY1wiO1xuICAgIC8vIFxuICAgIE1hcFVuaXRTZWxlY3Rpb25FbnVtW1wiTVVTX1VTXCJdID0gXCJ1c1wiO1xufSkoTWFwVW5pdFNlbGVjdGlvbkVudW0gPSBleHBvcnRzLk1hcFVuaXRTZWxlY3Rpb25FbnVtIHx8IChleHBvcnRzLk1hcFVuaXRTZWxlY3Rpb25FbnVtID0ge30pKTtcbi8vIFxudmFyIERhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlO1xuKGZ1bmN0aW9uIChEYXRhQ29ubmVjdGlvbkhpc3RvcnlSZWZyZXNoVHlwZSkge1xuICAgIC8vIFxuICAgIERhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlW1wiUlRfRlVMTFwiXSA9IFwiZnVsbFwiO1xuICAgIC8vIFxuICAgIERhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlW1wiUlRfSU5DUkVNRU5UXCJdID0gXCJpbmNyZW1lbnRcIjtcbiAgICAvLyBcbiAgICBEYXRhQ29ubmVjdGlvbkhpc3RvcnlSZWZyZXNoVHlwZVtcIlJUX0FQUEVORF9GUk9NX0RBVEFfU09VUkNFXCJdID0gXCJhcHBlbmQtZnJvbS1kYXRhLXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIERhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlW1wiUlRfQVBQRU5EX0ZST01fRklMRVwiXSA9IFwiYXBwZW5kLWZyb20tZmlsZVwiO1xufSkoRGF0YUNvbm5lY3Rpb25IaXN0b3J5UmVmcmVzaFR5cGUgPSBleHBvcnRzLkRhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlIHx8IChleHBvcnRzLkRhdGFDb25uZWN0aW9uSGlzdG9yeVJlZnJlc2hUeXBlID0ge30pKTtcbi8vIFxudmFyIENhbGNTdHlsZTtcbihmdW5jdGlvbiAoQ2FsY1N0eWxlKSB7XG4gICAgLy8gXG4gICAgQ2FsY1N0eWxlW1wiU0NFX1NUWUxFX0RFRkFVTFRcIl0gPSBcInN0eWxlX2RlZmF1bHRcIjtcbiAgICAvLyBcbiAgICBDYWxjU3R5bGVbXCJTQ0VfU1RZTEVfUFJJTUFSWV9GSUVMRFwiXSA9IFwic3R5bGVfcHJpbV9maWVsZFwiO1xuICAgIC8vIFxuICAgIENhbGNTdHlsZVtcIlNDRV9TVFlMRV9TRUNPTkRBUllfRklFTERcIl0gPSBcInN0eWxlX3NlY19maWVsZFwiO1xuICAgIC8vIFxuICAgIENhbGNTdHlsZVtcIlNDRV9TVFlMRV9MT0NBTF9GVU5DVElPTlwiXSA9IFwic3R5bGVfbG9jYWxfZnVuY1wiO1xuICAgIC8vIFxuICAgIENhbGNTdHlsZVtcIlNDRV9TVFlMRV9SRU1PVEVfRlVOQ1RJT05cIl0gPSBcInN0eWxlX3JlbW90ZV9mdW5jXCI7XG4gICAgLy8gXG4gICAgQ2FsY1N0eWxlW1wiU0NFX1NUWUxFX1BBUkFNRVRFUlwiXSA9IFwic3R5bGVfcGFyYW1cIjtcbiAgICAvLyBcbiAgICBDYWxjU3R5bGVbXCJTQ0VfU1RZTEVfQ09NTUVOVFwiXSA9IFwic3R5bGVfY29tbWVudFwiO1xuICAgIC8vIFxuICAgIENhbGNTdHlsZVtcIlNDRV9TVFlMRV9JTlZBTElEX0ZJRUxEXCJdID0gXCJzdHlsZV9pbnZhbGlkX2ZpZWxkXCI7XG4gICAgLy8gXG4gICAgQ2FsY1N0eWxlW1wiU0NFX1NUWUxFX1RBQkxFX0VYUFJcIl0gPSBcInN0eWxlX3RhYmxlX2V4cHJcIjtcbiAgICAvLyBcbiAgICBDYWxjU3R5bGVbXCJTQ0VfU1RZTEVfU1RSSU5HXCJdID0gXCJzdHlsZV9zdHJpbmdcIjtcbiAgICAvLyBcbiAgICBDYWxjU3R5bGVbXCJTQ0VfU1RZTEVfRElTQUJMRURcIl0gPSBcInN0eWxlX2Rpc2FibGVkXCI7XG4gICAgLy8gXG4gICAgQ2FsY1N0eWxlW1wiU0NFX1NUWUxFX0RSQUdfT1ZFUl9GSUVMRFwiXSA9IFwic3R5bGVfZHJhZ19vdmVyX2ZpZWxkXCI7XG4gICAgLy8gXG4gICAgQ2FsY1N0eWxlW1wiU0NFX1NUWUxFX0RSQUdfT1ZFUl9TRUxcIl0gPSBcInN0eWxlX2RyYWdfb3Zlcl9zZWxcIjtcbiAgICAvLyBcbiAgICBDYWxjU3R5bGVbXCJTQ0VfU1RZTEVfU0VMRUNUSU9OXCJdID0gXCJzdHlsZV9zZWxlY3Rpb25cIjtcbn0pKENhbGNTdHlsZSA9IGV4cG9ydHMuQ2FsY1N0eWxlIHx8IChleHBvcnRzLkNhbGNTdHlsZSA9IHt9KSk7XG4vLyBcbnZhciBGdW5jdGlvbkdyb3VwO1xuKGZ1bmN0aW9uIChGdW5jdGlvbkdyb3VwKSB7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25Hcm91cFtcIkZHX05VTUVSSUNcIl0gPSBcIm51bVwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uR3JvdXBbXCJGR19TVFJJTkdcIl0gPSBcInN0clwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uR3JvdXBbXCJGR19EQVRFXCJdID0gXCJkYXRlXCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25Hcm91cFtcIkZHX0NBU1RcIl0gPSBcImNhc3RcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfTE9HSUNBTFwiXSA9IFwibG9naWNcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfQUdHUkVHQVRFXCJdID0gXCJhZ2dcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfT1BFUkFUT1JcIl0gPSBcIm9wZXJcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfU1lTVEVNXCJdID0gXCJzeXNcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfUEFTU1RIUlVcIl0gPSBcInBhc3NcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkdyb3VwW1wiRkdfU1BFQ0lBTFwiXSA9IFwic3BlY1wiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uR3JvdXBbXCJGR19VU0VSXCJdID0gXCJ1c2VyXCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25Hcm91cFtcIkZHX1RBQkxFQ0FMQ1wiXSA9IFwidGFibGVcIjtcbn0pKEZ1bmN0aW9uR3JvdXAgPSBleHBvcnRzLkZ1bmN0aW9uR3JvdXAgfHwgKGV4cG9ydHMuRnVuY3Rpb25Hcm91cCA9IHt9KSk7XG4vLyBcbnZhciBGdW5jdGlvbkFyZ1R5cGU7XG4oZnVuY3Rpb24gKEZ1bmN0aW9uQXJnVHlwZSkge1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9OT05FXCJdID0gXCJub25lXCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25BcmdUeXBlW1wiRkFUX0JPT0xcIl0gPSBcImJvb2xlYW5cIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkFyZ1R5cGVbXCJGQVRfUkVBTFwiXSA9IFwicmVhbFwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9JTlRcIl0gPSBcImludGVnZXJcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkFyZ1R5cGVbXCJGQVRfU1RSXCJdID0gXCJzdHJcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkFyZ1R5cGVbXCJGQVRfREFURVRJTUVcIl0gPSBcImRhdGV0aW1lXCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25BcmdUeXBlW1wiRkFUX0RBVEVcIl0gPSBcImRhdGVcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkFyZ1R5cGVbXCJGQVRfTE9DQUxTVFJcIl0gPSBcImxvY3N0clwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9OVUxMXCJdID0gXCJuaWxcIjtcbiAgICAvLyBcbiAgICBGdW5jdGlvbkFyZ1R5cGVbXCJGQVRfRVJST1JcIl0gPSBcImVyclwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9BTllcIl0gPSBcImFueVwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9CSU5cIl0gPSBcImJpblwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9UVVBMRVwiXSA9IFwidHVwXCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25BcmdUeXBlW1wiRkFUX0xPQ0FMUkVBTFwiXSA9IFwibG9jcmVhbFwiO1xuICAgIC8vIFxuICAgIEZ1bmN0aW9uQXJnVHlwZVtcIkZBVF9MT0NBTElOVFwiXSA9IFwibG9jaW50XCI7XG4gICAgLy8gXG4gICAgRnVuY3Rpb25BcmdUeXBlW1wiRkFUX1NQQVRJQUxcIl0gPSBcInNwYXRpYWxcIjtcbn0pKEZ1bmN0aW9uQXJnVHlwZSA9IGV4cG9ydHMuRnVuY3Rpb25BcmdUeXBlIHx8IChleHBvcnRzLkZ1bmN0aW9uQXJnVHlwZSA9IHt9KSk7XG4vLyBsb2dpY2FsIHBvc2l0aW9uIG9mIGFjdGl2aXR5IHN1Y2ggYXMgQmVnYW4gb3IgRW5kZWRcbnZhciBBY3Rpdml0eURpc3Bvc2l0aW9uO1xuKGZ1bmN0aW9uIChBY3Rpdml0eURpc3Bvc2l0aW9uKSB7XG4gICAgLy8gbm8gYWN0aXZpdHlcbiAgICBBY3Rpdml0eURpc3Bvc2l0aW9uW1wiTm9EaXNwb3NpdGlvblwiXSA9IFwibm8tZGlzcG9zaXRpb25cIjtcbiAgICAvLyBhY3Rpdml0eSBoYXMgYmVnYW5cbiAgICBBY3Rpdml0eURpc3Bvc2l0aW9uW1wiQmVnYW5cIl0gPSBcImJlZ2FuXCI7XG4gICAgLy8gYWN0aXZpdHkgaGFzIGVuZGVkXG4gICAgQWN0aXZpdHlEaXNwb3NpdGlvbltcIkVuZGVkXCJdID0gXCJlbmRlZFwiO1xuICAgIC8vIGFjdGl2aXR5IGhhcyBvY2N1cnJlZCBidXQgbmVpdGhlciBiZWdhbiBub3IgZW5kZWQgaXMga25vd25cbiAgICBBY3Rpdml0eURpc3Bvc2l0aW9uW1wiT2NjdXJyZWRcIl0gPSBcIm9jY3VycmVkXCI7XG4gICAgLy8gaW5kZWZpbml0ZSBhY3Rpdml0eSBpcyBleGVjdXRpbmdcbiAgICBBY3Rpdml0eURpc3Bvc2l0aW9uW1wiQWN0aXZlXCJdID0gXCJhY3RpdmVcIjtcbiAgICAvLyBpbmRlZmluaXRlIGFjdGl2aXR5IGhhcyB5aWVsZGVkIChlLmcuLCBpZGxlLCB3YWl0aW5nLCBzbGVlcGluZywgcXVpZXNjZSlcbiAgICBBY3Rpdml0eURpc3Bvc2l0aW9uW1wiSWRsZVwiXSA9IFwiaWRsZVwiO1xufSkoQWN0aXZpdHlEaXNwb3NpdGlvbiA9IGV4cG9ydHMuQWN0aXZpdHlEaXNwb3NpdGlvbiB8fCAoZXhwb3J0cy5BY3Rpdml0eURpc3Bvc2l0aW9uID0ge30pKTtcbi8vIHJlc3VsdCBvZiBhY3Rpdml0eSBzdWNoIGFzIFN1Y2Nlc3MgYW5kIEZhaWx1cmVcbnZhciBBY3Rpdml0eVJlc3VsdDtcbihmdW5jdGlvbiAoQWN0aXZpdHlSZXN1bHQpIHtcbiAgICAvLyBhY3Rpdml0eSBoYXMgbm8gcmVzdWx0XG4gICAgQWN0aXZpdHlSZXN1bHRbXCJOb1Jlc3VsdFwiXSA9IFwibm8tcmVzdWx0XCI7XG4gICAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCBzdWNjZXNzXG4gICAgQWN0aXZpdHlSZXN1bHRbXCJTdWNjZWVkZWRcIl0gPSBcInN1Y2NlZWRlZFwiO1xuICAgIC8vIGFjdGl2aXR5IGVuZGVkIHdpdGggZmFpbHVyZVxuICAgIEFjdGl2aXR5UmVzdWx0W1wiRmFpbGVkXCJdID0gXCJmYWlsdXJlXCI7XG4gICAgLy8gYWN0aXZpdHkgZW5kZWQgd2l0aCB0aHJvd24gZXhjZXB0aW9uXG4gICAgQWN0aXZpdHlSZXN1bHRbXCJUaHJld0V4Y2VwdGlvblwiXSA9IFwidGhyZXctZXhjZXB0aW9uXCI7XG4gICAgLy8gYWN0aXZpdHkgZW5kZWQgZHVlIHRvIGEgdGltZW91dFxuICAgIEFjdGl2aXR5UmVzdWx0W1wiVGltZWRPdXRcIl0gPSBcInRpbWVkLW91dFwiO1xuICAgIC8vIGFjdGl2aXR5IHdhcyBjYW5jZWxlZFxuICAgIEFjdGl2aXR5UmVzdWx0W1wiQ2FuY2VsZWRcIl0gPSBcImNhbmNlbGVkXCI7XG4gICAgLy8gYWN0aXZpdHkgaGFzIHVua25vd24gcmVzdWx0XG4gICAgQWN0aXZpdHlSZXN1bHRbXCJVbmtub3duUmVzdWx0XCJdID0gXCJ1bmtub3duLXJlc3VsdFwiO1xufSkoQWN0aXZpdHlSZXN1bHQgPSBleHBvcnRzLkFjdGl2aXR5UmVzdWx0IHx8IChleHBvcnRzLkFjdGl2aXR5UmVzdWx0ID0ge30pKTtcbi8vIHR5cGUgb2YgYW5hbHl0aWNzIG9iamVjdFxudmFyIEFuYWx5dGljc09iamVjdFR5cGU7XG4oZnVuY3Rpb24gKEFuYWx5dGljc09iamVjdFR5cGUpIHtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3RUeXBlW1wiQ29uc3RhbnRSZWZlcmVuY2VMaW5lXCJdID0gXCJjb25zdGFudC1yZWZlcmVuY2UtbGluZVwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJBdmVyYWdlUmVmZXJlbmNlTGluZVwiXSA9IFwiYXZlcmFnZS1yZWZlcmVuY2UtbGluZVwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJDdXN0b21SZWZlcmVuY2VMaW5lXCJdID0gXCJjdXN0b20tcmVmZXJlbmNlLWxpbmVcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3RUeXBlW1wiQ3VzdG9tUmVmZXJlbmNlQmFuZFwiXSA9IFwiY3VzdG9tLXJlZmVyZW5jZS1iYW5kXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIkF2ZXJhZ2VBbmROaW5ldHlGaXZlXCJdID0gXCJhdmVyYWdlLWFuZC1uaW5ldHktZml2ZVwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJNZWRpYW5BbmROaW5ldHlGaXZlXCJdID0gXCJtZWRpYW4tYW5kLW5pbmV0eS1maXZlXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIkN1c3RvbURpc3RyaWJ1dGlvbkJhbmRcIl0gPSBcImN1c3RvbS1kaXN0cmlidXRpb24tYmFuZFwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJCb3hwbG90XCJdID0gXCJib3hwbG90XCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIkN1c3RvbUJveHBsb3RcIl0gPSBcImN1c3RvbS1ib3hwbG90XCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIlRvdGFsc1wiXSA9IFwidG90YWxzXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIlRyZW5kTGluZU9iamVjdFwiXSA9IFwidHJlbmQtbGluZS1vYmplY3RcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3RUeXBlW1wiRm9yZWNhc3RcIl0gPSBcImZvcmVjYXN0XCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIkNsdXN0ZXJcIl0gPSBcImNsdXN0ZXJcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3RUeXBlW1wiT3V0bGllclwiXSA9IFwib3V0bGllclwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJNZWRpYW5BbmRRdWFydGlsZXNcIl0gPSBcIm1lZGlhbi1hbmQtcXVhcnRpbGVzXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEFuYWx5dGljc09iamVjdFR5cGUgPSBleHBvcnRzLkFuYWx5dGljc09iamVjdFR5cGUgfHwgKGV4cG9ydHMuQW5hbHl0aWNzT2JqZWN0VHlwZSA9IHt9KSk7XG4vLyB0YXJnZXQgd2hlcmUgYW4gYW5hbHl0aWNzIG9iamVjdCBtYXkgYmUgZHJvcHBlZFxudmFyIEFuYWx5dGljc09iamVjdERyb3BUYXJnZXQ7XG4oZnVuY3Rpb24gKEFuYWx5dGljc09iamVjdERyb3BUYXJnZXQpIHtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0Q2VsbFwiXSA9IFwidGFyZ2V0LWNlbGxcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0UGFuZVwiXSA9IFwidGFyZ2V0LXBhbmVcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0VGFibGVcIl0gPSBcInRhcmdldC10YWJsZVwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdERyb3BUYXJnZXRbXCJUYXJnZXRMaW5lYXJcIl0gPSBcInRhcmdldC1saW5lYXJcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0TG9nXCJdID0gXCJ0YXJnZXQtbG9nXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldFtcIlRhcmdldEV4cG9uZW50aWFsXCJdID0gXCJ0YXJnZXQtZXhwb25lbnRpYWxcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0UG9seW5vbWlhbFwiXSA9IFwidGFyZ2V0LXBvbHlub21pYWxcIjtcbiAgICAvLyBcbiAgICBBbmFseXRpY3NPYmplY3REcm9wVGFyZ2V0W1wiVGFyZ2V0UG93ZXJcIl0gPSBcInRhcmdldC1wb3dlclwiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdERyb3BUYXJnZXRbXCJUYXJnZXRGb3JlY2FzdFwiXSA9IFwidGFyZ2V0LWZvcmVjYXN0XCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldFtcIlRhcmdldENsdXN0ZXJcIl0gPSBcInRhcmdldC1jbHVzdGVyXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldFtcIlRhcmdldE91dGxpZXJcIl0gPSBcInRhcmdldC1vdXRsaWVyXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldFtcIlRhcmdldFN1YnRvdGFsc1wiXSA9IFwidGFyZ2V0LXN1YnRvdGFsc1wiO1xuICAgIC8vIFxuICAgIEFuYWx5dGljc09iamVjdERyb3BUYXJnZXRbXCJUYXJnZXRDb2x1bW5Ub3RhbHNcIl0gPSBcInRhcmdldC1jb2x1bW4tdG90YWxzXCI7XG4gICAgLy8gXG4gICAgQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldFtcIlRhcmdldFJvd1RvdGFsc1wiXSA9IFwidGFyZ2V0LXJvdy10b3RhbHNcIjtcbn0pKEFuYWx5dGljc09iamVjdERyb3BUYXJnZXQgPSBleHBvcnRzLkFuYWx5dGljc09iamVjdERyb3BUYXJnZXQgfHwgKGV4cG9ydHMuQW5hbHl0aWNzT2JqZWN0RHJvcFRhcmdldCA9IHt9KSk7XG4vLyBcbnZhciBDYWxjQXBwbHlSZXN1bHQ7XG4oZnVuY3Rpb24gKENhbGNBcHBseVJlc3VsdCkge1xuICAgIC8vIGNhcHRpb24gZm9yIG5ldyBjYWxjdWxhdGlvbiBpcyBpbnZhbGlkXG4gICAgQ2FsY0FwcGx5UmVzdWx0W1wiSU5WQUxJRF9DQVBUSU9OXCJdID0gXCJpbnZhbGlkLWNhcHRpb24tZm9yLW5ldy1jYWxjXCI7XG4gICAgLy8gZm9ybXVsYSBpcyBpbnZhbGlkXG4gICAgQ2FsY0FwcGx5UmVzdWx0W1wiSU5WQUxJRF9GT1JNVUxBXCJdID0gXCJpbnZhbGlkLWZvcm11bGFcIjtcbiAgICAvLyBzdWNjZXNzZnVsbHkgYXBwbGllZFxuICAgIENhbGNBcHBseVJlc3VsdFtcIlNVQ0NFRURcIl0gPSBcInN1Y2NlZWRcIjtcbn0pKENhbGNBcHBseVJlc3VsdCA9IGV4cG9ydHMuQ2FsY0FwcGx5UmVzdWx0IHx8IChleHBvcnRzLkNhbGNBcHBseVJlc3VsdCA9IHt9KSk7XG4vLyBcbnZhciBVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzO1xuKGZ1bmN0aW9uIChVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzKSB7XG4gICAgLy8gXG4gICAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c1tcIlVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNfU3VjY2Vzc1wiXSA9IFwic3VjY2Vzc1wiO1xuICAgIC8vIFxuICAgIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNbXCJVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vuc3VwcG9ydGVkQ29udHJvbFR5cGVFcnJvclwiXSA9IFwidW5zdXBwb3J0ZWQtY29udHJvbC10eXBlLWVycm9yXCI7XG4gICAgLy8gXG4gICAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c1tcIlVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNfVW5zdXBwb3J0ZWRBY3Rpb25FcnJvclwiXSA9IFwidW5zdXBwb3J0ZWQtYWN0aW9uLWVycm9yXCI7XG4gICAgLy8gXG4gICAgVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1c1tcIlVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNfQ29tcG9uZW50Tm90Rm91bmRFcnJvclwiXSA9IFwiY29tcG9uZW50LW5vdC1mb3VuZC1lcnJvclwiO1xuICAgIC8vIFxuICAgIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNbXCJVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1Vua25vd25FcnJvclwiXSA9IFwidW5rbm93bi1lcnJvclwiO1xuICAgIC8vIFxuICAgIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNbXCJVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX1NhdmVFcnJvclwiXSA9IFwic2F2ZS1lcnJvclwiO1xuICAgIC8vIFxuICAgIFVJQXV0b21hdGlvbkNvbW1hbmRTdGF0dXNbXCJVSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzX0JhZElucHV0RXJyb3JcIl0gPSBcImJhZC1pbnB1dC1lcnJvclwiO1xufSkoVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1cyA9IGV4cG9ydHMuVUlBdXRvbWF0aW9uQ29tbWFuZFN0YXR1cyB8fCAoZXhwb3J0cy5VSUF1dG9tYXRpb25Db21tYW5kU3RhdHVzID0ge30pKTtcbi8vIFxudmFyIERyb3BXaGVuO1xuKGZ1bmN0aW9uIChEcm9wV2hlbikge1xuICAgIC8vIFxuICAgIERyb3BXaGVuW1wiRHJvcFdoZW5OZXZlclwiXSA9IFwibmV2ZXJcIjtcbiAgICAvLyBcbiAgICBEcm9wV2hlbltcIkRyb3BXaGVuQWx3YXlzXCJdID0gXCJhbHdheXNcIjtcbiAgICAvLyBcbiAgICBEcm9wV2hlbltcIkRyb3BXaGVuU2VsZWN0ZWRcIl0gPSBcIndoZW4tc2VsZWN0ZWRcIjtcbn0pKERyb3BXaGVuID0gZXhwb3J0cy5Ecm9wV2hlbiB8fCAoZXhwb3J0cy5Ecm9wV2hlbiA9IHt9KSk7XG4vLyBcbnZhciBWYWx1ZURvbWFpblR5cGU7XG4oZnVuY3Rpb24gKFZhbHVlRG9tYWluVHlwZSkge1xuICAgIC8vIGludmFsaWQgZG9tYWluXG4gICAgVmFsdWVEb21haW5UeXBlW1wiRE9NQUlOX0lOVkFMSURcIl0gPSBcImRvbWFpbi1pbnZhbGlkXCI7XG4gICAgLy8gdXNlciBjYW4gdHlwZSBpbiBhbnkgdmFsdWUgdGhleSBwbGVhc2VcIiAxXG4gICAgVmFsdWVEb21haW5UeXBlW1wiRE9NQUlOX0ZSRUVfRU5UUllcIl0gPSBcImRvbWFpbi1mcmVlLWVudHJ5XCI7XG4gICAgLy8gdXNlciBtdXN0IHNlbGVjdCBhIHZhbHVlIGZyb20gdGhlIGxpc3RcbiAgICBWYWx1ZURvbWFpblR5cGVbXCJET01BSU5fTElTVFwiXSA9IFwiZG9tYWluLWxpc3RcIjtcbiAgICAvLyB1c2VyIGNhbiBmcmVlbHkgZW50ZXIgdmFsdWVzIGFzIGxvbmcgYXMgdGhleSBhcmUgYWJvdmUgbWluIHZhbHVlXG4gICAgVmFsdWVEb21haW5UeXBlW1wiRE9NQUlOX01JTlwiXSA9IFwiZG9tYWluLW1pblwiO1xuICAgIC8vIHVzZXIgY2FuIGZyZWVseSBlbnRlciB2YWx1ZXMgYXMgbG9uZyBhcyB0aGV5IGFyZSBiZWxvdyBtYXggdmFsdWVcbiAgICBWYWx1ZURvbWFpblR5cGVbXCJET01BSU5fTUFYXCJdID0gXCJkb21haW4tbWF4XCI7XG59KShWYWx1ZURvbWFpblR5cGUgPSBleHBvcnRzLlZhbHVlRG9tYWluVHlwZSB8fCAoZXhwb3J0cy5WYWx1ZURvbWFpblR5cGUgPSB7fSkpO1xuLy8gXG52YXIgT3BlcmF0aW9uVHlwZTtcbihmdW5jdGlvbiAoT3BlcmF0aW9uVHlwZSkge1xuICAgIC8vIFxuICAgIE9wZXJhdGlvblR5cGVbXCJFcXVhbHNcIl0gPSBcImVxdWFsc1wiO1xuICAgIC8vIFxuICAgIE9wZXJhdGlvblR5cGVbXCJOb3RFcXVhbHNcIl0gPSBcIm5vdC1lcXVhbHNcIjtcbiAgICAvLyBcbiAgICBPcGVyYXRpb25UeXBlW1wiTGVzc1RoYW5cIl0gPSBcImxlc3MtdGhhblwiO1xuICAgIC8vIFxuICAgIE9wZXJhdGlvblR5cGVbXCJMZXNzVGhhbkVxdWFsXCJdID0gXCJsZXNzLXRoYW4tZXF1YWxcIjtcbiAgICAvLyBcbiAgICBPcGVyYXRpb25UeXBlW1wiR3JlYXRlclRoYW5cIl0gPSBcImdyZWF0ZXItdGhhblwiO1xuICAgIC8vIFxuICAgIE9wZXJhdGlvblR5cGVbXCJHcmVhdGVyVGhhbkVxdWFsXCJdID0gXCJncmVhdGVyLXRoYW4tZXF1YWxcIjtcbiAgICAvLyBcbiAgICBPcGVyYXRpb25UeXBlW1wiUmFuZ2VJbmNsdXNpdmVcIl0gPSBcInJhbmdlLWluY2x1c2l2ZVwiO1xufSkoT3BlcmF0aW9uVHlwZSA9IGV4cG9ydHMuT3BlcmF0aW9uVHlwZSB8fCAoZXhwb3J0cy5PcGVyYXRpb25UeXBlID0ge30pKTtcbi8vIFxudmFyIERyb3BGaWVsZFJlc3VsdDtcbihmdW5jdGlvbiAoRHJvcEZpZWxkUmVzdWx0KSB7XG4gICAgLy8gXG4gICAgRHJvcEZpZWxkUmVzdWx0W1wiRHJvcEZpZWxkTm9cIl0gPSBcIm5vXCI7XG4gICAgLy8gXG4gICAgRHJvcEZpZWxkUmVzdWx0W1wiRHJvcEZpZWxkWWVzXCJdID0gXCJ5ZXNcIjtcbiAgICAvLyBcbiAgICBEcm9wRmllbGRSZXN1bHRbXCJEcm9wRmllbGRMb2NrXCJdID0gXCJsb2NrXCI7XG4gICAgLy8gXG4gICAgRHJvcEZpZWxkUmVzdWx0W1wiRHJvcEZpZWxkRmlsdGVyXCJdID0gXCJmaWx0ZXJcIjtcbiAgICAvLyBcbiAgICBEcm9wRmllbGRSZXN1bHRbXCJEcm9wRmllbGREaXNhZ2dyZWdhdGVcIl0gPSBcImRpc2FnZ3JlZ2F0ZVwiO1xufSkoRHJvcEZpZWxkUmVzdWx0ID0gZXhwb3J0cy5Ecm9wRmllbGRSZXN1bHQgfHwgKGV4cG9ydHMuRHJvcEZpZWxkUmVzdWx0ID0ge30pKTtcbi8vIHJlc29sdXRpb24gdHlwZSBmb3IgYSBuYW1lIGNvbmZsaWN0XG52YXIgTmFtZUNvbmZsaWN0UmVzb2x1dGlvbjtcbihmdW5jdGlvbiAoTmFtZUNvbmZsaWN0UmVzb2x1dGlvbikge1xuICAgIC8vIFxuICAgIE5hbWVDb25mbGljdFJlc29sdXRpb25bXCJOUkNfVXNlT2xkXCJdID0gXCJ1c2Utb2xkXCI7XG4gICAgLy8gXG4gICAgTmFtZUNvbmZsaWN0UmVzb2x1dGlvbltcIk5SQ19Vc2VOZXdcIl0gPSBcInVzZS1uZXdcIjtcbiAgICAvLyBcbiAgICBOYW1lQ29uZmxpY3RSZXNvbHV0aW9uW1wiTlJDX1JlbmFtZU5ld1wiXSA9IFwicmVuYW1lLW5ld1wiO1xufSkoTmFtZUNvbmZsaWN0UmVzb2x1dGlvbiA9IGV4cG9ydHMuTmFtZUNvbmZsaWN0UmVzb2x1dGlvbiB8fCAoZXhwb3J0cy5OYW1lQ29uZmxpY3RSZXNvbHV0aW9uID0ge30pKTtcbi8vIHVzZSBlaXRoZXIgYSBzdHJpbmcgc2VwYXJhdG9yIG9yIGEgc2V0IG51bWJlciBvZiBjaGFyYWN0ZXJzXG52YXIgU2VwYXJhdG9yVHlwZTtcbihmdW5jdGlvbiAoU2VwYXJhdG9yVHlwZSkge1xuICAgIC8vIFxuICAgIFNlcGFyYXRvclR5cGVbXCJTZXBhcmF0b3JUeXBlX19TdHJpbmdTZXBhcmF0b3JcIl0gPSBcInN0cmluZy1zZXBhcmF0b3JcIjtcbiAgICAvLyBcbiAgICBTZXBhcmF0b3JUeXBlW1wiU2VwYXJhdG9yVHlwZV9fQ2hhcmFjdGVyQ291bnRTZXBhcmF0b3JcIl0gPSBcImNoYXJhY3Rlci1jb3VudC1zZXBhcmF0b3JcIjtcbn0pKFNlcGFyYXRvclR5cGUgPSBleHBvcnRzLlNlcGFyYXRvclR5cGUgfHwgKGV4cG9ydHMuU2VwYXJhdG9yVHlwZSA9IHt9KSk7XG4vLyBzcGxpdCBnbG9iYWxseSBvciBvbmx5IG9uIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9yIG9ubHkgb24gdGhlIGxhc3Qgb2NjdXJyZW5jZVxudmFyIFNwbGl0TW9kZTtcbihmdW5jdGlvbiAoU3BsaXRNb2RlKSB7XG4gICAgLy8gXG4gICAgU3BsaXRNb2RlW1wiU3BsaXRNb2RlX19DU19BTExcIl0gPSBcInNwbGl0LWFsbFwiO1xuICAgIC8vIFxuICAgIFNwbGl0TW9kZVtcIlNwbGl0TW9kZV9fQ1NfRklSU1RcIl0gPSBcInNwbGl0LWZpcnN0XCI7XG4gICAgLy8gXG4gICAgU3BsaXRNb2RlW1wiU3BsaXRNb2RlX19DU19MQVNUXCJdID0gXCJzcGxpdC1sYXN0XCI7XG59KShTcGxpdE1vZGUgPSBleHBvcnRzLlNwbGl0TW9kZSB8fCAoZXhwb3J0cy5TcGxpdE1vZGUgPSB7fSkpO1xuLy8gXG52YXIgTm9kZVNlbGVjdGlvblR5cGU7XG4oZnVuY3Rpb24gKE5vZGVTZWxlY3Rpb25UeXBlKSB7XG4gICAgLy8gXG4gICAgTm9kZVNlbGVjdGlvblR5cGVbXCJOb2RlU2VsZWN0aW9uX05vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICAvLyBcbiAgICBOb2RlU2VsZWN0aW9uVHlwZVtcIk5vZGVTZWxlY3Rpb25fU2luZ2xlUm93XCJdID0gXCJzaW5nbGUtcm93XCI7XG4gICAgLy8gXG4gICAgTm9kZVNlbGVjdGlvblR5cGVbXCJOb2RlU2VsZWN0aW9uX011bHRpUm93XCJdID0gXCJtdWx0aS1yb3dcIjtcbiAgICAvLyBcbiAgICBOb2RlU2VsZWN0aW9uVHlwZVtcIk5vZGVTZWxlY3Rpb25fU2luZ2xlQ29sdW1uXCJdID0gXCJzaW5nbGUtY29sdW1uXCI7XG4gICAgLy8gXG4gICAgTm9kZVNlbGVjdGlvblR5cGVbXCJOb2RlU2VsZWN0aW9uX011bHRpQ29sdW1uXCJdID0gXCJtdWx0aS1jb2x1bW5cIjtcbiAgICAvLyBcbiAgICBOb2RlU2VsZWN0aW9uVHlwZVtcIk5vZGVTZWxlY3Rpb25fTWl4ZWRcIl0gPSBcIm1peGVkXCI7XG59KShOb2RlU2VsZWN0aW9uVHlwZSA9IGV4cG9ydHMuTm9kZVNlbGVjdGlvblR5cGUgfHwgKGV4cG9ydHMuTm9kZVNlbGVjdGlvblR5cGUgPSB7fSkpO1xuLy8gaWNvbnMgZm9yIEFjdGlvbntTb3VyY2UvRGVzdH1Db21ib1xudmFyIFNvdXJjZURlc3RJY29uO1xuKGZ1bmN0aW9uIChTb3VyY2VEZXN0SWNvbikge1xuICAgIC8vIFxuICAgIFNvdXJjZURlc3RJY29uW1wiU0RJX0RhdGFTb3VyY2VcIl0gPSBcImRhdGEtc291cmNlXCI7XG4gICAgLy8gXG4gICAgU291cmNlRGVzdEljb25bXCJTRElfV29ya3NoZWV0XCJdID0gXCJ3b3Jrc2hlZXRcIjtcbiAgICAvLyBcbiAgICBTb3VyY2VEZXN0SWNvbltcIlNESV9EYXNoYm9hcmRcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIC8vIFxuICAgIFNvdXJjZURlc3RJY29uW1wiU0RJX0FsbFwiXSA9IFwiYWxsXCI7XG59KShTb3VyY2VEZXN0SWNvbiA9IGV4cG9ydHMuU291cmNlRGVzdEljb24gfHwgKGV4cG9ydHMuU291cmNlRGVzdEljb24gPSB7fSkpO1xuLy8gcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIGxlZ2VuZHMgb24gYSBzaGVldFxudmFyIExlZ2VuZExheW91dDtcbihmdW5jdGlvbiAoTGVnZW5kTGF5b3V0KSB7XG4gICAgLy8gXG4gICAgTGVnZW5kTGF5b3V0W1wiTExfUmlnaHRWZXJ0aWNhbFwiXSA9IFwicmlnaHQtdmVydGljYWxcIjtcbiAgICAvLyBcbiAgICBMZWdlbmRMYXlvdXRbXCJMTF9SaWdodEhvcml6b250YWxcIl0gPSBcInJpZ2h0LWhvcml6b250YWxcIjtcbiAgICAvLyBcbiAgICBMZWdlbmRMYXlvdXRbXCJMTF9Cb3R0b21WZXJ0aWNhbFwiXSA9IFwiYm90dG9tLXZlcnRpY2FsXCI7XG4gICAgLy8gXG4gICAgTGVnZW5kTGF5b3V0W1wiTExfQm90dG9tSG9yaXpvbnRhbFwiXSA9IFwiYm90dG9tLWhvcml6b250YWxcIjtcbn0pKExlZ2VuZExheW91dCA9IGV4cG9ydHMuTGVnZW5kTGF5b3V0IHx8IChleHBvcnRzLkxlZ2VuZExheW91dCA9IHt9KSk7XG4vLyBcbnZhciBHZXRKc29uUmVzcG9uc2VFbnVtO1xuKGZ1bmN0aW9uIChHZXRKc29uUmVzcG9uc2VFbnVtKSB7XG4gICAgLy8gdGhlIGpzb24gcmVwb25zZSBleGlzdHMgYW5kIGlzIHZhbGlkXG4gICAgR2V0SnNvblJlc3BvbnNlRW51bVtcIkpTT05fT0tcIl0gPSBcIm9rXCI7XG4gICAgLy8gdGhlIHNoZWV0IHNwZWNpZmllZCBpcyBub3QgdmFsaWRcbiAgICBHZXRKc29uUmVzcG9uc2VFbnVtW1wiSlNPTl9OT19TSEVFVFwiXSA9IFwibm8tc2hlZXRcIjtcbiAgICAvLyB0aGUgZmllbGQgaWQgaXMgaW52YWxpZCBmb3IgdGhpcyBmaWx0ZXJcbiAgICBHZXRKc29uUmVzcG9uc2VFbnVtW1wiSlNPTl9JTlZBTElEX0ZJRUxEXCJdID0gXCJpbnZhbGlkLWZpZWxkXCI7XG59KShHZXRKc29uUmVzcG9uc2VFbnVtID0gZXhwb3J0cy5HZXRKc29uUmVzcG9uc2VFbnVtIHx8IChleHBvcnRzLkdldEpzb25SZXNwb25zZUVudW0gPSB7fSkpO1xuLy8gY2xpZW50IG1ldHJpYyBkZXNjcmlwdGlvbnNcbnZhciBDbGllbnRNZXRyaWM7XG4oZnVuY3Rpb24gKENsaWVudE1ldHJpYykge1xuICAgIC8vIFVua25vd24gTWV0cmljXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fVW5rbm93blwiXSA9IFwiVU5LTldOXCI7XG4gICAgLy8gQm9vdHN0cmFwIFJlcXVlc3RcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9Cb290c3RyYXBSZXF1ZXN0XCJdID0gXCJCVFNUUlBcIjtcbiAgICAvLyBQcm9jZXNzIFByaW1hcnkgUGF5bG9hZFxuICAgIENsaWVudE1ldHJpY1tcIkNNX1Byb2Nlc3NQcmltYXJ5UGF5bG9hZFwiXSA9IFwiUFJPUFJJXCI7XG4gICAgLy8gUHJvY2VzcyBTZWNvbmRhcnkgUGF5bG9hZFxuICAgIENsaWVudE1ldHJpY1tcIkNNX1Byb2Nlc3NTZWNvbmRhcnlQYXlsb2FkXCJdID0gXCJQUk9TRUNcIjtcbiAgICAvLyBJbml0aWFsaXplIE1vZGVsc1xuICAgIENsaWVudE1ldHJpY1tcIkNNX0luaXRpYWxpemVNb2RlbHNcIl0gPSBcIk1ETElOSVwiO1xuICAgIC8vIEhhbmRsZSBNb2RlbCBFdmVudHNcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9IYW5kbGVNb2RlbEV2ZW50c1wiXSA9IFwiTURMRVZUXCI7XG4gICAgLy8gRXhlY3V0ZSBMb2NhbCBDb21tYW5kXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fRXhlY3V0ZUxvY2FsQ29tbWFuZFwiXSA9IFwiRVhFTE9DXCI7XG4gICAgLy8gRXhlY3V0ZSBSZW1vdGUgQ29tbWFuZFxuICAgIENsaWVudE1ldHJpY1tcIkNNX0V4ZWN1dGVSZW1vdGVDb21tYW5kXCJdID0gXCJFWEVSRU1cIjtcbiAgICAvLyBQcm9jZXNzIExvY2FsIENvbW1hbmQgUmVzcG9uc2VcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9Qcm9jZXNzTG9jYWxSZXNwb25zZVwiXSA9IFwiUFJPTE9DXCI7XG4gICAgLy8gUHJvY2VzcyBSZW1vdGUgQ29tbWFuZCBSZXNwb25zZVxuICAgIENsaWVudE1ldHJpY1tcIkNNX1Byb2Nlc3NSZW1vdGVSZXNwb25zZVwiXSA9IFwiUFJPUkVNXCI7XG4gICAgLy8gUmVuZGVyIFBhbmV0YWJsZVxuICAgIENsaWVudE1ldHJpY1tcIkNNX1JlbmRlclBhbmV0YWJsZVwiXSA9IFwiUk5EUlBUXCI7XG4gICAgLy8gUmVuZGVyIFJlZ2lvblxuICAgIENsaWVudE1ldHJpY1tcIkNNX1JlbmRlclJlZ2lvblwiXSA9IFwiUk5EUlJHXCI7XG4gICAgLy8gUnVudGltZSBtb2RlbCBwcmVzbW9kZWwgY29udmVyc2lvblxuICAgIENsaWVudE1ldHJpY1tcIkNNX1J1bnRpbWVDb252ZXJzaW9uXCJdID0gXCJSVENPTlZcIjtcbiAgICAvLyBDbGllbnQgTG9hZGVkXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fQ2xpZW50TG9hZGVkXCJdID0gXCJDTE5UTERcIjtcbiAgICAvLyBBcHBsaWNhdGlvbiBTdGFydHVwXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fQXBwbGljYXRpb25TdGFydHVwXCJdID0gXCJBUFBTVFJcIjtcbiAgICAvLyBBcHBsaWNhdGlvbiBJbnRlcmFjdGl2ZVxuICAgIENsaWVudE1ldHJpY1tcIkNNX0FwcGxpY2F0aW9uSW50ZXJhY3RpdmVcIl0gPSBcIkFQUElOVFwiO1xuICAgIC8vIEFsbCBab25lcyBMb2FkZWRcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9BbGxab25lc0xvYWRlZFwiXSA9IFwiQUxMWk5TXCI7XG4gICAgLy8gVG9vbGJhciBMYXlvdXRcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9Ub29sYmFyTGF5b3V0XCJdID0gXCJUQlJMQVlcIjtcbiAgICAvLyBUb29sYmFyIEhhbmRsZU5ld1Rvb2xiYXJcbiAgICBDbGllbnRNZXRyaWNbXCJDTV9Ub29sYmFySGFuZGxlTmV3VG9vbGJhclwiXSA9IFwiVEJSSE5UXCI7XG4gICAgLy8gVG9vbGJhciBBZGRUb29sYmFyXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fVG9vbGJhckFkZFRvb2xiYXJcIl0gPSBcIlRCUkFERFwiO1xuICAgIC8vIFRvb2xiYXIgSGFuZGxlUmVzaXplXG4gICAgQ2xpZW50TWV0cmljW1wiQ01fVG9vbGJhckhhbmRsZVJlc2l6ZVwiXSA9IFwiVEJSSFJFXCI7XG4gICAgLy8gSmF2YVNjcmlwdCBNb2R1bGUgbG9hZGVkIGFzeW5jaHJvbm91c2x5XG4gICAgQ2xpZW50TWV0cmljW1wiQ01fTW9kdWxlTG9hZGVkXCJdID0gXCJNRExPQURcIjtcbn0pKENsaWVudE1ldHJpYyA9IGV4cG9ydHMuQ2xpZW50TWV0cmljIHx8IChleHBvcnRzLkNsaWVudE1ldHJpYyA9IHt9KSk7XG4vLyByZXN1bHQgY29kZSBmb3IgaW1hZ2VzIGVkaXQgb3BlcmF0aW9uXG52YXIgSW1hZ2VzRWRpdFJlc3VsdENvZGU7XG4oZnVuY3Rpb24gKEltYWdlc0VkaXRSZXN1bHRDb2RlKSB7XG4gICAgLy8gXG4gICAgSW1hZ2VzRWRpdFJlc3VsdENvZGVbXCJJRVJfU3VjY2Vzc1wiXSA9IFwic3VjY2Vzc1wiO1xuICAgIC8vIFxuICAgIEltYWdlc0VkaXRSZXN1bHRDb2RlW1wiSUVSX0VtcHR5Q2FwdGlvblwiXSA9IFwiZW1wdHktY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIEltYWdlc0VkaXRSZXN1bHRDb2RlW1wiSUVSX0R1cGxpY2F0ZUNhcHRpb25cIl0gPSBcImR1cGxpY2F0ZS1jYXB0aW9uXCI7XG4gICAgLy8gXG4gICAgSW1hZ2VzRWRpdFJlc3VsdENvZGVbXCJJRVJfRmFpbGVkVmFsaWRhdGlvblwiXSA9IFwiZmFpbGVkLXZhbGlkYXRpb25cIjtcbiAgICAvLyBcbiAgICBJbWFnZXNFZGl0UmVzdWx0Q29kZVtcIklFUl9JbnZhbGlkVVJMXCJdID0gXCJpbnZhbGlkLXVybFwiO1xuICAgIC8vIFxuICAgIEltYWdlc0VkaXRSZXN1bHRDb2RlW1wiSUVSX0VtcHR5WFJhbmdlXCJdID0gXCJlbXB0eS14LXJhbmdlXCI7XG4gICAgLy8gXG4gICAgSW1hZ2VzRWRpdFJlc3VsdENvZGVbXCJJRVJfRW1wdHlZUmFuZ2VcIl0gPSBcImVtcHR5LXktcmFuZ2VcIjtcbiAgICAvLyBcbiAgICBJbWFnZXNFZGl0UmVzdWx0Q29kZVtcIklFUl9Ob0ltYWdlUHJldmlld1wiXSA9IFwibm8taW1hZ2UtcHJldmlld1wiO1xuICAgIC8vIFxuICAgIEltYWdlc0VkaXRSZXN1bHRDb2RlW1wiSUVSX1JlbmRlckV4Y2VwdGlvblwiXSA9IFwicmVuZGVyLWV4Y2VwdGlvblwiO1xuICAgIC8vIFxuICAgIEltYWdlc0VkaXRSZXN1bHRDb2RlW1wiSUVSX1RhYmxlYXVFeGNlcHRpb25cIl0gPSBcInRhYmxlYXUtZXhjZXB0aW9uXCI7XG59KShJbWFnZXNFZGl0UmVzdWx0Q29kZSA9IGV4cG9ydHMuSW1hZ2VzRWRpdFJlc3VsdENvZGUgfHwgKGV4cG9ydHMuSW1hZ2VzRWRpdFJlc3VsdENvZGUgPSB7fSkpO1xuLy8gdGhlIHNvdXJjZSBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHVzZWQgYnkgdGhlIGRhdGEgcHJvdmlkZXJcbnZhciBEYXRhUHJvdmlkZXJUeXBlO1xuKGZ1bmN0aW9uIChEYXRhUHJvdmlkZXJUeXBlKSB7XG4gICAgLy8gXG4gICAgRGF0YVByb3ZpZGVyVHlwZVtcIkRQX0RhdGFzb3VyY2VcIl0gPSBcImRhdGFzb3VyY2VcIjtcbiAgICAvLyBcbiAgICBEYXRhUHJvdmlkZXJUeXBlW1wiRFBfU2VsZWN0aW9uXCJdID0gXCJzZWxlY3Rpb25cIjtcbiAgICAvLyBcbiAgICBEYXRhUHJvdmlkZXJUeXBlW1wiRFBfRWRpdG9yXCJdID0gXCJlZGl0b3JcIjtcbiAgICAvLyBcbiAgICBEYXRhUHJvdmlkZXJUeXBlW1wiRFBfVGFibGVcIl0gPSBcInRhYmxlXCI7XG4gICAgLy8gXG4gICAgRGF0YVByb3ZpZGVyVHlwZVtcIkRQX1NRTFF1ZXJ5XCJdID0gXCJzcWwtcXVlcnlcIjtcbn0pKERhdGFQcm92aWRlclR5cGUgPSBleHBvcnRzLkRhdGFQcm92aWRlclR5cGUgfHwgKGV4cG9ydHMuRGF0YVByb3ZpZGVyVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBEYXNoYm9hcmREZXZpY2VMYXlvdXQ7XG4oZnVuY3Rpb24gKERhc2hib2FyZERldmljZUxheW91dCkge1xuICAgIC8vIFxuICAgIERhc2hib2FyZERldmljZUxheW91dFtcIkRhc2hib2FyZERldmljZUxheW91dF9EZWZhdWx0XCJdID0gXCJkZWZhdWx0XCI7XG4gICAgLy8gXG4gICAgRGFzaGJvYXJkRGV2aWNlTGF5b3V0W1wiRGFzaGJvYXJkRGV2aWNlTGF5b3V0X0Rlc2t0b3BcIl0gPSBcImRlc2t0b3BcIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmREZXZpY2VMYXlvdXRbXCJEYXNoYm9hcmREZXZpY2VMYXlvdXRfVGFibGV0XCJdID0gXCJ0YWJsZXRcIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmREZXZpY2VMYXlvdXRbXCJEYXNoYm9hcmREZXZpY2VMYXlvdXRfUGhvbmVcIl0gPSBcInBob25lXCI7XG59KShEYXNoYm9hcmREZXZpY2VMYXlvdXQgPSBleHBvcnRzLkRhc2hib2FyZERldmljZUxheW91dCB8fCAoZXhwb3J0cy5EYXNoYm9hcmREZXZpY2VMYXlvdXQgPSB7fSkpO1xuLy8gd2hvIGlzIGNhbGxpbmcgdGhlIGRldmljZSBkZXRlY3Rpb24gbG9naWNcbnZhciBEZXZpY2VTb3VyY2U7XG4oZnVuY3Rpb24gKERldmljZVNvdXJjZSkge1xuICAgIC8vIE5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgY2FsbGVyIHRvIHRoZSBkZXRlY3Rpb24gbG9naWMuIFRoaXMgbWVhbnMgaXQgaXMgdGhlIHdlYiBicm93c2VyLlxuICAgIERldmljZVNvdXJjZVtcIkRldmljZVNvdXJjZV9Vbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgLy8gdGhlIHNuYXBzaG90IHNlcnZpY2UgZm9yIHRoZSBtb2JpbGUgYXBwXG4gICAgRGV2aWNlU291cmNlW1wiRGV2aWNlU291cmNlX1NuYXBzaG90U2VydmljZVwiXSA9IFwic25hcHNob3Qtc3J2XCI7XG4gICAgLy8gdGhlIDpkZXZpY2UgdXJsIHBhcmFtZXRlclxuICAgIERldmljZVNvdXJjZVtcIkRldmljZVNvdXJjZV9VcmxQYXJhbVwiXSA9IFwidXJsLXBhcmFtXCI7XG59KShEZXZpY2VTb3VyY2UgPSBleHBvcnRzLkRldmljZVNvdXJjZSB8fCAoZXhwb3J0cy5EZXZpY2VTb3VyY2UgPSB7fSkpO1xuLy8gXG52YXIgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uO1xuKGZ1bmN0aW9uIChEYXNoYm9hcmRTaXppbmdEaW1lbnNpb24pIHtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25bXCJOb0RpbWVuc2lvblwiXSA9IFwibm9cIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25bXCJNaW5XaWR0aERpbWVuc2lvblwiXSA9IFwibWlud2lkdGhcIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25bXCJNaW5IZWlnaHREaW1lbnNpb25cIl0gPSBcIm1pbmhlaWdodFwiO1xuICAgIC8vIFxuICAgIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbltcIk1heFdpZHRoRGltZW5zaW9uXCJdID0gXCJtYXh3aWR0aFwiO1xuICAgIC8vIFxuICAgIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbltcIk1heEhlaWdodERpbWVuc2lvblwiXSA9IFwibWF4aGVpZ2h0XCI7XG4gICAgLy8gXG4gICAgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uW1wiRml4ZWRXaWR0aERpbWVuc2lvblwiXSA9IFwiZml4ZWR3aWR0aFwiO1xuICAgIC8vIFxuICAgIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbltcIkZpeGVkSGVpZ2h0RGltZW5zaW9uXCJdID0gXCJmaXhlZGhlaWdodFwiO1xuICAgIC8vIFxuICAgIERhc2hib2FyZFNpemluZ0RpbWVuc2lvbltcIlNjcm9sbGFibGVIZWlnaHREaW1lbnNpb25cIl0gPSBcInNjcm9sbGFibGVoZWlnaHRcIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdEaW1lbnNpb25bXCJNaW5EaW1lbnNpb25zXCJdID0gXCJtaW5zXCI7XG4gICAgLy8gXG4gICAgRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uW1wiTWF4RGltZW5zaW9uc1wiXSA9IFwibWF4c1wiO1xufSkoRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uID0gZXhwb3J0cy5EYXNoYm9hcmRTaXppbmdEaW1lbnNpb24gfHwgKGV4cG9ydHMuRGFzaGJvYXJkU2l6aW5nRGltZW5zaW9uID0ge30pKTtcbi8vIFxudmFyIEZsaXBib2FyZE5hdlR5cGU7XG4oZnVuY3Rpb24gKEZsaXBib2FyZE5hdlR5cGUpIHtcbiAgICAvLyBcbiAgICBGbGlwYm9hcmROYXZUeXBlW1wiQ2FwdGlvblwiXSA9IFwiY2FwdGlvblwiO1xuICAgIC8vIFxuICAgIEZsaXBib2FyZE5hdlR5cGVbXCJOdW1iZXJcIl0gPSBcIm51bWJlclwiO1xuICAgIC8vIFxuICAgIEZsaXBib2FyZE5hdlR5cGVbXCJEb3RcIl0gPSBcImRvdFwiO1xuICAgIC8vIFxuICAgIEZsaXBib2FyZE5hdlR5cGVbXCJBcnJvd09ubHlcIl0gPSBcImFycm93b25seVwiO1xufSkoRmxpcGJvYXJkTmF2VHlwZSA9IGV4cG9ydHMuRmxpcGJvYXJkTmF2VHlwZSB8fCAoZXhwb3J0cy5GbGlwYm9hcmROYXZUeXBlID0ge30pKTtcbi8vIFxudmFyIERhc2hib2FyZFNpemluZ01vZGU7XG4oZnVuY3Rpb24gKERhc2hib2FyZFNpemluZ01vZGUpIHtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdNb2RlW1wiVW5zcGVjaWZpZWRTaXppbmdcIl0gPSBcInVuc3BlY2lmaWVkXCI7XG4gICAgLy8gXG4gICAgRGFzaGJvYXJkU2l6aW5nTW9kZVtcIkF1dG9tYXRpY1NpemluZ1wiXSA9IFwiYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgRGFzaGJvYXJkU2l6aW5nTW9kZVtcIkZpeGVkU2l6aW5nXCJdID0gXCJmaXhlZFwiO1xuICAgIC8vIFxuICAgIERhc2hib2FyZFNpemluZ01vZGVbXCJSYW5nZVNpemluZ1wiXSA9IFwicmFuZ2VcIjtcbiAgICAvLyBcbiAgICBEYXNoYm9hcmRTaXppbmdNb2RlW1wiVlNjcm9sbFNpemluZ1wiXSA9IFwidnNjcm9sbFwiO1xufSkoRGFzaGJvYXJkU2l6aW5nTW9kZSA9IGV4cG9ydHMuRGFzaGJvYXJkU2l6aW5nTW9kZSB8fCAoZXhwb3J0cy5EYXNoYm9hcmRTaXppbmdNb2RlID0ge30pKTtcbi8vIFxudmFyIEdyaWRPdmVybGF5TW9kZTtcbihmdW5jdGlvbiAoR3JpZE92ZXJsYXlNb2RlKSB7XG4gICAgLy8gXG4gICAgR3JpZE92ZXJsYXlNb2RlW1wiR09NX0F1dG9tYXRpY1wiXSA9IFwiZ29tLWF1dG9tYXRpY1wiO1xuICAgIC8vIFxuICAgIEdyaWRPdmVybGF5TW9kZVtcIkdPTV9PblwiXSA9IFwiZ29tLW9uXCI7XG4gICAgLy8gXG4gICAgR3JpZE92ZXJsYXlNb2RlW1wiR09NX09mZlwiXSA9IFwiZ29tLW9mZlwiO1xufSkoR3JpZE92ZXJsYXlNb2RlID0gZXhwb3J0cy5HcmlkT3ZlcmxheU1vZGUgfHwgKGV4cG9ydHMuR3JpZE92ZXJsYXlNb2RlID0ge30pKTtcbi8vIFxudmFyIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZTtcbihmdW5jdGlvbiAoRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlKSB7XG4gICAgLy8gXG4gICAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlW1wiRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlX1JlcGxhY2VGaWVsZFwiXSA9IFwicmVwbGFjZS1maWVsZC11c2UtY2FzZVwiO1xuICAgIC8vIFxuICAgIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZVtcIkZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9DcmVhdGVJZGVudGl0eVNldFwiXSA9IFwiY3JlYXRlLWlkZW50aXR5LXNldFwiO1xuICAgIC8vIFxuICAgIEZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZVtcIkZpZWxkUGlja2VyRGlhbG9nVXNlQ2FzZV9FZGl0RGF0YXNyb3VjZUFsaWFzZXNcIl0gPSBcImVkaXQtZGF0YXNvdXJjZS1hbGlhc2VzLXVzZS1jYXNlXCI7XG4gICAgLy8gXG4gICAgRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlW1wiRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlX0VkaXRGaWx0ZXJzXCJdID0gXCJlZGl0LWZpbHRlcnMtdXNlLWNhc2VcIjtcbiAgICAvLyBcbiAgICBGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VbXCJGaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2VfRXh0cmFjdEZpbHRlclwiXSA9IFwiaW5jcmVtZW50YWwtZXh0cmFjdC11c2UtY2FzZVwiO1xufSkoRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlID0gZXhwb3J0cy5GaWVsZFBpY2tlckRpYWxvZ1VzZUNhc2UgfHwgKGV4cG9ydHMuRmllbGRQaWNrZXJEaWFsb2dVc2VDYXNlID0ge30pKTtcbi8vIFxudmFyIFNpZGVUeXBlO1xuKGZ1bmN0aW9uIChTaWRlVHlwZSkge1xuICAgIC8vIFxuICAgIFNpZGVUeXBlW1wiU1RfVG9wXCJdID0gXCJ0b3BcIjtcbiAgICAvLyBcbiAgICBTaWRlVHlwZVtcIlNUX1JpZ2h0XCJdID0gXCJyaWdodFwiO1xuICAgIC8vIFxuICAgIFNpZGVUeXBlW1wiU1RfQm90dG9tXCJdID0gXCJib3R0b21cIjtcbiAgICAvLyBcbiAgICBTaWRlVHlwZVtcIlNUX0xlZnRcIl0gPSBcImxlZnRcIjtcbn0pKFNpZGVUeXBlID0gZXhwb3J0cy5TaWRlVHlwZSB8fCAoZXhwb3J0cy5TaWRlVHlwZSA9IHt9KSk7XG4vLyBcbnZhciBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlO1xuKGZ1bmN0aW9uIChXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlKSB7XG4gICAgLy8gXG4gICAgV29ya2dyb3VwUHVibGlzaEVycm9yVHlwZVtcIkVBX05vbmVcIl0gPSBcImVhLW5vbmVcIjtcbiAgICAvLyBcbiAgICBXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlW1wiRUFfV2FybmluZ1wiXSA9IFwiZWEtd2FybmluZ1wiO1xuICAgIC8vIFxuICAgIFdvcmtncm91cFB1Ymxpc2hFcnJvclR5cGVbXCJFQV9Qcm9tcHRcIl0gPSBcImVhLXByb21wdFwiO1xuICAgIC8vIFxuICAgIFdvcmtncm91cFB1Ymxpc2hFcnJvclR5cGVbXCJFQV9JbmZvXCJdID0gXCJlYS1pbmZvXCI7XG4gICAgLy8gXG4gICAgV29ya2dyb3VwUHVibGlzaEVycm9yVHlwZVtcIkVBX1NlcnZlclwiXSA9IFwiZWEtc2VydmVyXCI7XG59KShXb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlID0gZXhwb3J0cy5Xb3JrZ3JvdXBQdWJsaXNoRXJyb3JUeXBlIHx8IChleHBvcnRzLldvcmtncm91cFB1Ymxpc2hFcnJvclR5cGUgPSB7fSkpO1xuLy8gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHNpZ25lZCBpbiBvciBpcyBzaWduZWQgaW50byBhIHNlcnZlclxudmFyIFNlcnZlckNvbm5lY3Rpb25TdGF0dXM7XG4oZnVuY3Rpb24gKFNlcnZlckNvbm5lY3Rpb25TdGF0dXMpIHtcbiAgICAvLyBUaGUgdXNlciBoYXMgbmV2ZXIgc2lnbmVkIGluXG4gICAgU2VydmVyQ29ubmVjdGlvblN0YXR1c1tcIk5ldmVyU2lnbmVkSW5cIl0gPSBcInNlcnZlci1jb25uZWN0aW9uLXN0YXR1cy1uZXZlci1zaWduZWQtaW5cIjtcbiAgICAvLyBUaGUgdXNlciBoYXMgc2lnbmVkIGluIGF0IGxlYXN0IG9uY2VcbiAgICBTZXJ2ZXJDb25uZWN0aW9uU3RhdHVzW1wiSGFzU2lnbmVkSW5cIl0gPSBcInNlcnZlci1jb25uZWN0aW9uX3N0YXR1cy1oYXMtc2lnbmVkLWluXCI7XG4gICAgLy8gQXV0byBzaWduIGluIHdpbGwgYmUgYXR0ZW1wdGVkXG4gICAgU2VydmVyQ29ubmVjdGlvblN0YXR1c1tcIldpbGxBdXRvU2lnbkluXCJdID0gXCJzZXJ2ZXItY29ubmVjdGlvbl9zdGF0dXMtd2lsbC1hdXRvLXNpZ24taW5cIjtcbiAgICAvLyBUaGUgdXNlciBpcyBzaWduZWQgaW5cbiAgICBTZXJ2ZXJDb25uZWN0aW9uU3RhdHVzW1wiU2lnbmVkSW5cIl0gPSBcInNlcnZlci1jb25uZWN0aW9uX3N0YXR1cy1zaWduZWQtaW5cIjtcbn0pKFNlcnZlckNvbm5lY3Rpb25TdGF0dXMgPSBleHBvcnRzLlNlcnZlckNvbm5lY3Rpb25TdGF0dXMgfHwgKGV4cG9ydHMuU2VydmVyQ29ubmVjdGlvblN0YXR1cyA9IHt9KSk7XG4vLyBTdGFydCBvZiBXZWVrIChTdGFydGluZyBEYXkpXG52YXIgU09XVmFsdWU7XG4oZnVuY3Rpb24gKFNPV1ZhbHVlKSB7XG4gICAgLy8gXG4gICAgU09XVmFsdWVbXCJTT1dWYWx1ZV9fU09XX1NZU1RFTURFRkFVTFRcIl0gPSBcInNvdy1zeXN0ZW0tZGVmYXVsdFwiO1xuICAgIC8vIFxuICAgIFNPV1ZhbHVlW1wiU09XVmFsdWVfX1NPV183REFZUEVSSU9EXCJdID0gXCJzb3ctNy1kYXktcGVyaW9kXCI7XG4gICAgLy8gXG4gICAgU09XVmFsdWVbXCJTT1dWYWx1ZV9fU09XX1NVTkRBWVwiXSA9IFwic293LXN1bmRheVwiO1xuICAgIC8vIFxuICAgIFNPV1ZhbHVlW1wiU09XVmFsdWVfX1NPV19NT05EQVlcIl0gPSBcInNvdy1tb25kYXlcIjtcbiAgICAvLyBcbiAgICBTT1dWYWx1ZVtcIlNPV1ZhbHVlX19TT1dfVFVFU0RBWVwiXSA9IFwic293LXR1ZXNkYXlcIjtcbiAgICAvLyBcbiAgICBTT1dWYWx1ZVtcIlNPV1ZhbHVlX19TT1dfV0VETkVTREFZXCJdID0gXCJzb3ctd2VkbmVzZGF5XCI7XG4gICAgLy8gXG4gICAgU09XVmFsdWVbXCJTT1dWYWx1ZV9fU09XX1RIVVJTREFZXCJdID0gXCJzb3ctdGh1cnNkYXlcIjtcbiAgICAvLyBcbiAgICBTT1dWYWx1ZVtcIlNPV1ZhbHVlX19TT1dfRlJJREFZXCJdID0gXCJzb3ctZnJpZGF5XCI7XG4gICAgLy8gXG4gICAgU09XVmFsdWVbXCJTT1dWYWx1ZV9fU09XX1NBVFVSREFZXCJdID0gXCJzb3ctc2F0dXJkYXlcIjtcbiAgICAvLyBcbiAgICBTT1dWYWx1ZVtcIlNPV1ZhbHVlX19TT1dfSVNPODYwMVdFRUtcIl0gPSBcInNvdy1pc284NjAxLXdlZWtcIjtcbn0pKFNPV1ZhbHVlID0gZXhwb3J0cy5TT1dWYWx1ZSB8fCAoZXhwb3J0cy5TT1dWYWx1ZSA9IHt9KSk7XG4vLyBUeXBlIG9mIEZpbmQgdG8gcGVyZm9ybVxudmFyIEZpbmRUeXBlO1xuKGZ1bmN0aW9uIChGaW5kVHlwZSkge1xuICAgIC8vIFN0YXJ0cyBXaXRoXG4gICAgRmluZFR5cGVbXCJGaW5kVHlwZV9TdGFydHNcIl0gPSBcImZpbmR0eXBlLXN0YXJ0c1wiO1xuICAgIC8vIEVuZHMgV2l0aFxuICAgIEZpbmRUeXBlW1wiRmluZFR5cGVfRW5kc1wiXSA9IFwiZmluZHR5cGUtZW5kc1wiO1xuICAgIC8vIENvbnRhaW5zXG4gICAgRmluZFR5cGVbXCJGaW5kVHlwZV9Db250YWluc1wiXSA9IFwiZmluZHR5cGUtY29udGFpbnNcIjtcbiAgICAvLyBFeGFjdFxuICAgIEZpbmRUeXBlW1wiRmluZFR5cGVfRXhhY3RcIl0gPSBcImZpbmR0eXBlLWV4YWN0XCI7XG59KShGaW5kVHlwZSA9IGV4cG9ydHMuRmluZFR5cGUgfHwgKGV4cG9ydHMuRmluZFR5cGUgPSB7fSkpO1xuLy8gUGVyc3BlY3RpdmVUeXBlIG9mIGEgZ2l2ZW4gUGVyc3BlY3RpdmVQcmVzTW9kZWxcbnZhciBQZXJzcGVjdGl2ZUVudW1QZXJzcGVjdGl2ZVR5cGU7XG4oZnVuY3Rpb24gKFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZSkge1xuICAgIC8vIFJlYWxpdHlcbiAgICBQZXJzcGVjdGl2ZUVudW1QZXJzcGVjdGl2ZVR5cGVbXCJQZXJzcGVjdGl2ZVR5cGVfUmVhbGl0eVwiXSA9IFwicGVyc3BlY3RpdmV0eXBlLXJlYWxpdHlcIjtcbiAgICAvLyBGaXJzdFxuICAgIFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZVtcIlBlcnNwZWN0aXZlVHlwZV9GaXJzdFwiXSA9IFwicGVyc3BlY3RpdmV0eXBlLWZpcnN0XCI7XG4gICAgLy8gTGFzdFxuICAgIFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZVtcIlBlcnNwZWN0aXZlVHlwZV9MYXN0XCJdID0gXCJwZXJzcGVjdGl2ZXR5cGUtbGFzdFwiO1xuICAgIC8vIEN1c3RvbVxuICAgIFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZVtcIlBlcnNwZWN0aXZlVHlwZV9DdXN0b21cIl0gPSBcInBlcnNwZWN0aXZldHlwZS1jdXN0b21cIjtcbn0pKFBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZSA9IGV4cG9ydHMuUGVyc3BlY3RpdmVFbnVtUGVyc3BlY3RpdmVUeXBlIHx8IChleHBvcnRzLlBlcnNwZWN0aXZlRW51bVBlcnNwZWN0aXZlVHlwZSA9IHt9KSk7XG4vLyBMaXN0IG9mIG9wdGlvbnMgZm9yIHdoYXQgdG8gd3JpdGUgb3V0IGZyb20gZ2V0LXJ1bnRpbWUtaW5mb1xudmFyIFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dDtcbihmdW5jdGlvbiAoUnVudGltZUluZm9SdW50aW1lT3V0cHV0KSB7XG4gICAgLy8gb3V0cHV0IHRoZSBWVEwgZnJvbSB0aGUgcHJvZHVjZXJzXG4gICAgUnVudGltZUluZm9SdW50aW1lT3V0cHV0W1wiUmF3VlRMXCJdID0gXCJyYXctdnRsXCI7XG4gICAgLy8gb3V0cHV0IHRoZSBkYXRhIHN0b3JlIGZyb20gdGhlIHByb2R1Y2Vyc1xuICAgIFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dFtcIlJhd1N0b3JlXCJdID0gXCJyYXctc3RvcmVcIjtcbiAgICAvLyBvdXRwdXQgdGhlIGdyYXBoIGFuZCBjb21waWxlZCBWVExcbiAgICBSdW50aW1lSW5mb1J1bnRpbWVPdXRwdXRbXCJQYXlsb2FkVlRMXCJdID0gXCJwYXlsb2FkLXZ0bFwiO1xuICAgIC8vIG91dHB1dCB0aGUgZmluYWwgZGF0YSBzdG9yZSBhZnRlciB0cmFuc2Zvcm1zIGFyZSBydW5cbiAgICBSdW50aW1lSW5mb1J1bnRpbWVPdXRwdXRbXCJGaW5hbFN0b3JlXCJdID0gXCJmaW5hbC1zdG9yZVwiO1xuICAgIC8vIG91dHB1dCB0aGUgVlRMIGFuZCBkYXRhIHN0b3JlIGZyb20gdGhlIHByb2R1Y2Vyc1xuICAgIFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dFtcIklucHV0XCJdID0gXCJpbnB1dFwiO1xuICAgIC8vIG91dHB1dCB0aGUgZmluYWwgVlRMIGFuZCBkYXRhIHN0b3JlIGFmdGVyIGNvbXBpbGF0aW9uIGFuZCBydW5uaW5nXG4gICAgUnVudGltZUluZm9SdW50aW1lT3V0cHV0W1wiT3V0cHV0XCJdID0gXCJvdXRwdXRcIjtcbn0pKFJ1bnRpbWVJbmZvUnVudGltZU91dHB1dCA9IGV4cG9ydHMuUnVudGltZUluZm9SdW50aW1lT3V0cHV0IHx8IChleHBvcnRzLlJ1bnRpbWVJbmZvUnVudGltZU91dHB1dCA9IHt9KSk7XG4vLyBcbnZhciBHZW9tZXRyeVR5cGU7XG4oZnVuY3Rpb24gKEdlb21ldHJ5VHlwZSkge1xuICAgIC8vIFxuICAgIEdlb21ldHJ5VHlwZVtcIkVtcHR5XCJdID0gXCJlbXB0eVwiO1xuICAgIC8vIFxuICAgIEdlb21ldHJ5VHlwZVtcIk11bHRpUG9seWdvblwiXSA9IFwibXVsdGlQb2x5Z29uXCI7XG4gICAgLy8gXG4gICAgR2VvbWV0cnlUeXBlW1wiTXVsdGlQb2ludFwiXSA9IFwibXVsdGlQb2ludFwiO1xuICAgIC8vIFxuICAgIEdlb21ldHJ5VHlwZVtcIk11bHRpTGluZVN0cmluZ1wiXSA9IFwibXVsdGlMaW5lU3RyaW5nXCI7XG59KShHZW9tZXRyeVR5cGUgPSBleHBvcnRzLkdlb21ldHJ5VHlwZSB8fCAoZXhwb3J0cy5HZW9tZXRyeVR5cGUgPSB7fSkpO1xuLy8gXG52YXIgTWFya1NpemluZ1NldHRpbmc7XG4oZnVuY3Rpb24gKE1hcmtTaXppbmdTZXR0aW5nKSB7XG4gICAgLy8gXG4gICAgTWFya1NpemluZ1NldHRpbmdbXCJNYXJrc1NjYWxpbmdBdXRvbWF0aWNcIl0gPSBcIm1hcmtzLXNjYWxpbmctYXV0b21hdGljXCI7XG4gICAgLy8gXG4gICAgTWFya1NpemluZ1NldHRpbmdbXCJNYXJrc1NjYWxpbmdPblwiXSA9IFwibWFya3Mtc2NhbGluZy1vblwiO1xuICAgIC8vIFxuICAgIE1hcmtTaXppbmdTZXR0aW5nW1wiTWFya3NTY2FsaW5nT2ZmXCJdID0gXCJtYXJrcy1zY2FsaW5nLW9mZlwiO1xufSkoTWFya1NpemluZ1NldHRpbmcgPSBleHBvcnRzLk1hcmtTaXppbmdTZXR0aW5nIHx8IChleHBvcnRzLk1hcmtTaXppbmdTZXR0aW5nID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIGZvciBjYXJkIHR5cGUgb24gd29ya3NoZWV0cy5cbnZhciBDYXJkVHlwZTtcbihmdW5jdGlvbiAoQ2FyZFR5cGUpIHtcbiAgICAvLyBDYXJkTWFuYWdlciB0cmVhdHMgemVybyBzcGVjaWFsbHksIHNvIHdlIGNhbid0IHN0YXJ0IGF0IHplcm8uXG4gICAgQ2FyZFR5cGVbXCJDb2x1bW5zXCJdID0gXCJjYXJkdHlwZS1jb2x1bW5zXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJSb3dzXCJdID0gXCJjYXJkdHlwZS1yb3dzXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJQYWdlc1wiXSA9IFwiY2FyZHR5cGUtcGFnZXNcIjtcbiAgICAvLyBcbiAgICBDYXJkVHlwZVtcIkN1cnJlbnRQYWdlXCJdID0gXCJjYXJkdHlwZS1jdXJyZW50UGFnZVwiO1xuICAgIC8vIFxuICAgIENhcmRUeXBlW1wiRmlsdGVyc1wiXSA9IFwiY2FyZHR5cGUtZmlsdGVyc1wiO1xuICAgIC8vIFxuICAgIENhcmRUeXBlW1wiTWFya3NcIl0gPSBcImNhcmR0eXBlLW1hcmtzXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJNZWFzdXJlc1wiXSA9IFwiY2FyZHR5cGUtbWVhc3VyZXNcIjtcbiAgICAvLyBcbiAgICBDYXJkVHlwZVtcIkNvbG9yTGVnZW5kXCJdID0gXCJjYXJkdHlwZS1jb2xvckxlZ2VuZFwiO1xuICAgIC8vIFxuICAgIENhcmRUeXBlW1wiU2hhcGVMZWdlbmRcIl0gPSBcImNhcmR0eXBlLXNoYXBlTGVnZW5kXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJTaXplTGVnZW5kXCJdID0gXCJjYXJkdHlwZS1zaXplTGVnZW5kXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJNYXBMZWdlbmRcIl0gPSBcImNhcmR0eXBlLW1hcExlZ2VuZFwiO1xuICAgIC8vIFxuICAgIENhcmRUeXBlW1wiVGl0bGVcIl0gPSBcImNhcmR0eXBlLXRpdGxlXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJDYXB0aW9uXCJdID0gXCJjYXJkdHlwZS1jYXB0aW9uXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJTdW1tYXJ5XCJdID0gXCJjYXJkdHlwZS1zdW1tYXJ5XCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJQYXJhbWV0ZXJcIl0gPSBcImNhcmR0eXBlLXBhcmFtZXRlclwiO1xuICAgIC8vIFxuICAgIENhcmRUeXBlW1wiUXVpY2tGaWx0ZXJcIl0gPSBcImNhcmR0eXBlLXF1aWNrRmlsdGVyXCI7XG4gICAgLy8gXG4gICAgQ2FyZFR5cGVbXCJIaWdobGlnaHRlclwiXSA9IFwiY2FyZHR5cGUtaGlnaGxpZ2h0ZXJcIjtcbn0pKENhcmRUeXBlID0gZXhwb3J0cy5DYXJkVHlwZSB8fCAoZXhwb3J0cy5DYXJkVHlwZSA9IHt9KSk7XG4vLyBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgdGFibGUgZGF0YSB0byBiZSBkaXNwbGF5ZWQuXG52YXIgVGFibGVWaWV3RGF0YVR5cGU7XG4oZnVuY3Rpb24gKFRhYmxlVmlld0RhdGFUeXBlKSB7XG4gICAgLy8gVGFibGUgdmlldyB3aXRoIGVhY2ggY29sdW1uIGlzIHNwZWNpZmllZCBieSBGaWVsZE5hbWUuIERQSV9Db2x1bW5zIGlzIHJlcXVpcmVkLlxuICAgIFRhYmxlVmlld0RhdGFUeXBlW1wiVGFibGVWaWV3RmllbGREYXRhXCJdID0gXCJ0YWJsZS12aWV3LWZpZWxkLWRhdGFcIjtcbiAgICAvLyBUYWJsZSB2aWV3IHdoZXJlIHRoZSBjb2x1bW5zIGFyZSBkZWZpbmVkIGJ5IGEgZ3JvdXAuIERQSV9GaWVsZE5hbWUgaXMgcmVxdWlyZWQuXG4gICAgVGFibGVWaWV3RGF0YVR5cGVbXCJUYWJsZVZpZXdHcm91cERhdGFcIl0gPSBcInRhYmxlLXZpZXctZ3JvdXAtZGF0YVwiO1xufSkoVGFibGVWaWV3RGF0YVR5cGUgPSBleHBvcnRzLlRhYmxlVmlld0RhdGFUeXBlIHx8IChleHBvcnRzLlRhYmxlVmlld0RhdGFUeXBlID0ge30pKTtcbi8vIFxudmFyIFdhcm5pbmdUeXBlO1xuKGZ1bmN0aW9uIChXYXJuaW5nVHlwZSkge1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiTElOS19FUlJPUlwiXSA9IFwibGlua2Vycm9yXCI7XG4gICAgLy8gXG4gICAgV2FybmluZ1R5cGVbXCJPVkVSTEFQX1RFWFRcIl0gPSBcIldhcm5PdmVybGFwcGluZ1RleHRcIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIklOVkFMSURfV09SS1NIRUVUXCJdID0gXCJXYXJuSW52YWxpZFdvcmtzaGVldFwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiT1BFTl9CT09LXCJdID0gXCJvcGVuYm9va1wiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiT1BFTl9EQVRBU09VUkNFXCJdID0gXCJvcGVuZGF0YXNvdXJjZVwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiT1BFTl9TSEVFVFwiXSA9IFwib3BlbnNoZWV0XCI7XG4gICAgLy8gXG4gICAgV2FybmluZ1R5cGVbXCJMT0NBTERBVEFfQU1CSUdVSVRZXCJdID0gXCJMb2NhbERhdGFBbWJpZ3VpdHlcIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIkxPQ0FMREFUQV9NSVNNQVRDSFwiXSA9IFwiTG9jYWxEYXRhTWlzbWF0Y2hcIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIk1JU1NJTkdfTE9DQUxfVElMRVwiXSA9IFwiTWlzc2luZ0xvY2FsVGlsZXNcIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIk1BUF9USUxFX0RPV05MT0FEXCJdID0gXCJNYXBUaWxlRG93bmxvYWRFcnJvclwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiTUFQX1RJTEVfSU5URVJNSVRURU5UXCJdID0gXCJNYXBUaWxlSW50ZXJtaXR0ZW50XCI7XG4gICAgLy8gXG4gICAgV2FybmluZ1R5cGVbXCJNQVBfVElMRV9SRUdJT05cIl0gPSBcIk1hcFRpbGVSZWdpb25cIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIk1BUF9TRVJWRVJfRk9SQklEREVOXCJdID0gXCJNYXBTZXJ2ZXJGb3JiaWRkZW5cIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIkRNX0NBTk5PVF9TQ09SRVwiXSA9IFwiRE1DYW5ub3RTY29yZVwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiRE1fU0NPUklOR19OT1RfUkVDXCJdID0gXCJETVNjb3JpbmdOb3RSZWNvbW1lbmRlZFwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiTE9DQUxfREFUQV9MSUJSQVJZX01JU1NJTkdcIl0gPSBcIkxvY2FsRGF0YUxpYnJhcnlNaXNzaW5nXCI7XG4gICAgLy8gXG4gICAgV2FybmluZ1R5cGVbXCJETV9NSVNTSU5HX01PREVMXCJdID0gXCJETU1pc3NpbmdNb2RlbFwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiRElfTk9fTElOS1wiXSA9IFwiRElOb0xpbmtcIjtcbiAgICAvLyBcbiAgICBXYXJuaW5nVHlwZVtcIkxPQ0FMREFUQV9OT19HRU9NRVRSWVwiXSA9IFwiTG9jYWxEYXRhTm9HZW9tZXRyeVwiO1xuICAgIC8vIFxuICAgIFdhcm5pbmdUeXBlW1wiTE9DQUxEQVRBX05PX0dFT01FVFJZX1VQR1JBREVcIl0gPSBcIkxvY2FsRGF0YU5vR2VvbWV0cnlVcGdyYWRlXCI7XG4gICAgLy8gXG4gICAgV2FybmluZ1R5cGVbXCJESV9OT19SRUxBVElPTlNISVBTXCJdID0gXCJESU5vUmVsYXRpb25zaGlwc1wiO1xufSkoV2FybmluZ1R5cGUgPSBleHBvcnRzLldhcm5pbmdUeXBlIHx8IChleHBvcnRzLldhcm5pbmdUeXBlID0ge30pKTtcbi8vIFxudmFyIFdvcmtib29rVUlNb2RlO1xuKGZ1bmN0aW9uIChXb3JrYm9va1VJTW9kZSkge1xuICAgIC8vIFxuICAgIFdvcmtib29rVUlNb2RlW1wiRGF0YVRhYlwiXSA9IFwiZGF0YS10YWJcIjtcbiAgICAvLyBcbiAgICBXb3JrYm9va1VJTW9kZVtcIkRvY3VtZW50XCJdID0gXCJkb2N1bWVudFwiO1xuICAgIC8vIFxuICAgIFdvcmtib29rVUlNb2RlW1wiU2hlZXRTb3J0ZXJcIl0gPSBcInNoZWV0LXNvcnRlclwiO1xufSkoV29ya2Jvb2tVSU1vZGUgPSBleHBvcnRzLldvcmtib29rVUlNb2RlIHx8IChleHBvcnRzLldvcmtib29rVUlNb2RlID0ge30pKTtcbi8vIFxudmFyIFRvcExldmVsTWVudUl0ZW07XG4oZnVuY3Rpb24gKFRvcExldmVsTWVudUl0ZW0pIHtcbiAgICAvLyBcbiAgICBUb3BMZXZlbE1lbnVJdGVtW1wiRmlsZVwiXSA9IFwiZmlsZVwiO1xuICAgIC8vIFxuICAgIFRvcExldmVsTWVudUl0ZW1bXCJEYXRhXCJdID0gXCJkYXRhXCI7XG4gICAgLy8gXG4gICAgVG9wTGV2ZWxNZW51SXRlbVtcIldvcmtzaGVldFwiXSA9IFwid29ya3NoZWV0XCI7XG4gICAgLy8gXG4gICAgVG9wTGV2ZWxNZW51SXRlbVtcIkRhc2hib2FyZFwiXSA9IFwiZGFzaGJvYXJkXCI7XG4gICAgLy8gXG4gICAgVG9wTGV2ZWxNZW51SXRlbVtcIkFuYWx5c2lzXCJdID0gXCJhbmFseXNpc1wiO1xuICAgIC8vIFxuICAgIFRvcExldmVsTWVudUl0ZW1bXCJGb3JtYXRcIl0gPSBcImZvcm1hdFwiO1xuICAgIC8vIFxuICAgIFRvcExldmVsTWVudUl0ZW1bXCJNYXBcIl0gPSBcIm1hcFwiO1xuICAgIC8vIFxuICAgIFRvcExldmVsTWVudUl0ZW1bXCJIZWxwXCJdID0gXCJoZWxwXCI7XG59KShUb3BMZXZlbE1lbnVJdGVtID0gZXhwb3J0cy5Ub3BMZXZlbE1lbnVJdGVtIHx8IChleHBvcnRzLlRvcExldmVsTWVudUl0ZW0gPSB7fSkpO1xuLy8gRW51bWVyYXRpb24gZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBBZGRJbnMgKFByb2plY3QgRnJlbGFyZClcbnZhciBBZGRJblR5cGU7XG4oZnVuY3Rpb24gKEFkZEluVHlwZSkge1xuICAgIC8vIFxuICAgIEFkZEluVHlwZVtcIkludmFsaWRcIl0gPSBcImludmFsaWRcIjtcbiAgICAvLyBcbiAgICBBZGRJblR5cGVbXCJEYXNoYm9hcmRcIl0gPSBcImRhc2hib2FyZFwiO1xufSkoQWRkSW5UeXBlID0gZXhwb3J0cy5BZGRJblR5cGUgfHwgKGV4cG9ydHMuQWRkSW5UeXBlID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCBjb250ZXh0cyBhbiBhZGQtaW4gY2FuIHJ1biBpblxudmFyIEFkZEluQ29udGV4dDtcbihmdW5jdGlvbiAoQWRkSW5Db250ZXh0KSB7XG4gICAgLy8gXG4gICAgQWRkSW5Db250ZXh0W1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xuICAgIC8vIFxuICAgIEFkZEluQ29udGV4dFtcIkRlc2t0b3BcIl0gPSBcImRlc2t0b3BcIjtcbiAgICAvLyBcbiAgICBBZGRJbkNvbnRleHRbXCJTZXJ2ZXJcIl0gPSBcInNlcnZlclwiO1xufSkoQWRkSW5Db250ZXh0ID0gZXhwb3J0cy5BZGRJbkNvbnRleHQgfHwgKGV4cG9ydHMuQWRkSW5Db250ZXh0ID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCBtb2RlcyBhbiBhZGQtaW4gY2FuIHJ1biBpblxudmFyIEFkZEluTW9kZTtcbihmdW5jdGlvbiAoQWRkSW5Nb2RlKSB7XG4gICAgLy8gXG4gICAgQWRkSW5Nb2RlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xuICAgIC8vIFxuICAgIEFkZEluTW9kZVtcIkF1dGhvcmluZ1wiXSA9IFwiYXV0aG9yaW5nXCI7XG4gICAgLy8gXG4gICAgQWRkSW5Nb2RlW1wiVmlld2luZ1wiXSA9IFwidmlld2luZ1wiO1xufSkoQWRkSW5Nb2RlID0gZXhwb3J0cy5BZGRJbk1vZGUgfHwgKGV4cG9ydHMuQWRkSW5Nb2RlID0ge30pKTtcbi8vIE1hcmtlcnMgZm9yIGFycmF5LW9mLWZsb2F0IGVuY29kaW5nIG9mIGdlb21ldHJ5XG52YXIgTGluZWFyRmxvYXRHZW9tZXRyeU1hcmtlcjtcbihmdW5jdGlvbiAoTGluZWFyRmxvYXRHZW9tZXRyeU1hcmtlcikge1xuICAgIC8vIFxuICAgIExpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXJbXCJMRkdfSW52YWxpZFwiXSA9IFwiaW52YWxpZFwiO1xuICAgIC8vIFxuICAgIExpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXJbXCJMRkdfTXVsdGlQb2x5Z29uXCJdID0gXCJtdWx0aVBvbHlnb25cIjtcbiAgICAvLyBcbiAgICBMaW5lYXJGbG9hdEdlb21ldHJ5TWFya2VyW1wiTEZHX011bHRpTGluZVwiXSA9IFwibXVsdGlMaW5lXCI7XG4gICAgLy8gXG4gICAgTGluZWFyRmxvYXRHZW9tZXRyeU1hcmtlcltcIkxGR19NdWx0aVBvaW50XCJdID0gXCJtdWx0aVBvaW50XCI7XG4gICAgLy8gXG4gICAgTGluZWFyRmxvYXRHZW9tZXRyeU1hcmtlcltcIkxGR19TdGFydE9iamVjdFwiXSA9IFwic3RhcnRPYmplY3RcIjtcbiAgICAvLyBcbiAgICBMaW5lYXJGbG9hdEdlb21ldHJ5TWFya2VyW1wiTEZHX1N0YXJ0UG9seWdvblwiXSA9IFwic3RhcnRQb2x5Z29uXCI7XG4gICAgLy8gXG4gICAgTGluZWFyRmxvYXRHZW9tZXRyeU1hcmtlcltcIkxGR19TdGFydExpbmVcIl0gPSBcInN0YXJ0TGluZVwiO1xuICAgIC8vIFxuICAgIExpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXJbXCJMRkdfRW5kR2VvbWV0cnlcIl0gPSBcImVuZEdlb21ldHJ5XCI7XG59KShMaW5lYXJGbG9hdEdlb21ldHJ5TWFya2VyID0gZXhwb3J0cy5MaW5lYXJGbG9hdEdlb21ldHJ5TWFya2VyIHx8IChleHBvcnRzLkxpbmVhckZsb2F0R2VvbWV0cnlNYXJrZXIgPSB7fSkpO1xuLy8gRW51bWVyYXRpb24gZm9yIGRhdGEgYWxlcnQgdHlwZXMuXG52YXIgRGF0YUFsZXJ0VHlwZTtcbihmdW5jdGlvbiAoRGF0YUFsZXJ0VHlwZSkge1xuICAgIC8vIFxuICAgIERhdGFBbGVydFR5cGVbXCJEYXRhUHJlc2VudFwiXSA9IFwiZGF0YS1wcmVzZW50XCI7XG4gICAgLy8gXG4gICAgRGF0YUFsZXJ0VHlwZVtcIkNvbnN0Q29tcGFyaXNvblwiXSA9IFwiY29uc3QtY29tcGFyaXNvblwiO1xufSkoRGF0YUFsZXJ0VHlwZSA9IGV4cG9ydHMuRGF0YUFsZXJ0VHlwZSB8fCAoZXhwb3J0cy5EYXRhQWxlcnRUeXBlID0ge30pKTtcbi8vIEVudW1lcmF0aW9uIGZvciB2YWxpZCBvcGVyYXRpb25zIGluIGRhdGEgYWxlcnQgY29uZGl0aW9uc1xudmFyIERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGU7XG4oZnVuY3Rpb24gKERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGUpIHtcbiAgICAvLyBcbiAgICBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlW1wiR3JlYXRlclRoYW5cIl0gPSBcImdyZWF0ZXItdGhhblwiO1xuICAgIC8vIFxuICAgIERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGVbXCJHcmVhdGVyVGhhbkVxdWFsXCJdID0gXCJncmVhdGVyLXRoYW4tZXF1YWxcIjtcbiAgICAvLyBcbiAgICBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlW1wiRXF1YWxzXCJdID0gXCJlcXVhbHNcIjtcbiAgICAvLyBcbiAgICBEYXRhQWxlcnRDb25kaXRpb25PcGVyYXRpb25UeXBlW1wiTGVzc1RoYW5cIl0gPSBcImxlc3MtdGhhblwiO1xuICAgIC8vIFxuICAgIERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGVbXCJMZXNzVGhhbkVxdWFsXCJdID0gXCJsZXNzLXRoYW4tZXF1YWxcIjtcbn0pKERhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGUgPSBleHBvcnRzLkRhdGFBbGVydENvbmRpdGlvbk9wZXJhdGlvblR5cGUgfHwgKGV4cG9ydHMuRGF0YUFsZXJ0Q29uZGl0aW9uT3BlcmF0aW9uVHlwZSA9IHt9KSk7XG4vLyBFbnVtZXJhdGlvbiBmb3IgbW9kZXMgdGhlIGRhdGEgYWxlcnQgZGlhbG9nIGNvdWxkIGJlIGluXG52YXIgRGF0YUFsZXJ0RGlhbG9nTW9kZTtcbihmdW5jdGlvbiAoRGF0YUFsZXJ0RGlhbG9nTW9kZSkge1xuICAgIC8vIFxuICAgIERhdGFBbGVydERpYWxvZ01vZGVbXCJDcmVhdGVcIl0gPSBcImNyZWF0ZVwiO1xuICAgIC8vIFxuICAgIERhdGFBbGVydERpYWxvZ01vZGVbXCJFZGl0XCJdID0gXCJlZGl0XCI7XG59KShEYXRhQWxlcnREaWFsb2dNb2RlID0gZXhwb3J0cy5EYXRhQWxlcnREaWFsb2dNb2RlIHx8IChleHBvcnRzLkRhdGFBbGVydERpYWxvZ01vZGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW51bXMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9nZW4tc3JjL3ByZXNsYXllci9FbnVtcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBQYXJhbXNfMSA9IHJlcXVpcmUoXCIuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9QYXJhbXNcIik7XG52YXIgQWN0aXZlTWFya3NEYXRhQ29udmVydGVyXzEgPSByZXF1aXJlKFwiLi9BY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXJcIik7XG52YXIgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJfMSA9IHJlcXVpcmUoXCIuL0FwaVRvUHJlc0xheWVyQ29udmVydGVyXCIpO1xudmFyIEZpbHRlcnNDb252ZXJ0ZXJfMSA9IHJlcXVpcmUoXCIuL0ZpbHRlcnNDb252ZXJ0ZXJcIik7XG52YXIgTWFwcGluZ1JlZ2lzdHJ5XzEgPSByZXF1aXJlKFwiLi9NYXBwaW5nUmVnaXN0cnlcIik7XG52YXIgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXJfMSA9IHJlcXVpcmUoXCIuL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyXCIpO1xudmFyIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEgPSByZXF1aXJlKFwiLi9QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlclwiKTtcbnZhciBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlcl8xID0gcmVxdWlyZShcIi4vVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXJcIik7XG4vKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xudmFyIGlkID0gZnVuY3Rpb24gKGluUGFyYW0pIHsgcmV0dXJuIGluUGFyYW07IH07XG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIHBhcmFtZXRlcnMgbWFwcGluZ3MgYmFzZWQgb24gdGhlIFZlcnNpb25OdW1iZXIgb2YgdGhlIEFwaVxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5XG4gKi9cbnZhciBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5KCkge1xuICAgIH1cbiAgICBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5LmNyZWF0ZVByZXNMYXllclRvQXBpUGFyYW1SZWdpc3RyeSA9IGZ1bmN0aW9uICh2ZXJzaW9uTnVtYmVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnkoKTtcbiAgICAgICAgLy8gVE9ETyAtIGNoZWNrIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQgY29uc3RydWN0IGFwcHJvcHJpYXRlIGNvbnZlcnNpb25zXG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuQWRkSW5Mb2NhdG9yLCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkxvY2F0b3IsIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEFkZEluTG9jYXRvcik7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuQWRkSW5Cb290c3RyYXBJbmZvLCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkJvb3RzdHJhcEluZm8sIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydEFkZEluQm9vdHN0cmFwSW5mbyk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ0RhdGFUYWJsZSwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ0RhdGFUYWJsZSwgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXJfMS5VbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5idWlsZFVuZGVybHlpbmdEYXRhVGFibGUuYmluZCh1bmRlZmluZWQsIGZhbHNlKSk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ0RhdGFUYWJsZSwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ1N1bW1hcnlEYXRhVGFibGUsIFVuZGVybHlpbmdEYXRhQ29udmVydGVyXzEuVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRVbmRlcmx5aW5nRGF0YVRhYmxlLmJpbmQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuVW5kZXJseWluZ0RhdGFUYWJsZSwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRGF0YVNvdXJjZURhdGFUYWJsZSwgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXJfMS5VbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5idWlsZFVuZGVybHlpbmdEYXRhVGFibGUuYmluZCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihQYXJhbXNfMS5QYXJhbWV0ZXJJZC5GaWVsZENhcHRpb24sIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpZWxkTmFtZSwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFBhcmFtc18xLlBhcmFtZXRlcklkLlNlbGVjdGlvbkRhdGEsIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlNlbGVjdGVkRGF0YSwgQWN0aXZlTWFya3NEYXRhQ29udmVydGVyXzEuQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLmJ1aWxkU2VsZWN0ZWREYXRhVGFibGUpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFBhcmFtc18xLlBhcmFtZXRlcklkLkhpZ2hsaWdodGVkRGF0YSwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuSGlnaGxpZ2h0ZWREYXRhLCBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXJfMS5BY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuYnVpbGRIaWdobGlnaHRlZERhdGFUYWJsZSk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuQWRkSW5TZXR0aW5nc0luZm8sIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkFkZEluU2V0dGluZ3NJbmZvLCBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcl8xLlByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRBZGRJblNldHRpbmdzSW5mbyk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuV29ya3NoZWV0LCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Xb3Jrc2hlZXROYW1lLCBpZCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuUGFyYW1ldGVyQ3RybHMsIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckluZm9zLCBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlcl8xLlBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXJMaXN0KTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihQYXJhbXNfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJDdHJsLCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJJbmZvLCBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlcl8xLlBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXIpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFBhcmFtc18xLlBhcmFtZXRlcklkLkRhdGFTY2hlbWEsIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkRhdGFTY2hlbWEsIFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydERhdGFTY2hlbWEpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFBhcmFtc18xLlBhcmFtZXRlcklkLkZpbHRlcnNJbmZvLCBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Xb3Jrc2hlZXRGaWx0ZXJzLCBGaWx0ZXJzQ29udmVydGVyXzEuRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyc1ByZXNNb2RlbCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oUGFyYW1zXzEuUGFyYW1ldGVySWQuQ2F0ZWdvcmljYWxEb21haW4sIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkNhdGVnb3JpY2FsRG9tYWluLCBGaWx0ZXJzQ29udmVydGVyXzEuRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0Q2F0ZWdvcmljYWxEb21haW4pO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKFBhcmFtc18xLlBhcmFtZXRlcklkLlF1YW50aXRhdGl2ZURvbWFpbiwgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUXVhbnRpdGF0aXZlRG9tYWluLCBGaWx0ZXJzQ29udmVydGVyXzEuRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0UXVhbnRpdGF0aXZlRG9tYWluKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuY3JlYXRlQXBpVG9QcmVzTGF5ZXJQYXJhbVJlZ2lzdHJ5ID0gZnVuY3Rpb24gKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSgpO1xuICAgICAgICAvLyBUT0RPIC0gY2hlY2sgdGhlIHZlcnNpb24gbnVtYmVyIGFuZCBjb25zdHJ1Y3QgYXBwcm9wcmlhdGUgY29udmVyc2lvbnNcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5BZGRJbkxvY2F0b3IsIFBhcmFtc18xLlBhcmFtZXRlcklkLkFkZEluTG9jYXRvciwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJfMS5BcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0QWRkSW5Mb2NhdG9yKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TZXR0aW5nc1ZhbHVlcywgUGFyYW1zXzEuUGFyYW1ldGVySWQuQWRkSW5TZXR0aW5ncywgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLklnbm9yZUFsaWFzZXMsIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5JZ25vcmVTZWxlY3Rpb24sIFBhcmFtc18xLlBhcmFtZXRlcklkLklnbm9yZVNlbGVjdGlvbiwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkluY2x1ZGVBbGxDb2x1bW5zLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5JbmNsdWRlQWxsQ29sdW1ucywgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLk1heFJvd3MsIFBhcmFtc18xLlBhcmFtZXRlcklkLk1heFJvd3MsIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZCwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmlzdWFsSURQTSwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJfMS5BcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkNvbHVtbnNUb0luY2x1ZGUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkRGlzcGxheU5hbWVzLCBpZCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGROYW1lLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5RdWFsaWZpZWRGaWVsZENhcHRpb24sIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWx0ZXJWYWx1ZXMsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpbHRlckFsaWFzZXMsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlcyk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyVXBkYXRlVHlwZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRmlsdGVyVXBkYXRlVHlwZSwgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXJfMS5BcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0RmlsdGVyVHlwZSk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuSXNFeGNsdWRlTW9kZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRXhjbHVkZSwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclJhbmdlTWluLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5SYW5nZU1pbiwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclJhbmdlTWF4LCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5SYW5nZU1heCwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclJhbmdlTnVsbE9wdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuSW5jbHVkZWQsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuQ29udmVydE51bGxPcHRpb24pO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpZWxkSWQsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkTmFtZSwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkRvbWFpblR5cGUsIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpbHRlckRvbWFpblR5cGUsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuQ29udmVydEZpbHRlckRvbWFpblR5cGUpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5Xb3Jrc2hlZXQsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkVG9Xb3Jrc2hlZXQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5EYXNoYm9hcmQsIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkVG9EYXNoYm9hcmQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckNhcHRpb24sIFBhcmFtc18xLlBhcmFtZXRlcklkLkZpZWxkQ2FwdGlvbiwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuRmllbGROYW1lU3RyaW5nLCBpZCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuUGFyYW1ldGVyRmllbGROYW1lLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5HbG9iYWxGaWVsZE5hbWUsIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJWYWx1ZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuVmFsdWVTdHIsIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TaGVldFBhdGgsIFBhcmFtc18xLlBhcmFtZXRlcklkLlNoZWV0UGF0aFBNLCBmdW5jdGlvbiAocG0pIHsgcmV0dXJuIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXzEuQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFNoZWV0UGF0aChwbSk7IH0pO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlNlbGVjdGlvbiwgUGFyYW1zXzEuUGFyYW1ldGVySWQuU2VsZWN0aW9uLCBpZCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuU2VsZWN0aW9uVXBkYXRlVHlwZSwgUGFyYW1zXzEuUGFyYW1ldGVySWQuU2VsZWN0aW9uVXBkYXRlVHlwZSwgaWQpO1xuICAgICAgICByZXN1bHQuYWRkUmVnaXN0cmF0aW9uKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIFBhcmFtc18xLlBhcmFtZXRlcklkLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzLCBpZCk7XG4gICAgICAgIHJlc3VsdC5hZGRSZWdpc3RyYXRpb24oYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRGltVmFsU2VsZWN0aW9uTW9kZWxzLCBQYXJhbXNfMS5QYXJhbWV0ZXJJZC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHMsIGlkKTtcbiAgICAgICAgLy8gVGhlIHBhcmFtIFBMLkRhdGFzb3VyY2UgaXMgdGhlIElEIHN0cmluZyBmb3IgYSBzcGVjaWZpYyBkYXRhc291cmNlLCBub3QgdG8gYmUgY29uZnVzZWRcbiAgICAgICAgLy8gd2l0aCB0aGUgcGFyYW0gUEwuRGF0YVNvdXJjZSwgd2hpY2ggaXMgdGhlIGZ1bGwgcHJlcyBtb2RlbCBmb3IgYSBkYXRhIHNvdXJjZS5cbiAgICAgICAgcmVzdWx0LmFkZFJlZ2lzdHJhdGlvbihhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EYXRhU291cmNlSWQsIFBhcmFtc18xLlBhcmFtZXRlcklkLkRhdGFzb3VyY2UsIGlkKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBQYXJhbWV0ZXJNYXBwaW5nUmVnaXN0cnlGYWN0b3J5O1xufSgpKTtcbmV4cG9ydHMuUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeSA9IFBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3Rvcnk7XG52YXIgQXBpVG9QcmVzTGF5ZXJNYXBwaW5nUmVnaXN0cnkgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gQXBpVG9QcmVzTGF5ZXJNYXBwaW5nUmVnaXN0cnk7XG59KE1hcHBpbmdSZWdpc3RyeV8xLk1hcHBpbmdSZWdpc3RyeSkpO1xuZXhwb3J0cy5BcGlUb1ByZXNMYXllck1hcHBpbmdSZWdpc3RyeSA9IEFwaVRvUHJlc0xheWVyTWFwcGluZ1JlZ2lzdHJ5O1xudmFyIFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnksIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnkoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIFByZXNMYXllclRvQXBpTWFwcGluZ1JlZ2lzdHJ5O1xufShNYXBwaW5nUmVnaXN0cnlfMS5NYXBwaW5nUmVnaXN0cnkpKTtcbmV4cG9ydHMuUHJlc0xheWVyVG9BcGlNYXBwaW5nUmVnaXN0cnkgPSBQcmVzTGF5ZXJUb0FwaU1hcHBpbmdSZWdpc3RyeTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhcmFtZXRlck1hcHBpbmdSZWdpc3RyeUZhY3RvcnkuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvUGFyYW1ldGVyTWFwcGluZ1JlZ2lzdHJ5RmFjdG9yeS5qc1xuICoqIG1vZHVsZSBpZCA9IDIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgRW51bU1hcHBpbmdzXzEgPSByZXF1aXJlKFwiLi9FbnVtTWFwcGluZ3NcIik7XG52YXIgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXJfMSA9IHJlcXVpcmUoXCIuL1VuZGVybHlpbmdEYXRhQ29udmVydGVyXCIpO1xuLyoqXG4gKiBDb250YWlucyBsb2dpYyBmb3IgY29udmVydGluZyB0aGUgYWN0aXZlIG1hcmtzIG9uIGEgdml6IGludG8gdGhlIEFQSSBwcmVzIG1vZGVscy5cbiAqIEluIHRoZSBvcmlnaW5hbCBwcm9qZWN0LCBtb3N0IG9mIHRoaXMgd2FzIGluIHRoZSBQcm9jZXNzQWN0aXZlTWFya3MgZnVuY3Rpb25cbiAqL1xudmFyIEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQWN0aXZlTWFya3NEYXRhQ29udmVydGVyKCkge1xuICAgIH1cbiAgICBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuYnVpbGRTZWxlY3RlZERhdGFUYWJsZSA9IGZ1bmN0aW9uIChzZWxlY3RlZERhdGEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEFjdGl2ZU1hcmtzTGlzdChzZWxlY3RlZERhdGEuZGF0YURpY3Rpb25hcnksIHNlbGVjdGVkRGF0YS52aXpEYXRhKVxuICAgICAgICB9O1xuICAgIH07XG4gICAgQWN0aXZlTWFya3NEYXRhQ29udmVydGVyLmJ1aWxkSGlnaGxpZ2h0ZWREYXRhVGFibGUgPSBmdW5jdGlvbiAoaGlnaGxpZ2h0ZWREYXRhKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiBBY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuYnVpbGRBY3RpdmVNYXJrc0xpc3QoaGlnaGxpZ2h0ZWREYXRhLmRhdGFEaWN0aW9uYXJ5LCBoaWdobGlnaHRlZERhdGEudml6RGF0YSlcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5idWlsZEFjdGl2ZU1hcmtzTGlzdCA9IGZ1bmN0aW9uIChkYXRhRGljdGlvbmFyeSwgdml6RGF0YSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlsdGVyIHRvIGZpbmQgYWxsIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBpbiB0aGlzIHBhbmVcbiAgICAgICAgICAgIHZhciBjb2x1bW5zID0gdml6RGF0YS5wYW5lQ29sdW1uc0RhdGEudml6RGF0YUNvbHVtbnMuZmlsdGVyKGZ1bmN0aW9uICh2aXpEYXRhQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGlzIGNvbHVtbiBtYXR0ZXJzIGZvciB0aGUgY3VycmVudCBwYW5lIGlmIHRoaXMgcGFuZSdzIGluZGV4IGlzIGluIHBhbmVJbmRpY2VzXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZpekRhdGFDb2x1bW4ucGFuZUluZGljZXMuaW5kZXhPZihpKSA+IC0xO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBtYXBwaW5nIG9mIHdoaWNoIGluZGV4IGluIHRoZSBkYXRhIGRpY3Rpb25hcnkgb3VyIGNvbHVtbnMgYXJlIGluXG4gICAgICAgICAgICB2YXIgY29sdW1uSW5kaWNlcyA9IGNvbHVtbnMubWFwKGZ1bmN0aW9uICh2aXpEYXRhQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIGNvbHVtbkluZGV4IGlzIGluIHRoZSBzYW1lIHBvc2l0aW9uIGFzIHRoZSBwYW5lSW5kZXhcbiAgICAgICAgICAgICAgICB2YXIgcGFuZUluZGV4ID0gdml6RGF0YUNvbHVtbi5wYW5lSW5kaWNlcy5pbmRleE9mKGkpO1xuICAgICAgICAgICAgICAgIHZhciBjb2x1bW5JbmRleCA9IHZpekRhdGFDb2x1bW4uY29sdW1uSW5kaWNlc1twYW5lSW5kZXhdO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5JbmRleDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBkYXRhIGZvciB0aGUgcGFuZSB3ZSBhcmUgcHJvY2Vzc2luZ1xuICAgICAgICAgICAgdmFyIHZpelBhbmUgPSB2aXpEYXRhLnBhbmVDb2x1bW5zRGF0YS5wYW5lQ29sdW1uc0xpc3RbaV07XG4gICAgICAgICAgICBpZiAodml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGggIT09IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgZGF0YSB0YWJsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgICAgIHZhciByb3dzID0gbmV3IEFycmF5KCk7XG4gICAgICAgICAgICAvLyBDb2x1bW4gMCB3aWxsIGJlIHRoZSB0dXBsZSBpZCBjb2x1bW4uIFdlIGNhbiB1c2UgdGhpcyBhcyBhIGNvdW50ZXIgZm9yIGhvdyBtYW55IHJvd3Mgd2UgaGF2ZVxuICAgICAgICAgICAgdmFyIHR1cGxlSWRzID0gdml6UGFuZS52aXpQYW5lQ29sdW1uc1swXS50dXBsZUlkcztcbiAgICAgICAgICAgIHZhciBtYXJrcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgdHVwbGVJbmRleCA9IDA7IHR1cGxlSW5kZXggPCB0dXBsZUlkcy5sZW5ndGg7IHR1cGxlSW5kZXgrKykge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gTmVlZCB0byByZXZhbHVhdGUgdGhlIHBsYWNlIG9mIHRoaXMgbG9naWMuIElmIGl0IHR1cm5zIG91dCB0aGF0IHdlIG5lZWQgYSBzZXBhcmF0ZSBjb21tYW5kXG4gICAgICAgICAgICAgICAgLy8gY2FsbCB0byBnZXQgdGhlIG1hcmtzIGluZm8sIHRoZW4gdGhpcyBsb2dpYyBzaG91bGQgbm90IGJlIGhlcmUgYnV0IGluc3RlYWQgaW4gYSBsYXllciBhYm92ZSBzb21ld2hlcmVcbiAgICAgICAgICAgICAgICB2YXIgbWFyayA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuTWFya1R5cGUuQmFyLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JlZCcsXG4gICAgICAgICAgICAgICAgICAgIHR1cGxlSWQ6IHR1cGxlSWRzW3R1cGxlSW5kZXhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgbWFya3MucHVzaChtYXJrKTtcbiAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIGhhdmUgMSBsZXNzIHZhbHVlIGluIHRoaXMgcm93IHNpbmNlIHRoZXJlJ3MgdGhlIHR1cGxlSWQgY29sdW1uXG4gICAgICAgICAgICAgICAgdmFyIGNlbGxzID0gbmV3IEFycmF5KHZpelBhbmUudml6UGFuZUNvbHVtbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDEgLyogc2tpcCB0aGUgZmlyc3Qgd2hpY2ggaXMgdHVwbGUgaWRzICovOyBqIDwgdml6UGFuZS52aXpQYW5lQ29sdW1ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAvLyBOZXh0LCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29sdW1uIHdlIGFyZSByZWFkaW5nIGRhdGEgZm9yXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbkluZGljZXNbal1dO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdml6UGFuZUNvbHVtbkRhdGEgPSB2aXpQYW5lLnZpelBhbmVDb2x1bW5zW2pdO1xuICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmUgdGhlIGhlYWRlciB3aGVuIHdlIGFyZSBwcm9jZXNzaW5nIHRoZSBmaXJzdCByb3dcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR1cGxlSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWFkZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IEVudW1NYXBwaW5nc18xLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQoY29sdW1uLmRhdGFUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNvbHVtbi5mbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZmVyZW5jZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGogLSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQ2FwdGlvbjogY29sdW1uLmZpZWxkQ2FwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaChoZWFkZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFVuZGVybHlpbmdEYXRhQ29udmVydGVyXzEuVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIubG9va3VwVmFsdWVGcm9tRGljdGlvbmFyeShkYXRhRGljdGlvbmFyeSwgY29sdW1uLmRhdGFUeXBlLCB2aXpQYW5lQ29sdW1uRGF0YS52YWx1ZUluZGljZXNbdHVwbGVJbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWxpYXNWYWx1ZSA9IFVuZGVybHlpbmdEYXRhQ29udmVydGVyXzEuVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIubG9va3VwVmFsdWVGcm9tRGljdGlvbmFyeShkYXRhRGljdGlvbmFyeSwgY29sdW1uLmRhdGFUeXBlLCB2aXpQYW5lQ29sdW1uRGF0YS5hbGlhc0luZGljZXNbdHVwbGVJbmRleF0pIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkVmFsdWUgPSBhbGlhc1ZhbHVlOyAvLyBUT0RPIC0gRmlndXJlIG91dCBob3cgdG8gdXNlIHRoZSBmb3JtYXRTdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhQ2VsbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogYWxpYXNWYWx1ZVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgb3VyIGNlbGwgdG8gdGhpcyByb3dcbiAgICAgICAgICAgICAgICAgICAgY2VsbHNbaiAtIDFdID0gZGF0YUNlbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvd3MucHVzaChjZWxscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGF0YVRhYmxlID0ge1xuICAgICAgICAgICAgICAgIGRhdGFUYWJsZTogcm93cyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG1hcmtzOiBtYXJrc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGRhdGFUYWJsZSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRoZSBkYXRhIG1vZGVsIGZvciB0aGUgVml6RGF0YVByZXNNb2RlbCBpcyBhIGxpdHRsZSBzdHJhbmdlLCBzbyB0aGlzIHBhcnNpbmcgdGFrZXMgc29tZSB0aW1lIHRvIGZpZ3VyZSBvdXQuXG4gICAgICAgIC8vIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSBwYW5lcyBvZiBkYXRhLCBzbyB3ZSBtdXN0IGdvIHRocm91Z2ggdGhlbSBvbmUgYXQgYSB0aW1lIHRvIGNyZWF0ZSBkYXRhIHRhYmxlc1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZpekRhdGEucGFuZUNvbHVtbnNEYXRhLnBhbmVDb2x1bW5zTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2xvb3BfMShpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlcjtcbn0oKSk7XG5leHBvcnRzLkFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlciA9IEFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFjdGl2ZU1hcmtzRGF0YUNvbnZlcnRlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9BY3RpdmVNYXJrc0RhdGFDb252ZXJ0ZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRW51bXMgPSByZXF1aXJlKFwiLi4vLi4vZ2VuLXNyYy9wcmVzbGF5ZXIvRW51bXNcIik7XG52YXIgRW51bU1hcHBpbmdzXzEgPSByZXF1aXJlKFwiLi9FbnVtTWFwcGluZ3NcIik7XG4vKipcbiAqIENvbnRhaW5zIHN0YXRpYyBoZWxwZXIgbWV0aG9kcyBmb3IgY29udmVydGluZyBmcm9tIGFuIHVuZGVybHlpbmcgZGF0YSBwcmVzIG1vZGVsIGludG8gdGhlIGFwaSByZXByZXNlbnRhdGlvbi5cbiAqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgYSBkaXJlY3QgcG9ydCBmcm9tIEFwaVVuZGVybHlpbmdEYXRhSGFuZGxlci5jc1xuICogaHR0cHM6Ly9vcGVuZ3Jvay9zb3VyY2UveHJlZi90ZWFtc19uZWFyL3dvcmtncm91cC92cWx3ZWIvc2NyaXB0c2hhcnAvc3JjL1VJL0FwaS9BcGlVbmRlcmx5aW5nRGF0YUhhbmRsZXIuY3NcbiAqL1xudmFyIFVuZGVybHlpbmdEYXRhQ29udmVydGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlcigpIHtcbiAgICB9XG4gICAgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIubG9va3VwVmFsdWVGcm9tRGljdGlvbmFyeSA9IGZ1bmN0aW9uIChkYXRhRGljdGlvbmFyeSwgZHQsIGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIC8vIHBlciBjbCAyODAzOTYgLyBidWd6aWQgODExOTcgbmVnYXRpdmUgZGF0YSB2YWx1ZSBpbmRleCBtZWFucyB0aGF0IGl0IGlzIHNwZWNpYWxcbiAgICAgICAgICAgIGR0ID0gRW51bXMuRGF0YVR5cGUuRFRfU1RSSU5HO1xuICAgICAgICAgICAgaW5kZXggPSAtaW5kZXggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICB2YXIgcmF3VmFsdWUgPSBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5nZXRSYXdWYWx1ZShkYXRhRGljdGlvbmFyeSwgZHQsIGluZGV4KTtcbiAgICAgICAgaWYgKHJhd1ZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByYXdWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuZ2V0UmF3VmFsdWUgPSBmdW5jdGlvbiAoZGF0YURpY3Rpb25hcnksIGR0LCBpbmRleCkge1xuICAgICAgICBpZiAoIWRhdGFEaWN0aW9uYXJ5LmRhdGFTZWdtZW50cykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IE9iamVjdC5rZXlzKGRhdGFEaWN0aW9uYXJ5LmRhdGFTZWdtZW50cyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gX2FbX2ldO1xuICAgICAgICAgICAgdmFyIGRhdGFTZWdtZW50ID0gZGF0YURpY3Rpb25hcnkuZGF0YVNlZ21lbnRzW2tleV07XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IDAsIF9jID0gZGF0YVNlZ21lbnQuZGF0YUNvbHVtbnM7IF9iIDwgX2MubGVuZ3RoOyBfYisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGFDb2x1bW4gPSBfY1tfYl07XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhQ29sdW1uIHx8IGRhdGFDb2x1bW4uZGF0YVR5cGUgIT09IGR0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBkYXRhQ29sdW1uLmRhdGFWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhQ29sdW1uLmRhdGFWYWx1ZXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmRleCAtPSBkYXRhQ29sdW1uLmRhdGFWYWx1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGREYXRhVGFibGUgPSBmdW5jdGlvbiAoZGF0YURpY3Rpb25hcnksIGNvbHVtbnMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGRhdGFUYWJsZTogVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRUYWJsZShkYXRhRGljdGlvbmFyeSwgY29sdW1ucyksXG4gICAgICAgICAgICBoZWFkZXJzOiBjb2x1bW5zLm1hcChmdW5jdGlvbiAoYywgaSkgeyByZXR1cm4gVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIuYnVpbGRDb2x1bW5Nb2RlbChjLCBpKTsgfSlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVW5kZXJseWluZ0RhdGFUYWJsZSA9IGZ1bmN0aW9uIChpc1N1bW1hcnksIHVuZGVybHlpbmdEYXRhVGFibGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGRhdGE6IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkRGF0YVRhYmxlKHVuZGVybHlpbmdEYXRhVGFibGUuZGF0YURpY3Rpb25hcnksIHVuZGVybHlpbmdEYXRhVGFibGUudW5kZXJseWluZ0RhdGFUYWJsZUNvbHVtbnMpLFxuICAgICAgICAgICAgaXNTdW1tYXJ5OiBpc1N1bW1hcnlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkQWN0aXZlTWFya3NUYWJsZSA9IGZ1bmN0aW9uIChkYXRhRGljdGlvbmFyeSwgdml6RGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9O1xuICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkQ29sdW1uTW9kZWwgPSBmdW5jdGlvbiAoY29sdW1uLCBpbmRleCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YVR5cGU6IEVudW1NYXBwaW5nc18xLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQoY29sdW1uLmRhdGFUeXBlKSxcbiAgICAgICAgICAgIGZpZWxkTmFtZTogY29sdW1uLmZuLFxuICAgICAgICAgICAgZmllbGRDYXB0aW9uOiBjb2x1bW4uZmllbGRDYXB0aW9uLFxuICAgICAgICAgICAgaXNSZWZlcmVuY2VkOiAhIWNvbHVtbi5pc1JlZmVyZW5jZWQsXG4gICAgICAgICAgICBpbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmJ1aWxkVGFibGUgPSBmdW5jdGlvbiAoZGF0YURpY3Rpb25hcnksIGNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJvd0NvdW50ID0gY29sdW1uc1swXS5mb3JtYXRWYWxJZHhzLmxlbmd0aDtcbiAgICAgICAgdmFyIGNvbHVtbkNvdW50ID0gY29sdW1ucy5sZW5ndGg7XG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkocm93Q291bnQpO1xuICAgICAgICAvLyBJbml0aWFsaXplIGFsbCBvZiBvdXIgcm93c1xuICAgICAgICBmb3IgKHZhciByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93Q291bnQ7IHJvd0luZGV4KyspIHtcbiAgICAgICAgICAgIHJlc3VsdFtyb3dJbmRleF0gPSBuZXcgQXJyYXkoY29sdW1uQ291bnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdvIHRocm91Z2ggY29sdW1uLWJ5LWNvbHVtbiBhbmQgY29udmVydCB0aGUgdmFsdWVzXG4gICAgICAgIGZvciAodmFyIGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXggPCBjb2x1bW5Db3VudDsgY29sdW1uSW5kZXgrKykge1xuICAgICAgICAgICAgdmFyIGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSW5kZXhdO1xuICAgICAgICAgICAgZm9yICh2YXIgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd0NvdW50OyByb3dJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXIubG9va3VwVmFsdWVGcm9tRGljdGlvbmFyeShkYXRhRGljdGlvbmFyeSwgRW51bXMuRGF0YVR5cGUuRFRfU1RSSU5HLCBjb2x1bW4uZm9ybWF0VmFsSWR4c1tyb3dJbmRleF0pO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zvcm1hdHRlZFZhbHVlIHdhcyBudWxsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFVuZGVybHlpbmdEYXRhQ29udmVydGVyLmxvb2t1cFZhbHVlRnJvbURpY3Rpb25hcnkoZGF0YURpY3Rpb25hcnksIGNvbHVtbi5kYXRhVHlwZSwgY29sdW1uLnZhbHVlSW5kaWNlc1tyb3dJbmRleF0pLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJlc3VsdFtyb3dJbmRleF1bY29sdW1uSW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBVbmRlcmx5aW5nRGF0YUNvbnZlcnRlcjtcbn0oKSk7XG5leHBvcnRzLlVuZGVybHlpbmdEYXRhQ29udmVydGVyID0gVW5kZXJseWluZ0RhdGFDb252ZXJ0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1VbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9VbmRlcmx5aW5nRGF0YUNvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuL0VudW1NYXBwaW5nc1wiKTtcbi8qKlxuICogQ2xhc3MgY29udGFpbmluZyBoZWxwZXIgbWV0aG9kcyBmb3IgY29udmVydGluZyBmcm9tIEFwaVByZXNNb2RlbHMgdG8gdGhlaXIgUHJlc0xheWVyIGVxdWl2YWxlbnRzXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIEFwaVRvUHJlc0xheWVyQ29udmVydGVyXG4gKi9cbnZhciBBcGlUb1ByZXNMYXllckNvbnZlcnRlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIoKSB7XG4gICAgfVxuICAgIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRTaGVldFBhdGggPSBmdW5jdGlvbiAoYXBpU2hlZXRQYXRoKSB7XG4gICAgICAgIGlmICghYXBpU2hlZXRQYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NoZWV0UGF0aCBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgICAgICBzaGVldE5hbWU6IGFwaVNoZWV0UGF0aC5zaGVldE5hbWUsXG4gICAgICAgICAgICBpc0Rhc2hib2FyZDogYXBpU2hlZXRQYXRoLmlzRGFzaGJvYXJkLFxuICAgICAgICAgICAgc3Rvcnlib2FyZDogYXBpU2hlZXRQYXRoLnN0b3J5Ym9hcmQgfHwgJycsXG4gICAgICAgICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVNoZWV0UGF0aC5mbGlwYm9hcmRab25lSUQgfHwgMCxcbiAgICAgICAgICAgIHN0b3J5UG9pbnRJZDogYXBpU2hlZXRQYXRoLnN0b3J5UG9pbnRJRCB8fCAwLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydEFkZEluTG9jYXRvciA9IGZ1bmN0aW9uIChhcGlBZGRJbkxvY2F0b3IpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGFkZEluSW5zdGFuY2VJZDogYXBpQWRkSW5Mb2NhdG9yLmluc3RhbmNlSWQsXG4gICAgICAgICAgICBzaGVldFBhdGg6IEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRTaGVldFBhdGgoYXBpQWRkSW5Mb2NhdG9yLmRhc2hib2FyZFBhdGgpXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQgPSBmdW5jdGlvbiAoYXBpVmlzdWFsaWQpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHdvcmtzaGVldDogYXBpVmlzdWFsaWQud29ya3NoZWV0LFxuICAgICAgICAgICAgZGFzaGJvYXJkOiBhcGlWaXN1YWxpZC5kYXNoYm9hcmQsXG4gICAgICAgICAgICBzdG9yeWJvYXJkOiBhcGlWaXN1YWxpZC5zdG9yeWJvYXJkLFxuICAgICAgICAgICAgc3RvcnlQb2ludElkOiBhcGlWaXN1YWxpZC5zdG9yeVBvaW50SUQsXG4gICAgICAgICAgICBmbGlwYm9hcmRab25lSWQ6IGFwaVZpc3VhbGlkLmZsaXBib2FyZFpvbmVJRFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkVG9Xb3Jrc2hlZXQgPSBmdW5jdGlvbiAoYXBpVmlzdWFsSWQpIHtcbiAgICAgICAgcmV0dXJuIGFwaVZpc3VhbElkLndvcmtzaGVldDtcbiAgICB9O1xuICAgIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZFRvRGFzaGJvYXJkID0gZnVuY3Rpb24gKGFwaVZpc3VhbElkKSB7XG4gICAgICAgIHJldHVybiBhcGlWaXN1YWxJZC5kYXNoYm9hcmQgfHwgJyc7XG4gICAgfTtcbiAgICBBcGlUb1ByZXNMYXllckNvbnZlcnRlci5jb252ZXJ0RmlsdGVyVmFsdWVzID0gZnVuY3Rpb24gKGZpbHRlclZhbHVlcykge1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gcGxhdGZvcm0gY29kZSBleHBlY3RzIGFuIGVtcHR5IHN0cmluZyBmb3IgY2xlYXJpbmcgZmlsdGVyIHZhbHVlc1xuICAgICAgICAgICAgcmV0dXJuIFsnJ107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlcztcbiAgICB9O1xuICAgIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJUeXBlID0gZnVuY3Rpb24gKGZpbHRlclVwZGF0ZVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIEVudW1NYXBwaW5nc18xLkFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzLmZpbHRlclVwZGF0ZVR5cGUuY29udmVydChmaWx0ZXJVcGRhdGVUeXBlKTtcbiAgICB9O1xuICAgIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLkNvbnZlcnROdWxsT3B0aW9uID0gZnVuY3Rpb24gKG51bGxPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIEVudW1NYXBwaW5nc18xLkFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzLm51bGxPcHRpb24uY29udmVydChudWxsT3B0aW9uKTtcbiAgICB9O1xuICAgIEFwaVRvUHJlc0xheWVyQ29udmVydGVyLkNvbnZlcnRGaWx0ZXJEb21haW5UeXBlID0gZnVuY3Rpb24gKGZpbHRlckRvbWFpblR5cGUpIHtcbiAgICAgICAgcmV0dXJuIEVudW1NYXBwaW5nc18xLkFwaVRvUHJlc0xheWVyRW51bU1hcHBpbmdzLmZpbHRlckRvbWFpblR5cGUuY29udmVydChmaWx0ZXJEb21haW5UeXBlKTtcbiAgICB9O1xuICAgIHJldHVybiBBcGlUb1ByZXNMYXllckNvbnZlcnRlcjtcbn0oKSk7XG5leHBvcnRzLkFwaVRvUHJlc0xheWVyQ29udmVydGVyID0gQXBpVG9QcmVzTGF5ZXJDb252ZXJ0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcGlUb1ByZXNMYXllckNvbnZlcnRlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWNvcmUvbGliL3NyYy9tYXBwaW5ncy9BcGlUb1ByZXNMYXllckNvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgRW51bXNfMSA9IHJlcXVpcmUoXCIuLi8uLi9nZW4tc3JjL3ByZXNsYXllci9FbnVtc1wiKTtcbnZhciBFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuL0VudW1NYXBwaW5nc1wiKTtcbnZhciBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcl8xID0gcmVxdWlyZShcIi4vUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXJcIik7XG52YXIgRmlsdGVyc0NvbnZlcnRlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmlsdGVyc0NvbnZlcnRlcigpIHtcbiAgICB9XG4gICAgRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyc1ByZXNNb2RlbCA9IGZ1bmN0aW9uIChmaWx0ZXJQbXMpIHtcbiAgICAgICAgdmFyIGZpbHRlcnMgPSBbXTtcbiAgICAgICAgZmlsdGVyUG1zLmZvckVhY2goZnVuY3Rpb24gKGZpbHRlclBtKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGZpbHRlclBtLmZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEVudW1zXzEuRmlsdGVyVHlwZS5GTFRSX0NhdGVnb3JpY2FsOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcnMucHVzaChGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtc18xLkZpbHRlclR5cGUuRkxUUl9RdWFudGl0YXRpdmU6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFF1YW50aXRhdGl2ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBFbnVtc18xLkZpbHRlclR5cGUuRkxUUl9SZWxhdGl2ZURhdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlclByZXNNb2RlbChmaWx0ZXJQbSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgfTtcbiAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlclByZXNNb2RlbCA9IGZ1bmN0aW9uIChmaWx0ZXJQbSkge1xuICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZXMgPSBmaWx0ZXJQbS5jYXRlZ29yaWNhbEZpbHRlckluZm8uY2FwdGlvbmVkRmlsdGVyVmFsdWVMaXN0Lm1hcChmdW5jdGlvbiAoZmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJWYWx1ZVByZXNNb2RlbChmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZmlsdGVyID0ge1xuICAgICAgICAgICAgdmFsdWVzOiBzZWxlY3RlZFZhbHVlcyxcbiAgICAgICAgICAgIGlzRXhjbHVkZTogZmlsdGVyUG0uY2F0ZWdvcmljYWxGaWx0ZXJJbmZvLmV4Y2x1ZGUsXG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLFxuICAgICAgICAgICAgZmllbGRDYXB0aW9uOiBmaWx0ZXJQbS5maWVsZENhcHRpb24sXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGZpbHRlclBtLmZuLFxuICAgICAgICAgICAgdmlzdWFsSWQ6IFByZXNMYXllclRvQXBpQ29udmVydGVyXzEuUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXIuY29udmVydFZpc3VhbElkKGZpbHRlclBtLnZpc3VhbElkUHJlc01vZGVsKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH07XG4gICAgRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0UXVhbnRpdGF0aXZlRmlsdGVyUHJlc01vZGVsID0gZnVuY3Rpb24gKGZpbHRlclBtKSB7XG4gICAgICAgIHZhciBtaW5WYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclBtLnF1YW50aXRhdGl2ZUZpbHRlckluZm8uY2FwdGlvbmVkUmFuZ2VNaW4pO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJWYWx1ZVByZXNNb2RlbChmaWx0ZXJQbS5xdWFudGl0YXRpdmVGaWx0ZXJJbmZvLmNhcHRpb25lZFJhbmdlTWF4KTtcbiAgICAgICAgdmFyIGZpbHRlciA9IHtcbiAgICAgICAgICAgIGZpbHRlclR5cGU6IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclR5cGUuUmFuZ2UsXG4gICAgICAgICAgICBmaWVsZENhcHRpb246IGZpbHRlclBtLmZpZWxkQ2FwdGlvbixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmlsdGVyUG0uZm4sXG4gICAgICAgICAgICB2aXN1YWxJZDogUHJlc0xheWVyVG9BcGlDb252ZXJ0ZXJfMS5QcmVzTGF5ZXJUb0FwaUNvbnZlcnRlci5jb252ZXJ0VmlzdWFsSWQoZmlsdGVyUG0udmlzdWFsSWRQcmVzTW9kZWwpLFxuICAgICAgICAgICAgbWluOiBtaW5WYWx1ZSxcbiAgICAgICAgICAgIG1heDogbWF4VmFsdWUsXG4gICAgICAgICAgICBpbmNsdWRlTnVsbFZhbHVlczogRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0SW5jbHVkZWROdWxsVmFsdWVzKGZpbHRlclBtLnF1YW50aXRhdGl2ZUZpbHRlckluZm8uaW5jbHVkZWQpXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfTtcbiAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRSZWxhdGl2ZURhdGVGaWx0ZXJQcmVzTW9kZWwgPSBmdW5jdGlvbiAoZmlsdGVyUG0pIHtcbiAgICAgICAgdmFyIGFuY2hvckRhdGVWYWx1ZSA9IEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclBtLnJlbGF0aXZlRGF0ZUZpbHRlckluZm8uY2FwdGlvbmVkQW5jaG9yRGF0ZSk7XG4gICAgICAgIHZhciBmaWx0ZXIgPSB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICAgICAgICAgIGZpZWxkQ2FwdGlvbjogZmlsdGVyUG0uZmllbGRDYXB0aW9uLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWx0ZXJQbS5mbixcbiAgICAgICAgICAgIHZpc3VhbElkOiBQcmVzTGF5ZXJUb0FwaUNvbnZlcnRlcl8xLlByZXNMYXllclRvQXBpQ29udmVydGVyLmNvbnZlcnRWaXN1YWxJZChmaWx0ZXJQbS52aXN1YWxJZFByZXNNb2RlbCksXG4gICAgICAgICAgICBhbmNob3JEYXRlOiBhbmNob3JEYXRlVmFsdWUsXG4gICAgICAgICAgICBwZXJpb2RUeXBlOiBFbnVtTWFwcGluZ3NfMS5QcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KGZpbHRlclBtLnJlbGF0aXZlRGF0ZUZpbHRlckluZm8uZGF0ZVBlcmlvZFR5cGUpLFxuICAgICAgICAgICAgcmFuZ2VUeXBlOiBFbnVtTWFwcGluZ3NfMS5QcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5kYXRlUmFuZ2VUeXBlLmNvbnZlcnQoZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5kYXRlUmFuZ2VUeXBlKSxcbiAgICAgICAgICAgIHJhbmdlTjogZmlsdGVyUG0ucmVsYXRpdmVEYXRlRmlsdGVySW5mby5yYW5nZU5cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9O1xuICAgIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydENhdGVnb3JpY2FsRG9tYWluID0gZnVuY3Rpb24gKGRvbWFpblBtKSB7XG4gICAgICAgIHZhciBkb21haW5WYWx1ZXMgPSBkb21haW5QbS5jYXB0aW9uZWRGaWx0ZXJWYWx1ZUxpc3QubWFwKGZ1bmN0aW9uIChmaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXIuY29udmVydEZpbHRlclZhbHVlUHJlc01vZGVsKGZpbHRlclZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IHZhbHVlczogZG9tYWluVmFsdWVzIH07XG4gICAgfTtcbiAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRRdWFudGl0YXRpdmVEb21haW4gPSBmdW5jdGlvbiAoZG9tYWluUG0pIHtcbiAgICAgICAgdmFyIG1pblZhbHVlID0gRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwoZG9tYWluUG0uY2FwdGlvbmVkUmFuZ2VNaW4pO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRGaWx0ZXJWYWx1ZVByZXNNb2RlbChkb21haW5QbS5jYXB0aW9uZWRSYW5nZU1heCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtYXg6IG1heFZhbHVlLFxuICAgICAgICAgICAgbWluOiBtaW5WYWx1ZVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRmlsdGVyc0NvbnZlcnRlci5jb252ZXJ0RmlsdGVyVmFsdWVQcmVzTW9kZWwgPSBmdW5jdGlvbiAoZHZQTSkge1xuICAgICAgICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICBzd2l0Y2ggKGR2UE0uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRW51bXNfMS5EYXRhVHlwZS5EVF9CT09MRUFOOiB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBCb29sZWFuKGR2UE0uZGF0YVZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bXNfMS5EYXRhVHlwZS5EVF9EQVRFOiB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShkdlBNLmRhdGFWYWx1ZVN0cik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVudW1zXzEuRGF0YVR5cGUuRFRfREFURVRJTUU6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKGR2UE0uZGF0YVZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRW51bXNfMS5EYXRhVHlwZS5EVF9JTlRFR0VSOiB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIucGFyc2VJbnQoZHZQTS5kYXRhVmFsdWVTdHIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFbnVtc18xLkRhdGFUeXBlLkRUX1JFQUw6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KGR2UE0uZGF0YVZhbHVlU3RyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gc3RyaW5nXG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBkdlBNLmRhdGFWYWx1ZVN0cjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgLy8gVE9ETzogbm8gZWFzeSB3YXkgb2YgZ2V0dGluZyBiYWNrIGFsaWFzZWQgdmFsdWUgZnJvbSBwbGF0Zm9ybSwgd2lsbCBuZWVkIHRvIGludmVzdGlnYXRlIGZ1cnRoZXJcbiAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogJycsXG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZTogZHZQTS5kYXRhVmFsdWVEaXNwbGF5U3RyaW5nXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBGaWx0ZXJzQ29udmVydGVyLmNvbnZlcnRJbmNsdWRlZE51bGxWYWx1ZXMgPSBmdW5jdGlvbiAoaW5jbHVkZU51bGwpIHtcbiAgICAgICAgcmV0dXJuIChpbmNsdWRlTnVsbCA9PT0gRW51bXNfMS5GaWx0ZXJzUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5SYW5nZU9yTnVsbCB8fFxuICAgICAgICAgICAgaW5jbHVkZU51bGwgPT09IEVudW1zXzEuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkFsbCB8fFxuICAgICAgICAgICAgaW5jbHVkZU51bGwgPT09IEVudW1zXzEuRmlsdGVyc1F1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLk51bGwpO1xuICAgIH07XG4gICAgcmV0dXJuIEZpbHRlcnNDb252ZXJ0ZXI7XG59KCkpO1xuZXhwb3J0cy5GaWx0ZXJzQ29udmVydGVyID0gRmlsdGVyc0NvbnZlcnRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpbHRlcnNDb252ZXJ0ZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvRmlsdGVyc0NvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogU2ltcGxlIHJlZ2lzdHJ5IGNsYXNzIHdoaWNoIGNyZWF0ZXMgYSBtYXBwaW5nIGJhc2VkIG9uIHR3byBrZXlzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBNYXBwaW5nUmVnaXN0cnlcbiAqIEB0ZW1wbGF0ZSBUSW5wdXRFbnVtVHlwZVxuICogQHRlbXBsYXRlIFRPdXRwdXRFbnVtVHlwZVxuICogQHRlbXBsYXRlIFRNYXBwaW5nU3RvcmFnZVR5cGVcbiAqL1xudmFyIE1hcHBpbmdSZWdpc3RyeSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWFwcGluZ1JlZ2lzdHJ5KCkge1xuICAgICAgICB0aGlzLl9yZWdpc3RyeSA9IHt9O1xuICAgIH1cbiAgICBNYXBwaW5nUmVnaXN0cnkucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChpbnB1dFR5cGUsIG91dHB1dFR5cGUpIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShpbnB1dFR5cGUsIG91dHB1dFR5cGUpO1xuICAgICAgICBpZiAoIXRoaXMuX3JlZ2lzdHJ5Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3JlZ2lzdHJ5W2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIE1hcHBpbmdSZWdpc3RyeS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGlucHV0VHlwZSwgb3V0cHV0VHlwZSkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzKGlucHV0VHlwZSwgb3V0cHV0VHlwZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1ZXN0ZWQgbWFwcGluZzogJyArIGlucHV0VHlwZSArICcgdG8gJyArIG91dHB1dFR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLm1ha2VLZXkoaW5wdXRUeXBlLCBvdXRwdXRUeXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJ5W2tleV07XG4gICAgfTtcbiAgICBNYXBwaW5nUmVnaXN0cnkucHJvdG90eXBlLmFkZFJlZ2lzdHJhdGlvbiA9IGZ1bmN0aW9uIChpbnB1dFR5cGUsIG91dHB1dFR5cGUsIHN0b3JhZ2VJdGVtKSB7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLm1ha2VLZXkoaW5wdXRUeXBlLCBvdXRwdXRUeXBlKTtcbiAgICAgICAgLy8gQWRkIHRoaXMgaXRlbVxuICAgICAgICB0aGlzLl9yZWdpc3RyeVtrZXldID0gc3RvcmFnZUl0ZW07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb21iaW5lcyB0aGUgdHdvIGtleXMgaW50byBhIHVuaXF1ZSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtUSW5wdXRFbnVtVHlwZX0gaW5wdXRUeXBlXG4gICAgICogQHBhcmFtIHtUT3V0cHV0RW51bVR5cGV9IG91dHB1dFR5cGVcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJvZiBNYXBwaW5nUmVnaXN0cnlcbiAgICAgKi9cbiAgICBNYXBwaW5nUmVnaXN0cnkucHJvdG90eXBlLm1ha2VLZXkgPSBmdW5jdGlvbiAoaW5wdXRUeXBlLCBvdXRwdXRUeXBlKSB7XG4gICAgICAgIHZhciBrZXlPYmogPSB7IGlucHV0OiBpbnB1dFR5cGUsIG91dHB1dDogb3V0cHV0VHlwZSB9O1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoa2V5T2JqKTtcbiAgICB9O1xuICAgIHJldHVybiBNYXBwaW5nUmVnaXN0cnk7XG59KCkpO1xuZXhwb3J0cy5NYXBwaW5nUmVnaXN0cnkgPSBNYXBwaW5nUmVnaXN0cnk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXBwaW5nUmVnaXN0cnkuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1jb3JlL2xpYi9zcmMvbWFwcGluZ3MvTWFwcGluZ1JlZ2lzdHJ5LmpzXG4gKiogbW9kdWxlIGlkID0gMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuL0VudW1NYXBwaW5nc1wiKTtcbi8qKlxuICogQ29udGFpbnMgbG9naWMgZm9yIGNvbnZlcnRpbmcgUGFyYW1ldGVyIG1vZGVscyBpbnRvIHRoZWlyIGVxdWl2YWxlbnQgQXBpIHZlcnNpb25zXG4gKi9cbnZhciBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIoKSB7XG4gICAgfVxuICAgIFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXJMaXN0ID0gZnVuY3Rpb24gKHBhcmFtZXRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMubWFwKFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRQYXJhbWV0ZXIpO1xuICAgIH07XG4gICAgLy8gQ29udmVydHMgYSBzaW5nbGUgcGFyYW1ldGVyLlxuICAgIC8vIFJvdWdoIHBvcnQgb2YgaHR0cHM6Ly9vcGVuZ3Jvay9zb3VyY2UveHJlZi9kZXZfbmVzc2llL3dvcmtncm91cC92cWx3ZWIvc2NyaXB0c2hhcnAvc3JjL1VJL0FwaS9BcGlQYXJhbWV0ZXJIYW5kbGVyLmNzIzk1XG4gICAgUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIuY29udmVydFBhcmFtZXRlciA9IGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIuY29udmVydEFsaWFzZWREYXRhVmFsdWUocGFyYW0udmFsdWVBbGlhcywgcGFyYW0uZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB2YXIgYWxsb3dhYmxlVmFsdWVzVHlwZSA9IEVudW1NYXBwaW5nc18xLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLnBhcmFtZXRlclR5cGVzRG9tYWluVHlwZS5jb252ZXJ0KHBhcmFtLnBhcmFtZXRlckRvbWFpblR5cGUpO1xuICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgICAgbmFtZTogcGFyYW0uZmllbGRDYXB0aW9uLFxuICAgICAgICAgICAgZmllbGROYW1lOiBwYXJhbS5wYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgICAgZGF0YVR5cGU6IEVudW1NYXBwaW5nc18xLlByZXNMYXllclRvQXBpRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQocGFyYW0uZGF0YVR5cGUpLFxuICAgICAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBhbGxvd2FibGVWYWx1ZXNUeXBlOiBhbGxvd2FibGVWYWx1ZXNUeXBlXG4gICAgICAgIH07XG4gICAgICAgIGlmIChhbGxvd2FibGVWYWx1ZXNUeXBlID09PSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5Eb21haW5SZXN0cmljdGlvblR5cGUuTGlzdCkge1xuICAgICAgICAgICAgdmFyIGFsbG93YWJsZVZhbHVlcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbS52YWx1ZXNBbGlhc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFkdiA9IHBhcmFtLnZhbHVlc0FsaWFzZXNbaV07XG4gICAgICAgICAgICAgICAgdmFyIGZvcm1hdHRlZFZhbHVlID0gcGFyYW0uZm9ybWF0dGVkVmFsdWVzW2ldO1xuICAgICAgICAgICAgICAgIGFsbG93YWJsZVZhbHVlcy5wdXNoKFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlKGFkdiwgZm9ybWF0dGVkVmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5hbGxvd2FibGVWYWx1ZXMgPSBhbGxvd2FibGVWYWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWxsb3dhYmxlVmFsdWVzVHlwZSA9PT0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRG9tYWluUmVzdHJpY3Rpb25UeXBlLlJhbmdlKSB7XG4gICAgICAgICAgICByZXN1bHQubWluVmFsdWUgPSBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5tYWtlRGF0YVZhbHVlKHBhcmFtLnZhbHVlTWluLCBwYXJhbS5mb3JtYXR0ZWRNaW4pO1xuICAgICAgICAgICAgcmVzdWx0Lm1heFZhbHVlID0gUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIubWFrZURhdGFWYWx1ZShwYXJhbS52YWx1ZU1heCwgcGFyYW0uZm9ybWF0dGVkTWF4KTtcbiAgICAgICAgICAgIHJlc3VsdC5zdGVwU2l6ZSA9IFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnROdW1iZXIocmVzdWx0LmRhdGFUeXBlLCBwYXJhbS52YWx1ZUluYyk7XG4gICAgICAgICAgICByZXN1bHQuZGF0ZVN0ZXBQZXJpb2QgPSBFbnVtTWFwcGluZ3NfMS5QcmVzTGF5ZXJUb0FwaUVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KHBhcmFtLmRhdGVQZXJpb2RUeXBlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIGluIHRoZSBjYXNlIHRoYXQgYWxsIHZhbHVlcyBhcmUgYWxsb3dlZFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5jb252ZXJ0TnVtYmVyID0gZnVuY3Rpb24gKGRhdGFUeXBlLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChkYXRhVHlwZSA9PT0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuSW50IHx8IGRhdGFUeXBlID09PSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5EYXRlIHx8IGRhdGFUeXBlID09PSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5EYXRlVGltZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlLkZsb2F0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgKi9cbiAgICBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5tYWtlRGF0YVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgYWxpYXMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSxcbiAgICAgICAgICAgIGFsaWFzZWRWYWx1ZTogYWxpYXMgfHwgZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSAqL1xuICAgIFBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmNvbnZlcnRBbGlhc2VkRGF0YVZhbHVlID0gZnVuY3Rpb24gKGFkdiwgZm9ybWF0dGVkVmFsdWUpIHtcbiAgICAgICAgLy8gQWxpYXNlZERhdGFWYWx1ZXMgYXJlIHNlcmlhbGl6ZWQgaW4ga2luZCBvZiBhIHN0cmFuZ2Ugd2F5IGZyb20gdGhlIHBsYXRmb3JtIGNvZGUuIFRoZXkgYXJlIG91dHB1dFxuICAgICAgICAvLyBhcyBhbiBhcnJheSBvZiAyIHZhbHVlcy4gVGhlIGZpcnN0IGlzIHRoZSBhY3R1YWwgdmFsdWUsIHRoZSBzZWNvbmQgaXMgdGhlIGFsaWFzLiBTZWUgQWxpYXNlZERhdGFWYWx1ZVNlcmlhbGl6ZXI6OlRvU2VyaWFsaXplclxuICAgICAgICBpZiAoIWFkdiB8fCAhKGFkdiBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGFsaWFzZWQgZGF0YSB2YWx1ZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IGFkdlswXTtcbiAgICAgICAgdmFyIGFsaWFzID0gYWR2Lmxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhZHZbMV07XG4gICAgICAgIHJldHVybiBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlci5tYWtlRGF0YVZhbHVlKHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgYWxpYXMpO1xuICAgIH07XG4gICAgcmV0dXJuIFBhcmFtZXRlcnNEYXRhQ29udmVydGVyO1xufSgpKTtcbmV4cG9ydHMuUGFyYW1ldGVyc0RhdGFDb252ZXJ0ZXIgPSBQYXJhbWV0ZXJzRGF0YUNvbnZlcnRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhcmFtZXRlcnNEYXRhQ29udmVydGVyLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktY29yZS9saWIvc3JjL21hcHBpbmdzL1BhcmFtZXRlcnNEYXRhQ29udmVydGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBJbXBsZW1lbmF0aW9uIG9mIHRoZSBQcmVzZW50YXRpb25MYXllciBjb250cmFjdCB3aXRoIGEgYml0IG9mIGV4dHJhIGluZm9ybWF0aW9uXG4gKiBhZGRlZCB0byB3b3JrIHdpdGggYWRkLWlucy4gTW9zdCB3b3JrIGlzIGRlbGVnYXRlZCBkb3duIHRvIHRoZSBpbnRlcm9wT2JqZWN0IHdoaWNoXG4gKiBjb21tdW5pY2F0ZXMgZGlyZWN0bHkgd2l0aCB0aGUgYysrIGxheWVyIHZpYSBRV2ViQ2hhbm5lbFxuICpcbiAqIEBjbGFzcyBBZGRJbkFwaVByZXNMYXllckltcGxcbiAqIEBpbXBsZW1lbnRzIHtjb250cmFjdC5QcmVzZW50YXRpb25MYXllcn1cbiAqL1xudmFyIEFkZEluQXBpUHJlc0xheWVySW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQWRkSW5BcGlQcmVzTGF5ZXJJbXBsKF9pbnRlcm9wT2JqZWN0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuX2ludGVyb3BPYmplY3QgPSBfaW50ZXJvcE9iamVjdDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMgPSB7fTtcbiAgICAgICAgaWYgKF9pbnRlcm9wT2JqZWN0ICYmIF9pbnRlcm9wT2JqZWN0Lk9uTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICBfaW50ZXJvcE9iamVjdC5Pbk5vdGlmaWNhdGlvbi5jb25uZWN0KGZ1bmN0aW9uIChub3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5kaXNwYXRjaE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZEluQXBpUHJlc0xheWVySW1wbC5wcm90b3R5cGUsIFwiQWRkSW5JbnN0YW5jZUluZm9cIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgaW5zdGFuY2UgaW5mbyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFkZC1pbiBmcm9tIHRoZSBjKysgY29kZVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcmVhZG9ubHlcbiAgICAgICAgICogQHR5cGUge0FkZEluSW5zdGFuY2VQcmVzTW9kZWx9XG4gICAgICAgICAqIEBtZW1iZXJvZiBBZGRJbkFwaVByZXNMYXllckltcGxcbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ludGVyb3BPYmplY3QuYWRkSW5JbnN0YW5jZUluZm87XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIEludm9rZXMgYSBjb21tYW5kIHVzaW5nIHRoZSBwcmVzLWxheWVyIGludGVyb3BcbiAgICAgKlxuICAgICAqIEB0ZW1wbGF0ZSBUIC0gVGhlIGV4cGVjdGVkIHJldHVybiB0eXBlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmROYW1lc3BhY2VcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogQHJldHVybnMge1Byb21pc2U8VD59XG4gICAgICogQG1lbWJlcm9mIEFkZEluQXBpUHJlc0xheWVySW1wbFxuICAgICAqL1xuICAgIEFkZEluQXBpUHJlc0xheWVySW1wbC5wcm90b3R5cGUuaW52b2tlQ29tbWFuZCA9IGZ1bmN0aW9uIChjb21tYW5kTmFtZXNwYWNlLCBjb21tYW5kTmFtZSwgcGFyYW1zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbW1hbmROYW1lc3BhY2UgPSBjb21tYW5kTmFtZXNwYWNlIHx8ICd0YWJkb2MnO1xuICAgICAgICAgICAgICAgIF90aGlzLl9pbnRlcm9wT2JqZWN0LkV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lc3BhY2UsIGNvbW1hbmROYW1lLCBwYXJhbXMsIGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLlN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtc2cgPSAnRXhlY3V0ZUNvbW1hbmQgZmFpbGVkLCB3aXRoIHJlc3VsdDonICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuUmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IobXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlLlJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIHdpbGwgcmVnaXN0cmF0aW9uIGEgc2luZ2xlIGluc3RhbmNlIG9mIGEgbm90aWZpY2F0aW9uIGhhbmRsZXIgd2l0aCB0aGUgTmF0aXZlIEMrKyBvYmplY3QsXG4gICAgLy8gYW5kIGltcGxlbWVudCBtdWx0aS1kaXNwYXRjaCB0byB0aGUgd2ViIG9iamVjdHMgZnJvbSBoLmVyZVxuICAgIEFkZEluQXBpUHJlc0xheWVySW1wbC5wcm90b3R5cGUucmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyID0gZnVuY3Rpb24gKGV2ZW50SWQsIGhhbmRsZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGV2ZW50SWQgaW4gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMpIHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzW2V2ZW50SWRdLnB1c2goaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXSA9IFtoYW5kbGVyXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJvcE9iamVjdC5SZWdpc3Rlck5vdGlmaWNhdGlvbkhhbmRsZXIoZXZlbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1JlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlciBmYWlsZWQ6ICcgKyBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5yZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyKGV2ZW50SWQsIGhhbmRsZXIpOyB9O1xuICAgIH07XG4gICAgQWRkSW5BcGlQcmVzTGF5ZXJJbXBsLnByb3RvdHlwZS5yZW1vdmVOb3RpZmljYXRpb25IYW5kbGVyID0gZnVuY3Rpb24gKGV2ZW50SWQsIGhhbmRsZXIpIHtcbiAgICAgICAgdmFyIGhhbmRsZXJMaXN0ID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XG4gICAgICAgIGlmICghaGFuZGxlckxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZm91bmRJbmRleCA9IGhhbmRsZXJMaXN0LmluZGV4T2YoaGFuZGxlcik7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGhhbmRsZXJMaXN0LnNwbGljZShmb3VuZEluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFuZGxlckxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnNbZXZlbnRJZF07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFkZEluQXBpUHJlc0xheWVySW1wbC5wcm90b3R5cGUuZGlzcGF0Y2hOb3RpZmljYXRpb24gPSBmdW5jdGlvbiAobm90aWZpY2F0aW9uKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZWNlaXZlZCBub3RpZmljYXRpb246ICcgKyBKU09OLnN0cmluZ2lmeShub3RpZmljYXRpb24pKTtcbiAgICAgICAgdmFyIGV2ZW50SWQgPSBub3RpZmljYXRpb24uZXZlbnRJZDtcbiAgICAgICAgdmFyIHByZXNNb2RlbCA9IG5vdGlmaWNhdGlvbi5wcmVzTW9kZWw7XG4gICAgICAgIGlmIChldmVudElkIGluIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzKSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVyc1tldmVudElkXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBoYW5kbGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzW2ldKHByZXNNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBZGRJbkFwaVByZXNMYXllckltcGw7XG59KCkpO1xuZXhwb3J0cy5BZGRJbkFwaVByZXNMYXllckltcGwgPSBBZGRJbkFwaVByZXNMYXllckltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BZGRJbkFwaVByZXNMYXllckltcGwuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvQWRkSW5BcGlQcmVzTGF5ZXJJbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgSW50ZXJuYWxBcGlEaXNwYXRjaGVyIGZvciBkZXNrdG9wLiBTaW5jZSB0aGlzIHdpbGwgcnVuIGluIHRoZSBzYW1lXG4gKiBmcmFtZSBhcyB0aGUgQXBpRXZlbnRIYW5kbGVyLCB0aGlzIGNsYXNzIG1vc3RseSBqdXN0IG1hcnNoYWxscyBkb3duIHRvIHRoYXQgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRGVza3RvcEFwaURpc3BhdGNoZXJcbiAqIEBpbXBsZW1lbnRzIHtJbnRlcm5hbEFwaURpc3BhdGNoZXJ9XG4gKi9cbnZhciBEZXNrdG9wQXBpRGlzcGF0Y2hlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVza3RvcEFwaURpc3BhdGNoZXIoX2FwaUV2ZW50SGFuZGxlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLl9hcGlFdmVudEhhbmRsZXIgPSBfYXBpRXZlbnRIYW5kbGVyO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IFtdO1xuICAgICAgICB0aGlzLl9hcGlFdmVudEhhbmRsZXIuc2V0RXZlbnRIYW5kbGVyKGZ1bmN0aW9uIChub3RpZmljYXRpb25JZCwgbW9kZWwpIHtcbiAgICAgICAgICAgIF90aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBoYW5kbGVyKHtcbiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25JZDogbm90aWZpY2F0aW9uSWQsXG4gICAgICAgICAgICAgICAgZGF0YTogbW9kZWxcbiAgICAgICAgICAgIH0pOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIERlc2t0b3BBcGlEaXNwYXRjaGVyLnByb3RvdHlwZS5zZXRWZXJzaW9uTnVtYmVyID0gZnVuY3Rpb24gKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgICAgdGhpcy5fYXBpRXZlbnRIYW5kbGVyLnNldFZlcnNpb25OdW1iZXIodmVyc2lvbk51bWJlcik7XG4gICAgfTtcbiAgICBEZXNrdG9wQXBpRGlzcGF0Y2hlci5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICh2ZXJiLCBwYXJhbWV0ZXJzKSB7XG4gICAgICAgIC8vIEp1c3QgcGFzcyB0aGlzIHJpZ2h0IHRocm91Z2ggdG8gdGhlIEFwaUV2ZW50SGFuZGxlclxuICAgICAgICByZXR1cm4gdGhpcy5fYXBpRXZlbnRIYW5kbGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycyk7XG4gICAgfTtcbiAgICBEZXNrdG9wQXBpRGlzcGF0Y2hlci5wcm90b3R5cGUucmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyID0gZnVuY3Rpb24gKGhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICB9O1xuICAgIERlc2t0b3BBcGlEaXNwYXRjaGVyLnByb3RvdHlwZS51bnJlZ2lzdGVyTm90aWZpY2F0aW9uSGFuZGxlciA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoICE9PSBoYW5kbGVyOyB9KTtcbiAgICB9O1xuICAgIHJldHVybiBEZXNrdG9wQXBpRGlzcGF0Y2hlcjtcbn0oKSk7XG5leHBvcnRzLkRlc2t0b3BBcGlEaXNwYXRjaGVyID0gRGVza3RvcEFwaURpc3BhdGNoZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZXNrdG9wQXBpRGlzcGF0Y2hlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9EZXNrdG9wQXBpRGlzcGF0Y2hlci5qc1xuICoqIG1vZHVsZSBpZCA9IDMxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnJlcXVpcmUoXCIuL3R5cGVzL1F0VHlwZXNcIik7XG52YXIgcXdlYmNoYW5uZWxfMSA9IHJlcXVpcmUoXCJxd2ViY2hhbm5lbFwiKTtcbi8qKlxuICogSW5pdGlhbGl6ZXMgdGhlIFFXZWJDaGFubmVsIGNvbnRyYWN0IGFuZCByZXR1cm5zIHRoZSBwcmVzIGxheWVyIGludGVyb3Agb2JqZWN0XG4gKlxuICogQHJldHVybnMge1Byb21pc2U8QWRkSW5BcGlQcmVzTGF5ZXJJbnRlcm9wT2JqZWN0Pn1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVdlYkNoYW5uZWxQcmVzTGF5ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgbmV3IHF3ZWJjaGFubmVsXzEuUVdlYkNoYW5uZWwocXQud2ViQ2hhbm5lbFRyYW5zcG9ydCwgZnVuY3Rpb24gKGNoYW5uZWwpIHtcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgICAgICB2YXIgYWRkSW5QcmVzTGF5ZXIgPSBjaGFubmVsLm9iamVjdHNbJ2FkZEluUHJlc0xheWVyJ107XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShhZGRJblByZXNMYXllcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnRzLmluaXRpYWxpemVXZWJDaGFubmVsUHJlc0xheWVyID0gaW5pdGlhbGl6ZVdlYkNoYW5uZWxQcmVzTGF5ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1RdFdlYkNoYW5uZWxJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL1F0V2ViQ2hhbm5lbEltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSAzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLy8jIHNvdXJjZU1hcHBpbmdVUkw9UXRUeXBlcy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi90eXBlcy9RdFR5cGVzLmpzXG4gKiogbW9kdWxlIGlkID0gMzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qKlxuKiogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBRdCBDb21wYW55IEx0ZC5cbioqIENvcHlyaWdodCAoQykgMjAxNCBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiwgYSBLREFCIEdyb3VwIGNvbXBhbnksIGluZm9Aa2RhYi5jb20sIGF1dGhvciBNaWxpYW4gV29sZmYgPG1pbGlhbi53b2xmZkBrZGFiLmNvbT5cbioqIENvbnRhY3Q6IGh0dHA6Ly93d3cucXQuaW8vbGljZW5zaW5nL1xuKipcbioqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFdlYkNoYW5uZWwgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LlxuKipcbioqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwyMSRcbioqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZVxuKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpblxuKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlXG4qKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW5cbioqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zXG4qKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cDovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlclxuKiogaW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cDovL3d3dy5xdC5pby9jb250YWN0LXVzLlxuKipcbioqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZVxuKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlclxuKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSBvciB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4qKiBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMdjIxIGFuZFxuKiogTElDRU5TRS5MR1BMdjMgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlXG4qKiBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbioqIHJlcXVpcmVtZW50cyB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3BsLmh0bWwgYW5kXG4qKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvb2xkLWxpY2Vuc2VzL2xncGwtMi4xLmh0bWwuXG4qKlxuKiogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgVGhlIFF0IENvbXBhbnkgZ2l2ZXMgeW91IGNlcnRhaW4gYWRkaXRpb25hbFxuKiogcmlnaHRzLiBUaGVzZSByaWdodHMgYXJlIGRlc2NyaWJlZCBpbiBUaGUgUXQgQ29tcGFueSBMR1BMIEV4Y2VwdGlvblxuKiogdmVyc2lvbiAxLjEsIGluY2x1ZGVkIGluIHRoZSBmaWxlIExHUExfRVhDRVBUSU9OLnR4dCBpbiB0aGlzIHBhY2thZ2UuXG4qKlxuKiogJFFUX0VORF9MSUNFTlNFJFxuKipcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMgPSB7XG4gICAgc2lnbmFsOiAxLFxuICAgIHByb3BlcnR5VXBkYXRlOiAyLFxuICAgIGluaXQ6IDMsXG4gICAgaWRsZTogNCxcbiAgICBkZWJ1ZzogNSxcbiAgICBpbnZva2VNZXRob2Q6IDYsXG4gICAgY29ubmVjdFRvU2lnbmFsOiA3LFxuICAgIGRpc2Nvbm5lY3RGcm9tU2lnbmFsOiA4LFxuICAgIHNldFByb3BlcnR5OiA5LFxuICAgIHJlc3BvbnNlOiAxMCxcbn07XG5cbnZhciBRV2ViQ2hhbm5lbCA9IGZ1bmN0aW9uKHRyYW5zcG9ydCwgaW5pdENhbGxiYWNrKVxue1xuICAgIGlmICh0eXBlb2YgdHJhbnNwb3J0ICE9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiB0cmFuc3BvcnQuc2VuZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgUVdlYkNoYW5uZWwgZXhwZWN0cyBhIHRyYW5zcG9ydCBvYmplY3Qgd2l0aCBhIHNlbmQgZnVuY3Rpb24gYW5kIG9ubWVzc2FnZSBjYWxsYmFjayBwcm9wZXJ0eS5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgXCIgR2l2ZW4gaXM6IHRyYW5zcG9ydDogXCIgKyB0eXBlb2YodHJhbnNwb3J0KSArIFwiLCB0cmFuc3BvcnQuc2VuZDogXCIgKyB0eXBlb2YodHJhbnNwb3J0LnNlbmQpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjaGFubmVsID0gdGhpcztcbiAgICB0aGlzLnRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcblxuICAgIHRoaXMuc2VuZCA9IGZ1bmN0aW9uKGRhdGEpXG4gICAge1xuICAgICAgICBpZiAodHlwZW9mKGRhdGEpICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC50cmFuc3BvcnQuc2VuZChkYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zcG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlKVxuICAgIHtcbiAgICAgICAgdmFyIGRhdGEgPSBtZXNzYWdlLmRhdGE7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuc2lnbmFsOlxuICAgICAgICAgICAgICAgIGNoYW5uZWwuaGFuZGxlU2lnbmFsKGRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5yZXNwb25zZTpcbiAgICAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZVJlc3BvbnNlKGRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5wcm9wZXJ0eVVwZGF0ZTpcbiAgICAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZVByb3BlcnR5VXBkYXRlKGRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiaW52YWxpZCBtZXNzYWdlIHJlY2VpdmVkOlwiLCBtZXNzYWdlLmRhdGEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5leGVjQ2FsbGJhY2tzID0ge307XG4gICAgdGhpcy5leGVjSWQgPSAwO1xuICAgIHRoaXMuZXhlYyA9IGZ1bmN0aW9uKGRhdGEsIGNhbGxiYWNrKVxuICAgIHtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgICAgLy8gaWYgbm8gY2FsbGJhY2sgaXMgZ2l2ZW4sIHNlbmQgZGlyZWN0bHlcbiAgICAgICAgICAgIGNoYW5uZWwuc2VuZChkYXRhKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbm5lbC5leGVjSWQgPT09IE51bWJlci5NQVhfVkFMVUUpIHtcbiAgICAgICAgICAgIC8vIHdyYXBcbiAgICAgICAgICAgIGNoYW5uZWwuZXhlY0lkID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShcImlkXCIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQ2Fubm90IGV4ZWMgbWVzc2FnZSB3aXRoIHByb3BlcnR5IGlkOiBcIiArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmlkID0gY2hhbm5lbC5leGVjSWQrKztcbiAgICAgICAgY2hhbm5lbC5leGVjQ2FsbGJhY2tzW2RhdGEuaWRdID0gY2FsbGJhY2s7XG4gICAgICAgIGNoYW5uZWwuc2VuZChkYXRhKTtcbiAgICB9O1xuXG4gICAgdGhpcy5vYmplY3RzID0ge307XG5cbiAgICB0aGlzLmhhbmRsZVNpZ25hbCA9IGZ1bmN0aW9uKG1lc3NhZ2UpXG4gICAge1xuICAgICAgICB2YXIgb2JqZWN0ID0gY2hhbm5lbC5vYmplY3RzW21lc3NhZ2Uub2JqZWN0XTtcbiAgICAgICAgaWYgKG9iamVjdCkge1xuICAgICAgICAgICAgb2JqZWN0LnNpZ25hbEVtaXR0ZWQobWVzc2FnZS5zaWduYWwsIG1lc3NhZ2UuYXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmhhbmRsZWQgc2lnbmFsOiBcIiArIG1lc3NhZ2Uub2JqZWN0ICsgXCI6OlwiICsgbWVzc2FnZS5zaWduYWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVSZXNwb25zZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpXG4gICAge1xuICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzT3duUHJvcGVydHkoXCJpZFwiKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgcmVzcG9uc2UgbWVzc2FnZSByZWNlaXZlZDogXCIsIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjaGFubmVsLmV4ZWNDYWxsYmFja3NbbWVzc2FnZS5pZF0obWVzc2FnZS5kYXRhKTtcbiAgICAgICAgZGVsZXRlIGNoYW5uZWwuZXhlY0NhbGxiYWNrc1ttZXNzYWdlLmlkXTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVByb3BlcnR5VXBkYXRlID0gZnVuY3Rpb24obWVzc2FnZSlcbiAgICB7XG4gICAgICAgIGZvciAodmFyIGkgaW4gbWVzc2FnZS5kYXRhKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IG1lc3NhZ2UuZGF0YVtpXTtcbiAgICAgICAgICAgIHZhciBvYmplY3QgPSBjaGFubmVsLm9iamVjdHNbZGF0YS5vYmplY3RdO1xuICAgICAgICAgICAgaWYgKG9iamVjdCkge1xuICAgICAgICAgICAgICAgIG9iamVjdC5wcm9wZXJ0eVVwZGF0ZShkYXRhLnNpZ25hbHMsIGRhdGEucHJvcGVydGllcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlVuaGFuZGxlZCBwcm9wZXJ0eSB1cGRhdGU6IFwiICsgZGF0YS5vYmplY3QgKyBcIjo6XCIgKyBkYXRhLnNpZ25hbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2hhbm5lbC5leGVjKHt0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5pZGxlfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWJ1ZyA9IGZ1bmN0aW9uKG1lc3NhZ2UpXG4gICAge1xuICAgICAgICBjaGFubmVsLnNlbmQoe3R5cGU6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmRlYnVnLCBkYXRhOiBtZXNzYWdlfSk7XG4gICAgfTtcblxuICAgIGNoYW5uZWwuZXhlYyh7dHlwZTogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuaW5pdH0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgZm9yICh2YXIgb2JqZWN0TmFtZSBpbiBkYXRhKSB7XG4gICAgICAgICAgICB2YXIgb2JqZWN0ID0gbmV3IFFPYmplY3Qob2JqZWN0TmFtZSwgZGF0YVtvYmplY3ROYW1lXSwgY2hhbm5lbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm93IHVud3JhcCBwcm9wZXJ0aWVzLCB3aGljaCBtaWdodCByZWZlcmVuY2Ugb3RoZXIgcmVnaXN0ZXJlZCBvYmplY3RzXG4gICAgICAgIGZvciAodmFyIG9iamVjdE5hbWUgaW4gY2hhbm5lbC5vYmplY3RzKSB7XG4gICAgICAgICAgICBjaGFubmVsLm9iamVjdHNbb2JqZWN0TmFtZV0udW53cmFwUHJvcGVydGllcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbml0Q2FsbGJhY2spIHtcbiAgICAgICAgICAgIGluaXRDYWxsYmFjayhjaGFubmVsKTtcbiAgICAgICAgfVxuICAgICAgICBjaGFubmVsLmV4ZWMoe3R5cGU6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLmlkbGV9KTtcbiAgICB9KTtcbn07XG5cbmZ1bmN0aW9uIFFPYmplY3QobmFtZSwgZGF0YSwgd2ViQ2hhbm5lbClcbntcbiAgICB0aGlzLl9faWRfXyA9IG5hbWU7XG4gICAgd2ViQ2hhbm5lbC5vYmplY3RzW25hbWVdID0gdGhpcztcblxuICAgIC8vIExpc3Qgb2YgY2FsbGJhY2tzIHRoYXQgZ2V0IGludm9rZWQgdXBvbiBzaWduYWwgZW1pc3Npb25cbiAgICB0aGlzLl9fb2JqZWN0U2lnbmFsc19fID0ge307XG5cbiAgICAvLyBDYWNoZSBvZiBhbGwgcHJvcGVydGllcywgdXBkYXRlZCB3aGVuIGEgbm90aWZ5IHNpZ25hbCBpcyBlbWl0dGVkXG4gICAgdGhpcy5fX3Byb3BlcnR5Q2FjaGVfXyA9IHt9O1xuXG4gICAgdmFyIG9iamVjdCA9IHRoaXM7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICB0aGlzLnVud3JhcFFPYmplY3QgPSBmdW5jdGlvbihyZXNwb25zZSlcbiAgICB7XG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAvLyBzdXBwb3J0IGxpc3Qgb2Ygb2JqZWN0c1xuICAgICAgICAgICAgdmFyIHJldCA9IG5ldyBBcnJheShyZXNwb25zZS5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNwb25zZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHJldFtpXSA9IG9iamVjdC51bndyYXBRT2JqZWN0KHJlc3BvbnNlW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNwb25zZVxuICAgICAgICAgICAgfHwgIXJlc3BvbnNlW1wiX19RT2JqZWN0Kl9fXCJdXG4gICAgICAgICAgICB8fCByZXNwb25zZVtcImlkXCJdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvYmplY3RJZCA9IHJlc3BvbnNlLmlkO1xuICAgICAgICBpZiAod2ViQ2hhbm5lbC5vYmplY3RzW29iamVjdElkXSlcbiAgICAgICAgICAgIHJldHVybiB3ZWJDaGFubmVsLm9iamVjdHNbb2JqZWN0SWRdO1xuXG4gICAgICAgIGlmICghcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNhbm5vdCB1bndyYXAgdW5rbm93biBRT2JqZWN0IFwiICsgb2JqZWN0SWQgKyBcIiB3aXRob3V0IGRhdGEuXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHFPYmplY3QgPSBuZXcgUU9iamVjdCggb2JqZWN0SWQsIHJlc3BvbnNlLmRhdGEsIHdlYkNoYW5uZWwgKTtcbiAgICAgICAgcU9iamVjdC5kZXN0cm95ZWQuY29ubmVjdChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICh3ZWJDaGFubmVsLm9iamVjdHNbb2JqZWN0SWRdID09PSBxT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHdlYkNoYW5uZWwub2JqZWN0c1tvYmplY3RJZF07XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgdGhlIG5vdyBkZWxldGVkIFFPYmplY3QgdG8gYW4gZW1wdHkge30gb2JqZWN0XG4gICAgICAgICAgICAgICAgLy8ganVzdCBhc3NpZ25pbmcge30gdGhvdWdoIHdvdWxkIG5vdCBoYXZlIHRoZSBkZXNpcmVkIGVmZmVjdCwgYnV0IHRoZVxuICAgICAgICAgICAgICAgIC8vIGJlbG93IGFsc28gZW5zdXJlcyBhbGwgZXh0ZXJuYWwgcmVmZXJlbmNlcyB3aWxsIHNlZSB0aGUgZW1wdHkgbWFwXG4gICAgICAgICAgICAgICAgLy8gTk9URTogdGhpcyBkZXRvdXIgaXMgbmVjZXNzYXJ5IHRvIHdvcmthcm91bmQgUVRCVUctNDAwMjFcbiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBxT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMucHVzaChwcm9wZXJ0eU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpZHggaW4gcHJvcGVydHlOYW1lcykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcU9iamVjdFtwcm9wZXJ0eU5hbWVzW2lkeF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGhlcmUgd2UgYXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQsIGFuZCB0aHVzIG11c3QgZGlyZWN0bHkgdW53cmFwIHRoZSBwcm9wZXJ0aWVzXG4gICAgICAgIHFPYmplY3QudW53cmFwUHJvcGVydGllcygpO1xuICAgICAgICByZXR1cm4gcU9iamVjdDtcbiAgICB9XG5cbiAgICB0aGlzLnVud3JhcFByb3BlcnRpZXMgPSBmdW5jdGlvbigpXG4gICAge1xuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eUlkeCBpbiBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX18pIHtcbiAgICAgICAgICAgIG9iamVjdC5fX3Byb3BlcnR5Q2FjaGVfX1twcm9wZXJ0eUlkeF0gPSBvYmplY3QudW53cmFwUU9iamVjdChvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJZHhdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZFNpZ25hbChzaWduYWxEYXRhLCBpc1Byb3BlcnR5Tm90aWZ5U2lnbmFsKVxuICAgIHtcbiAgICAgICAgdmFyIHNpZ25hbE5hbWUgPSBzaWduYWxEYXRhWzBdO1xuICAgICAgICB2YXIgc2lnbmFsSW5kZXggPSBzaWduYWxEYXRhWzFdO1xuICAgICAgICBvYmplY3Rbc2lnbmFsTmFtZV0gPSB7XG4gICAgICAgICAgICBjb25uZWN0OiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoY2FsbGJhY2spICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkJhZCBjYWxsYmFjayBnaXZlbiB0byBjb25uZWN0IHRvIHNpZ25hbCBcIiArIHNpZ25hbE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbEluZGV4XSA9IG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gfHwgW107XG4gICAgICAgICAgICAgICAgb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbEluZGV4XS5wdXNoKGNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIGlmICghaXNQcm9wZXJ0eU5vdGlmeVNpZ25hbCAmJiBzaWduYWxOYW1lICE9PSBcImRlc3Ryb3llZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZWQgZm9yIFwicHVyZVwiIHNpZ25hbHMsIGhhbmRsZWQgc2VwYXJhdGVseSBmb3IgcHJvcGVydGllcyBpbiBwcm9wZXJ0eVVwZGF0ZVxuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIG5vdGUgdGhhdCB3ZSBhbHdheXMgZ2V0IG5vdGlmaWVkIGFib3V0IHRoZSBkZXN0cm95ZWQgc2lnbmFsXG4gICAgICAgICAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5jb25uZWN0VG9TaWduYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVjdC5fX2lkX18sXG4gICAgICAgICAgICAgICAgICAgICAgICBzaWduYWw6IHNpZ25hbEluZGV4XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNjb25uZWN0OiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoY2FsbGJhY2spICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkJhZCBjYWxsYmFjayBnaXZlbiB0byBkaXNjb25uZWN0IGZyb20gc2lnbmFsIFwiICsgc2lnbmFsTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbEluZGV4XSA9IG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0gfHwgW107XG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9iamVjdC5fX29iamVjdFNpZ25hbHNfX1tzaWduYWxJbmRleF0uaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkNhbm5vdCBmaW5kIGNvbm5lY3Rpb24gb2Ygc2lnbmFsIFwiICsgc2lnbmFsTmFtZSArIFwiIHRvIFwiICsgY2FsbGJhY2submFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbEluZGV4XS5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUHJvcGVydHlOb3RpZnlTaWduYWwgJiYgb2JqZWN0Ll9fb2JqZWN0U2lnbmFsc19fW3NpZ25hbEluZGV4XS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSByZXF1aXJlZCBmb3IgXCJwdXJlXCIgc2lnbmFscywgaGFuZGxlZCBzZXBhcmF0ZWx5IGZvciBwcm9wZXJ0aWVzIGluIHByb3BlcnR5VXBkYXRlXG4gICAgICAgICAgICAgICAgICAgIHdlYkNoYW5uZWwuZXhlYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBRV2ViQ2hhbm5lbE1lc3NhZ2VUeXBlcy5kaXNjb25uZWN0RnJvbVNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0Ll9faWRfXyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbDogc2lnbmFsSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgYWxsIGNhbGxiYWNrcyBmb3IgdGhlIGdpdmVuIHNpZ25hbG5hbWUuIEFsc28gd29ya3MgZm9yIHByb3BlcnR5IG5vdGlmeSBjYWxsYmFja3MuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW52b2tlU2lnbmFsQ2FsbGJhY2tzKHNpZ25hbE5hbWUsIHNpZ25hbEFyZ3MpXG4gICAge1xuICAgICAgICB2YXIgY29ubmVjdGlvbnMgPSBvYmplY3QuX19vYmplY3RTaWduYWxzX19bc2lnbmFsTmFtZV07XG4gICAgICAgIGlmIChjb25uZWN0aW9ucykge1xuICAgICAgICAgICAgY29ubmVjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KGNhbGxiYWNrLCBzaWduYWxBcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wZXJ0eVVwZGF0ZSA9IGZ1bmN0aW9uKHNpZ25hbHMsIHByb3BlcnR5TWFwKVxuICAgIHtcbiAgICAgICAgLy8gdXBkYXRlIHByb3BlcnR5IGNhY2hlXG4gICAgICAgIGZvciAodmFyIHByb3BlcnR5SW5kZXggaW4gcHJvcGVydHlNYXApIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlNYXBbcHJvcGVydHlJbmRleF07XG4gICAgICAgICAgICBvYmplY3QuX19wcm9wZXJ0eUNhY2hlX19bcHJvcGVydHlJbmRleF0gPSBwcm9wZXJ0eVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgc2lnbmFsTmFtZSBpbiBzaWduYWxzKSB7XG4gICAgICAgICAgICAvLyBJbnZva2UgYWxsIGNhbGxiYWNrcywgYXMgc2lnbmFsRW1pdHRlZCgpIGRvZXMgbm90LiBUaGlzIGVuc3VyZXMgdGhlXG4gICAgICAgICAgICAvLyBwcm9wZXJ0eSBjYWNoZSBpcyB1cGRhdGVkIGJlZm9yZSB0aGUgY2FsbGJhY2tzIGFyZSBpbnZva2VkLlxuICAgICAgICAgICAgaW52b2tlU2lnbmFsQ2FsbGJhY2tzKHNpZ25hbE5hbWUsIHNpZ25hbHNbc2lnbmFsTmFtZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zaWduYWxFbWl0dGVkID0gZnVuY3Rpb24oc2lnbmFsTmFtZSwgc2lnbmFsQXJncylcbiAgICB7XG4gICAgICAgIGludm9rZVNpZ25hbENhbGxiYWNrcyhzaWduYWxOYW1lLCBzaWduYWxBcmdzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRNZXRob2QobWV0aG9kRGF0YSlcbiAgICB7XG4gICAgICAgIHZhciBtZXRob2ROYW1lID0gbWV0aG9kRGF0YVswXTtcbiAgICAgICAgdmFyIG1ldGhvZElkeCA9IG1ldGhvZERhdGFbMV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBjYWxsYmFjaztcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2ViQ2hhbm5lbC5leGVjKHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogUVdlYkNoYW5uZWxNZXNzYWdlVHlwZXMuaW52b2tlTWV0aG9kLFxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCI6IG9iamVjdC5fX2lkX18sXG4gICAgICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kSWR4LFxuICAgICAgICAgICAgICAgIFwiYXJnc1wiOiBhcmdzXG4gICAgICAgICAgICB9LCBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmplY3QudW53cmFwUU9iamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGxiYWNrKShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYmluZEdldHRlclNldHRlcihwcm9wZXJ0eUluZm8pXG4gICAge1xuICAgICAgICB2YXIgcHJvcGVydHlJbmRleCA9IHByb3BlcnR5SW5mb1swXTtcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5SW5mb1sxXTtcbiAgICAgICAgdmFyIG5vdGlmeVNpZ25hbERhdGEgPSBwcm9wZXJ0eUluZm9bMl07XG4gICAgICAgIC8vIGluaXRpYWxpemUgcHJvcGVydHkgY2FjaGUgd2l0aCBjdXJyZW50IHZhbHVlXG4gICAgICAgIC8vIE5PVEU6IGlmIHRoaXMgaXMgYW4gb2JqZWN0LCBpdCBpcyBub3QgZGlyZWN0bHkgdW53cmFwcGVkIGFzIGl0IG1pZ2h0XG4gICAgICAgIC8vIHJlZmVyZW5jZSBvdGhlciBRT2JqZWN0IHRoYXQgd2UgZG8gbm90IGtub3cgeWV0XG4gICAgICAgIG9iamVjdC5fX3Byb3BlcnR5Q2FjaGVfX1twcm9wZXJ0eUluZGV4XSA9IHByb3BlcnR5SW5mb1szXTtcblxuICAgICAgICBpZiAobm90aWZ5U2lnbmFsRGF0YSkge1xuICAgICAgICAgICAgaWYgKG5vdGlmeVNpZ25hbERhdGFbMF0gPT09IDEpIHtcbiAgICAgICAgICAgICAgICAvLyBzaWduYWwgbmFtZSBpcyBvcHRpbWl6ZWQgYXdheSwgcmVjb25zdHJ1Y3QgdGhlIGFjdHVhbCBuYW1lXG4gICAgICAgICAgICAgICAgbm90aWZ5U2lnbmFsRGF0YVswXSA9IHByb3BlcnR5TmFtZSArIFwiQ2hhbmdlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkU2lnbmFsKG5vdGlmeVNpZ25hbERhdGEsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlWYWx1ZSA9IG9iamVjdC5fX3Byb3BlcnR5Q2FjaGVfX1twcm9wZXJ0eUluZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJVbmRlZmluZWQgdmFsdWUgaW4gcHJvcGVydHkgY2FjaGUgZm9yIHByb3BlcnR5IFxcXCJcIiArIHByb3BlcnR5TmFtZSArIFwiXFxcIiBpbiBvYmplY3QgXCIgKyBvYmplY3QuX19pZF9fKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUHJvcGVydHkgc2V0dGVyIGZvciBcIiArIHByb3BlcnR5TmFtZSArIFwiIGNhbGxlZCB3aXRoIHVuZGVmaW5lZCB2YWx1ZSFcIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqZWN0Ll9fcHJvcGVydHlDYWNoZV9fW3Byb3BlcnR5SW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgd2ViQ2hhbm5lbC5leGVjKHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFFXZWJDaGFubmVsTWVzc2FnZVR5cGVzLnNldFByb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiOiBvYmplY3QuX19pZF9fLFxuICAgICAgICAgICAgICAgICAgICBcInByb3BlcnR5XCI6IHByb3BlcnR5SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIFwidmFsdWVcIjogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBkYXRhLm1ldGhvZHMuZm9yRWFjaChhZGRNZXRob2QpO1xuXG4gICAgZGF0YS5wcm9wZXJ0aWVzLmZvckVhY2goYmluZEdldHRlclNldHRlcik7XG5cbiAgICBkYXRhLnNpZ25hbHMuZm9yRWFjaChmdW5jdGlvbihzaWduYWwpIHsgYWRkU2lnbmFsKHNpZ25hbCwgZmFsc2UpOyB9KTtcblxuICAgIGZvciAodmFyIG5hbWUgaW4gZGF0YS5lbnVtcykge1xuICAgICAgICBvYmplY3RbbmFtZV0gPSBkYXRhLmVudW1zW25hbWVdO1xuICAgIH1cbn1cblxuLy9yZXF1aXJlZCBmb3IgdXNlIHdpdGggbm9kZWpzXG5pZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAgICAgUVdlYkNoYW5uZWw6IFFXZWJDaGFubmVsXG4gICAgfTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vfi9xd2ViY2hhbm5lbC9xd2ViY2hhbm5lbC5qc1xuICoqIG1vZHVsZSBpZCA9IDM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3Y5T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNoRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNqaUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUMxTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNuSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3JOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3RKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNucU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNuRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3JEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUMvRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM5R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDekJBOzs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OyIsInNvdXJjZVJvb3QiOiIifQ== - -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["tableau"] = factory(); - else - root["tableau"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; - -/******/ // The require function -/******/ function __webpack_require__(moduleId) { - -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; - -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; - -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - -/******/ // Flag the module as loaded -/******/ module.loaded = true; - -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } - - -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; - -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; - -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist/"; - -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - // Due to the way we configured webpack, we should be exporting things which will be under - // a global variable called "tableau". Export everything we want to be visible under tableau - // from this file. - var AddInImpl_1 = __webpack_require__(1); - var AddIn_1 = __webpack_require__(61); - var addInImpl = new AddInImpl_1.AddInImpl(); - exports.addIn = new AddIn_1.AddIn(addInImpl); - // Export Enums - // These show up under the tableau object. I.e. tableau.AddInContext.Server - var api_external_contract_1 = __webpack_require__(16); - exports.AddInContext = api_external_contract_1.AddInContext; - exports.AddInMode = api_external_contract_1.AddInMode; - exports.AnalyticsObjectType = api_external_contract_1.AnalyticsObjectType; - exports.ColumnType = api_external_contract_1.ColumnType; - exports.DashboardObjectType = api_external_contract_1.DashboardObjectType; - exports.DataType = api_external_contract_1.DataType; - exports.DateRangeType = api_external_contract_1.DateRangeType; - exports.DialogEventType = api_external_contract_1.DialogEventType; - exports.EncodingType = api_external_contract_1.EncodingType; - exports.ErrorCodes = api_external_contract_1.ErrorCodes; - exports.FieldAggregationType = api_external_contract_1.FieldAggregationType; - exports.FieldRoleType = api_external_contract_1.FieldRoleType; - exports.FilterDomainType = api_external_contract_1.FilterDomainType; - exports.FilterType = api_external_contract_1.FilterType; - exports.FilterUpdateType = api_external_contract_1.FilterUpdateType; - exports.FilterNullOption = api_external_contract_1.FilterNullOption; - exports.MarkType = api_external_contract_1.MarkType; - exports.ParameterValueType = api_external_contract_1.ParameterValueType; - exports.PeriodType = api_external_contract_1.PeriodType; - exports.QuickTableCalcType = api_external_contract_1.QuickTableCalcType; - exports.SelectionUpdateType = api_external_contract_1.SelectionUpdateType; - exports.SheetType = api_external_contract_1.SheetType; - exports.SortDirection = api_external_contract_1.SortDirection; - exports.TableauEventType = api_external_contract_1.TableauEventType; - exports.TrendLineModelType = api_external_contract_1.TrendLineModelType; - //# sourceMappingURL=AddInApi.js.map - -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(2); - var api_shared_1 = __webpack_require__(8); - var Dashboard_1 = __webpack_require__(41); - var DashboardContent_1 = __webpack_require__(43); - var Environment_1 = __webpack_require__(44); - var Settings_1 = __webpack_require__(45); - var RegisterAllAddInServices_1 = __webpack_require__(46); - var VersionNumber_1 = __webpack_require__(49); - var DashboardImpl_1 = __webpack_require__(50); - var SettingsImpl_1 = __webpack_require__(60); - var AddInImpl = (function () { - function AddInImpl() { - } - AddInImpl.prototype.initializeAsync = function () { - var _this = this; - if (!this._initializationPromise) { - this._initializationPromise = new Promise(function (resolve, reject) { - // First thing we want to do is check to see if there is a desktop dispatcher already registered for us - if (api_internal_contract_1.InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise()) { - // Running in desktop, use this promise - var desktopDispatcherPromise = api_internal_contract_1.InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - desktopDispatcherPromise.then(_this.onDispatcherReceived.bind(_this)).then(function () { resolve(); }); - } - else { - reject('Not running in desktop. Server support coming soon!'); - } - }); - } - return this._initializationPromise; - }; - AddInImpl.prototype.onDispatcherReceived = function (dispatcher) { - var _this = this; - dispatcher.setVersionNumber(VersionNumber_1.VersionNumber.Instance); - // Call to register all the services which will use the newly initialized dispatcher - api_shared_1.registerAllSharedServices(dispatcher); - RegisterAllAddInServices_1.registerAllAddInServices(dispatcher); - // Get the initialization service and initialize this add-in - var initializationService = api_shared_1.ApiServiceRegistry.instance.getService("InitializationService" /* InitializationService */); - return initializationService.initializeDashboardAddInAsync().then(function (result) { - if (!result.addInInstance.locator.dashboardPath) { - throw new Error('DashboardPath is undefined'); - } - _this.dashboardContent = _this.initializeDashboardContent(result.addinDashboardInfo, result.addInInstance.locator.dashboardPath); - _this.environment = new Environment_1.Environment(result.addInEnvironment); - _this.settings = _this.initializeSettings(result.addInSettingsInfo); - }); - }; - AddInImpl.prototype.initializeDashboardContent = function (info, sheetPath) { - var dashboardImpl = new DashboardImpl_1.DashboardImpl(info, sheetPath); - var dashboard = new Dashboard_1.Dashboard(dashboardImpl); - return new DashboardContent_1.DashboardContent(dashboard); - }; - AddInImpl.prototype.initializeSettings = function (settingsInfo) { - var settingsImpl = new SettingsImpl_1.SettingsImpl(settingsInfo); - return new Settings_1.Settings(settingsImpl); - }; - return AddInImpl; - }()); - exports.AddInImpl = AddInImpl; - //# sourceMappingURL=AddInImpl.js.map - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(3)); - __export(__webpack_require__(4)); - __export(__webpack_require__(5)); - __export(__webpack_require__(6)); - __export(__webpack_require__(7)); - //# sourceMappingURL=ApiInternalContract.js.map - -/***/ }, -/* 3 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - AddInContext["Unknown"] = "unknown"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - AddInMode["Unknown"] = "unknown"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var ColumnType; - (function (ColumnType) { - ColumnType["Discrete"] = "discrete"; - ColumnType["Continuous"] = "continuous"; - })(ColumnType = exports.ColumnType || (exports.ColumnType = {})); - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - var EncodedDataType; - (function (EncodedDataType) { - EncodedDataType["Number"] = "number"; - EncodedDataType["String"] = "string"; - EncodedDataType["Date"] = "date"; - EncodedDataType["Boolean"] = "boolean"; - })(EncodedDataType = exports.EncodedDataType || (exports.EncodedDataType = {})); - var ErrorCode; - (function (ErrorCode) { - ErrorCode["ServerError"] = "server-error"; - ErrorCode["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - ErrorCode["InvalidFilterFieldName"] = "invalid-filter-fieldname"; - ErrorCode["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - })(ErrorCode = exports.ErrorCode || (exports.ErrorCode = {})); - var FieldAggregationType; - (function (FieldAggregationType) { - FieldAggregationType["Sum"] = "sum"; - FieldAggregationType["Avg"] = "avg"; - FieldAggregationType["Min"] = "min"; - FieldAggregationType["Max"] = "max"; - FieldAggregationType["Stdev"] = "stdev"; - FieldAggregationType["Stdevp"] = "stdevp"; - FieldAggregationType["Var"] = "var"; - FieldAggregationType["Varp"] = "varp"; - FieldAggregationType["Count"] = "count"; - FieldAggregationType["Countd"] = "countd"; - FieldAggregationType["Median"] = "median"; - FieldAggregationType["Attr"] = "attr"; - FieldAggregationType["None"] = "none"; - FieldAggregationType["Year"] = "year"; - FieldAggregationType["Qtr"] = "qtr"; - FieldAggregationType["Month"] = "month"; - FieldAggregationType["Day"] = "day"; - FieldAggregationType["Hour"] = "hour"; - FieldAggregationType["Minute"] = "minute"; - FieldAggregationType["Second"] = "second"; - FieldAggregationType["Week"] = "week"; - FieldAggregationType["Weekday"] = "weekday"; - FieldAggregationType["MonthYear"] = "month-year"; - FieldAggregationType["Mdy"] = "mdy"; - FieldAggregationType["End"] = "end"; - FieldAggregationType["TruncYear"] = "trunc-year"; - FieldAggregationType["TruncQtr"] = "trunc-qtr"; - FieldAggregationType["TruncMonth"] = "trunc-month"; - FieldAggregationType["TruncWeek"] = "trunc-week"; - FieldAggregationType["TruncDay"] = "trunc-day"; - FieldAggregationType["TruncHour"] = "trunc-hour"; - FieldAggregationType["TruncMinute"] = "trunc-minute"; - FieldAggregationType["TruncSecond"] = "trunc-second"; - FieldAggregationType["Quart1"] = "quart1"; - FieldAggregationType["Quart3"] = "quart3"; - FieldAggregationType["Skewness"] = "skewness"; - FieldAggregationType["Kurtosis"] = "kurtosis"; - FieldAggregationType["InOut"] = "in-out"; - FieldAggregationType["User"] = "user"; - })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {})); - var FieldRoleType; - (function (FieldRoleType) { - FieldRoleType["Dimension"] = "dimension"; - FieldRoleType["Measure"] = "measure"; - FieldRoleType["Unknown"] = "unknown"; - })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); - /** - * The different update types for applying filter. - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - SheetType["Addin"] = "addin"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - var DomainRestrictionType; - (function (DomainRestrictionType) { - DomainRestrictionType["All"] = "all"; - DomainRestrictionType["List"] = "list"; - DomainRestrictionType["Range"] = "range"; - })(DomainRestrictionType = exports.DomainRestrictionType || (exports.DomainRestrictionType = {})); - var DateStepPeriod; - (function (DateStepPeriod) { - DateStepPeriod["Years"] = "years"; - DateStepPeriod["Quarters"] = "quarters"; - DateStepPeriod["Months"] = "months"; - DateStepPeriod["Weeks"] = "weeks"; - DateStepPeriod["Days"] = "days"; - DateStepPeriod["Hours"] = "hours"; - DateStepPeriod["Minutes"] = "minutes"; - DateStepPeriod["Seconds"] = "seconds"; - })(DateStepPeriod = exports.DateStepPeriod || (exports.DateStepPeriod = {})); - /** - * The option for specifying which values to include for filtering. - */ - var FilterNullOption; - (function (FilterNullOption) { - FilterNullOption["NullValues"] = "nullvalues"; - FilterNullOption["NonNullValues"] = "nonnullvalues"; - FilterNullOption["AllValues"] = "allvalues"; - })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {})); - /** - * The type of filter domain - */ - var FilterDomainType; - (function (FilterDomainType) { - FilterDomainType["Relevant"] = "relevant"; - FilterDomainType["Database"] = "database"; - })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {})); - /** - * Internal enum for specifying the selection type for select marks api. - */ - var SelectionUpdateType; - (function (SelectionUpdateType) { - SelectionUpdateType["Replace"] = "select-replace"; - SelectionUpdateType["Add"] = "select-add"; - SelectionUpdateType["Remove"] = "select-remove"; - })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {})); - /** - * Internal enum for specifying the included values type for range selection. - */ - var QuantitativeIncludedValues; - (function (QuantitativeIncludedValues) { - QuantitativeIncludedValues["IncludeNull"] = "include-null"; - QuantitativeIncludedValues["IncludeNonNull"] = "include-non-null"; - QuantitativeIncludedValues["IncludeAll"] = "include-all"; - })(QuantitativeIncludedValues = exports.QuantitativeIncludedValues || (exports.QuantitativeIncludedValues = {})); - /** - * Type of mark for a given marks card in a viz. - */ - var MarkType; - (function (MarkType) { - MarkType["Bar"] = "bar"; - MarkType["Line"] = "line"; - MarkType["Area"] = "area"; - MarkType["Square"] = "square"; - MarkType["Circle"] = "circle"; - MarkType["Shape"] = "shape"; - MarkType["Text"] = "text"; - MarkType["Map"] = "map"; - MarkType["Pie"] = "pie"; - MarkType["GanttBar"] = "gantt-bar"; - MarkType["Polygon"] = "polygon"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - /** - * Internal enum for specifying the type of filter - */ - var FilterType; - (function (FilterType) { - FilterType["Categorical"] = "categorical"; - FilterType["Range"] = "range"; - FilterType["RelativeDate"] = "relativeDate"; - FilterType["Hierarchical"] = "hierarchical"; - })(FilterType = exports.FilterType || (exports.FilterType = {})); - /** - * Internal enum for specifying the DateRangeType of a relative date filter - */ - var DateRangeType; - (function (DateRangeType) { - /** - * Refers to the last day, week, month, etc. of the date period. - */ - DateRangeType["Last"] = "last"; - /** - * Refers to the last N days, weeks, months, etc. of the date period. - */ - DateRangeType["LastN"] = "lastN"; - /** - * Refers to the next day, week, month, etc. of the date period. - */ - DateRangeType["Next"] = "next"; - /** - * Refers to the next N days, weeks, months, etc. of the date period. - */ - DateRangeType["NextN"] = "nextN"; - /** - * Refers to the current day, week, month, etc. of the date period. - */ - DateRangeType["Current"] = "current"; - /** - * Refers to everything up to and including the current day, week, month, etc. of the date period. - */ - DateRangeType["ToDate"] = "toDate"; - })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); - //# sourceMappingURL=Enums.js.map - -/***/ }, -/* 4 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var InternalApiDispatcherHolder; - (function (InternalApiDispatcherHolder) { - function getDesktopDispatcherPromise() { - return window.__tableauDesktopDispatcher; - } - InternalApiDispatcherHolder.getDesktopDispatcherPromise = getDesktopDispatcherPromise; - function hasDesktopApiDispatcherPromise() { - return !!InternalApiDispatcherHolder.getDesktopDispatcherPromise(); - } - InternalApiDispatcherHolder.hasDesktopApiDispatcherPromise = hasDesktopApiDispatcherPromise; - function setDesktopDispatcherPromise(dispatcher) { - window.__tableauDesktopDispatcher = dispatcher; - } - InternalApiDispatcherHolder.setDesktopDispatcherPromise = setDesktopDispatcherPromise; - })(InternalApiDispatcherHolder = exports.InternalApiDispatcherHolder || (exports.InternalApiDispatcherHolder = {})); - //# sourceMappingURL=InternalApiDispatcher.js.map - -/***/ }, -/* 5 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var NotificationId; - (function (NotificationId) { - NotificationId["SelectedMarksChanged"] = "selected-marks-changed"; - NotificationId["ParameterChanged"] = "parameter-changed"; - NotificationId["FilterChanged"] = "filter-changed"; - })(NotificationId = exports.NotificationId || (exports.NotificationId = {})); - //# sourceMappingURL=Notifications.js.map - -/***/ }, -/* 6 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ParameterId; - (function (ParameterId) { - ParameterId["AddInLocator"] = "add-in-locator"; - ParameterId["AddInBootstrapInfo"] = "add-in-bootstrap-info"; - ParameterId["AddInSettingsInfo"] = "add-in-settings-info"; - ParameterId["VisualId"] = "visual-id"; - ParameterId["SheetPath"] = "sheet-path"; - ParameterId["IgnoreAliases"] = "ignore-aliases"; - ParameterId["IgnoreSelection"] = "ignore-selection"; - ParameterId["IncludeAllColumns"] = "include-all-columns"; - ParameterId["MaxRows"] = "max-rows"; - ParameterId["UnderlyingDataTable"] = "underlying-data-table"; - ParameterId["UnderlyingSummaryDataTable"] = "underlying-summary-data-table"; - ParameterId["DataSourceDataTable"] = "data-source-data-table"; - ParameterId["SettingsValues"] = "settings-values"; - ParameterId["SelectedData"] = "selected-data"; - ParameterId["HighlightedData"] = "highlighted-data"; - // Filter Params - ParameterId["FieldName"] = "field-name"; - ParameterId["FilterValues"] = "filter-values"; - ParameterId["FilterUpdateType"] = "filter-update-type"; - ParameterId["IsExcludeMode"] = "is-exclude"; - ParameterId["FilterRangeMin"] = "filter-range-min"; - ParameterId["FilterRangeMax"] = "filter-range-max"; - ParameterId["FilterRangeNullOption"] = "filter-range-null-option"; - ParameterId["WorksheetFilters"] = "worksheet-filters"; - ParameterId["FieldId"] = "field-id"; - ParameterId["DomainType"] = "domain-type"; - ParameterId["CategoricalDomain"] = "categorical-domain"; - ParameterId["QuantitativeDomain"] = "quantitative-dmain"; - ParameterId["WorksheetName"] = "worksheet-name"; - ParameterId["DashboardName"] = "dashboard"; - ParameterId["ParameterInfo"] = "parameter-info"; - ParameterId["ParameterInfos"] = "parameter-infos"; - ParameterId["ParameterCaption"] = "paremeter-caption"; - ParameterId["ParameterFieldName"] = "parameter-field-name"; - ParameterId["ParameterValue"] = "parameter-value"; - ParameterId["Selection"] = "selection"; - ParameterId["SelectionUpdateType"] = "selectionUpdateType"; - ParameterId["HierValSelectionModels"] = "hierarchicalValueSelectionModels"; - ParameterId["QuantRangeSelectionModels"] = "quantativeRangeSelectionModels"; - ParameterId["DimValSelectionModels"] = "dimensionValueSelectionModels"; - ParameterId["DataSourceId"] = "data-source-id"; - ParameterId["DataSchema"] = "data-schema"; - ParameterId["DataSourceName"] = "data-source-name"; - ParameterId["ColumnsToInclude"] = "columns-to-include"; - })(ParameterId = exports.ParameterId || (exports.ParameterId = {})); - //# sourceMappingURL=Parameters.js.map - -/***/ }, -/* 7 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - // Declare this key type and export the NotificationId to make this behave like a string enum - var VerbId; - (function (VerbId) { - VerbId["ApplyCategoricalFilter"] = "categorical-filter"; - VerbId["ApplyRangeFilter"] = "range-filter"; - VerbId["ClearFilter"] = "clear-filter"; - VerbId["InitializeAddIn"] = "initialize-add-in"; - VerbId["GetDataSummaryData"] = "get-summary-data"; - VerbId["GetUnderlyingData"] = "get-underlying-data"; - VerbId["GetDataSourceData"] = "get-datasource-data"; - VerbId["SaveAddInSettings"] = "save-add-in-settings"; - VerbId["GetSelectedMarks"] = "get-selected-marks"; - VerbId["GetHighlightedMarks"] = "get-highlighted-marks"; - VerbId["GetParametersForSheet"] = "get-parameters-for-sheet"; - VerbId["FindParameter"] = "find-parameter"; - VerbId["ChangeParameterValue"] = "change-parameter-value"; - VerbId["ClearSelectedMarks"] = "clear-selected-marks"; - VerbId["SelectByValue"] = "select-by-value"; - VerbId["GetDataSources"] = "get-data-sources"; - VerbId["RefreshDataSource"] = "refresh-data-source"; - VerbId["GetFilters"] = "get-filters"; - VerbId["GetCategoricalDomain"] = "get-categorical-domain"; - VerbId["GetRangeDomain"] = "get-range-domain"; - })(VerbId = exports.VerbId || (exports.VerbId = {})); - //# sourceMappingURL=Verbs.js.map - -/***/ }, -/* 8 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(9)); - __export(__webpack_require__(10)); - var Point_1 = __webpack_require__(11); - exports.Point = Point_1.Point; - var Size_1 = __webpack_require__(12); - exports.Size = Size_1.Size; - __export(__webpack_require__(13)); - __export(__webpack_require__(14)); - __export(__webpack_require__(15)); - __export(__webpack_require__(21)); - __export(__webpack_require__(20)); - __export(__webpack_require__(19)); - __export(__webpack_require__(18)); - __export(__webpack_require__(22)); - __export(__webpack_require__(23)); - __export(__webpack_require__(24)); - __export(__webpack_require__(33)); - __export(__webpack_require__(31)); - //# sourceMappingURL=ApiShared.js.map - -/***/ }, -/* 9 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Class designed to register and unregister handlers from a user. Only those events - * which are added via AddNewEventType will be supported by this instance - */ - var EventListenerManager = (function () { - function EventListenerManager() { - this._eventListenerManagers = {}; - } - EventListenerManager.prototype.addEventListener = function (eventType, handler) { - if (!this._eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this._eventListenerManagers[eventType].addEventListener(handler); - }; - EventListenerManager.prototype.removeEventListener = function (eventType, handler) { - if (!this._eventListenerManagers.hasOwnProperty(eventType)) { - throw new Error("Unsupported event type : " + eventType); - } - return this._eventListenerManagers[eventType].removeEventListener(handler); - }; - EventListenerManager.prototype.addNewEventType = function (eventManager) { - this._eventListenerManagers[eventManager.eventType] = eventManager; - }; - return EventListenerManager; - }()); - exports.EventListenerManager = EventListenerManager; - //# sourceMappingURL=EventListenerManager.js.map - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var EventListenerManager_1 = __webpack_require__(9); - /** - * Implementation of the Parameter contract. Calls down to the impl - * class for almost all of the work it does. - */ - var Parameter = (function (_super) { - __extends(Parameter, _super); - function Parameter(parameterImpl, sheet) { - var _this = _super.call(this) || this; - _this.parameterImpl = parameterImpl; - // Initialize our event handling for this class - _this.parameterImpl.initializeEvents(sheet).forEach(function (e) { return _this.addNewEventType(e); }); - return _this; - } - Object.defineProperty(Parameter.prototype, "name", { - get: function () { - return this.parameterImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "currentValue", { - get: function () { - return this.parameterImpl.currentValue; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "dataType", { - get: function () { - return this.parameterImpl.dataType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Parameter.prototype, "allowableValues", { - get: function () { - return this.parameterImpl.allowableValues; - }, - enumerable: true, - configurable: true - }); - Parameter.prototype.changeValueAsync = function (newValue) { - return this.parameterImpl.changeValueAsync(newValue); - }; - return Parameter; - }(EventListenerManager_1.EventListenerManager)); - exports.Parameter = Parameter; - //# sourceMappingURL=Parameter.js.map - -/***/ }, -/* 11 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Point = (function () { - function Point(_x, _y) { - this._x = _x; - this._y = _y; - } - Object.defineProperty(Point.prototype, "x", { - get: function () { - return this._x; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Point.prototype, "y", { - get: function () { - return this._y; - }, - enumerable: true, - configurable: true - }); - return Point; - }()); - exports.Point = Point; - //# sourceMappingURL=Point.js.map - -/***/ }, -/* 12 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Size = (function () { - function Size(_height, _width) { - this._height = _height; - this._width = _width; - } - Object.defineProperty(Size.prototype, "height", { - get: function () { - return this._height; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Size.prototype, "width", { - get: function () { - return this._width; - }, - enumerable: true, - configurable: true - }); - return Size; - }()); - exports.Size = Size; - //# sourceMappingURL=Size.js.map - -/***/ }, -/* 13 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var DataTable = (function () { - function DataTable(_data, _columns, _totalRowCount, _isSummaryData, _marksInfo) { - this._data = _data; - this._columns = _columns; - this._totalRowCount = _totalRowCount; - this._isSummaryData = _isSummaryData; - this._marksInfo = _marksInfo; - // TODO: get rid of this in redesign. - this._name = _isSummaryData ? 'Summary Data Table' : 'Underlying Data Table'; - } - Object.defineProperty(DataTable.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "data", { - get: function () { - return this._data; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "columns", { - get: function () { - return this._columns; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "marksInfo", { - get: function () { - return this._marksInfo; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "totalRowCount", { - get: function () { - return this._totalRowCount; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataTable.prototype, "isSummaryData", { - get: function () { - return this._isSummaryData; - }, - enumerable: true, - configurable: true - }); - return DataTable; - }()); - exports.DataTable = DataTable; - var MarkInfo = (function () { - function MarkInfo(_type, _color, _tupleId) { - this._type = _type; - this._color = _color; - this._tupleId = _tupleId; - } - Object.defineProperty(MarkInfo.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MarkInfo.prototype, "color", { - get: function () { - return this._color; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MarkInfo.prototype, "tupleId", { - get: function () { - return this._tupleId; - }, - enumerable: true, - configurable: true - }); - return MarkInfo; - }()); - exports.MarkInfo = MarkInfo; - var Column = (function () { - function Column(_fieldName, _dataType, // TODO: this shoudl be an enum type - _isReferenced, _index) { - this._fieldName = _fieldName; - this._dataType = _dataType; - this._isReferenced = _isReferenced; - this._index = _index; - } - Object.defineProperty(Column.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "dataType", { - get: function () { - return this._dataType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "isReferenced", { - get: function () { - return this._isReferenced; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Column.prototype, "index", { - get: function () { - return this._index; - }, - enumerable: true, - configurable: true - }); - return Column; - }()); - exports.Column = Column; - var DataValue = (function () { - /* tslint:disable:no-any */ - function DataValue(_value, _formattedValue) { - this._value = _value; - this._formattedValue = _formattedValue; - } - Object.defineProperty(DataValue.prototype, "value", { - get: function () { - return this._value; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataValue.prototype, "formattedValue", { - get: function () { - return this._formattedValue; - }, - enumerable: true, - configurable: true - }); - return DataValue; - }()); - exports.DataValue = DataValue; - //# sourceMappingURL=GetDataModels.js.map - -/***/ }, -/* 14 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauExceptions = (function () { - function TableauExceptions() { - } - return TableauExceptions; - }()); - exports.TableauExceptions = TableauExceptions; - //# sourceMappingURL=TableauExceptions.js.map - -/***/ }, -/* 15 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var TableauWorksheetEvent_1 = __webpack_require__(18); - var FilterChangedEvent = (function (_super) { - __extends(FilterChangedEvent, _super); - function FilterChangedEvent(worksheet, _fieldName) { - var _this = _super.call(this, Contract.TableauEventType.FilterChanged, worksheet) || this; - _this._fieldName = _fieldName; - return _this; - } - Object.defineProperty(FilterChangedEvent.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - FilterChangedEvent.prototype.getFilterAsync = function () { - var _this = this; - return this._worksheet.getFiltersAsync().then(function (filters) { - // TODO: Filtering of the filters should eventually be done platform side. - var eventedFilter = filters.find(function (filter) { return (filter.fieldName === _this._fieldName); }); - if (!eventedFilter) { - // We shouldn't hit this unless the filter was removed from the worksheet - // after the event was raised. - throw new Error('Internal Error: Filter no longer found in worksheet.'); - } - return eventedFilter; - }); - }; - return FilterChangedEvent; - }(TableauWorksheetEvent_1.TableauWorksheetEvent)); - exports.FilterChangedEvent = FilterChangedEvent; - //# sourceMappingURL=FilterChangedEvent.js.map - -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; - } - Object.defineProperty(exports, "__esModule", { value: true }); - __export(__webpack_require__(17)); - //# sourceMappingURL=ApiExternalContract.js.map - -/***/ }, -/* 17 */ -/***/ function(module, exports) { - - "use strict"; - // All enum values made available to AddIn developers. - // Enums should be kept in alphabetical order. - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * The context in which the AddIn is currently running. - */ - var AddInContext; - (function (AddInContext) { - AddInContext["Desktop"] = "desktop"; - AddInContext["Server"] = "server"; - })(AddInContext = exports.AddInContext || (exports.AddInContext = {})); - /** - * The mode in which the AddIn is currently running. - */ - var AddInMode; - (function (AddInMode) { - AddInMode["Authoring"] = "authoring"; - AddInMode["Viewing"] = "viewing"; - })(AddInMode = exports.AddInMode || (exports.AddInMode = {})); - var AnalyticsObjectType; - (function (AnalyticsObjectType) { - AnalyticsObjectType["Cluster"] = "cluster"; - AnalyticsObjectType["Forecast"] = "forecast"; - AnalyticsObjectType["TrendLine"] = "trend-line"; - })(AnalyticsObjectType = exports.AnalyticsObjectType || (exports.AnalyticsObjectType = {})); - var ColumnType; - (function (ColumnType) { - ColumnType["Discrete"] = "discrete"; - ColumnType["Continuous"] = "continuous"; - })(ColumnType = exports.ColumnType || (exports.ColumnType = {})); - /** - * What the object represents in a dashboard. - */ - var DashboardObjectType; - (function (DashboardObjectType) { - DashboardObjectType["Blank"] = "blank"; - DashboardObjectType["Worksheet"] = "worksheet"; - DashboardObjectType["QuickFilter"] = "quick-filter"; - DashboardObjectType["ParameterControl"] = "parameter-control"; - DashboardObjectType["PageFilter"] = "page-filter"; - DashboardObjectType["Legend"] = "legend"; - DashboardObjectType["Title"] = "title"; - DashboardObjectType["Text"] = "text"; - DashboardObjectType["Image"] = "image"; - DashboardObjectType["WebPage"] = "web-page"; - DashboardObjectType["AddIn"] = "addin"; - })(DashboardObjectType = exports.DashboardObjectType || (exports.DashboardObjectType = {})); - /** - * The different types of data a value can have - */ - var DataType; - (function (DataType) { - DataType["String"] = "string"; - DataType["Int"] = "int"; - DataType["Float"] = "float"; - DataType["Bool"] = "bool"; - DataType["Date"] = "date"; - DataType["DateTime"] = "date-time"; - DataType["Spatial"] = "spatial"; - })(DataType = exports.DataType || (exports.DataType = {})); - /** - * Valid date ranges for a relative date filter. - */ - var DateRangeType; - (function (DateRangeType) { - DateRangeType["Last"] = "last"; - DateRangeType["LastN"] = "last-n"; - DateRangeType["Next"] = "next"; - DateRangeType["NextN"] = "next-n"; - DateRangeType["Current"] = "current"; - DateRangeType["ToDate"] = "to-date"; - })(DateRangeType = exports.DateRangeType || (exports.DateRangeType = {})); - /** - * Types of dialog event for event listening between a parent AddIn and a popup dialog. - */ - var DialogEventType; - (function (DialogEventType) { - DialogEventType["DialogMessage"] = "dialog-message"; - DialogEventType["DialogEvent"] = "dialog-event"; - })(DialogEventType = exports.DialogEventType || (exports.DialogEventType = {})); - var EncodingType; - (function (EncodingType) { - EncodingType["Column"] = "column"; - EncodingType["Row"] = "row"; - EncodingType["Page"] = "page"; - EncodingType["Filter"] = "filter"; - EncodingType["MarksType"] = "marks-type"; - EncodingType["MeasureValues"] = "measure-values"; - EncodingType["Color"] = "color"; - EncodingType["Size"] = "size"; - EncodingType["Label"] = "label"; - EncodingType["Detail"] = "detail"; - EncodingType["Tooltip"] = "tooltip"; - EncodingType["Shape"] = "shape"; - EncodingType["Path"] = "path"; - EncodingType["Angle"] = "angle"; - })(EncodingType = exports.EncodingType || (exports.EncodingType = {})); - /** - * All error codes used by the AddIn API. - */ - var ErrorCodes; - (function (ErrorCodes) { - /** - * Only one dialog can be opened at time with the UI namespace functionality. - */ - ErrorCodes["DialogAlreadyOpen"] = "dialog-already-open"; - /** - * The open dialog was closed by the user. - */ - ErrorCodes["DialogClosedByUser"] = "dialog-closed-by-user"; - /** - * An error occurred while attempting to perform a filter operation. - */ - ErrorCodes["FilterCannotBePerformed"] = "filter-cannot-be-performed"; - /** - * An error occurred within the Tableau AddIn API. Contact Tableau Support. - */ - ErrorCodes["InternalError"] = "internal-error"; - /** - * An invalid aggregation was specified for the filter, such as setting a range filter to "SUM(Sales)" instead of "Sales". - */ - ErrorCodes["InvalidAggregationFieldName"] = "invalid-aggregation-field-name"; - /** - * A dialog must first launch to, and send messages from, the same domain as the parent AddIn. - */ - ErrorCodes["InvalidDomainDialog"] = "invalid-dialog-domain"; - /** - * An invalid date was specified in a method that required a date parameter. - */ - ErrorCodes["InvalidDateParameter"] = "invalid-date-parameter"; - /** - * A filter operation was attempted on a field that does not exist in the data source. - */ - ErrorCodes["InvalidFilterFieldName"] = "invalid-filter-field-name"; - /** - * A filter operation was attempted using a value that is the wrong data type or format. - */ - ErrorCodes["InvalidFilterFieldValue"] = "invalid-filter-field-value"; - /** - * A parameter is not the correct data type or format. The name of the parameter is specified in the Error.message field. - */ - ErrorCodes["InvalidParameter"] = "invalid-parameter"; - /** - * An invalid date value was specified in a Sheet.selectMarksAsync() call for a date field. - */ - ErrorCodes["InvalidSelectionDate"] = "invalid-selection-date"; - /** - * A field was specified in a Sheet.selectMarksAsync() call that does not exist in the data source. - */ - ErrorCodes["InvalidSelectionFieldName"] = "invalid-selection-field-name"; - /** - * An invalid value was specified in a Sheet.selectMarksAsync() call. - */ - ErrorCodes["InvalidSelectionValue"] = "invalid-selection-value"; - /** - * A required parameter was not specified, null, or an empty string/array. - */ - ErrorCodes["NullOrEmptyParameter"] = "null-or-empty-parameter"; - /** - * An unknown event name was specified in the call to Viz.addEventListeneror Viz.removeEventListener. - */ - ErrorCodes["UnsupportedEventName"] = "unsupported-event-name"; - })(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); - /** - * Type of aggregation on a field. - */ - var FieldAggregationType; - (function (FieldAggregationType) { - FieldAggregationType["Sum"] = "sum"; - FieldAggregationType["Avg"] = "avg"; - FieldAggregationType["Min"] = "min"; - FieldAggregationType["Max"] = "max"; - FieldAggregationType["Stdev"] = "stdev"; - FieldAggregationType["Stdevp"] = "stdevp"; - FieldAggregationType["Var"] = "var"; - FieldAggregationType["Varp"] = "varp"; - FieldAggregationType["Count"] = "count"; - FieldAggregationType["Countd"] = "countd"; - FieldAggregationType["Median"] = "median"; - FieldAggregationType["Attr"] = "attr"; - FieldAggregationType["None"] = "none"; - FieldAggregationType["Year"] = "year"; - FieldAggregationType["Qtr"] = "qtr"; - FieldAggregationType["Month"] = "month"; - FieldAggregationType["Day"] = "day"; - FieldAggregationType["Hour"] = "hour"; - FieldAggregationType["Minute"] = "minute"; - FieldAggregationType["Second"] = "second"; - FieldAggregationType["Week"] = "week"; - FieldAggregationType["Weekday"] = "weekday"; - FieldAggregationType["MonthYear"] = "month-year"; - FieldAggregationType["Mdy"] = "mdy"; - FieldAggregationType["End"] = "end"; - FieldAggregationType["TruncYear"] = "trunc-year"; - FieldAggregationType["TruncQtr"] = "trunc-qtr"; - FieldAggregationType["TruncMonth"] = "trunc-month"; - FieldAggregationType["TruncWeek"] = "trunc-week"; - FieldAggregationType["TruncDay"] = "trunc-day"; - FieldAggregationType["TruncHour"] = "trunc-hour"; - FieldAggregationType["TruncMinute"] = "trunc-minute"; - FieldAggregationType["TruncSecond"] = "trunc-second"; - FieldAggregationType["Quart1"] = "quart1"; - FieldAggregationType["Quart3"] = "quart3"; - FieldAggregationType["Skewness"] = "skewness"; - FieldAggregationType["Kurtosis"] = "kurtosis"; - FieldAggregationType["InOut"] = "in-out"; - FieldAggregationType["User"] = "user"; - })(FieldAggregationType = exports.FieldAggregationType || (exports.FieldAggregationType = {})); - /** - * Role of a field. - */ - var FieldRoleType; - (function (FieldRoleType) { - FieldRoleType["Dimension"] = "dimension"; - FieldRoleType["Measure"] = "measure"; - FieldRoleType["Unknown"] = "unknown"; - })(FieldRoleType = exports.FieldRoleType || (exports.FieldRoleType = {})); - /** - * An enumeration of the valid types of filters that can be applied. - */ - var FilterType; - (function (FilterType) { - FilterType["Categorical"] = "categorical"; - FilterType["Range"] = "range"; - FilterType["Hierarchical"] = "hierarchical"; - FilterType["RelativeDate"] = "relative-date"; - })(FilterType = exports.FilterType || (exports.FilterType = {})); - /** - * The different update types for applying filter - */ - var FilterUpdateType; - (function (FilterUpdateType) { - FilterUpdateType["Add"] = "add"; - FilterUpdateType["All"] = "all"; - FilterUpdateType["Replace"] = "replace"; - FilterUpdateType["Remove"] = "remove"; - })(FilterUpdateType = exports.FilterUpdateType || (exports.FilterUpdateType = {})); - /** - * The domain type for a filter - */ - var FilterDomainType; - (function (FilterDomainType) { - /** - * The domain values that are relevant to the specified filter - * i.e. the domain is restricted by a previous filter - */ - FilterDomainType["Relevant"] = "relevant"; - /** - * list of all possible domain values from database - */ - FilterDomainType["Database"] = "database"; - })(FilterDomainType = exports.FilterDomainType || (exports.FilterDomainType = {})); - /** - * The option for specifying which values to include for filtering - * Indicates what to do with null values for a given filter or mark selection call. - */ - var FilterNullOption; - (function (FilterNullOption) { - FilterNullOption["NullValues"] = "null-values"; - FilterNullOption["NonNullValues"] = "non-null-values"; - FilterNullOption["AllValues"] = "all-values"; - })(FilterNullOption = exports.FilterNullOption || (exports.FilterNullOption = {})); - /** - * Type of mark for a given marks card in a viz. - */ - var MarkType; - (function (MarkType) { - MarkType["Bar"] = "bar"; - MarkType["Line"] = "line"; - MarkType["Area"] = "area"; - MarkType["Square"] = "square"; - MarkType["Circle"] = "circle"; - MarkType["Shape"] = "shape"; - MarkType["Text"] = "text"; - MarkType["Map"] = "map"; - MarkType["Pie"] = "pie"; - MarkType["GanttBar"] = "gantt-bar"; - MarkType["Polygon"] = "polygon"; - })(MarkType = exports.MarkType || (exports.MarkType = {})); - /** - * An enumeration describing the different types of allowable values. - * This is used for restricting the domain of a parameter - */ - var ParameterValueType; - (function (ParameterValueType) { - ParameterValueType["All"] = "all"; - ParameterValueType["List"] = "list"; - ParameterValueType["Range"] = "range"; - })(ParameterValueType = exports.ParameterValueType || (exports.ParameterValueType = {})); - /** - * Date period used in filters and in parameters. - */ - var PeriodType; - (function (PeriodType) { - PeriodType["Years"] = "years"; - PeriodType["Quarters"] = "quarters"; - PeriodType["Months"] = "months"; - PeriodType["Weeks"] = "weeks"; - PeriodType["Days"] = "days"; - PeriodType["Hours"] = "hours"; - PeriodType["Minutes"] = "minutes"; - PeriodType["Seconds"] = "seconds"; - })(PeriodType = exports.PeriodType || (exports.PeriodType = {})); - var QuickTableCalcType; - (function (QuickTableCalcType) { - QuickTableCalcType["RunningTotal"] = "running-total"; - QuickTableCalcType["Difference"] = "difference"; - QuickTableCalcType["PercentDifference"] = "percent-difference"; - QuickTableCalcType["PercentOfTotal"] = "percent-of-total"; - QuickTableCalcType["Rank"] = "rank"; - QuickTableCalcType["Percentile"] = "percentile"; - QuickTableCalcType["MovingAverage"] = "moving-average"; - QuickTableCalcType["YTDTotal"] = "ytd-total"; - QuickTableCalcType["CompoundGrowthRate"] = "compound-growth-rate"; - QuickTableCalcType["YearOverYearGrowth"] = "year-over-year-growth"; - QuickTableCalcType["YTDGrowth"] = "ytd-growth"; - QuickTableCalcType["Undefined"] = "undefined"; - })(QuickTableCalcType = exports.QuickTableCalcType || (exports.QuickTableCalcType = {})); - /** - * Enum for specifying the selection type for select marks api. - */ - var SelectionUpdateType; - (function (SelectionUpdateType) { - SelectionUpdateType["Replace"] = "select-replace"; - SelectionUpdateType["Add"] = "select-add"; - SelectionUpdateType["Remove"] = "select-remove"; - })(SelectionUpdateType = exports.SelectionUpdateType || (exports.SelectionUpdateType = {})); - /** - * The type of sheet a Sheet object represents - */ - var SheetType; - (function (SheetType) { - SheetType["Dashboard"] = "dashboard"; - SheetType["Story"] = "story"; - SheetType["Worksheet"] = "worksheet"; - })(SheetType = exports.SheetType || (exports.SheetType = {})); - var SortDirection; - (function (SortDirection) { - SortDirection["Increasing"] = "increasing"; - SortDirection["Decreasing"] = "decreasing"; - })(SortDirection = exports.SortDirection || (exports.SortDirection = {})); - /** - * Represents a certain type of event which can be listened for - */ - var TableauEventType; - (function (TableauEventType) { - /** Raised when any filter has changed state.*/ - TableauEventType["FilterChanged"] = "filter-changed"; - /** The selected marks on a visualization has changed */ - TableauEventType["MarkSelectionChanged"] = "mark-selection-changed"; - /** A parameter has had its value modified */ - TableauEventType["ParameterChanged"] = "parameter-changed"; - })(TableauEventType = exports.TableauEventType || (exports.TableauEventType = {})); - var TrendLineModelType; - (function (TrendLineModelType) { - TrendLineModelType["Linear"] = "linear"; - TrendLineModelType["Logarithmic"] = "logarithmic"; - TrendLineModelType["Exponential"] = "exponential"; - TrendLineModelType["Polynomial"] = "polynomial"; - })(TrendLineModelType = exports.TrendLineModelType || (exports.TrendLineModelType = {})); - //# sourceMappingURL=Enums.js.map - -/***/ }, -/* 18 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauSheetEvent_1 = __webpack_require__(19); - var TableauWorksheetEvent = (function (_super) { - __extends(TableauWorksheetEvent, _super); - function TableauWorksheetEvent(type, _worksheet) { - var _this = _super.call(this, type, _worksheet) || this; - _this._worksheet = _worksheet; - return _this; - } - Object.defineProperty(TableauWorksheetEvent.prototype, "worksheet", { - get: function () { - return this._worksheet; - }, - enumerable: true, - configurable: true - }); - return TableauWorksheetEvent; - }(TableauSheetEvent_1.TableauSheetEvent)); - exports.TableauWorksheetEvent = TableauWorksheetEvent; - //# sourceMappingURL=TableauWorksheetEvent.js.map - -/***/ }, -/* 19 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent_1 = __webpack_require__(20); - var TableauSheetEvent = (function (_super) { - __extends(TableauSheetEvent, _super); - function TableauSheetEvent(type, sheet) { - var _this = _super.call(this, type) || this; - _this._sheet = sheet; - return _this; - } - Object.defineProperty(TableauSheetEvent.prototype, "sheet", { - get: function () { - return this._sheet; - }, - enumerable: true, - configurable: true - }); - return TableauSheetEvent; - }(TableauEvent_1.TableauEvent)); - exports.TableauSheetEvent = TableauSheetEvent; - //# sourceMappingURL=TableauSheetEvent.js.map - -/***/ }, -/* 20 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var TableauEvent = (function () { - function TableauEvent(type) { - this._type = type; - } - Object.defineProperty(TableauEvent.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - return TableauEvent; - }()); - exports.TableauEvent = TableauEvent; - //# sourceMappingURL=TableauEvent.js.map - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var TableauWorksheetEvent_1 = __webpack_require__(18); - var MarksSelectedEvent = (function (_super) { - __extends(MarksSelectedEvent, _super); - function MarksSelectedEvent(worksheet) { - return _super.call(this, Contract.TableauEventType.MarkSelectionChanged, worksheet) || this; - } - MarksSelectedEvent.prototype.getMarksAsync = function () { - return this.worksheet.getSelectedMarksAsync(); - }; - return MarksSelectedEvent; - }(TableauWorksheetEvent_1.TableauWorksheetEvent)); - exports.MarksSelectedEvent = MarksSelectedEvent; - //# sourceMappingURL=MarksSelectedEvent.js.map - -/***/ }, -/* 22 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class implements the SingleEventManager interface for a single type of Tableau event - * - * @template TEventType The Tableau event type this class specializes - */ - var SingleEventManagerImpl = (function () { - function SingleEventManagerImpl(eventType) { - this._eventType = eventType; - this._handlers = []; - } - Object.defineProperty(SingleEventManagerImpl.prototype, "eventType", { - get: function () { - return this._eventType; - }, - enumerable: true, - configurable: true - }); - SingleEventManagerImpl.prototype.addEventListener = function (handler) { - var _this = this; - this._handlers.push(handler); - return function () { return _this.removeEventListener(handler); }; - }; - SingleEventManagerImpl.prototype.removeEventListener = function (handler) { - var beforeCount = this._handlers.length; - this._handlers = this._handlers.filter(function (h) { return h !== handler; }); - return beforeCount > this._handlers.length; - }; - SingleEventManagerImpl.prototype.triggerEvent = function (eventGenerator) { - for (var _i = 0, _a = this._handlers; _i < _a.length; _i++) { - var handler = _a[_i]; - try { - var eventModel = eventGenerator(); - handler(eventModel); - } - catch (e) { - // Since this handler could be outside our control, just catch anything it throws and continue on - continue; - } - } - }; - return SingleEventManagerImpl; - }()); - exports.SingleEventManagerImpl = SingleEventManagerImpl; - //# sourceMappingURL=SingleEventManagerImpl.js.map - -/***/ }, -/* 23 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Defines which type of getData call to make. - */ - var GetDataType; - (function (GetDataType) { - GetDataType["Summary"] = "summary"; - GetDataType["Underlying"] = "underlying"; - })(GetDataType = exports.GetDataType || (exports.GetDataType = {})); - //# sourceMappingURL=GetDataService.js.map - -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var DataSourceServiceImpl_1 = __webpack_require__(25); - var FilterServiceImpl_1 = __webpack_require__(26); - var GetDataServiceImpl_1 = __webpack_require__(34); - var NotificationServiceImpl_1 = __webpack_require__(35); - var ParametersServiceImpl_1 = __webpack_require__(36); - var SelectionServiceImpl_1 = __webpack_require__(39); - var ServiceRegistry_1 = __webpack_require__(33); - function registerAllSharedServices(dispatcher) { - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new DataSourceServiceImpl_1.DataSourceServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new GetDataServiceImpl_1.GetDataServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new FilterServiceImpl_1.FilterServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new NotificationServiceImpl_1.NotificationServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new ParametersServiceImpl_1.ParametersServiceImpl(dispatcher)); - ServiceRegistry_1.ApiServiceRegistry.instance.registerService(new SelectionServiceImpl_1.SelectionServiceImpl(dispatcher)); - } - exports.registerAllSharedServices = registerAllSharedServices; - //# sourceMappingURL=RegisterAllSharedServices.js.map - -/***/ }, -/* 25 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(2); - var DataSourceServiceImpl = (function () { - function DataSourceServiceImpl(_dispatcher) { - this._dispatcher = _dispatcher; - } - Object.defineProperty(DataSourceServiceImpl.prototype, "serviceName", { - get: function () { - return "data-source-service" /* DataSourceService */; - }, - enumerable: true, - configurable: true - }); - DataSourceServiceImpl.prototype.refreshAsync = function (dataSourceId) { - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.RefreshDataSource, parameters).then(function (response) { - return; - }); - var _a; - }; - DataSourceServiceImpl.prototype.getDataSourcesAsync = function () { - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSources, {}).then(function (response) { - var dataSchema = response.result; - return dataSchema; - }); - }; - return DataSourceServiceImpl; - }()); - exports.DataSourceServiceImpl = DataSourceServiceImpl; - //# sourceMappingURL=DataSourceServiceImpl.js.map - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_utils_1 = __webpack_require__(27); - var ExternalToInternalEnumMappings_1 = __webpack_require__(30); - var InternalToExternalEnumMappings_1 = __webpack_require__(31); - var FilterModels_1 = __webpack_require__(32); - var GetDataModels_1 = __webpack_require__(13); - var FilterServiceImpl = (function () { - function FilterServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(FilterServiceImpl.prototype, "serviceName", { - get: function () { - return "filter-service" /* Filter */; - }, - enumerable: true, - configurable: true - }); - FilterServiceImpl.prototype.applyFilterAsync = function (visualId, fieldName, values, updateType, filterOptions) { - if (!api_utils_1.Param.isValidEnumValue(updateType, Contract.FilterUpdateType)) { - throw new Error('Invalid value for parameter FilterUpdateType'); - } - var verb = api_internal_contract_1.VerbId.ApplyCategoricalFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.FilterValues] = values; - parameters[api_internal_contract_1.ParameterId.FilterUpdateType] = updateType; - parameters[api_internal_contract_1.ParameterId.IsExcludeMode] = - (filterOptions === undefined || filterOptions.isExcludeMode === undefined) ? false : filterOptions.isExcludeMode; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var error = response.result; - if (!(error.errorCode === null || error.errorCode === undefined)) { - // TODO: come back and implement error handling logic - throw new Error('Error Applying Filter: ' + error.errorCode); - } - return fieldName; - }); - }; - FilterServiceImpl.prototype.applyRangeFilterAsync = function (visualId, fieldName, filterOptions) { - if (!filterOptions) { - throw new Error('Missing Parameter: RangeFilterOptions'); - } - api_utils_1.Param.verifyRangeParamType(filterOptions.min, filterOptions.max); - var verb = api_internal_contract_1.VerbId.ApplyRangeFilter; - var parameters = {}; - if (filterOptions.min) { - var min = void 0; - if (filterOptions.min instanceof Date) { - min = api_utils_1.Param.serializeDateForPlatform(filterOptions.min); - } - else { - min = filterOptions.min; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMin] = min; - } - if (filterOptions.max) { - var max = void 0; - if (filterOptions.max instanceof Date) { - max = api_utils_1.Param.serializeDateForPlatform(filterOptions.max); - } - else { - max = filterOptions.max; - } - parameters[api_internal_contract_1.ParameterId.FilterRangeMax] = max; - } - if (filterOptions.nullOption) { - if (!api_utils_1.Param.isValidEnumValue(filterOptions.nullOption, Contract.FilterNullOption)) { - throw new Error('Invalid value for parameter NullOption'); - } - parameters[api_internal_contract_1.ParameterId.FilterRangeNullOption] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.nullOptions.convert(filterOptions.nullOption); - } - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - return this._dispatcher.execute(verb, parameters).then(function (response) { - return fieldName; - }); - }; - FilterServiceImpl.prototype.clearFilterAsync = function (visualId, fieldName) { - var verb = api_internal_contract_1.VerbId.ClearFilter; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.FieldName] = fieldName; - return this._dispatcher.execute(verb, parameters).then(function (resposne) { - return fieldName; - }); - }; - FilterServiceImpl.prototype.getFiltersAsync = function (visualId) { - var _this = this; - var verb = api_internal_contract_1.VerbId.GetFilters; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var filters = response.result; - return _this.convertDomainFilters(filters); - }); - }; - FilterServiceImpl.prototype.getCategoricalDomainAsync = function (worksheetName, fieldId, domainType) { - var _this = this; - if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) { - throw new Error('Invalid value for parameter FilterDomainType'); - } - var verb = api_internal_contract_1.VerbId.GetCategoricalDomain; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = { - worksheet: worksheetName - }; - parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId; - parameters[api_internal_contract_1.ParameterId.DomainType] = domainType; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var domain = response.result; - return _this.convertCategoricalDomain(domain, domainType); - }); - }; - FilterServiceImpl.prototype.getRangeDomainAsync = function (worksheetName, fieldId, domainType) { - var _this = this; - if (!api_utils_1.Param.isValidEnumValue(domainType, Contract.FilterDomainType)) { - throw new Error('Invalid value for parameter FilterDomainType'); - } - var verb = api_internal_contract_1.VerbId.GetRangeDomain; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = { - worksheet: worksheetName - }; - parameters[api_internal_contract_1.ParameterId.FieldId] = fieldId; - parameters[api_internal_contract_1.ParameterId.DomainType] = ExternalToInternalEnumMappings_1.ExternalToInternalEnumMappings.filterDomainType.convert(domainType); - return this._dispatcher.execute(verb, parameters).then(function (response) { - var domain = response.result; - return _this.convertRangeDomain(domain, domainType); - }); - }; - // Helper Methods - FilterServiceImpl.prototype.convertDomainFilters = function (domainFilters) { - var _this = this; - var filters = []; - domainFilters.forEach(function (domainFilter) { - switch (domainFilter.filterType) { - case api_internal_contract_1.FilterType.Categorical: { - var filter = domainFilter; - if (filter) { - filters.push(_this.convertCategoricalFilter(filter)); - } - else { - throw new Error('Invalid Categorical Filter'); - } - break; - } - case api_internal_contract_1.FilterType.Range: { - var filter = domainFilter; - if (filter) { - filters.push(_this.convertRangeFilter(filter)); - } - else { - throw new Error('Invalid Range Filter'); - } - break; - } - case api_internal_contract_1.FilterType.RelativeDate: { - var filter = domainFilter; - if (filter) { - filters.push(_this.convertRelativeDateFilter(filter)); - } - else { - throw new Error('Invalid Relative Date Filter'); - } - break; - } - default: { - break; - } - } - }); - return filters; - }; - FilterServiceImpl.prototype.convertCategoricalFilter = function (domainFilter) { - var appliedValues = domainFilter.values.map(function (dv) { - return new GetDataModels_1.DataValue(dv.value, dv.formattedValue); - }); - return new FilterModels_1.CategoricalFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Categorical, appliedValues, domainFilter.isExclude); - }; - FilterServiceImpl.prototype.convertRangeFilter = function (domainFilter) { - var minValue = new GetDataModels_1.DataValue(domainFilter.min.value, domainFilter.min.formattedValue); - var maxValue = new GetDataModels_1.DataValue(domainFilter.max.value, domainFilter.max.formattedValue); - return new FilterModels_1.RangeFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.Range, minValue, maxValue, domainFilter.includeNullValues); - }; - FilterServiceImpl.prototype.convertRelativeDateFilter = function (domainFilter) { - var anchorDateValue = new GetDataModels_1.DataValue(domainFilter.anchorDate.value, domainFilter.anchorDate.formattedValue); - return new FilterModels_1.RelativeDateFilter(domainFilter.visualId.worksheet, domainFilter.fieldCaption, domainFilter.fieldName, Contract.FilterType.RelativeDate, anchorDateValue, InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(domainFilter.periodType), InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateRangeType.convert(domainFilter.rangeType), domainFilter.rangeN); - }; - FilterServiceImpl.prototype.convertCategoricalDomain = function (domain, domainType) { - var values = domain.values.map(function (domainDv) { - return new GetDataModels_1.DataValue(domainDv.value, domainDv.formattedValue); - }); - return new FilterModels_1.CategoricalDomain(values, domainType); - }; - FilterServiceImpl.prototype.convertRangeDomain = function (domain, domainType) { - var min = new GetDataModels_1.DataValue(domain.min.value, domain.min.formattedValue); - var max = new GetDataModels_1.DataValue(domain.max.value, domain.max.formattedValue); - return new FilterModels_1.RangeDomain(min, max, domainType); - }; - return FilterServiceImpl; - }()); - exports.FilterServiceImpl = FilterServiceImpl; - //# sourceMappingURL=FilterServiceImpl.js.map - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - /** - * This is your main. This is where you re-export everything you want to be publicly available. - * - * The build enforces that the file has the same name as the global variable that is exported. - */ - Object.defineProperty(exports, "__esModule", { value: true }); - var EnumConverter_1 = __webpack_require__(28); - exports.EnumConverter = EnumConverter_1.EnumConverter; - var Param_1 = __webpack_require__(29); - exports.Param = Param_1.Param; - //# sourceMappingURL=ApiUtils.js.map - -/***/ }, -/* 28 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * This class converts from a source enum value to destination enum - * value given a mapping from source to destination when constructed. - */ - var EnumConverter = (function () { - function EnumConverter(_mappings, _defaultVal) { - this._mappings = _mappings; - this._defaultVal = _defaultVal; - } - EnumConverter.prototype.convert = function (enumVal, throwIfMissing) { - if (this._mappings.hasOwnProperty(enumVal)) { - return this._mappings[enumVal]; - } - if (this._defaultVal !== undefined && !throwIfMissing) { - return this._defaultVal; - } - throw new Error('Mapping not found for ' + enumVal); - }; - return EnumConverter; - }()); - exports.EnumConverter = EnumConverter; - //# sourceMappingURL=EnumConverter.js.map - -/***/ }, -/* 29 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Param = (function () { - function Param() { - } - /** - * Verifies that an incoming parameter is 'truthy' and throws - * an error if it's not. This will throw an error if the value - * is null, undefined, NaN, the empty string, 0, or false. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - /*tslint:disable-next-line */ - Param.verifyValue = function (argumentValue, argumentName) { - if (!argumentValue) { - throw new Error('Value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies that a string is valid. Throws an error if the string is - * null, undefined, or NaN. - * - * @param argumentValue value to verify - * @param argumentName name of argument to verify - */ - Param.verifyString = function (argumentValue, argumentName) { - if (argumentValue === null || argumentValue === undefined) { - throw new Error('String value is invalid for argument: ' + argumentName); - } - }; - /** - * Verifies the value is part of the Enum - * - * String enums are {string : string} dictionaries which are not reverse mappable - * This is an ugly workaround - * @param value value to verify - * @param enumType enum to verify against - */ - /* tslint:disable:no-any */ - Param.isValidEnumValue = function (value, enumType) { - var isValid = false; - Object.keys(enumType).forEach(function (enumKey) { - if (enumType[enumKey] === value.toString()) { - isValid = true; - } - }); - return isValid; - }; - /* tslint:enable:no-any */ - /** - * serializes the date into the format that the server expects. - * @param date the date to serialize - */ - Param.serializeDateForPlatform = function (date) { - var year = date.getUTCFullYear(); - var month = date.getUTCMonth() + 1; - var day = date.getUTCDate(); - var hh = date.getUTCHours(); - var mm = date.getUTCMinutes(); - var sec = date.getUTCSeconds(); - return year + '-' + month + '-' + day + ' ' + hh + ':' + mm + ':' + sec; - }; - Param.serializeBooleanForPlatform = function (bool) { - return bool ? 'true' : 'false'; - }; - Param.serializeNumberForPlatform = function (num) { - return num.toString(10); - }; - /** - * Verifies the params min and max for applying range filter - * @param min range min - * @param max range max - */ - /* tslint:disable:no-any */ - Param.verifyRangeParamType = function (min, max) { - /* tslint:enable:no-any */ - if (!min && !max) { - throw new Error('Missing Parameter: At least one of min or max is required'); - } - if (!Param.isTypeNumber(min) && !Param.isTypeDate(min)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter min'); - } - if (!Param.isTypeNumber(max) && !Param.isTypeDate(max)) { - throw new Error('Invalid Parameter Type: Only Date and number are allowed for parameter max'); - } - if (typeof (min) !== typeof (max)) { - throw new Error('Invalid Parameter Type: Parameters min and max should be of the same type'); - } - }; - /** - * Verifies the input is a number - */ - /* tslint:disable:no-any */ - Param.isTypeNumber = function (input) { - return typeof (input) === 'number' || input instanceof Number; - }; - /* tslint:enable:no-any */ - /** - * Verifies the input is a Date - */ - /* tslint:disable:no-any */ - Param.isTypeDate = function (input) { - return input instanceof Date; - }; - /* tslint:enable:no-any */ - /* tslint:disable-next-line:no-any */ - Param.isTypeString = function (input) { - return typeof (input) === 'string' || input instanceof String; - }; - /* tslint:disable-next-line:no-any */ - Param.isTypeBool = function (input) { - return typeof (input) === 'boolean' || input instanceof Boolean; - }; - /* tslint:disable-next-line:no-any */ - Param.serializeParamterValue = function (value) { - if (Param.isTypeNumber(value)) { - return Param.serializeNumberForPlatform(value); - } - else if (Param.isTypeDate(value)) { - return Param.serializeDateForPlatform(value); - } - else if (Param.isTypeBool(value)) { - return Param.serializeBooleanForPlatform(value); - } - else if (Param.isTypeString(value)) { - return value; - } - else { - throw new Error('Value is invalid for argument: value'); - } - }; - return Param; - }()); - exports.Param = Param; - //# sourceMappingURL=Param.js.map - -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_utils_1 = __webpack_require__(27); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the external-api-contract to the enums used - * in the internal-api-contract, which developers code against. - */ - var ExternalToInternalEnumMappings = (function () { - function ExternalToInternalEnumMappings() { - } - ExternalToInternalEnumMappings.nullOptions = new api_utils_1.EnumConverter((_a = {}, - _a[api_external_contract_1.FilterNullOption.AllValues] = api_internal_contract_1.FilterNullOption.AllValues, - _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NonNullValues, - _a[api_external_contract_1.FilterNullOption.NonNullValues] = api_internal_contract_1.FilterNullOption.NullValues, - _a)); - ExternalToInternalEnumMappings.filterDomainType = new api_utils_1.EnumConverter((_b = {}, - _b[api_external_contract_1.FilterDomainType.Relevant] = api_internal_contract_1.FilterDomainType.Relevant, - _b[api_external_contract_1.FilterDomainType.Database] = api_internal_contract_1.FilterDomainType.Database, - _b)); - return ExternalToInternalEnumMappings; - }()); - exports.ExternalToInternalEnumMappings = ExternalToInternalEnumMappings; - var _a, _b; - /* tslint:enable:typedef */ - //# sourceMappingURL=ExternalToInternalEnumMappings.js.map - -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_utils_1 = __webpack_require__(27); - /* tslint:disable:typedef - Disable this to make declaring these classes a bit easier */ - /** - * Maps enums used by the internal-api-contract to the enums used - * in the external-api-contract, which developers code against. - */ - var InternalToExternalEnumMappings = (function () { - function InternalToExternalEnumMappings() { - } - InternalToExternalEnumMappings.addInContext = new api_utils_1.EnumConverter((_a = {}, - _a[api_internal_contract_1.AddInContext.Desktop] = api_external_contract_1.AddInContext.Desktop, - _a[api_internal_contract_1.AddInContext.Server] = api_external_contract_1.AddInContext.Server, - _a)); - InternalToExternalEnumMappings.addInMode = new api_utils_1.EnumConverter((_b = {}, - _b[api_internal_contract_1.AddInMode.Authoring] = api_external_contract_1.AddInMode.Authoring, - _b[api_internal_contract_1.AddInMode.Viewing] = api_external_contract_1.AddInMode.Viewing, - _b)); - InternalToExternalEnumMappings.columnType = new api_utils_1.EnumConverter((_c = {}, - _c[api_internal_contract_1.ColumnType.Continuous] = api_external_contract_1.ColumnType.Continuous, - _c[api_internal_contract_1.ColumnType.Discrete] = api_external_contract_1.ColumnType.Discrete, - _c)); - InternalToExternalEnumMappings.fieldAggregationType = new api_utils_1.EnumConverter((_d = {}, - _d[api_internal_contract_1.FieldAggregationType.Attr] = api_external_contract_1.FieldAggregationType.Attr, - _d[api_internal_contract_1.FieldAggregationType.Avg] = api_external_contract_1.FieldAggregationType.Avg, - _d[api_internal_contract_1.FieldAggregationType.Count] = api_external_contract_1.FieldAggregationType.Count, - _d[api_internal_contract_1.FieldAggregationType.Countd] = api_external_contract_1.FieldAggregationType.Countd, - _d[api_internal_contract_1.FieldAggregationType.Day] = api_external_contract_1.FieldAggregationType.Day, - _d[api_internal_contract_1.FieldAggregationType.End] = api_external_contract_1.FieldAggregationType.End, - _d[api_internal_contract_1.FieldAggregationType.Hour] = api_external_contract_1.FieldAggregationType.Hour, - _d[api_internal_contract_1.FieldAggregationType.InOut] = api_external_contract_1.FieldAggregationType.InOut, - _d[api_internal_contract_1.FieldAggregationType.Kurtosis] = api_external_contract_1.FieldAggregationType.Kurtosis, - _d[api_internal_contract_1.FieldAggregationType.Max] = api_external_contract_1.FieldAggregationType.Max, - _d[api_internal_contract_1.FieldAggregationType.Mdy] = api_external_contract_1.FieldAggregationType.Mdy, - _d[api_internal_contract_1.FieldAggregationType.Median] = api_external_contract_1.FieldAggregationType.Median, - _d[api_internal_contract_1.FieldAggregationType.Min] = api_external_contract_1.FieldAggregationType.Min, - _d[api_internal_contract_1.FieldAggregationType.Minute] = api_external_contract_1.FieldAggregationType.Minute, - _d[api_internal_contract_1.FieldAggregationType.MonthYear] = api_external_contract_1.FieldAggregationType.MonthYear, - _d[api_internal_contract_1.FieldAggregationType.None] = api_external_contract_1.FieldAggregationType.None, - _d[api_internal_contract_1.FieldAggregationType.Qtr] = api_external_contract_1.FieldAggregationType.Qtr, - _d[api_internal_contract_1.FieldAggregationType.Quart1] = api_external_contract_1.FieldAggregationType.Quart1, - _d[api_internal_contract_1.FieldAggregationType.Quart3] = api_external_contract_1.FieldAggregationType.Quart3, - _d[api_internal_contract_1.FieldAggregationType.Second] = api_external_contract_1.FieldAggregationType.Second, - _d[api_internal_contract_1.FieldAggregationType.Skewness] = api_external_contract_1.FieldAggregationType.Skewness, - _d[api_internal_contract_1.FieldAggregationType.Stdev] = api_external_contract_1.FieldAggregationType.Stdev, - _d[api_internal_contract_1.FieldAggregationType.Stdevp] = api_external_contract_1.FieldAggregationType.Stdevp, - _d[api_internal_contract_1.FieldAggregationType.Sum] = api_external_contract_1.FieldAggregationType.Sum, - _d[api_internal_contract_1.FieldAggregationType.TruncDay] = api_external_contract_1.FieldAggregationType.TruncDay, - _d[api_internal_contract_1.FieldAggregationType.TruncHour] = api_external_contract_1.FieldAggregationType.TruncHour, - _d[api_internal_contract_1.FieldAggregationType.TruncMinute] = api_external_contract_1.FieldAggregationType.TruncMinute, - _d[api_internal_contract_1.FieldAggregationType.TruncMonth] = api_external_contract_1.FieldAggregationType.TruncMonth, - _d[api_internal_contract_1.FieldAggregationType.TruncQtr] = api_external_contract_1.FieldAggregationType.TruncQtr, - _d[api_internal_contract_1.FieldAggregationType.TruncSecond] = api_external_contract_1.FieldAggregationType.TruncSecond, - _d[api_internal_contract_1.FieldAggregationType.TruncWeek] = api_external_contract_1.FieldAggregationType.TruncWeek, - _d[api_internal_contract_1.FieldAggregationType.TruncYear] = api_external_contract_1.FieldAggregationType.TruncYear, - _d[api_internal_contract_1.FieldAggregationType.User] = api_external_contract_1.FieldAggregationType.User, - _d[api_internal_contract_1.FieldAggregationType.Var] = api_external_contract_1.FieldAggregationType.Var, - _d[api_internal_contract_1.FieldAggregationType.Varp] = api_external_contract_1.FieldAggregationType.Varp, - _d[api_internal_contract_1.FieldAggregationType.Week] = api_external_contract_1.FieldAggregationType.Week, - _d[api_internal_contract_1.FieldAggregationType.Weekday] = api_external_contract_1.FieldAggregationType.Weekday, - _d[api_internal_contract_1.FieldAggregationType.Year] = api_external_contract_1.FieldAggregationType.Year, - _d)); - InternalToExternalEnumMappings.fieldRoleType = new api_utils_1.EnumConverter((_e = {}, - _e[api_internal_contract_1.FieldRoleType.Dimension] = api_external_contract_1.FieldRoleType.Dimension, - _e[api_internal_contract_1.FieldRoleType.Measure] = api_external_contract_1.FieldRoleType.Measure, - _e[api_internal_contract_1.FieldRoleType.Unknown] = api_external_contract_1.FieldRoleType.Unknown, - _e)); - InternalToExternalEnumMappings.sheetType = new api_utils_1.EnumConverter((_f = {}, - _f[api_internal_contract_1.SheetType.Dashboard] = api_external_contract_1.SheetType.Dashboard, - _f[api_internal_contract_1.SheetType.Story] = api_external_contract_1.SheetType.Story, - _f[api_internal_contract_1.SheetType.Worksheet] = api_external_contract_1.SheetType.Worksheet, - _f)); - InternalToExternalEnumMappings.dashboardObjectType = new api_utils_1.EnumConverter((_g = {}, - _g[api_internal_contract_1.DashboardObjectType.AddIn] = api_external_contract_1.DashboardObjectType.AddIn, - _g[api_internal_contract_1.DashboardObjectType.Blank] = api_external_contract_1.DashboardObjectType.Blank, - _g[api_internal_contract_1.DashboardObjectType.Image] = api_external_contract_1.DashboardObjectType.Image, - _g[api_internal_contract_1.DashboardObjectType.Legend] = api_external_contract_1.DashboardObjectType.Legend, - _g[api_internal_contract_1.DashboardObjectType.PageFilter] = api_external_contract_1.DashboardObjectType.PageFilter, - _g[api_internal_contract_1.DashboardObjectType.ParameterControl] = api_external_contract_1.DashboardObjectType.ParameterControl, - _g[api_internal_contract_1.DashboardObjectType.QuickFilter] = api_external_contract_1.DashboardObjectType.QuickFilter, - _g[api_internal_contract_1.DashboardObjectType.Text] = api_external_contract_1.DashboardObjectType.Text, - _g[api_internal_contract_1.DashboardObjectType.Title] = api_external_contract_1.DashboardObjectType.Title, - _g[api_internal_contract_1.DashboardObjectType.WebPage] = api_external_contract_1.DashboardObjectType.WebPage, - _g[api_internal_contract_1.DashboardObjectType.Worksheet] = api_external_contract_1.DashboardObjectType.Worksheet, - _g)); - InternalToExternalEnumMappings.dataType = new api_utils_1.EnumConverter((_h = {}, - _h[api_internal_contract_1.DataType.Bool] = api_external_contract_1.DataType.Bool, - _h[api_internal_contract_1.DataType.Date] = api_external_contract_1.DataType.Date, - _h[api_internal_contract_1.DataType.DateTime] = api_external_contract_1.DataType.DateTime, - _h[api_internal_contract_1.DataType.Float] = api_external_contract_1.DataType.Float, - _h[api_internal_contract_1.DataType.Int] = api_external_contract_1.DataType.Int, - _h[api_internal_contract_1.DataType.String] = api_external_contract_1.DataType.String, - _h)); - InternalToExternalEnumMappings.filterUpdateType = new api_utils_1.EnumConverter((_j = {}, - _j[api_internal_contract_1.FilterUpdateType.Add] = api_external_contract_1.FilterUpdateType.Add, - _j[api_internal_contract_1.FilterUpdateType.All] = api_external_contract_1.FilterUpdateType.All, - _j[api_internal_contract_1.FilterUpdateType.Remove] = api_external_contract_1.FilterUpdateType.Remove, - _j[api_internal_contract_1.FilterUpdateType.Replace] = api_external_contract_1.FilterUpdateType.Replace, - _j)); - InternalToExternalEnumMappings.allowableValues = new api_utils_1.EnumConverter((_k = {}, - _k[api_internal_contract_1.DomainRestrictionType.All] = api_external_contract_1.ParameterValueType.All, - _k[api_internal_contract_1.DomainRestrictionType.List] = api_external_contract_1.ParameterValueType.List, - _k[api_internal_contract_1.DomainRestrictionType.Range] = api_external_contract_1.ParameterValueType.Range, - _k)); - InternalToExternalEnumMappings.dateStepPeriod = new api_utils_1.EnumConverter((_l = {}, - _l[api_internal_contract_1.DateStepPeriod.Years] = api_external_contract_1.PeriodType.Years, - _l[api_internal_contract_1.DateStepPeriod.Quarters] = api_external_contract_1.PeriodType.Quarters, - _l[api_internal_contract_1.DateStepPeriod.Months] = api_external_contract_1.PeriodType.Months, - _l[api_internal_contract_1.DateStepPeriod.Weeks] = api_external_contract_1.PeriodType.Weeks, - _l[api_internal_contract_1.DateStepPeriod.Days] = api_external_contract_1.PeriodType.Days, - _l[api_internal_contract_1.DateStepPeriod.Hours] = api_external_contract_1.PeriodType.Hours, - _l[api_internal_contract_1.DateStepPeriod.Minutes] = api_external_contract_1.PeriodType.Minutes, - _l[api_internal_contract_1.DateStepPeriod.Seconds] = api_external_contract_1.PeriodType.Seconds, - _l)); - InternalToExternalEnumMappings.dateRangeType = new api_utils_1.EnumConverter((_m = {}, - _m[api_internal_contract_1.DateRangeType.Current] = api_external_contract_1.DateRangeType.Current, - _m[api_internal_contract_1.DateRangeType.Last] = api_external_contract_1.DateRangeType.Last, - _m[api_internal_contract_1.DateRangeType.LastN] = api_external_contract_1.DateRangeType.LastN, - _m[api_internal_contract_1.DateRangeType.Next] = api_external_contract_1.DateRangeType.Next, - _m[api_internal_contract_1.DateRangeType.NextN] = api_external_contract_1.DateRangeType.NextN, - _m[api_internal_contract_1.DateRangeType.ToDate] = api_external_contract_1.DateRangeType.ToDate, - _m)); - InternalToExternalEnumMappings.filterType = new api_utils_1.EnumConverter((_o = {}, - _o[api_internal_contract_1.FilterType.Categorical] = api_external_contract_1.FilterType.Categorical, - _o[api_internal_contract_1.FilterType.Range] = api_external_contract_1.FilterType.Range, - _o[api_internal_contract_1.FilterType.RelativeDate] = api_external_contract_1.FilterType.RelativeDate, - _o[api_internal_contract_1.FilterType.Hierarchical] = api_external_contract_1.FilterType.Hierarchical, - _o)); - return InternalToExternalEnumMappings; - }()); - exports.InternalToExternalEnumMappings = InternalToExternalEnumMappings; - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; - /* tslint:enable:typedef */ - //# sourceMappingURL=InternalToExternalEnumMappings.js.map - -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var ServiceRegistry_1 = __webpack_require__(33); - var Filter = (function () { - function Filter(_worksheetName, _fieldName, _filterType, _fieldId) { - this._worksheetName = _worksheetName; - this._fieldName = _fieldName; - this._filterType = _filterType; - this._fieldId = _fieldId; - } - Object.defineProperty(Filter.prototype, "worksheetName", { - get: function () { - return this._worksheetName; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Filter.prototype, "fieldName", { - get: function () { - return this._fieldName; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Filter.prototype, "fieldId", { - get: function () { - return this._fieldId; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Filter.prototype, "filterType", { - get: function () { - return this._filterType; - }, - enumerable: true, - configurable: true - }); - Filter.prototype.getFieldAsync = function () { - throw new Error('Method not implemented'); - }; - return Filter; - }()); - exports.Filter = Filter; - var CategoricalFilter = (function (_super) { - __extends(CategoricalFilter, _super); - function CategoricalFilter(worksheetName, fieldName, fieldId, filterType, _appliedValues, _isExcludeMode) { - var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; - _this._appliedValues = _appliedValues; - _this._isExcludeMode = _isExcludeMode; - return _this; - } - Object.defineProperty(CategoricalFilter.prototype, "appliedValues", { - get: function () { - return this._appliedValues; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CategoricalFilter.prototype, "isExcludeMode", { - get: function () { - return this._isExcludeMode; - }, - enumerable: true, - configurable: true - }); - CategoricalFilter.prototype.getDomainAsync = function (domainType) { - if (!domainType) { - domainType = Contract.FilterDomainType.Relevant; - } - var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.getCategoricalDomainAsync(this._worksheetName, this._fieldId, domainType); - }; - return CategoricalFilter; - }(Filter)); - exports.CategoricalFilter = CategoricalFilter; - var RangeFilter = (function (_super) { - __extends(RangeFilter, _super); - function RangeFilter(worksheetName, fieldName, fieldId, filterType, _min, _max, _includeNullValues) { - var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; - _this._min = _min; - _this._max = _max; - _this._includeNullValues = _includeNullValues; - return _this; - } - Object.defineProperty(RangeFilter.prototype, "minValue", { - get: function () { - return this._min; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RangeFilter.prototype, "maxValue", { - get: function () { - return this._max; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RangeFilter.prototype, "includeNullValues", { - get: function () { - return this._includeNullValues; - }, - enumerable: true, - configurable: true - }); - RangeFilter.prototype.getDomainAsync = function (domainType) { - var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - if (!domainType) { - domainType = Contract.FilterDomainType.Relevant; - } - return service.getRangeDomainAsync(this._worksheetName, this._fieldId, domainType); - }; - return RangeFilter; - }(Filter)); - exports.RangeFilter = RangeFilter; - var RelativeDateFilter = (function (_super) { - __extends(RelativeDateFilter, _super); - function RelativeDateFilter(worksheetName, fieldName, fieldId, filterType, _anchorDate, _periodType, _rangeType, _rangeN) { - var _this = _super.call(this, worksheetName, fieldName, filterType, fieldId) || this; - _this._anchorDate = _anchorDate; - _this._periodType = _periodType; - _this._rangeType = _rangeType; - _this._rangeN = _rangeN; - return _this; - } - Object.defineProperty(RelativeDateFilter.prototype, "anchorDate", { - get: function () { - return this._anchorDate; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RelativeDateFilter.prototype, "periodType", { - get: function () { - return this._periodType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RelativeDateFilter.prototype, "rangeType", { - get: function () { - return this._rangeType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RelativeDateFilter.prototype, "rangeN", { - get: function () { - return this._rangeN; - }, - enumerable: true, - configurable: true - }); - return RelativeDateFilter; - }(Filter)); - exports.RelativeDateFilter = RelativeDateFilter; - var CategoricalDomain = (function () { - function CategoricalDomain(_values, _domainType) { - this._values = _values; - this._domainType = _domainType; - } - Object.defineProperty(CategoricalDomain.prototype, "values", { - get: function () { - return this._values; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CategoricalDomain.prototype, "type", { - get: function () { - return this._domainType; - }, - enumerable: true, - configurable: true - }); - return CategoricalDomain; - }()); - exports.CategoricalDomain = CategoricalDomain; - var RangeDomain = (function () { - function RangeDomain(_min, _max, _domainType) { - this._min = _min; - this._max = _max; - this._domainType = _domainType; - } - Object.defineProperty(RangeDomain.prototype, "type", { - get: function () { - return this._domainType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RangeDomain.prototype, "min", { - get: function () { - return this._min; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(RangeDomain.prototype, "max", { - get: function () { - return this._max; - }, - enumerable: true, - configurable: true - }); - return RangeDomain; - }()); - exports.RangeDomain = RangeDomain; - //# sourceMappingURL=FilterModels.js.map - -/***/ }, -/* 33 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var ServiceRegistryImpl = (function () { - function ServiceRegistryImpl() { - this._services = {}; - } - ServiceRegistryImpl.prototype.registerService = function (service) { - this._services[service.serviceName] = service; - }; - ServiceRegistryImpl.prototype.getService = function (serviceName) { - if (!this._services.hasOwnProperty(serviceName)) { - throw new Error("No Service " + serviceName + " is registered"); - } - return this._services[serviceName]; - }; - return ServiceRegistryImpl; - }()); - /** - * static class used for getting access to the single instance - * of the ApiServiceRegistry - */ - var ApiServiceRegistry = (function () { - // Private to avoid anyone constructing this - function ApiServiceRegistry() { - } - Object.defineProperty(ApiServiceRegistry, "instance", { - /** - * Gets the singleton instance of the ServiceRegistry - */ - get: function () { - if (!window.__tableauApiServiceRegistry) { - ApiServiceRegistry.setInstance(new ServiceRegistryImpl()); - } - if (!window.__tableauApiServiceRegistry) { - throw new Error('Assigning service registry failed'); - } - return window.__tableauApiServiceRegistry; - }, - enumerable: true, - configurable: true - }); - /** - * Helper method to override the registry instance. Can be used by unit tests - * - * @param {ServiceRegistry} serviceRegistry The new registry - */ - ApiServiceRegistry.setInstance = function (serviceRegistry) { - window.__tableauApiServiceRegistry = serviceRegistry; - }; - return ApiServiceRegistry; - }()); - exports.ApiServiceRegistry = ApiServiceRegistry; - //# sourceMappingURL=ServiceRegistry.js.map - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var GetDataModels_1 = __webpack_require__(13); - var GetDataService_1 = __webpack_require__(23); - var GetDataServiceImpl = (function () { - function GetDataServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(GetDataServiceImpl.prototype, "serviceName", { - get: function () { - return "get-data-service" /* GetData */; - }, - enumerable: true, - configurable: true - }); - GetDataServiceImpl.prototype.getUnderlyingDataAsync = function (visualId, getType, ignoreAliases, ignoreSelection, includeAllColumns, maxRows) { - var _this = this; - // Create all of our parameters - var verb = getType === GetDataService_1.GetDataType.Summary ? api_internal_contract_1.VerbId.GetDataSummaryData : api_internal_contract_1.VerbId.GetUnderlyingData; - var parameters = {}; - parameters[api_internal_contract_1.ParameterId.VisualId] = visualId; - parameters[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases; - parameters[api_internal_contract_1.ParameterId.IgnoreSelection] = ignoreSelection; - parameters[api_internal_contract_1.ParameterId.IncludeAllColumns] = includeAllColumns; - parameters[api_internal_contract_1.ParameterId.MaxRows] = maxRows; - return this._dispatcher.execute(verb, parameters).then(function (response) { - var responseData = response.result; - return _this.processResultsTable(responseData.data, responseData.isSummary); - }); - }; - GetDataServiceImpl.prototype.getSelectedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetSelectedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.getHighlightedMarksAsync = function (visualId) { - var _this = this; - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetHighlightedMarks, parameters).then(function (response) { - var responseData = response.result; - return { - data: responseData.data.map(function (table) { return _this.processResultsTable(table, true); }) - }; - }); - var _a; - }; - GetDataServiceImpl.prototype.getDataSourceDataAsync = function (dataSourceId, ignoreAliases, maxRows, columnsToInclude) { - var _this = this; - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.DataSourceId] = dataSourceId, - _a[api_internal_contract_1.ParameterId.IgnoreAliases] = ignoreAliases, - _a[api_internal_contract_1.ParameterId.MaxRows] = maxRows, - _a[api_internal_contract_1.ParameterId.ColumnsToInclude] = columnsToInclude, - _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.GetDataSourceData, parameters).then(function (response) { - var responseData = response.result; - return _this.processResultsTable(responseData.data, false); - }); - var _a; - }; - GetDataServiceImpl.prototype.processResultsTable = function (responseData, isSummary) { - var headers = responseData.headers.map(function (h) { return new GetDataModels_1.Column(h.fieldCaption, Contract.DataType.String /*h.DataType*/, h.isReferenced, h.index); }); - // TODO This should be controlled by a flag indicating whether this api will respond marks info or not - var marks; - if (responseData.marks) { - marks = responseData.marks.map(function (h) { return new GetDataModels_1.MarkInfo(h.type, h.color, h.tupleId); }); - } - var table = responseData.dataTable.map(function (row) { - return row.map(function (cell) { - return new GetDataModels_1.DataValue(cell.value, cell.formattedValue); - }); - }); - if (marks) { - return new GetDataModels_1.DataTable(table, headers, table.length, isSummary, marks); - } - return new GetDataModels_1.DataTable(table, headers, table.length, isSummary); - }; - return GetDataServiceImpl; - }()); - exports.GetDataServiceImpl = GetDataServiceImpl; - //# sourceMappingURL=GetDataServiceImpl.js.map - -/***/ }, -/* 35 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Registration = (function () { - function Registration(_filterFn, _callbackFn) { - this._filterFn = _filterFn; - this._callbackFn = _callbackFn; - // Nothing Here - } - Registration.prototype.onNotification = function (notificationModel) { - if (this._filterFn(notificationModel)) { - this._callbackFn(notificationModel); - } - }; - return Registration; - }()); - var NotificationServiceImpl = (function () { - function NotificationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - this._handlers = {}; - this.dispatcher.registerNotificationHandler(this.onNotification.bind(this)); - } - Object.defineProperty(NotificationServiceImpl.prototype, "serviceName", { - get: function () { - return "notification-service" /* Notification */; - }, - enumerable: true, - configurable: true - }); - NotificationServiceImpl.prototype.registerHandler = function (id, filterFn, handler) { - var _this = this; - var handlers = this._handlers[id] || new Array(); - var registration = new Registration(filterFn, handler); - handlers.push(registration); - this._handlers[id] = handlers; - return function () { return _this.removeRegistration(id, registration); }; - }; - NotificationServiceImpl.prototype.hasHandlersForNotificationType = function (id) { - return this._handlers.hasOwnProperty(id); - }; - NotificationServiceImpl.prototype.onNotification = function (notification) { - if (!this.hasHandlersForNotificationType(notification.notificationId)) { - return; - } - // Go through and check for all the handlers of this particular notification - this._handlers[notification.notificationId].forEach(function (h) { return h.onNotification(notification.data); }); - }; - NotificationServiceImpl.prototype.removeRegistration = function (id, registration) { - if (!this.hasHandlersForNotificationType(id)) { - return; - } - this._handlers[id] = this._handlers[id].filter(function (reg) { return reg !== registration; }); - }; - return NotificationServiceImpl; - }()); - exports.NotificationServiceImpl = NotificationServiceImpl; - //# sourceMappingURL=NotificationServiceImpl.js.map - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(2); - var ParameterImpl_1 = __webpack_require__(37); - var Parameter_1 = __webpack_require__(10); - var ParametersServiceImpl = (function () { - function ParametersServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(ParametersServiceImpl.prototype, "serviceName", { - get: function () { - return "parameters-service" /* Parameters */; - }, - enumerable: true, - configurable: true - }); - ParametersServiceImpl.prototype.getParametersForSheetAsync = function (sheetPath, sheet) { - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.SheetPath] = sheetPath, - _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.GetParametersForSheet, parameters).then(function (response) { - // TODO - Check for error - var result = response.result; - return result.map(function (parameterInfo) { - var impl = new ParameterImpl_1.ParameterImpl(parameterInfo); - return new Parameter_1.Parameter(impl, sheet); - }); - }); - var _a; - }; - ParametersServiceImpl.prototype.changeParameterValueAsync = function (fieldName, newValue) { - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName, - _a[api_internal_contract_1.ParameterId.ParameterValue] = newValue, - _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.ChangeParameterValue, parameters).then(function (response) { - var result = response.result; - return result; - }); - var _a; - }; - ParametersServiceImpl.prototype.findParameterByNameAsync = function (name, sheet) { - return this.findParameterAsync(sheet, name, undefined); - }; - ParametersServiceImpl.prototype.findParameterByGlobalFieldNameAsync = function (fieldName, sheet) { - return this.findParameterAsync(sheet, undefined, fieldName); - }; - ParametersServiceImpl.prototype.findParameterAsync = function (sheet, name, fieldName) { - var parameters = {}; - if (name !== undefined) { - parameters[api_internal_contract_1.ParameterId.ParameterCaption] = name; - } - else if (fieldName !== undefined) { - parameters[api_internal_contract_1.ParameterId.ParameterFieldName] = fieldName; - } - else { - throw new Error('Missing require field name or caption'); - } - return this.dispatcher.execute(api_internal_contract_1.VerbId.FindParameter, parameters).then(function (response) { - var instanceOfParameterInfo = function (object) { - return 'fieldName' in object; - }; - // We need to check to see if we got a valid response back again - if (instanceOfParameterInfo(response.result)) { - var result = response.result; - var impl = new ParameterImpl_1.ParameterImpl(result); - return new Parameter_1.Parameter(impl, sheet); - } - else { - return undefined; - } - }); - }; - return ParametersServiceImpl; - }()); - exports.ParametersServiceImpl = ParametersServiceImpl; - //# sourceMappingURL=ParametersServiceImpl.js.map - -/***/ }, -/* 37 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_utils_1 = __webpack_require__(27); - var InternalToExternalEnumMappings_1 = __webpack_require__(31); - var ParameterChangedEvent_1 = __webpack_require__(38); - var GetDataModels_1 = __webpack_require__(13); - var ServiceRegistry_1 = __webpack_require__(33); - var SingleEventManagerImpl_1 = __webpack_require__(22); - var ParameterImpl = (function () { - function ParameterImpl(parameterInfo) { - this.setParameterInfo(parameterInfo); - } - Object.defineProperty(ParameterImpl.prototype, "name", { - get: function () { - return this._parameterInfo.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "currentValue", { - get: function () { - return new GetDataModels_1.DataValue(this._parameterInfo.currentValue.value, this._parameterInfo.currentValue.formattedValue); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "dataType", { - get: function () { - return InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dataType.convert(this._parameterInfo.dataType); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ParameterImpl.prototype, "allowableValues", { - get: function () { - return this._allowableValues; - }, - enumerable: true, - configurable: true - }); - ParameterImpl.prototype.changeValueAsync = function (newValue) { - var _this = this; - var coercedValue = api_utils_1.Param.serializeParamterValue(newValue); - var parametersService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return parametersService.changeParameterValueAsync(this._globalFieldName, coercedValue).then(function (parameterInfo) { - _this.setParameterInfo(parameterInfo); - return _this.currentValue; - }); - }; - /** - * Helper method which goes through and registers each event type this impl knows about - * with the NotificationService. It returns an array of SingleEventManager objects which - * can then be passed to an EventListenerManager to handle user registration / unregistration. - * - * @param sheet The sheet object which will be included with the event notifications - * @returns {Array} Collection of event managers to pass to an EventListenerManager - */ - ParameterImpl.prototype.initializeEvents = function (sheet) { - var _this = this; - var results = new Array(); - var notificationService; - try { - notificationService = ServiceRegistry_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); - } - catch (e) { - // If we don't have this service registered, just return - return results; - } - // Initialize all of the event managers we'll need (one for each event type) - var parameterEvent = new SingleEventManagerImpl_1.SingleEventManagerImpl(Contract.TableauEventType.ParameterChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.ParameterChanged, function (model) { - var fieldName = model; - return fieldName === _this._globalFieldName; - }, function (fieldName) { - parameterEvent.triggerEvent(function () { return new ParameterChangedEvent_1.ParameterChangedEvent(fieldName, sheet); }); - }); - results.push(parameterEvent); - return results; - }; - ParameterImpl.prototype.setParameterInfo = function (parameterInfo) { - this._parameterInfo = parameterInfo; - this._globalFieldName = parameterInfo.fieldName; - var type = InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.allowableValues.convert(parameterInfo.allowableValuesType); - var listValues; - var minValue; - var maxValue; - var stepSize; - var dateStepPeriod; - if (type === Contract.ParameterValueType.List) { - var values = parameterInfo.allowableValues || []; - listValues = values.map(function (val) { return new GetDataModels_1.DataValue(val.value, val.formattedValue); }); - } - else if (type === Contract.ParameterValueType.Range) { - minValue = parameterInfo.minValue && new GetDataModels_1.DataValue(parameterInfo.minValue.value, parameterInfo.minValue.formattedValue); - maxValue = parameterInfo.maxValue && new GetDataModels_1.DataValue(parameterInfo.maxValue.value, parameterInfo.maxValue.formattedValue); - stepSize = parameterInfo.stepSize; - dateStepPeriod = parameterInfo.dateStepPeriod && - InternalToExternalEnumMappings_1.InternalToExternalEnumMappings.dateStepPeriod.convert(parameterInfo.dateStepPeriod); - } - this._allowableValues = { - type: type, - allowableValues: listValues, - minValue: minValue, - maxValue: maxValue, - stepSize: stepSize, - dateStepPeriod: dateStepPeriod - }; - }; - return ParameterImpl; - }()); - exports.ParameterImpl = ParameterImpl; - //# sourceMappingURL=ParameterImpl.js.map - -/***/ }, -/* 38 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var ServiceRegistry_1 = __webpack_require__(33); - var TableauSheetEvent_1 = __webpack_require__(19); - var ParameterChangedEvent = (function (_super) { - __extends(ParameterChangedEvent, _super); - function ParameterChangedEvent(_globalFieldName, sheet) { - var _this = _super.call(this, Contract.TableauEventType.ParameterChanged, sheet) || this; - _this._globalFieldName = _globalFieldName; - return _this; - } - ParameterChangedEvent.prototype.getParameterAsync = function () { - // Call down to our service to get the parameter back via its field name - var service = ServiceRegistry_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.findParameterByGlobalFieldNameAsync(this._globalFieldName, this.sheet).then(function (parameter) { - if (parameter === undefined) { - throw new Error('Unable to find parameter'); - } - return parameter; - }); - }; - return ParameterChangedEvent; - }(TableauSheetEvent_1.TableauSheetEvent)); - exports.ParameterChangedEvent = ParameterChangedEvent; - //# sourceMappingURL=ParameterChangedEvent.js.map - -/***/ }, -/* 39 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var SelectionModels_1 = __webpack_require__(40); - var SelectionServiceImpl = (function () { - function SelectionServiceImpl(dispatcher) { - this._dispatcher = dispatcher; - } - Object.defineProperty(SelectionServiceImpl.prototype, "serviceName", { - get: function () { - return "selection-service" /* Selection */; - }, - enumerable: true, - configurable: true - }); - /** - * Method to clear all the selected marks for the given worksheet. - * - * @param visualId - */ - SelectionServiceImpl.prototype.clearSelectedMarksAsync = function (visualId) { - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.VisualId] = visualId, _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.ClearSelectedMarks, parameters).then(function (response) { - return; // Expecting an empty model and hence the void response. - }); - var _a; - }; - /** - * Method to select marks for the given worksheet. - * - * @param visualId - * @param selectionCriteria - * @param selectionUpdateType - */ - SelectionServiceImpl.prototype.selectMarksByValueAsync = function (visualId, selectionCriterias, selectionUpdateType) { - if (selectionCriterias.length === 0) { - throw new Error('Invalid selection criteria. Selections missing.'); - } - var selectionType = this.validateSelectionUpdateType(selectionUpdateType); - var selectionCriteriaType = this.validateSelectionCriteria(selectionCriterias[0]); - var selectionModelContainer = this.parseSelectionMarks(selectionCriterias, selectionCriteriaType); - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.VisualId] = visualId, - _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType, - _a); - switch (selectionCriteriaType) { - case SelectionCriteriaType.HierarchicalType: { - parameters[api_internal_contract_1.ParameterId.HierValSelectionModels] = selectionModelContainer.hierModelArr; - break; - } - case SelectionCriteriaType.RangeType: { - parameters[api_internal_contract_1.ParameterId.QuantRangeSelectionModels] = selectionModelContainer.quantModelArr; - break; - } - case SelectionCriteriaType.DimensionType: { - parameters[api_internal_contract_1.ParameterId.DimValSelectionModels] = selectionModelContainer.dimModelArr; - break; - } - default: - break; - } - return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) { - // Expecting an empty model and hence the void response. - return; - // TODO Investigate the error response with multiple output params and throw error accordingly. - }); - var _a; - }; - /** - * Method to select marks for the given worksheet. - * - * @param visualId - * @param MarkInfo - * @param selectionUpdateType - */ - SelectionServiceImpl.prototype.selectMarksByIdAsync = function (visualId, marks, selectionUpdateType) { - if (marks.length === 0) { - throw new Error('Invalid selection. Marks info missing.'); - } - var selectionType = this.validateSelectionUpdateType(selectionUpdateType); - var selectionModelContainer = this.parseSelectionIds(marks); - var parameters = (_a = {}, - _a[api_internal_contract_1.ParameterId.VisualId] = visualId, - _a[api_internal_contract_1.ParameterId.SelectionUpdateType] = selectionType, - _a[api_internal_contract_1.ParameterId.Selection] = selectionModelContainer.selection, - _a); - return this._dispatcher.execute(api_internal_contract_1.VerbId.SelectByValue, parameters).then(function (response) { - // Expecting an empty model and hence the void response. - return; - // TODO Investigate the error response with multiple output params and throw error accordingly. - }); - var _a; - }; - /** - * Method to prepare the pres models for selection by MarksInfo - * @param marks - */ - SelectionServiceImpl.prototype.parseSelectionIds = function (marks) { - var ids = []; - var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer(); - for (var i = 0; i < marks.length; i++) { - var tupleId = marks[i].tupleId; - if (tupleId !== undefined && tupleId !== null) { - ids.push(tupleId.toString()); // collect the tuple ids - } - else { - throw new Error('Invalid tupleId provided.'); - } - } - if (ids.length !== 0) { - var tupleSelectionModel = new SelectionModels_1.TupleSelectionModel(); - tupleSelectionModel.selectionType = 'tuples'; - tupleSelectionModel.objectIds = ids; - selectionModelContainer.selection = tupleSelectionModel; - } - return selectionModelContainer; - }; - /** - * Method to prepare the pres models for selection by values. - * - * Supports 3 types for selection: - * 1) hierarchical value based selection - * 2) range value based selection - * 3) Dimension value based selection - * - * @param marks - * @param hierModelArr - * @param dimModelArr - * @param quantModelArr - * @param selection - */ - SelectionServiceImpl.prototype.parseSelectionMarks = function (selectionCriterias, selectionType) { - var selectionModelContainer = new SelectionModels_1.SelectionModelsContainer(); - var mixedSelectionsError = false; - for (var i = 0; i < selectionCriterias.length; i++) { - var st = selectionCriterias[i]; - if (st.fieldName && (st.value !== undefined && st.value !== null)) { - var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g'); - var rangeOption = st.value; - if (catRegex.test(st.fieldName)) { - if (selectionType === SelectionCriteriaType.HierarchicalType) { - var hierModel = this.addToParamsList(st.fieldName, st.value); - selectionModelContainer.hierModelArr.push(hierModel); - } - else { - mixedSelectionsError = true; - break; - } - } - else if (rangeOption.min !== undefined - && rangeOption.max !== undefined) { - if (selectionType === SelectionCriteriaType.RangeType) { - var quantModel = this.addToRangeParamsList(st.fieldName, rangeOption); - selectionModelContainer.quantModelArr.push(quantModel); - } - else { - mixedSelectionsError = true; - break; - } - } - else { - if (selectionType === SelectionCriteriaType.DimensionType) { - var dimModel = this.addToParamsList(st.fieldName, st.value); - selectionModelContainer.dimModelArr.push(dimModel); - } - else { - mixedSelectionsError = true; - break; - } - } - } - } - if (mixedSelectionsError) { - throw new Error('Different types of selection criterias provided.'); - } - return selectionModelContainer; - }; - /** - * - * @param selectionCriterias Validate and determine the selection criterias type. - */ - SelectionServiceImpl.prototype.validateSelectionCriteria = function (selectionCriteria) { - var selectionType; - // Determine the type of selection, this command is by looking at the first selection - var crit = selectionCriteria; - var catRegex = new RegExp('(\[[A-Za-z0-9]+]).*', 'g'); - var rangeOption = crit.value; - if (crit.fieldName && (crit.value !== undefined && crit.value !== null)) { - if (catRegex.test(crit.fieldName)) { - selectionType = SelectionCriteriaType.HierarchicalType; - } - else if (rangeOption.min !== undefined - && rangeOption.max !== undefined) { - selectionType = SelectionCriteriaType.RangeType; - } - else { - selectionType = SelectionCriteriaType.DimensionType; - } - } - else { - throw new Error('Invalid selection criteria format.'); - } - return selectionType; - }; - /** - * Method to transform the key value pair into value based pres model object. - * - * @param valueSelectionModel - * @param fieldName - * @param value - */ - SelectionServiceImpl.prototype.addToParamsList = function (fieldName, value) { - var valueSelectionModel = new SelectionModels_1.ValueSelectionModel(); - var markValues = []; - if (value instanceof Array) { - var valueArr = value; - for (var i = 0; i < valueArr.length; i++) { - markValues.push(valueArr[i].toString()); - } - } - else { - markValues.push(value.toString()); - } - valueSelectionModel.qualifiedFieldCaption = fieldName; - valueSelectionModel.selectValues = markValues; - return valueSelectionModel; - }; - /** - * Method to transform the key value pair into range based selection pres model. - * - * TODO: Need to handle the parsing of date type values. - * - * @param valueSelectionModel - * @param fieldName - * @param value - */ - SelectionServiceImpl.prototype.addToRangeParamsList = function (fieldName, value) { - var rangeSelectionModel = new SelectionModels_1.RangeSelectionModel(); - rangeSelectionModel.qualifiedFieldCaption = fieldName; - if (value.max !== undefined && value.max !== null) { - rangeSelectionModel.maxValue = value.max.toString(); - } - if (value.min !== undefined && value.min !== null) { - rangeSelectionModel.minValue = value.min.toString(); - } - rangeSelectionModel.included = this.validateNullOptionType(value.nullOption); - return rangeSelectionModel; - }; - /** - * Method to validate the selection update type. - * - * @param selectionUpdateType - */ - SelectionServiceImpl.prototype.validateSelectionUpdateType = function (selectionUpdateType) { - if (selectionUpdateType === Contract.SelectionUpdateType.Replace) { - return api_internal_contract_1.SelectionUpdateType.Replace; - } - else if (selectionUpdateType === Contract.SelectionUpdateType.Add) { - return api_internal_contract_1.SelectionUpdateType.Add; - } - else if (selectionUpdateType === Contract.SelectionUpdateType.Remove) { - return api_internal_contract_1.SelectionUpdateType.Remove; - } - return api_internal_contract_1.SelectionUpdateType.Replace; - }; - /** - * Method to validate the include type for range selection. - * - * @param nullOption - */ - SelectionServiceImpl.prototype.validateNullOptionType = function (nullOption) { - if (nullOption) { - if (nullOption === Contract.FilterNullOption.NullValues) { - return api_internal_contract_1.QuantitativeIncludedValues.IncludeNull; - } - else if (nullOption === Contract.FilterNullOption.NonNullValues) { - return api_internal_contract_1.QuantitativeIncludedValues.IncludeNonNull; - } - else if (nullOption === Contract.FilterNullOption.AllValues) { - return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll; - } - } - return api_internal_contract_1.QuantitativeIncludedValues.IncludeAll; - }; - return SelectionServiceImpl; - }()); - exports.SelectionServiceImpl = SelectionServiceImpl; - /** - * Enum for the different selection criteria types. - */ - var SelectionCriteriaType; - (function (SelectionCriteriaType) { - SelectionCriteriaType[SelectionCriteriaType["HierarchicalType"] = 1] = "HierarchicalType"; - SelectionCriteriaType[SelectionCriteriaType["RangeType"] = 2] = "RangeType"; - SelectionCriteriaType[SelectionCriteriaType["DimensionType"] = 3] = "DimensionType"; - SelectionCriteriaType[SelectionCriteriaType["TuplesType"] = 4] = "TuplesType"; - })(SelectionCriteriaType || (SelectionCriteriaType = {})); - //# sourceMappingURL=SelectionServiceImpl.js.map - -/***/ }, -/* 40 */ -/***/ function(module, exports) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Selection Model. - */ - var SelectionModel = (function () { - function SelectionModel() { - } - return SelectionModel; - }()); - exports.SelectionModel = SelectionModel; - /** - * Value based selection model. Meant for hierarchical, range and categorical selections. - */ - var ValueSelectionModel = (function (_super) { - __extends(ValueSelectionModel, _super); - function ValueSelectionModel() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.selectValues = []; - return _this; - } - return ValueSelectionModel; - }(SelectionModel)); - exports.ValueSelectionModel = ValueSelectionModel; - /** - * Hierarchical value selection model - */ - var HierarchicalSelectionModel = (function (_super) { - __extends(HierarchicalSelectionModel, _super); - function HierarchicalSelectionModel() { - return _super !== null && _super.apply(this, arguments) || this; - } - return HierarchicalSelectionModel; - }(ValueSelectionModel)); - exports.HierarchicalSelectionModel = HierarchicalSelectionModel; - /** - * Range based value selection model - */ - var RangeSelectionModel = (function (_super) { - __extends(RangeSelectionModel, _super); - function RangeSelectionModel() { - return _super !== null && _super.apply(this, arguments) || this; - } - return RangeSelectionModel; - }(SelectionModel)); - exports.RangeSelectionModel = RangeSelectionModel; - /** - * Dimension value selection model - */ - var DimensionSelectionModel = (function (_super) { - __extends(DimensionSelectionModel, _super); - function DimensionSelectionModel() { - return _super !== null && _super.apply(this, arguments) || this; - } - return DimensionSelectionModel; - }(ValueSelectionModel)); - exports.DimensionSelectionModel = DimensionSelectionModel; - /** - * Tuple based selection model - */ - var TupleSelectionModel = (function () { - function TupleSelectionModel() { - this.objectIds = []; - } - return TupleSelectionModel; - }()); - exports.TupleSelectionModel = TupleSelectionModel; - /** - * Container class to populate all the selection models when parsing input - */ - var SelectionModelsContainer = (function () { - function SelectionModelsContainer() { - this.hierModelArr = []; - this.dimModelArr = []; - this.quantModelArr = []; - } - return SelectionModelsContainer; - }()); - exports.SelectionModelsContainer = SelectionModelsContainer; - //# sourceMappingURL=SelectionModels.js.map - -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(42); - var Dashboard = (function (_super) { - __extends(Dashboard, _super); - function Dashboard(_dashboardImpl) { - var _this = _super.call(this, _dashboardImpl) || this; - _this._dashboardImpl = _dashboardImpl; - _dashboardImpl.initializeWithPublicInterfaces(_this); - return _this; - } - Object.defineProperty(Dashboard.prototype, "worksheets", { - get: function () { - return this._dashboardImpl.worksheets; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Dashboard.prototype, "objects", { - get: function () { - return this._dashboardImpl.objects; - }, - enumerable: true, - configurable: true - }); - return Dashboard; - }(Sheet_1.Sheet)); - exports.Dashboard = Dashboard; - //# sourceMappingURL=Dashboard.js.map - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var Sheet = (function (_super) { - __extends(Sheet, _super); - function Sheet(_sheetImpl) { - var _this = _super.call(this) || this; - _this._sheetImpl = _sheetImpl; - return _this; - } - Object.defineProperty(Sheet.prototype, "name", { - get: function () { - return this._sheetImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "sheetType", { - get: function () { - return this._sheetImpl.sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Sheet.prototype, "size", { - get: function () { - return this._sheetImpl.size; - }, - enumerable: true, - configurable: true - }); - Sheet.prototype.findParameterAsync = function (parameterName) { - return this._sheetImpl.findParameterAsync(parameterName, this); - }; - Sheet.prototype.getParametersAsync = function () { - return this._sheetImpl.getParametersAsync(this); - }; - return Sheet; - }(api_shared_1.EventListenerManager)); - exports.Sheet = Sheet; - //# sourceMappingURL=Sheet.js.map - -/***/ }, -/* 43 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external DashboardContent namespace. - * This does not follow the Impl pattern as DashboardContent is - * currently just a (single) property bag. - */ - var DashboardContent = (function () { - function DashboardContent(_dashboard) { - this._dashboard = _dashboard; - } - Object.defineProperty(DashboardContent.prototype, "dashboard", { - get: function () { - return this._dashboard; - }, - enumerable: true, - configurable: true - }); - return DashboardContent; - }()); - exports.DashboardContent = DashboardContent; - //# sourceMappingURL=DashboardContent.js.map - -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - /** - * Implementation of the external environment namespace. - * Environment does not follow the Impl pattern as it is - * just a property bag. - */ - var Environment = (function () { - function Environment(addInEnvironment) { - this._apiVersion = addInEnvironment.apiVersion; - this._context = api_shared_1.InternalToExternalEnumMappings.addInContext.convert(addInEnvironment.addInContext); - this._language = addInEnvironment.addInLanguage; - this._locale = addInEnvironment.addInLocale; - this._mode = api_shared_1.InternalToExternalEnumMappings.addInMode.convert(addInEnvironment.addInMode); - this._operatingSystem = addInEnvironment.operatingSystem; - this._tableauVersion = addInEnvironment.tableauVersion; - } - Object.defineProperty(Environment.prototype, "apiVersion", { - get: function () { - return this._apiVersion; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "context", { - get: function () { - return this._context; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "language", { - get: function () { - return this._language; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "locale", { - get: function () { - return this._locale; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "mode", { - get: function () { - return this._mode; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "operatingSystem", { - get: function () { - return this._operatingSystem; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Environment.prototype, "tableauVersion", { - get: function () { - return this._tableauVersion; - }, - enumerable: true, - configurable: true - }); - return Environment; - }()); - exports.Environment = Environment; - //# sourceMappingURL=Environment.js.map - -/***/ }, -/* 45 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external settings namespace. - */ - var Settings = (function () { - function Settings(settingsImpl) { - this.settingsImpl = settingsImpl; - } - Settings.prototype.erase = function (key) { - this.settingsImpl.erase(key); - }; - Settings.prototype.get = function (key) { - return this.settingsImpl.get(key); - }; - Settings.prototype.getAll = function () { - return this.settingsImpl.getAll(); - }; - Object.defineProperty(Settings.prototype, "isModified", { - get: function () { - return this.settingsImpl.isModified; - }, - enumerable: true, - configurable: true - }); - Settings.prototype.saveAsync = function () { - return this.settingsImpl.saveAsync(); - }; - Settings.prototype.set = function (key, value) { - this.settingsImpl.set(key, value); - }; - return Settings; - }()); - exports.Settings = Settings; - //# sourceMappingURL=Settings.js.map - -/***/ }, -/* 46 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var InitializationServiceImpl_1 = __webpack_require__(47); - var SettingsServiceImpl_1 = __webpack_require__(48); - function registerAllAddInServices(dispatcher) { - api_shared_1.ApiServiceRegistry.instance.registerService(new InitializationServiceImpl_1.InitializationServiceImpl(dispatcher)); - api_shared_1.ApiServiceRegistry.instance.registerService(new SettingsServiceImpl_1.SettingsServiceImpl(dispatcher)); - } - exports.registerAllAddInServices = registerAllAddInServices; - //# sourceMappingURL=RegisterAllAddInServices.js.map - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(2); - var InitializationServiceImpl = (function () { - function InitializationServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(InitializationServiceImpl.prototype, "serviceName", { - get: function () { - return "InitializationService" /* InitializationService */; - }, - enumerable: true, - configurable: true - }); - InitializationServiceImpl.prototype.initializeDashboardAddInAsync = function () { - // We don't need any parameters for this call because they are added in for us by the dispatcher - return this.dispatcher.execute(api_internal_contract_1.VerbId.InitializeAddIn, {}).then(function (response) { - // TODO - Validate return value - var result = response.result; - return result; - }); - }; - return InitializationServiceImpl; - }()); - exports.InitializationServiceImpl = InitializationServiceImpl; - //# sourceMappingURL=InitializationServiceImpl.js.map - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_internal_contract_1 = __webpack_require__(2); - var SettingsServiceImpl = (function () { - function SettingsServiceImpl(dispatcher) { - this.dispatcher = dispatcher; - } - Object.defineProperty(SettingsServiceImpl.prototype, "serviceName", { - get: function () { - return "SettingsService" /* SettingsService */; - }, - enumerable: true, - configurable: true - }); - SettingsServiceImpl.prototype.saveSettingsAsync = function (settings) { - var parameters = (_a = {}, _a[api_internal_contract_1.ParameterId.SettingsValues] = settings, _a); - return this.dispatcher.execute(api_internal_contract_1.VerbId.SaveAddInSettings, parameters).then(function (value) { - var result = value.result; - if (!result || !result.settingsValues) { - throw new Error('Internal error saving settings.'); - } - return (result.settingsValues); - }); - var _a; - }; - return SettingsServiceImpl; - }()); - exports.SettingsServiceImpl = SettingsServiceImpl; - //# sourceMappingURL=SettingsServiceImpl.js.map - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Represents the current version of the addin library - */ - var VersionNumber = (function () { - // private constructor so everyone uses the singleton instance - function VersionNumber(versionString) { - var parts = versionString.split('.').map(function (p) { return parseInt(p, 10); }); - if (parts.length !== 3) { - throw new Error('Invalid version number: ' + versionString); - } - this._major = parts[0]; - this._minor = parts[1]; - this._fix = parts[2]; - } - Object.defineProperty(VersionNumber, "Instance", { - /** - * Gets the singleton instance of the version number. - */ - get: function () { - return VersionNumber._instance; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "major", { - get: function () { - return this._major; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "minor", { - get: function () { - return this._minor; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(VersionNumber.prototype, "fix", { - get: function () { - return this._fix; - }, - enumerable: true, - configurable: true - }); - // Using some webpack tricks, we can inject this version into our code (kinda like c++ preprocessor stuff) - VersionNumber._instance = new VersionNumber(("0.5.0")); - return VersionNumber; - }()); - exports.VersionNumber = VersionNumber; - //# sourceMappingURL=VersionNumber.js.map - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_shared_1 = __webpack_require__(8); - var DashboardObject_1 = __webpack_require__(51); - var Worksheet_1 = __webpack_require__(52); - var SheetImpl_1 = __webpack_require__(53); - var SheetInfoImpl_1 = __webpack_require__(54); - var WorksheetImpl_1 = __webpack_require__(55); - var DashboardImpl = (function (_super) { - __extends(DashboardImpl, _super); - function DashboardImpl(_info, _sheetPath) { - var _this = _super.call(this, new SheetInfoImpl_1.SheetInfoImpl(_info.name, Contract.SheetType.Dashboard, new api_shared_1.Size(_info.size.h, _info.size.w))) || this; - _this._info = _info; - _this._sheetPath = _sheetPath; - return _this; - } - Object.defineProperty(DashboardImpl.prototype, "worksheets", { - get: function () { - return this._worksheets; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardImpl.prototype, "objects", { - get: function () { - return this._objects; - }, - enumerable: true, - configurable: true - }); - DashboardImpl.prototype.initializeWithPublicInterfaces = function (dashboard) { - this._worksheets = new Array(); - this._objects = new Array(); - // Process all the zones which are contained in this dashboard - for (var _i = 0, _a = this._info.zones; _i < _a.length; _i++) { - var zone = _a[_i]; - var worksheet = undefined; - var zoneSize = new api_shared_1.Size(zone.height, zone.width); - if (zone.zoneType === api_internal_contract_1.DashboardObjectType.Worksheet) { - var sheetInfo = new SheetInfoImpl_1.SheetInfoImpl(zone.name, Contract.SheetType.Worksheet, zoneSize); - var vizId = { - worksheet: zone.name, - dashboard: this._info.name, - storyboard: this._sheetPath.storyboard, - flipboardZoneID: this._sheetPath.flipboardZoneID, - storyPointID: this._sheetPath.storyPointID - }; - var worksheetImpl = new WorksheetImpl_1.WorksheetImpl(sheetInfo, vizId, dashboard); - worksheet = new Worksheet_1.Worksheet(worksheetImpl); - this._worksheets.push(worksheet); - } - var zonePoint = new api_shared_1.Point(zone.x, zone.y); - var dashboardObject = new DashboardObject_1.DashboardObject(dashboard, api_shared_1.InternalToExternalEnumMappings.dashboardObjectType.convert(zone.zoneType), zonePoint, zoneSize, worksheet); - this._objects.push(dashboardObject); - } - }; - return DashboardImpl; - }(SheetImpl_1.SheetImpl)); - exports.DashboardImpl = DashboardImpl; - //# sourceMappingURL=DashboardImpl.js.map - -/***/ }, -/* 51 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the dashboard objects - the zones in a dashboard. - * This does not follow the Impl pattern as it is just a property bag. - */ - var DashboardObject = (function () { - function DashboardObject(_dashboard, _type, _position, _size, _worksheet) { - this._dashboard = _dashboard; - this._type = _type; - this._position = _position; - this._size = _size; - this._worksheet = _worksheet; - } - Object.defineProperty(DashboardObject.prototype, "dashboard", { - get: function () { - return this._dashboard; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "type", { - get: function () { - return this._type; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "position", { - get: function () { - return this._position; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "size", { - get: function () { - return this._size; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DashboardObject.prototype, "worksheet", { - get: function () { - return this._worksheet; - }, - enumerable: true, - configurable: true - }); - return DashboardObject; - }()); - exports.DashboardObject = DashboardObject; - //# sourceMappingURL=DashboardObject.js.map - -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Sheet_1 = __webpack_require__(42); - var Worksheet = (function (_super) { - __extends(Worksheet, _super); - function Worksheet(_worksheetImpl) { - var _this = _super.call(this, _worksheetImpl) || this; - _this._worksheetImpl = _worksheetImpl; - // Call to initialize events and then call down to the event listener manager to handle things - _this._worksheetImpl.initializeEvents(_this).forEach(function (e) { return _this.addNewEventType(e); }); - return _this; - } - Object.defineProperty(Worksheet.prototype, "parentDashboard", { - get: function () { - return this._worksheetImpl.parentDashboard; - }, - enumerable: true, - configurable: true - }); - Worksheet.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - return this._worksheetImpl.applyFilterAsync(fieldName, values, updateType, options); - }; - Worksheet.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - return this._worksheetImpl.applyRangeFilterAsync(fieldName, filterOptions); - }; - Worksheet.prototype.clearFilterAsync = function (fieldName) { - return this._worksheetImpl.clearFilterAsync(fieldName); - }; - Worksheet.prototype.getAnalyticObjectsAsync = function () { - throw new Error('API call not yet implemented.'); - }; - Worksheet.prototype.getDataSourcesAsync = function () { - return this._worksheetImpl.getDataSourcesAsync(); - }; - Worksheet.prototype.getEncodingsAsync = function () { - throw new Error('API call not yet implemented.'); - }; - Worksheet.prototype.getFiltersAsync = function () { - return this._worksheetImpl.getFiltersAsync(); - }; - Worksheet.prototype.getSelectedMarksAsync = function () { - return this._worksheetImpl.getSelectedMarksAsync(); - }; - Worksheet.prototype.getHighlightedMarksAsync = function () { - return this._worksheetImpl.getHighlightedMarksAsync(); - }; - Worksheet.prototype.getSummaryDataAsync = function (options) { - return this._worksheetImpl.getSummaryDataAsync(options); - }; - Worksheet.prototype.getUnderlyingDataAsync = function (options) { - return this._worksheetImpl.getUnderlyingDataAsync(options); - }; - Worksheet.prototype.clearSelectedMarksAsync = function () { - return this._worksheetImpl.clearSelectedMarksAsync(); - }; - Worksheet.prototype.selectMarksByIDAsync = function (marksInfo, updateType) { - throw new Error('API call not yet implemented.'); - }; - Worksheet.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) { - return this._worksheetImpl.selectMarksByValueAsync(selections, selectionUpdateType); - }; - Worksheet.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) { - return this._worksheetImpl.selectMarksByIdAsync(selections, selectionUpdateType); - }; - return Worksheet; - }(Sheet_1.Sheet)); - exports.Worksheet = Worksheet; - //# sourceMappingURL=Worksheet.js.map - -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var SheetImpl = (function () { - function SheetImpl(_sheetInfoImpl) { - this._sheetInfoImpl = _sheetInfoImpl; - } - Object.defineProperty(SheetImpl.prototype, "name", { - get: function () { - return this._sheetInfoImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "sheetType", { - get: function () { - return this._sheetInfoImpl.sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "sheetPath", { - get: function () { - return this._sheetInfoImpl.sheetPath; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetImpl.prototype, "size", { - get: function () { - return this._sheetInfoImpl.sheetSize; - }, - enumerable: true, - configurable: true - }); - SheetImpl.prototype.findParameterAsync = function (parameterName, sheet) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.findParameterByNameAsync(parameterName, sheet); - }; - SheetImpl.prototype.getParametersAsync = function (sheet) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("parameters-service" /* Parameters */); - return service.getParametersForSheetAsync(this.sheetPath, sheet); - }; - return SheetImpl; - }()); - exports.SheetImpl = SheetImpl; - //# sourceMappingURL=SheetImpl.js.map - -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_external_contract_1 = __webpack_require__(16); - var SheetInfoImpl = (function () { - function SheetInfoImpl(_name, _sheetType, _sheetSize) { - this._name = _name; - this._sheetType = _sheetType; - this._sheetSize = _sheetSize; - } - Object.defineProperty(SheetInfoImpl.prototype, "name", { - get: function () { - return this._name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetInfoImpl.prototype, "sheetSize", { - get: function () { - return this._sheetSize; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetInfoImpl.prototype, "sheetType", { - get: function () { - return this._sheetType; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SheetInfoImpl.prototype, "sheetPath", { - get: function () { - return { - sheetName: this.name, - isDashboard: this.sheetType === api_external_contract_1.SheetType.Dashboard - // TODO - Stories - }; - }, - enumerable: true, - configurable: true - }); - return SheetInfoImpl; - }()); - exports.SheetInfoImpl = SheetInfoImpl; - //# sourceMappingURL=SheetInfoImpl.js.map - -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - })(); - Object.defineProperty(exports, "__esModule", { value: true }); - var Contract = __webpack_require__(16); - var api_internal_contract_1 = __webpack_require__(2); - var api_shared_1 = __webpack_require__(8); - var DataSource_1 = __webpack_require__(56); - var DataSourceImpl_1 = __webpack_require__(57); - var SheetImpl_1 = __webpack_require__(53); - var visualIdsAreEqual = function (a, b) { - return a && b && - a.worksheet === b.worksheet && - a.dashboard === b.dashboard && - a.storyboard === b.storyboard && - a.storyPointID === b.storyPointID && - a.flipboardZoneID === b.flipboardZoneID; - }; - var WorksheetImpl = (function (_super) { - __extends(WorksheetImpl, _super); - function WorksheetImpl(sheetInfoImpl, _visualId, _parentDashboard) { - var _this = _super.call(this, sheetInfoImpl) || this; - _this._visualId = _visualId; - _this._parentDashboard = _parentDashboard; - return _this; - } - Object.defineProperty(WorksheetImpl.prototype, "parentDashboard", { - get: function () { - return this._parentDashboard; - }, - enumerable: true, - configurable: true - }); - /** - * Helper method which goes through and registers each event type this impl knows about - * with the NotificationService. It returns an array of SingleEventManager objects which - * can then be passed to an EventListenerManager to handle user registration / unregistration. - * - * @param {Worksheet} worksheet The worksheet object which will be included with the event notifications - * @returns {Array} Collection of event managers to pass to an EventListenerManager - */ - WorksheetImpl.prototype.initializeEvents = function (worksheet) { - var _this = this; - var results = new Array(); - var notificationService; - try { - notificationService = api_shared_1.ApiServiceRegistry.instance.getService("notification-service" /* Notification */); - } - catch (e) { - // If we don't have this service registered, just return - return results; - } - // Initialize all of the event managers we'll need (one for each event type) - var marksEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.MarkSelectionChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.SelectedMarksChanged, function (model) { - var visualId = model; - return visualIdsAreEqual(visualId, _this.visualId); - }, function (viz) { - marksEvent.triggerEvent(function () { return new api_shared_1.MarksSelectedEvent(worksheet); }); - }); - var filterEvent = new api_shared_1.SingleEventManagerImpl(Contract.TableauEventType.FilterChanged); - notificationService.registerHandler(api_internal_contract_1.NotificationId.FilterChanged, function (model) { - var filterEventResponse = model; - return _this.visualId.worksheet === filterEventResponse.visualId.worksheet; - }, function (event) { - filterEvent.triggerEvent(function () { return new api_shared_1.FilterChangedEvent(worksheet, event.fieldName); }); - }); - results.push(marksEvent); - results.push(filterEvent); - // TODO - other event types - return results; - }; - Object.defineProperty(WorksheetImpl.prototype, "visualId", { - get: function () { - return this._visualId; - }, - enumerable: true, - configurable: true - }); - WorksheetImpl.prototype.applyFilterAsync = function (fieldName, values, updateType, options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyFilterAsync(this.visualId, fieldName, values, updateType, options); - }; - WorksheetImpl.prototype.applyRangeFilterAsync = function (fieldName, filterOptions) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.applyRangeFilterAsync(this.visualId, fieldName, filterOptions); - }; - WorksheetImpl.prototype.clearFilterAsync = function (fieldName) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.clearFilterAsync(this.visualId, fieldName); - }; - WorksheetImpl.prototype.getDataSourcesAsync = function () { - var _this = this; - var service = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */); - return service.getDataSourcesAsync().then(function (result) { - var dataSchema = result; - var worksheetDataSourceInfo = dataSchema.worksheetDataSchemaMap[_this.name]; - var dataSources = []; - // First, add the primary datasource. By convention, it comes first in the returned array. - var primaryId = worksheetDataSourceInfo.primaryDataSource; - dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[primaryId])); - // Then, loop through any secondary data sources and add them. - for (var _i = 0, _a = worksheetDataSourceInfo.referencedDataSourceList; _i < _a.length; _i++) { - var secondaryId = _a[_i]; - if (secondaryId !== primaryId) { - dataSources.push(_this.createDataSourceFromInfo(dataSchema.dataSources[secondaryId])); - } - } - return dataSources; - }); - }; - WorksheetImpl.prototype.getFiltersAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("filter-service" /* Filter */); - return service.getFiltersAsync(this.visualId); - }; - WorksheetImpl.prototype.getSelectedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getSelectedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getHighlightedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return service.getHighlightedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.getSummaryDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Summary, !!options.ignoreAliases, !!options.ignoreSelection, true, 0); - }; - WorksheetImpl.prototype.getUnderlyingDataAsync = function (options) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - options = options || {}; - return service.getUnderlyingDataAsync(this.visualId, api_shared_1.GetDataType.Underlying, !!options.ignoreAliases, !!options.ignoreSelection, !!options.includeAllColumns, options.maxRows || 0); - }; - WorksheetImpl.prototype.clearSelectedMarksAsync = function () { - var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); - return service.clearSelectedMarksAsync(this.visualId); - }; - WorksheetImpl.prototype.selectMarksByValueAsync = function (selections, selectionUpdateType) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); - return service.selectMarksByValueAsync(this.visualId, selections, selectionUpdateType); - }; - WorksheetImpl.prototype.selectMarksByIdAsync = function (selections, selectionUpdateType) { - var service = api_shared_1.ApiServiceRegistry.instance.getService("selection-service" /* Selection */); - return service.selectMarksByIdAsync(this.visualId, selections, selectionUpdateType); - }; - WorksheetImpl.prototype.createDataSourceFromInfo = function (dataSourceInfo) { - var dataSourceImpl = new DataSourceImpl_1.DataSourceImpl(dataSourceInfo); - var dataSource = new DataSource_1.DataSource(dataSourceImpl); - dataSourceImpl.initializeWithPublicInterfaces(dataSource); - return dataSource; - }; - return WorksheetImpl; - }(SheetImpl_1.SheetImpl)); - exports.WorksheetImpl = WorksheetImpl; - //# sourceMappingURL=WorksheetImpl.js.map - -/***/ }, -/* 56 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var DataSource = (function () { - function DataSource(_dataSourceImpl) { - this._dataSourceImpl = _dataSourceImpl; - } - Object.defineProperty(DataSource.prototype, "name", { - get: function () { - return this._dataSourceImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSource.prototype, "id", { - get: function () { - return this._dataSourceImpl.id; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSource.prototype, "fields", { - get: function () { - return this._dataSourceImpl.fields; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSource.prototype, "connectionSummaries", { - get: function () { - return this._dataSourceImpl.connectionSummaries; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSource.prototype, "extractUpdateTime", { - get: function () { - return this._dataSourceImpl.extractUpdateTime; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSource.prototype, "isExtract", { - get: function () { - return this._dataSourceImpl.isExtract; - }, - enumerable: true, - configurable: true - }); - DataSource.prototype.refreshAsync = function () { - return this._dataSourceImpl.refreshAsync(); - }; - DataSource.prototype.getUnderlyingDataAsync = function (options) { - return this._dataSourceImpl.getUnderlyingDataAsync(options); - }; - return DataSource; - }()); - exports.DataSource = DataSource; - //# sourceMappingURL=DataSource.js.map - -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var FieldImpl_1 = __webpack_require__(58); - var Field_1 = __webpack_require__(59); - var DataSourceImpl = (function () { - function DataSourceImpl(_dataSourceInfo) { - this._dataSourceInfo = _dataSourceInfo; - } - Object.defineProperty(DataSourceImpl.prototype, "name", { - get: function () { - return this._dataSourceInfo.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSourceImpl.prototype, "id", { - get: function () { - return this._dataSourceInfo.id; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSourceImpl.prototype, "extractUpdateTime", { - get: function () { - return this._dataSourceInfo.extractUpdateTime; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSourceImpl.prototype, "fields", { - get: function () { - return this._fields; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSourceImpl.prototype, "isExtract", { - get: function () { - return this._dataSourceInfo.isExtract; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(DataSourceImpl.prototype, "connectionSummaries", { - get: function () { - throw new Error('DataSource connectionSummaries API not yet implemented.'); - }, - enumerable: true, - configurable: true - }); - DataSourceImpl.prototype.refreshAsync = function () { - var dataSourceService = api_shared_1.ApiServiceRegistry.instance.getService("data-source-service" /* DataSourceService */); - return dataSourceService.refreshAsync(this._dataSourceInfo.id); - }; - DataSourceImpl.prototype.getUnderlyingDataAsync = function (options) { - var defaultOptions = { - ignoreAliases: false, - maxRows: 10000, - columnsToInclude: [], - }; - options = options || {}; - var getDataService = api_shared_1.ApiServiceRegistry.instance.getService("get-data-service" /* GetData */); - return getDataService.getDataSourceDataAsync(this.id, !!options.ignoreAliases, options.maxRows || defaultOptions.maxRows, options.columnsToInclude || defaultOptions.columnsToInclude); - }; - DataSourceImpl.prototype.initializeWithPublicInterfaces = function (dataSource) { - this._fields = this._dataSourceInfo.fields.map(function (fieldModel) { - var fieldImpl = new FieldImpl_1.FieldImpl(fieldModel, dataSource); - return new Field_1.Field(fieldImpl); - }); - }; - return DataSourceImpl; - }()); - exports.DataSourceImpl = DataSourceImpl; - //# sourceMappingURL=DataSourceImpl.js.map - -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var FieldImpl = (function () { - function FieldImpl(_fieldInfo, _parentDataSource) { - this._fieldInfo = _fieldInfo; - this._parentDataSource = _parentDataSource; - } - Object.defineProperty(FieldImpl.prototype, "name", { - get: function () { - return this._fieldInfo.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "id", { - get: function () { - return this._fieldInfo.id; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "description", { - get: function () { - return this._fieldInfo.description; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "aggregation", { - get: function () { - return api_shared_1.InternalToExternalEnumMappings.fieldAggregationType.convert(this._fieldInfo.aggregation); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "dataSource", { - get: function () { - return this._parentDataSource; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "role", { - get: function () { - return api_shared_1.InternalToExternalEnumMappings.fieldRoleType.convert(this._fieldInfo.role); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "isHidden", { - get: function () { - return this._fieldInfo.isHidden; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "isGenerated", { - get: function () { - return this._fieldInfo.isGenerated; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "isCalculatedField", { - get: function () { - return this._fieldInfo.isCalculatedField; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FieldImpl.prototype, "isCombinedField", { - get: function () { - return this._fieldInfo.isCombinedField; - }, - enumerable: true, - configurable: true - }); - FieldImpl.prototype.getCalculatedFieldAsync = function () { - throw new Error('Field getCalculatedFieldAsync method not yet implemented.'); - }; - return FieldImpl; - }()); - exports.FieldImpl = FieldImpl; - //# sourceMappingURL=FieldImpl.js.map - -/***/ }, -/* 59 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var Field = (function () { - function Field(_fieldImpl) { - this._fieldImpl = _fieldImpl; - } - Object.defineProperty(Field.prototype, "name", { - get: function () { - return this._fieldImpl.name; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "id", { - get: function () { - return this._fieldImpl.id; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "description", { - get: function () { - return this._fieldImpl.description; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "aggregation", { - get: function () { - return this._fieldImpl.aggregation; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "dataSource", { - get: function () { - return this._fieldImpl.dataSource; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "role", { - get: function () { - return this._fieldImpl.role; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "isHidden", { - get: function () { - return this._fieldImpl.isHidden; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "isGenerated", { - get: function () { - return this._fieldImpl.isGenerated; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "isCalculatedField", { - get: function () { - return this._fieldImpl.isCalculatedField; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "columnType", { - get: function () { - throw new Error('Field.columnType not yet implemetned.'); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Field.prototype, "isCombinedField", { - get: function () { - return this._fieldImpl.isCombinedField; - }, - enumerable: true, - configurable: true - }); - Field.prototype.getCalculatedFieldAsync = function () { - return this._fieldImpl.getCalculatedFieldAsync(); - }; - return Field; - }()); - exports.Field = Field; - //# sourceMappingURL=Field.js.map - -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - var api_shared_1 = __webpack_require__(8); - var api_utils_1 = __webpack_require__(27); - var SettingsImpl = (function () { - function SettingsImpl(settingsInfo) { - // Since promises can't be introspected for state, keep a variable that - // indicates a save is in progress, so that set/erase can't be called during a save. - this._saveInProgress = false; - this.initializeSettings(settingsInfo); - } - SettingsImpl.prototype.erase = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - // Only make a modification if we have the key already - if (this._currentSettings[key]) { - this.verifySettingsAreUnlocked(); - delete this._currentSettings[key]; - this._isModified = true; - } - }; - SettingsImpl.prototype.get = function (key) { - api_utils_1.Param.verifyValue(key, 'key'); - return this._currentSettings[key]; - }; - SettingsImpl.prototype.getAll = function () { - // Returns a mutable copy of the settings - return Object.assign({}, this._currentSettings); - }; - Object.defineProperty(SettingsImpl.prototype, "isModified", { - get: function () { - return this._isModified; - }, - enumerable: true, - configurable: true - }); - SettingsImpl.prototype.saveAsync = function () { - var _this = this; - this.verifySettingsAreUnlocked(); - // Just resolve immediately if settings are unchanged - if (!this._isModified) { - return Promise.resolve(this._currentSettings); - } - this._saveInProgress = true; - // Use the settings service to save settings to twb - var settingsService = api_shared_1.ApiServiceRegistry.instance.getService("SettingsService" /* SettingsService */); - return settingsService.saveSettingsAsync(this._currentSettings).then(function (newSettings) { - _this._saveInProgress = false; - _this._isModified = false; - Object.assign(_this._currentSettings, newSettings); - return newSettings; - }); - }; - SettingsImpl.prototype.set = function (key, value) { - api_utils_1.Param.verifyValue(key, 'key'); // Key shouldn't be an empty string. - api_utils_1.Param.verifyString(value, 'value'); // Empty string value is allowed. - this.verifySettingsAreUnlocked(); - this._currentSettings[key] = value; - this._isModified = true; - }; - SettingsImpl.prototype.initializeSettings = function (settingsInfo) { - api_utils_1.Param.verifyValue(settingsInfo, 'settingsInfo'); - api_utils_1.Param.verifyValue(settingsInfo.settingsValues, 'settingsInfo.SettingsValues'); - this._currentSettings = settingsInfo.settingsValues; - // Reset the isModified flag - this._isModified = false; - }; - /** - * This helper should be called before any local update to this.currentSettings. - * Checks if a current save call is still in progress and throws an error if so. - */ - SettingsImpl.prototype.verifySettingsAreUnlocked = function () { - if (this._saveInProgress) { - throw new Error('Async Save is in progress, updating settings is not allowed.'); - } - }; - return SettingsImpl; - }()); - exports.SettingsImpl = SettingsImpl; - //# sourceMappingURL=SettingsImpl.js.map - -/***/ }, -/* 61 */ -/***/ function(module, exports) { - - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - /** - * Implementation of the external AddIn namespace. - */ - var AddIn = (function () { - function AddIn(addInImpl) { - this.addInImpl = addInImpl; - this.addInImpl = addInImpl; - } - Object.defineProperty(AddIn.prototype, "dashboardContent", { - get: function () { - return this.addInImpl.dashboardContent; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "environment", { - get: function () { - return this.addInImpl.environment; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "settings", { - get: function () { - return this.addInImpl.settings; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(AddIn.prototype, "ui", { - get: function () { - throw new Error('API call not yet implemented'); - }, - enumerable: true, - configurable: true - }); - AddIn.prototype.initializeAsync = function () { - return this.addInImpl.initializeAsync(); - }; - return AddIn; - }()); - exports.AddIn = AddIn; - //# sourceMappingURL=AddIn.js.map - -/***/ } -/******/ ]) -}); -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQHRhYmxlYXUvYWRkaW4tYXBpLjAuNS4wLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNThmOGZkOGU2YjBiNmE1YWMxYmUiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9BZGRJbkFwaS5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0ludGVybmFsL0FkZEluSW1wbC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL0FwaUludGVybmFsQ29udHJhY3QuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvRW51bXMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvSW50ZXJuYWxBcGlEaXNwYXRjaGVyLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLWludGVybmFsLWNvbnRyYWN0L2xpYi9pbnRlcmZhY2UvUGFyYW1ldGVycy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL2ludGVyZmFjZS9WZXJicy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9BcGlTaGFyZWQuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRMaXN0ZW5lck1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvUGFyYW1ldGVyLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1BvaW50LmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NpemUuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvTW9kZWxzL0dldERhdGFNb2RlbHMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXhjZXB0aW9ucy9UYWJsZWF1RXhjZXB0aW9ucy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9saWIvQXBpRXh0ZXJuYWxDb250cmFjdC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktZXh0ZXJuYWwtY29udHJhY3QvbGliL0VudW1zLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50cy9UYWJsZWF1V29ya3NoZWV0RXZlbnQuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRzL1RhYmxlYXVTaGVldEV2ZW50LmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50cy9UYWJsZWF1RXZlbnQuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9JbnRlcm5hbC9TaW5nbGVFdmVudE1hbmFnZXJJbXBsLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL1JlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvU2VydmljZXMvaW1wbC9EYXRhU291cmNlU2VydmljZUltcGwuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvU2VydmljZXMvaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktdXRpbHMvbGliL0FwaVV0aWxzLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS11dGlscy9saWIvRW51bUNvbnZlcnRlci5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktdXRpbHMvbGliL1BhcmFtLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0VudW1NYXBwaW5ncy9FeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9Nb2RlbHMvRmlsdGVyTW9kZWxzLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeS5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0ludGVybmFsL1BhcmFtZXRlckltcGwuanMiLCJ3ZWJwYWNrOi8vL0Q6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRzL1BhcmFtZXRlckNoYW5nZWRFdmVudC5qcyIsIndlYnBhY2s6Ly8vRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsLmpzIiwid2VicGFjazovLy9EOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL01vZGVscy9TZWxlY3Rpb25Nb2RlbHMuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9EYXNoYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9TaGVldC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL05hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL05hbWVzcGFjZXMvRW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9OYW1lc3BhY2VzL1NldHRpbmdzLmpzIiwid2VicGFjazovLy8uLi9saWIvU2VydmljZXMvUmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzLmpzIiwid2VicGFjazovLy8uLi9saWIvU2VydmljZXMvSW1wbC9Jbml0aWFsaXphdGlvblNlcnZpY2VJbXBsLmpzIiwid2VicGFjazovLy8uLi9saWIvU2VydmljZXMvSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsLmpzIiwid2VicGFjazovLy8uLi9saWIvVmVyc2lvbk51bWJlci5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0ludGVybmFsL0Rhc2hib2FyZEltcGwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9EYXNoYm9hcmRPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9Xb3Jrc2hlZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9JbnRlcm5hbC9TaGVldEltcGwuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9JbnRlcm5hbC9TaGVldEluZm9JbXBsLmpzIiwid2VicGFjazovLy8uLi9saWIvSW50ZXJuYWwvV29ya3NoZWV0SW1wbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0RhdGFTb3VyY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2xpYi9JbnRlcm5hbC9EYXRhU291cmNlSW1wbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0ludGVybmFsL0ZpZWxkSW1wbC5qcyIsIndlYnBhY2s6Ly8vLi4vbGliL0ZpZWxkLmpzIiwid2VicGFjazovLy8uLi9saWIvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLmpzIiwid2VicGFjazovLy8uLi9saWIvTmFtZXNwYWNlcy9BZGRJbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ0YWJsZWF1XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInRhYmxlYXVcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiBcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvZGlzdC9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svYm9vdHN0cmFwIDU4ZjhmZDhlNmIwYjZhNWFjMWJlXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBEdWUgdG8gdGhlIHdheSB3ZSBjb25maWd1cmVkIHdlYnBhY2ssIHdlIHNob3VsZCBiZSBleHBvcnRpbmcgdGhpbmdzIHdoaWNoIHdpbGwgYmUgdW5kZXJcbi8vIGEgZ2xvYmFsIHZhcmlhYmxlIGNhbGxlZCBcInRhYmxlYXVcIi4gRXhwb3J0IGV2ZXJ5dGhpbmcgd2Ugd2FudCB0byBiZSB2aXNpYmxlIHVuZGVyIHRhYmxlYXVcbi8vIGZyb20gdGhpcyBmaWxlLlxudmFyIEFkZEluSW1wbF8xID0gcmVxdWlyZShcIi4vSW50ZXJuYWwvQWRkSW5JbXBsXCIpO1xudmFyIEFkZEluXzEgPSByZXF1aXJlKFwiLi9OYW1lc3BhY2VzL0FkZEluXCIpO1xudmFyIGFkZEluSW1wbCA9IG5ldyBBZGRJbkltcGxfMS5BZGRJbkltcGwoKTtcbmV4cG9ydHMuYWRkSW4gPSBuZXcgQWRkSW5fMS5BZGRJbihhZGRJbkltcGwpO1xuLy8gRXhwb3J0IEVudW1zXG4vLyBUaGVzZSBzaG93IHVwIHVuZGVyIHRoZSB0YWJsZWF1IG9iamVjdC4gSS5lLiB0YWJsZWF1LkFkZEluQ29udGV4dC5TZXJ2ZXJcbnZhciBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG5leHBvcnRzLkFkZEluQ29udGV4dCA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkFkZEluQ29udGV4dDtcbmV4cG9ydHMuQWRkSW5Nb2RlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuQWRkSW5Nb2RlO1xuZXhwb3J0cy5BbmFseXRpY3NPYmplY3RUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuQW5hbHl0aWNzT2JqZWN0VHlwZTtcbmV4cG9ydHMuQ29sdW1uVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkNvbHVtblR5cGU7XG5leHBvcnRzLkRhc2hib2FyZE9iamVjdFR5cGUgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlO1xuZXhwb3J0cy5EYXRhVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlO1xuZXhwb3J0cy5EYXRlUmFuZ2VUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZTtcbmV4cG9ydHMuRGlhbG9nRXZlbnRUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGlhbG9nRXZlbnRUeXBlO1xuZXhwb3J0cy5FbmNvZGluZ1R5cGUgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5FbmNvZGluZ1R5cGU7XG5leHBvcnRzLkVycm9yQ29kZXMgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5FcnJvckNvZGVzO1xuZXhwb3J0cy5GaWVsZEFnZ3JlZ2F0aW9uVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlO1xuZXhwb3J0cy5GaWVsZFJvbGVUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRSb2xlVHlwZTtcbmV4cG9ydHMuRmlsdGVyRG9tYWluVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpbHRlckRvbWFpblR5cGU7XG5leHBvcnRzLkZpbHRlclR5cGUgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlO1xuZXhwb3J0cy5GaWx0ZXJVcGRhdGVUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVXBkYXRlVHlwZTtcbmV4cG9ydHMuRmlsdGVyTnVsbE9wdGlvbiA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpbHRlck51bGxPcHRpb247XG5leHBvcnRzLk1hcmtUeXBlID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuTWFya1R5cGU7XG5leHBvcnRzLlBhcmFtZXRlclZhbHVlVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlclZhbHVlVHlwZTtcbmV4cG9ydHMuUGVyaW9kVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBlcmlvZFR5cGU7XG5leHBvcnRzLlF1aWNrVGFibGVDYWxjVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlF1aWNrVGFibGVDYWxjVHlwZTtcbmV4cG9ydHMuU2VsZWN0aW9uVXBkYXRlVHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlNlbGVjdGlvblVwZGF0ZVR5cGU7XG5leHBvcnRzLlNoZWV0VHlwZSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlNoZWV0VHlwZTtcbmV4cG9ydHMuU29ydERpcmVjdGlvbiA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlNvcnREaXJlY3Rpb247XG5leHBvcnRzLlRhYmxlYXVFdmVudFR5cGUgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5UYWJsZWF1RXZlbnRUeXBlO1xuZXhwb3J0cy5UcmVuZExpbmVNb2RlbFR5cGUgPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5UcmVuZExpbmVNb2RlbFR5cGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BZGRJbkFwaS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9BZGRJbkFwaS5qc1xuICoqIG1vZHVsZSBpZCA9IDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbnZhciBEYXNoYm9hcmRfMSA9IHJlcXVpcmUoXCIuLi9EYXNoYm9hcmRcIik7XG52YXIgRGFzaGJvYXJkQ29udGVudF8xID0gcmVxdWlyZShcIi4uL05hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudFwiKTtcbnZhciBFbnZpcm9ubWVudF8xID0gcmVxdWlyZShcIi4uL05hbWVzcGFjZXMvRW52aXJvbm1lbnRcIik7XG52YXIgU2V0dGluZ3NfMSA9IHJlcXVpcmUoXCIuLi9OYW1lc3BhY2VzL1NldHRpbmdzXCIpO1xudmFyIFJlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlc18xID0gcmVxdWlyZShcIi4uL1NlcnZpY2VzL1JlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlc1wiKTtcbnZhciBWZXJzaW9uTnVtYmVyXzEgPSByZXF1aXJlKFwiLi4vVmVyc2lvbk51bWJlclwiKTtcbnZhciBEYXNoYm9hcmRJbXBsXzEgPSByZXF1aXJlKFwiLi9EYXNoYm9hcmRJbXBsXCIpO1xudmFyIFNldHRpbmdzSW1wbF8xID0gcmVxdWlyZShcIi4vU2V0dGluZ3NJbXBsXCIpO1xudmFyIEFkZEluSW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQWRkSW5JbXBsKCkge1xuICAgIH1cbiAgICBBZGRJbkltcGwucHJvdG90eXBlLmluaXRpYWxpemVBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXphdGlvblByb21pc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemF0aW9uUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAvLyBGaXJzdCB0aGluZyB3ZSB3YW50IHRvIGRvIGlzIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGRlc2t0b3AgZGlzcGF0Y2hlciBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIHVzXG4gICAgICAgICAgICAgICAgaWYgKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5oYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBSdW5uaW5nIGluIGRlc2t0b3AsIHVzZSB0aGlzIHByb21pc2VcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5nZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVza3RvcERpc3BhdGNoZXJQcm9taXNlLnRoZW4oX3RoaXMub25EaXNwYXRjaGVyUmVjZWl2ZWQuYmluZChfdGhpcykpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXNvbHZlKCk7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCdOb3QgcnVubmluZyBpbiBkZXNrdG9wLiBTZXJ2ZXIgc3VwcG9ydCBjb21pbmcgc29vbiEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6YXRpb25Qcm9taXNlO1xuICAgIH07XG4gICAgQWRkSW5JbXBsLnByb3RvdHlwZS5vbkRpc3BhdGNoZXJSZWNlaXZlZCA9IGZ1bmN0aW9uIChkaXNwYXRjaGVyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGRpc3BhdGNoZXIuc2V0VmVyc2lvbk51bWJlcihWZXJzaW9uTnVtYmVyXzEuVmVyc2lvbk51bWJlci5JbnN0YW5jZSk7XG4gICAgICAgIC8vIENhbGwgdG8gcmVnaXN0ZXIgYWxsIHRoZSBzZXJ2aWNlcyB3aGljaCB3aWxsIHVzZSB0aGUgbmV3bHkgaW5pdGlhbGl6ZWQgZGlzcGF0Y2hlclxuICAgICAgICBhcGlfc2hhcmVkXzEucmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyKTtcbiAgICAgICAgUmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzXzEucmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzKGRpc3BhdGNoZXIpO1xuICAgICAgICAvLyBHZXQgdGhlIGluaXRpYWxpemF0aW9uIHNlcnZpY2UgYW5kIGluaXRpYWxpemUgdGhpcyBhZGQtaW5cbiAgICAgICAgdmFyIGluaXRpYWxpemF0aW9uU2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcIkluaXRpYWxpemF0aW9uU2VydmljZVwiIC8qIEluaXRpYWxpemF0aW9uU2VydmljZSAqLyk7XG4gICAgICAgIHJldHVybiBpbml0aWFsaXphdGlvblNlcnZpY2UuaW5pdGlhbGl6ZURhc2hib2FyZEFkZEluQXN5bmMoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZEluSW5zdGFuY2UubG9jYXRvci5kYXNoYm9hcmRQYXRoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXNoYm9hcmRQYXRoIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuZGFzaGJvYXJkQ29udGVudCA9IF90aGlzLmluaXRpYWxpemVEYXNoYm9hcmRDb250ZW50KHJlc3VsdC5hZGRpbkRhc2hib2FyZEluZm8sIHJlc3VsdC5hZGRJbkluc3RhbmNlLmxvY2F0b3IuZGFzaGJvYXJkUGF0aCk7XG4gICAgICAgICAgICBfdGhpcy5lbnZpcm9ubWVudCA9IG5ldyBFbnZpcm9ubWVudF8xLkVudmlyb25tZW50KHJlc3VsdC5hZGRJbkVudmlyb25tZW50KTtcbiAgICAgICAgICAgIF90aGlzLnNldHRpbmdzID0gX3RoaXMuaW5pdGlhbGl6ZVNldHRpbmdzKHJlc3VsdC5hZGRJblNldHRpbmdzSW5mbyk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgQWRkSW5JbXBsLnByb3RvdHlwZS5pbml0aWFsaXplRGFzaGJvYXJkQ29udGVudCA9IGZ1bmN0aW9uIChpbmZvLCBzaGVldFBhdGgpIHtcbiAgICAgICAgdmFyIGRhc2hib2FyZEltcGwgPSBuZXcgRGFzaGJvYXJkSW1wbF8xLkRhc2hib2FyZEltcGwoaW5mbywgc2hlZXRQYXRoKTtcbiAgICAgICAgdmFyIGRhc2hib2FyZCA9IG5ldyBEYXNoYm9hcmRfMS5EYXNoYm9hcmQoZGFzaGJvYXJkSW1wbCk7XG4gICAgICAgIHJldHVybiBuZXcgRGFzaGJvYXJkQ29udGVudF8xLkRhc2hib2FyZENvbnRlbnQoZGFzaGJvYXJkKTtcbiAgICB9O1xuICAgIEFkZEluSW1wbC5wcm90b3R5cGUuaW5pdGlhbGl6ZVNldHRpbmdzID0gZnVuY3Rpb24gKHNldHRpbmdzSW5mbykge1xuICAgICAgICB2YXIgc2V0dGluZ3NJbXBsID0gbmV3IFNldHRpbmdzSW1wbF8xLlNldHRpbmdzSW1wbChzZXR0aW5nc0luZm8pO1xuICAgICAgICByZXR1cm4gbmV3IFNldHRpbmdzXzEuU2V0dGluZ3Moc2V0dGluZ3NJbXBsKTtcbiAgICB9O1xuICAgIHJldHVybiBBZGRJbkltcGw7XG59KCkpO1xuZXhwb3J0cy5BZGRJbkltcGwgPSBBZGRJbkltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BZGRJbkltcGwuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvSW50ZXJuYWwvQWRkSW5JbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL0VudW1zXCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL2ludGVyZmFjZS9JbnRlcm5hbEFwaURpc3BhdGNoZXJcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL05vdGlmaWNhdGlvbnNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL1BhcmFtZXRlcnNcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vaW50ZXJmYWNlL1ZlcmJzXCIpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwaUludGVybmFsQ29udHJhY3QuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvQXBpSW50ZXJuYWxDb250cmFjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEFkZEluQ29udGV4dDtcbihmdW5jdGlvbiAoQWRkSW5Db250ZXh0KSB7XG4gICAgQWRkSW5Db250ZXh0W1wiRGVza3RvcFwiXSA9IFwiZGVza3RvcFwiO1xuICAgIEFkZEluQ29udGV4dFtcIlNlcnZlclwiXSA9IFwic2VydmVyXCI7XG4gICAgQWRkSW5Db250ZXh0W1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xufSkoQWRkSW5Db250ZXh0ID0gZXhwb3J0cy5BZGRJbkNvbnRleHQgfHwgKGV4cG9ydHMuQWRkSW5Db250ZXh0ID0ge30pKTtcbnZhciBBZGRJbk1vZGU7XG4oZnVuY3Rpb24gKEFkZEluTW9kZSkge1xuICAgIEFkZEluTW9kZVtcIkF1dGhvcmluZ1wiXSA9IFwiYXV0aG9yaW5nXCI7XG4gICAgQWRkSW5Nb2RlW1wiVmlld2luZ1wiXSA9IFwidmlld2luZ1wiO1xuICAgIEFkZEluTW9kZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEFkZEluTW9kZSA9IGV4cG9ydHMuQWRkSW5Nb2RlIHx8IChleHBvcnRzLkFkZEluTW9kZSA9IHt9KSk7XG52YXIgQ29sdW1uVHlwZTtcbihmdW5jdGlvbiAoQ29sdW1uVHlwZSkge1xuICAgIENvbHVtblR5cGVbXCJEaXNjcmV0ZVwiXSA9IFwiZGlzY3JldGVcIjtcbiAgICBDb2x1bW5UeXBlW1wiQ29udGludW91c1wiXSA9IFwiY29udGludW91c1wiO1xufSkoQ29sdW1uVHlwZSA9IGV4cG9ydHMuQ29sdW1uVHlwZSB8fCAoZXhwb3J0cy5Db2x1bW5UeXBlID0ge30pKTtcbnZhciBEYXNoYm9hcmRPYmplY3RUeXBlO1xuKGZ1bmN0aW9uIChEYXNoYm9hcmRPYmplY3RUeXBlKSB7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkJsYW5rXCJdID0gXCJibGFua1wiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXb3Jrc2hlZXRcIl0gPSBcIndvcmtzaGVldFwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJRdWlja0ZpbHRlclwiXSA9IFwicXVpY2stZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhcmFtZXRlckNvbnRyb2xcIl0gPSBcInBhcmFtZXRlci1jb250cm9sXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhZ2VGaWx0ZXJcIl0gPSBcInBhZ2UtZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkxlZ2VuZFwiXSA9IFwibGVnZW5kXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlRpdGxlXCJdID0gXCJ0aXRsZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJUZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkltYWdlXCJdID0gXCJpbWFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXZWJQYWdlXCJdID0gXCJ3ZWItcGFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJBZGRJblwiXSA9IFwiYWRkaW5cIjtcbn0pKERhc2hib2FyZE9iamVjdFR5cGUgPSBleHBvcnRzLkRhc2hib2FyZE9iamVjdFR5cGUgfHwgKGV4cG9ydHMuRGFzaGJvYXJkT2JqZWN0VHlwZSA9IHt9KSk7XG52YXIgRGF0YVR5cGU7XG4oZnVuY3Rpb24gKERhdGFUeXBlKSB7XG4gICAgRGF0YVR5cGVbXCJTdHJpbmdcIl0gPSBcInN0cmluZ1wiO1xuICAgIERhdGFUeXBlW1wiSW50XCJdID0gXCJpbnRcIjtcbiAgICBEYXRhVHlwZVtcIkZsb2F0XCJdID0gXCJmbG9hdFwiO1xuICAgIERhdGFUeXBlW1wiQm9vbFwiXSA9IFwiYm9vbFwiO1xuICAgIERhdGFUeXBlW1wiRGF0ZVwiXSA9IFwiZGF0ZVwiO1xuICAgIERhdGFUeXBlW1wiRGF0ZVRpbWVcIl0gPSBcImRhdGUtdGltZVwiO1xuICAgIERhdGFUeXBlW1wiU3BhdGlhbFwiXSA9IFwic3BhdGlhbFwiO1xufSkoRGF0YVR5cGUgPSBleHBvcnRzLkRhdGFUeXBlIHx8IChleHBvcnRzLkRhdGFUeXBlID0ge30pKTtcbnZhciBFbmNvZGVkRGF0YVR5cGU7XG4oZnVuY3Rpb24gKEVuY29kZWREYXRhVHlwZSkge1xuICAgIEVuY29kZWREYXRhVHlwZVtcIk51bWJlclwiXSA9IFwibnVtYmVyXCI7XG4gICAgRW5jb2RlZERhdGFUeXBlW1wiU3RyaW5nXCJdID0gXCJzdHJpbmdcIjtcbiAgICBFbmNvZGVkRGF0YVR5cGVbXCJEYXRlXCJdID0gXCJkYXRlXCI7XG4gICAgRW5jb2RlZERhdGFUeXBlW1wiQm9vbGVhblwiXSA9IFwiYm9vbGVhblwiO1xufSkoRW5jb2RlZERhdGFUeXBlID0gZXhwb3J0cy5FbmNvZGVkRGF0YVR5cGUgfHwgKGV4cG9ydHMuRW5jb2RlZERhdGFUeXBlID0ge30pKTtcbnZhciBFcnJvckNvZGU7XG4oZnVuY3Rpb24gKEVycm9yQ29kZSkge1xuICAgIEVycm9yQ29kZVtcIlNlcnZlckVycm9yXCJdID0gXCJzZXJ2ZXItZXJyb3JcIjtcbiAgICBFcnJvckNvZGVbXCJJbnZhbGlkQWdncmVnYXRpb25GaWVsZE5hbWVcIl0gPSBcImludmFsaWQtYWdncmVnYXRpb24tZmllbGQtbmFtZVwiO1xuICAgIEVycm9yQ29kZVtcIkludmFsaWRGaWx0ZXJGaWVsZE5hbWVcIl0gPSBcImludmFsaWQtZmlsdGVyLWZpZWxkbmFtZVwiO1xuICAgIEVycm9yQ29kZVtcIkludmFsaWRGaWx0ZXJGaWVsZFZhbHVlXCJdID0gXCJpbnZhbGlkLWZpbHRlci1maWVsZC12YWx1ZVwiO1xufSkoRXJyb3JDb2RlID0gZXhwb3J0cy5FcnJvckNvZGUgfHwgKGV4cG9ydHMuRXJyb3JDb2RlID0ge30pKTtcbnZhciBGaWVsZEFnZ3JlZ2F0aW9uVHlwZTtcbihmdW5jdGlvbiAoRmllbGRBZ2dyZWdhdGlvblR5cGUpIHtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN1bVwiXSA9IFwic3VtXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJBdmdcIl0gPSBcImF2Z1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWluXCJdID0gXCJtaW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1heFwiXSA9IFwibWF4XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTdGRldlwiXSA9IFwic3RkZXZcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN0ZGV2cFwiXSA9IFwic3RkZXZwXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJWYXJcIl0gPSBcInZhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVmFycFwiXSA9IFwidmFycFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiQ291bnRcIl0gPSBcImNvdW50XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJDb3VudGRcIl0gPSBcImNvdW50ZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWVkaWFuXCJdID0gXCJtZWRpYW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkF0dHJcIl0gPSBcImF0dHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlllYXJcIl0gPSBcInllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF0clwiXSA9IFwicXRyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNb250aFwiXSA9IFwibW9udGhcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkRheVwiXSA9IFwiZGF5XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJIb3VyXCJdID0gXCJob3VyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNaW51dGVcIl0gPSBcIm1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiU2Vjb25kXCJdID0gXCJzZWNvbmRcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtcIl0gPSBcIndlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtkYXlcIl0gPSBcIndlZWtkYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1vbnRoWWVhclwiXSA9IFwibW9udGgteWVhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWR5XCJdID0gXCJtZHlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkVuZFwiXSA9IFwiZW5kXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1llYXJcIl0gPSBcInRydW5jLXllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jUXRyXCJdID0gXCJ0cnVuYy1xdHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jTW9udGhcIl0gPSBcInRydW5jLW1vbnRoXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1dlZWtcIl0gPSBcInRydW5jLXdlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jRGF5XCJdID0gXCJ0cnVuYy1kYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jSG91clwiXSA9IFwidHJ1bmMtaG91clwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNNaW51dGVcIl0gPSBcInRydW5jLW1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNTZWNvbmRcIl0gPSBcInRydW5jLXNlY29uZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiUXVhcnQxXCJdID0gXCJxdWFydDFcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF1YXJ0M1wiXSA9IFwicXVhcnQzXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTa2V3bmVzc1wiXSA9IFwic2tld25lc3NcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkt1cnRvc2lzXCJdID0gXCJrdXJ0b3Npc1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiSW5PdXRcIl0gPSBcImluLW91dFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVXNlclwiXSA9IFwidXNlclwiO1xufSkoRmllbGRBZ2dyZWdhdGlvblR5cGUgPSBleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlIHx8IChleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlID0ge30pKTtcbnZhciBGaWVsZFJvbGVUeXBlO1xuKGZ1bmN0aW9uIChGaWVsZFJvbGVUeXBlKSB7XG4gICAgRmllbGRSb2xlVHlwZVtcIkRpbWVuc2lvblwiXSA9IFwiZGltZW5zaW9uXCI7XG4gICAgRmllbGRSb2xlVHlwZVtcIk1lYXN1cmVcIl0gPSBcIm1lYXN1cmVcIjtcbiAgICBGaWVsZFJvbGVUeXBlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xufSkoRmllbGRSb2xlVHlwZSA9IGV4cG9ydHMuRmllbGRSb2xlVHlwZSB8fCAoZXhwb3J0cy5GaWVsZFJvbGVUeXBlID0ge30pKTtcbi8qKlxuICogIFRoZSBkaWZmZXJlbnQgdXBkYXRlIHR5cGVzIGZvciBhcHBseWluZyBmaWx0ZXIuXG4gKi9cbnZhciBGaWx0ZXJVcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJVcGRhdGVUeXBlKSB7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFkZFwiXSA9IFwiYWRkXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFsbFwiXSA9IFwiYWxsXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIlJlcGxhY2VcIl0gPSBcInJlcGxhY2VcIjtcbiAgICBGaWx0ZXJVcGRhdGVUeXBlW1wiUmVtb3ZlXCJdID0gXCJyZW1vdmVcIjtcbn0pKEZpbHRlclVwZGF0ZVR5cGUgPSBleHBvcnRzLkZpbHRlclVwZGF0ZVR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyVXBkYXRlVHlwZSA9IHt9KSk7XG52YXIgU2hlZXRUeXBlO1xuKGZ1bmN0aW9uIChTaGVldFR5cGUpIHtcbiAgICBTaGVldFR5cGVbXCJEYXNoYm9hcmRcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIFNoZWV0VHlwZVtcIlN0b3J5XCJdID0gXCJzdG9yeVwiO1xuICAgIFNoZWV0VHlwZVtcIldvcmtzaGVldFwiXSA9IFwid29ya3NoZWV0XCI7XG4gICAgU2hlZXRUeXBlW1wiQWRkaW5cIl0gPSBcImFkZGluXCI7XG59KShTaGVldFR5cGUgPSBleHBvcnRzLlNoZWV0VHlwZSB8fCAoZXhwb3J0cy5TaGVldFR5cGUgPSB7fSkpO1xudmFyIERvbWFpblJlc3RyaWN0aW9uVHlwZTtcbihmdW5jdGlvbiAoRG9tYWluUmVzdHJpY3Rpb25UeXBlKSB7XG4gICAgRG9tYWluUmVzdHJpY3Rpb25UeXBlW1wiQWxsXCJdID0gXCJhbGxcIjtcbiAgICBEb21haW5SZXN0cmljdGlvblR5cGVbXCJMaXN0XCJdID0gXCJsaXN0XCI7XG4gICAgRG9tYWluUmVzdHJpY3Rpb25UeXBlW1wiUmFuZ2VcIl0gPSBcInJhbmdlXCI7XG59KShEb21haW5SZXN0cmljdGlvblR5cGUgPSBleHBvcnRzLkRvbWFpblJlc3RyaWN0aW9uVHlwZSB8fCAoZXhwb3J0cy5Eb21haW5SZXN0cmljdGlvblR5cGUgPSB7fSkpO1xudmFyIERhdGVTdGVwUGVyaW9kO1xuKGZ1bmN0aW9uIChEYXRlU3RlcFBlcmlvZCkge1xuICAgIERhdGVTdGVwUGVyaW9kW1wiWWVhcnNcIl0gPSBcInllYXJzXCI7XG4gICAgRGF0ZVN0ZXBQZXJpb2RbXCJRdWFydGVyc1wiXSA9IFwicXVhcnRlcnNcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIk1vbnRoc1wiXSA9IFwibW9udGhzXCI7XG4gICAgRGF0ZVN0ZXBQZXJpb2RbXCJXZWVrc1wiXSA9IFwid2Vla3NcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIkRheXNcIl0gPSBcImRheXNcIjtcbiAgICBEYXRlU3RlcFBlcmlvZFtcIkhvdXJzXCJdID0gXCJob3Vyc1wiO1xuICAgIERhdGVTdGVwUGVyaW9kW1wiTWludXRlc1wiXSA9IFwibWludXRlc1wiO1xuICAgIERhdGVTdGVwUGVyaW9kW1wiU2Vjb25kc1wiXSA9IFwic2Vjb25kc1wiO1xufSkoRGF0ZVN0ZXBQZXJpb2QgPSBleHBvcnRzLkRhdGVTdGVwUGVyaW9kIHx8IChleHBvcnRzLkRhdGVTdGVwUGVyaW9kID0ge30pKTtcbi8qKlxuICogVGhlIG9wdGlvbiBmb3Igc3BlY2lmeWluZyB3aGljaCB2YWx1ZXMgdG8gaW5jbHVkZSBmb3IgZmlsdGVyaW5nLlxuICovXG52YXIgRmlsdGVyTnVsbE9wdGlvbjtcbihmdW5jdGlvbiAoRmlsdGVyTnVsbE9wdGlvbikge1xuICAgIEZpbHRlck51bGxPcHRpb25bXCJOdWxsVmFsdWVzXCJdID0gXCJudWxsdmFsdWVzXCI7XG4gICAgRmlsdGVyTnVsbE9wdGlvbltcIk5vbk51bGxWYWx1ZXNcIl0gPSBcIm5vbm51bGx2YWx1ZXNcIjtcbiAgICBGaWx0ZXJOdWxsT3B0aW9uW1wiQWxsVmFsdWVzXCJdID0gXCJhbGx2YWx1ZXNcIjtcbn0pKEZpbHRlck51bGxPcHRpb24gPSBleHBvcnRzLkZpbHRlck51bGxPcHRpb24gfHwgKGV4cG9ydHMuRmlsdGVyTnVsbE9wdGlvbiA9IHt9KSk7XG4vKipcbiAqIFRoZSB0eXBlIG9mIGZpbHRlciBkb21haW5cbiAqL1xudmFyIEZpbHRlckRvbWFpblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlckRvbWFpblR5cGUpIHtcbiAgICBGaWx0ZXJEb21haW5UeXBlW1wiUmVsZXZhbnRcIl0gPSBcInJlbGV2YW50XCI7XG4gICAgRmlsdGVyRG9tYWluVHlwZVtcIkRhdGFiYXNlXCJdID0gXCJkYXRhYmFzZVwiO1xufSkoRmlsdGVyRG9tYWluVHlwZSA9IGV4cG9ydHMuRmlsdGVyRG9tYWluVHlwZSB8fCAoZXhwb3J0cy5GaWx0ZXJEb21haW5UeXBlID0ge30pKTtcbi8qKlxuICogSW50ZXJuYWwgZW51bSBmb3Igc3BlY2lmeWluZyB0aGUgc2VsZWN0aW9uIHR5cGUgZm9yIHNlbGVjdCBtYXJrcyBhcGkuXG4gKi9cbnZhciBTZWxlY3Rpb25VcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChTZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgU2VsZWN0aW9uVXBkYXRlVHlwZVtcIlJlcGxhY2VcIl0gPSBcInNlbGVjdC1yZXBsYWNlXCI7XG4gICAgU2VsZWN0aW9uVXBkYXRlVHlwZVtcIkFkZFwiXSA9IFwic2VsZWN0LWFkZFwiO1xuICAgIFNlbGVjdGlvblVwZGF0ZVR5cGVbXCJSZW1vdmVcIl0gPSBcInNlbGVjdC1yZW1vdmVcIjtcbn0pKFNlbGVjdGlvblVwZGF0ZVR5cGUgPSBleHBvcnRzLlNlbGVjdGlvblVwZGF0ZVR5cGUgfHwgKGV4cG9ydHMuU2VsZWN0aW9uVXBkYXRlVHlwZSA9IHt9KSk7XG4vKipcbiAqIEludGVybmFsIGVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIGluY2x1ZGVkIHZhbHVlcyB0eXBlIGZvciByYW5nZSBzZWxlY3Rpb24uXG4gKi9cbnZhciBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlcztcbihmdW5jdGlvbiAoUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMpIHtcbiAgICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIkluY2x1ZGVOdWxsXCJdID0gXCJpbmNsdWRlLW51bGxcIjtcbiAgICBRdWFudGl0YXRpdmVJbmNsdWRlZFZhbHVlc1tcIkluY2x1ZGVOb25OdWxsXCJdID0gXCJpbmNsdWRlLW5vbi1udWxsXCI7XG4gICAgUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXNbXCJJbmNsdWRlQWxsXCJdID0gXCJpbmNsdWRlLWFsbFwiO1xufSkoUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMgPSBleHBvcnRzLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzIHx8IChleHBvcnRzLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzID0ge30pKTtcbi8qKlxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXG4gKi9cbnZhciBNYXJrVHlwZTtcbihmdW5jdGlvbiAoTWFya1R5cGUpIHtcbiAgICBNYXJrVHlwZVtcIkJhclwiXSA9IFwiYmFyXCI7XG4gICAgTWFya1R5cGVbXCJMaW5lXCJdID0gXCJsaW5lXCI7XG4gICAgTWFya1R5cGVbXCJBcmVhXCJdID0gXCJhcmVhXCI7XG4gICAgTWFya1R5cGVbXCJTcXVhcmVcIl0gPSBcInNxdWFyZVwiO1xuICAgIE1hcmtUeXBlW1wiQ2lyY2xlXCJdID0gXCJjaXJjbGVcIjtcbiAgICBNYXJrVHlwZVtcIlNoYXBlXCJdID0gXCJzaGFwZVwiO1xuICAgIE1hcmtUeXBlW1wiVGV4dFwiXSA9IFwidGV4dFwiO1xuICAgIE1hcmtUeXBlW1wiTWFwXCJdID0gXCJtYXBcIjtcbiAgICBNYXJrVHlwZVtcIlBpZVwiXSA9IFwicGllXCI7XG4gICAgTWFya1R5cGVbXCJHYW50dEJhclwiXSA9IFwiZ2FudHQtYmFyXCI7XG4gICAgTWFya1R5cGVbXCJQb2x5Z29uXCJdID0gXCJwb2x5Z29uXCI7XG59KShNYXJrVHlwZSA9IGV4cG9ydHMuTWFya1R5cGUgfHwgKGV4cG9ydHMuTWFya1R5cGUgPSB7fSkpO1xuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIGZpbHRlclxuICovXG52YXIgRmlsdGVyVHlwZTtcbihmdW5jdGlvbiAoRmlsdGVyVHlwZSkge1xuICAgIEZpbHRlclR5cGVbXCJDYXRlZ29yaWNhbFwiXSA9IFwiY2F0ZWdvcmljYWxcIjtcbiAgICBGaWx0ZXJUeXBlW1wiUmFuZ2VcIl0gPSBcInJhbmdlXCI7XG4gICAgRmlsdGVyVHlwZVtcIlJlbGF0aXZlRGF0ZVwiXSA9IFwicmVsYXRpdmVEYXRlXCI7XG4gICAgRmlsdGVyVHlwZVtcIkhpZXJhcmNoaWNhbFwiXSA9IFwiaGllcmFyY2hpY2FsXCI7XG59KShGaWx0ZXJUeXBlID0gZXhwb3J0cy5GaWx0ZXJUeXBlIHx8IChleHBvcnRzLkZpbHRlclR5cGUgPSB7fSkpO1xuLyoqXG4gKiBJbnRlcm5hbCBlbnVtIGZvciBzcGVjaWZ5aW5nIHRoZSBEYXRlUmFuZ2VUeXBlIG9mIGEgcmVsYXRpdmUgZGF0ZSBmaWx0ZXJcbiAqL1xudmFyIERhdGVSYW5nZVR5cGU7XG4oZnVuY3Rpb24gKERhdGVSYW5nZVR5cGUpIHtcbiAgICAvKipcbiAgICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIkxhc3RcIl0gPSBcImxhc3RcIjtcbiAgICAvKipcbiAgICAgKiBSZWZlcnMgdG8gdGhlIGxhc3QgTiBkYXlzLCB3ZWVrcywgbW9udGhzLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICAgKi9cbiAgICBEYXRlUmFuZ2VUeXBlW1wiTGFzdE5cIl0gPSBcImxhc3ROXCI7XG4gICAgLyoqXG4gICAgICogUmVmZXJzIHRvIHRoZSBuZXh0IGRheSwgd2VlaywgbW9udGgsIGV0Yy4gb2YgdGhlIGRhdGUgcGVyaW9kLlxuICAgICAqL1xuICAgIERhdGVSYW5nZVR5cGVbXCJOZXh0XCJdID0gXCJuZXh0XCI7XG4gICAgLyoqXG4gICAgICogUmVmZXJzIHRvIHRoZSBuZXh0IE4gZGF5cywgd2Vla3MsIG1vbnRocywgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIk5leHROXCJdID0gXCJuZXh0TlwiO1xuICAgIC8qKlxuICAgICAqIFJlZmVycyB0byB0aGUgY3VycmVudCBkYXksIHdlZWssIG1vbnRoLCBldGMuIG9mIHRoZSBkYXRlIHBlcmlvZC5cbiAgICAgKi9cbiAgICBEYXRlUmFuZ2VUeXBlW1wiQ3VycmVudFwiXSA9IFwiY3VycmVudFwiO1xuICAgIC8qKlxuICAgICAqIFJlZmVycyB0byBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgZGF5LCB3ZWVrLCBtb250aCwgZXRjLiBvZiB0aGUgZGF0ZSBwZXJpb2QuXG4gICAgICovXG4gICAgRGF0ZVJhbmdlVHlwZVtcIlRvRGF0ZVwiXSA9IFwidG9EYXRlXCI7XG59KShEYXRlUmFuZ2VUeXBlID0gZXhwb3J0cy5EYXRlUmFuZ2VUeXBlIHx8IChleHBvcnRzLkRhdGVSYW5nZVR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW51bXMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL0VudW1zLmpzXG4gKiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyO1xuKGZ1bmN0aW9uIChJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIpIHtcbiAgICBmdW5jdGlvbiBnZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UoKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuX190YWJsZWF1RGVza3RvcERpc3BhdGNoZXI7XG4gICAgfVxuICAgIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5nZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2UgPSBnZXREZXNrdG9wRGlzcGF0Y2hlclByb21pc2U7XG4gICAgZnVuY3Rpb24gaGFzRGVza3RvcEFwaURpc3BhdGNoZXJQcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gISFJbnRlcm5hbEFwaURpc3BhdGNoZXJIb2xkZXIuZ2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKCk7XG4gICAgfVxuICAgIEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlci5oYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2UgPSBoYXNEZXNrdG9wQXBpRGlzcGF0Y2hlclByb21pc2U7XG4gICAgZnVuY3Rpb24gc2V0RGVza3RvcERpc3BhdGNoZXJQcm9taXNlKGRpc3BhdGNoZXIpIHtcbiAgICAgICAgd2luZG93Ll9fdGFibGVhdURlc2t0b3BEaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjtcbiAgICB9XG4gICAgSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyLnNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZSA9IHNldERlc2t0b3BEaXNwYXRjaGVyUHJvbWlzZTtcbn0pKEludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlciA9IGV4cG9ydHMuSW50ZXJuYWxBcGlEaXNwYXRjaGVySG9sZGVyIHx8IChleHBvcnRzLkludGVybmFsQXBpRGlzcGF0Y2hlckhvbGRlciA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbnRlcm5hbEFwaURpc3BhdGNoZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL0ludGVybmFsQXBpRGlzcGF0Y2hlci5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE5vdGlmaWNhdGlvbklkO1xuKGZ1bmN0aW9uIChOb3RpZmljYXRpb25JZCkge1xuICAgIE5vdGlmaWNhdGlvbklkW1wiU2VsZWN0ZWRNYXJrc0NoYW5nZWRcIl0gPSBcInNlbGVjdGVkLW1hcmtzLWNoYW5nZWRcIjtcbiAgICBOb3RpZmljYXRpb25JZFtcIlBhcmFtZXRlckNoYW5nZWRcIl0gPSBcInBhcmFtZXRlci1jaGFuZ2VkXCI7XG4gICAgTm90aWZpY2F0aW9uSWRbXCJGaWx0ZXJDaGFuZ2VkXCJdID0gXCJmaWx0ZXItY2hhbmdlZFwiO1xufSkoTm90aWZpY2F0aW9uSWQgPSBleHBvcnRzLk5vdGlmaWNhdGlvbklkIHx8IChleHBvcnRzLk5vdGlmaWNhdGlvbklkID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5vdGlmaWNhdGlvbnMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL05vdGlmaWNhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJhbWV0ZXJJZDtcbihmdW5jdGlvbiAoUGFyYW1ldGVySWQpIHtcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluTG9jYXRvclwiXSA9IFwiYWRkLWluLWxvY2F0b3JcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkFkZEluQm9vdHN0cmFwSW5mb1wiXSA9IFwiYWRkLWluLWJvb3RzdHJhcC1pbmZvXCI7XG4gICAgUGFyYW1ldGVySWRbXCJBZGRJblNldHRpbmdzSW5mb1wiXSA9IFwiYWRkLWluLXNldHRpbmdzLWluZm9cIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlZpc3VhbElkXCJdID0gXCJ2aXN1YWwtaWRcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlNoZWV0UGF0aFwiXSA9IFwic2hlZXQtcGF0aFwiO1xuICAgIFBhcmFtZXRlcklkW1wiSWdub3JlQWxpYXNlc1wiXSA9IFwiaWdub3JlLWFsaWFzZXNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIklnbm9yZVNlbGVjdGlvblwiXSA9IFwiaWdub3JlLXNlbGVjdGlvblwiO1xuICAgIFBhcmFtZXRlcklkW1wiSW5jbHVkZUFsbENvbHVtbnNcIl0gPSBcImluY2x1ZGUtYWxsLWNvbHVtbnNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIk1heFJvd3NcIl0gPSBcIm1heC1yb3dzXCI7XG4gICAgUGFyYW1ldGVySWRbXCJVbmRlcmx5aW5nRGF0YVRhYmxlXCJdID0gXCJ1bmRlcmx5aW5nLWRhdGEtdGFibGVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlVuZGVybHlpbmdTdW1tYXJ5RGF0YVRhYmxlXCJdID0gXCJ1bmRlcmx5aW5nLXN1bW1hcnktZGF0YS10YWJsZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZURhdGFUYWJsZVwiXSA9IFwiZGF0YS1zb3VyY2UtZGF0YS10YWJsZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiU2V0dGluZ3NWYWx1ZXNcIl0gPSBcInNldHRpbmdzLXZhbHVlc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0ZWREYXRhXCJdID0gXCJzZWxlY3RlZC1kYXRhXCI7XG4gICAgUGFyYW1ldGVySWRbXCJIaWdobGlnaHRlZERhdGFcIl0gPSBcImhpZ2hsaWdodGVkLWRhdGFcIjtcbiAgICAvLyBGaWx0ZXIgUGFyYW1zXG4gICAgUGFyYW1ldGVySWRbXCJGaWVsZE5hbWVcIl0gPSBcImZpZWxkLW5hbWVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclZhbHVlc1wiXSA9IFwiZmlsdGVyLXZhbHVlc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyVXBkYXRlVHlwZVwiXSA9IFwiZmlsdGVyLXVwZGF0ZS10eXBlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJJc0V4Y2x1ZGVNb2RlXCJdID0gXCJpcy1leGNsdWRlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJGaWx0ZXJSYW5nZU1pblwiXSA9IFwiZmlsdGVyLXJhbmdlLW1pblwiO1xuICAgIFBhcmFtZXRlcklkW1wiRmlsdGVyUmFuZ2VNYXhcIl0gPSBcImZpbHRlci1yYW5nZS1tYXhcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkZpbHRlclJhbmdlTnVsbE9wdGlvblwiXSA9IFwiZmlsdGVyLXJhbmdlLW51bGwtb3B0aW9uXCI7XG4gICAgUGFyYW1ldGVySWRbXCJXb3Jrc2hlZXRGaWx0ZXJzXCJdID0gXCJ3b3Jrc2hlZXQtZmlsdGVyc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRmllbGRJZFwiXSA9IFwiZmllbGQtaWRcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRvbWFpblR5cGVcIl0gPSBcImRvbWFpbi10eXBlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJDYXRlZ29yaWNhbERvbWFpblwiXSA9IFwiY2F0ZWdvcmljYWwtZG9tYWluXCI7XG4gICAgUGFyYW1ldGVySWRbXCJRdWFudGl0YXRpdmVEb21haW5cIl0gPSBcInF1YW50aXRhdGl2ZS1kbWFpblwiO1xuICAgIFBhcmFtZXRlcklkW1wiV29ya3NoZWV0TmFtZVwiXSA9IFwid29ya3NoZWV0LW5hbWVcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRhc2hib2FyZE5hbWVcIl0gPSBcImRhc2hib2FyZFwiO1xuICAgIFBhcmFtZXRlcklkW1wiUGFyYW1ldGVySW5mb1wiXSA9IFwicGFyYW1ldGVyLWluZm9cIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckluZm9zXCJdID0gXCJwYXJhbWV0ZXItaW5mb3NcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlBhcmFtZXRlckNhcHRpb25cIl0gPSBcInBhcmVtZXRlci1jYXB0aW9uXCI7XG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJGaWVsZE5hbWVcIl0gPSBcInBhcmFtZXRlci1maWVsZC1uYW1lXCI7XG4gICAgUGFyYW1ldGVySWRbXCJQYXJhbWV0ZXJWYWx1ZVwiXSA9IFwicGFyYW1ldGVyLXZhbHVlXCI7XG4gICAgUGFyYW1ldGVySWRbXCJTZWxlY3Rpb25cIl0gPSBcInNlbGVjdGlvblwiO1xuICAgIFBhcmFtZXRlcklkW1wiU2VsZWN0aW9uVXBkYXRlVHlwZVwiXSA9IFwic2VsZWN0aW9uVXBkYXRlVHlwZVwiO1xuICAgIFBhcmFtZXRlcklkW1wiSGllclZhbFNlbGVjdGlvbk1vZGVsc1wiXSA9IFwiaGllcmFyY2hpY2FsVmFsdWVTZWxlY3Rpb25Nb2RlbHNcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIlF1YW50UmFuZ2VTZWxlY3Rpb25Nb2RlbHNcIl0gPSBcInF1YW50YXRpdmVSYW5nZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRGltVmFsU2VsZWN0aW9uTW9kZWxzXCJdID0gXCJkaW1lbnNpb25WYWx1ZVNlbGVjdGlvbk1vZGVsc1wiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNvdXJjZUlkXCJdID0gXCJkYXRhLXNvdXJjZS1pZFwiO1xuICAgIFBhcmFtZXRlcklkW1wiRGF0YVNjaGVtYVwiXSA9IFwiZGF0YS1zY2hlbWFcIjtcbiAgICBQYXJhbWV0ZXJJZFtcIkRhdGFTb3VyY2VOYW1lXCJdID0gXCJkYXRhLXNvdXJjZS1uYW1lXCI7XG4gICAgUGFyYW1ldGVySWRbXCJDb2x1bW5zVG9JbmNsdWRlXCJdID0gXCJjb2x1bW5zLXRvLWluY2x1ZGVcIjtcbn0pKFBhcmFtZXRlcklkID0gZXhwb3J0cy5QYXJhbWV0ZXJJZCB8fCAoZXhwb3J0cy5QYXJhbWV0ZXJJZCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbWV0ZXJzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktaW50ZXJuYWwtY29udHJhY3QvbGliL2ludGVyZmFjZS9QYXJhbWV0ZXJzLmpzXG4gKiogbW9kdWxlIGlkID0gNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBEZWNsYXJlIHRoaXMga2V5IHR5cGUgYW5kIGV4cG9ydCB0aGUgTm90aWZpY2F0aW9uSWQgdG8gbWFrZSB0aGlzIGJlaGF2ZSBsaWtlIGEgc3RyaW5nIGVudW1cbnZhciBWZXJiSWQ7XG4oZnVuY3Rpb24gKFZlcmJJZCkge1xuICAgIFZlcmJJZFtcIkFwcGx5Q2F0ZWdvcmljYWxGaWx0ZXJcIl0gPSBcImNhdGVnb3JpY2FsLWZpbHRlclwiO1xuICAgIFZlcmJJZFtcIkFwcGx5UmFuZ2VGaWx0ZXJcIl0gPSBcInJhbmdlLWZpbHRlclwiO1xuICAgIFZlcmJJZFtcIkNsZWFyRmlsdGVyXCJdID0gXCJjbGVhci1maWx0ZXJcIjtcbiAgICBWZXJiSWRbXCJJbml0aWFsaXplQWRkSW5cIl0gPSBcImluaXRpYWxpemUtYWRkLWluXCI7XG4gICAgVmVyYklkW1wiR2V0RGF0YVN1bW1hcnlEYXRhXCJdID0gXCJnZXQtc3VtbWFyeS1kYXRhXCI7XG4gICAgVmVyYklkW1wiR2V0VW5kZXJseWluZ0RhdGFcIl0gPSBcImdldC11bmRlcmx5aW5nLWRhdGFcIjtcbiAgICBWZXJiSWRbXCJHZXREYXRhU291cmNlRGF0YVwiXSA9IFwiZ2V0LWRhdGFzb3VyY2UtZGF0YVwiO1xuICAgIFZlcmJJZFtcIlNhdmVBZGRJblNldHRpbmdzXCJdID0gXCJzYXZlLWFkZC1pbi1zZXR0aW5nc1wiO1xuICAgIFZlcmJJZFtcIkdldFNlbGVjdGVkTWFya3NcIl0gPSBcImdldC1zZWxlY3RlZC1tYXJrc1wiO1xuICAgIFZlcmJJZFtcIkdldEhpZ2hsaWdodGVkTWFya3NcIl0gPSBcImdldC1oaWdobGlnaHRlZC1tYXJrc1wiO1xuICAgIFZlcmJJZFtcIkdldFBhcmFtZXRlcnNGb3JTaGVldFwiXSA9IFwiZ2V0LXBhcmFtZXRlcnMtZm9yLXNoZWV0XCI7XG4gICAgVmVyYklkW1wiRmluZFBhcmFtZXRlclwiXSA9IFwiZmluZC1wYXJhbWV0ZXJcIjtcbiAgICBWZXJiSWRbXCJDaGFuZ2VQYXJhbWV0ZXJWYWx1ZVwiXSA9IFwiY2hhbmdlLXBhcmFtZXRlci12YWx1ZVwiO1xuICAgIFZlcmJJZFtcIkNsZWFyU2VsZWN0ZWRNYXJrc1wiXSA9IFwiY2xlYXItc2VsZWN0ZWQtbWFya3NcIjtcbiAgICBWZXJiSWRbXCJTZWxlY3RCeVZhbHVlXCJdID0gXCJzZWxlY3QtYnktdmFsdWVcIjtcbiAgICBWZXJiSWRbXCJHZXREYXRhU291cmNlc1wiXSA9IFwiZ2V0LWRhdGEtc291cmNlc1wiO1xuICAgIFZlcmJJZFtcIlJlZnJlc2hEYXRhU291cmNlXCJdID0gXCJyZWZyZXNoLWRhdGEtc291cmNlXCI7XG4gICAgVmVyYklkW1wiR2V0RmlsdGVyc1wiXSA9IFwiZ2V0LWZpbHRlcnNcIjtcbiAgICBWZXJiSWRbXCJHZXRDYXRlZ29yaWNhbERvbWFpblwiXSA9IFwiZ2V0LWNhdGVnb3JpY2FsLWRvbWFpblwiO1xuICAgIFZlcmJJZFtcIkdldFJhbmdlRG9tYWluXCJdID0gXCJnZXQtcmFuZ2UtZG9tYWluXCI7XG59KShWZXJiSWQgPSBleHBvcnRzLlZlcmJJZCB8fCAoZXhwb3J0cy5WZXJiSWQgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVyYnMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1pbnRlcm5hbC1jb250cmFjdC9saWIvaW50ZXJmYWNlL1ZlcmJzLmpzXG4gKiogbW9kdWxlIGlkID0gN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgaXMgeW91ciBtYWluLiBUaGlzIGlzIHdoZXJlIHlvdSByZS1leHBvcnQgZXZlcnl0aGluZyB5b3Ugd2FudCB0byBiZSBwdWJsaWNseSBhdmFpbGFibGUuXG4gKlxuICogVGhlIGJ1aWxkIGVuZm9yY2VzIHRoYXQgdGhlIGZpbGUgaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IGlzIGV4cG9ydGVkLlxuICovXG5mdW5jdGlvbiBfX2V4cG9ydChtKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuX19leHBvcnQocmVxdWlyZShcIi4vRXZlbnRMaXN0ZW5lck1hbmFnZXJcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vUGFyYW1ldGVyXCIpKTtcbnZhciBQb2ludF8xID0gcmVxdWlyZShcIi4vUG9pbnRcIik7XG5leHBvcnRzLlBvaW50ID0gUG9pbnRfMS5Qb2ludDtcbnZhciBTaXplXzEgPSByZXF1aXJlKFwiLi9TaXplXCIpO1xuZXhwb3J0cy5TaXplID0gU2l6ZV8xLlNpemU7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9Nb2RlbHMvR2V0RGF0YU1vZGVsc1wiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zXCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0V2ZW50cy9GaWx0ZXJDaGFuZ2VkRXZlbnRcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vRXZlbnRzL01hcmtzU2VsZWN0ZWRFdmVudFwiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9FdmVudHMvVGFibGVhdUV2ZW50XCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0V2ZW50cy9UYWJsZWF1U2hlZXRFdmVudFwiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9FdmVudHMvVGFibGVhdVdvcmtzaGVldEV2ZW50XCIpKTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0ludGVybmFsL1NpbmdsZUV2ZW50TWFuYWdlckltcGxcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vU2VydmljZXMvR2V0RGF0YVNlcnZpY2VcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlc1wiKSk7XG5fX2V4cG9ydChyZXF1aXJlKFwiLi9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnlcIikpO1xuX19leHBvcnQocmVxdWlyZShcIi4vRW51bU1hcHBpbmdzL0ludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5nc1wiKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcGlTaGFyZWQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0FwaVNoYXJlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBDbGFzcyBkZXNpZ25lZCB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBoYW5kbGVycyBmcm9tIGEgdXNlci4gT25seSB0aG9zZSBldmVudHNcbiAqIHdoaWNoIGFyZSBhZGRlZCB2aWEgQWRkTmV3RXZlbnRUeXBlIHdpbGwgYmUgc3VwcG9ydGVkIGJ5IHRoaXMgaW5zdGFuY2VcbiAqL1xudmFyIEV2ZW50TGlzdGVuZXJNYW5hZ2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudExpc3RlbmVyTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzID0ge307XG4gICAgfVxuICAgIEV2ZW50TGlzdGVuZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50VHlwZSwgaGFuZGxlcikge1xuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vycy5oYXNPd25Qcm9wZXJ0eShldmVudFR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBldmVudCB0eXBlIDogXCIgKyBldmVudFR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRUeXBlXS5hZGRFdmVudExpc3RlbmVyKGhhbmRsZXIpO1xuICAgIH07XG4gICAgRXZlbnRMaXN0ZW5lck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnRUeXBlLCBoYW5kbGVyKSB7XG4gICAgICAgIGlmICghdGhpcy5fZXZlbnRMaXN0ZW5lck1hbmFnZXJzLmhhc093blByb3BlcnR5KGV2ZW50VHlwZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGV2ZW50IHR5cGUgOiBcIiArIGV2ZW50VHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50TGlzdGVuZXJNYW5hZ2Vyc1tldmVudFR5cGVdLnJlbW92ZUV2ZW50TGlzdGVuZXIoaGFuZGxlcik7XG4gICAgfTtcbiAgICBFdmVudExpc3RlbmVyTWFuYWdlci5wcm90b3R5cGUuYWRkTmV3RXZlbnRUeXBlID0gZnVuY3Rpb24gKGV2ZW50TWFuYWdlcikge1xuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyTWFuYWdlcnNbZXZlbnRNYW5hZ2VyLmV2ZW50VHlwZV0gPSBldmVudE1hbmFnZXI7XG4gICAgfTtcbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lck1hbmFnZXI7XG59KCkpO1xuZXhwb3J0cy5FdmVudExpc3RlbmVyTWFuYWdlciA9IEV2ZW50TGlzdGVuZXJNYW5hZ2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXZlbnRMaXN0ZW5lck1hbmFnZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50TGlzdGVuZXJNYW5hZ2VyLmpzXG4gKiogbW9kdWxlIGlkID0gOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFdmVudExpc3RlbmVyTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vRXZlbnRMaXN0ZW5lck1hbmFnZXJcIik7XG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBQYXJhbWV0ZXIgY29udHJhY3QuIENhbGxzIGRvd24gdG8gdGhlIGltcGxcbiAqIGNsYXNzIGZvciBhbG1vc3QgYWxsIG9mIHRoZSB3b3JrIGl0IGRvZXMuXG4gKi9cbnZhciBQYXJhbWV0ZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQYXJhbWV0ZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGFyYW1ldGVyKHBhcmFtZXRlckltcGwsIHNoZWV0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnBhcmFtZXRlckltcGwgPSBwYXJhbWV0ZXJJbXBsO1xuICAgICAgICAvLyBJbml0aWFsaXplIG91ciBldmVudCBoYW5kbGluZyBmb3IgdGhpcyBjbGFzc1xuICAgICAgICBfdGhpcy5wYXJhbWV0ZXJJbXBsLmluaXRpYWxpemVFdmVudHMoc2hlZXQpLmZvckVhY2goZnVuY3Rpb24gKGUpIHsgcmV0dXJuIF90aGlzLmFkZE5ld0V2ZW50VHlwZShlKTsgfSk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcmFtZXRlci5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5uYW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGFyYW1ldGVyLnByb3RvdHlwZSwgXCJjdXJyZW50VmFsdWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuY3VycmVudFZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGFyYW1ldGVyLnByb3RvdHlwZSwgXCJkYXRhVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1ldGVySW1wbC5kYXRhVHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcmFtZXRlci5wcm90b3R5cGUsIFwiYWxsb3dhYmxlVmFsdWVzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJJbXBsLmFsbG93YWJsZVZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgUGFyYW1ldGVyLnByb3RvdHlwZS5jaGFuZ2VWYWx1ZUFzeW5jID0gZnVuY3Rpb24gKG5ld1ZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmFtZXRlckltcGwuY2hhbmdlVmFsdWVBc3luYyhuZXdWYWx1ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gUGFyYW1ldGVyO1xufShFdmVudExpc3RlbmVyTWFuYWdlcl8xLkV2ZW50TGlzdGVuZXJNYW5hZ2VyKSk7XG5leHBvcnRzLlBhcmFtZXRlciA9IFBhcmFtZXRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhcmFtZXRlci5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvUGFyYW1ldGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFBvaW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQb2ludChfeCwgX3kpIHtcbiAgICAgICAgdGhpcy5feCA9IF94O1xuICAgICAgICB0aGlzLl95ID0gX3k7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQb2ludC5wcm90b3R5cGUsIFwieFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3g7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQb2ludC5wcm90b3R5cGUsIFwieVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3k7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBQb2ludDtcbn0oKSk7XG5leHBvcnRzLlBvaW50ID0gUG9pbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qb2ludC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvUG9pbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU2l6ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2l6ZShfaGVpZ2h0LCBfd2lkdGgpIHtcbiAgICAgICAgdGhpcy5faGVpZ2h0ID0gX2hlaWdodDtcbiAgICAgICAgdGhpcy5fd2lkdGggPSBfd2lkdGg7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaXplLnByb3RvdHlwZSwgXCJoZWlnaHRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9oZWlnaHQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaXplLnByb3RvdHlwZSwgXCJ3aWR0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gU2l6ZTtcbn0oKSk7XG5leHBvcnRzLlNpemUgPSBTaXplO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2l6ZS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvU2l6ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBEYXRhVGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERhdGFUYWJsZShfZGF0YSwgX2NvbHVtbnMsIF90b3RhbFJvd0NvdW50LCBfaXNTdW1tYXJ5RGF0YSwgX21hcmtzSW5mbykge1xuICAgICAgICB0aGlzLl9kYXRhID0gX2RhdGE7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMgPSBfY29sdW1ucztcbiAgICAgICAgdGhpcy5fdG90YWxSb3dDb3VudCA9IF90b3RhbFJvd0NvdW50O1xuICAgICAgICB0aGlzLl9pc1N1bW1hcnlEYXRhID0gX2lzU3VtbWFyeURhdGE7XG4gICAgICAgIHRoaXMuX21hcmtzSW5mbyA9IF9tYXJrc0luZm87XG4gICAgICAgIC8vIFRPRE86IGdldCByaWQgb2YgdGhpcyBpbiByZWRlc2lnbi5cbiAgICAgICAgdGhpcy5fbmFtZSA9IF9pc1N1bW1hcnlEYXRhID8gJ1N1bW1hcnkgRGF0YSBUYWJsZScgOiAnVW5kZXJseWluZyBEYXRhIFRhYmxlJztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFUYWJsZS5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhVGFibGUucHJvdG90eXBlLCBcImRhdGFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVRhYmxlLnByb3RvdHlwZSwgXCJjb2x1bW5zXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFUYWJsZS5wcm90b3R5cGUsIFwibWFya3NJbmZvXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFya3NJbmZvO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVRhYmxlLnByb3RvdHlwZSwgXCJ0b3RhbFJvd0NvdW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdG90YWxSb3dDb3VudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFUYWJsZS5wcm90b3R5cGUsIFwiaXNTdW1tYXJ5RGF0YVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzU3VtbWFyeURhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXRhVGFibGU7XG59KCkpO1xuZXhwb3J0cy5EYXRhVGFibGUgPSBEYXRhVGFibGU7XG52YXIgTWFya0luZm8gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE1hcmtJbmZvKF90eXBlLCBfY29sb3IsIF90dXBsZUlkKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSBfdHlwZTtcbiAgICAgICAgdGhpcy5fY29sb3IgPSBfY29sb3I7XG4gICAgICAgIHRoaXMuX3R1cGxlSWQgPSBfdHVwbGVJZDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hcmtJbmZvLnByb3RvdHlwZSwgXCJ0eXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hcmtJbmZvLnByb3RvdHlwZSwgXCJjb2xvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWFya0luZm8ucHJvdG90eXBlLCBcInR1cGxlSWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90dXBsZUlkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gTWFya0luZm87XG59KCkpO1xuZXhwb3J0cy5NYXJrSW5mbyA9IE1hcmtJbmZvO1xudmFyIENvbHVtbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29sdW1uKF9maWVsZE5hbWUsIF9kYXRhVHlwZSwgLy8gVE9ETzogdGhpcyBzaG91ZGwgYmUgYW4gZW51bSB0eXBlXG4gICAgICAgIF9pc1JlZmVyZW5jZWQsIF9pbmRleCkge1xuICAgICAgICB0aGlzLl9maWVsZE5hbWUgPSBfZmllbGROYW1lO1xuICAgICAgICB0aGlzLl9kYXRhVHlwZSA9IF9kYXRhVHlwZTtcbiAgICAgICAgdGhpcy5faXNSZWZlcmVuY2VkID0gX2lzUmVmZXJlbmNlZDtcbiAgICAgICAgdGhpcy5faW5kZXggPSBfaW5kZXg7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb2x1bW4ucHJvdG90eXBlLCBcImZpZWxkTmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkTmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbHVtbi5wcm90b3R5cGUsIFwiZGF0YVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhVHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbHVtbi5wcm90b3R5cGUsIFwiaXNSZWZlcmVuY2VkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNSZWZlcmVuY2VkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29sdW1uLnByb3RvdHlwZSwgXCJpbmRleFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29sdW1uO1xufSgpKTtcbmV4cG9ydHMuQ29sdW1uID0gQ29sdW1uO1xudmFyIERhdGFWYWx1ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gICAgZnVuY3Rpb24gRGF0YVZhbHVlKF92YWx1ZSwgX2Zvcm1hdHRlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gX3ZhbHVlO1xuICAgICAgICB0aGlzLl9mb3JtYXR0ZWRWYWx1ZSA9IF9mb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWYWx1ZS5wcm90b3R5cGUsIFwidmFsdWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFWYWx1ZS5wcm90b3R5cGUsIFwiZm9ybWF0dGVkVmFsdWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIERhdGFWYWx1ZTtcbn0oKSk7XG5leHBvcnRzLkRhdGFWYWx1ZSA9IERhdGFWYWx1ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdldERhdGFNb2RlbHMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL01vZGVscy9HZXREYXRhTW9kZWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRhYmxlYXVFeGNlcHRpb25zID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUYWJsZWF1RXhjZXB0aW9ucygpIHtcbiAgICB9XG4gICAgcmV0dXJuIFRhYmxlYXVFeGNlcHRpb25zO1xufSgpKTtcbmV4cG9ydHMuVGFibGVhdUV4Y2VwdGlvbnMgPSBUYWJsZWF1RXhjZXB0aW9ucztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlYXVFeGNlcHRpb25zLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9FeGNlcHRpb25zL1RhYmxlYXVFeGNlcHRpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gMTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29udHJhY3QgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFRhYmxlYXVXb3Jrc2hlZXRFdmVudF8xID0gcmVxdWlyZShcIi4vVGFibGVhdVdvcmtzaGVldEV2ZW50XCIpO1xudmFyIEZpbHRlckNoYW5nZWRFdmVudCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEZpbHRlckNoYW5nZWRFdmVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBGaWx0ZXJDaGFuZ2VkRXZlbnQod29ya3NoZWV0LCBfZmllbGROYW1lKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuRmlsdGVyQ2hhbmdlZCwgd29ya3NoZWV0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fZmllbGROYW1lID0gX2ZpZWxkTmFtZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmlsdGVyQ2hhbmdlZEV2ZW50LnByb3RvdHlwZSwgXCJmaWVsZE5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEZpbHRlckNoYW5nZWRFdmVudC5wcm90b3R5cGUuZ2V0RmlsdGVyQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXQuZ2V0RmlsdGVyc0FzeW5jKCkudGhlbihmdW5jdGlvbiAoZmlsdGVycykge1xuICAgICAgICAgICAgLy8gVE9ETzogRmlsdGVyaW5nIG9mIHRoZSBmaWx0ZXJzIHNob3VsZCBldmVudHVhbGx5IGJlIGRvbmUgcGxhdGZvcm0gc2lkZS5cbiAgICAgICAgICAgIHZhciBldmVudGVkRmlsdGVyID0gZmlsdGVycy5maW5kKGZ1bmN0aW9uIChmaWx0ZXIpIHsgcmV0dXJuIChmaWx0ZXIuZmllbGROYW1lID09PSBfdGhpcy5fZmllbGROYW1lKTsgfSk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50ZWRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGRuJ3QgaGl0IHRoaXMgdW5sZXNzIHRoZSBmaWx0ZXIgd2FzIHJlbW92ZWQgZnJvbSB0aGUgd29ya3NoZWV0XG4gICAgICAgICAgICAgICAgLy8gYWZ0ZXIgdGhlIGV2ZW50IHdhcyByYWlzZWQuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBFcnJvcjogRmlsdGVyIG5vIGxvbmdlciBmb3VuZCBpbiB3b3Jrc2hlZXQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXZlbnRlZEZpbHRlcjtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gRmlsdGVyQ2hhbmdlZEV2ZW50O1xufShUYWJsZWF1V29ya3NoZWV0RXZlbnRfMS5UYWJsZWF1V29ya3NoZWV0RXZlbnQpKTtcbmV4cG9ydHMuRmlsdGVyQ2hhbmdlZEV2ZW50ID0gRmlsdGVyQ2hhbmdlZEV2ZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsdGVyQ2hhbmdlZEV2ZW50LmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9FdmVudHMvRmlsdGVyQ2hhbmdlZEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGlzIGlzIHlvdXIgbWFpbi4gVGhpcyBpcyB3aGVyZSB5b3UgcmUtZXhwb3J0IGV2ZXJ5dGhpbmcgeW91IHdhbnQgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlLlxuICpcbiAqIFRoZSBidWlsZCBlbmZvcmNlcyB0aGF0IHRoZSBmaWxlIGhhcyB0aGUgc2FtZSBuYW1lIGFzIHRoZSBnbG9iYWwgdmFyaWFibGUgdGhhdCBpcyBleHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gX19leHBvcnQobSkge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0KHJlcXVpcmUoXCIuL0VudW1zXCIpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwaUV4dGVybmFsQ29udHJhY3QuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1leHRlcm5hbC1jb250cmFjdC9saWIvQXBpRXh0ZXJuYWxDb250cmFjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8vIEFsbCBlbnVtIHZhbHVlcyBtYWRlIGF2YWlsYWJsZSB0byBBZGRJbiBkZXZlbG9wZXJzLlxuLy8gRW51bXMgc2hvdWxkIGJlIGtlcHQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgQWRkSW4gaXMgY3VycmVudGx5IHJ1bm5pbmcuXG4gKi9cbnZhciBBZGRJbkNvbnRleHQ7XG4oZnVuY3Rpb24gKEFkZEluQ29udGV4dCkge1xuICAgIEFkZEluQ29udGV4dFtcIkRlc2t0b3BcIl0gPSBcImRlc2t0b3BcIjtcbiAgICBBZGRJbkNvbnRleHRbXCJTZXJ2ZXJcIl0gPSBcInNlcnZlclwiO1xufSkoQWRkSW5Db250ZXh0ID0gZXhwb3J0cy5BZGRJbkNvbnRleHQgfHwgKGV4cG9ydHMuQWRkSW5Db250ZXh0ID0ge30pKTtcbi8qKlxuICogVGhlIG1vZGUgaW4gd2hpY2ggdGhlIEFkZEluIGlzIGN1cnJlbnRseSBydW5uaW5nLlxuICovXG52YXIgQWRkSW5Nb2RlO1xuKGZ1bmN0aW9uIChBZGRJbk1vZGUpIHtcbiAgICBBZGRJbk1vZGVbXCJBdXRob3JpbmdcIl0gPSBcImF1dGhvcmluZ1wiO1xuICAgIEFkZEluTW9kZVtcIlZpZXdpbmdcIl0gPSBcInZpZXdpbmdcIjtcbn0pKEFkZEluTW9kZSA9IGV4cG9ydHMuQWRkSW5Nb2RlIHx8IChleHBvcnRzLkFkZEluTW9kZSA9IHt9KSk7XG52YXIgQW5hbHl0aWNzT2JqZWN0VHlwZTtcbihmdW5jdGlvbiAoQW5hbHl0aWNzT2JqZWN0VHlwZSkge1xuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJDbHVzdGVyXCJdID0gXCJjbHVzdGVyXCI7XG4gICAgQW5hbHl0aWNzT2JqZWN0VHlwZVtcIkZvcmVjYXN0XCJdID0gXCJmb3JlY2FzdFwiO1xuICAgIEFuYWx5dGljc09iamVjdFR5cGVbXCJUcmVuZExpbmVcIl0gPSBcInRyZW5kLWxpbmVcIjtcbn0pKEFuYWx5dGljc09iamVjdFR5cGUgPSBleHBvcnRzLkFuYWx5dGljc09iamVjdFR5cGUgfHwgKGV4cG9ydHMuQW5hbHl0aWNzT2JqZWN0VHlwZSA9IHt9KSk7XG52YXIgQ29sdW1uVHlwZTtcbihmdW5jdGlvbiAoQ29sdW1uVHlwZSkge1xuICAgIENvbHVtblR5cGVbXCJEaXNjcmV0ZVwiXSA9IFwiZGlzY3JldGVcIjtcbiAgICBDb2x1bW5UeXBlW1wiQ29udGludW91c1wiXSA9IFwiY29udGludW91c1wiO1xufSkoQ29sdW1uVHlwZSA9IGV4cG9ydHMuQ29sdW1uVHlwZSB8fCAoZXhwb3J0cy5Db2x1bW5UeXBlID0ge30pKTtcbi8qKlxuICogV2hhdCB0aGUgb2JqZWN0IHJlcHJlc2VudHMgaW4gYSBkYXNoYm9hcmQuXG4gKi9cbnZhciBEYXNoYm9hcmRPYmplY3RUeXBlO1xuKGZ1bmN0aW9uIChEYXNoYm9hcmRPYmplY3RUeXBlKSB7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkJsYW5rXCJdID0gXCJibGFua1wiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXb3Jrc2hlZXRcIl0gPSBcIndvcmtzaGVldFwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJRdWlja0ZpbHRlclwiXSA9IFwicXVpY2stZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhcmFtZXRlckNvbnRyb2xcIl0gPSBcInBhcmFtZXRlci1jb250cm9sXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlBhZ2VGaWx0ZXJcIl0gPSBcInBhZ2UtZmlsdGVyXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkxlZ2VuZFwiXSA9IFwibGVnZW5kXCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIlRpdGxlXCJdID0gXCJ0aXRsZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJUZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgRGFzaGJvYXJkT2JqZWN0VHlwZVtcIkltYWdlXCJdID0gXCJpbWFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJXZWJQYWdlXCJdID0gXCJ3ZWItcGFnZVwiO1xuICAgIERhc2hib2FyZE9iamVjdFR5cGVbXCJBZGRJblwiXSA9IFwiYWRkaW5cIjtcbn0pKERhc2hib2FyZE9iamVjdFR5cGUgPSBleHBvcnRzLkRhc2hib2FyZE9iamVjdFR5cGUgfHwgKGV4cG9ydHMuRGFzaGJvYXJkT2JqZWN0VHlwZSA9IHt9KSk7XG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSBhIHZhbHVlIGNhbiBoYXZlXG4gKi9cbnZhciBEYXRhVHlwZTtcbihmdW5jdGlvbiAoRGF0YVR5cGUpIHtcbiAgICBEYXRhVHlwZVtcIlN0cmluZ1wiXSA9IFwic3RyaW5nXCI7XG4gICAgRGF0YVR5cGVbXCJJbnRcIl0gPSBcImludFwiO1xuICAgIERhdGFUeXBlW1wiRmxvYXRcIl0gPSBcImZsb2F0XCI7XG4gICAgRGF0YVR5cGVbXCJCb29sXCJdID0gXCJib29sXCI7XG4gICAgRGF0YVR5cGVbXCJEYXRlXCJdID0gXCJkYXRlXCI7XG4gICAgRGF0YVR5cGVbXCJEYXRlVGltZVwiXSA9IFwiZGF0ZS10aW1lXCI7XG4gICAgRGF0YVR5cGVbXCJTcGF0aWFsXCJdID0gXCJzcGF0aWFsXCI7XG59KShEYXRhVHlwZSA9IGV4cG9ydHMuRGF0YVR5cGUgfHwgKGV4cG9ydHMuRGF0YVR5cGUgPSB7fSkpO1xuLyoqXG4gKiBWYWxpZCBkYXRlIHJhbmdlcyBmb3IgYSByZWxhdGl2ZSBkYXRlIGZpbHRlci5cbiAqL1xudmFyIERhdGVSYW5nZVR5cGU7XG4oZnVuY3Rpb24gKERhdGVSYW5nZVR5cGUpIHtcbiAgICBEYXRlUmFuZ2VUeXBlW1wiTGFzdFwiXSA9IFwibGFzdFwiO1xuICAgIERhdGVSYW5nZVR5cGVbXCJMYXN0TlwiXSA9IFwibGFzdC1uXCI7XG4gICAgRGF0ZVJhbmdlVHlwZVtcIk5leHRcIl0gPSBcIm5leHRcIjtcbiAgICBEYXRlUmFuZ2VUeXBlW1wiTmV4dE5cIl0gPSBcIm5leHQtblwiO1xuICAgIERhdGVSYW5nZVR5cGVbXCJDdXJyZW50XCJdID0gXCJjdXJyZW50XCI7XG4gICAgRGF0ZVJhbmdlVHlwZVtcIlRvRGF0ZVwiXSA9IFwidG8tZGF0ZVwiO1xufSkoRGF0ZVJhbmdlVHlwZSA9IGV4cG9ydHMuRGF0ZVJhbmdlVHlwZSB8fCAoZXhwb3J0cy5EYXRlUmFuZ2VUeXBlID0ge30pKTtcbi8qKlxuICogVHlwZXMgb2YgZGlhbG9nIGV2ZW50IGZvciBldmVudCBsaXN0ZW5pbmcgYmV0d2VlbiBhIHBhcmVudCBBZGRJbiBhbmQgYSBwb3B1cCBkaWFsb2cuXG4gKi9cbnZhciBEaWFsb2dFdmVudFR5cGU7XG4oZnVuY3Rpb24gKERpYWxvZ0V2ZW50VHlwZSkge1xuICAgIERpYWxvZ0V2ZW50VHlwZVtcIkRpYWxvZ01lc3NhZ2VcIl0gPSBcImRpYWxvZy1tZXNzYWdlXCI7XG4gICAgRGlhbG9nRXZlbnRUeXBlW1wiRGlhbG9nRXZlbnRcIl0gPSBcImRpYWxvZy1ldmVudFwiO1xufSkoRGlhbG9nRXZlbnRUeXBlID0gZXhwb3J0cy5EaWFsb2dFdmVudFR5cGUgfHwgKGV4cG9ydHMuRGlhbG9nRXZlbnRUeXBlID0ge30pKTtcbnZhciBFbmNvZGluZ1R5cGU7XG4oZnVuY3Rpb24gKEVuY29kaW5nVHlwZSkge1xuICAgIEVuY29kaW5nVHlwZVtcIkNvbHVtblwiXSA9IFwiY29sdW1uXCI7XG4gICAgRW5jb2RpbmdUeXBlW1wiUm93XCJdID0gXCJyb3dcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJQYWdlXCJdID0gXCJwYWdlXCI7XG4gICAgRW5jb2RpbmdUeXBlW1wiRmlsdGVyXCJdID0gXCJmaWx0ZXJcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJNYXJrc1R5cGVcIl0gPSBcIm1hcmtzLXR5cGVcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJNZWFzdXJlVmFsdWVzXCJdID0gXCJtZWFzdXJlLXZhbHVlc1wiO1xuICAgIEVuY29kaW5nVHlwZVtcIkNvbG9yXCJdID0gXCJjb2xvclwiO1xuICAgIEVuY29kaW5nVHlwZVtcIlNpemVcIl0gPSBcInNpemVcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJMYWJlbFwiXSA9IFwibGFiZWxcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJEZXRhaWxcIl0gPSBcImRldGFpbFwiO1xuICAgIEVuY29kaW5nVHlwZVtcIlRvb2x0aXBcIl0gPSBcInRvb2x0aXBcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJTaGFwZVwiXSA9IFwic2hhcGVcIjtcbiAgICBFbmNvZGluZ1R5cGVbXCJQYXRoXCJdID0gXCJwYXRoXCI7XG4gICAgRW5jb2RpbmdUeXBlW1wiQW5nbGVcIl0gPSBcImFuZ2xlXCI7XG59KShFbmNvZGluZ1R5cGUgPSBleHBvcnRzLkVuY29kaW5nVHlwZSB8fCAoZXhwb3J0cy5FbmNvZGluZ1R5cGUgPSB7fSkpO1xuLyoqXG4gKiBBbGwgZXJyb3IgY29kZXMgdXNlZCBieSB0aGUgQWRkSW4gQVBJLlxuICovXG52YXIgRXJyb3JDb2RlcztcbihmdW5jdGlvbiAoRXJyb3JDb2Rlcykge1xuICAgIC8qKlxuICAgICAqIE9ubHkgb25lIGRpYWxvZyBjYW4gYmUgb3BlbmVkIGF0IHRpbWUgd2l0aCB0aGUgVUkgbmFtZXNwYWNlIGZ1bmN0aW9uYWxpdHkuXG4gICAgICovXG4gICAgRXJyb3JDb2Rlc1tcIkRpYWxvZ0FscmVhZHlPcGVuXCJdID0gXCJkaWFsb2ctYWxyZWFkeS1vcGVuXCI7XG4gICAgLyoqXG4gICAgICogVGhlIG9wZW4gZGlhbG9nIHdhcyBjbG9zZWQgYnkgdGhlIHVzZXIuXG4gICAgICovXG4gICAgRXJyb3JDb2Rlc1tcIkRpYWxvZ0Nsb3NlZEJ5VXNlclwiXSA9IFwiZGlhbG9nLWNsb3NlZC1ieS11c2VyXCI7XG4gICAgLyoqXG4gICAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBwZXJmb3JtIGEgZmlsdGVyIG9wZXJhdGlvbi5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiRmlsdGVyQ2Fubm90QmVQZXJmb3JtZWRcIl0gPSBcImZpbHRlci1jYW5ub3QtYmUtcGVyZm9ybWVkXCI7XG4gICAgLyoqXG4gICAgICogQW4gZXJyb3Igb2NjdXJyZWQgd2l0aGluIHRoZSBUYWJsZWF1IEFkZEluIEFQSS4gQ29udGFjdCBUYWJsZWF1IFN1cHBvcnQuXG4gICAgICovXG4gICAgRXJyb3JDb2Rlc1tcIkludGVybmFsRXJyb3JcIl0gPSBcImludGVybmFsLWVycm9yXCI7XG4gICAgLyoqXG4gICAgICogQW4gaW52YWxpZCBhZ2dyZWdhdGlvbiB3YXMgc3BlY2lmaWVkIGZvciB0aGUgZmlsdGVyLCBzdWNoIGFzIHNldHRpbmcgYSByYW5nZSBmaWx0ZXIgdG8gXCJTVU0oU2FsZXMpXCIgaW5zdGVhZCBvZiBcIlNhbGVzXCIuXG4gICAgICovXG4gICAgRXJyb3JDb2Rlc1tcIkludmFsaWRBZ2dyZWdhdGlvbkZpZWxkTmFtZVwiXSA9IFwiaW52YWxpZC1hZ2dyZWdhdGlvbi1maWVsZC1uYW1lXCI7XG4gICAgLyoqXG4gICAgICogQSBkaWFsb2cgbXVzdCBmaXJzdCBsYXVuY2ggdG8sIGFuZCBzZW5kIG1lc3NhZ2VzIGZyb20sIHRoZSBzYW1lIGRvbWFpbiBhcyB0aGUgcGFyZW50IEFkZEluLlxuICAgICAqL1xuICAgIEVycm9yQ29kZXNbXCJJbnZhbGlkRG9tYWluRGlhbG9nXCJdID0gXCJpbnZhbGlkLWRpYWxvZy1kb21haW5cIjtcbiAgICAvKipcbiAgICAgKiBBbiBpbnZhbGlkIGRhdGUgd2FzIHNwZWNpZmllZCBpbiBhIG1ldGhvZCB0aGF0IHJlcXVpcmVkIGEgZGF0ZSBwYXJhbWV0ZXIuXG4gICAgICovXG4gICAgRXJyb3JDb2Rlc1tcIkludmFsaWREYXRlUGFyYW1ldGVyXCJdID0gXCJpbnZhbGlkLWRhdGUtcGFyYW1ldGVyXCI7XG4gICAgLyoqXG4gICAgICogQSBmaWx0ZXIgb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQgb24gYSBmaWVsZCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiSW52YWxpZEZpbHRlckZpZWxkTmFtZVwiXSA9IFwiaW52YWxpZC1maWx0ZXItZmllbGQtbmFtZVwiO1xuICAgIC8qKlxuICAgICAqIEEgZmlsdGVyIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB0aGUgd3JvbmcgZGF0YSB0eXBlIG9yIGZvcm1hdC5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiSW52YWxpZEZpbHRlckZpZWxkVmFsdWVcIl0gPSBcImludmFsaWQtZmlsdGVyLWZpZWxkLXZhbHVlXCI7XG4gICAgLyoqXG4gICAgICogQSBwYXJhbWV0ZXIgaXMgbm90IHRoZSBjb3JyZWN0IGRhdGEgdHlwZSBvciBmb3JtYXQuIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBFcnJvci5tZXNzYWdlIGZpZWxkLlxuICAgICAqL1xuICAgIEVycm9yQ29kZXNbXCJJbnZhbGlkUGFyYW1ldGVyXCJdID0gXCJpbnZhbGlkLXBhcmFtZXRlclwiO1xuICAgIC8qKlxuICAgICAqIEFuIGludmFsaWQgZGF0ZSB2YWx1ZSB3YXMgc3BlY2lmaWVkIGluIGEgU2hlZXQuc2VsZWN0TWFya3NBc3luYygpIGNhbGwgZm9yIGEgZGF0ZSBmaWVsZC5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiSW52YWxpZFNlbGVjdGlvbkRhdGVcIl0gPSBcImludmFsaWQtc2VsZWN0aW9uLWRhdGVcIjtcbiAgICAvKipcbiAgICAgKiBBIGZpZWxkIHdhcyBzcGVjaWZpZWQgaW4gYSBTaGVldC5zZWxlY3RNYXJrc0FzeW5jKCkgY2FsbCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhIHNvdXJjZS5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiSW52YWxpZFNlbGVjdGlvbkZpZWxkTmFtZVwiXSA9IFwiaW52YWxpZC1zZWxlY3Rpb24tZmllbGQtbmFtZVwiO1xuICAgIC8qKlxuICAgICAqIEFuIGludmFsaWQgdmFsdWUgd2FzIHNwZWNpZmllZCBpbiBhIFNoZWV0LnNlbGVjdE1hcmtzQXN5bmMoKSBjYWxsLlxuICAgICAqL1xuICAgIEVycm9yQ29kZXNbXCJJbnZhbGlkU2VsZWN0aW9uVmFsdWVcIl0gPSBcImludmFsaWQtc2VsZWN0aW9uLXZhbHVlXCI7XG4gICAgLyoqXG4gICAgICogQSByZXF1aXJlZCBwYXJhbWV0ZXIgd2FzIG5vdCBzcGVjaWZpZWQsIG51bGwsIG9yIGFuIGVtcHR5IHN0cmluZy9hcnJheS5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiTnVsbE9yRW1wdHlQYXJhbWV0ZXJcIl0gPSBcIm51bGwtb3ItZW1wdHktcGFyYW1ldGVyXCI7XG4gICAgLyoqXG4gICAgICogQW4gdW5rbm93biBldmVudCBuYW1lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgdG8gVml6LmFkZEV2ZW50TGlzdGVuZXJvciBWaXoucmVtb3ZlRXZlbnRMaXN0ZW5lci5cbiAgICAgKi9cbiAgICBFcnJvckNvZGVzW1wiVW5zdXBwb3J0ZWRFdmVudE5hbWVcIl0gPSBcInVuc3VwcG9ydGVkLWV2ZW50LW5hbWVcIjtcbn0pKEVycm9yQ29kZXMgPSBleHBvcnRzLkVycm9yQ29kZXMgfHwgKGV4cG9ydHMuRXJyb3JDb2RlcyA9IHt9KSk7XG4vKipcbiAqICBUeXBlIG9mIGFnZ3JlZ2F0aW9uIG9uIGEgZmllbGQuXG4gKi9cbnZhciBGaWVsZEFnZ3JlZ2F0aW9uVHlwZTtcbihmdW5jdGlvbiAoRmllbGRBZ2dyZWdhdGlvblR5cGUpIHtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN1bVwiXSA9IFwic3VtXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJBdmdcIl0gPSBcImF2Z1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWluXCJdID0gXCJtaW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1heFwiXSA9IFwibWF4XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTdGRldlwiXSA9IFwic3RkZXZcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlN0ZGV2cFwiXSA9IFwic3RkZXZwXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJWYXJcIl0gPSBcInZhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVmFycFwiXSA9IFwidmFycFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiQ291bnRcIl0gPSBcImNvdW50XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJDb3VudGRcIl0gPSBcImNvdW50ZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWVkaWFuXCJdID0gXCJtZWRpYW5cIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkF0dHJcIl0gPSBcImF0dHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk5vbmVcIl0gPSBcIm5vbmVcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlllYXJcIl0gPSBcInllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF0clwiXSA9IFwicXRyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNb250aFwiXSA9IFwibW9udGhcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkRheVwiXSA9IFwiZGF5XCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJIb3VyXCJdID0gXCJob3VyXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJNaW51dGVcIl0gPSBcIm1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiU2Vjb25kXCJdID0gXCJzZWNvbmRcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtcIl0gPSBcIndlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIldlZWtkYXlcIl0gPSBcIndlZWtkYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIk1vbnRoWWVhclwiXSA9IFwibW9udGgteWVhclwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiTWR5XCJdID0gXCJtZHlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkVuZFwiXSA9IFwiZW5kXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1llYXJcIl0gPSBcInRydW5jLXllYXJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jUXRyXCJdID0gXCJ0cnVuYy1xdHJcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jTW9udGhcIl0gPSBcInRydW5jLW1vbnRoXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJUcnVuY1dlZWtcIl0gPSBcInRydW5jLXdlZWtcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jRGF5XCJdID0gXCJ0cnVuYy1kYXlcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlRydW5jSG91clwiXSA9IFwidHJ1bmMtaG91clwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNNaW51dGVcIl0gPSBcInRydW5jLW1pbnV0ZVwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVHJ1bmNTZWNvbmRcIl0gPSBcInRydW5jLXNlY29uZFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiUXVhcnQxXCJdID0gXCJxdWFydDFcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIlF1YXJ0M1wiXSA9IFwicXVhcnQzXCI7XG4gICAgRmllbGRBZ2dyZWdhdGlvblR5cGVbXCJTa2V3bmVzc1wiXSA9IFwic2tld25lc3NcIjtcbiAgICBGaWVsZEFnZ3JlZ2F0aW9uVHlwZVtcIkt1cnRvc2lzXCJdID0gXCJrdXJ0b3Npc1wiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiSW5PdXRcIl0gPSBcImluLW91dFwiO1xuICAgIEZpZWxkQWdncmVnYXRpb25UeXBlW1wiVXNlclwiXSA9IFwidXNlclwiO1xufSkoRmllbGRBZ2dyZWdhdGlvblR5cGUgPSBleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlIHx8IChleHBvcnRzLkZpZWxkQWdncmVnYXRpb25UeXBlID0ge30pKTtcbi8qKlxuICogUm9sZSBvZiBhIGZpZWxkLlxuICovXG52YXIgRmllbGRSb2xlVHlwZTtcbihmdW5jdGlvbiAoRmllbGRSb2xlVHlwZSkge1xuICAgIEZpZWxkUm9sZVR5cGVbXCJEaW1lbnNpb25cIl0gPSBcImRpbWVuc2lvblwiO1xuICAgIEZpZWxkUm9sZVR5cGVbXCJNZWFzdXJlXCJdID0gXCJtZWFzdXJlXCI7XG4gICAgRmllbGRSb2xlVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEZpZWxkUm9sZVR5cGUgPSBleHBvcnRzLkZpZWxkUm9sZVR5cGUgfHwgKGV4cG9ydHMuRmllbGRSb2xlVHlwZSA9IHt9KSk7XG4vKipcbiAqIEFuIGVudW1lcmF0aW9uIG9mIHRoZSB2YWxpZCB0eXBlcyBvZiBmaWx0ZXJzIHRoYXQgY2FuIGJlIGFwcGxpZWQuXG4gKi9cbnZhciBGaWx0ZXJUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJUeXBlKSB7XG4gICAgRmlsdGVyVHlwZVtcIkNhdGVnb3JpY2FsXCJdID0gXCJjYXRlZ29yaWNhbFwiO1xuICAgIEZpbHRlclR5cGVbXCJSYW5nZVwiXSA9IFwicmFuZ2VcIjtcbiAgICBGaWx0ZXJUeXBlW1wiSGllcmFyY2hpY2FsXCJdID0gXCJoaWVyYXJjaGljYWxcIjtcbiAgICBGaWx0ZXJUeXBlW1wiUmVsYXRpdmVEYXRlXCJdID0gXCJyZWxhdGl2ZS1kYXRlXCI7XG59KShGaWx0ZXJUeXBlID0gZXhwb3J0cy5GaWx0ZXJUeXBlIHx8IChleHBvcnRzLkZpbHRlclR5cGUgPSB7fSkpO1xuLyoqXG4gKiBUaGUgZGlmZmVyZW50IHVwZGF0ZSB0eXBlcyBmb3IgYXBwbHlpbmcgZmlsdGVyXG4gKi9cbnZhciBGaWx0ZXJVcGRhdGVUeXBlO1xuKGZ1bmN0aW9uIChGaWx0ZXJVcGRhdGVUeXBlKSB7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFkZFwiXSA9IFwiYWRkXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIkFsbFwiXSA9IFwiYWxsXCI7XG4gICAgRmlsdGVyVXBkYXRlVHlwZVtcIlJlcGxhY2VcIl0gPSBcInJlcGxhY2VcIjtcbiAgICBGaWx0ZXJVcGRhdGVUeXBlW1wiUmVtb3ZlXCJdID0gXCJyZW1vdmVcIjtcbn0pKEZpbHRlclVwZGF0ZVR5cGUgPSBleHBvcnRzLkZpbHRlclVwZGF0ZVR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyVXBkYXRlVHlwZSA9IHt9KSk7XG4vKipcbiAqIFRoZSBkb21haW4gdHlwZSBmb3IgYSBmaWx0ZXJcbiAqL1xudmFyIEZpbHRlckRvbWFpblR5cGU7XG4oZnVuY3Rpb24gKEZpbHRlckRvbWFpblR5cGUpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgZG9tYWluIHZhbHVlcyB0aGF0IGFyZSByZWxldmFudCB0byB0aGUgc3BlY2lmaWVkIGZpbHRlclxuICAgICAqIGkuZS4gdGhlIGRvbWFpbiBpcyByZXN0cmljdGVkIGJ5IGEgcHJldmlvdXMgZmlsdGVyXG4gICAgICovXG4gICAgRmlsdGVyRG9tYWluVHlwZVtcIlJlbGV2YW50XCJdID0gXCJyZWxldmFudFwiO1xuICAgIC8qKlxuICAgICAqIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGRvbWFpbiB2YWx1ZXMgZnJvbSBkYXRhYmFzZVxuICAgICAqL1xuICAgIEZpbHRlckRvbWFpblR5cGVbXCJEYXRhYmFzZVwiXSA9IFwiZGF0YWJhc2VcIjtcbn0pKEZpbHRlckRvbWFpblR5cGUgPSBleHBvcnRzLkZpbHRlckRvbWFpblR5cGUgfHwgKGV4cG9ydHMuRmlsdGVyRG9tYWluVHlwZSA9IHt9KSk7XG4vKipcbiAqIFRoZSBvcHRpb24gZm9yIHNwZWNpZnlpbmcgd2hpY2ggdmFsdWVzIHRvIGluY2x1ZGUgZm9yIGZpbHRlcmluZ1xuICogSW5kaWNhdGVzIHdoYXQgdG8gZG8gd2l0aCBudWxsIHZhbHVlcyBmb3IgYSBnaXZlbiBmaWx0ZXIgb3IgbWFyayBzZWxlY3Rpb24gY2FsbC5cbiAqL1xudmFyIEZpbHRlck51bGxPcHRpb247XG4oZnVuY3Rpb24gKEZpbHRlck51bGxPcHRpb24pIHtcbiAgICBGaWx0ZXJOdWxsT3B0aW9uW1wiTnVsbFZhbHVlc1wiXSA9IFwibnVsbC12YWx1ZXNcIjtcbiAgICBGaWx0ZXJOdWxsT3B0aW9uW1wiTm9uTnVsbFZhbHVlc1wiXSA9IFwibm9uLW51bGwtdmFsdWVzXCI7XG4gICAgRmlsdGVyTnVsbE9wdGlvbltcIkFsbFZhbHVlc1wiXSA9IFwiYWxsLXZhbHVlc1wiO1xufSkoRmlsdGVyTnVsbE9wdGlvbiA9IGV4cG9ydHMuRmlsdGVyTnVsbE9wdGlvbiB8fCAoZXhwb3J0cy5GaWx0ZXJOdWxsT3B0aW9uID0ge30pKTtcbi8qKlxuICogVHlwZSBvZiBtYXJrIGZvciBhIGdpdmVuIG1hcmtzIGNhcmQgaW4gYSB2aXouXG4gKi9cbnZhciBNYXJrVHlwZTtcbihmdW5jdGlvbiAoTWFya1R5cGUpIHtcbiAgICBNYXJrVHlwZVtcIkJhclwiXSA9IFwiYmFyXCI7XG4gICAgTWFya1R5cGVbXCJMaW5lXCJdID0gXCJsaW5lXCI7XG4gICAgTWFya1R5cGVbXCJBcmVhXCJdID0gXCJhcmVhXCI7XG4gICAgTWFya1R5cGVbXCJTcXVhcmVcIl0gPSBcInNxdWFyZVwiO1xuICAgIE1hcmtUeXBlW1wiQ2lyY2xlXCJdID0gXCJjaXJjbGVcIjtcbiAgICBNYXJrVHlwZVtcIlNoYXBlXCJdID0gXCJzaGFwZVwiO1xuICAgIE1hcmtUeXBlW1wiVGV4dFwiXSA9IFwidGV4dFwiO1xuICAgIE1hcmtUeXBlW1wiTWFwXCJdID0gXCJtYXBcIjtcbiAgICBNYXJrVHlwZVtcIlBpZVwiXSA9IFwicGllXCI7XG4gICAgTWFya1R5cGVbXCJHYW50dEJhclwiXSA9IFwiZ2FudHQtYmFyXCI7XG4gICAgTWFya1R5cGVbXCJQb2x5Z29uXCJdID0gXCJwb2x5Z29uXCI7XG59KShNYXJrVHlwZSA9IGV4cG9ydHMuTWFya1R5cGUgfHwgKGV4cG9ydHMuTWFya1R5cGUgPSB7fSkpO1xuLyoqXG4gKiBBbiBlbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgYWxsb3dhYmxlIHZhbHVlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgcmVzdHJpY3RpbmcgdGhlIGRvbWFpbiBvZiBhIHBhcmFtZXRlclxuICovXG52YXIgUGFyYW1ldGVyVmFsdWVUeXBlO1xuKGZ1bmN0aW9uIChQYXJhbWV0ZXJWYWx1ZVR5cGUpIHtcbiAgICBQYXJhbWV0ZXJWYWx1ZVR5cGVbXCJBbGxcIl0gPSBcImFsbFwiO1xuICAgIFBhcmFtZXRlclZhbHVlVHlwZVtcIkxpc3RcIl0gPSBcImxpc3RcIjtcbiAgICBQYXJhbWV0ZXJWYWx1ZVR5cGVbXCJSYW5nZVwiXSA9IFwicmFuZ2VcIjtcbn0pKFBhcmFtZXRlclZhbHVlVHlwZSA9IGV4cG9ydHMuUGFyYW1ldGVyVmFsdWVUeXBlIHx8IChleHBvcnRzLlBhcmFtZXRlclZhbHVlVHlwZSA9IHt9KSk7XG4vKipcbiAqIERhdGUgcGVyaW9kIHVzZWQgaW4gZmlsdGVycyBhbmQgaW4gcGFyYW1ldGVycy5cbiAqL1xudmFyIFBlcmlvZFR5cGU7XG4oZnVuY3Rpb24gKFBlcmlvZFR5cGUpIHtcbiAgICBQZXJpb2RUeXBlW1wiWWVhcnNcIl0gPSBcInllYXJzXCI7XG4gICAgUGVyaW9kVHlwZVtcIlF1YXJ0ZXJzXCJdID0gXCJxdWFydGVyc1wiO1xuICAgIFBlcmlvZFR5cGVbXCJNb250aHNcIl0gPSBcIm1vbnRoc1wiO1xuICAgIFBlcmlvZFR5cGVbXCJXZWVrc1wiXSA9IFwid2Vla3NcIjtcbiAgICBQZXJpb2RUeXBlW1wiRGF5c1wiXSA9IFwiZGF5c1wiO1xuICAgIFBlcmlvZFR5cGVbXCJIb3Vyc1wiXSA9IFwiaG91cnNcIjtcbiAgICBQZXJpb2RUeXBlW1wiTWludXRlc1wiXSA9IFwibWludXRlc1wiO1xuICAgIFBlcmlvZFR5cGVbXCJTZWNvbmRzXCJdID0gXCJzZWNvbmRzXCI7XG59KShQZXJpb2RUeXBlID0gZXhwb3J0cy5QZXJpb2RUeXBlIHx8IChleHBvcnRzLlBlcmlvZFR5cGUgPSB7fSkpO1xudmFyIFF1aWNrVGFibGVDYWxjVHlwZTtcbihmdW5jdGlvbiAoUXVpY2tUYWJsZUNhbGNUeXBlKSB7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiUnVubmluZ1RvdGFsXCJdID0gXCJydW5uaW5nLXRvdGFsXCI7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiRGlmZmVyZW5jZVwiXSA9IFwiZGlmZmVyZW5jZVwiO1xuICAgIFF1aWNrVGFibGVDYWxjVHlwZVtcIlBlcmNlbnREaWZmZXJlbmNlXCJdID0gXCJwZXJjZW50LWRpZmZlcmVuY2VcIjtcbiAgICBRdWlja1RhYmxlQ2FsY1R5cGVbXCJQZXJjZW50T2ZUb3RhbFwiXSA9IFwicGVyY2VudC1vZi10b3RhbFwiO1xuICAgIFF1aWNrVGFibGVDYWxjVHlwZVtcIlJhbmtcIl0gPSBcInJhbmtcIjtcbiAgICBRdWlja1RhYmxlQ2FsY1R5cGVbXCJQZXJjZW50aWxlXCJdID0gXCJwZXJjZW50aWxlXCI7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiTW92aW5nQXZlcmFnZVwiXSA9IFwibW92aW5nLWF2ZXJhZ2VcIjtcbiAgICBRdWlja1RhYmxlQ2FsY1R5cGVbXCJZVERUb3RhbFwiXSA9IFwieXRkLXRvdGFsXCI7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiQ29tcG91bmRHcm93dGhSYXRlXCJdID0gXCJjb21wb3VuZC1ncm93dGgtcmF0ZVwiO1xuICAgIFF1aWNrVGFibGVDYWxjVHlwZVtcIlllYXJPdmVyWWVhckdyb3d0aFwiXSA9IFwieWVhci1vdmVyLXllYXItZ3Jvd3RoXCI7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiWVRER3Jvd3RoXCJdID0gXCJ5dGQtZ3Jvd3RoXCI7XG4gICAgUXVpY2tUYWJsZUNhbGNUeXBlW1wiVW5kZWZpbmVkXCJdID0gXCJ1bmRlZmluZWRcIjtcbn0pKFF1aWNrVGFibGVDYWxjVHlwZSA9IGV4cG9ydHMuUXVpY2tUYWJsZUNhbGNUeXBlIHx8IChleHBvcnRzLlF1aWNrVGFibGVDYWxjVHlwZSA9IHt9KSk7XG4vKipcbiAqIEVudW0gZm9yIHNwZWNpZnlpbmcgdGhlIHNlbGVjdGlvbiB0eXBlIGZvciBzZWxlY3QgbWFya3MgYXBpLlxuICovXG52YXIgU2VsZWN0aW9uVXBkYXRlVHlwZTtcbihmdW5jdGlvbiAoU2VsZWN0aW9uVXBkYXRlVHlwZSkge1xuICAgIFNlbGVjdGlvblVwZGF0ZVR5cGVbXCJSZXBsYWNlXCJdID0gXCJzZWxlY3QtcmVwbGFjZVwiO1xuICAgIFNlbGVjdGlvblVwZGF0ZVR5cGVbXCJBZGRcIl0gPSBcInNlbGVjdC1hZGRcIjtcbiAgICBTZWxlY3Rpb25VcGRhdGVUeXBlW1wiUmVtb3ZlXCJdID0gXCJzZWxlY3QtcmVtb3ZlXCI7XG59KShTZWxlY3Rpb25VcGRhdGVUeXBlID0gZXhwb3J0cy5TZWxlY3Rpb25VcGRhdGVUeXBlIHx8IChleHBvcnRzLlNlbGVjdGlvblVwZGF0ZVR5cGUgPSB7fSkpO1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBzaGVldCBhIFNoZWV0IG9iamVjdCByZXByZXNlbnRzXG4gKi9cbnZhciBTaGVldFR5cGU7XG4oZnVuY3Rpb24gKFNoZWV0VHlwZSkge1xuICAgIFNoZWV0VHlwZVtcIkRhc2hib2FyZFwiXSA9IFwiZGFzaGJvYXJkXCI7XG4gICAgU2hlZXRUeXBlW1wiU3RvcnlcIl0gPSBcInN0b3J5XCI7XG4gICAgU2hlZXRUeXBlW1wiV29ya3NoZWV0XCJdID0gXCJ3b3Jrc2hlZXRcIjtcbn0pKFNoZWV0VHlwZSA9IGV4cG9ydHMuU2hlZXRUeXBlIHx8IChleHBvcnRzLlNoZWV0VHlwZSA9IHt9KSk7XG52YXIgU29ydERpcmVjdGlvbjtcbihmdW5jdGlvbiAoU29ydERpcmVjdGlvbikge1xuICAgIFNvcnREaXJlY3Rpb25bXCJJbmNyZWFzaW5nXCJdID0gXCJpbmNyZWFzaW5nXCI7XG4gICAgU29ydERpcmVjdGlvbltcIkRlY3JlYXNpbmdcIl0gPSBcImRlY3JlYXNpbmdcIjtcbn0pKFNvcnREaXJlY3Rpb24gPSBleHBvcnRzLlNvcnREaXJlY3Rpb24gfHwgKGV4cG9ydHMuU29ydERpcmVjdGlvbiA9IHt9KSk7XG4vKipcbiAqIFJlcHJlc2VudHMgYSBjZXJ0YWluIHR5cGUgb2YgZXZlbnQgd2hpY2ggY2FuIGJlIGxpc3RlbmVkIGZvclxuICovXG52YXIgVGFibGVhdUV2ZW50VHlwZTtcbihmdW5jdGlvbiAoVGFibGVhdUV2ZW50VHlwZSkge1xuICAgIC8qKiBSYWlzZWQgd2hlbiBhbnkgZmlsdGVyIGhhcyBjaGFuZ2VkIHN0YXRlLiovXG4gICAgVGFibGVhdUV2ZW50VHlwZVtcIkZpbHRlckNoYW5nZWRcIl0gPSBcImZpbHRlci1jaGFuZ2VkXCI7XG4gICAgLyoqIFRoZSBzZWxlY3RlZCBtYXJrcyBvbiBhIHZpc3VhbGl6YXRpb24gaGFzIGNoYW5nZWQgKi9cbiAgICBUYWJsZWF1RXZlbnRUeXBlW1wiTWFya1NlbGVjdGlvbkNoYW5nZWRcIl0gPSBcIm1hcmstc2VsZWN0aW9uLWNoYW5nZWRcIjtcbiAgICAvKiogQSBwYXJhbWV0ZXIgaGFzIGhhZCBpdHMgdmFsdWUgbW9kaWZpZWQgKi9cbiAgICBUYWJsZWF1RXZlbnRUeXBlW1wiUGFyYW1ldGVyQ2hhbmdlZFwiXSA9IFwicGFyYW1ldGVyLWNoYW5nZWRcIjtcbn0pKFRhYmxlYXVFdmVudFR5cGUgPSBleHBvcnRzLlRhYmxlYXVFdmVudFR5cGUgfHwgKGV4cG9ydHMuVGFibGVhdUV2ZW50VHlwZSA9IHt9KSk7XG52YXIgVHJlbmRMaW5lTW9kZWxUeXBlO1xuKGZ1bmN0aW9uIChUcmVuZExpbmVNb2RlbFR5cGUpIHtcbiAgICBUcmVuZExpbmVNb2RlbFR5cGVbXCJMaW5lYXJcIl0gPSBcImxpbmVhclwiO1xuICAgIFRyZW5kTGluZU1vZGVsVHlwZVtcIkxvZ2FyaXRobWljXCJdID0gXCJsb2dhcml0aG1pY1wiO1xuICAgIFRyZW5kTGluZU1vZGVsVHlwZVtcIkV4cG9uZW50aWFsXCJdID0gXCJleHBvbmVudGlhbFwiO1xuICAgIFRyZW5kTGluZU1vZGVsVHlwZVtcIlBvbHlub21pYWxcIl0gPSBcInBvbHlub21pYWxcIjtcbn0pKFRyZW5kTGluZU1vZGVsVHlwZSA9IGV4cG9ydHMuVHJlbmRMaW5lTW9kZWxUeXBlIHx8IChleHBvcnRzLlRyZW5kTGluZU1vZGVsVHlwZSA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1FbnVtcy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLWV4dGVybmFsLWNvbnRyYWN0L2xpYi9FbnVtcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRhYmxlYXVTaGVldEV2ZW50XzEgPSByZXF1aXJlKFwiLi9UYWJsZWF1U2hlZXRFdmVudFwiKTtcbnZhciBUYWJsZWF1V29ya3NoZWV0RXZlbnQgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUYWJsZWF1V29ya3NoZWV0RXZlbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGFibGVhdVdvcmtzaGVldEV2ZW50KHR5cGUsIF93b3Jrc2hlZXQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSwgX3dvcmtzaGVldCkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX3dvcmtzaGVldCA9IF93b3Jrc2hlZXQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRhYmxlYXVXb3Jrc2hlZXRFdmVudC5wcm90b3R5cGUsIFwid29ya3NoZWV0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGFibGVhdVdvcmtzaGVldEV2ZW50O1xufShUYWJsZWF1U2hlZXRFdmVudF8xLlRhYmxlYXVTaGVldEV2ZW50KSk7XG5leHBvcnRzLlRhYmxlYXVXb3Jrc2hlZXRFdmVudCA9IFRhYmxlYXVXb3Jrc2hlZXRFdmVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlYXVXb3Jrc2hlZXRFdmVudC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRzL1RhYmxlYXVXb3Jrc2hlZXRFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRhYmxlYXVFdmVudF8xID0gcmVxdWlyZShcIi4vVGFibGVhdUV2ZW50XCIpO1xudmFyIFRhYmxlYXVTaGVldEV2ZW50ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGFibGVhdVNoZWV0RXZlbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVGFibGVhdVNoZWV0RXZlbnQodHlwZSwgc2hlZXQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX3NoZWV0ID0gc2hlZXQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRhYmxlYXVTaGVldEV2ZW50LnByb3RvdHlwZSwgXCJzaGVldFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NoZWV0O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGFibGVhdVNoZWV0RXZlbnQ7XG59KFRhYmxlYXVFdmVudF8xLlRhYmxlYXVFdmVudCkpO1xuZXhwb3J0cy5UYWJsZWF1U2hlZXRFdmVudCA9IFRhYmxlYXVTaGVldEV2ZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGFibGVhdVNoZWV0RXZlbnQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50cy9UYWJsZWF1U2hlZXRFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBUYWJsZWF1RXZlbnQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRhYmxlYXVFdmVudCh0eXBlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVGFibGVhdUV2ZW50LnByb3RvdHlwZSwgXCJ0eXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIFRhYmxlYXVFdmVudDtcbn0oKSk7XG5leHBvcnRzLlRhYmxlYXVFdmVudCA9IFRhYmxlYXVFdmVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRhYmxlYXVFdmVudC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvRXZlbnRzL1RhYmxlYXVFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDIwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENvbnRyYWN0ID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBUYWJsZWF1V29ya3NoZWV0RXZlbnRfMSA9IHJlcXVpcmUoXCIuL1RhYmxlYXVXb3Jrc2hlZXRFdmVudFwiKTtcbnZhciBNYXJrc1NlbGVjdGVkRXZlbnQgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNYXJrc1NlbGVjdGVkRXZlbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTWFya3NTZWxlY3RlZEV2ZW50KHdvcmtzaGVldCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5NYXJrU2VsZWN0aW9uQ2hhbmdlZCwgd29ya3NoZWV0KSB8fCB0aGlzO1xuICAgIH1cbiAgICBNYXJrc1NlbGVjdGVkRXZlbnQucHJvdG90eXBlLmdldE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmtzaGVldC5nZXRTZWxlY3RlZE1hcmtzQXN5bmMoKTtcbiAgICB9O1xuICAgIHJldHVybiBNYXJrc1NlbGVjdGVkRXZlbnQ7XG59KFRhYmxlYXVXb3Jrc2hlZXRFdmVudF8xLlRhYmxlYXVXb3Jrc2hlZXRFdmVudCkpO1xuZXhwb3J0cy5NYXJrc1NlbGVjdGVkRXZlbnQgPSBNYXJrc1NlbGVjdGVkRXZlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXJrc1NlbGVjdGVkRXZlbnQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50cy9NYXJrc1NlbGVjdGVkRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAyMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgU2luZ2xlRXZlbnRNYW5hZ2VyIGludGVyZmFjZSBmb3IgYSBzaW5nbGUgdHlwZSBvZiBUYWJsZWF1IGV2ZW50XG4gKlxuICogQHRlbXBsYXRlIFRFdmVudFR5cGUgVGhlIFRhYmxlYXUgZXZlbnQgdHlwZSB0aGlzIGNsYXNzIHNwZWNpYWxpemVzXG4gKi9cbnZhciBTaW5nbGVFdmVudE1hbmFnZXJJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTaW5nbGVFdmVudE1hbmFnZXJJbXBsKGV2ZW50VHlwZSkge1xuICAgICAgICB0aGlzLl9ldmVudFR5cGUgPSBldmVudFR5cGU7XG4gICAgICAgIHRoaXMuX2hhbmRsZXJzID0gW107XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaW5nbGVFdmVudE1hbmFnZXJJbXBsLnByb3RvdHlwZSwgXCJldmVudFR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudFR5cGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFNpbmdsZUV2ZW50TWFuYWdlckltcGwucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLl9oYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihoYW5kbGVyKTsgfTtcbiAgICB9O1xuICAgIFNpbmdsZUV2ZW50TWFuYWdlckltcGwucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgICB2YXIgYmVmb3JlQ291bnQgPSB0aGlzLl9oYW5kbGVycy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX2hhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoICE9PSBoYW5kbGVyOyB9KTtcbiAgICAgICAgcmV0dXJuIGJlZm9yZUNvdW50ID4gdGhpcy5faGFuZGxlcnMubGVuZ3RoO1xuICAgIH07XG4gICAgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbC5wcm90b3R5cGUudHJpZ2dlckV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50R2VuZXJhdG9yKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLl9oYW5kbGVyczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBoYW5kbGVyID0gX2FbX2ldO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRNb2RlbCA9IGV2ZW50R2VuZXJhdG9yKCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlcihldmVudE1vZGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBoYW5kbGVyIGNvdWxkIGJlIG91dHNpZGUgb3VyIGNvbnRyb2wsIGp1c3QgY2F0Y2ggYW55dGhpbmcgaXQgdGhyb3dzIGFuZCBjb250aW51ZSBvblxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU2luZ2xlRXZlbnRNYW5hZ2VySW1wbDtcbn0oKSk7XG5leHBvcnRzLlNpbmdsZUV2ZW50TWFuYWdlckltcGwgPSBTaW5nbGVFdmVudE1hbmFnZXJJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2luZ2xlRXZlbnRNYW5hZ2VySW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvSW50ZXJuYWwvU2luZ2xlRXZlbnRNYW5hZ2VySW1wbC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogRGVmaW5lcyB3aGljaCB0eXBlIG9mIGdldERhdGEgY2FsbCB0byBtYWtlLlxuICovXG52YXIgR2V0RGF0YVR5cGU7XG4oZnVuY3Rpb24gKEdldERhdGFUeXBlKSB7XG4gICAgR2V0RGF0YVR5cGVbXCJTdW1tYXJ5XCJdID0gXCJzdW1tYXJ5XCI7XG4gICAgR2V0RGF0YVR5cGVbXCJVbmRlcmx5aW5nXCJdID0gXCJ1bmRlcmx5aW5nXCI7XG59KShHZXREYXRhVHlwZSA9IGV4cG9ydHMuR2V0RGF0YVR5cGUgfHwgKGV4cG9ydHMuR2V0RGF0YVR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2V0RGF0YVNlcnZpY2UuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL0dldERhdGFTZXJ2aWNlLmpzXG4gKiogbW9kdWxlIGlkID0gMjNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIERhdGFTb3VyY2VTZXJ2aWNlSW1wbF8xID0gcmVxdWlyZShcIi4vaW1wbC9EYXRhU291cmNlU2VydmljZUltcGxcIik7XG52YXIgRmlsdGVyU2VydmljZUltcGxfMSA9IHJlcXVpcmUoXCIuL2ltcGwvRmlsdGVyU2VydmljZUltcGxcIik7XG52YXIgR2V0RGF0YVNlcnZpY2VJbXBsXzEgPSByZXF1aXJlKFwiLi9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbFwiKTtcbnZhciBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbF8xID0gcmVxdWlyZShcIi4vaW1wbC9Ob3RpZmljYXRpb25TZXJ2aWNlSW1wbFwiKTtcbnZhciBQYXJhbWV0ZXJzU2VydmljZUltcGxfMSA9IHJlcXVpcmUoXCIuL2ltcGwvUGFyYW1ldGVyc1NlcnZpY2VJbXBsXCIpO1xudmFyIFNlbGVjdGlvblNlcnZpY2VJbXBsXzEgPSByZXF1aXJlKFwiLi9pbXBsL1NlbGVjdGlvblNlcnZpY2VJbXBsXCIpO1xudmFyIFNlcnZpY2VSZWdpc3RyeV8xID0gcmVxdWlyZShcIi4vU2VydmljZVJlZ2lzdHJ5XCIpO1xuZnVuY3Rpb24gcmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcyhkaXNwYXRjaGVyKSB7XG4gICAgU2VydmljZVJlZ2lzdHJ5XzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgRGF0YVNvdXJjZVNlcnZpY2VJbXBsXzEuRGF0YVNvdXJjZVNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpKTtcbiAgICBTZXJ2aWNlUmVnaXN0cnlfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBHZXREYXRhU2VydmljZUltcGxfMS5HZXREYXRhU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICAgIFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IEZpbHRlclNlcnZpY2VJbXBsXzEuRmlsdGVyU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICAgIFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsXzEuTm90aWZpY2F0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICAgIFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5yZWdpc3RlclNlcnZpY2UobmV3IFBhcmFtZXRlcnNTZXJ2aWNlSW1wbF8xLlBhcmFtZXRlcnNTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG4gICAgU2VydmljZVJlZ2lzdHJ5XzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgU2VsZWN0aW9uU2VydmljZUltcGxfMS5TZWxlY3Rpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG59XG5leHBvcnRzLnJlZ2lzdGVyQWxsU2hhcmVkU2VydmljZXMgPSByZWdpc3RlckFsbFNoYXJlZFNlcnZpY2VzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvU2VydmljZXMvUmVnaXN0ZXJBbGxTaGFyZWRTZXJ2aWNlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDI0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgRGF0YVNvdXJjZVNlcnZpY2VJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEYXRhU291cmNlU2VydmljZUltcGwoX2Rpc3BhdGNoZXIpIHtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IF9kaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVNvdXJjZVNlcnZpY2VJbXBsLnByb3RvdHlwZSwgXCJzZXJ2aWNlTmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiZGF0YS1zb3VyY2Utc2VydmljZVwiIC8qIERhdGFTb3VyY2VTZXJ2aWNlICovO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEYXRhU291cmNlU2VydmljZUltcGwucHJvdG90eXBlLnJlZnJlc2hBc3luYyA9IGZ1bmN0aW9uIChkYXRhU291cmNlSWQpIHtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoX2EgPSB7fSwgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRGF0YVNvdXJjZUlkXSA9IGRhdGFTb3VyY2VJZCwgX2EpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5SZWZyZXNoRGF0YVNvdXJjZSwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYTtcbiAgICB9O1xuICAgIERhdGFTb3VyY2VTZXJ2aWNlSW1wbC5wcm90b3R5cGUuZ2V0RGF0YVNvdXJjZXNBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0RGF0YVNvdXJjZXMsIHt9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIGRhdGFTY2hlbWEgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVNjaGVtYTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gRGF0YVNvdXJjZVNlcnZpY2VJbXBsO1xufSgpKTtcbmV4cG9ydHMuRGF0YVNvdXJjZVNlcnZpY2VJbXBsID0gRGF0YVNvdXJjZVNlcnZpY2VJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0YVNvdXJjZVNlcnZpY2VJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL0RhdGFTb3VyY2VTZXJ2aWNlSW1wbC5qc1xuICoqIG1vZHVsZSBpZCA9IDI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDb250cmFjdCA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV91dGlsc18xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS11dGlsc1wiKTtcbnZhciBFeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuLi8uLi9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzXCIpO1xudmFyIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5nc18xID0gcmVxdWlyZShcIi4uLy4uL0VudW1NYXBwaW5ncy9JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3NcIik7XG52YXIgRmlsdGVyTW9kZWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vTW9kZWxzL0ZpbHRlck1vZGVsc1wiKTtcbnZhciBHZXREYXRhTW9kZWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vTW9kZWxzL0dldERhdGFNb2RlbHNcIik7XG52YXIgRmlsdGVyU2VydmljZUltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZpbHRlclNlcnZpY2VJbXBsKGRpc3BhdGNoZXIpIHtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXI7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUsIFwic2VydmljZU5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcImZpbHRlci1zZXJ2aWNlXCIgLyogRmlsdGVyICovO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuYXBwbHlGaWx0ZXJBc3luYyA9IGZ1bmN0aW9uICh2aXN1YWxJZCwgZmllbGROYW1lLCB2YWx1ZXMsIHVwZGF0ZVR5cGUsIGZpbHRlck9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFhcGlfdXRpbHNfMS5QYXJhbS5pc1ZhbGlkRW51bVZhbHVlKHVwZGF0ZVR5cGUsIENvbnRyYWN0LkZpbHRlclVwZGF0ZVR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBGaWx0ZXJVcGRhdGVUeXBlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZlcmIgPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuQXBwbHlDYXRlZ29yaWNhbEZpbHRlcjtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclZhbHVlc10gPSB2YWx1ZXM7XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyVXBkYXRlVHlwZV0gPSB1cGRhdGVUeXBlO1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLklzRXhjbHVkZU1vZGVdID1cbiAgICAgICAgICAgIChmaWx0ZXJPcHRpb25zID09PSB1bmRlZmluZWQgfHwgZmlsdGVyT3B0aW9ucy5pc0V4Y2x1ZGVNb2RlID09PSB1bmRlZmluZWQpID8gZmFsc2UgOiBmaWx0ZXJPcHRpb25zLmlzRXhjbHVkZU1vZGU7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciBlcnJvciA9IHJlc3BvbnNlLnJlc3VsdDtcbiAgICAgICAgICAgIGlmICghKGVycm9yLmVycm9yQ29kZSA9PT0gbnVsbCB8fCBlcnJvci5lcnJvckNvZGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb21lIGJhY2sgYW5kIGltcGxlbWVudCBlcnJvciBoYW5kbGluZyBsb2dpY1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgQXBwbHlpbmcgRmlsdGVyOiAnICsgZXJyb3IuZXJyb3JDb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaWVsZE5hbWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgRmlsdGVyU2VydmljZUltcGwucHJvdG90eXBlLmFwcGx5UmFuZ2VGaWx0ZXJBc3luYyA9IGZ1bmN0aW9uICh2aXN1YWxJZCwgZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKSB7XG4gICAgICAgIGlmICghZmlsdGVyT3B0aW9ucykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIFBhcmFtZXRlcjogUmFuZ2VGaWx0ZXJPcHRpb25zJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXBpX3V0aWxzXzEuUGFyYW0udmVyaWZ5UmFuZ2VQYXJhbVR5cGUoZmlsdGVyT3B0aW9ucy5taW4sIGZpbHRlck9wdGlvbnMubWF4KTtcbiAgICAgICAgdmFyIHZlcmIgPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuQXBwbHlSYW5nZUZpbHRlcjtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWluKSB7XG4gICAgICAgICAgICB2YXIgbWluID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKGZpbHRlck9wdGlvbnMubWluIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIG1pbiA9IGFwaV91dGlsc18xLlBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybShmaWx0ZXJPcHRpb25zLm1pbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBtaW4gPSBmaWx0ZXJPcHRpb25zLm1pbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VNaW5dID0gbWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCkge1xuICAgICAgICAgICAgdmFyIG1heCA9IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJPcHRpb25zLm1heCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBtYXggPSBhcGlfdXRpbHNfMS5QYXJhbS5zZXJpYWxpemVEYXRlRm9yUGxhdGZvcm0oZmlsdGVyT3B0aW9ucy5tYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbWF4ID0gZmlsdGVyT3B0aW9ucy5tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpbHRlclJhbmdlTWF4XSA9IG1heDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uKSB7XG4gICAgICAgICAgICBpZiAoIWFwaV91dGlsc18xLlBhcmFtLmlzVmFsaWRFbnVtVmFsdWUoZmlsdGVyT3B0aW9ucy5udWxsT3B0aW9uLCBDb250cmFjdC5GaWx0ZXJOdWxsT3B0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyIE51bGxPcHRpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmlsdGVyUmFuZ2VOdWxsT3B0aW9uXSA9IEV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5nc18xLkV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncy5udWxsT3B0aW9ucy5jb252ZXJ0KGZpbHRlck9wdGlvbnMubnVsbE9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5GaWVsZE5hbWVdID0gZmllbGROYW1lO1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKHZlcmIsIHBhcmFtZXRlcnMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGROYW1lO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEZpbHRlclNlcnZpY2VJbXBsLnByb3RvdHlwZS5jbGVhckZpbHRlckFzeW5jID0gZnVuY3Rpb24gKHZpc3VhbElkLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdmFyIHZlcmIgPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuQ2xlYXJGaWx0ZXI7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0ge307XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGROYW1lXSA9IGZpZWxkTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uIChyZXNwb3NuZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuZ2V0RmlsdGVyc0FzeW5jID0gZnVuY3Rpb24gKHZpc3VhbElkKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB2ZXJiID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldEZpbHRlcnM7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0ge307XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciBmaWx0ZXJzID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNvbnZlcnREb21haW5GaWx0ZXJzKGZpbHRlcnMpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEZpbHRlclNlcnZpY2VJbXBsLnByb3RvdHlwZS5nZXRDYXRlZ29yaWNhbERvbWFpbkFzeW5jID0gZnVuY3Rpb24gKHdvcmtzaGVldE5hbWUsIGZpZWxkSWQsIGRvbWFpblR5cGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKCFhcGlfdXRpbHNfMS5QYXJhbS5pc1ZhbGlkRW51bVZhbHVlKGRvbWFpblR5cGUsIENvbnRyYWN0LkZpbHRlckRvbWFpblR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciBGaWx0ZXJEb21haW5UeXBlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZlcmIgPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0Q2F0ZWdvcmljYWxEb21haW47XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0ge307XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0ge1xuICAgICAgICAgICAgd29ya3NoZWV0OiB3b3Jrc2hlZXROYW1lXG4gICAgICAgIH07XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuRmllbGRJZF0gPSBmaWVsZElkO1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkRvbWFpblR5cGVdID0gZG9tYWluVHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZSh2ZXJiLCBwYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIGRvbWFpbiA9IHJlc3BvbnNlLnJlc3VsdDtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jb252ZXJ0Q2F0ZWdvcmljYWxEb21haW4oZG9tYWluLCBkb21haW5UeXBlKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuZ2V0UmFuZ2VEb21haW5Bc3luYyA9IGZ1bmN0aW9uICh3b3Jrc2hlZXROYW1lLCBmaWVsZElkLCBkb21haW5UeXBlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghYXBpX3V0aWxzXzEuUGFyYW0uaXNWYWxpZEVudW1WYWx1ZShkb21haW5UeXBlLCBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgRmlsdGVyRG9tYWluVHlwZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2ZXJiID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldFJhbmdlRG9tYWluO1xuICAgICAgICB2YXIgcGFyYW1ldGVycyA9IHt9O1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkXSA9IHtcbiAgICAgICAgICAgIHdvcmtzaGVldDogd29ya3NoZWV0TmFtZVxuICAgICAgICB9O1xuICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkZpZWxkSWRdID0gZmllbGRJZDtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5Eb21haW5UeXBlXSA9IEV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5nc18xLkV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncy5maWx0ZXJEb21haW5UeXBlLmNvbnZlcnQoZG9tYWluVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciBkb21haW4gPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY29udmVydFJhbmdlRG9tYWluKGRvbWFpbiwgZG9tYWluVHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gSGVscGVyIE1ldGhvZHNcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuY29udmVydERvbWFpbkZpbHRlcnMgPSBmdW5jdGlvbiAoZG9tYWluRmlsdGVycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZmlsdGVycyA9IFtdO1xuICAgICAgICBkb21haW5GaWx0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGRvbWFpbkZpbHRlcikge1xuICAgICAgICAgICAgc3dpdGNoIChkb21haW5GaWx0ZXIuZmlsdGVyVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVHlwZS5DYXRlZ29yaWNhbDoge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyID0gZG9tYWluRmlsdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goX3RoaXMuY29udmVydENhdGVnb3JpY2FsRmlsdGVyKGZpbHRlcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIENhdGVnb3JpY2FsIEZpbHRlcicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclR5cGUuUmFuZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IGRvbWFpbkZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycy5wdXNoKF90aGlzLmNvbnZlcnRSYW5nZUZpbHRlcihmaWx0ZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSYW5nZSBGaWx0ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZToge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyID0gZG9tYWluRmlsdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goX3RoaXMuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlcihmaWx0ZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZWxhdGl2ZSBEYXRlIEZpbHRlcicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgIH07XG4gICAgRmlsdGVyU2VydmljZUltcGwucHJvdG90eXBlLmNvbnZlcnRDYXRlZ29yaWNhbEZpbHRlciA9IGZ1bmN0aW9uIChkb21haW5GaWx0ZXIpIHtcbiAgICAgICAgdmFyIGFwcGxpZWRWYWx1ZXMgPSBkb21haW5GaWx0ZXIudmFsdWVzLm1hcChmdW5jdGlvbiAoZHYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShkdi52YWx1ZSwgZHYuZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJNb2RlbHNfMS5DYXRlZ29yaWNhbEZpbHRlcihkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LCBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLCBkb21haW5GaWx0ZXIuZmllbGROYW1lLCBDb250cmFjdC5GaWx0ZXJUeXBlLkNhdGVnb3JpY2FsLCBhcHBsaWVkVmFsdWVzLCBkb21haW5GaWx0ZXIuaXNFeGNsdWRlKTtcbiAgICB9O1xuICAgIEZpbHRlclNlcnZpY2VJbXBsLnByb3RvdHlwZS5jb252ZXJ0UmFuZ2VGaWx0ZXIgPSBmdW5jdGlvbiAoZG9tYWluRmlsdGVyKSB7XG4gICAgICAgIHZhciBtaW5WYWx1ZSA9IG5ldyBHZXREYXRhTW9kZWxzXzEuRGF0YVZhbHVlKGRvbWFpbkZpbHRlci5taW4udmFsdWUsIGRvbWFpbkZpbHRlci5taW4uZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShkb21haW5GaWx0ZXIubWF4LnZhbHVlLCBkb21haW5GaWx0ZXIubWF4LmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJNb2RlbHNfMS5SYW5nZUZpbHRlcihkb21haW5GaWx0ZXIudmlzdWFsSWQud29ya3NoZWV0LCBkb21haW5GaWx0ZXIuZmllbGRDYXB0aW9uLCBkb21haW5GaWx0ZXIuZmllbGROYW1lLCBDb250cmFjdC5GaWx0ZXJUeXBlLlJhbmdlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIGRvbWFpbkZpbHRlci5pbmNsdWRlTnVsbFZhbHVlcyk7XG4gICAgfTtcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuY29udmVydFJlbGF0aXZlRGF0ZUZpbHRlciA9IGZ1bmN0aW9uIChkb21haW5GaWx0ZXIpIHtcbiAgICAgICAgdmFyIGFuY2hvckRhdGVWYWx1ZSA9IG5ldyBHZXREYXRhTW9kZWxzXzEuRGF0YVZhbHVlKGRvbWFpbkZpbHRlci5hbmNob3JEYXRlLnZhbHVlLCBkb21haW5GaWx0ZXIuYW5jaG9yRGF0ZS5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyTW9kZWxzXzEuUmVsYXRpdmVEYXRlRmlsdGVyKGRvbWFpbkZpbHRlci52aXN1YWxJZC53b3Jrc2hlZXQsIGRvbWFpbkZpbHRlci5maWVsZENhcHRpb24sIGRvbWFpbkZpbHRlci5maWVsZE5hbWUsIENvbnRyYWN0LkZpbHRlclR5cGUuUmVsYXRpdmVEYXRlLCBhbmNob3JEYXRlVmFsdWUsIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5nc18xLkludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KGRvbWFpbkZpbHRlci5wZXJpb2RUeXBlKSwgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzXzEuSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGVSYW5nZVR5cGUuY29udmVydChkb21haW5GaWx0ZXIucmFuZ2VUeXBlKSwgZG9tYWluRmlsdGVyLnJhbmdlTik7XG4gICAgfTtcbiAgICBGaWx0ZXJTZXJ2aWNlSW1wbC5wcm90b3R5cGUuY29udmVydENhdGVnb3JpY2FsRG9tYWluID0gZnVuY3Rpb24gKGRvbWFpbiwgZG9tYWluVHlwZSkge1xuICAgICAgICB2YXIgdmFsdWVzID0gZG9tYWluLnZhbHVlcy5tYXAoZnVuY3Rpb24gKGRvbWFpbkR2KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEdldERhdGFNb2RlbHNfMS5EYXRhVmFsdWUoZG9tYWluRHYudmFsdWUsIGRvbWFpbkR2LmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyTW9kZWxzXzEuQ2F0ZWdvcmljYWxEb21haW4odmFsdWVzLCBkb21haW5UeXBlKTtcbiAgICB9O1xuICAgIEZpbHRlclNlcnZpY2VJbXBsLnByb3RvdHlwZS5jb252ZXJ0UmFuZ2VEb21haW4gPSBmdW5jdGlvbiAoZG9tYWluLCBkb21haW5UeXBlKSB7XG4gICAgICAgIHZhciBtaW4gPSBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShkb21haW4ubWluLnZhbHVlLCBkb21haW4ubWluLmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgdmFyIG1heCA9IG5ldyBHZXREYXRhTW9kZWxzXzEuRGF0YVZhbHVlKGRvbWFpbi5tYXgudmFsdWUsIGRvbWFpbi5tYXguZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlck1vZGVsc18xLlJhbmdlRG9tYWluKG1pbiwgbWF4LCBkb21haW5UeXBlKTtcbiAgICB9O1xuICAgIHJldHVybiBGaWx0ZXJTZXJ2aWNlSW1wbDtcbn0oKSk7XG5leHBvcnRzLkZpbHRlclNlcnZpY2VJbXBsID0gRmlsdGVyU2VydmljZUltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWx0ZXJTZXJ2aWNlSW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXNoYXJlZC9saWIvU2VydmljZXMvaW1wbC9GaWx0ZXJTZXJ2aWNlSW1wbC5qc1xuICoqIG1vZHVsZSBpZCA9IDI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBpcyB5b3VyIG1haW4uIFRoaXMgaXMgd2hlcmUgeW91IHJlLWV4cG9ydCBldmVyeXRoaW5nIHlvdSB3YW50IHRvIGJlIHB1YmxpY2x5IGF2YWlsYWJsZS5cbiAqXG4gKiBUaGUgYnVpbGQgZW5mb3JjZXMgdGhhdCB0aGUgZmlsZSBoYXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgZ2xvYmFsIHZhcmlhYmxlIHRoYXQgaXMgZXhwb3J0ZWQuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFbnVtQ29udmVydGVyXzEgPSByZXF1aXJlKFwiLi9FbnVtQ29udmVydGVyXCIpO1xuZXhwb3J0cy5FbnVtQ29udmVydGVyID0gRW51bUNvbnZlcnRlcl8xLkVudW1Db252ZXJ0ZXI7XG52YXIgUGFyYW1fMSA9IHJlcXVpcmUoXCIuL1BhcmFtXCIpO1xuZXhwb3J0cy5QYXJhbSA9IFBhcmFtXzEuUGFyYW07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcGlVdGlscy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9BcGlVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogVGhpcyBjbGFzcyBjb252ZXJ0cyBmcm9tIGEgc291cmNlIGVudW0gdmFsdWUgdG8gZGVzdGluYXRpb24gZW51bVxuICogdmFsdWUgZ2l2ZW4gYSBtYXBwaW5nIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIHdoZW4gY29uc3RydWN0ZWQuXG4gKi9cbnZhciBFbnVtQ29udmVydGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFbnVtQ29udmVydGVyKF9tYXBwaW5ncywgX2RlZmF1bHRWYWwpIHtcbiAgICAgICAgdGhpcy5fbWFwcGluZ3MgPSBfbWFwcGluZ3M7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWwgPSBfZGVmYXVsdFZhbDtcbiAgICB9XG4gICAgRW51bUNvbnZlcnRlci5wcm90b3R5cGUuY29udmVydCA9IGZ1bmN0aW9uIChlbnVtVmFsLCB0aHJvd0lmTWlzc2luZykge1xuICAgICAgICBpZiAodGhpcy5fbWFwcGluZ3MuaGFzT3duUHJvcGVydHkoZW51bVZhbCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nc1tlbnVtVmFsXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZGVmYXVsdFZhbCAhPT0gdW5kZWZpbmVkICYmICF0aHJvd0lmTWlzc2luZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWYWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXBwaW5nIG5vdCBmb3VuZCBmb3IgJyArIGVudW1WYWwpO1xuICAgIH07XG4gICAgcmV0dXJuIEVudW1Db252ZXJ0ZXI7XG59KCkpO1xuZXhwb3J0cy5FbnVtQ29udmVydGVyID0gRW51bUNvbnZlcnRlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudW1Db252ZXJ0ZXIuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS11dGlscy9saWIvRW51bUNvbnZlcnRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDI4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBQYXJhbSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGFyYW0oKSB7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgYW4gaW5jb21pbmcgcGFyYW1ldGVyIGlzICd0cnV0aHknIGFuZCB0aHJvd3NcbiAgICAgKiBhbiBlcnJvciBpZiBpdCdzIG5vdC4gVGhpcyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSB2YWx1ZVxuICAgICAqIGlzIG51bGwsIHVuZGVmaW5lZCwgTmFOLCB0aGUgZW1wdHkgc3RyaW5nLCAwLCBvciBmYWxzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcbiAgICAgKi9cbiAgICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgIFBhcmFtLnZlcmlmeVZhbHVlID0gZnVuY3Rpb24gKGFyZ3VtZW50VmFsdWUsIGFyZ3VtZW50TmFtZSkge1xuICAgICAgICBpZiAoIWFyZ3VtZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IGEgc3RyaW5nIGlzIHZhbGlkLiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgaXNcbiAgICAgKiBudWxsLCB1bmRlZmluZWQsIG9yIE5hTi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcmd1bWVudFZhbHVlIHZhbHVlIHRvIHZlcmlmeVxuICAgICAqIEBwYXJhbSBhcmd1bWVudE5hbWUgbmFtZSBvZiBhcmd1bWVudCB0byB2ZXJpZnlcbiAgICAgKi9cbiAgICBQYXJhbS52ZXJpZnlTdHJpbmcgPSBmdW5jdGlvbiAoYXJndW1lbnRWYWx1ZSwgYXJndW1lbnROYW1lKSB7XG4gICAgICAgIGlmIChhcmd1bWVudFZhbHVlID09PSBudWxsIHx8IGFyZ3VtZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmcgdmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6ICcgKyBhcmd1bWVudE5hbWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGUgdmFsdWUgaXMgcGFydCBvZiB0aGUgRW51bVxuICAgICAqXG4gICAgICogU3RyaW5nIGVudW1zIGFyZSB7c3RyaW5nIDogc3RyaW5nfSBkaWN0aW9uYXJpZXMgd2hpY2ggYXJlIG5vdCByZXZlcnNlIG1hcHBhYmxlXG4gICAgICogVGhpcyBpcyBhbiB1Z2x5IHdvcmthcm91bmRcbiAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gdmVyaWZ5XG4gICAgICogQHBhcmFtIGVudW1UeXBlIGVudW0gdG8gdmVyaWZ5IGFnYWluc3RcbiAgICAgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cbiAgICBQYXJhbS5pc1ZhbGlkRW51bVZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBlbnVtVHlwZSkge1xuICAgICAgICB2YXIgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICBPYmplY3Qua2V5cyhlbnVtVHlwZSkuZm9yRWFjaChmdW5jdGlvbiAoZW51bUtleSkge1xuICAgICAgICAgICAgaWYgKGVudW1UeXBlW2VudW1LZXldID09PSB2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9O1xuICAgIC8qIHRzbGludDplbmFibGU6bm8tYW55ICovXG4gICAgLyoqXG4gICAgICogc2VyaWFsaXplcyB0aGUgZGF0ZSBpbnRvIHRoZSBmb3JtYXQgdGhhdCB0aGUgc2VydmVyIGV4cGVjdHMuXG4gICAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gc2VyaWFsaXplXG4gICAgICovXG4gICAgUGFyYW0uc2VyaWFsaXplRGF0ZUZvclBsYXRmb3JtID0gZnVuY3Rpb24gKGRhdGUpIHtcbiAgICAgICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgIHZhciBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKSArIDE7XG4gICAgICAgIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgdmFyIGhoID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICB2YXIgbW0gPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgdmFyIHNlYyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xuICAgICAgICByZXR1cm4geWVhciArICctJyArIG1vbnRoICsgJy0nICsgZGF5ICsgJyAnICsgaGggKyAnOicgKyBtbSArICc6JyArIHNlYztcbiAgICB9O1xuICAgIFBhcmFtLnNlcmlhbGl6ZUJvb2xlYW5Gb3JQbGF0Zm9ybSA9IGZ1bmN0aW9uIChib29sKSB7XG4gICAgICAgIHJldHVybiBib29sID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9O1xuICAgIFBhcmFtLnNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtID0gZnVuY3Rpb24gKG51bSkge1xuICAgICAgICByZXR1cm4gbnVtLnRvU3RyaW5nKDEwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoZSBwYXJhbXMgbWluIGFuZCBtYXggZm9yIGFwcGx5aW5nIHJhbmdlIGZpbHRlclxuICAgICAqIEBwYXJhbSBtaW4gcmFuZ2UgbWluXG4gICAgICogQHBhcmFtIG1heCByYW5nZSBtYXhcbiAgICAgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgKi9cbiAgICBQYXJhbS52ZXJpZnlSYW5nZVBhcmFtVHlwZSA9IGZ1bmN0aW9uIChtaW4sIG1heCkge1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWFueSAqL1xuICAgICAgICBpZiAoIW1pbiAmJiAhbWF4KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgUGFyYW1ldGVyOiBBdCBsZWFzdCBvbmUgb2YgbWluIG9yIG1heCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1pbikgJiYgIVBhcmFtLmlzVHlwZURhdGUobWluKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1pbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghUGFyYW0uaXNUeXBlTnVtYmVyKG1heCkgJiYgIVBhcmFtLmlzVHlwZURhdGUobWF4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBPbmx5IERhdGUgYW5kIG51bWJlciBhcmUgYWxsb3dlZCBmb3IgcGFyYW1ldGVyIG1heCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgKG1pbikgIT09IHR5cGVvZiAobWF4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBhcmFtZXRlciBUeXBlOiBQYXJhbWV0ZXJzIG1pbiBhbmQgbWF4IHNob3VsZCBiZSBvZiB0aGUgc2FtZSB0eXBlJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoZSBpbnB1dCBpcyBhIG51bWJlclxuICAgICAqL1xuICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWFueSAqL1xuICAgIFBhcmFtLmlzVHlwZU51bWJlciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIChpbnB1dCkgPT09ICdudW1iZXInIHx8IGlucHV0IGluc3RhbmNlb2YgTnVtYmVyO1xuICAgIH07XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGUgaW5wdXQgaXMgYSBEYXRlXG4gICAgICovXG4gICAgLyogdHNsaW50OmRpc2FibGU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlRGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xuICAgIH07XG4gICAgLyogdHNsaW50OmVuYWJsZTpuby1hbnkgKi9cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlU3RyaW5nID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgKGlucHV0KSA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG4gICAgfTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uaXNUeXBlQm9vbCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIChpbnB1dCkgPT09ICdib29sZWFuJyB8fCBpbnB1dCBpbnN0YW5jZW9mIEJvb2xlYW47XG4gICAgfTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55ICovXG4gICAgUGFyYW0uc2VyaWFsaXplUGFyYW10ZXJWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAoUGFyYW0uaXNUeXBlTnVtYmVyKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZU51bWJlckZvclBsYXRmb3JtKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChQYXJhbS5pc1R5cGVEYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFBhcmFtLnNlcmlhbGl6ZURhdGVGb3JQbGF0Zm9ybSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoUGFyYW0uaXNUeXBlQm9vbCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJhbS5zZXJpYWxpemVCb29sZWFuRm9yUGxhdGZvcm0odmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFBhcmFtLmlzVHlwZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQ6IHZhbHVlJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBQYXJhbTtcbn0oKSk7XG5leHBvcnRzLlBhcmFtID0gUGFyYW07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbS5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIEQ6L2Rldi9qcy1hcGkvYXBpLXV0aWxzL2xpYi9QYXJhbS5qc1xuICoqIG1vZHVsZSBpZCA9IDI5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV91dGlsc18xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS11dGlsc1wiKTtcbi8qIHRzbGludDpkaXNhYmxlOnR5cGVkZWYgLSBEaXNhYmxlIHRoaXMgdG8gbWFrZSBkZWNsYXJpbmcgdGhlc2UgY2xhc3NlcyBhIGJpdCBlYXNpZXIgKi9cbi8qKlxuICogTWFwcyBlbnVtcyB1c2VkIGJ5IHRoZSBleHRlcm5hbC1hcGktY29udHJhY3QgdG8gdGhlIGVudW1zIHVzZWRcbiAqIGluIHRoZSBpbnRlcm5hbC1hcGktY29udHJhY3QsIHdoaWNoIGRldmVsb3BlcnMgY29kZSBhZ2FpbnN0LlxuICovXG52YXIgRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MoKSB7XG4gICAgfVxuICAgIEV4dGVybmFsVG9JbnRlcm5hbEVudW1NYXBwaW5ncy5udWxsT3B0aW9ucyA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfYSA9IHt9LFxuICAgICAgICBfYVthcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJOdWxsT3B0aW9uLkFsbFZhbHVlc10gPSBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJOdWxsT3B0aW9uLkFsbFZhbHVlcyxcbiAgICAgICAgX2FbYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlck51bGxPcHRpb24uTm9uTnVsbFZhbHVlcyxcbiAgICAgICAgX2FbYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzXSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlck51bGxPcHRpb24uTnVsbFZhbHVlcyxcbiAgICAgICAgX2EpKTtcbiAgICBFeHRlcm5hbFRvSW50ZXJuYWxFbnVtTWFwcGluZ3MuZmlsdGVyRG9tYWluVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfYiA9IHt9LFxuICAgICAgICBfYlthcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJEb21haW5UeXBlLlJlbGV2YW50XSA9IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlckRvbWFpblR5cGUuUmVsZXZhbnQsXG4gICAgICAgIF9iW2FwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpbHRlckRvbWFpblR5cGUuRGF0YWJhc2VdID0gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyRG9tYWluVHlwZS5EYXRhYmFzZSxcbiAgICAgICAgX2IpKTtcbiAgICByZXR1cm4gRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzO1xufSgpKTtcbmV4cG9ydHMuRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzID0gRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzO1xudmFyIF9hLCBfYjtcbi8qIHRzbGludDplbmFibGU6dHlwZWRlZiAqL1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9FbnVtTWFwcGluZ3MvRXh0ZXJuYWxUb0ludGVybmFsRW51bU1hcHBpbmdzLmpzXG4gKiogbW9kdWxlIGlkID0gMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9leHRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1leHRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBhcGlfaW50ZXJuYWxfY29udHJhY3RfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktaW50ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX3V0aWxzXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXV0aWxzXCIpO1xuLyogdHNsaW50OmRpc2FibGU6dHlwZWRlZiAtIERpc2FibGUgdGhpcyB0byBtYWtlIGRlY2xhcmluZyB0aGVzZSBjbGFzc2VzIGEgYml0IGVhc2llciAqL1xuLyoqXG4gKiBNYXBzIGVudW1zIHVzZWQgYnkgdGhlIGludGVybmFsLWFwaS1jb250cmFjdCB0byB0aGUgZW51bXMgdXNlZFxuICogaW4gdGhlIGV4dGVybmFsLWFwaS1jb250cmFjdCwgd2hpY2ggZGV2ZWxvcGVycyBjb2RlIGFnYWluc3QuXG4gKi9cbnZhciBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncygpIHtcbiAgICB9XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFkZEluQ29udGV4dCA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfYSA9IHt9LFxuICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5BZGRJbkNvbnRleHQuRGVza3RvcF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5BZGRJbkNvbnRleHQuRGVza3RvcCxcbiAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuQWRkSW5Db250ZXh0LlNlcnZlcl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5BZGRJbkNvbnRleHQuU2VydmVyLFxuICAgICAgICBfYSkpO1xuICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5hZGRJbk1vZGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2IgPSB7fSxcbiAgICAgICAgX2JbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuQWRkSW5Nb2RlLkF1dGhvcmluZ10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5BZGRJbk1vZGUuQXV0aG9yaW5nLFxuICAgICAgICBfYlthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5BZGRJbk1vZGUuVmlld2luZ10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5BZGRJbk1vZGUuVmlld2luZyxcbiAgICAgICAgX2IpKTtcbiAgICBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuY29sdW1uVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfYyA9IHt9LFxuICAgICAgICBfY1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5Db2x1bW5UeXBlLkNvbnRpbnVvdXNdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuQ29sdW1uVHlwZS5Db250aW51b3VzLFxuICAgICAgICBfY1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5Db2x1bW5UeXBlLkRpc2NyZXRlXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkNvbHVtblR5cGUuRGlzY3JldGUsXG4gICAgICAgIF9jKSk7XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmZpZWxkQWdncmVnYXRpb25UeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9kID0ge30sXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkF0dHJdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuQXR0cixcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuQXZnXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkF2ZyxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuQ291bnRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuQ291bnQsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkNvdW50ZF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Db3VudGQsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkRheV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5EYXksXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkVuZF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5FbmQsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkhvdXJdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuSG91cixcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuSW5PdXRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuSW5PdXQsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkt1cnRvc2lzXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLkt1cnRvc2lzLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NYXhdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTWF4LFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZHldID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTWR5LFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NZWRpYW5dID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTWVkaWFuLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW5dID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTWluLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5NaW51dGVdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTWludXRlLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Nb250aFllYXJdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuTW9udGhZZWFyLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Ob25lXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLk5vbmUsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlF0cl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdHIsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0MV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDEsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlF1YXJ0M10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5RdWFydDMsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlNlY29uZF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TZWNvbmQsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlNrZXduZXNzXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlNrZXduZXNzLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5TdGRldixcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuU3RkZXZwXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlN0ZGV2cCxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuU3VtXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlN1bSxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNEYXldID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNEYXksXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jSG91cl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY0hvdXIsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTWludXRlXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTWludXRlLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY01vbnRoXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jTW9udGgsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jUXRyXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jUXRyLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1NlY29uZF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5UcnVuY1NlY29uZCxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNXZWVrXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jV2VlayxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVHJ1bmNZZWFyXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlRydW5jWWVhcixcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVXNlcl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5Vc2VyLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXJdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuVmFyLFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5WYXJwXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlZhcnAsXG4gICAgICAgIF9kW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLldlZWtdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuV2VlayxcbiAgICAgICAgX2RbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRBZ2dyZWdhdGlvblR5cGUuV2Vla2RheV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5XZWVrZGF5LFxuICAgICAgICBfZFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWVsZEFnZ3JlZ2F0aW9uVHlwZS5ZZWFyXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpZWxkQWdncmVnYXRpb25UeXBlLlllYXIsXG4gICAgICAgIF9kKSk7XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmZpZWxkUm9sZVR5cGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX2UgPSB7fSxcbiAgICAgICAgX2VbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmllbGRSb2xlVHlwZS5EaW1lbnNpb25dID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmllbGRSb2xlVHlwZS5EaW1lbnNpb24sXG4gICAgICAgIF9lW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkUm9sZVR5cGUuTWVhc3VyZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZFJvbGVUeXBlLk1lYXN1cmUsXG4gICAgICAgIF9lW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpZWxkUm9sZVR5cGUuVW5rbm93bl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWVsZFJvbGVUeXBlLlVua25vd24sXG4gICAgICAgIF9lKSk7XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLnNoZWV0VHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfZiA9IHt9LFxuICAgICAgICBfZlthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5TaGVldFR5cGUuRGFzaGJvYXJkXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlNoZWV0VHlwZS5EYXNoYm9hcmQsXG4gICAgICAgIF9mW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlNoZWV0VHlwZS5TdG9yeV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5TaGVldFR5cGUuU3RvcnksXG4gICAgICAgIF9mW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlNoZWV0VHlwZS5Xb3Jrc2hlZXRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuU2hlZXRUeXBlLldvcmtzaGVldCxcbiAgICAgICAgX2YpKTtcbiAgICBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZGFzaGJvYXJkT2JqZWN0VHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfZyA9IHt9LFxuICAgICAgICBfZ1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkFkZEluXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQWRkSW4sXG4gICAgICAgIF9nW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuQmxhbmtdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5CbGFuayxcbiAgICAgICAgX2dbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5JbWFnZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkltYWdlLFxuICAgICAgICBfZ1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLkxlZ2VuZCxcbiAgICAgICAgX2dbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5QYWdlRmlsdGVyXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuUGFnZUZpbHRlcixcbiAgICAgICAgX2dbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5QYXJhbWV0ZXJDb250cm9sXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuUGFyYW1ldGVyQ29udHJvbCxcbiAgICAgICAgX2dbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5RdWlja0ZpbHRlcl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLlF1aWNrRmlsdGVyLFxuICAgICAgICBfZ1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLlRleHRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGFzaGJvYXJkT2JqZWN0VHlwZS5UZXh0LFxuICAgICAgICBfZ1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLlRpdGxlXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuVGl0bGUsXG4gICAgICAgIF9nW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuV2ViUGFnZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXNoYm9hcmRPYmplY3RUeXBlLldlYlBhZ2UsXG4gICAgICAgIF9nW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuV29ya3NoZWV0XSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuV29ya3NoZWV0LFxuICAgICAgICBfZykpO1xuICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRhVHlwZSA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfaCA9IHt9LFxuICAgICAgICBfaFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5Cb29sXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlLkJvb2wsXG4gICAgICAgIF9oW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlLkRhdGVdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuRGF0ZSxcbiAgICAgICAgX2hbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuRGF0ZVRpbWVdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuRGF0ZVRpbWUsXG4gICAgICAgIF9oW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlLkZsb2F0XSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGFUeXBlLkZsb2F0LFxuICAgICAgICBfaFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5JbnRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuSW50LFxuICAgICAgICBfaFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRhVHlwZS5TdHJpbmddID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0YVR5cGUuU3RyaW5nLFxuICAgICAgICBfaCkpO1xuICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5maWx0ZXJVcGRhdGVUeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9qID0ge30sXG4gICAgICAgIF9qW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclVwZGF0ZVR5cGUuQWRkXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkZpbHRlclVwZGF0ZVR5cGUuQWRkLFxuICAgICAgICBfalthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJVcGRhdGVUeXBlLkFsbF0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJVcGRhdGVUeXBlLkFsbCxcbiAgICAgICAgX2pbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmVdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVXBkYXRlVHlwZS5SZW1vdmUsXG4gICAgICAgIF9qW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclVwZGF0ZVR5cGUuUmVwbGFjZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJVcGRhdGVUeXBlLlJlcGxhY2UsXG4gICAgICAgIF9qKSk7XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFsbG93YWJsZVZhbHVlcyA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfayA9IHt9LFxuICAgICAgICBfa1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5Eb21haW5SZXN0cmljdGlvblR5cGUuQWxsXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlclZhbHVlVHlwZS5BbGwsXG4gICAgICAgIF9rW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRvbWFpblJlc3RyaWN0aW9uVHlwZS5MaXN0XSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlclZhbHVlVHlwZS5MaXN0LFxuICAgICAgICBfa1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5Eb21haW5SZXN0cmljdGlvblR5cGUuUmFuZ2VdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVyVmFsdWVUeXBlLlJhbmdlLFxuICAgICAgICBfaykpO1xuICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZCA9IG5ldyBhcGlfdXRpbHNfMS5FbnVtQ29udmVydGVyKChfbCA9IHt9LFxuICAgICAgICBfbFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5ZZWFyc10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5QZXJpb2RUeXBlLlllYXJzLFxuICAgICAgICBfbFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5RdWFydGVyc10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5QZXJpb2RUeXBlLlF1YXJ0ZXJzLFxuICAgICAgICBfbFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5Nb250aHNdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuUGVyaW9kVHlwZS5Nb250aHMsXG4gICAgICAgIF9sW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLldlZWtzXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBlcmlvZFR5cGUuV2Vla3MsXG4gICAgICAgIF9sW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVTdGVwUGVyaW9kLkRheXNdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuUGVyaW9kVHlwZS5EYXlzLFxuICAgICAgICBfbFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5Ib3Vyc10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5QZXJpb2RUeXBlLkhvdXJzLFxuICAgICAgICBfbFthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlU3RlcFBlcmlvZC5NaW51dGVzXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLlBlcmlvZFR5cGUuTWludXRlcyxcbiAgICAgICAgX2xbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVN0ZXBQZXJpb2QuU2Vjb25kc10gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5QZXJpb2RUeXBlLlNlY29uZHMsXG4gICAgICAgIF9sKSk7XG4gICAgSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGVSYW5nZVR5cGUgPSBuZXcgYXBpX3V0aWxzXzEuRW51bUNvbnZlcnRlcigoX20gPSB7fSxcbiAgICAgICAgX21bYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5DdXJyZW50XSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuQ3VycmVudCxcbiAgICAgICAgX21bYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5MYXN0XSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuTGFzdCxcbiAgICAgICAgX21bYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5MYXN0Tl0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5EYXRlUmFuZ2VUeXBlLkxhc3ROLFxuICAgICAgICBfbVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlUmFuZ2VUeXBlLk5leHRdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRGF0ZVJhbmdlVHlwZS5OZXh0LFxuICAgICAgICBfbVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5EYXRlUmFuZ2VUeXBlLk5leHROXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuTmV4dE4sXG4gICAgICAgIF9tW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuVG9EYXRlXSA9IGFwaV9leHRlcm5hbF9jb250cmFjdF8xLkRhdGVSYW5nZVR5cGUuVG9EYXRlLFxuICAgICAgICBfbSkpO1xuICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5maWx0ZXJUeXBlID0gbmV3IGFwaV91dGlsc18xLkVudW1Db252ZXJ0ZXIoKF9vID0ge30sXG4gICAgICAgIF9vW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLkZpbHRlclR5cGUuQ2F0ZWdvcmljYWxdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVHlwZS5DYXRlZ29yaWNhbCxcbiAgICAgICAgX29bYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVHlwZS5SYW5nZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLlJhbmdlLFxuICAgICAgICBfb1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZV0gPSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5GaWx0ZXJUeXBlLlJlbGF0aXZlRGF0ZSxcbiAgICAgICAgX29bYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVHlwZS5IaWVyYXJjaGljYWxdID0gYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEuRmlsdGVyVHlwZS5IaWVyYXJjaGljYWwsXG4gICAgICAgIF9vKSk7XG4gICAgcmV0dXJuIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncztcbn0oKSk7XG5leHBvcnRzLkludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncyA9IEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncztcbnZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tLCBfbztcbi8qIHRzbGludDplbmFibGU6dHlwZWRlZiAqL1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmpzXG4gKiogbW9kdWxlIGlkID0gMzFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29udHJhY3QgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFNlcnZpY2VSZWdpc3RyeV8xID0gcmVxdWlyZShcIi4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeVwiKTtcbnZhciBGaWx0ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZpbHRlcihfd29ya3NoZWV0TmFtZSwgX2ZpZWxkTmFtZSwgX2ZpbHRlclR5cGUsIF9maWVsZElkKSB7XG4gICAgICAgIHRoaXMuX3dvcmtzaGVldE5hbWUgPSBfd29ya3NoZWV0TmFtZTtcbiAgICAgICAgdGhpcy5fZmllbGROYW1lID0gX2ZpZWxkTmFtZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyVHlwZSA9IF9maWx0ZXJUeXBlO1xuICAgICAgICB0aGlzLl9maWVsZElkID0gX2ZpZWxkSWQ7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWx0ZXIucHJvdG90eXBlLCBcIndvcmtzaGVldE5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXROYW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmlsdGVyLnByb3RvdHlwZSwgXCJmaWVsZE5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZE5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWx0ZXIucHJvdG90eXBlLCBcImZpZWxkSWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZElkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmlsdGVyLnByb3RvdHlwZSwgXCJmaWx0ZXJUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyVHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRmlsdGVyLnByb3RvdHlwZS5nZXRGaWVsZEFzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9O1xuICAgIHJldHVybiBGaWx0ZXI7XG59KCkpO1xuZXhwb3J0cy5GaWx0ZXIgPSBGaWx0ZXI7XG52YXIgQ2F0ZWdvcmljYWxGaWx0ZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDYXRlZ29yaWNhbEZpbHRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYXRlZ29yaWNhbEZpbHRlcih3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpZWxkSWQsIGZpbHRlclR5cGUsIF9hcHBsaWVkVmFsdWVzLCBfaXNFeGNsdWRlTW9kZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCB3b3Jrc2hlZXROYW1lLCBmaWVsZE5hbWUsIGZpbHRlclR5cGUsIGZpZWxkSWQpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl9hcHBsaWVkVmFsdWVzID0gX2FwcGxpZWRWYWx1ZXM7XG4gICAgICAgIF90aGlzLl9pc0V4Y2x1ZGVNb2RlID0gX2lzRXhjbHVkZU1vZGU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsRmlsdGVyLnByb3RvdHlwZSwgXCJhcHBsaWVkVmFsdWVzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYXBwbGllZFZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsRmlsdGVyLnByb3RvdHlwZSwgXCJpc0V4Y2x1ZGVNb2RlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNFeGNsdWRlTW9kZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgQ2F0ZWdvcmljYWxGaWx0ZXIucHJvdG90eXBlLmdldERvbWFpbkFzeW5jID0gZnVuY3Rpb24gKGRvbWFpblR5cGUpIHtcbiAgICAgICAgaWYgKCFkb21haW5UeXBlKSB7XG4gICAgICAgICAgICBkb21haW5UeXBlID0gQ29udHJhY3QuRmlsdGVyRG9tYWluVHlwZS5SZWxldmFudDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VydmljZSA9IFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZmlsdGVyLXNlcnZpY2VcIiAvKiBGaWx0ZXIgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRDYXRlZ29yaWNhbERvbWFpbkFzeW5jKHRoaXMuX3dvcmtzaGVldE5hbWUsIHRoaXMuX2ZpZWxkSWQsIGRvbWFpblR5cGUpO1xuICAgIH07XG4gICAgcmV0dXJuIENhdGVnb3JpY2FsRmlsdGVyO1xufShGaWx0ZXIpKTtcbmV4cG9ydHMuQ2F0ZWdvcmljYWxGaWx0ZXIgPSBDYXRlZ29yaWNhbEZpbHRlcjtcbnZhciBSYW5nZUZpbHRlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJhbmdlRmlsdGVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFJhbmdlRmlsdGVyKHdvcmtzaGVldE5hbWUsIGZpZWxkTmFtZSwgZmllbGRJZCwgZmlsdGVyVHlwZSwgX21pbiwgX21heCwgX2luY2x1ZGVOdWxsVmFsdWVzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHdvcmtzaGVldE5hbWUsIGZpZWxkTmFtZSwgZmlsdGVyVHlwZSwgZmllbGRJZCkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX21pbiA9IF9taW47XG4gICAgICAgIF90aGlzLl9tYXggPSBfbWF4O1xuICAgICAgICBfdGhpcy5faW5jbHVkZU51bGxWYWx1ZXMgPSBfaW5jbHVkZU51bGxWYWx1ZXM7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJhbmdlRmlsdGVyLnByb3RvdHlwZSwgXCJtaW5WYWx1ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJhbmdlRmlsdGVyLnByb3RvdHlwZSwgXCJtYXhWYWx1ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJhbmdlRmlsdGVyLnByb3RvdHlwZSwgXCJpbmNsdWRlTnVsbFZhbHVlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVOdWxsVmFsdWVzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBSYW5nZUZpbHRlci5wcm90b3R5cGUuZ2V0RG9tYWluQXN5bmMgPSBmdW5jdGlvbiAoZG9tYWluVHlwZSkge1xuICAgICAgICB2YXIgc2VydmljZSA9IFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZmlsdGVyLXNlcnZpY2VcIiAvKiBGaWx0ZXIgKi8pO1xuICAgICAgICBpZiAoIWRvbWFpblR5cGUpIHtcbiAgICAgICAgICAgIGRvbWFpblR5cGUgPSBDb250cmFjdC5GaWx0ZXJEb21haW5UeXBlLlJlbGV2YW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlLmdldFJhbmdlRG9tYWluQXN5bmModGhpcy5fd29ya3NoZWV0TmFtZSwgdGhpcy5fZmllbGRJZCwgZG9tYWluVHlwZSk7XG4gICAgfTtcbiAgICByZXR1cm4gUmFuZ2VGaWx0ZXI7XG59KEZpbHRlcikpO1xuZXhwb3J0cy5SYW5nZUZpbHRlciA9IFJhbmdlRmlsdGVyO1xudmFyIFJlbGF0aXZlRGF0ZUZpbHRlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlbGF0aXZlRGF0ZUZpbHRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSZWxhdGl2ZURhdGVGaWx0ZXIod29ya3NoZWV0TmFtZSwgZmllbGROYW1lLCBmaWVsZElkLCBmaWx0ZXJUeXBlLCBfYW5jaG9yRGF0ZSwgX3BlcmlvZFR5cGUsIF9yYW5nZVR5cGUsIF9yYW5nZU4pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgd29ya3NoZWV0TmFtZSwgZmllbGROYW1lLCBmaWx0ZXJUeXBlLCBmaWVsZElkKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fYW5jaG9yRGF0ZSA9IF9hbmNob3JEYXRlO1xuICAgICAgICBfdGhpcy5fcGVyaW9kVHlwZSA9IF9wZXJpb2RUeXBlO1xuICAgICAgICBfdGhpcy5fcmFuZ2VUeXBlID0gX3JhbmdlVHlwZTtcbiAgICAgICAgX3RoaXMuX3JhbmdlTiA9IF9yYW5nZU47XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlbGF0aXZlRGF0ZUZpbHRlci5wcm90b3R5cGUsIFwiYW5jaG9yRGF0ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FuY2hvckRhdGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWxhdGl2ZURhdGVGaWx0ZXIucHJvdG90eXBlLCBcInBlcmlvZFR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXJpb2RUeXBlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVsYXRpdmVEYXRlRmlsdGVyLnByb3RvdHlwZSwgXCJyYW5nZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yYW5nZVR5cGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWxhdGl2ZURhdGVGaWx0ZXIucHJvdG90eXBlLCBcInJhbmdlTlwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlTjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIFJlbGF0aXZlRGF0ZUZpbHRlcjtcbn0oRmlsdGVyKSk7XG5leHBvcnRzLlJlbGF0aXZlRGF0ZUZpbHRlciA9IFJlbGF0aXZlRGF0ZUZpbHRlcjtcbnZhciBDYXRlZ29yaWNhbERvbWFpbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ2F0ZWdvcmljYWxEb21haW4oX3ZhbHVlcywgX2RvbWFpblR5cGUpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVzID0gX3ZhbHVlcztcbiAgICAgICAgdGhpcy5fZG9tYWluVHlwZSA9IF9kb21haW5UeXBlO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2F0ZWdvcmljYWxEb21haW4ucHJvdG90eXBlLCBcInZhbHVlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENhdGVnb3JpY2FsRG9tYWluLnByb3RvdHlwZSwgXCJ0eXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZG9tYWluVHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIENhdGVnb3JpY2FsRG9tYWluO1xufSgpKTtcbmV4cG9ydHMuQ2F0ZWdvcmljYWxEb21haW4gPSBDYXRlZ29yaWNhbERvbWFpbjtcbnZhciBSYW5nZURvbWFpbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmFuZ2VEb21haW4oX21pbiwgX21heCwgX2RvbWFpblR5cGUpIHtcbiAgICAgICAgdGhpcy5fbWluID0gX21pbjtcbiAgICAgICAgdGhpcy5fbWF4ID0gX21heDtcbiAgICAgICAgdGhpcy5fZG9tYWluVHlwZSA9IF9kb21haW5UeXBlO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmFuZ2VEb21haW4ucHJvdG90eXBlLCBcInR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kb21haW5UeXBlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmFuZ2VEb21haW4ucHJvdG90eXBlLCBcIm1pblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJhbmdlRG9tYWluLnByb3RvdHlwZSwgXCJtYXhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBSYW5nZURvbWFpbjtcbn0oKSk7XG5leHBvcnRzLlJhbmdlRG9tYWluID0gUmFuZ2VEb21haW47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWx0ZXJNb2RlbHMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL01vZGVscy9GaWx0ZXJNb2RlbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgU2VydmljZVJlZ2lzdHJ5SW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2VydmljZVJlZ2lzdHJ5SW1wbCgpIHtcbiAgICAgICAgdGhpcy5fc2VydmljZXMgPSB7fTtcbiAgICB9XG4gICAgU2VydmljZVJlZ2lzdHJ5SW1wbC5wcm90b3R5cGUucmVnaXN0ZXJTZXJ2aWNlID0gZnVuY3Rpb24gKHNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fc2VydmljZXNbc2VydmljZS5zZXJ2aWNlTmFtZV0gPSBzZXJ2aWNlO1xuICAgIH07XG4gICAgU2VydmljZVJlZ2lzdHJ5SW1wbC5wcm90b3R5cGUuZ2V0U2VydmljZSA9IGZ1bmN0aW9uIChzZXJ2aWNlTmFtZSkge1xuICAgICAgICBpZiAoIXRoaXMuX3NlcnZpY2VzLmhhc093blByb3BlcnR5KHNlcnZpY2VOYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gU2VydmljZSBcIiArIHNlcnZpY2VOYW1lICsgXCIgaXMgcmVnaXN0ZXJlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2VydmljZXNbc2VydmljZU5hbWVdO1xuICAgIH07XG4gICAgcmV0dXJuIFNlcnZpY2VSZWdpc3RyeUltcGw7XG59KCkpO1xuLyoqXG4gKiBzdGF0aWMgY2xhc3MgdXNlZCBmb3IgZ2V0dGluZyBhY2Nlc3MgdG8gdGhlIHNpbmdsZSBpbnN0YW5jZVxuICogb2YgdGhlIEFwaVNlcnZpY2VSZWdpc3RyeVxuICovXG52YXIgQXBpU2VydmljZVJlZ2lzdHJ5ID0gKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBQcml2YXRlIHRvIGF2b2lkIGFueW9uZSBjb25zdHJ1Y3RpbmcgdGhpc1xuICAgIGZ1bmN0aW9uIEFwaVNlcnZpY2VSZWdpc3RyeSgpIHtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFwaVNlcnZpY2VSZWdpc3RyeSwgXCJpbnN0YW5jZVwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIFNlcnZpY2VSZWdpc3RyeVxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkpIHtcbiAgICAgICAgICAgICAgICBBcGlTZXJ2aWNlUmVnaXN0cnkuc2V0SW5zdGFuY2UobmV3IFNlcnZpY2VSZWdpc3RyeUltcGwoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lnbmluZyBzZXJ2aWNlIHJlZ2lzdHJ5IGZhaWxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIHJlZ2lzdHJ5IGluc3RhbmNlLiBDYW4gYmUgdXNlZCBieSB1bml0IHRlc3RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1NlcnZpY2VSZWdpc3RyeX0gc2VydmljZVJlZ2lzdHJ5IFRoZSBuZXcgcmVnaXN0cnlcbiAgICAgKi9cbiAgICBBcGlTZXJ2aWNlUmVnaXN0cnkuc2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoc2VydmljZVJlZ2lzdHJ5KSB7XG4gICAgICAgIHdpbmRvdy5fX3RhYmxlYXVBcGlTZXJ2aWNlUmVnaXN0cnkgPSBzZXJ2aWNlUmVnaXN0cnk7XG4gICAgfTtcbiAgICByZXR1cm4gQXBpU2VydmljZVJlZ2lzdHJ5O1xufSgpKTtcbmV4cG9ydHMuQXBpU2VydmljZVJlZ2lzdHJ5ID0gQXBpU2VydmljZVJlZ2lzdHJ5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VydmljZVJlZ2lzdHJ5LmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9TZXJ2aWNlUmVnaXN0cnkuanNcbiAqKiBtb2R1bGUgaWQgPSAzM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29udHJhY3QgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBHZXREYXRhTW9kZWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vTW9kZWxzL0dldERhdGFNb2RlbHNcIik7XG52YXIgR2V0RGF0YVNlcnZpY2VfMSA9IHJlcXVpcmUoXCIuLi9HZXREYXRhU2VydmljZVwiKTtcbnZhciBHZXREYXRhU2VydmljZUltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdldERhdGFTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoR2V0RGF0YVNlcnZpY2VJbXBsLnByb3RvdHlwZSwgXCJzZXJ2aWNlTmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiZ2V0LWRhdGEtc2VydmljZVwiIC8qIEdldERhdGEgKi87XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEdldERhdGFTZXJ2aWNlSW1wbC5wcm90b3R5cGUuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyA9IGZ1bmN0aW9uICh2aXN1YWxJZCwgZ2V0VHlwZSwgaWdub3JlQWxpYXNlcywgaWdub3JlU2VsZWN0aW9uLCBpbmNsdWRlQWxsQ29sdW1ucywgbWF4Um93cykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAvLyBDcmVhdGUgYWxsIG9mIG91ciBwYXJhbWV0ZXJzXG4gICAgICAgIHZhciB2ZXJiID0gZ2V0VHlwZSA9PT0gR2V0RGF0YVNlcnZpY2VfMS5HZXREYXRhVHlwZS5TdW1tYXJ5ID8gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldERhdGFTdW1tYXJ5RGF0YSA6IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXRVbmRlcmx5aW5nRGF0YTtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSB7fTtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZDtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5JZ25vcmVBbGlhc2VzXSA9IGlnbm9yZUFsaWFzZXM7XG4gICAgICAgIHBhcmFtZXRlcnNbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuSWdub3JlU2VsZWN0aW9uXSA9IGlnbm9yZVNlbGVjdGlvbjtcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5JbmNsdWRlQWxsQ29sdW1uc10gPSBpbmNsdWRlQWxsQ29sdW1ucztcbiAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5NYXhSb3dzXSA9IG1heFJvd3M7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUodmVyYiwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgcmVzcG9uc2VEYXRhLmlzU3VtbWFyeSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgR2V0RGF0YVNlcnZpY2VJbXBsLnByb3RvdHlwZS5nZXRTZWxlY3RlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAodmlzdWFsSWQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoX2EgPSB7fSwgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQsIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuR2V0U2VsZWN0ZWRNYXJrcywgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YS5kYXRhLm1hcChmdW5jdGlvbiAodGFibGUpIHsgcmV0dXJuIF90aGlzLnByb2Nlc3NSZXN1bHRzVGFibGUodGFibGUsIHRydWUpOyB9KVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYTtcbiAgICB9O1xuICAgIEdldERhdGFTZXJ2aWNlSW1wbC5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRNYXJrc0FzeW5jID0gZnVuY3Rpb24gKHZpc3VhbElkKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gKF9hID0ge30sIF9hW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlZpc3VhbElkXSA9IHZpc3VhbElkLCBfYSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldEhpZ2hsaWdodGVkTWFya3MsIHBhcmFtZXRlcnMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOiByZXNwb25zZURhdGEuZGF0YS5tYXAoZnVuY3Rpb24gKHRhYmxlKSB7IHJldHVybiBfdGhpcy5wcm9jZXNzUmVzdWx0c1RhYmxlKHRhYmxlLCB0cnVlKTsgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2E7XG4gICAgfTtcbiAgICBHZXREYXRhU2VydmljZUltcGwucHJvdG90eXBlLmdldERhdGFTb3VyY2VEYXRhQXN5bmMgPSBmdW5jdGlvbiAoZGF0YVNvdXJjZUlkLCBpZ25vcmVBbGlhc2VzLCBtYXhSb3dzLCBjb2x1bW5zVG9JbmNsdWRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gKF9hID0ge30sXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EYXRhU291cmNlSWRdID0gZGF0YVNvdXJjZUlkLFxuICAgICAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuSWdub3JlQWxpYXNlc10gPSBpZ25vcmVBbGlhc2VzLFxuICAgICAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuTWF4Um93c10gPSBtYXhSb3dzLFxuICAgICAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuQ29sdW1uc1RvSW5jbHVkZV0gPSBjb2x1bW5zVG9JbmNsdWRlLFxuICAgICAgICAgICAgX2EpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5HZXREYXRhU291cmNlRGF0YSwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMucHJvY2Vzc1Jlc3VsdHNUYWJsZShyZXNwb25zZURhdGEuZGF0YSwgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hO1xuICAgIH07XG4gICAgR2V0RGF0YVNlcnZpY2VJbXBsLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0c1RhYmxlID0gZnVuY3Rpb24gKHJlc3BvbnNlRGF0YSwgaXNTdW1tYXJ5KSB7XG4gICAgICAgIHZhciBoZWFkZXJzID0gcmVzcG9uc2VEYXRhLmhlYWRlcnMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBuZXcgR2V0RGF0YU1vZGVsc18xLkNvbHVtbihoLmZpZWxkQ2FwdGlvbiwgQ29udHJhY3QuRGF0YVR5cGUuU3RyaW5nIC8qaC5EYXRhVHlwZSovLCBoLmlzUmVmZXJlbmNlZCwgaC5pbmRleCk7IH0pO1xuICAgICAgICAvLyBUT0RPIFRoaXMgc2hvdWxkIGJlIGNvbnRyb2xsZWQgYnkgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGFwaSB3aWxsIHJlc3BvbmQgbWFya3MgaW5mbyBvciBub3RcbiAgICAgICAgdmFyIG1hcmtzO1xuICAgICAgICBpZiAocmVzcG9uc2VEYXRhLm1hcmtzKSB7XG4gICAgICAgICAgICBtYXJrcyA9IHJlc3BvbnNlRGF0YS5tYXJrcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIG5ldyBHZXREYXRhTW9kZWxzXzEuTWFya0luZm8oaC50eXBlLCBoLmNvbG9yLCBoLnR1cGxlSWQpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFibGUgPSByZXNwb25zZURhdGEuZGF0YVRhYmxlLm1hcChmdW5jdGlvbiAocm93KSB7XG4gICAgICAgICAgICByZXR1cm4gcm93Lm1hcChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShjZWxsLnZhbHVlLCBjZWxsLmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1hcmtzKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEdldERhdGFNb2RlbHNfMS5EYXRhVGFibGUodGFibGUsIGhlYWRlcnMsIHRhYmxlLmxlbmd0aCwgaXNTdW1tYXJ5LCBtYXJrcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBHZXREYXRhTW9kZWxzXzEuRGF0YVRhYmxlKHRhYmxlLCBoZWFkZXJzLCB0YWJsZS5sZW5ndGgsIGlzU3VtbWFyeSk7XG4gICAgfTtcbiAgICByZXR1cm4gR2V0RGF0YVNlcnZpY2VJbXBsO1xufSgpKTtcbmV4cG9ydHMuR2V0RGF0YVNlcnZpY2VJbXBsID0gR2V0RGF0YVNlcnZpY2VJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2V0RGF0YVNlcnZpY2VJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL0dldERhdGFTZXJ2aWNlSW1wbC5qc1xuICoqIG1vZHVsZSBpZCA9IDM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBSZWdpc3RyYXRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlZ2lzdHJhdGlvbihfZmlsdGVyRm4sIF9jYWxsYmFja0ZuKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckZuID0gX2ZpbHRlckZuO1xuICAgICAgICB0aGlzLl9jYWxsYmFja0ZuID0gX2NhbGxiYWNrRm47XG4gICAgICAgIC8vIE5vdGhpbmcgSGVyZVxuICAgIH1cbiAgICBSZWdpc3RyYXRpb24ucHJvdG90eXBlLm9uTm90aWZpY2F0aW9uID0gZnVuY3Rpb24gKG5vdGlmaWNhdGlvbk1vZGVsKSB7XG4gICAgICAgIGlmICh0aGlzLl9maWx0ZXJGbihub3RpZmljYXRpb25Nb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxiYWNrRm4obm90aWZpY2F0aW9uTW9kZWwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gUmVnaXN0cmF0aW9uO1xufSgpKTtcbnZhciBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTm90aWZpY2F0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgICAgICB0aGlzLl9oYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIucmVnaXN0ZXJOb3RpZmljYXRpb25IYW5kbGVyKHRoaXMub25Ob3RpZmljYXRpb24uYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb3RpZmljYXRpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUsIFwic2VydmljZU5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIm5vdGlmaWNhdGlvbi1zZXJ2aWNlXCIgLyogTm90aWZpY2F0aW9uICovO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUucmVnaXN0ZXJIYW5kbGVyID0gZnVuY3Rpb24gKGlkLCBmaWx0ZXJGbiwgaGFuZGxlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaGFuZGxlcnMgPSB0aGlzLl9oYW5kbGVyc1tpZF0gfHwgbmV3IEFycmF5KCk7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb24gPSBuZXcgUmVnaXN0cmF0aW9uKGZpbHRlckZuLCBoYW5kbGVyKTtcbiAgICAgICAgaGFuZGxlcnMucHVzaChyZWdpc3RyYXRpb24pO1xuICAgICAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVycztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnJlbW92ZVJlZ2lzdHJhdGlvbihpZCwgcmVnaXN0cmF0aW9uKTsgfTtcbiAgICB9O1xuICAgIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5oYXNIYW5kbGVyc0Zvck5vdGlmaWNhdGlvblR5cGUgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLmhhc093blByb3BlcnR5KGlkKTtcbiAgICB9O1xuICAgIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5vbk5vdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChub3RpZmljYXRpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc0hhbmRsZXJzRm9yTm90aWZpY2F0aW9uVHlwZShub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gR28gdGhyb3VnaCBhbmQgY2hlY2sgZm9yIGFsbCB0aGUgaGFuZGxlcnMgb2YgdGhpcyBwYXJ0aWN1bGFyIG5vdGlmaWNhdGlvblxuICAgICAgICB0aGlzLl9oYW5kbGVyc1tub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWRdLmZvckVhY2goZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgub25Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRhdGEpOyB9KTtcbiAgICB9O1xuICAgIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5yZW1vdmVSZWdpc3RyYXRpb24gPSBmdW5jdGlvbiAoaWQsIHJlZ2lzdHJhdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMuaGFzSGFuZGxlcnNGb3JOb3RpZmljYXRpb25UeXBlKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hhbmRsZXJzW2lkXSA9IHRoaXMuX2hhbmRsZXJzW2lkXS5maWx0ZXIoZnVuY3Rpb24gKHJlZykgeyByZXR1cm4gcmVnICE9PSByZWdpc3RyYXRpb247IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIE5vdGlmaWNhdGlvblNlcnZpY2VJbXBsO1xufSgpKTtcbmV4cG9ydHMuTm90aWZpY2F0aW9uU2VydmljZUltcGwgPSBOb3RpZmljYXRpb25TZXJ2aWNlSW1wbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU5vdGlmaWNhdGlvblNlcnZpY2VJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL05vdGlmaWNhdGlvblNlcnZpY2VJbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gMzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBQYXJhbWV0ZXJJbXBsXzEgPSByZXF1aXJlKFwiLi4vLi4vSW50ZXJuYWwvUGFyYW1ldGVySW1wbFwiKTtcbnZhciBQYXJhbWV0ZXJfMSA9IHJlcXVpcmUoXCIuLi8uLi9QYXJhbWV0ZXJcIik7XG52YXIgUGFyYW1ldGVyc1NlcnZpY2VJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQYXJhbWV0ZXJzU2VydmljZUltcGwoZGlzcGF0Y2hlcikge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZSwgXCJzZXJ2aWNlTmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIFwicGFyYW1ldGVycy1zZXJ2aWNlXCIgLyogUGFyYW1ldGVycyAqLztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzRm9yU2hlZXRBc3luYyA9IGZ1bmN0aW9uIChzaGVldFBhdGgsIHNoZWV0KSB7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gKF9hID0ge30sXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TaGVldFBhdGhdID0gc2hlZXRQYXRoLFxuICAgICAgICAgICAgX2EpO1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkdldFBhcmFtZXRlcnNGb3JTaGVldCwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gLSBDaGVjayBmb3IgZXJyb3JcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChmdW5jdGlvbiAocGFyYW1ldGVySW5mbykge1xuICAgICAgICAgICAgICAgIHZhciBpbXBsID0gbmV3IFBhcmFtZXRlckltcGxfMS5QYXJhbWV0ZXJJbXBsKHBhcmFtZXRlckluZm8pO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUGFyYW1ldGVyXzEuUGFyYW1ldGVyKGltcGwsIHNoZWV0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hO1xuICAgIH07XG4gICAgUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZS5jaGFuZ2VQYXJhbWV0ZXJWYWx1ZUFzeW5jID0gZnVuY3Rpb24gKGZpZWxkTmFtZSwgbmV3VmFsdWUpIHtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoX2EgPSB7fSxcbiAgICAgICAgICAgIF9hW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckZpZWxkTmFtZV0gPSBmaWVsZE5hbWUsXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJWYWx1ZV0gPSBuZXdWYWx1ZSxcbiAgICAgICAgICAgIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5DaGFuZ2VQYXJhbWV0ZXJWYWx1ZSwgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hO1xuICAgIH07XG4gICAgUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZS5maW5kUGFyYW1ldGVyQnlOYW1lQXN5bmMgPSBmdW5jdGlvbiAobmFtZSwgc2hlZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmFtZXRlckFzeW5jKHNoZWV0LCBuYW1lLCB1bmRlZmluZWQpO1xuICAgIH07XG4gICAgUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZS5maW5kUGFyYW1ldGVyQnlHbG9iYWxGaWVsZE5hbWVBc3luYyA9IGZ1bmN0aW9uIChmaWVsZE5hbWUsIHNoZWV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRQYXJhbWV0ZXJBc3luYyhzaGVldCwgdW5kZWZpbmVkLCBmaWVsZE5hbWUpO1xuICAgIH07XG4gICAgUGFyYW1ldGVyc1NlcnZpY2VJbXBsLnByb3RvdHlwZS5maW5kUGFyYW1ldGVyQXN5bmMgPSBmdW5jdGlvbiAoc2hlZXQsIG5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICB2YXIgcGFyYW1ldGVycyA9IHt9O1xuICAgICAgICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlBhcmFtZXRlckNhcHRpb25dID0gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWVsZE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5QYXJhbWV0ZXJGaWVsZE5hbWVdID0gZmllbGROYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmUgZmllbGQgbmFtZSBvciBjYXB0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5GaW5kUGFyYW1ldGVyLCBwYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnZmllbGROYW1lJyBpbiBvYmplY3Q7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgd2UgZ290IGEgdmFsaWQgcmVzcG9uc2UgYmFjayBhZ2FpblxuICAgICAgICAgICAgaWYgKGluc3RhbmNlT2ZQYXJhbWV0ZXJJbmZvKHJlc3BvbnNlLnJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICAgICAgICAgIHZhciBpbXBsID0gbmV3IFBhcmFtZXRlckltcGxfMS5QYXJhbWV0ZXJJbXBsKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJfMS5QYXJhbWV0ZXIoaW1wbCwgc2hlZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gUGFyYW1ldGVyc1NlcnZpY2VJbXBsO1xufSgpKTtcbmV4cG9ydHMuUGFyYW1ldGVyc1NlcnZpY2VJbXBsID0gUGFyYW1ldGVyc1NlcnZpY2VJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFyYW1ldGVyc1NlcnZpY2VJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9TZXJ2aWNlcy9pbXBsL1BhcmFtZXRlcnNTZXJ2aWNlSW1wbC5qc1xuICoqIG1vZHVsZSBpZCA9IDM2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDb250cmFjdCA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV91dGlsc18xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS11dGlsc1wiKTtcbnZhciBJbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3NfMSA9IHJlcXVpcmUoXCIuLi9FbnVtTWFwcGluZ3MvSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzXCIpO1xudmFyIFBhcmFtZXRlckNoYW5nZWRFdmVudF8xID0gcmVxdWlyZShcIi4uL0V2ZW50cy9QYXJhbWV0ZXJDaGFuZ2VkRXZlbnRcIik7XG52YXIgR2V0RGF0YU1vZGVsc18xID0gcmVxdWlyZShcIi4uL01vZGVscy9HZXREYXRhTW9kZWxzXCIpO1xudmFyIFNlcnZpY2VSZWdpc3RyeV8xID0gcmVxdWlyZShcIi4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeVwiKTtcbnZhciBTaW5nbGVFdmVudE1hbmFnZXJJbXBsXzEgPSByZXF1aXJlKFwiLi9TaW5nbGVFdmVudE1hbmFnZXJJbXBsXCIpO1xudmFyIFBhcmFtZXRlckltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFBhcmFtZXRlckltcGwocGFyYW1ldGVySW5mbykge1xuICAgICAgICB0aGlzLnNldFBhcmFtZXRlckluZm8ocGFyYW1ldGVySW5mbyk7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQYXJhbWV0ZXJJbXBsLnByb3RvdHlwZSwgXCJuYW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1ldGVySW5mby5uYW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGFyYW1ldGVySW1wbC5wcm90b3R5cGUsIFwiY3VycmVudFZhbHVlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEdldERhdGFNb2RlbHNfMS5EYXRhVmFsdWUodGhpcy5fcGFyYW1ldGVySW5mby5jdXJyZW50VmFsdWUudmFsdWUsIHRoaXMuX3BhcmFtZXRlckluZm8uY3VycmVudFZhbHVlLmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcmFtZXRlckltcGwucHJvdG90eXBlLCBcImRhdGFUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzXzEuSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmRhdGFUeXBlLmNvbnZlcnQodGhpcy5fcGFyYW1ldGVySW5mby5kYXRhVHlwZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQYXJhbWV0ZXJJbXBsLnByb3RvdHlwZSwgXCJhbGxvd2FibGVWYWx1ZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2FibGVWYWx1ZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFBhcmFtZXRlckltcGwucHJvdG90eXBlLmNoYW5nZVZhbHVlQXN5bmMgPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNvZXJjZWRWYWx1ZSA9IGFwaV91dGlsc18xLlBhcmFtLnNlcmlhbGl6ZVBhcmFtdGVyVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB2YXIgcGFyYW1ldGVyc1NlcnZpY2UgPSBTZXJ2aWNlUmVnaXN0cnlfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcInBhcmFtZXRlcnMtc2VydmljZVwiIC8qIFBhcmFtZXRlcnMgKi8pO1xuICAgICAgICByZXR1cm4gcGFyYW1ldGVyc1NlcnZpY2UuY2hhbmdlUGFyYW1ldGVyVmFsdWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIGNvZXJjZWRWYWx1ZSkudGhlbihmdW5jdGlvbiAocGFyYW1ldGVySW5mbykge1xuICAgICAgICAgICAgX3RoaXMuc2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXJJbmZvKTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCB3aGljaCBnb2VzIHRocm91Z2ggYW5kIHJlZ2lzdGVycyBlYWNoIGV2ZW50IHR5cGUgdGhpcyBpbXBsIGtub3dzIGFib3V0XG4gICAgICogd2l0aCB0aGUgTm90aWZpY2F0aW9uU2VydmljZS4gSXQgcmV0dXJucyBhbiBhcnJheSBvZiBTaW5nbGVFdmVudE1hbmFnZXIgb2JqZWN0cyB3aGljaFxuICAgICAqIGNhbiB0aGVuIGJlIHBhc3NlZCB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlciB0byBoYW5kbGUgdXNlciByZWdpc3RyYXRpb24gLyB1bnJlZ2lzdHJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzaGVldCBUaGUgc2hlZXQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCB0aGUgZXZlbnQgbm90aWZpY2F0aW9uc1xuICAgICAqIEByZXR1cm5zIHtBcnJheTxTaW5nbGVFdmVudE1hbmFnZXI+fSBDb2xsZWN0aW9uIG9mIGV2ZW50IG1hbmFnZXJzIHRvIHBhc3MgdG8gYW4gRXZlbnRMaXN0ZW5lck1hbmFnZXJcbiAgICAgKi9cbiAgICBQYXJhbWV0ZXJJbXBsLnByb3RvdHlwZS5pbml0aWFsaXplRXZlbnRzID0gZnVuY3Rpb24gKHNoZWV0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHZhciBub3RpZmljYXRpb25TZXJ2aWNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZSA9IFNlcnZpY2VSZWdpc3RyeV8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwibm90aWZpY2F0aW9uLXNlcnZpY2VcIiAvKiBOb3RpZmljYXRpb24gKi8pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIHRoaXMgc2VydmljZSByZWdpc3RlcmVkLCBqdXN0IHJldHVyblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGV2ZW50IG1hbmFnZXJzIHdlJ2xsIG5lZWQgKG9uZSBmb3IgZWFjaCBldmVudCB0eXBlKVxuICAgICAgICB2YXIgcGFyYW1ldGVyRXZlbnQgPSBuZXcgU2luZ2xlRXZlbnRNYW5hZ2VySW1wbF8xLlNpbmdsZUV2ZW50TWFuYWdlckltcGwoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5QYXJhbWV0ZXJDaGFuZ2VkKTtcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZS5yZWdpc3RlckhhbmRsZXIoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuTm90aWZpY2F0aW9uSWQuUGFyYW1ldGVyQ2hhbmdlZCwgZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICAgICAgICB2YXIgZmllbGROYW1lID0gbW9kZWw7XG4gICAgICAgICAgICByZXR1cm4gZmllbGROYW1lID09PSBfdGhpcy5fZ2xvYmFsRmllbGROYW1lO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZmllbGROYW1lKSB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJFdmVudC50cmlnZ2VyRXZlbnQoZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IFBhcmFtZXRlckNoYW5nZWRFdmVudF8xLlBhcmFtZXRlckNoYW5nZWRFdmVudChmaWVsZE5hbWUsIHNoZWV0KTsgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHRzLnB1c2gocGFyYW1ldGVyRXZlbnQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9O1xuICAgIFBhcmFtZXRlckltcGwucHJvdG90eXBlLnNldFBhcmFtZXRlckluZm8gPSBmdW5jdGlvbiAocGFyYW1ldGVySW5mbykge1xuICAgICAgICB0aGlzLl9wYXJhbWV0ZXJJbmZvID0gcGFyYW1ldGVySW5mbztcbiAgICAgICAgdGhpcy5fZ2xvYmFsRmllbGROYW1lID0gcGFyYW1ldGVySW5mby5maWVsZE5hbWU7XG4gICAgICAgIHZhciB0eXBlID0gSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzXzEuSW50ZXJuYWxUb0V4dGVybmFsRW51bU1hcHBpbmdzLmFsbG93YWJsZVZhbHVlcy5jb252ZXJ0KHBhcmFtZXRlckluZm8uYWxsb3dhYmxlVmFsdWVzVHlwZSk7XG4gICAgICAgIHZhciBsaXN0VmFsdWVzO1xuICAgICAgICB2YXIgbWluVmFsdWU7XG4gICAgICAgIHZhciBtYXhWYWx1ZTtcbiAgICAgICAgdmFyIHN0ZXBTaXplO1xuICAgICAgICB2YXIgZGF0ZVN0ZXBQZXJpb2Q7XG4gICAgICAgIGlmICh0eXBlID09PSBDb250cmFjdC5QYXJhbWV0ZXJWYWx1ZVR5cGUuTGlzdCkge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IHBhcmFtZXRlckluZm8uYWxsb3dhYmxlVmFsdWVzIHx8IFtdO1xuICAgICAgICAgICAgbGlzdFZhbHVlcyA9IHZhbHVlcy5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbmV3IEdldERhdGFNb2RlbHNfMS5EYXRhVmFsdWUodmFsLnZhbHVlLCB2YWwuZm9ybWF0dGVkVmFsdWUpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSBDb250cmFjdC5QYXJhbWV0ZXJWYWx1ZVR5cGUuUmFuZ2UpIHtcbiAgICAgICAgICAgIG1pblZhbHVlID0gcGFyYW1ldGVySW5mby5taW5WYWx1ZSAmJiBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShwYXJhbWV0ZXJJbmZvLm1pblZhbHVlLnZhbHVlLCBwYXJhbWV0ZXJJbmZvLm1pblZhbHVlLmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIG1heFZhbHVlID0gcGFyYW1ldGVySW5mby5tYXhWYWx1ZSAmJiBuZXcgR2V0RGF0YU1vZGVsc18xLkRhdGFWYWx1ZShwYXJhbWV0ZXJJbmZvLm1heFZhbHVlLnZhbHVlLCBwYXJhbWV0ZXJJbmZvLm1heFZhbHVlLmZvcm1hdHRlZFZhbHVlKTtcbiAgICAgICAgICAgIHN0ZXBTaXplID0gcGFyYW1ldGVySW5mby5zdGVwU2l6ZTtcbiAgICAgICAgICAgIGRhdGVTdGVwUGVyaW9kID0gcGFyYW1ldGVySW5mby5kYXRlU3RlcFBlcmlvZCAmJlxuICAgICAgICAgICAgICAgIEludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5nc18xLkludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5kYXRlU3RlcFBlcmlvZC5jb252ZXJ0KHBhcmFtZXRlckluZm8uZGF0ZVN0ZXBQZXJpb2QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FsbG93YWJsZVZhbHVlcyA9IHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICBhbGxvd2FibGVWYWx1ZXM6IGxpc3RWYWx1ZXMsXG4gICAgICAgICAgICBtaW5WYWx1ZTogbWluVmFsdWUsXG4gICAgICAgICAgICBtYXhWYWx1ZTogbWF4VmFsdWUsXG4gICAgICAgICAgICBzdGVwU2l6ZTogc3RlcFNpemUsXG4gICAgICAgICAgICBkYXRlU3RlcFBlcmlvZDogZGF0ZVN0ZXBQZXJpb2RcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBQYXJhbWV0ZXJJbXBsO1xufSgpKTtcbmV4cG9ydHMuUGFyYW1ldGVySW1wbCA9IFBhcmFtZXRlckltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbWV0ZXJJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogRDovZGV2L2pzLWFwaS9hcGktc2hhcmVkL2xpYi9JbnRlcm5hbC9QYXJhbWV0ZXJJbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29udHJhY3QgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFNlcnZpY2VSZWdpc3RyeV8xID0gcmVxdWlyZShcIi4uL1NlcnZpY2VzL1NlcnZpY2VSZWdpc3RyeVwiKTtcbnZhciBUYWJsZWF1U2hlZXRFdmVudF8xID0gcmVxdWlyZShcIi4vVGFibGVhdVNoZWV0RXZlbnRcIik7XG52YXIgUGFyYW1ldGVyQ2hhbmdlZEV2ZW50ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUGFyYW1ldGVyQ2hhbmdlZEV2ZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBhcmFtZXRlckNoYW5nZWRFdmVudChfZ2xvYmFsRmllbGROYW1lLCBzaGVldCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBDb250cmFjdC5UYWJsZWF1RXZlbnRUeXBlLlBhcmFtZXRlckNoYW5nZWQsIHNoZWV0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fZ2xvYmFsRmllbGROYW1lID0gX2dsb2JhbEZpZWxkTmFtZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQucHJvdG90eXBlLmdldFBhcmFtZXRlckFzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDYWxsIGRvd24gdG8gb3VyIHNlcnZpY2UgdG8gZ2V0IHRoZSBwYXJhbWV0ZXIgYmFjayB2aWEgaXRzIGZpZWxkIG5hbWVcbiAgICAgICAgdmFyIHNlcnZpY2UgPSBTZXJ2aWNlUmVnaXN0cnlfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcInBhcmFtZXRlcnMtc2VydmljZVwiIC8qIFBhcmFtZXRlcnMgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5maW5kUGFyYW1ldGVyQnlHbG9iYWxGaWVsZE5hbWVBc3luYyh0aGlzLl9nbG9iYWxGaWVsZE5hbWUsIHRoaXMuc2hlZXQpLnRoZW4oZnVuY3Rpb24gKHBhcmFtZXRlcikge1xuICAgICAgICAgICAgaWYgKHBhcmFtZXRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFBhcmFtZXRlckNoYW5nZWRFdmVudDtcbn0oVGFibGVhdVNoZWV0RXZlbnRfMS5UYWJsZWF1U2hlZXRFdmVudCkpO1xuZXhwb3J0cy5QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQgPSBQYXJhbWV0ZXJDaGFuZ2VkRXZlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL0V2ZW50cy9QYXJhbWV0ZXJDaGFuZ2VkRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAzOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29udHJhY3QgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xID0gcmVxdWlyZShcIkB0YWJsZWF1L2FwaS1pbnRlcm5hbC1jb250cmFjdFwiKTtcbnZhciBTZWxlY3Rpb25Nb2RlbHNfMSA9IHJlcXVpcmUoXCIuLi8uLi9Nb2RlbHMvU2VsZWN0aW9uTW9kZWxzXCIpO1xudmFyIFNlbGVjdGlvblNlcnZpY2VJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZWxlY3Rpb25TZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2VsZWN0aW9uU2VydmljZUltcGwucHJvdG90eXBlLCBcInNlcnZpY2VOYW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJzZWxlY3Rpb24tc2VydmljZVwiIC8qIFNlbGVjdGlvbiAqLztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIGNsZWFyIGFsbCB0aGUgc2VsZWN0ZWQgbWFya3MgZm9yIHRoZSBnaXZlbiB3b3Jrc2hlZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICAgKi9cbiAgICBTZWxlY3Rpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUuY2xlYXJTZWxlY3RlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAodmlzdWFsSWQpIHtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoX2EgPSB7fSwgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQsIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoZXIuZXhlY3V0ZShhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5WZXJiSWQuQ2xlYXJTZWxlY3RlZE1hcmtzLCBwYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBFeHBlY3RpbmcgYW4gZW1wdHkgbW9kZWwgYW5kIGhlbmNlIHRoZSB2b2lkIHJlc3BvbnNlLlxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9hO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIHNlbGVjdCBtYXJrcyBmb3IgdGhlIGdpdmVuIHdvcmtzaGVldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2aXN1YWxJZFxuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25Dcml0ZXJpYVxuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAgICovXG4gICAgU2VsZWN0aW9uU2VydmljZUltcGwucHJvdG90eXBlLnNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jID0gZnVuY3Rpb24gKHZpc3VhbElkLCBzZWxlY3Rpb25Dcml0ZXJpYXMsIHNlbGVjdGlvblVwZGF0ZVR5cGUpIHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbkNyaXRlcmlhcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24gY3JpdGVyaWEuIFNlbGVjdGlvbnMgbWlzc2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2VsZWN0aW9uVHlwZSA9IHRoaXMudmFsaWRhdGVTZWxlY3Rpb25VcGRhdGVUeXBlKHNlbGVjdGlvblVwZGF0ZVR5cGUpO1xuICAgICAgICB2YXIgc2VsZWN0aW9uQ3JpdGVyaWFUeXBlID0gdGhpcy52YWxpZGF0ZVNlbGVjdGlvbkNyaXRlcmlhKHNlbGVjdGlvbkNyaXRlcmlhc1swXSk7XG4gICAgICAgIHZhciBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lciA9IHRoaXMucGFyc2VTZWxlY3Rpb25NYXJrcyhzZWxlY3Rpb25Dcml0ZXJpYXMsIHNlbGVjdGlvbkNyaXRlcmlhVHlwZSk7XG4gICAgICAgIHZhciBwYXJhbWV0ZXJzID0gKF9hID0ge30sXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5WaXN1YWxJZF0gPSB2aXN1YWxJZCxcbiAgICAgICAgICAgIF9hW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLlNlbGVjdGlvblVwZGF0ZVR5cGVdID0gc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIF9hKTtcbiAgICAgICAgc3dpdGNoIChzZWxlY3Rpb25Dcml0ZXJpYVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGU6IHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzW2FwaV9pbnRlcm5hbF9jb250cmFjdF8xLlBhcmFtZXRlcklkLkhpZXJWYWxTZWxlY3Rpb25Nb2RlbHNdID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuaGllck1vZGVsQXJyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuUmFuZ2VUeXBlOiB7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5RdWFudFJhbmdlU2VsZWN0aW9uTW9kZWxzXSA9IHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyLnF1YW50TW9kZWxBcnI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkNyaXRlcmlhVHlwZS5EaW1lbnNpb25UeXBlOiB7XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyc1thcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5EaW1WYWxTZWxlY3Rpb25Nb2RlbHNdID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuZGltTW9kZWxBcnI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaGVyLmV4ZWN1dGUoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLlNlbGVjdEJ5VmFsdWUsIHBhcmFtZXRlcnMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAvLyBFeHBlY3RpbmcgYW4gZW1wdHkgbW9kZWwgYW5kIGhlbmNlIHRoZSB2b2lkIHJlc3BvbnNlLlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gVE9ETyBJbnZlc3RpZ2F0ZSB0aGUgZXJyb3IgcmVzcG9uc2Ugd2l0aCBtdWx0aXBsZSBvdXRwdXQgcGFyYW1zIGFuZCB0aHJvdyBlcnJvciBhY2NvcmRpbmdseS5cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfYTtcbiAgICB9O1xuICAgIC8qKlxuICAgKiBNZXRob2QgdG8gc2VsZWN0IG1hcmtzIGZvciB0aGUgZ2l2ZW4gd29ya3NoZWV0LlxuICAgKlxuICAgKiBAcGFyYW0gdmlzdWFsSWRcbiAgICogQHBhcmFtIE1hcmtJbmZvXG4gICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAqL1xuICAgIFNlbGVjdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5zZWxlY3RNYXJrc0J5SWRBc3luYyA9IGZ1bmN0aW9uICh2aXN1YWxJZCwgbWFya3MsIHNlbGVjdGlvblVwZGF0ZVR5cGUpIHtcbiAgICAgICAgaWYgKG1hcmtzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNlbGVjdGlvbi4gTWFya3MgaW5mbyBtaXNzaW5nLicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzZWxlY3Rpb25UeXBlID0gdGhpcy52YWxpZGF0ZVNlbGVjdGlvblVwZGF0ZVR5cGUoc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gICAgICAgIHZhciBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lciA9IHRoaXMucGFyc2VTZWxlY3Rpb25JZHMobWFya3MpO1xuICAgICAgICB2YXIgcGFyYW1ldGVycyA9IChfYSA9IHt9LFxuICAgICAgICAgICAgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuVmlzdWFsSWRdID0gdmlzdWFsSWQsXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TZWxlY3Rpb25VcGRhdGVUeXBlXSA9IHNlbGVjdGlvblR5cGUsXG4gICAgICAgICAgICBfYVthcGlfaW50ZXJuYWxfY29udHJhY3RfMS5QYXJhbWV0ZXJJZC5TZWxlY3Rpb25dID0gc2VsZWN0aW9uTW9kZWxDb250YWluZXIuc2VsZWN0aW9uLFxuICAgICAgICAgICAgX2EpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5TZWxlY3RCeVZhbHVlLCBwYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgLy8gRXhwZWN0aW5nIGFuIGVtcHR5IG1vZGVsIGFuZCBoZW5jZSB0aGUgdm9pZCByZXNwb25zZS5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIFRPRE8gSW52ZXN0aWdhdGUgdGhlIGVycm9yIHJlc3BvbnNlIHdpdGggbXVsdGlwbGUgb3V0cHV0IHBhcmFtcyBhbmQgdGhyb3cgZXJyb3IgYWNjb3JkaW5nbHkuXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2E7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gcHJlcGFyZSB0aGUgcHJlcyBtb2RlbHMgZm9yIHNlbGVjdGlvbiBieSBNYXJrc0luZm9cbiAgICAgKiBAcGFyYW0gbWFya3NcbiAgICAgKi9cbiAgICBTZWxlY3Rpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUucGFyc2VTZWxlY3Rpb25JZHMgPSBmdW5jdGlvbiAobWFya3MpIHtcbiAgICAgICAgdmFyIGlkcyA9IFtdO1xuICAgICAgICB2YXIgc2VsZWN0aW9uTW9kZWxDb250YWluZXIgPSBuZXcgU2VsZWN0aW9uTW9kZWxzXzEuU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFya3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB0dXBsZUlkID0gbWFya3NbaV0udHVwbGVJZDtcbiAgICAgICAgICAgIGlmICh0dXBsZUlkICE9PSB1bmRlZmluZWQgJiYgdHVwbGVJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlkcy5wdXNoKHR1cGxlSWQudG9TdHJpbmcoKSk7IC8vIGNvbGxlY3QgdGhlIHR1cGxlIGlkc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR1cGxlSWQgcHJvdmlkZWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHZhciB0dXBsZVNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsc18xLlR1cGxlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgICAgIHR1cGxlU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uVHlwZSA9ICd0dXBsZXMnO1xuICAgICAgICAgICAgdHVwbGVTZWxlY3Rpb25Nb2RlbC5vYmplY3RJZHMgPSBpZHM7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5zZWxlY3Rpb24gPSB0dXBsZVNlbGVjdGlvbk1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byBwcmVwYXJlIHRoZSBwcmVzIG1vZGVscyBmb3Igc2VsZWN0aW9uIGJ5IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIFN1cHBvcnRzIDMgdHlwZXMgZm9yIHNlbGVjdGlvbjpcbiAgICAgKiAxKSBoaWVyYXJjaGljYWwgdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAgICogMikgcmFuZ2UgdmFsdWUgYmFzZWQgc2VsZWN0aW9uXG4gICAgICogMykgRGltZW5zaW9uIHZhbHVlIGJhc2VkIHNlbGVjdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIG1hcmtzXG4gICAgICogQHBhcmFtIGhpZXJNb2RlbEFyclxuICAgICAqIEBwYXJhbSBkaW1Nb2RlbEFyclxuICAgICAqIEBwYXJhbSBxdWFudE1vZGVsQXJyXG4gICAgICogQHBhcmFtIHNlbGVjdGlvblxuICAgICAqL1xuICAgIFNlbGVjdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5wYXJzZVNlbGVjdGlvbk1hcmtzID0gZnVuY3Rpb24gKHNlbGVjdGlvbkNyaXRlcmlhcywgc2VsZWN0aW9uVHlwZSkge1xuICAgICAgICB2YXIgc2VsZWN0aW9uTW9kZWxDb250YWluZXIgPSBuZXcgU2VsZWN0aW9uTW9kZWxzXzEuU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyKCk7XG4gICAgICAgIHZhciBtaXhlZFNlbGVjdGlvbnNFcnJvciA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdGlvbkNyaXRlcmlhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN0ID0gc2VsZWN0aW9uQ3JpdGVyaWFzW2ldO1xuICAgICAgICAgICAgaWYgKHN0LmZpZWxkTmFtZSAmJiAoc3QudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBzdC52YWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2F0UmVnZXggPSBuZXcgUmVnRXhwKCcoXFxbW0EtWmEtejAtOV0rXSkuKicsICdnJyk7XG4gICAgICAgICAgICAgICAgdmFyIHJhbmdlT3B0aW9uID0gc3QudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGNhdFJlZ2V4LnRlc3Qoc3QuZmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLkhpZXJhcmNoaWNhbFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoaWVyTW9kZWwgPSB0aGlzLmFkZFRvUGFyYW1zTGlzdChzdC5maWVsZE5hbWUsIHN0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGVsQ29udGFpbmVyLmhpZXJNb2RlbEFyci5wdXNoKGhpZXJNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaXhlZFNlbGVjdGlvbnNFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyYW5nZU9wdGlvbi5taW4gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAmJiByYW5nZU9wdGlvbi5tYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLlJhbmdlVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHF1YW50TW9kZWwgPSB0aGlzLmFkZFRvUmFuZ2VQYXJhbXNMaXN0KHN0LmZpZWxkTmFtZSwgcmFuZ2VPcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZWxDb250YWluZXIucXVhbnRNb2RlbEFyci5wdXNoKHF1YW50TW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWl4ZWRTZWxlY3Rpb25zRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25UeXBlID09PSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuRGltZW5zaW9uVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpbU1vZGVsID0gdGhpcy5hZGRUb1BhcmFtc0xpc3Qoc3QuZmllbGROYW1lLCBzdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlbENvbnRhaW5lci5kaW1Nb2RlbEFyci5wdXNoKGRpbU1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1peGVkU2VsZWN0aW9uc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaXhlZFNlbGVjdGlvbnNFcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWZmZXJlbnQgdHlwZXMgb2Ygc2VsZWN0aW9uIGNyaXRlcmlhcyBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0aW9uTW9kZWxDb250YWluZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25Dcml0ZXJpYXMgVmFsaWRhdGUgYW5kIGRldGVybWluZSB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhcyB0eXBlLlxuICAgICAqL1xuICAgIFNlbGVjdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS52YWxpZGF0ZVNlbGVjdGlvbkNyaXRlcmlhID0gZnVuY3Rpb24gKHNlbGVjdGlvbkNyaXRlcmlhKSB7XG4gICAgICAgIHZhciBzZWxlY3Rpb25UeXBlO1xuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHR5cGUgb2Ygc2VsZWN0aW9uLCB0aGlzIGNvbW1hbmQgaXMgYnkgbG9va2luZyBhdCB0aGUgZmlyc3Qgc2VsZWN0aW9uXG4gICAgICAgIHZhciBjcml0ID0gc2VsZWN0aW9uQ3JpdGVyaWE7XG4gICAgICAgIHZhciBjYXRSZWdleCA9IG5ldyBSZWdFeHAoJyhcXFtbQS1aYS16MC05XStdKS4qJywgJ2cnKTtcbiAgICAgICAgdmFyIHJhbmdlT3B0aW9uID0gY3JpdC52YWx1ZTtcbiAgICAgICAgaWYgKGNyaXQuZmllbGROYW1lICYmIChjcml0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY3JpdC52YWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgICAgIGlmIChjYXRSZWdleC50ZXN0KGNyaXQuZmllbGROYW1lKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuSGllcmFyY2hpY2FsVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlT3B0aW9uLm1pbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgJiYgcmFuZ2VPcHRpb24ubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uQ3JpdGVyaWFUeXBlLlJhbmdlVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25Dcml0ZXJpYVR5cGUuRGltZW5zaW9uVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzZWxlY3Rpb24gY3JpdGVyaWEgZm9ybWF0LicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb25UeXBlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRvIHRyYW5zZm9ybSB0aGUga2V5IHZhbHVlIHBhaXIgaW50byB2YWx1ZSBiYXNlZCBwcmVzIG1vZGVsIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZVxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIFNlbGVjdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5hZGRUb1BhcmFtc0xpc3QgPSBmdW5jdGlvbiAoZmllbGROYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgdmFsdWVTZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbHNfMS5WYWx1ZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICAgIHZhciBtYXJrVmFsdWVzID0gW107XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB2YXIgdmFsdWVBcnIgPSB2YWx1ZTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtYXJrVmFsdWVzLnB1c2godmFsdWVBcnJbaV0udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBtYXJrVmFsdWVzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWVTZWxlY3Rpb25Nb2RlbC5xdWFsaWZpZWRGaWVsZENhcHRpb24gPSBmaWVsZE5hbWU7XG4gICAgICAgIHZhbHVlU2VsZWN0aW9uTW9kZWwuc2VsZWN0VmFsdWVzID0gbWFya1ZhbHVlcztcbiAgICAgICAgcmV0dXJuIHZhbHVlU2VsZWN0aW9uTW9kZWw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gdHJhbnNmb3JtIHRoZSBrZXkgdmFsdWUgcGFpciBpbnRvIHJhbmdlIGJhc2VkIHNlbGVjdGlvbiBwcmVzIG1vZGVsLlxuICAgICAqXG4gICAgICogVE9ETzogTmVlZCB0byBoYW5kbGUgdGhlIHBhcnNpbmcgb2YgZGF0ZSB0eXBlIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZVNlbGVjdGlvbk1vZGVsXG4gICAgICogQHBhcmFtIGZpZWxkTmFtZVxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIFNlbGVjdGlvblNlcnZpY2VJbXBsLnByb3RvdHlwZS5hZGRUb1JhbmdlUGFyYW1zTGlzdCA9IGZ1bmN0aW9uIChmaWVsZE5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciByYW5nZVNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsc18xLlJhbmdlU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5xdWFsaWZpZWRGaWVsZENhcHRpb24gPSBmaWVsZE5hbWU7XG4gICAgICAgIGlmICh2YWx1ZS5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5tYXggIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJhbmdlU2VsZWN0aW9uTW9kZWwubWF4VmFsdWUgPSB2YWx1ZS5tYXgudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUubWluICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubWluICE9PSBudWxsKSB7XG4gICAgICAgICAgICByYW5nZVNlbGVjdGlvbk1vZGVsLm1pblZhbHVlID0gdmFsdWUubWluLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmFuZ2VTZWxlY3Rpb25Nb2RlbC5pbmNsdWRlZCA9IHRoaXMudmFsaWRhdGVOdWxsT3B0aW9uVHlwZSh2YWx1ZS5udWxsT3B0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJhbmdlU2VsZWN0aW9uTW9kZWw7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIHNlbGVjdGlvbiB1cGRhdGUgdHlwZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZWxlY3Rpb25VcGRhdGVUeXBlXG4gICAgICovXG4gICAgU2VsZWN0aW9uU2VydmljZUltcGwucHJvdG90eXBlLnZhbGlkYXRlU2VsZWN0aW9uVXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChzZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgICAgIGlmIChzZWxlY3Rpb25VcGRhdGVUeXBlID09PSBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlcGxhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlcGxhY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc2VsZWN0aW9uVXBkYXRlVHlwZSA9PT0gQ29udHJhY3QuU2VsZWN0aW9uVXBkYXRlVHlwZS5BZGQpIHtcbiAgICAgICAgICAgIHJldHVybiBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5TZWxlY3Rpb25VcGRhdGVUeXBlLkFkZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWxlY3Rpb25VcGRhdGVUeXBlID09PSBDb250cmFjdC5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlbW92ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlNlbGVjdGlvblVwZGF0ZVR5cGUuUmVtb3ZlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcGlfaW50ZXJuYWxfY29udHJhY3RfMS5TZWxlY3Rpb25VcGRhdGVUeXBlLlJlcGxhY2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIGluY2x1ZGUgdHlwZSBmb3IgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG51bGxPcHRpb25cbiAgICAgKi9cbiAgICBTZWxlY3Rpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUudmFsaWRhdGVOdWxsT3B0aW9uVHlwZSA9IGZ1bmN0aW9uIChudWxsT3B0aW9uKSB7XG4gICAgICAgIGlmIChudWxsT3B0aW9uKSB7XG4gICAgICAgICAgICBpZiAobnVsbE9wdGlvbiA9PT0gQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbi5OdWxsVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobnVsbE9wdGlvbiA9PT0gQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbi5Ob25OdWxsVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlF1YW50aXRhdGl2ZUluY2x1ZGVkVmFsdWVzLkluY2x1ZGVOb25OdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobnVsbE9wdGlvbiA9PT0gQ29udHJhY3QuRmlsdGVyTnVsbE9wdGlvbi5BbGxWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUXVhbnRpdGF0aXZlSW5jbHVkZWRWYWx1ZXMuSW5jbHVkZUFsbDtcbiAgICB9O1xuICAgIHJldHVybiBTZWxlY3Rpb25TZXJ2aWNlSW1wbDtcbn0oKSk7XG5leHBvcnRzLlNlbGVjdGlvblNlcnZpY2VJbXBsID0gU2VsZWN0aW9uU2VydmljZUltcGw7XG4vKipcbiAqIEVudW0gZm9yIHRoZSBkaWZmZXJlbnQgc2VsZWN0aW9uIGNyaXRlcmlhIHR5cGVzLlxuICovXG52YXIgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlO1xuKGZ1bmN0aW9uIChTZWxlY3Rpb25Dcml0ZXJpYVR5cGUpIHtcbiAgICBTZWxlY3Rpb25Dcml0ZXJpYVR5cGVbU2VsZWN0aW9uQ3JpdGVyaWFUeXBlW1wiSGllcmFyY2hpY2FsVHlwZVwiXSA9IDFdID0gXCJIaWVyYXJjaGljYWxUeXBlXCI7XG4gICAgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlW1NlbGVjdGlvbkNyaXRlcmlhVHlwZVtcIlJhbmdlVHlwZVwiXSA9IDJdID0gXCJSYW5nZVR5cGVcIjtcbiAgICBTZWxlY3Rpb25Dcml0ZXJpYVR5cGVbU2VsZWN0aW9uQ3JpdGVyaWFUeXBlW1wiRGltZW5zaW9uVHlwZVwiXSA9IDNdID0gXCJEaW1lbnNpb25UeXBlXCI7XG4gICAgU2VsZWN0aW9uQ3JpdGVyaWFUeXBlW1NlbGVjdGlvbkNyaXRlcmlhVHlwZVtcIlR1cGxlc1R5cGVcIl0gPSA0XSA9IFwiVHVwbGVzVHlwZVwiO1xufSkoU2VsZWN0aW9uQ3JpdGVyaWFUeXBlIHx8IChTZWxlY3Rpb25Dcml0ZXJpYVR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VsZWN0aW9uU2VydmljZUltcGwuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL1NlcnZpY2VzL2ltcGwvU2VsZWN0aW9uU2VydmljZUltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSAzOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogU2VsZWN0aW9uIE1vZGVsLlxuICovXG52YXIgU2VsZWN0aW9uTW9kZWwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNlbGVjdGlvbk1vZGVsKCkge1xuICAgIH1cbiAgICByZXR1cm4gU2VsZWN0aW9uTW9kZWw7XG59KCkpO1xuZXhwb3J0cy5TZWxlY3Rpb25Nb2RlbCA9IFNlbGVjdGlvbk1vZGVsO1xuLyoqXG4gKiBWYWx1ZSBiYXNlZCBzZWxlY3Rpb24gbW9kZWwuIE1lYW50IGZvciBoaWVyYXJjaGljYWwsIHJhbmdlIGFuZCBjYXRlZ29yaWNhbCBzZWxlY3Rpb25zLlxuICovXG52YXIgVmFsdWVTZWxlY3Rpb25Nb2RlbCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFZhbHVlU2VsZWN0aW9uTW9kZWwsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVmFsdWVTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnNlbGVjdFZhbHVlcyA9IFtdO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBWYWx1ZVNlbGVjdGlvbk1vZGVsO1xufShTZWxlY3Rpb25Nb2RlbCkpO1xuZXhwb3J0cy5WYWx1ZVNlbGVjdGlvbk1vZGVsID0gVmFsdWVTZWxlY3Rpb25Nb2RlbDtcbi8qKlxuICogSGllcmFyY2hpY2FsIHZhbHVlIHNlbGVjdGlvbiBtb2RlbFxuICovXG52YXIgSGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWwgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gSGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWw7XG59KFZhbHVlU2VsZWN0aW9uTW9kZWwpKTtcbmV4cG9ydHMuSGllcmFyY2hpY2FsU2VsZWN0aW9uTW9kZWwgPSBIaWVyYXJjaGljYWxTZWxlY3Rpb25Nb2RlbDtcbi8qKlxuICogUmFuZ2UgYmFzZWQgdmFsdWUgc2VsZWN0aW9uIG1vZGVsXG4gKi9cbnZhciBSYW5nZVNlbGVjdGlvbk1vZGVsID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUmFuZ2VTZWxlY3Rpb25Nb2RlbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSYW5nZVNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBSYW5nZVNlbGVjdGlvbk1vZGVsO1xufShTZWxlY3Rpb25Nb2RlbCkpO1xuZXhwb3J0cy5SYW5nZVNlbGVjdGlvbk1vZGVsID0gUmFuZ2VTZWxlY3Rpb25Nb2RlbDtcbi8qKlxuICogRGltZW5zaW9uIHZhbHVlIHNlbGVjdGlvbiBtb2RlbFxuICovXG52YXIgRGltZW5zaW9uU2VsZWN0aW9uTW9kZWwgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gRGltZW5zaW9uU2VsZWN0aW9uTW9kZWw7XG59KFZhbHVlU2VsZWN0aW9uTW9kZWwpKTtcbmV4cG9ydHMuRGltZW5zaW9uU2VsZWN0aW9uTW9kZWwgPSBEaW1lbnNpb25TZWxlY3Rpb25Nb2RlbDtcbi8qKlxuICogVHVwbGUgYmFzZWQgc2VsZWN0aW9uIG1vZGVsXG4gKi9cbnZhciBUdXBsZVNlbGVjdGlvbk1vZGVsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUdXBsZVNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICB0aGlzLm9iamVjdElkcyA9IFtdO1xuICAgIH1cbiAgICByZXR1cm4gVHVwbGVTZWxlY3Rpb25Nb2RlbDtcbn0oKSk7XG5leHBvcnRzLlR1cGxlU2VsZWN0aW9uTW9kZWwgPSBUdXBsZVNlbGVjdGlvbk1vZGVsO1xuLyoqXG4gKiBDb250YWluZXIgY2xhc3MgdG8gcG9wdWxhdGUgYWxsIHRoZSBzZWxlY3Rpb24gbW9kZWxzIHdoZW4gcGFyc2luZyBpbnB1dFxuICovXG52YXIgU2VsZWN0aW9uTW9kZWxzQ29udGFpbmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXIoKSB7XG4gICAgICAgIHRoaXMuaGllck1vZGVsQXJyID0gW107XG4gICAgICAgIHRoaXMuZGltTW9kZWxBcnIgPSBbXTtcbiAgICAgICAgdGhpcy5xdWFudE1vZGVsQXJyID0gW107XG4gICAgfVxuICAgIHJldHVybiBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXI7XG59KCkpO1xuZXhwb3J0cy5TZWxlY3Rpb25Nb2RlbHNDb250YWluZXIgPSBTZWxlY3Rpb25Nb2RlbHNDb250YWluZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZWxlY3Rpb25Nb2RlbHMuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiBEOi9kZXYvanMtYXBpL2FwaS1zaGFyZWQvbGliL01vZGVscy9TZWxlY3Rpb25Nb2RlbHMuanNcbiAqKiBtb2R1bGUgaWQgPSA0MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBTaGVldF8xID0gcmVxdWlyZShcIi4vU2hlZXRcIik7XG52YXIgRGFzaGJvYXJkID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRGFzaGJvYXJkLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERhc2hib2FyZChfZGFzaGJvYXJkSW1wbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfZGFzaGJvYXJkSW1wbCkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX2Rhc2hib2FyZEltcGwgPSBfZGFzaGJvYXJkSW1wbDtcbiAgICAgICAgX2Rhc2hib2FyZEltcGwuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKF90aGlzKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGFzaGJvYXJkLnByb3RvdHlwZSwgXCJ3b3Jrc2hlZXRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkSW1wbC53b3Jrc2hlZXRzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGFzaGJvYXJkLnByb3RvdHlwZSwgXCJvYmplY3RzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkSW1wbC5vYmplY3RzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRGFzaGJvYXJkO1xufShTaGVldF8xLlNoZWV0KSk7XG5leHBvcnRzLkRhc2hib2FyZCA9IERhc2hib2FyZDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhc2hib2FyZC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9EYXNoYm9hcmQuanNcbiAqKiBtb2R1bGUgaWQgPSA0MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbnZhciBTaGVldCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNoZWV0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNoZWV0KF9zaGVldEltcGwpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX3NoZWV0SW1wbCA9IF9zaGVldEltcGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNoZWV0LnByb3RvdHlwZSwgXCJuYW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaGVldC5wcm90b3R5cGUsIFwic2hlZXRUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLnNoZWV0VHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNoZWV0LnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLnNpemU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFNoZWV0LnByb3RvdHlwZS5maW5kUGFyYW1ldGVyQXN5bmMgPSBmdW5jdGlvbiAocGFyYW1ldGVyTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbXBsLmZpbmRQYXJhbWV0ZXJBc3luYyhwYXJhbWV0ZXJOYW1lLCB0aGlzKTtcbiAgICB9O1xuICAgIFNoZWV0LnByb3RvdHlwZS5nZXRQYXJhbWV0ZXJzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaGVldEltcGwuZ2V0UGFyYW1ldGVyc0FzeW5jKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0O1xufShhcGlfc2hhcmVkXzEuRXZlbnRMaXN0ZW5lck1hbmFnZXIpKTtcbmV4cG9ydHMuU2hlZXQgPSBTaGVldDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNoZWV0LmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL1NoZWV0LmpzXG4gKiogbW9kdWxlIGlkID0gNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgRGFzaGJvYXJkQ29udGVudCBuYW1lc3BhY2UuXG4gKiBUaGlzIGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIERhc2hib2FyZENvbnRlbnQgaXNcbiAqIGN1cnJlbnRseSBqdXN0IGEgKHNpbmdsZSkgcHJvcGVydHkgYmFnLlxuICovXG52YXIgRGFzaGJvYXJkQ29udGVudCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGFzaGJvYXJkQ29udGVudChfZGFzaGJvYXJkKSB7XG4gICAgICAgIHRoaXMuX2Rhc2hib2FyZCA9IF9kYXNoYm9hcmQ7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXNoYm9hcmRDb250ZW50LnByb3RvdHlwZSwgXCJkYXNoYm9hcmRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXNoYm9hcmRDb250ZW50O1xufSgpKTtcbmV4cG9ydHMuRGFzaGJvYXJkQ29udGVudCA9IERhc2hib2FyZENvbnRlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRDb250ZW50LmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL05hbWVzcGFjZXMvRGFzaGJvYXJkQ29udGVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDQzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIGVudmlyb25tZW50IG5hbWVzcGFjZS5cbiAqIEVudmlyb25tZW50IGRvZXMgbm90IGZvbGxvdyB0aGUgSW1wbCBwYXR0ZXJuIGFzIGl0IGlzXG4gKiBqdXN0IGEgcHJvcGVydHkgYmFnLlxuICovXG52YXIgRW52aXJvbm1lbnQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudmlyb25tZW50KGFkZEluRW52aXJvbm1lbnQpIHtcbiAgICAgICAgdGhpcy5fYXBpVmVyc2lvbiA9IGFkZEluRW52aXJvbm1lbnQuYXBpVmVyc2lvbjtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGFwaV9zaGFyZWRfMS5JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuYWRkSW5Db250ZXh0LmNvbnZlcnQoYWRkSW5FbnZpcm9ubWVudC5hZGRJbkNvbnRleHQpO1xuICAgICAgICB0aGlzLl9sYW5ndWFnZSA9IGFkZEluRW52aXJvbm1lbnQuYWRkSW5MYW5ndWFnZTtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gYWRkSW5FbnZpcm9ubWVudC5hZGRJbkxvY2FsZTtcbiAgICAgICAgdGhpcy5fbW9kZSA9IGFwaV9zaGFyZWRfMS5JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuYWRkSW5Nb2RlLmNvbnZlcnQoYWRkSW5FbnZpcm9ubWVudC5hZGRJbk1vZGUpO1xuICAgICAgICB0aGlzLl9vcGVyYXRpbmdTeXN0ZW0gPSBhZGRJbkVudmlyb25tZW50Lm9wZXJhdGluZ1N5c3RlbTtcbiAgICAgICAgdGhpcy5fdGFibGVhdVZlcnNpb24gPSBhZGRJbkVudmlyb25tZW50LnRhYmxlYXVWZXJzaW9uO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW52aXJvbm1lbnQucHJvdG90eXBlLCBcImFwaVZlcnNpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hcGlWZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW52aXJvbm1lbnQucHJvdG90eXBlLCBcImNvbnRleHRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW52aXJvbm1lbnQucHJvdG90eXBlLCBcImxhbmd1YWdlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbnZpcm9ubWVudC5wcm90b3R5cGUsIFwibG9jYWxlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW52aXJvbm1lbnQucHJvdG90eXBlLCBcIm1vZGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRW52aXJvbm1lbnQucHJvdG90eXBlLCBcIm9wZXJhdGluZ1N5c3RlbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdGluZ1N5c3RlbTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVudmlyb25tZW50LnByb3RvdHlwZSwgXCJ0YWJsZWF1VmVyc2lvblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlYXVWZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRW52aXJvbm1lbnQ7XG59KCkpO1xuZXhwb3J0cy5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW52aXJvbm1lbnQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvTmFtZXNwYWNlcy9FbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDQ0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dGVybmFsIHNldHRpbmdzIG5hbWVzcGFjZS5cbiAqL1xudmFyIFNldHRpbmdzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXR0aW5ncyhzZXR0aW5nc0ltcGwpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0ltcGwgPSBzZXR0aW5nc0ltcGw7XG4gICAgfVxuICAgIFNldHRpbmdzLnByb3RvdHlwZS5lcmFzZSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5nc0ltcGwuZXJhc2Uoa2V5KTtcbiAgICB9O1xuICAgIFNldHRpbmdzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXQoa2V5KTtcbiAgICB9O1xuICAgIFNldHRpbmdzLnByb3RvdHlwZS5nZXRBbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5nZXRBbGwoKTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXR0aW5ncy5wcm90b3R5cGUsIFwiaXNNb2RpZmllZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3NJbXBsLmlzTW9kaWZpZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFNldHRpbmdzLnByb3RvdHlwZS5zYXZlQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzSW1wbC5zYXZlQXN5bmMoKTtcbiAgICB9O1xuICAgIFNldHRpbmdzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldHRpbmdzSW1wbC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gU2V0dGluZ3M7XG59KCkpO1xuZXhwb3J0cy5TZXR0aW5ncyA9IFNldHRpbmdzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2V0dGluZ3MuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvTmFtZXNwYWNlcy9TZXR0aW5ncy5qc1xuICoqIG1vZHVsZSBpZCA9IDQ1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbnZhciBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsXzEgPSByZXF1aXJlKFwiLi9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGxcIik7XG52YXIgU2V0dGluZ3NTZXJ2aWNlSW1wbF8xID0gcmVxdWlyZShcIi4vSW1wbC9TZXR0aW5nc1NlcnZpY2VJbXBsXCIpO1xuZnVuY3Rpb24gcmVnaXN0ZXJBbGxBZGRJblNlcnZpY2VzKGRpc3BhdGNoZXIpIHtcbiAgICBhcGlfc2hhcmVkXzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLnJlZ2lzdGVyU2VydmljZShuZXcgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbF8xLkluaXRpYWxpemF0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikpO1xuICAgIGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UucmVnaXN0ZXJTZXJ2aWNlKG5ldyBTZXR0aW5nc1NlcnZpY2VJbXBsXzEuU2V0dGluZ3NTZXJ2aWNlSW1wbChkaXNwYXRjaGVyKSk7XG59XG5leHBvcnRzLnJlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcyA9IHJlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2lzdGVyQWxsQWRkSW5TZXJ2aWNlcy5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9TZXJ2aWNlcy9SZWdpc3RlckFsbEFkZEluU2VydmljZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA0NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIEluaXRpYWxpemF0aW9uU2VydmljZUltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEluaXRpYWxpemF0aW9uU2VydmljZUltcGwoZGlzcGF0Y2hlcikge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUsIFwic2VydmljZU5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIkluaXRpYWxpemF0aW9uU2VydmljZVwiIC8qIEluaXRpYWxpemF0aW9uU2VydmljZSAqLztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC5wcm90b3R5cGUuaW5pdGlhbGl6ZURhc2hib2FyZEFkZEluQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIFdlIGRvbid0IG5lZWQgYW55IHBhcmFtZXRlcnMgZm9yIHRoaXMgY2FsbCBiZWNhdXNlIHRoZXkgYXJlIGFkZGVkIGluIGZvciB1cyBieSB0aGUgZGlzcGF0Y2hlclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaGVyLmV4ZWN1dGUoYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuVmVyYklkLkluaXRpYWxpemVBZGRJbiwge30pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAvLyBUT0RPIC0gVmFsaWRhdGUgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gSW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbDtcbn0oKSk7XG5leHBvcnRzLkluaXRpYWxpemF0aW9uU2VydmljZUltcGwgPSBJbml0aWFsaXphdGlvblNlcnZpY2VJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW5pdGlhbGl6YXRpb25TZXJ2aWNlSW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9TZXJ2aWNlcy9JbXBsL0luaXRpYWxpemF0aW9uU2VydmljZUltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA0N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFNldHRpbmdzU2VydmljZUltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNldHRpbmdzU2VydmljZUltcGwoZGlzcGF0Y2hlcikge1xuICAgICAgICB0aGlzLmRpc3BhdGNoZXIgPSBkaXNwYXRjaGVyO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0dGluZ3NTZXJ2aWNlSW1wbC5wcm90b3R5cGUsIFwic2VydmljZU5hbWVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlNldHRpbmdzU2VydmljZVwiIC8qIFNldHRpbmdzU2VydmljZSAqLztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU2V0dGluZ3NTZXJ2aWNlSW1wbC5wcm90b3R5cGUuc2F2ZVNldHRpbmdzQXN5bmMgPSBmdW5jdGlvbiAoc2V0dGluZ3MpIHtcbiAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSAoX2EgPSB7fSwgX2FbYXBpX2ludGVybmFsX2NvbnRyYWN0XzEuUGFyYW1ldGVySWQuU2V0dGluZ3NWYWx1ZXNdID0gc2V0dGluZ3MsIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hlci5leGVjdXRlKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLlZlcmJJZC5TYXZlQWRkSW5TZXR0aW5ncywgcGFyYW1ldGVycykudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB2YWx1ZS5yZXN1bHQ7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdCB8fCAhcmVzdWx0LnNldHRpbmdzVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvciBzYXZpbmcgc2V0dGluZ3MuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKHJlc3VsdC5zZXR0aW5nc1ZhbHVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX2E7XG4gICAgfTtcbiAgICByZXR1cm4gU2V0dGluZ3NTZXJ2aWNlSW1wbDtcbn0oKSk7XG5leHBvcnRzLlNldHRpbmdzU2VydmljZUltcGwgPSBTZXR0aW5nc1NlcnZpY2VJbXBsO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2V0dGluZ3NTZXJ2aWNlSW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9TZXJ2aWNlcy9JbXBsL1NldHRpbmdzU2VydmljZUltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgYWRkaW4gbGlicmFyeVxuICovXG52YXIgVmVyc2lvbk51bWJlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgLy8gcHJpdmF0ZSBjb25zdHJ1Y3RvciBzbyBldmVyeW9uZSB1c2VzIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICBmdW5jdGlvbiBWZXJzaW9uTnVtYmVyKHZlcnNpb25TdHJpbmcpIHtcbiAgICAgICAgdmFyIHBhcnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gcGFyc2VJbnQocCwgMTApOyB9KTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZlcnNpb24gbnVtYmVyOiAnICsgdmVyc2lvblN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWFqb3IgPSBwYXJ0c1swXTtcbiAgICAgICAgdGhpcy5fbWlub3IgPSBwYXJ0c1sxXTtcbiAgICAgICAgdGhpcy5fZml4ID0gcGFydHNbMl07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWZXJzaW9uTnVtYmVyLCBcIkluc3RhbmNlXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgdmVyc2lvbiBudW1iZXIuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBWZXJzaW9uTnVtYmVyLl9pbnN0YW5jZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZlcnNpb25OdW1iZXIucHJvdG90eXBlLCBcIm1ham9yXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFqb3I7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWZXJzaW9uTnVtYmVyLnByb3RvdHlwZSwgXCJtaW5vclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21pbm9yO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVmVyc2lvbk51bWJlci5wcm90b3R5cGUsIFwiZml4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZml4O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICAvLyBVc2luZyBzb21lIHdlYnBhY2sgdHJpY2tzLCB3ZSBjYW4gaW5qZWN0IHRoaXMgdmVyc2lvbiBpbnRvIG91ciBjb2RlIChraW5kYSBsaWtlIGMrKyBwcmVwcm9jZXNzb3Igc3R1ZmYpXG4gICAgVmVyc2lvbk51bWJlci5faW5zdGFuY2UgPSBuZXcgVmVyc2lvbk51bWJlcihBRERJTl9BUElfVkVSU0lPTl9OVU1CRVIpO1xuICAgIHJldHVybiBWZXJzaW9uTnVtYmVyO1xufSgpKTtcbmV4cG9ydHMuVmVyc2lvbk51bWJlciA9IFZlcnNpb25OdW1iZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1WZXJzaW9uTnVtYmVyLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL1ZlcnNpb25OdW1iZXIuanNcbiAqKiBtb2R1bGUgaWQgPSA0OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDb250cmFjdCA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV9zaGFyZWRfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktc2hhcmVkXCIpO1xudmFyIERhc2hib2FyZE9iamVjdF8xID0gcmVxdWlyZShcIi4uL0Rhc2hib2FyZE9iamVjdFwiKTtcbnZhciBXb3Jrc2hlZXRfMSA9IHJlcXVpcmUoXCIuLi9Xb3Jrc2hlZXRcIik7XG52YXIgU2hlZXRJbXBsXzEgPSByZXF1aXJlKFwiLi9TaGVldEltcGxcIik7XG52YXIgU2hlZXRJbmZvSW1wbF8xID0gcmVxdWlyZShcIi4vU2hlZXRJbmZvSW1wbFwiKTtcbnZhciBXb3Jrc2hlZXRJbXBsXzEgPSByZXF1aXJlKFwiLi9Xb3Jrc2hlZXRJbXBsXCIpO1xudmFyIERhc2hib2FyZEltcGwgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEYXNoYm9hcmRJbXBsLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIERhc2hib2FyZEltcGwoX2luZm8sIF9zaGVldFBhdGgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbmV3IFNoZWV0SW5mb0ltcGxfMS5TaGVldEluZm9JbXBsKF9pbmZvLm5hbWUsIENvbnRyYWN0LlNoZWV0VHlwZS5EYXNoYm9hcmQsIG5ldyBhcGlfc2hhcmVkXzEuU2l6ZShfaW5mby5zaXplLmgsIF9pbmZvLnNpemUudykpKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5faW5mbyA9IF9pbmZvO1xuICAgICAgICBfdGhpcy5fc2hlZXRQYXRoID0gX3NoZWV0UGF0aDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGFzaGJvYXJkSW1wbC5wcm90b3R5cGUsIFwid29ya3NoZWV0c1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldHM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXNoYm9hcmRJbXBsLnByb3RvdHlwZSwgXCJvYmplY3RzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0cztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRGFzaGJvYXJkSW1wbC5wcm90b3R5cGUuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzID0gZnVuY3Rpb24gKGRhc2hib2FyZCkge1xuICAgICAgICB0aGlzLl93b3Jrc2hlZXRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHRoaXMuX29iamVjdHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgLy8gUHJvY2VzcyBhbGwgdGhlIHpvbmVzIHdoaWNoIGFyZSBjb250YWluZWQgaW4gdGhpcyBkYXNoYm9hcmRcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHRoaXMuX2luZm8uem9uZXM7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgem9uZSA9IF9hW19pXTtcbiAgICAgICAgICAgIHZhciB3b3Jrc2hlZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgem9uZVNpemUgPSBuZXcgYXBpX3NoYXJlZF8xLlNpemUoem9uZS5oZWlnaHQsIHpvbmUud2lkdGgpO1xuICAgICAgICAgICAgaWYgKHpvbmUuem9uZVR5cGUgPT09IGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLkRhc2hib2FyZE9iamVjdFR5cGUuV29ya3NoZWV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHNoZWV0SW5mbyA9IG5ldyBTaGVldEluZm9JbXBsXzEuU2hlZXRJbmZvSW1wbCh6b25lLm5hbWUsIENvbnRyYWN0LlNoZWV0VHlwZS5Xb3Jrc2hlZXQsIHpvbmVTaXplKTtcbiAgICAgICAgICAgICAgICB2YXIgdml6SWQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtzaGVldDogem9uZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmQ6IHRoaXMuX2luZm8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc3Rvcnlib2FyZDogdGhpcy5fc2hlZXRQYXRoLnN0b3J5Ym9hcmQsXG4gICAgICAgICAgICAgICAgICAgIGZsaXBib2FyZFpvbmVJRDogdGhpcy5fc2hlZXRQYXRoLmZsaXBib2FyZFpvbmVJRCxcbiAgICAgICAgICAgICAgICAgICAgc3RvcnlQb2ludElEOiB0aGlzLl9zaGVldFBhdGguc3RvcnlQb2ludElEXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgd29ya3NoZWV0SW1wbCA9IG5ldyBXb3Jrc2hlZXRJbXBsXzEuV29ya3NoZWV0SW1wbChzaGVldEluZm8sIHZpeklkLCBkYXNoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHdvcmtzaGVldCA9IG5ldyBXb3Jrc2hlZXRfMS5Xb3Jrc2hlZXQod29ya3NoZWV0SW1wbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd29ya3NoZWV0cy5wdXNoKHdvcmtzaGVldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgem9uZVBvaW50ID0gbmV3IGFwaV9zaGFyZWRfMS5Qb2ludCh6b25lLngsIHpvbmUueSk7XG4gICAgICAgICAgICB2YXIgZGFzaGJvYXJkT2JqZWN0ID0gbmV3IERhc2hib2FyZE9iamVjdF8xLkRhc2hib2FyZE9iamVjdChkYXNoYm9hcmQsIGFwaV9zaGFyZWRfMS5JbnRlcm5hbFRvRXh0ZXJuYWxFbnVtTWFwcGluZ3MuZGFzaGJvYXJkT2JqZWN0VHlwZS5jb252ZXJ0KHpvbmUuem9uZVR5cGUpLCB6b25lUG9pbnQsIHpvbmVTaXplLCB3b3Jrc2hlZXQpO1xuICAgICAgICAgICAgdGhpcy5fb2JqZWN0cy5wdXNoKGRhc2hib2FyZE9iamVjdCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBEYXNoYm9hcmRJbXBsO1xufShTaGVldEltcGxfMS5TaGVldEltcGwpKTtcbmV4cG9ydHMuRGFzaGJvYXJkSW1wbCA9IERhc2hib2FyZEltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXNoYm9hcmRJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL0ludGVybmFsL0Rhc2hib2FyZEltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA1MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXNoYm9hcmQgb2JqZWN0cyAtIHRoZSB6b25lcyBpbiBhIGRhc2hib2FyZC5cbiAqIFRoaXMgZG9lcyBub3QgZm9sbG93IHRoZSBJbXBsIHBhdHRlcm4gYXMgaXQgaXMganVzdCBhIHByb3BlcnR5IGJhZy5cbiAqL1xudmFyIERhc2hib2FyZE9iamVjdCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGFzaGJvYXJkT2JqZWN0KF9kYXNoYm9hcmQsIF90eXBlLCBfcG9zaXRpb24sIF9zaXplLCBfd29ya3NoZWV0KSB7XG4gICAgICAgIHRoaXMuX2Rhc2hib2FyZCA9IF9kYXNoYm9hcmQ7XG4gICAgICAgIHRoaXMuX3R5cGUgPSBfdHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBfcG9zaXRpb247XG4gICAgICAgIHRoaXMuX3NpemUgPSBfc2l6ZTtcbiAgICAgICAgdGhpcy5fd29ya3NoZWV0ID0gX3dvcmtzaGVldDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhc2hib2FyZE9iamVjdC5wcm90b3R5cGUsIFwiZGFzaGJvYXJkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGFzaGJvYXJkT2JqZWN0LnByb3RvdHlwZSwgXCJ0eXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhc2hib2FyZE9iamVjdC5wcm90b3R5cGUsIFwicG9zaXRpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhc2hib2FyZE9iamVjdC5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXNoYm9hcmRPYmplY3QucHJvdG90eXBlLCBcIndvcmtzaGVldFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIERhc2hib2FyZE9iamVjdDtcbn0oKSk7XG5leHBvcnRzLkRhc2hib2FyZE9iamVjdCA9IERhc2hib2FyZE9iamVjdDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhc2hib2FyZE9iamVjdC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9EYXNoYm9hcmRPYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSA1MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBTaGVldF8xID0gcmVxdWlyZShcIi4vU2hlZXRcIik7XG52YXIgV29ya3NoZWV0ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoV29ya3NoZWV0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFdvcmtzaGVldChfd29ya3NoZWV0SW1wbCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfd29ya3NoZWV0SW1wbCkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX3dvcmtzaGVldEltcGwgPSBfd29ya3NoZWV0SW1wbDtcbiAgICAgICAgLy8gQ2FsbCB0byBpbml0aWFsaXplIGV2ZW50cyBhbmQgdGhlbiBjYWxsIGRvd24gdG8gdGhlIGV2ZW50IGxpc3RlbmVyIG1hbmFnZXIgdG8gaGFuZGxlIHRoaW5nc1xuICAgICAgICBfdGhpcy5fd29ya3NoZWV0SW1wbC5pbml0aWFsaXplRXZlbnRzKF90aGlzKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7IHJldHVybiBfdGhpcy5hZGROZXdFdmVudFR5cGUoZSk7IH0pO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXb3Jrc2hlZXQucHJvdG90eXBlLCBcInBhcmVudERhc2hib2FyZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwucGFyZW50RGFzaGJvYXJkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBXb3Jrc2hlZXQucHJvdG90eXBlLmFwcGx5RmlsdGVyQXN5bmMgPSBmdW5jdGlvbiAoZmllbGROYW1lLCB2YWx1ZXMsIHVwZGF0ZVR5cGUsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlGaWx0ZXJBc3luYyhmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXQucHJvdG90eXBlLmFwcGx5UmFuZ2VGaWx0ZXJBc3luYyA9IGZ1bmN0aW9uIChmaWVsZE5hbWUsIGZpbHRlck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuYXBwbHlSYW5nZUZpbHRlckFzeW5jKGZpZWxkTmFtZSwgZmlsdGVyT3B0aW9ucyk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXQucHJvdG90eXBlLmNsZWFyRmlsdGVyQXN5bmMgPSBmdW5jdGlvbiAoZmllbGROYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmNsZWFyRmlsdGVyQXN5bmMoZmllbGROYW1lKTtcbiAgICB9O1xuICAgIFdvcmtzaGVldC5wcm90b3R5cGUuZ2V0QW5hbHl0aWNPYmplY3RzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQVBJIGNhbGwgbm90IHlldCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9O1xuICAgIFdvcmtzaGVldC5wcm90b3R5cGUuZ2V0RGF0YVNvdXJjZXNBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0RGF0YVNvdXJjZXNBc3luYygpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5nZXRFbmNvZGluZ3NBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5nZXRGaWx0ZXJzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldEZpbHRlcnNBc3luYygpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5nZXRTZWxlY3RlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldFNlbGVjdGVkTWFya3NBc3luYygpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldEhpZ2hsaWdodGVkTWFya3NBc3luYygpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5nZXRTdW1tYXJ5RGF0YUFzeW5jID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzaGVldEltcGwuZ2V0U3VtbWFyeURhdGFBc3luYyhvcHRpb25zKTtcbiAgICB9O1xuICAgIFdvcmtzaGVldC5wcm90b3R5cGUuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLmdldFVuZGVybHlpbmdEYXRhQXN5bmMob3B0aW9ucyk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXQucHJvdG90eXBlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NoZWV0SW1wbC5jbGVhclNlbGVjdGVkTWFya3NBc3luYygpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5zZWxlY3RNYXJrc0J5SURBc3luYyA9IGZ1bmN0aW9uIChtYXJrc0luZm8sIHVwZGF0ZVR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgY2FsbCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5zZWxlY3RNYXJrc0J5VmFsdWVBc3luYyA9IGZ1bmN0aW9uIChzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLnNlbGVjdE1hcmtzQnlWYWx1ZUFzeW5jKHNlbGVjdGlvbnMsIHNlbGVjdGlvblVwZGF0ZVR5cGUpO1xuICAgIH07XG4gICAgV29ya3NoZWV0LnByb3RvdHlwZS5zZWxlY3RNYXJrc0J5SWRBc3luYyA9IGZ1bmN0aW9uIChzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc2hlZXRJbXBsLnNlbGVjdE1hcmtzQnlJZEFzeW5jKHNlbGVjdGlvbnMsIHNlbGVjdGlvblVwZGF0ZVR5cGUpO1xuICAgIH07XG4gICAgcmV0dXJuIFdvcmtzaGVldDtcbn0oU2hlZXRfMS5TaGVldCkpO1xuZXhwb3J0cy5Xb3Jrc2hlZXQgPSBXb3Jrc2hlZXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Xb3Jrc2hlZXQuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvV29ya3NoZWV0LmpzXG4gKiogbW9kdWxlIGlkID0gNTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9zaGFyZWRfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktc2hhcmVkXCIpO1xudmFyIFNoZWV0SW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2hlZXRJbXBsKF9zaGVldEluZm9JbXBsKSB7XG4gICAgICAgIHRoaXMuX3NoZWV0SW5mb0ltcGwgPSBfc2hlZXRJbmZvSW1wbDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNoZWV0SW1wbC5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwubmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNoZWV0SW1wbC5wcm90b3R5cGUsIFwic2hlZXRUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbmZvSW1wbC5zaGVldFR5cGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaGVldEltcGwucHJvdG90eXBlLCBcInNoZWV0UGF0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NoZWV0SW5mb0ltcGwuc2hlZXRQYXRoO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2hlZXRJbXBsLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2hlZXRJbmZvSW1wbC5zaGVldFNpemU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFNoZWV0SW1wbC5wcm90b3R5cGUuZmluZFBhcmFtZXRlckFzeW5jID0gZnVuY3Rpb24gKHBhcmFtZXRlck5hbWUsIHNoZWV0KSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwicGFyYW1ldGVycy1zZXJ2aWNlXCIgLyogUGFyYW1ldGVycyAqLyk7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlLmZpbmRQYXJhbWV0ZXJCeU5hbWVBc3luYyhwYXJhbWV0ZXJOYW1lLCBzaGVldCk7XG4gICAgfTtcbiAgICBTaGVldEltcGwucHJvdG90eXBlLmdldFBhcmFtZXRlcnNBc3luYyA9IGZ1bmN0aW9uIChzaGVldCkge1xuICAgICAgICB2YXIgc2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcInBhcmFtZXRlcnMtc2VydmljZVwiIC8qIFBhcmFtZXRlcnMgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRQYXJhbWV0ZXJzRm9yU2hlZXRBc3luYyh0aGlzLnNoZWV0UGF0aCwgc2hlZXQpO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0SW1wbDtcbn0oKSk7XG5leHBvcnRzLlNoZWV0SW1wbCA9IFNoZWV0SW1wbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNoZWV0SW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9JbnRlcm5hbC9TaGVldEltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA1M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBpX2V4dGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWV4dGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIFNoZWV0SW5mb0ltcGwgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNoZWV0SW5mb0ltcGwoX25hbWUsIF9zaGVldFR5cGUsIF9zaGVldFNpemUpIHtcbiAgICAgICAgdGhpcy5fbmFtZSA9IF9uYW1lO1xuICAgICAgICB0aGlzLl9zaGVldFR5cGUgPSBfc2hlZXRUeXBlO1xuICAgICAgICB0aGlzLl9zaGVldFNpemUgPSBfc2hlZXRTaXplO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2hlZXRJbmZvSW1wbC5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaGVldEluZm9JbXBsLnByb3RvdHlwZSwgXCJzaGVldFNpemVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaGVldFNpemU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaGVldEluZm9JbXBsLnByb3RvdHlwZSwgXCJzaGVldFR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaGVldFR5cGU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTaGVldEluZm9JbXBsLnByb3RvdHlwZSwgXCJzaGVldFBhdGhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2hlZXROYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgaXNEYXNoYm9hcmQ6IHRoaXMuc2hlZXRUeXBlID09PSBhcGlfZXh0ZXJuYWxfY29udHJhY3RfMS5TaGVldFR5cGUuRGFzaGJvYXJkXG4gICAgICAgICAgICAgICAgLy8gVE9ETyAtIFN0b3JpZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBTaGVldEluZm9JbXBsO1xufSgpKTtcbmV4cG9ydHMuU2hlZXRJbmZvSW1wbCA9IFNoZWV0SW5mb0ltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGVldEluZm9JbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL0ludGVybmFsL1NoZWV0SW5mb0ltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA1NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBDb250cmFjdCA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktZXh0ZXJuYWwtY29udHJhY3RcIik7XG52YXIgYXBpX2ludGVybmFsX2NvbnRyYWN0XzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLWludGVybmFsLWNvbnRyYWN0XCIpO1xudmFyIGFwaV9zaGFyZWRfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktc2hhcmVkXCIpO1xudmFyIERhdGFTb3VyY2VfMSA9IHJlcXVpcmUoXCIuLi9EYXRhU291cmNlXCIpO1xudmFyIERhdGFTb3VyY2VJbXBsXzEgPSByZXF1aXJlKFwiLi9EYXRhU291cmNlSW1wbFwiKTtcbnZhciBTaGVldEltcGxfMSA9IHJlcXVpcmUoXCIuL1NoZWV0SW1wbFwiKTtcbnZhciB2aXN1YWxJZHNBcmVFcXVhbCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEgJiYgYiAmJlxuICAgICAgICBhLndvcmtzaGVldCA9PT0gYi53b3Jrc2hlZXQgJiZcbiAgICAgICAgYS5kYXNoYm9hcmQgPT09IGIuZGFzaGJvYXJkICYmXG4gICAgICAgIGEuc3Rvcnlib2FyZCA9PT0gYi5zdG9yeWJvYXJkICYmXG4gICAgICAgIGEuc3RvcnlQb2ludElEID09PSBiLnN0b3J5UG9pbnRJRCAmJlxuICAgICAgICBhLmZsaXBib2FyZFpvbmVJRCA9PT0gYi5mbGlwYm9hcmRab25lSUQ7XG59O1xudmFyIFdvcmtzaGVldEltcGwgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhXb3Jrc2hlZXRJbXBsLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFdvcmtzaGVldEltcGwoc2hlZXRJbmZvSW1wbCwgX3Zpc3VhbElkLCBfcGFyZW50RGFzaGJvYXJkKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNoZWV0SW5mb0ltcGwpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl92aXN1YWxJZCA9IF92aXN1YWxJZDtcbiAgICAgICAgX3RoaXMuX3BhcmVudERhc2hib2FyZCA9IF9wYXJlbnREYXNoYm9hcmQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdvcmtzaGVldEltcGwucHJvdG90eXBlLCBcInBhcmVudERhc2hib2FyZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudERhc2hib2FyZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCB3aGljaCBnb2VzIHRocm91Z2ggYW5kIHJlZ2lzdGVycyBlYWNoIGV2ZW50IHR5cGUgdGhpcyBpbXBsIGtub3dzIGFib3V0XG4gICAgICogd2l0aCB0aGUgTm90aWZpY2F0aW9uU2VydmljZS4gSXQgcmV0dXJucyBhbiBhcnJheSBvZiBTaW5nbGVFdmVudE1hbmFnZXIgb2JqZWN0cyB3aGljaFxuICAgICAqIGNhbiB0aGVuIGJlIHBhc3NlZCB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlciB0byBoYW5kbGUgdXNlciByZWdpc3RyYXRpb24gLyB1bnJlZ2lzdHJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7V29ya3NoZWV0fSB3b3Jrc2hlZXQgVGhlIHdvcmtzaGVldCBvYmplY3Qgd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCB3aXRoIHRoZSBldmVudCBub3RpZmljYXRpb25zXG4gICAgICogQHJldHVybnMge0FycmF5PFNpbmdsZUV2ZW50TWFuYWdlcj59IENvbGxlY3Rpb24gb2YgZXZlbnQgbWFuYWdlcnMgdG8gcGFzcyB0byBhbiBFdmVudExpc3RlbmVyTWFuYWdlclxuICAgICAqL1xuICAgIFdvcmtzaGVldEltcGwucHJvdG90eXBlLmluaXRpYWxpemVFdmVudHMgPSBmdW5jdGlvbiAod29ya3NoZWV0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHZhciBub3RpZmljYXRpb25TZXJ2aWNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcIm5vdGlmaWNhdGlvbi1zZXJ2aWNlXCIgLyogTm90aWZpY2F0aW9uICovKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIHNlcnZpY2UgcmVnaXN0ZXJlZCwganVzdCByZXR1cm5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluaXRpYWxpemUgYWxsIG9mIHRoZSBldmVudCBtYW5hZ2VycyB3ZSdsbCBuZWVkIChvbmUgZm9yIGVhY2ggZXZlbnQgdHlwZSlcbiAgICAgICAgdmFyIG1hcmtzRXZlbnQgPSBuZXcgYXBpX3NoYXJlZF8xLlNpbmdsZUV2ZW50TWFuYWdlckltcGwoQ29udHJhY3QuVGFibGVhdUV2ZW50VHlwZS5NYXJrU2VsZWN0aW9uQ2hhbmdlZCk7XG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2UucmVnaXN0ZXJIYW5kbGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLk5vdGlmaWNhdGlvbklkLlNlbGVjdGVkTWFya3NDaGFuZ2VkLCBmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICAgIHZhciB2aXN1YWxJZCA9IG1vZGVsO1xuICAgICAgICAgICAgcmV0dXJuIHZpc3VhbElkc0FyZUVxdWFsKHZpc3VhbElkLCBfdGhpcy52aXN1YWxJZCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uICh2aXopIHtcbiAgICAgICAgICAgIG1hcmtzRXZlbnQudHJpZ2dlckV2ZW50KGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5ldyBhcGlfc2hhcmVkXzEuTWFya3NTZWxlY3RlZEV2ZW50KHdvcmtzaGVldCk7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbHRlckV2ZW50ID0gbmV3IGFwaV9zaGFyZWRfMS5TaW5nbGVFdmVudE1hbmFnZXJJbXBsKENvbnRyYWN0LlRhYmxlYXVFdmVudFR5cGUuRmlsdGVyQ2hhbmdlZCk7XG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2UucmVnaXN0ZXJIYW5kbGVyKGFwaV9pbnRlcm5hbF9jb250cmFjdF8xLk5vdGlmaWNhdGlvbklkLkZpbHRlckNoYW5nZWQsIGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlckV2ZW50UmVzcG9uc2UgPSBtb2RlbDtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy52aXN1YWxJZC53b3Jrc2hlZXQgPT09IGZpbHRlckV2ZW50UmVzcG9uc2UudmlzdWFsSWQud29ya3NoZWV0O1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGZpbHRlckV2ZW50LnRyaWdnZXJFdmVudChmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgYXBpX3NoYXJlZF8xLkZpbHRlckNoYW5nZWRFdmVudCh3b3Jrc2hlZXQsIGV2ZW50LmZpZWxkTmFtZSk7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKG1hcmtzRXZlbnQpO1xuICAgICAgICByZXN1bHRzLnB1c2goZmlsdGVyRXZlbnQpO1xuICAgICAgICAvLyBUT0RPIC0gb3RoZXIgZXZlbnQgdHlwZXNcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV29ya3NoZWV0SW1wbC5wcm90b3R5cGUsIFwidmlzdWFsSWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92aXN1YWxJZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgV29ya3NoZWV0SW1wbC5wcm90b3R5cGUuYXBwbHlGaWx0ZXJBc3luYyA9IGZ1bmN0aW9uIChmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgc2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcImZpbHRlci1zZXJ2aWNlXCIgLyogRmlsdGVyICovKTtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2UuYXBwbHlGaWx0ZXJBc3luYyh0aGlzLnZpc3VhbElkLCBmaWVsZE5hbWUsIHZhbHVlcywgdXBkYXRlVHlwZSwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5hcHBseVJhbmdlRmlsdGVyQXN5bmMgPSBmdW5jdGlvbiAoZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZmlsdGVyLXNlcnZpY2VcIiAvKiBGaWx0ZXIgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5hcHBseVJhbmdlRmlsdGVyQXN5bmModGhpcy52aXN1YWxJZCwgZmllbGROYW1lLCBmaWx0ZXJPcHRpb25zKTtcbiAgICB9O1xuICAgIFdvcmtzaGVldEltcGwucHJvdG90eXBlLmNsZWFyRmlsdGVyQXN5bmMgPSBmdW5jdGlvbiAoZmllbGROYW1lKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZmlsdGVyLXNlcnZpY2VcIiAvKiBGaWx0ZXIgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5jbGVhckZpbHRlckFzeW5jKHRoaXMudmlzdWFsSWQsIGZpZWxkTmFtZSk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXREYXRhU291cmNlc0FzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcImRhdGEtc291cmNlLXNlcnZpY2VcIiAvKiBEYXRhU291cmNlU2VydmljZSAqLyk7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlLmdldERhdGFTb3VyY2VzQXN5bmMoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHZhciBkYXRhU2NoZW1hID0gcmVzdWx0O1xuICAgICAgICAgICAgdmFyIHdvcmtzaGVldERhdGFTb3VyY2VJbmZvID0gZGF0YVNjaGVtYS53b3Jrc2hlZXREYXRhU2NoZW1hTWFwW190aGlzLm5hbWVdO1xuICAgICAgICAgICAgdmFyIGRhdGFTb3VyY2VzID0gW107XG4gICAgICAgICAgICAvLyBGaXJzdCwgYWRkIHRoZSBwcmltYXJ5IGRhdGFzb3VyY2UuICBCeSBjb252ZW50aW9uLCBpdCBjb21lcyBmaXJzdCBpbiB0aGUgcmV0dXJuZWQgYXJyYXkuXG4gICAgICAgICAgICB2YXIgcHJpbWFyeUlkID0gd29ya3NoZWV0RGF0YVNvdXJjZUluZm8ucHJpbWFyeURhdGFTb3VyY2U7XG4gICAgICAgICAgICBkYXRhU291cmNlcy5wdXNoKF90aGlzLmNyZWF0ZURhdGFTb3VyY2VGcm9tSW5mbyhkYXRhU2NoZW1hLmRhdGFTb3VyY2VzW3ByaW1hcnlJZF0pKTtcbiAgICAgICAgICAgIC8vIFRoZW4sIGxvb3AgdGhyb3VnaCBhbnkgc2Vjb25kYXJ5IGRhdGEgc291cmNlcyBhbmQgYWRkIHRoZW0uXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gd29ya3NoZWV0RGF0YVNvdXJjZUluZm8ucmVmZXJlbmNlZERhdGFTb3VyY2VMaXN0OyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBzZWNvbmRhcnlJZCA9IF9hW19pXTtcbiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kYXJ5SWQgIT09IHByaW1hcnlJZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlcy5wdXNoKF90aGlzLmNyZWF0ZURhdGFTb3VyY2VGcm9tSW5mbyhkYXRhU2NoZW1hLmRhdGFTb3VyY2VzW3NlY29uZGFyeUlkXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhU291cmNlcztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXRGaWx0ZXJzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZmlsdGVyLXNlcnZpY2VcIiAvKiBGaWx0ZXIgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRGaWx0ZXJzQXN5bmModGhpcy52aXN1YWxJZCk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXRTZWxlY3RlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZ2V0LWRhdGEtc2VydmljZVwiIC8qIEdldERhdGEgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRTZWxlY3RlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiZ2V0LWRhdGEtc2VydmljZVwiIC8qIEdldERhdGEgKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRIaWdobGlnaHRlZE1hcmtzQXN5bmModGhpcy52aXN1YWxJZCk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXRTdW1tYXJ5RGF0YUFzeW5jID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNlcnZpY2UgPSBhcGlfc2hhcmVkXzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2UoXCJnZXQtZGF0YS1zZXJ2aWNlXCIgLyogR2V0RGF0YSAqLyk7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKHRoaXMudmlzdWFsSWQsIGFwaV9zaGFyZWRfMS5HZXREYXRhVHlwZS5TdW1tYXJ5LCAhIW9wdGlvbnMuaWdub3JlQWxpYXNlcywgISFvcHRpb25zLmlnbm9yZVNlbGVjdGlvbiwgdHJ1ZSwgMCk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHNlcnZpY2UgPSBhcGlfc2hhcmVkXzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2UoXCJnZXQtZGF0YS1zZXJ2aWNlXCIgLyogR2V0RGF0YSAqLyk7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICByZXR1cm4gc2VydmljZS5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKHRoaXMudmlzdWFsSWQsIGFwaV9zaGFyZWRfMS5HZXREYXRhVHlwZS5VbmRlcmx5aW5nLCAhIW9wdGlvbnMuaWdub3JlQWxpYXNlcywgISFvcHRpb25zLmlnbm9yZVNlbGVjdGlvbiwgISFvcHRpb25zLmluY2x1ZGVBbGxDb2x1bW5zLCBvcHRpb25zLm1heFJvd3MgfHwgMCk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5jbGVhclNlbGVjdGVkTWFya3NBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlcnZpY2UgPSBhcGlfc2hhcmVkXzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2UoXCJzZWxlY3Rpb24tc2VydmljZVwiIC8qIFNlbGVjdGlvbiAqLyk7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlLmNsZWFyU2VsZWN0ZWRNYXJrc0FzeW5jKHRoaXMudmlzdWFsSWQpO1xuICAgIH07XG4gICAgV29ya3NoZWV0SW1wbC5wcm90b3R5cGUuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmMgPSBmdW5jdGlvbiAoc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSkge1xuICAgICAgICB2YXIgc2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcInNlbGVjdGlvbi1zZXJ2aWNlXCIgLyogU2VsZWN0aW9uICovKTtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2Uuc2VsZWN0TWFya3NCeVZhbHVlQXN5bmModGhpcy52aXN1YWxJZCwgc2VsZWN0aW9ucywgc2VsZWN0aW9uVXBkYXRlVHlwZSk7XG4gICAgfTtcbiAgICBXb3Jrc2hlZXRJbXBsLnByb3RvdHlwZS5zZWxlY3RNYXJrc0J5SWRBc3luYyA9IGZ1bmN0aW9uIChzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKSB7XG4gICAgICAgIHZhciBzZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwic2VsZWN0aW9uLXNlcnZpY2VcIiAvKiBTZWxlY3Rpb24gKi8pO1xuICAgICAgICByZXR1cm4gc2VydmljZS5zZWxlY3RNYXJrc0J5SWRBc3luYyh0aGlzLnZpc3VhbElkLCBzZWxlY3Rpb25zLCBzZWxlY3Rpb25VcGRhdGVUeXBlKTtcbiAgICB9O1xuICAgIFdvcmtzaGVldEltcGwucHJvdG90eXBlLmNyZWF0ZURhdGFTb3VyY2VGcm9tSW5mbyA9IGZ1bmN0aW9uIChkYXRhU291cmNlSW5mbykge1xuICAgICAgICB2YXIgZGF0YVNvdXJjZUltcGwgPSBuZXcgRGF0YVNvdXJjZUltcGxfMS5EYXRhU291cmNlSW1wbChkYXRhU291cmNlSW5mbyk7XG4gICAgICAgIHZhciBkYXRhU291cmNlID0gbmV3IERhdGFTb3VyY2VfMS5EYXRhU291cmNlKGRhdGFTb3VyY2VJbXBsKTtcbiAgICAgICAgZGF0YVNvdXJjZUltcGwuaW5pdGlhbGl6ZVdpdGhQdWJsaWNJbnRlcmZhY2VzKGRhdGFTb3VyY2UpO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZTtcbiAgICB9O1xuICAgIHJldHVybiBXb3Jrc2hlZXRJbXBsO1xufShTaGVldEltcGxfMS5TaGVldEltcGwpKTtcbmV4cG9ydHMuV29ya3NoZWV0SW1wbCA9IFdvcmtzaGVldEltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Xb3Jrc2hlZXRJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL0ludGVybmFsL1dvcmtzaGVldEltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA1NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRGF0YVNvdXJjZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGF0YVNvdXJjZShfZGF0YVNvdXJjZUltcGwpIHtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUltcGwgPSBfZGF0YVNvdXJjZUltcGw7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlLnByb3RvdHlwZSwgXCJuYW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwubmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFTb3VyY2UucHJvdG90eXBlLCBcImlkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuaWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlLnByb3RvdHlwZSwgXCJmaWVsZHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5maWVsZHM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlLnByb3RvdHlwZSwgXCJjb25uZWN0aW9uU3VtbWFyaWVzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuY29ubmVjdGlvblN1bW1hcmllcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFTb3VyY2UucHJvdG90eXBlLCBcImV4dHJhY3RVcGRhdGVUaW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZUltcGwuZXh0cmFjdFVwZGF0ZVRpbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlLnByb3RvdHlwZSwgXCJpc0V4dHJhY3RcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5pc0V4dHJhY3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERhdGFTb3VyY2UucHJvdG90eXBlLnJlZnJlc2hBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbXBsLnJlZnJlc2hBc3luYygpO1xuICAgIH07XG4gICAgRGF0YVNvdXJjZS5wcm90b3R5cGUuZ2V0VW5kZXJseWluZ0RhdGFBc3luYyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW1wbC5nZXRVbmRlcmx5aW5nRGF0YUFzeW5jKG9wdGlvbnMpO1xuICAgIH07XG4gICAgcmV0dXJuIERhdGFTb3VyY2U7XG59KCkpO1xuZXhwb3J0cy5EYXRhU291cmNlID0gRGF0YVNvdXJjZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGFTb3VyY2UuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvRGF0YVNvdXJjZS5qc1xuICoqIG1vZHVsZSBpZCA9IDU2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbnZhciBGaWVsZEltcGxfMSA9IHJlcXVpcmUoXCIuL0ZpZWxkSW1wbFwiKTtcbnZhciBGaWVsZF8xID0gcmVxdWlyZShcIi4uL0ZpZWxkXCIpO1xudmFyIERhdGFTb3VyY2VJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEYXRhU291cmNlSW1wbChfZGF0YVNvdXJjZUluZm8pIHtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUluZm8gPSBfZGF0YVNvdXJjZUluZm87XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlSW1wbC5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlSW1wbC5wcm90b3R5cGUsIFwiaWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW5mby5pZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFTb3VyY2VJbXBsLnByb3RvdHlwZSwgXCJleHRyYWN0VXBkYXRlVGltZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VJbmZvLmV4dHJhY3RVcGRhdGVUaW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YVNvdXJjZUltcGwucHJvdG90eXBlLCBcImZpZWxkc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERhdGFTb3VyY2VJbXBsLnByb3RvdHlwZSwgXCJpc0V4dHJhY3RcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlSW5mby5pc0V4dHJhY3Q7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhU291cmNlSW1wbC5wcm90b3R5cGUsIFwiY29ubmVjdGlvblN1bW1hcmllc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhU291cmNlIGNvbm5lY3Rpb25TdW1tYXJpZXMgQVBJIG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERhdGFTb3VyY2VJbXBsLnByb3RvdHlwZS5yZWZyZXNoQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkYXRhU291cmNlU2VydmljZSA9IGFwaV9zaGFyZWRfMS5BcGlTZXJ2aWNlUmVnaXN0cnkuaW5zdGFuY2UuZ2V0U2VydmljZShcImRhdGEtc291cmNlLXNlcnZpY2VcIiAvKiBEYXRhU291cmNlU2VydmljZSAqLyk7XG4gICAgICAgIHJldHVybiBkYXRhU291cmNlU2VydmljZS5yZWZyZXNoQXN5bmModGhpcy5fZGF0YVNvdXJjZUluZm8uaWQpO1xuICAgIH07XG4gICAgRGF0YVNvdXJjZUltcGwucHJvdG90eXBlLmdldFVuZGVybHlpbmdEYXRhQXN5bmMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB2YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBpZ25vcmVBbGlhc2VzOiBmYWxzZSxcbiAgICAgICAgICAgIG1heFJvd3M6IDEwMDAwLFxuICAgICAgICAgICAgY29sdW1uc1RvSW5jbHVkZTogW10sXG4gICAgICAgIH07XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICB2YXIgZ2V0RGF0YVNlcnZpY2UgPSBhcGlfc2hhcmVkXzEuQXBpU2VydmljZVJlZ2lzdHJ5Lmluc3RhbmNlLmdldFNlcnZpY2UoXCJnZXQtZGF0YS1zZXJ2aWNlXCIgLyogR2V0RGF0YSAqLyk7XG4gICAgICAgIHJldHVybiBnZXREYXRhU2VydmljZS5nZXREYXRhU291cmNlRGF0YUFzeW5jKHRoaXMuaWQsICEhb3B0aW9ucy5pZ25vcmVBbGlhc2VzLCBvcHRpb25zLm1heFJvd3MgfHwgZGVmYXVsdE9wdGlvbnMubWF4Um93cywgb3B0aW9ucy5jb2x1bW5zVG9JbmNsdWRlIHx8IGRlZmF1bHRPcHRpb25zLmNvbHVtbnNUb0luY2x1ZGUpO1xuICAgIH07XG4gICAgRGF0YVNvdXJjZUltcGwucHJvdG90eXBlLmluaXRpYWxpemVXaXRoUHVibGljSW50ZXJmYWNlcyA9IGZ1bmN0aW9uIChkYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2RhdGFTb3VyY2VJbmZvLmZpZWxkcy5tYXAoZnVuY3Rpb24gKGZpZWxkTW9kZWwpIHtcbiAgICAgICAgICAgIHZhciBmaWVsZEltcGwgPSBuZXcgRmllbGRJbXBsXzEuRmllbGRJbXBsKGZpZWxkTW9kZWwsIGRhdGFTb3VyY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWVsZF8xLkZpZWxkKGZpZWxkSW1wbCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIERhdGFTb3VyY2VJbXBsO1xufSgpKTtcbmV4cG9ydHMuRGF0YVNvdXJjZUltcGwgPSBEYXRhU291cmNlSW1wbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGFTb3VyY2VJbXBsLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL0ludGVybmFsL0RhdGFTb3VyY2VJbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gNTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGFwaV9zaGFyZWRfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktc2hhcmVkXCIpO1xudmFyIEZpZWxkSW1wbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmllbGRJbXBsKF9maWVsZEluZm8sIF9wYXJlbnREYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkSW5mbyA9IF9maWVsZEluZm87XG4gICAgICAgIHRoaXMuX3BhcmVudERhdGFTb3VyY2UgPSBfcGFyZW50RGF0YVNvdXJjZTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkSW1wbC5wcm90b3R5cGUsIFwibmFtZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5uYW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmllbGRJbXBsLnByb3RvdHlwZSwgXCJpZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkSW1wbC5wcm90b3R5cGUsIFwiZGVzY3JpcHRpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uZGVzY3JpcHRpb247XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZEltcGwucHJvdG90eXBlLCBcImFnZ3JlZ2F0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBpX3NoYXJlZF8xLkludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5maWVsZEFnZ3JlZ2F0aW9uVHlwZS5jb252ZXJ0KHRoaXMuX2ZpZWxkSW5mby5hZ2dyZWdhdGlvbik7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZEltcGwucHJvdG90eXBlLCBcImRhdGFTb3VyY2VcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnREYXRhU291cmNlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmllbGRJbXBsLnByb3RvdHlwZSwgXCJyb2xlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBpX3NoYXJlZF8xLkludGVybmFsVG9FeHRlcm5hbEVudW1NYXBwaW5ncy5maWVsZFJvbGVUeXBlLmNvbnZlcnQodGhpcy5fZmllbGRJbmZvLnJvbGUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmllbGRJbXBsLnByb3RvdHlwZSwgXCJpc0hpZGRlblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW5mby5pc0hpZGRlbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkSW1wbC5wcm90b3R5cGUsIFwiaXNHZW5lcmF0ZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNHZW5lcmF0ZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZEltcGwucHJvdG90eXBlLCBcImlzQ2FsY3VsYXRlZEZpZWxkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRJbmZvLmlzQ2FsY3VsYXRlZEZpZWxkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmllbGRJbXBsLnByb3RvdHlwZSwgXCJpc0NvbWJpbmVkRmllbGRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEluZm8uaXNDb21iaW5lZEZpZWxkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBGaWVsZEltcGwucHJvdG90eXBlLmdldENhbGN1bGF0ZWRGaWVsZEFzeW5jID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkIGdldENhbGN1bGF0ZWRGaWVsZEFzeW5jIG1ldGhvZCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICAgIH07XG4gICAgcmV0dXJuIEZpZWxkSW1wbDtcbn0oKSk7XG5leHBvcnRzLkZpZWxkSW1wbCA9IEZpZWxkSW1wbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZpZWxkSW1wbC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9JbnRlcm5hbC9GaWVsZEltcGwuanNcbiAqKiBtb2R1bGUgaWQgPSA1OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRmllbGQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZpZWxkKF9maWVsZEltcGwpIHtcbiAgICAgICAgdGhpcy5fZmllbGRJbXBsID0gX2ZpZWxkSW1wbDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJuYW1lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRJbXBsLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZC5wcm90b3R5cGUsIFwiaWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZC5wcm90b3R5cGUsIFwiZGVzY3JpcHRpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZGVzY3JpcHRpb247XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZC5wcm90b3R5cGUsIFwiYWdncmVnYXRpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuYWdncmVnYXRpb247XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGaWVsZC5wcm90b3R5cGUsIFwiZGF0YVNvdXJjZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5kYXRhU291cmNlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmllbGQucHJvdG90eXBlLCBcInJvbGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwucm9sZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJpc0hpZGRlblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5pc0hpZGRlbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJpc0dlbmVyYXRlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5pc0dlbmVyYXRlZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJpc0NhbGN1bGF0ZWRGaWVsZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSW1wbC5pc0NhbGN1bGF0ZWRGaWVsZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJjb2x1bW5UeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkLmNvbHVtblR5cGUgbm90IHlldCBpbXBsZW1ldG5lZC4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZpZWxkLnByb3RvdHlwZSwgXCJpc0NvbWJpbmVkRmllbGRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuaXNDb21iaW5lZEZpZWxkO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBGaWVsZC5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZEZpZWxkQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZEltcGwuZ2V0Q2FsY3VsYXRlZEZpZWxkQXN5bmMoKTtcbiAgICB9O1xuICAgIHJldHVybiBGaWVsZDtcbn0oKSk7XG5leHBvcnRzLkZpZWxkID0gRmllbGQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GaWVsZC5qcy5tYXBcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4uL2xpYi9GaWVsZC5qc1xuICoqIG1vZHVsZSBpZCA9IDU5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBhcGlfc2hhcmVkXzEgPSByZXF1aXJlKFwiQHRhYmxlYXUvYXBpLXNoYXJlZFwiKTtcbnZhciBhcGlfdXRpbHNfMSA9IHJlcXVpcmUoXCJAdGFibGVhdS9hcGktdXRpbHNcIik7XG52YXIgU2V0dGluZ3NJbXBsID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXR0aW5nc0ltcGwoc2V0dGluZ3NJbmZvKSB7XG4gICAgICAgIC8vIFNpbmNlIHByb21pc2VzIGNhbid0IGJlIGludHJvc3BlY3RlZCBmb3Igc3RhdGUsIGtlZXAgYSB2YXJpYWJsZSB0aGF0XG4gICAgICAgIC8vIGluZGljYXRlcyBhIHNhdmUgaXMgaW4gcHJvZ3Jlc3MsIHNvIHRoYXQgc2V0L2VyYXNlIGNhbid0IGJlIGNhbGxlZCBkdXJpbmcgYSBzYXZlLlxuICAgICAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVTZXR0aW5ncyhzZXR0aW5nc0luZm8pO1xuICAgIH1cbiAgICBTZXR0aW5nc0ltcGwucHJvdG90eXBlLmVyYXNlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBhcGlfdXRpbHNfMS5QYXJhbS52ZXJpZnlWYWx1ZShrZXksICdrZXknKTtcbiAgICAgICAgLy8gT25seSBtYWtlIGEgbW9kaWZpY2F0aW9uIGlmIHdlIGhhdmUgdGhlIGtleSBhbHJlYWR5XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSkge1xuICAgICAgICAgICAgdGhpcy52ZXJpZnlTZXR0aW5nc0FyZVVubG9ja2VkKCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gICAgICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2V0dGluZ3NJbXBsLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGFwaV91dGlsc18xLlBhcmFtLnZlcmlmeVZhbHVlKGtleSwgJ2tleScpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFNldHRpbmdzW2tleV07XG4gICAgfTtcbiAgICBTZXR0aW5nc0ltcGwucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gUmV0dXJucyBhIG11dGFibGUgY29weSBvZiB0aGUgc2V0dGluZ3NcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2N1cnJlbnRTZXR0aW5ncyk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU2V0dGluZ3NJbXBsLnByb3RvdHlwZSwgXCJpc01vZGlmaWVkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNNb2RpZmllZDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU2V0dGluZ3NJbXBsLnByb3RvdHlwZS5zYXZlQXN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xuICAgICAgICAvLyBKdXN0IHJlc29sdmUgaW1tZWRpYXRlbHkgaWYgc2V0dGluZ3MgYXJlIHVuY2hhbmdlZFxuICAgICAgICBpZiAoIXRoaXMuX2lzTW9kaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudFNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zYXZlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIC8vIFVzZSB0aGUgc2V0dGluZ3Mgc2VydmljZSB0byBzYXZlIHNldHRpbmdzIHRvIHR3YlxuICAgICAgICB2YXIgc2V0dGluZ3NTZXJ2aWNlID0gYXBpX3NoYXJlZF8xLkFwaVNlcnZpY2VSZWdpc3RyeS5pbnN0YW5jZS5nZXRTZXJ2aWNlKFwiU2V0dGluZ3NTZXJ2aWNlXCIgLyogU2V0dGluZ3NTZXJ2aWNlICovKTtcbiAgICAgICAgcmV0dXJuIHNldHRpbmdzU2VydmljZS5zYXZlU2V0dGluZ3NBc3luYyh0aGlzLl9jdXJyZW50U2V0dGluZ3MpLnRoZW4oZnVuY3Rpb24gKG5ld1NldHRpbmdzKSB7XG4gICAgICAgICAgICBfdGhpcy5fc2F2ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAgIF90aGlzLl9pc01vZGlmaWVkID0gZmFsc2U7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKF90aGlzLl9jdXJyZW50U2V0dGluZ3MsIG5ld1NldHRpbmdzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTZXR0aW5ncztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTZXR0aW5nc0ltcGwucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGFwaV91dGlsc18xLlBhcmFtLnZlcmlmeVZhbHVlKGtleSwgJ2tleScpOyAvLyBLZXkgc2hvdWxkbid0IGJlIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgICAgYXBpX3V0aWxzXzEuUGFyYW0udmVyaWZ5U3RyaW5nKHZhbHVlLCAndmFsdWUnKTsgLy8gRW1wdHkgc3RyaW5nIHZhbHVlIGlzIGFsbG93ZWQuXG4gICAgICAgIHRoaXMudmVyaWZ5U2V0dGluZ3NBcmVVbmxvY2tlZCgpO1xuICAgICAgICB0aGlzLl9jdXJyZW50U2V0dGluZ3Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldHRpbmdzSW1wbC5wcm90b3R5cGUuaW5pdGlhbGl6ZVNldHRpbmdzID0gZnVuY3Rpb24gKHNldHRpbmdzSW5mbykge1xuICAgICAgICBhcGlfdXRpbHNfMS5QYXJhbS52ZXJpZnlWYWx1ZShzZXR0aW5nc0luZm8sICdzZXR0aW5nc0luZm8nKTtcbiAgICAgICAgYXBpX3V0aWxzXzEuUGFyYW0udmVyaWZ5VmFsdWUoc2V0dGluZ3NJbmZvLnNldHRpbmdzVmFsdWVzLCAnc2V0dGluZ3NJbmZvLlNldHRpbmdzVmFsdWVzJyk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRTZXR0aW5ncyA9IHNldHRpbmdzSW5mby5zZXR0aW5nc1ZhbHVlcztcbiAgICAgICAgLy8gUmVzZXQgdGhlIGlzTW9kaWZpZWQgZmxhZ1xuICAgICAgICB0aGlzLl9pc01vZGlmaWVkID0gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGhlbHBlciBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgbG9jYWwgdXBkYXRlIHRvIHRoaXMuY3VycmVudFNldHRpbmdzLlxuICAgICAqIENoZWNrcyBpZiBhIGN1cnJlbnQgc2F2ZSBjYWxsIGlzIHN0aWxsIGluIHByb2dyZXNzIGFuZCB0aHJvd3MgYW4gZXJyb3IgaWYgc28uXG4gICAgICovXG4gICAgU2V0dGluZ3NJbXBsLnByb3RvdHlwZS52ZXJpZnlTZXR0aW5nc0FyZVVubG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fc2F2ZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXN5bmMgU2F2ZSBpcyBpbiBwcm9ncmVzcywgdXBkYXRpbmcgc2V0dGluZ3MgaXMgbm90IGFsbG93ZWQuJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBTZXR0aW5nc0ltcGw7XG59KCkpO1xuZXhwb3J0cy5TZXR0aW5nc0ltcGwgPSBTZXR0aW5nc0ltcGw7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZXR0aW5nc0ltcGwuanMubWFwXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuLi9saWIvSW50ZXJuYWwvU2V0dGluZ3NJbXBsLmpzXG4gKiogbW9kdWxlIGlkID0gNjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgQWRkSW4gbmFtZXNwYWNlLlxuICovXG52YXIgQWRkSW4gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEFkZEluKGFkZEluSW1wbCkge1xuICAgICAgICB0aGlzLmFkZEluSW1wbCA9IGFkZEluSW1wbDtcbiAgICAgICAgdGhpcy5hZGRJbkltcGwgPSBhZGRJbkltcGw7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRJbi5wcm90b3R5cGUsIFwiZGFzaGJvYXJkQ29udGVudFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLmRhc2hib2FyZENvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRJbi5wcm90b3R5cGUsIFwiZW52aXJvbm1lbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZEluSW1wbC5lbnZpcm9ubWVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZEluLnByb3RvdHlwZSwgXCJzZXR0aW5nc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLnNldHRpbmdzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQWRkSW4ucHJvdG90eXBlLCBcInVpXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBjYWxsIG5vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgQWRkSW4ucHJvdG90eXBlLmluaXRpYWxpemVBc3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkSW5JbXBsLmluaXRpYWxpemVBc3luYygpO1xuICAgIH07XG4gICAgcmV0dXJuIEFkZEluO1xufSgpKTtcbmV4cG9ydHMuQWRkSW4gPSBBZGRJbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFkZEluLmpzLm1hcFxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi4vbGliL05hbWVzcGFjZXMvQWRkSW4uanNcbiAqKiBtb2R1bGUgaWQgPSA2MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdk9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzVEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNySkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3pXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDN0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDeElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzVOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDeEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3ZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM1RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNqSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDMVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDekZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDdEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3BEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDNUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNsS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQzFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDcEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDekZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUM5RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OzsiLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/Examples/ReactJs/.babelrc b/Examples/ReactJs/.babelrc deleted file mode 100644 index 974a1ca3..00000000 --- a/Examples/ReactJs/.babelrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presets": [ - "es2015", - "stage-0", - "react" - ] -} diff --git a/Examples/ReactJs/.editorconfig b/Examples/ReactJs/.editorconfig deleted file mode 100644 index 4a7ea303..00000000 --- a/Examples/ReactJs/.editorconfig +++ /dev/null @@ -1,12 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/Examples/ReactJs/.eslintrc b/Examples/ReactJs/.eslintrc deleted file mode 100644 index b542daaf..00000000 --- a/Examples/ReactJs/.eslintrc +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parser": "babel-eslint", - "plugins": [ - "react" - ], - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "env": { - "browser": true, - "amd": true, - "es6": true, - "node": true, - "mocha": true - }, - "rules": { - "comma-dangle": 1, - "quotes": [ 1, "single" ], - "no-undef": 1, - "global-strict": 0, - "no-extra-semi": 1, - "no-underscore-dangle": 0, - "no-console": 1, - "no-unused-vars": 1, - "no-trailing-spaces": [1, { "skipBlankLines": true }], - "no-unreachable": 1, - "no-alert": 0, - "react/jsx-uses-react": 1, - "react/jsx-uses-vars": 1 - } -} diff --git a/Examples/ReactJs/.gitignore b/Examples/ReactJs/.gitignore deleted file mode 100644 index fb1fbda4..00000000 --- a/Examples/ReactJs/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -# Logs -logs -*.log - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git -node_modules - -# Bower -bower_components/ - -# IDE/Editor data -.idea diff --git a/Examples/ReactJs/.yo-rc.json b/Examples/ReactJs/.yo-rc.json deleted file mode 100644 index bb15adab..00000000 --- a/Examples/ReactJs/.yo-rc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "generator-react-webpack": {} -} \ No newline at end of file diff --git a/Examples/ReactJs/AddIns/FilteringDemo.trex b/Examples/ReactJs/AddIns/FilteringDemo.trex deleted file mode 100644 index d2b51464..00000000 --- a/Examples/ReactJs/AddIns/FilteringDemo.trex +++ /dev/null @@ -1,22 +0,0 @@ - - - - en_US - - Demonstrates Using the Filtering Api - - - - - 1.1 - - http://localhost:8000#filtering - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== - - - - Filtering Demo - - - \ No newline at end of file diff --git a/Examples/ReactJs/AddIns/ParametersDemo.trex b/Examples/ReactJs/AddIns/ParametersDemo.trex deleted file mode 100644 index 103cbd36..00000000 --- a/Examples/ReactJs/AddIns/ParametersDemo.trex +++ /dev/null @@ -1,22 +0,0 @@ - - - - en_US - - Demonstrates Getting The Parameters on a Viz - - - - - 1.1 - - http://localhost:8000#parameters - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== - - - - Parameters Demo - - - \ No newline at end of file diff --git a/Examples/ReactJs/AddIns/SelectedMarks.trex b/Examples/ReactJs/AddIns/SelectedMarks.trex deleted file mode 100644 index 6f084598..00000000 --- a/Examples/ReactJs/AddIns/SelectedMarks.trex +++ /dev/null @@ -1,22 +0,0 @@ - - - - en_US - - Demonstrates listening for events and getting the selected marks - - - - - 1.1 - - http://localhost:8000#selectedMarks - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlhJREFUOI2Nkt9vy1EYh5/3bbsvRSySCZbIxI+ZCKsN2TKtSFyIrV2WuRCJuBiJWxfuxCVXbvwFgiEtposgLFJElnbU1SxIZIIRJDKTrdu+53Uhra4mce7Oe57Pcz7JOULFisViwZ+29LAzOSjQYDgz1ZcCvWuXV11MJpN+OS/lm6179teqH0yDqxPTCyKSA8DcDsyOmOprnCaeP7459pdgy969i0LTC3IO/RQMyoHcQN+3cnljW3dNIFC47qDaK3g7BwdTkwBaBELT4ZPOUVWgKl4ZBnjxJPUlMDnTDrp0pmr6RHFeEjjcUUXPDGeSEwDN0Xg8sivxMhJNjGzbHd8PkM3eHRfkrBM5NkcQaY2vUnTlrDIA0NoaX+KLXFFlowr14tvVpqb2MICzmQcKqxvbumv+NAhZGCCIPwEw6QWXKYRL/VUXO0+rAUJiPwAk5MIlgVfwPjjHLCL1APmHN94ZdqeYN+NW/mn6I4BvwQYchcLnwFhJMDiYmlRxAzjpKWZkYkUCcZ2I61wi37tLbYyjiN0fHk5Oz3nGSLSzBbNHCF35R7f6K1/hN9PRhek11FrymfQQQKB4+Gl05P2qNRtmETlXW7e+b2z01dfycGNbfFMAbqNyKp9Jp4rzOT8RYFs0njJkc2iqsCObvTsOsDWWqA5C1uFy+Uz/oXJeKwVT4h0RmPUXhi79vuC0Ku6yOffTK3g9lfxfDQAisY516sg5kfOCiJk7HoLt2cf9b/9LANAc7dznm98PagG1fUOZ9IP5uMB8Q4CPoyNvausapkTt3rNMuvdf3C/o6+czhtdwmwAAAABJRU5ErkJggg== - - - - Selected Marks Demo - - - diff --git a/Examples/ReactJs/cfg/base.js b/Examples/ReactJs/cfg/base.js deleted file mode 100644 index 751648fd..00000000 --- a/Examples/ReactJs/cfg/base.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; -let path = require('path'); -let defaultSettings = require('./defaults'); - -// Additional npm or bower modules to include in builds -// Add all foreign plugins you may need into this array -// @example: -// let npmBase = path.join(__dirname, '../node_modules'); -// let additionalPaths = [ path.join(npmBase, 'react-bootstrap') ]; -let additionalPaths = []; - -module.exports = { - additionalPaths: additionalPaths, - port: defaultSettings.port, - debug: true, - devtool: 'eval', - output: { - path: path.join(__dirname, '/../dist/assets'), - filename: 'app.js', - publicPath: defaultSettings.publicPath - }, - devServer: { - contentBase: './src/', - historyApiFallback: true, - hot: true, - port: defaultSettings.port, - publicPath: defaultSettings.publicPath, - noInfo: false - }, - resolve: { - extensions: ['', '.js', '.jsx'], - alias: { - actions: `${defaultSettings.srcPath}/actions/`, - components: `${defaultSettings.srcPath}/components/`, - sources: `${defaultSettings.srcPath}/sources/`, - stores: `${defaultSettings.srcPath}/stores/`, - styles: `${defaultSettings.srcPath}/styles/`, - config: `${defaultSettings.srcPath}/config/` + process.env.REACT_WEBPACK_ENV, - 'react/lib/ReactMount': 'react-dom/lib/ReactMount' - } - }, - module: {} -}; diff --git a/Examples/ReactJs/cfg/defaults.js b/Examples/ReactJs/cfg/defaults.js deleted file mode 100644 index 67a43287..00000000 --- a/Examples/ReactJs/cfg/defaults.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Function that returns default values. - * Used because Object.assign does a shallow instead of a deep copy. - * Using [].push will add to the base array, so a require will alter - * the base array output. - */ -'use strict'; - -const path = require('path'); -const srcPath = path.join(__dirname, '/../src'); -const dfltPort = 8000; - -/** - * Get the default modules object for webpack - * @return {Object} - */ -function getDefaultModules() { - return { - preLoaders: [ - { - test: /\.(js|jsx)$/, - include: srcPath, - loader: 'eslint-loader' - } - ], - loaders: [ - { - test: /\.css$/, - loader: 'style-loader!css-loader' - }, - { - test: /\.sass/, - loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded&indentedSyntax' - }, - { - test: /\.scss/, - loader: 'style-loader!css-loader!sass-loader?outputStyle=expanded' - }, - { - test: /\.less/, - loader: 'style-loader!css-loader!less-loader' - }, - { - test: /\.styl/, - loader: 'style-loader!css-loader!stylus-loader' - }, - { - test: /\.(png|jpg|gif|woff|woff2)$/, - loader: 'url-loader?limit=8192' - }, - { - test: /\.(mp4|ogg|svg)$/, - loader: 'file-loader' - } - ] - }; -} - -module.exports = { - srcPath: srcPath, - publicPath: '/assets/', - port: dfltPort, - getDefaultModules: getDefaultModules -}; diff --git a/Examples/ReactJs/cfg/dev.js b/Examples/ReactJs/cfg/dev.js deleted file mode 100644 index 6185d7bb..00000000 --- a/Examples/ReactJs/cfg/dev.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -let path = require('path'); -let webpack = require('webpack'); -let baseConfig = require('./base'); -let defaultSettings = require('./defaults'); - -// Add needed plugins here -let BowerWebpackPlugin = require('bower-webpack-plugin'); - -let config = Object.assign({}, baseConfig, { - entry: [ - 'webpack-dev-server/client?http://127.0.0.1:' + defaultSettings.port, - 'webpack/hot/only-dev-server', - './src/index' - ], - cache: true, - devtool: 'eval-source-map', - plugins: [ - new webpack.HotModuleReplacementPlugin(), - new webpack.NoErrorsPlugin(), - new BowerWebpackPlugin({ - searchResolveModulesDirectories: false - }) - ], - module: defaultSettings.getDefaultModules() -}); - -// Add needed loaders to the defaults here -config.module.loaders.push({ - test: /\.(js|jsx)$/, - loader: 'react-hot!babel-loader', - include: [].concat( - config.additionalPaths, - [ path.join(__dirname, '/../src') ] - ) -}); - -module.exports = config; diff --git a/Examples/ReactJs/cfg/dist.js b/Examples/ReactJs/cfg/dist.js deleted file mode 100644 index 1fc19c4a..00000000 --- a/Examples/ReactJs/cfg/dist.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -let path = require('path'); -let webpack = require('webpack'); - -let baseConfig = require('./base'); -let defaultSettings = require('./defaults'); - -// Add needed plugins here -let BowerWebpackPlugin = require('bower-webpack-plugin'); - -let config = Object.assign({}, baseConfig, { - entry: path.join(__dirname, '../src/index'), - cache: false, - devtool: 'sourcemap', - plugins: [ - new webpack.optimize.DedupePlugin(), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': '"production"' - }), - new BowerWebpackPlugin({ - searchResolveModulesDirectories: false - }), - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.OccurenceOrderPlugin(), - new webpack.optimize.AggressiveMergingPlugin(), - new webpack.NoErrorsPlugin() - ], - module: defaultSettings.getDefaultModules() -}); - -// Add needed loaders to the defaults here -config.module.loaders.push({ - test: /\.(js|jsx)$/, - loader: 'babel', - include: [].concat( - config.additionalPaths, - [ path.join(__dirname, '/../src') ] - ) -}); - -module.exports = config; diff --git a/Examples/ReactJs/cfg/test.js b/Examples/ReactJs/cfg/test.js deleted file mode 100644 index f139c490..00000000 --- a/Examples/ReactJs/cfg/test.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -let path = require('path'); -let srcPath = path.join(__dirname, '/../src/'); - -let baseConfig = require('./base'); - -// Add needed plugins here -let BowerWebpackPlugin = require('bower-webpack-plugin'); - -module.exports = { - devtool: 'eval', - module: { - preLoaders: [ - { - test: /\.(js|jsx)$/, - loader: 'isparta-instrumenter-loader', - include: [ - path.join(__dirname, '/../src') - ] - } - ], - loaders: [ - { - test: /\.(png|jpg|gif|woff|woff2|css|sass|scss|less|styl)$/, - loader: 'null-loader' - }, - { - test: /\.(js|jsx)$/, - loader: 'babel-loader', - include: [].concat( - baseConfig.additionalPaths, - [ - path.join(__dirname, '/../src'), - path.join(__dirname, '/../test') - ] - ) - } - ] - }, - resolve: { - extensions: [ '', '.js', '.jsx' ], - alias: { - actions: srcPath + 'actions/', - helpers: path.join(__dirname, '/../test/helpers'), - components: srcPath + 'components/', - sources: srcPath + 'sources/', - stores: srcPath + 'stores/', - styles: srcPath + 'styles/', - config: srcPath + 'config/' + process.env.REACT_WEBPACK_ENV - } - }, - plugins: [ - new BowerWebpackPlugin({ - searchResolveModulesDirectories: false - }) - ] -}; diff --git a/Examples/ReactJs/dist/README.md b/Examples/ReactJs/dist/README.md deleted file mode 100644 index 0d138c28..00000000 --- a/Examples/ReactJs/dist/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# About the dist folder -After building the dist version of your project, the generated files are stored in this folder. You should keep it under version control. diff --git a/Examples/ReactJs/dist/static/README.md b/Examples/ReactJs/dist/static/README.md deleted file mode 100644 index c8eef650..00000000 --- a/Examples/ReactJs/dist/static/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# static - -Files and directories that you put in `static` will be copied to the -`dist/static` directory during the build step. Use it to provide -arbitrary static assets that can be referenced by path in your -application. diff --git a/Examples/ReactJs/dist/static/favicon.ico b/Examples/ReactJs/dist/static/favicon.ico deleted file mode 100644 index 65279053..00000000 Binary files a/Examples/ReactJs/dist/static/favicon.ico and /dev/null differ diff --git a/Examples/ReactJs/karma.conf.js b/Examples/ReactJs/karma.conf.js deleted file mode 100644 index 87401bfe..00000000 --- a/Examples/ReactJs/karma.conf.js +++ /dev/null @@ -1,36 +0,0 @@ -var webpackCfg = require('./webpack.config'); - -// Set node environment to testing -process.env.NODE_ENV = 'test'; - -module.exports = function(config) { - config.set({ - basePath: '', - browsers: [ 'PhantomJS' ], - files: [ - 'test/loadtests.js' - ], - port: 8000, - captureTimeout: 60000, - frameworks: [ 'mocha', 'chai' ], - client: { - mocha: {} - }, - singleRun: true, - reporters: [ 'mocha', 'coverage' ], - preprocessors: { - 'test/loadtests.js': [ 'webpack', 'sourcemap' ] - }, - webpack: webpackCfg, - webpackServer: { - noInfo: true - }, - coverageReporter: { - dir: 'coverage/', - reporters: [ - { type: 'html' }, - { type: 'text' } - ] - } - }); -}; diff --git a/Examples/ReactJs/make_addin.js b/Examples/ReactJs/make_addin.js deleted file mode 100644 index 2440fbd9..00000000 --- a/Examples/ReactJs/make_addin.js +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs'); -let program = require('commander'); -let path = require('path'); - -program - .option('-p, --perforce [oath]', 'Path to perforce scriptsharp directory') - .parse(process.argv); - -var qwebChannel = fs.readFileSync(path.join(program.perforce, 'qwebchannel.js'), 'utf8'); -var bootstrap = fs.readFileSync(path.join(program.perforce, 'src/AddInBootstrap/bin/Debug/vqladdinbootstrap.debug.js'), 'utf8'); -var api = fs.readFileSync(path.join(program.perforce, 'src/AddInApi/bin/Debug/vqladdinapi.debug.js'), 'utf8'); - -var combined = qwebChannel + "\n\n" + bootstrap + "\n\n" + api; - -var destination = path.join('./src/addin/tableau-addin-0.1.0.js'); -fs.writeFileSync(destination, combined); diff --git a/Examples/ReactJs/package-lock.json b/Examples/ReactJs/package-lock.json deleted file mode 100644 index 298c44fe..00000000 --- a/Examples/ReactJs/package-lock.json +++ /dev/null @@ -1,6207 +0,0 @@ -{ - "version": "0.0.1", - "lockfileVersion": 1, - "dependencies": { - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true - }, - "acorn": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", - "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true - }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", - "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true - }, - "babel-eslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz", - "integrity": "sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=", - "dev": true - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true - }, - "babel-helper-builder-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz", - "integrity": "sha1-CteRfjPI11HmRtrKTnfMGTd9LLw=", - "dev": true - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true - }, - "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "dev": true - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true - }, - "babel-loader": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", - "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", - "dev": true - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-do-expressions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", - "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", - "dev": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-syntax-function-bind": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", - "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", - "dev": true - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", - "dev": true - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true - }, - "babel-plugin-transform-do-expressions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", - "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", - "dev": true - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "dev": true - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", - "dev": true - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true - }, - "babel-plugin-transform-function-bind": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", - "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", - "dev": true - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", - "dev": true - }, - "babel-plugin-transform-react-display-name": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", - "dev": true - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", - "dev": true - }, - "babel-plugin-transform-react-jsx-self": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", - "dev": true - }, - "babel-plugin-transform-react-jsx-source": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", - "dev": true - }, - "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "dev": true - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true - }, - "babel-preset-flow": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", - "dev": true - }, - "babel-preset-react": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", - "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", - "dev": true - }, - "babel-preset-stage-0": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", - "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", - "dev": true - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", - "dev": true - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true - }, - "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=" - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true - }, - "babylon": { - "version": "6.17.3", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.3.tgz", - "integrity": "sha512-mq0x3HCAGGmQyZXviOVe5TRsw37Ijy3D43jCqt/9WVf+onx2dUgW3PosnqCbScAFhRO9DGs8nxoMzU0iiosMqQ==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", - "dev": true - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - } - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true - }, - "bower-webpack-plugin": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/bower-webpack-plugin/-/bower-webpack-plugin-0.1.9.tgz", - "integrity": "sha1-F3kPVRU4rN6PlLcBhoDBRVRLsuE=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", - "dev": true - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true - }, - "caniuse-db": { - "version": "1.0.30000684", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000684.tgz", - "integrity": "sha1-maywEYuP0f3WAaFeDA8t/BWoFoA=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true - }, - "circular-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", - "dev": true - }, - "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", - "dev": true - }, - "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } - } - }, - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", - "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true - }, - "color-name": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", - "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compressible": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", - "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "dev": true - }, - "compression": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", - "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", - "dev": true, - "dependencies": { - "bytes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", - "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "connect": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", - "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", - "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", - "dev": true - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copyfiles": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-1.2.0.tgz", - "integrity": "sha1-qNo6xBqiIgrim9PFi2mEKU8sWTw=", - "dev": true - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-react-class": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", - "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=" - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true - }, - "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", - "dev": true - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.1.tgz", - "integrity": "sha1-n6I/K1wJZSNZEK1ezvO4o2OQ/lA=", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", - "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "dom-helpers": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.2.1.tgz", - "integrity": "sha1-MgPgf+0he9H0JLAZc1WC/Deyglo=" - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", - "integrity": "sha1-ZK8Pnv08PGrNV9cfg7Scp+6cS0M=", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=" - }, - "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", - "dev": true, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "dev": true, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - } - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true - }, - "es-abstract": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", - "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", - "dev": true - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true - }, - "es5-ext": { - "version": "0.10.23", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", - "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", - "dev": true - }, - "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true - }, - "es6-promise": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz", - "integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=", - "dev": true - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true - }, - "eslint-loader": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.7.1.tgz", - "integrity": "sha1-ULFY3WJy3O+5fphCVIN/gaWALOA=", - "dev": true, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true - } - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "dev": true - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true - }, - "esrecurse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", - "dev": true, - "dependencies": { - "estraverse": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", - "dev": true - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true - }, - "express": { - "version": "4.15.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", - "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true - }, - "extract-zip": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz", - "integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=", - "dev": true, - "dependencies": { - "concat-stream": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", - "integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=", - "dev": true - }, - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true - }, - "fbjs": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", - "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true - }, - "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", - "dev": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true - }, - "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", - "dev": true - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", - "dev": true - }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", - "dev": true - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "dev": true - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "optional": true - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "optional": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "optional": true - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "dev": true, - "optional": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true - }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "dev": true, - "optional": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "optional": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "optional": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "optional": true - }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true - }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", - "dev": true - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true - } - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true - }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hasha": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", - "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", - "dev": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true - }, - "hosted-git-info": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", - "integrity": "sha1-AHa59GonBQbduq6lZJaJdGBhKmc=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", - "dev": true, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true - }, - "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" - }, - "ipaddr.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", - "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true - }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=" - }, - "isparta": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.0.0.tgz", - "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", - "dev": true - }, - "isparta-instrumenter-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/isparta-instrumenter-loader/-/isparta-instrumenter-loader-1.0.1.tgz", - "integrity": "sha1-nDCMm+A6e8fjC62bbuh8ID4ClSY=", - "dev": true, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", - "dev": true - }, - "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "karma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", - "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", - "dev": true, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-chai": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", - "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", - "dev": true - }, - "karma-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", - "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", - "dev": true, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-mocha": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", - "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", - "dev": true - }, - "karma-mocha-reporter": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz", - "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=", - "dev": true - }, - "karma-phantomjs-launcher": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", - "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", - "dev": true - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true - }, - "karma-webpack": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.1.tgz", - "integrity": "sha1-OdX9Lt7qPMPvW0BZibN9Ww5qO04=", - "dev": true, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true - } - } - }, - "kew": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", - "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", - "dev": true - }, - "keycode": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz", - "integrity": "sha1-lkojxU5IiUBbSGGlyfBIDUUUHfo=" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true - } - } - }, - "loader-fs-cache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", - "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true - }, - "loaders.css": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/loaders.css/-/loaders.css-0.1.2.tgz", - "integrity": "sha1-Op+0NybHMzSjgUKvnQYpAZtlh0M=" - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._createcompounder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz", - "integrity": "sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.camelcase": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz", - "integrity": "sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true - }, - "lodash.deburr": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz", - "integrity": "sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "lodash.words": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz", - "integrity": "sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=", - "dev": true - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true - }, - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - }, - "ltcdr": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltcdr/-/ltcdr-2.2.1.tgz", - "integrity": "sha1-Wrh60dTB2rjowIu/A37gwZAih88=", - "dev": true - }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true - }, - "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", - "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", - "dev": true - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mocha": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", - "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==" - }, - "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true, - "dependencies": { - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - } - } - }, - "nomnomnomnom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", - "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", - "dev": true, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", - "dev": true - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true - }, - "normalize-package-data": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", - "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true - }, - "normalize.css": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-4.2.0.tgz", - "integrity": "sha1-IdZsxVcVTUN5/R4HnsfeWKN5sJk=" - }, - "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", - "dev": true - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-hash": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.8.tgz", - "integrity": "sha1-KKZZz5h9lqTavnhgKJ87UybEoDw=", - "dev": true - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "open": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", - "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", - "dev": true, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true - } - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true - }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "phantomjs-prebuilt": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz", - "integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", - "dev": true, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "dependencies": { - "postcss": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", - "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "dependencies": { - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true - }, - "postcss": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", - "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "dependencies": { - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true - }, - "postcss": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", - "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "dependencies": { - "postcss": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", - "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "promise": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", - "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=" - }, - "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=" - }, - "prop-types-extra": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.0.1.tgz", - "integrity": "sha1-pXvUgQ6C0no/9DF+zBtK0AX3moI=" - }, - "proxy-addr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "dev": true - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", - "dev": true - }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "dev": true, - "dependencies": { - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - } - } - }, - "react": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", - "integrity": "sha1-uqhDTsZ4C96ZfNw4C3nNM7ljk98=" - }, - "react-addons-test-utils": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.6.0.tgz", - "integrity": "sha1-Bi02EX/o0Y87peBuszODsLhepbk=", - "dev": true - }, - "react-bootstrap": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.31.1.tgz", - "integrity": "sha512-hV1684IGmYok4jMT9agTFXBMJrGVYzixiMq6ad9yDgHR4Pj3uH7EBVg+Teo2Qz0VGtOFrPCbKUjdJ0kpCPMPBQ==" - }, - "react-bootstrap-autosuggest": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/react-bootstrap-autosuggest/-/react-bootstrap-autosuggest-0.5.0.tgz", - "integrity": "sha1-DIxiyiHY0UzV9O61mXFSSEdzxDk=" - }, - "react-bootstrap-date-picker": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-bootstrap-date-picker/-/react-bootstrap-date-picker-5.0.1.tgz", - "integrity": "sha1-TQyzPZPVwtkt8QQLNQm+gmmokuo=" - }, - "react-dom": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", - "integrity": "sha1-LLDtQZEDjlPCCes6eaI+Kkz5lHA=" - }, - "react-dropdown": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/react-dropdown/-/react-dropdown-1.2.5.tgz", - "integrity": "sha1-mk0qTJOddSa718aoEGlJ7yJEqPE=" - }, - "react-hot-api": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/react-hot-api/-/react-hot-api-0.4.7.tgz", - "integrity": "sha1-p+IqVtJS4Rq9k2a2EmTPRJLFgXE=", - "dev": true - }, - "react-hot-loader": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-1.3.1.tgz", - "integrity": "sha1-yVZHrni3Pfzv9uxx/8sEGC/22vk=", - "dev": true, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true - } - } - }, - "react-input-autosize": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-1.1.4.tgz", - "integrity": "sha1-y8RQctQITdxXgG2447NOZEuDZqw=" - }, - "react-overlays": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.0.tgz", - "integrity": "sha1-UxiY/1ZsflxyJurShjuM+fu1qYE=" - }, - "react-prop-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", - "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=" - }, - "react-select": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.0-rc.5.tgz", - "integrity": "sha1-nTFvJSsa3Dct21zfHxGca3z9tdY=" - }, - "react-spinkit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-spinkit/-/react-spinkit-3.0.0.tgz", - "integrity": "sha1-Mf2vThgXd2bFfRsfMzApD4SSqFo=" - }, - "react-virtualized": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.9.0.tgz", - "integrity": "sha512-TDe2haZiFr5apN3myuumGyeJ7iqHcGcQ648tfNf9x+R6tkE1+o8yAmeh4nKC4ldcs9My1dOHN3x/lmEX9LyOLA==" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", - "dev": true - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, - "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "dev": true - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "dependencies": { - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - } - } - }, - "request-progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", - "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true - }, - "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", - "dev": true - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - }, - "sax": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz", - "integrity": "sha1-/YYxojvHgmvvXYcb24c3jJVkeCg=", - "dev": true - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", - "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", - "dev": true - }, - "serve-static": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - }, - "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", - "dev": true - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true - }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } - } - }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", - "dev": true, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", - "dev": true, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "dependencies": { - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", - "dev": true - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "stream-cache": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz", - "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=", - "dev": true - }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "style-loader": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", - "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", - "dev": true, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "dev": true - } - } - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - } - } - }, - "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.12", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.12.tgz", - "integrity": "sha1-BMgamb3V3FImPqKdJMa/jUgYpLs=" - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "uncontrollable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", - "integrity": "sha1-4DWCkSUuGGUiLZCTmxny9J+Bwak=" - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", - "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", - "dev": true, - "dependencies": { - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true - } - } - }, - "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", - "dev": true, - "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true - } - } - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true - }, - "useragent": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.1.13.tgz", - "integrity": "sha1-u6Q+iqJNXOuDwpN0c+EC4h33TBA=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true - }, - "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", - "dev": true - }, - "vendors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", - "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", - "dev": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=" - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", - "dev": true, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } - } - }, - "webpack": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", - "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", - "dev": true, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "dev": true - }, - "readable-stream": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", - "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", - "dev": true - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "dev": true, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - } - } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz", - "integrity": "sha1-LiUs4d+wINvaHMs33ybzCrAU29E=", - "dev": true - }, - "webpack-dev-server": { - "version": "1.16.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz", - "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=", - "dev": true, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true - }, - "websocket-extensions": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", - "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", - "dev": true - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - } - } -} diff --git a/Examples/ReactJs/package.json b/Examples/ReactJs/package.json deleted file mode 100644 index 66317a0f..00000000 --- a/Examples/ReactJs/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "private": true, - "version": "0.0.1", - "description": "YOUR DESCRIPTION - Generated by generator-react-webpack", - "main": "", - "scripts": { - "clean": "rimraf dist/*", - "copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist", - "dist": "npm run copy & webpack --env=dist", - "lint": "eslint ./src", - "posttest": "npm run lint", - "release:major": "npm version major && npm publish && git push --follow-tags", - "release:minor": "npm version minor && npm publish && git push --follow-tags", - "release:patch": "npm version patch && npm publish && git push --follow-tags", - "serve": "node server.js --env=dev", - "serve:dist": "node server.js --env=dist", - "start": "node server.js --env=dev", - "test": "karma start", - "test:watch": "karma start --autoWatch=true --singleRun=false" - }, - "repository": "", - "keywords": [], - "author": "Your name here", - "devDependencies": { - "babel-core": "^6.0.0", - "babel-eslint": "^6.0.0", - "babel-loader": "^6.0.0", - "babel-polyfill": "^6.3.14", - "babel-preset-es2015": "^6.0.15", - "babel-preset-react": "^6.0.15", - "babel-preset-stage-0": "^6.5.0", - "bower-webpack-plugin": "^0.1.9", - "chai": "^3.2.0", - "commander": "^2.9.0", - "copyfiles": "^1.0.0", - "css-loader": "^0.23.0", - "eslint": "^3.0.0", - "eslint-loader": "^1.0.0", - "eslint-plugin-react": "^6.0.0", - "file-loader": "^0.9.0", - "fs": "0.0.1-security", - "glob": "^7.0.0", - "isparta-instrumenter-loader": "^1.0.0", - "karma": "^1.0.0", - "karma-chai": "^0.1.0", - "karma-coverage": "^1.0.0", - "karma-mocha": "^1.0.0", - "karma-mocha-reporter": "^2.0.0", - "karma-phantomjs-launcher": "^1.0.0", - "karma-sourcemap-loader": "^0.3.5", - "karma-webpack": "^1.7.0", - "minimist": "^1.2.0", - "mocha": "^3.0.0", - "null-loader": "^0.1.1", - "open": "0.0.5", - "phantomjs-prebuilt": "^2.0.0", - "react-addons-test-utils": "^15.0.0", - "react-hot-loader": "^1.2.9", - "rimraf": "^2.4.3", - "style-loader": "^0.13.0", - "url-loader": "^0.5.6", - "webpack": "^1.12.0", - "webpack-dev-server": "^1.12.0" - }, - "dependencies": { - "core-js": "^2.4.1", - "lodash": "^4.17.4", - "normalize.css": "^4.2.0", - "prop-types": "^15.5.10", - "react": "^15.6.1", - "react-bootstrap": "^0.30.0", - "react-bootstrap-autosuggest": "^0.5.0", - "react-bootstrap-date-picker": "^5.0.0", - "react-dom": "^15.6.1", - "react-dropdown": "^1.2.5", - "react-select": "^1.0.0-rc.5", - "react-spinkit": "^3.0.0", - "react-virtualized": "^9.9.0" - } -} diff --git a/Examples/ReactJs/readme.md b/Examples/ReactJs/readme.md deleted file mode 100644 index 2178e971..00000000 --- a/Examples/ReactJs/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# React Examples - -This project contains some add-in examples which demonstrate how to use various APIs. - -### Pre-requisites -* You must have Node.js installed. You can get it from http://nodejs.org. - -### Setup -1. Copy the `.trex` files from `./AddIns` to `~/Documents/My Tableau Repository (Beta)/AddIns` so they are available to Tableau. -2. Open a terminal window to the location where you cloned this repo. -3. Make sure you're in the `./ProjectFrelard/Examples/ReactJs` directory. -4. From the terminal run `npm install` to install dependencies. You only need to do this once. -5. From the terminal run `npm start` to start the web server (with live reloading). Do this any time you want to run the examples. - -### Project Structure -This project was created using the [yo react-webpack](https://github.com/react-webpack-generators/generator-react-webpack#readme) yeoman generator. Most of the interesting code is inside of `./src/components` folder which has 2 different examples. diff --git a/Examples/ReactJs/server.js b/Examples/ReactJs/server.js deleted file mode 100644 index becb3e6d..00000000 --- a/Examples/ReactJs/server.js +++ /dev/null @@ -1,36 +0,0 @@ -/*eslint no-console:0 */ -'use strict'; -require('core-js/fn/object/assign'); -const webpack = require('webpack'); -const WebpackDevServer = require('webpack-dev-server'); -const config = require('./webpack.config'); -const open = require('open'); - -/** - * Flag indicating whether webpack compiled for the first time. - * @type {boolean} - */ -let isInitialCompilation = true; - -const compiler = webpack(config); - -new WebpackDevServer(compiler, config.devServer) -.listen(config.port, 'localhost', (err) => { - if (err) { - console.log(err); - } - console.log('Listening at localhost:' + config.port); -}); - -compiler.plugin('done', () => { - if (isInitialCompilation) { - // Ensures that we log after webpack printed its stats (is there a better way?) - setTimeout(() => { - console.log('\n✓ The bundle is now ready for serving!\n'); - console.log(' Open in iframe mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/webpack-dev-server/'); - console.log(' Open in inline mode:\t\x1b[33m%s\x1b[0m', 'http://localhost:' + config.port + '/\n'); - console.log(' \x1b[33mHMR is active\x1b[0m. The bundle will automatically rebuild and live-update on changes.') - }, 350); - } - isInitialCompilation = false; -}); diff --git a/Examples/ReactJs/src/components/EnvironmentDemo/EnvironmentDemoComponent.js b/Examples/ReactJs/src/components/EnvironmentDemo/EnvironmentDemoComponent.js deleted file mode 100644 index 825fd8bf..00000000 --- a/Examples/ReactJs/src/components/EnvironmentDemo/EnvironmentDemoComponent.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -import React from 'react'; -import { Table } from 'react-bootstrap'; - -require('styles//EnvironmentDemo.css'); - -/*global tableau*/ - -class EnvironmentDemoComponent extends React.Component { - componentWillMount() { - let properties = { - 'Api Version': tableau.addIn.environment.apiVersion, - 'Context': tableau.addIn.environment.context, - 'Language': tableau.addIn.environment.language, - 'Locale': tableau.addIn.environment.locale, - 'Mode': tableau.addIn.environment.mode, - 'Operating System': tableau.addIn.environment.operatingSystem, - 'Tableau Version': tableau.addIn.environment.tableauVersion - }; - - this.setState(() => { - return { properties: properties }; - }) - } - - buildSetting(label, value) { - return ( - {label} - {value} - ); - } - - render() { - let values = []; - for (const key in this.state.properties) { - values.push(this.buildSetting(key, this.state.properties[key])); - } - debugger; - - return ( -
-
-

Frelard Environment Demo

-

This sample demonstrates the ability to get information about the environment an add-in is running in.

-
- - - {values} - -
-
- ); - } -} - -EnvironmentDemoComponent.displayName = 'EnvironmentDemoComponent'; - -export default EnvironmentDemoComponent; diff --git a/Examples/ReactJs/src/components/FiltersDemo/CategoricalFilterDemoComponent.js b/Examples/ReactJs/src/components/FiltersDemo/CategoricalFilterDemoComponent.js deleted file mode 100644 index 844ce9ce..00000000 --- a/Examples/ReactJs/src/components/FiltersDemo/CategoricalFilterDemoComponent.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict' - -import React from 'react'; -import { Form, FormGroup, ControlLabel, Button } from 'react-bootstrap'; -import Autosuggest from 'react-bootstrap-autosuggest'; - -/*global tableau*/ - -class CategoricalFilterComponent extends React.Component { - constructor(props) { - super(props); - let defaultField = Object.keys(this.props.filters)[0]; - let currValue = this.props.filters[defaultField][0]; - this.state = { - currField: defaultField, - currValue: currValue - }; - } - - onFieldChanged(fieldValue) { - this.setState({ - currField: fieldValue, - currValue: this.state.currValue - }) - } - - onValueChanged(filterValue) { - this.setState({ - currField: this.state.currField, - currValue: filterValue - }) - } - - applyFilter() { - this.props.workSheet.applyFilterAsync(this.state.currField, [this.state.currValue], tableau.FilterUpdateType.Replace); - } - - clearFilter() { - this.props.workSheet.clearFilterAsync(this.state.currField); - } - - getFilterValues() { - let values = this.props.filters[this.state.currField]; - if (values == null || values == undefined) { - return [] - } - return values; - } - - getFilterFields() { - let fields = Object.keys(this.props.filters); - return fields; - } - - render() { - return ( -
-

Categorical Filters With AutoCompplete

-
- - Field - this.onFieldChanged(field)} - /> - - - Filter Value - this.onValueChanged(value)} - /> - - - - - - - -
-
- ); - } -} - -export default CategoricalFilterComponent \ No newline at end of file diff --git a/Examples/ReactJs/src/components/FiltersDemo/DateRangeFilterComponent.js b/Examples/ReactJs/src/components/FiltersDemo/DateRangeFilterComponent.js deleted file mode 100644 index 8327e0ac..00000000 --- a/Examples/ReactJs/src/components/FiltersDemo/DateRangeFilterComponent.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict' - -import React from 'react' -import { Form, FormGroup, ControlLabel, Button } from 'react-bootstrap'; -import DatePicker from 'react-bootstrap-date-picker'; -import Autosuggest from 'react-bootstrap-autosuggest'; - -class DateRangeFilterComponent extends React.Component { - constructor(props) { - super(props); - let defaultField = Object.keys(this.props.filters)[0]; - - let minDate = this.props.filters[defaultField].minDate; - let maxDate = this.props.filters[defaultField].maxDate; - this.state = { - startDate: minDate, - endDate: maxDate, - currField: defaultField - }; - } - - applyFilter() { - this.props.workSheet.applyRangeFilterAsync( - this.state.currField, - {min: this.state.startDate, max: this.state.endDate} - ); - } - - clearFilter() { - this.props.workSheet.clearFilterAsync(this.state.currField); - } - - handleDateChange(startDate, dateStr) { - let date = new Date(dateStr); - if (startDate) { - if (date <= this.props.filters[this.state.currField].minDate || date > this.state.endDate) { - return; - } - this.setState({ - currField: this.state.currField, - endDate: this.state.endDate, - startDate: new Date(date) - }); - } else { - if (date >= this.props.filters[this.state.currField].maxDate || date < this.state.startDate) { - return; - } - this.setState({ - currField: this.state.currField, - startDate: this.state.startDate, - endDate: new Date(date) - }); - } - } - - onFieldChanged(field) { - this.setState({ - currField: field, - startDate: this.state.startDate, - endDate: this.state.endDate - }) - } - - render() { - return( -
-

Date Range Filters

-
- - Field - this.onFieldChanged(field)} - /> - -
-
- - Start Date - this.handleDateChange(true, date)} /> - - - End Date - this.handleDateChange(false, date)} /> - -
-
- - - - - - -
-
- ) - } -} - -export default DateRangeFilterComponent; \ No newline at end of file diff --git a/Examples/ReactJs/src/components/FiltersDemo/FiltersDemoComponent.js b/Examples/ReactJs/src/components/FiltersDemo/FiltersDemoComponent.js deleted file mode 100644 index d9cb8bb8..00000000 --- a/Examples/ReactJs/src/components/FiltersDemo/FiltersDemoComponent.js +++ /dev/null @@ -1,119 +0,0 @@ -'use strict' - -import React from 'react'; -import LoadIndicatorComponent from '../LoadIndicatorComponent'; -import _ from 'lodash'; - -import DateRangeFilterComponent from './DateRangeFilterComponent'; -import CategoricalFilterComponent from './CategoricalFilterDemoComponent.js'; - - -/*global tableau*/ -class FiltersDemoComponent extends React.Component { - constructor(props) { - super(props); - this.state = { - categoricalFilters: {}, - dateFilters: {}, - sheet: null, - loading: true - }; - } - - getUnderlyingData() { - let allSheets = tableau.addIn.dashboardContent.dashboard.worksheets; - let sheet = allSheets[0]; - sheet.getUnderlyingDataAsync().then((dataTable) => { - let columns = dataTable.columns; - let data = dataTable.data; - let categoricalColumns = []; - let dateColumns = []; - columns.forEach((column) => { - if (this.isCategorical(column)) { - categoricalColumns.push(column); - } - if (this.isDate(column)) { - dateColumns.push(column); - } - }); - - let allCategoricalFilters = this.constructFilterValues(categoricalColumns, data); - let dateFilters = this.constructDateFilters(dateColumns, data); - this.setState({ - categoricalFilters: allCategoricalFilters, - dateFilters: dateFilters, - sheet: sheet, - loading: false - }); - }); - } - - isCategorical(column) { - return (column.dataType === 'string') || (column.dataType === 'boolean'); - } - - isDate(column) { - return (column.dataType === 'datetime') || (column.dataType === 'date'); - } - - constructFilterValues(columns, data) { - let allFilters = {} - columns.forEach((column) => { - let dataValues = []; - data.forEach((row) => { - dataValues.push(row[column.index].value); - }) - let uniqueDataValues = _.uniqBy(dataValues, (value) => value); - allFilters[column.fieldName] = uniqueDataValues; - }); - return allFilters; - } - - constructDateFilters(columns, data) { - let dateFilters = {}; - columns.forEach((column) => { - let dataValues = []; - data.forEach((row) => { - dataValues.push(new Date(row[column.index].value)); - }) - let uniqueDataValues = _.uniqBy(dataValues, (value) => value); - let minDate = _.min(uniqueDataValues); - let maxDate = _.max(uniqueDataValues); - dateFilters[column.fieldName] = { - minDate: minDate, - maxDate: maxDate - } - }); - return dateFilters; - } - - componentDidMount() { - this.getUnderlyingData(); - } - - render() { - if (this.state.loading) { - return ( - - ); - } - return ( -
- { Object.keys(this.state.dateFilters).length > 0 ? - - : null } -
- { Object.keys(this.state.categoricalFilters).length > 0 ? - - : null } -
- ); - - } -} - -export default FiltersDemoComponent; \ No newline at end of file diff --git a/Examples/ReactJs/src/components/GetDataDemo/GetDataConfigurationComponent.js b/Examples/ReactJs/src/components/GetDataDemo/GetDataConfigurationComponent.js deleted file mode 100644 index a7125c13..00000000 --- a/Examples/ReactJs/src/components/GetDataDemo/GetDataConfigurationComponent.js +++ /dev/null @@ -1,135 +0,0 @@ -'use strict'; - -import React from 'react'; -import Select from 'react-select'; -import PropTypes from 'prop-types'; - -import { Form, FormGroup, FormControl, ControlLabel, Button, Checkbox, Radio, Modal } from 'react-bootstrap'; - -require('react-select/dist/react-select.css'); -require('styles//GetDataConfiguration.css'); - -class GetDataConfigurationComponent extends React.Component { - constructor(props) { - super(props); - - this.state = props.initialSettings; - } - - sheetNameChange(e) { - this.setState({ - sheetName: e && e.value - }); - } - - typeChange(e) { - this.setState({ - type: e.target.value - }); - } - - checkboxChange(e) { - this.setState({ - [e.target.value]: e.target.checked - }); - } - - maxRowsChanged(e) { - this.setState({ - maxRows: e.target.value - }); - } - - saveClicked() { - const settings = this.getAndValidateSettings(); - if (settings) { - this.props.onSaveClick(settings); - } - } - - getAndValidateSettings() { - let settings = Object.assign({}, this.state); - if (!settings.sheetName) { - return undefined; // Invalid state - } - - return settings; - } - - render() { - const sheetNames = this.props.sheetNames.map((name) => ({ 'value': name, 'label': name })); - - return ( - - - Configure getData - - -
- - Target Sheet -